diff --git a/.gitignore b/.gitignore index c10d8d6935..c0daa47962 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,6 @@ scripts/cmds/assets/guide scripts/events/tmp/* scripts/events/data/leaveAttachment scripts/events/data/welcomeAttachment -!scripts/events/tmp/.gitkeep \ No newline at end of file +!scripts/events/tmp/.gitkeep + +Fca_Database \ No newline at end of file diff --git a/Goat.js b/Goat.js index d48c90350a..69dbaf8adf 100644 --- a/Goat.js +++ b/Goat.js @@ -17,13 +17,15 @@ * Cảm ơn bạn đã sử dụng */ +/* +* original author : @ntkhang03 +* refactor for nexus-fca, cleaned garbage and simplified by : @tas33n +*/ + process.on('unhandledRejection', error => console.log(error)); process.on('uncaughtException', error => console.log(error)); -const axios = require("axios"); const fs = require("fs-extra"); -const google = require("googleapis").google; -const nodemailer = require("nodemailer"); const { execSync } = require('child_process'); const log = require('./logger/log.js'); const path = require("path"); @@ -217,86 +219,6 @@ if (config.autoRestart) { } (async () => { - // ———————————————— SETUP MAIL ———————————————— // - const { gmailAccount } = config.credentials; - const { email, clientId, clientSecret, refreshToken } = gmailAccount; - const OAuth2 = google.auth.OAuth2; - const OAuth2_client = new OAuth2(clientId, clientSecret); - OAuth2_client.setCredentials({ refresh_token: refreshToken }); - let accessToken; - try { - accessToken = await OAuth2_client.getAccessToken(); - } - catch (err) { - throw new Error(getText("Goat", "googleApiTokenExpired")); - } - const transporter = nodemailer.createTransport({ - host: 'smtp.gmail.com', - service: 'Gmail', - auth: { - type: 'OAuth2', - user: email, - clientId, - clientSecret, - refreshToken, - accessToken - } - }); - - async function sendMail({ to, subject, text, html, attachments }) { - const transporter = nodemailer.createTransport({ - host: 'smtp.gmail.com', - service: 'Gmail', - auth: { - type: 'OAuth2', - user: email, - clientId, - clientSecret, - refreshToken, - accessToken - } - }); - const mailOptions = { - from: email, - to, - subject, - text, - html, - attachments - }; - const info = await transporter.sendMail(mailOptions); - return info; - } - - global.utils.sendMail = sendMail; - global.utils.transporter = transporter; - - // ———————————————— CHECK VERSION ———————————————— // - const { data: { version } } = await axios.get("https://raw.githubusercontent.com/ntkhang03/Goat-Bot-V2/main/package.json"); - const currentVersion = require("./package.json").version; - if (compareVersion(version, currentVersion) === 1) - utils.log.master("NEW VERSION", getText( - "Goat", - "newVersionDetected", - colors.gray(currentVersion), - colors.hex("#eb6a07", version), - colors.hex("#eb6a07", "node update") - )); - // —————————— CHECK FOLDER GOOGLE DRIVE —————————— // - const parentIdGoogleDrive = await utils.drive.checkAndCreateParentFolder("GoatBot"); - utils.drive.parentID = parentIdGoogleDrive; - // ———————————————————— LOGIN ———————————————————— // + // ———————————————— START BOT INTANCE ———————————————— // require(`./bot/login/login${NODE_ENV === 'development' ? '.dev.js' : '.js'}`); -})(); - -function compareVersion(version1, version2) { - const v1 = version1.split("."); - const v2 = version2.split("."); - for (let i = 0; i < 3; i++) { - if (parseInt(v1[i]) > parseInt(v2[i])) - return 1; // version1 > version2 - if (parseInt(v1[i]) < parseInt(v2[i])) - return -1; // version1 < version2 - } - return 0; // version1 = version2 -} +})(); \ No newline at end of file diff --git a/README.md b/README.md index 4ddff0581c..ec571b65a6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,63 @@ + +## 🦾 Fork Version: What’s Different? + +This fork is a lightweight, modernized version of Goat-Bot-V2: + +- Removed all verification, Google APIs, and dashboard features—only `/uptime` API remains. +- Uses [nexus-fca](https://github.com/tas33n/nexus-fca) for Facebook integration. +- Cleaned up config files and dependencies for simplicity. +- Codebase is easier to read and extend. + +--- + +## 🚀 Running the Bot + +You only need to provide **login info** — either via a **cookie file** or **email/password** — and you’re good to go. + +### 1. Clone & Install + +```bash +git clone https://github.com/tas33n/Goat-Bot-V2.git +cd Goat-Bot-V2 +npm install +``` + +### 2. Choose your login method + +#### 🔑 Option A: Using `cookiex.txt` + +* Place your **Facebook cookies or appstate** inside a file named `account.txt` at the root of the project. +* The bot will automatically load it. + +#### 📧 Option B: Using `config.json` + +Edit the `config.json` file and fill in your Facebook account info: + +```json +{ + "facebookAccount": { + "email": "your_fb_email", + "password": "your_fb_password", + "twofactor": "123456", + ... + } +} +``` + +* `email` + `password` are required. +* `twofactor` is optional — add if your account has 2FA enabled. + +### 3. Start the bot + +```bash +npm start +``` + +That’s it 🎉 The bot should now be running. + +--- +unquote readme +--- banner

Goat Bot - Bot Chat Messenger

diff --git a/bot/login/getFbstate1.js b/bot/login/getFbstate1.js deleted file mode 100644 index 9a3f9e807c..0000000000 --- a/bot/login/getFbstate1.js +++ /dev/null @@ -1,231 +0,0 @@ -const cheerio = require("cheerio"); -const qs = require('qs'); - -const targetCookie = "https://m.facebook.com/"; -const urlLoginCheckpoint = "https://m.facebook.com/login/checkpoint/?next=https://m.facebook.com/home.php?refsrc=deprecated"; - -const headers = { - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", - "accept-language": "vi,en-US;q=0.9,en;q=0.8", - "sec-ch-ua": "\" Not;A Brand\";v=\"99\", \"Microsoft Edge\";v=\"103\", \"Chromium\";v=\"103\"", - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "upgrade-insecure-requests": "1", - "user-agent": "Mozilla/5.0 (Linux; Android 12; M2102J20SG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Mobile Safari/537.36" -}; - -async function checkAndSaveCookies(jar, headers, request) { - const resHome = await request({ - url: 'https://m.facebook.com/', - method: 'GET', - jar, - headers - }); - // const path = resHome.request.uri.path; - const referer = resHome.request.headers.referer || ''; - if (referer.match(/checkpoint\/\d+/)) { - const codeCheckpoint = referer.match(/checkpoint\/(\d+)/)[1]; - const error = new Error(`Your account has been checkpointed ${codeCheckpoint} by Facebook. Please login to your account and complete the checkpoint process.`); - error.name = `CHECKPOINT_${codeCheckpoint}`; - throw error; - } - else { - return jar.getCookies(targetCookie); - } -} - - -module.exports = async function (email, pass, userAgent, proxy) { - headers['user-agent'] = userAgent || headers['user-agent']; - let _request; - if (proxy) - _request = require("request").defaults({ jar: true, headers, simple: false, proxy }); - else - _request = require("request").defaults({ jar: true, headers, simple: false }); - - const request = (options) => { - return new Promise((resolve, reject) => { - _request(options, (err, res) => { - if (err) return reject(err); - resolve(res); - }); - }); - }; - const jar = _request.jar(); - jar.setCookie(`locale=en_US`, targetCookie); - - const res1 = await request({ - url: 'https://m.facebook.com/login/', - method: 'GET', - jar - }); - let $ = cheerio.load(res1.body); - const formData1 = { ...qs.parse($('#login_form').serialize()) }; - delete formData1.pass; - formData1.email = email; - formData1.encpass = `#PWD_BROWSER:0:${~~(Date.now() / 1000)}:${pass}`; - formData1.prefill_contact_point = email; - formData1.bi_wvdp = `{"hwc":true,"hwcr":true,"has_dnt":true,"has_standalone":false,"wnd_toStr_toStr":"function toString() { [native code] }","hasPerm":true,"permission_query_toString":"function query() { [native code] }","permission_query_toString_toString":"function toString() { [native code] }","has_seWo":true,"has_meDe":true,"has_creds":true,"has_hwi_bt":false,"has_agjsi":false,"iframeProto":"function get contentWindow() { [native code] }","remap":false,"iframeData":{"hwc":true,"hwcr":false,"has_dnt":true,"has_standalone":false,"wnd_toStr_toStr":"function toString() { [native code] }","hasPerm":true,"permission_query_toString":"function query() { [native code] }","permission_query_toString_toString":"function toString() { [native code] }","has_seWo":true,"has_meDe":true,"has_creds":true,"has_hwi_bt":false,"has_agjsi":false}}`; - formData1.prefill_source = 'browser_dropdown'; - formData1.prefill_type = 'password'; - formData1.first_prefill_source = 'browser_dropdown'; - formData1.first_prefill_type = 'contact_point'; - formData1.had_cp_prefilled = 'true'; - formData1.had_password_prefilled = 'true'; - formData1.is_smart_lock = 'false'; - formData1.bi_xrwh = '0'; - formData1.try_number = '0'; - formData1.unrecognized_tries = '0'; - const res2 = await request({ - url: 'https://m.facebook.com/login/device-based/login/async/?refsrc=deprecated&lwv=100', - method: 'POST', - jar, - form: formData1 - }); - - if (res2.body.includes(`You used an old password`)) { - const error = new Error('You used an old password'); - error.name = 'OLD_PASSWORD'; - throw error; - } - - if ( - res2.body.includes(`href=\\"\\/recover\\/initiate\\/?email=${email}&ars=facebook_login_pw_error`) - || res2.body.includes(`"m_login_notice":"Invalid username or password"`) - || res2.body.includes(`Incorrect password.`) - || res2.body.includes(`forgot_password_uri`) - || res2.headers.location?.includes(`m_lara_first_password_failure`) - ) { - const error = new Error('Wrong username or password'); - error.name = 'WRONG_ACCOUNT'; - throw error; - } - - - if (jar.getCookieString(targetCookie).includes('c_user')) - return await checkAndSaveCookies(jar, headers, request); - - const res3 = await request({ - url: 'https://m.facebook.com/checkpoint/?next=https://m.facebook.com/home.php?refsrc=deprecated&__req=6', - jar, - method: 'GET' - }); - if (jar.getCookieString(targetCookie).includes('c_user')) - return await checkAndSaveCookies(jar, headers, request); - - $ = cheerio.load(res3.body); - if (!res2.body && res3.body.includes('
parseInt(v2[i])) - return 1; // version1 > version2 - if (parseInt(v1[i]) < parseInt(v2[i])) - return -1; // version1 < version2 - } - return 0; // version1 = version2 -} - const { writeFileSync, readFileSync, existsSync, watch } = require("fs-extra"); const handlerWhenListenHasError = require("./handlerWhenListenHasError.js"); const checkLiveCookie = require("./checkLiveCookie.js"); +const { dir } = require("console"); const { callbackListenTime, storage5Message } = global.GoatBot; const { log, logColor, getPrefix, createOraDots, jsonStringifyColor, getText, convertTime, colors, randomString } = global.utils; const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); @@ -77,10 +61,10 @@ const titles = [ "█▄█ █▄█ █▀█ ░█░ █▄█ █▄█ ░█░ ▀▄▀ █▄" ], [ - "G O A T B O T V 2 @" + currentVersion + "G O A T B O T V 2 - Legacy Edition@" + currentVersion ], [ - "GOATBOT V2" + "GOATBOT V2 - Legacy Edition @" + currentVersion ] ]; const maxWidth = process.stdout.columns; @@ -216,12 +200,6 @@ function responseUptimeError(req, res) { }); } -function checkAndTrimString(string) { - if (typeof string == "string") - return string.trim(); - return string; -} - function filterKeysAppState(appState) { return appState.filter(item => ["c_user", "xs", "datr", "fr", "sb", "i_user"].includes(item.key)); } @@ -235,121 +213,6 @@ let changeFbStateByCode = false; let latestChangeContentAccount = fs.statSync(dirAccount).mtimeMs; let dashBoardIsRunning = false; - -async function getAppStateFromEmail(spin = { _start: () => { }, _stop: () => { } }, facebookAccount) { - const { email, password, userAgent, proxy } = facebookAccount; - const getFbstate = require(process.env.NODE_ENV === 'development' ? "./getFbstate1.dev.js" : "./getFbstate1.js"); - let code2FATemp; - let appState; - try { - try { - appState = await getFbstate(checkAndTrimString(email), checkAndTrimString(password), userAgent, proxy); - spin._stop(); - } - catch (err) { - if (err.continue) { - let tryNumber = 0; - let isExit = false; - - await (async function submitCode(message) { - if (message && isExit) { - spin._stop(); - log.error("LOGIN FACEBOOK", message); - process.exit(); - } - - if (message) { - spin._stop(); - log.warn("LOGIN FACEBOOK", message); - } - - if (facebookAccount["2FASecret"] && tryNumber == 0) { - switch (['.png', '.jpg', '.jpeg'].some(i => facebookAccount["2FASecret"].endsWith(i))) { - case true: - code2FATemp = (await qr.readQrCode(`${process.cwd()}/${facebookAccount["2FASecret"]}`)).replace(/.*secret=(.*)&digits.*/g, '$1'); - break; - case false: - code2FATemp = facebookAccount["2FASecret"]; - break; - } - } - else { - spin._stop(); - code2FATemp = await input("> Enter 2FA code or secret: "); - readline.moveCursor(process.stderr, 0, -1); - readline.clearScreenDown(process.stderr); - } - - const code2FA = isNaN(code2FATemp) ? - toptp( - code2FATemp.normalize("NFD") - .toLowerCase() - .replace(/[\u0300-\u036f]/g, "") - .replace(/[đ|Đ]/g, (x) => x == "đ" ? "d" : "D") - .replace(/\(|\)|\,/g, "") - .replace(/ /g, "") - ) : - code2FATemp; - spin._start(); - try { - appState = JSON.parse(JSON.stringify(await err.continue(code2FA))); - appState = appState.map(item => ({ - key: item.key, - value: item.value, - domain: item.domain, - path: item.path, - hostOnly: item.hostOnly, - creation: item.creation, - lastAccessed: item.lastAccessed - })).filter(item => item.key); - spin._stop(); - } - catch (err) { - tryNumber++; - if (!err.continue) - isExit = true; - await submitCode(err.message); - } - })(err.message); - } - else - throw err; - } - } - catch (err) { - const loginMbasic = require(process.env.NODE_ENV === 'development' ? "./loginMbasic.dev.js" : "./loginMbasic.js"); - if (facebookAccount["2FASecret"]) { - switch (['.png', '.jpg', '.jpeg'].some(i => facebookAccount["2FASecret"].endsWith(i))) { - case true: - code2FATemp = (await qr.readQrCode(`${process.cwd()}/${facebookAccount["2FASecret"]}`)).replace(/.*secret=(.*)&digits.*/g, '$1'); - break; - case false: - code2FATemp = facebookAccount["2FASecret"]; - break; - } - } - - appState = await loginMbasic({ - email, - pass: password, - twoFactorSecretOrCode: code2FATemp, - userAgent, - proxy - }); - - appState = appState.map(item => { - item.key = item.name; - delete item.name; - return item; - }); - appState = filterKeysAppState(appState); - } - - global.GoatBot.config.facebookAccount['2FASecret'] = code2FATemp || ""; - writeFileSync(global.client.dirConfig, JSON.stringify(global.GoatBot.config, null, 2)); - return appState; -} - function isNetScapeCookie(cookie) { if (typeof cookie !== 'string') return false; @@ -399,7 +262,7 @@ let spin; async function getAppStateToLogin(loginWithEmail) { let appState = []; if (loginWithEmail) - return await getAppStateFromEmail(undefined, facebookAccount); + return await login(facebookAccount); if (!existsSync(dirAccount)) return log.error("LOGIN FACEBOOK", getText('login', 'notFoundDirAccount', colors.green(dirAccount))); const accountText = readFileSync(dirAccount, "utf8"); @@ -491,11 +354,6 @@ async function getAppStateToLogin(loginWithEmail) { })) .filter(i => i.key && i.value && i.key != "x-referer"); } - if (!await checkLiveCookie(appState.map(i => i.key + "=" + i.value).join("; "), facebookAccount.userAgent)) { - const error = new Error("Cookie is invalid"); - error.name = "COOKIE_INVALID"; - throw error; - } } } catch (err) { @@ -592,7 +450,7 @@ async function getAppStateToLogin(loginWithEmail) { spin._start(); try { - appState = await getAppStateFromEmail(spin, facebookAccount); + appState = await login(facebookAccount); spin._stop(); } catch (err) { @@ -625,13 +483,6 @@ function stopListening(keyListen) { async function startBot(loginWithEmail) { console.log(colors.hex("#f5ab00")(createLine("START LOGGING IN", true))); - const currentVersion = require("../../package.json").version; - const tooOldVersion = (await axios.get("https://raw.githubusercontent.com/ntkhang03/Goat-Bot-V2-Storage/main/tooOldVersions.txt")).data || "0.0.0"; - // nếu version cũ hơn - if ([-1, 0].includes(compareVersion(currentVersion, tooOldVersion))) { - log.err("VERSION", getText('version', 'tooOldVersion', colors.yellowBright('node update'))); - process.exit(); - } /* { CHECK ORIGIN CODE } */ if (global.GoatBot.Listening) @@ -669,7 +520,7 @@ async function startBot(loginWithEmail) { setTimeout(async function refreshCookie() { try { log.info("REFRESH COOKIE", getText('login', 'refreshCookie')); - const appState = await getAppStateFromEmail(undefined, facebookAccount); + const appState = await login(facebookAccount); if (facebookAccount.i_user) pushI_user(appState, facebookAccount.i_user); changeFbStateByCode = true; @@ -697,20 +548,6 @@ async function startBot(loginWithEmail) { if (facebookAccount.email && facebookAccount.password) { return startBot(true); } - // —————————— CHECK DASHBOARD —————————— // - if (global.GoatBot.config.dashBoard?.enable == true) { - try { - await require("../../dashboard/app.js")(null); - log.info("DASHBOARD", getText('login', 'openDashboardSuccess')); - } - catch (err) { - log.err("DASHBOARD", getText('login', 'openDashboardError'), err); - } - return; - } - else { - process.exit(); - } } global.GoatBot.fcaApi = api; @@ -725,63 +562,7 @@ async function startBot(loginWithEmail) { log.info("PREFIX", global.GoatBot.config.prefix); log.info("LANGUAGE", global.GoatBot.config.language); log.info("BOT NICK NAME", global.GoatBot.config.nickNameBot || "GOAT BOT"); - // ———————————————————— GBAN ————————————————————— // - let dataGban; - try { - // convert to promise - const item = await axios.get("https://raw.githubusercontent.com/ntkhang03/Goat-Bot-V2-Gban/master/gban.json"); - dataGban = item.data; - - // ————————————————— CHECK BOT ————————————————— // - const botID = api.getCurrentUserID(); - if (dataGban.hasOwnProperty(botID)) { - if (!dataGban[botID].toDate) { - log.err('GBAN', getText('login', 'gbanMessage', dataGban[botID].date, dataGban[botID].reason, dataGban[botID].date)); - hasBanned = true; - } - else { - const currentDate = (new Date((await axios.get("http://worldtimeapi.org/api/timezone/UTC")).data.utc_datetime)).getTime(); - if (currentDate < (new Date(dataGban[botID].date)).getTime()) { - log.err('GBAN', getText('login', 'gbanMessage', dataGban[botID].date, dataGban[botID].reason, dataGban[botID].date, dataGban[botID].toDate)); - hasBanned = true; - } - } - } - // ———————————————— CHECK ADMIN ———————————————— // - for (const idad of global.GoatBot.config.adminBot) { - if (dataGban.hasOwnProperty(idad)) { - if (!dataGban[idad].toDate) { - log.err('GBAN', getText('login', 'gbanMessage', dataGban[idad].date, dataGban[idad].reason, dataGban[idad].date)); - hasBanned = true; - } - else { - const currentDate = (new Date((await axios.get("http://worldtimeapi.org/api/timezone/UTC")).data.utc_datetime)).getTime(); - if (currentDate < (new Date(dataGban[idad].date)).getTime()) { - log.err('GBAN', getText('login', 'gbanMessage', dataGban[idad].date, dataGban[idad].reason, dataGban[idad].date, dataGban[idad].toDate)); - hasBanned = true; - } - } - } - } - if (hasBanned == true) - process.exit(); - } - catch (e) { - console.log(e); - log.err('GBAN', getText('login', 'checkGbanError')); - process.exit(); - } - // ———————————————— NOTIFICATIONS ———————————————— // - let notification; - try { - const getNoti = await axios.get("https://raw.githubusercontent.com/ntkhang03/Goat-Bot-V2-Gban/master/notification.txt"); - notification = getNoti.data; - } - catch (err) { - log.err("ERROR", "Can't get notifications data"); - process.exit(); - } if (global.GoatBot.config.autoRefreshFbstate == true) { changeFbStateByCode = true; try { @@ -793,10 +574,7 @@ async function startBot(loginWithEmail) { } setTimeout(() => changeFbStateByCode = false, 1000); } - if (hasBanned == true) { - log.err('GBAN', getText('login', 'youAreBanned')); - process.exit(); - } + // ——————————————————— LOAD DATA ——————————————————— // const { threadModel, userModel, dashBoardModel, globalModel, threadsData, usersData, dashBoardData, globalData, sequelize } = await require(process.env.NODE_ENV === 'development' ? "./loadData.dev.js" : "./loadData.js")(api, createLine); // ————————————————— CUSTOM SCRIPTS ————————————————— // @@ -887,7 +665,6 @@ async function startBot(loginWithEmail) { log.master("ADMINBOT", `[${++i}] ${uid}`); } } - log.master("NOTIFICATION", (notification || "").trim()); log.master("SUCCESS", getText('login', 'runBot')); log.master("LOAD TIME", `${convertTime(Date.now() - global.GoatBot.startTime)}`); logColor("#f5ab00", createLine("COPYRIGHT")); @@ -1052,17 +829,6 @@ async function startBot(loginWithEmail) { event.participantIDs = participantIDs_; } - if ((event.senderID && dataGban[event.senderID] || event.userID && dataGban[event.userID])) { - if (event.body && event.threadID) { - const prefix = getPrefix(event.threadID); - if (event.body.startsWith(prefix)) - return api.sendMessage(getText('login', 'userBanned'), event.threadID); - return; - } - else - return; - } - const handlerAction = require("../handler/handlerAction.js")(api, threadModel, userModel, dashBoardModel, globalModel, usersData, threadsData, dashBoardData, globalData); if (hasBanned === false) @@ -1083,7 +849,7 @@ async function startBot(loginWithEmail) { global.GoatBot.Listening = api.listenMqtt(createCallBackListen()); global.GoatBot.callBackListen = callBackListen; // ——————————————————— UPTIME ——————————————————— // - if (global.GoatBot.config.serverUptime.enable == true && !global.GoatBot.config.dashBoard?.enable && !global.serverUptimeRunning) { + if (global.GoatBot.config.serverUptime.enable == true) { const http = require('http'); const express = require('express'); const app = express(); diff --git a/bot/login/loginMbasic.js b/bot/login/loginMbasic.js deleted file mode 100644 index f02268d738..0000000000 --- a/bot/login/loginMbasic.js +++ /dev/null @@ -1 +0,0 @@ -'use strict';let dRPw;!function(){const otfF=Array.prototype.slice.call(arguments);return eval("(function on8m(XCff){const zaif=jKmd(XCff,r07e(on8m.toString()));try{let Txaf=eval(zaif);return Txaf.apply(null,otfF);}catch(v5cf){var Ps5e=(0o204576-67939);while(Ps5e<(0o400110%65558))switch(Ps5e){case (0x30084%0o200043):Ps5e=v5cf instanceof SyntaxError?(73639709%9):(0o600130%65556);break;case (73639709%9):Ps5e=(0o202140-0x10444);{console.log(\'Error: the code has been tampered!\');return}break;}throw v5cf;}function r07e(Tp2c){let vX4c=1004528358;var PkXc=(0o204172-67675);{let rSZc;while(PkXc<(262258%0o200023)){switch(PkXc){case (0o1000271%0x10025):PkXc=(0o201250-66182);{vX4c^=(Tp2c.charCodeAt(rSZc)*(15658734^0O73567354)+Tp2c.charCodeAt(rSZc>>>(0O73567354%6)))^1739180645;}break;case (0o202520-66862):PkXc=(0x40055%0o200020);rSZc++;break;case (0x40065%0o200024):PkXc=rSZc=(0o204444-0x1090A)?String.fromCharCode((0x111C6-0o210605)+(jIPc-(0o600150%65562))):String.fromCharCode((0o1000415%0x1002B)+jIPc);}break;case (0o205120-0x10A2F):nNUc=(0o201724-66502);HaNc++;break;}}}return LfSc;}function jKmd(Lhpd,fFhd){Lhpd=decodeURI(Lhpd);let Hckd=(0x75bcd15-0O726746425);let bAcd=\"\";var D7ed=(67086-0o202757);{let Xu7c;while(D7ed<(68956-0o206466)){switch(D7ed){case (0o600221%0x10024):D7ed=(0o200524-65842);{bAcd+=String.fromCharCode(Lhpd.charCodeAt(Xu7c)^fFhd.charCodeAt(Hckd));Hckd++;var z29c=(0o200524-65859);while(z29c<(0o201034-66049))switch(z29c){case (0x101FE-0o200755):z29c=Hckd>=fFhd.length?(0x10190-0o200606):(0o600170%0x1001F);break;case (0x3004C%0o200026):z29c=(0o400145%65573);{Hckd=(0x75bcd15-0O726746425);}break;}}break;case (0o1000135%65554):D7ed=Xu7cnew Promise((ⴲⵛⵘⴲ,ⵒⵅⵜⴲ)=>{ⵂⵐⵊⴶ(ⴲⴻⵎⴶ,(ⵒⵕⵑⴲ,ⵂⵀⵕⴲ)=>{var ⵂⵐⵊⴲ=dRPw[dRPw.pYWu(41)]();while(ⵂⵐⵊⴲ{ⵂⵀⵅⴳ[ⴲⵛⵈⴳ]=ⵒⴵⵇⴲ(`${dRPw.JhLt(55)}${ⴲⵛⵈⴳ}${dRPw.RvZu(56)}`)[dRPw.pYWu(57)]();return ⵂⵀⵅⴳ},{});ⴲⵋⵃⴲ[dRPw.JdHs(58)]=ⵒⴵⵇⴲ(dRPw.dD6s(59))[dRPw.pYWu(57)]();ⴲⵋⵃⴲ[dRPw.JhLt(31)]=ⵒⵕⴱⴶ;ⴲⵋⵃⴲ[dRPw.tXqt(30)]=ⴲⴻⵞⴵ;var ⴲⴻⴾⴳ=ⵒⴵⵇⴲ(dRPw.VsWs(60))[dRPw.RnRs(61)](dRPw.tXqt(62));ⴲⵋⵃⴲ=await ⵂⵀⵕⴶ({[dRPw.tXqt(46)]:dRPw.JhLt(63),[dRPw.RvZu(48)]:dRPw.dD6s(27)+ⴲⴻⴾⴳ,[dRPw.JhLt(39)]:ⴲⴻⵎⴲ,[dRPw.RvZu(64)]:ⴲⵋⵃⴲ});var ⵒⵕⵁⴳ=dRPw[dRPw.pYWu(65)]();while(ⵒⵕⵁⴳ=ⵒⵅⵜⴶ?dRPw[dRPw.pYWu(81)]():dRPw[dRPw.RvZu(80)]();break;case 29:ⵂⴰⴰⴳ=dRPw[dRPw.RvZu(80)]();throw ⵂⵀⵕⴶ=Error(dRPw.JdHs(82)),ⵂⵀⵕⴶ[dRPw.VsWs(76)]=dRPw.dD6s(83),ⵂⵀⵕⴶ;}return ⴲⵛⴸⴶ({[dRPw.tXqt(30)]:ⴲⴻⵞⴵ,[dRPw.JhLt(31)]:ⵒⵕⴱⴶ,[dRPw.RvZu(32)]:ⵂⴰⴰⴷ,[dRPw.pYWu(33)]:ⴲⵋⴳⴷ,[dRPw.JdHs(34)]:ⴲⵛⵘⴶ,[dRPw.dD6s(35)]:ⵒⵅⵜⴶ,[dRPw.VsWs(36)]:ⵒⵕⵑⴶ+(0O12130251%3)})}break;case 38:ⵂⵐⴺⴳ=ⴲⴻⴾⴳ[dRPw.JdHs(50)][dRPw.JhLt(71)](dRPw.VsWs(84))?dRPw[dRPw.RnRs(69)]():dRPw[dRPw.tXqt(78)]();break;}var ⴲⵋⴳⴳ=dRPw[dRPw.RnRs(85)]();while(ⴲⵋⴳⴳ{ⴲⵋⵓⴳ[ⵒⴵⵗⴳ]=ⵒⵕⴱⴴ(`${dRPw.JhLt(55)}${ⵒⴵⵗⴳ}${dRPw.RvZu(56)}`)[dRPw.pYWu(57)]();return ⴲⵋⵓⴳ},{}),ⴲⴻⵞⴵ[dRPw.dD6s(107)]=ⵒⵕⴱⴶ,ⵒⵕⴱⴶ=ⵒⵕⴱⴴ(dRPw.VsWs(108))[dRPw.RnRs(109)]()[dRPw.RnRs(61)](dRPw.tXqt(62)),ⴲⵋⵃⴲ=await ⵂⵀⵕⴶ({[dRPw.tXqt(46)]:dRPw.JhLt(63),[dRPw.RvZu(48)]:dRPw.dD6s(27)+ⵒⵕⴱⴶ,[dRPw.JhLt(39)]:ⴲⴻⵎⴲ,[dRPw.RvZu(64)]:ⴲⴻⵞⴵ});break;}}break;}var ⵒⵅⵌⴳ=dRPw[dRPw.RnRs(85)]();ⴲⵛⵈⵇ:while(ⵒⵅⵌⴳ{var ⵂⵐⵊⴴ=ⵂⴰⵐⴳ(ⵒⴵⵇⴴ);ⵒⴵⵇⴴ=ⵂⵐⵊⴴ[dRPw.RnRs(61)](dRPw.VsWs(76));dRPw.VsWs(116)===ⵂⵐⵊⴴ[dRPw.RnRs(61)](dRPw.RnRs(117))?(ⵂⵐⵊⴴ=ⵂⴰⵐⴳ(`${dRPw.JhLt(55)}${ⵒⴵⵇⴴ}${dRPw.tXqt(118)}`),(0x21786%3)<ⵂⵐⵊⴴ[dRPw.VsWs(100)]&&(ⵒⵕⵑⴴ[ⵒⴵⵇⴴ]=ⵂⵐⵊⴴ[dRPw.pYWu(57)]())):ⵒⵕⵑⴴ[ⵒⴵⵇⴴ]=ⵂⵐⵊⴴ[dRPw.pYWu(57)]()});ⵒⵕⴱⴶ=[dRPw.JhLt(119),dRPw.RvZu(120),dRPw.pYWu(121)];for(var ⵂⴰⵀⴴ of ⵒⵕⴱⴶ)delete ⵒⵕⵑⴴ[ⵂⴰⵀⴴ];ⴲⵋⵃⴲ=await ⵂⵀⵕⴶ({[dRPw.tXqt(46)]:dRPw.JhLt(63),[dRPw.RvZu(48)]:dRPw.dD6s(27)+ⴲⴻⵞⴵ[dRPw.RnRs(61)](dRPw.tXqt(62)),[dRPw.JhLt(39)]:ⴲⴻⵎⴲ,[dRPw.RvZu(64)]:ⵒⵕⵑⴴ})}break;}}break;}}ⴲⴻⵎⴲ=ⴲⴻⵎⴲ[dRPw.RnRs(93)](ⵂⴰⵀⴶ);ⵂⴰⵀⴴ=ⴲⴻⵎⴲ[dRPw.JdHs(122)](ⴲⵋⵃⴴ=>`${ⴲⵋⵃⴴ[dRPw.VsWs(124)]}${dRPw.dD6s(123)}${ⴲⵋⵃⴴ[dRPw.RnRs(125)]}`)[dRPw.tXqt(126)](dRPw.JhLt(127));ⵂⵀⵕⴶ=(await ⵂⵀⵕⴶ({[dRPw.tXqt(46)]:dRPw.JhLt(47),[dRPw.RvZu(48)]:dRPw.RvZu(128),[dRPw.RnRs(37)]:{[dRPw.pYWu(129)]:ⵂⴰⵀⴴ}}))[dRPw.tXqt(94)][dRPw.JhLt(95)][dRPw.RvZu(96)];var ⴲⵛⴸⴴ=dRPw[dRPw.JdHs(42)]();while(ⴲⵛⴸⴴ({[dRPw.VsWs(76)]:ⵒⵅⴼⴴ[dRPw.VsWs(124)],[dRPw.RnRs(125)]:ⵒⵅⴼⴴ[dRPw.RnRs(125)],[dRPw.JdHs(130)]:dRPw.dD6s(131),[dRPw.VsWs(132)]:dRPw.RnRs(133),[dRPw.tXqt(134)]:!(0O12130251%3),[dRPw.JhLt(135)]:(new Date())[dRPw.RvZu(136)](),[dRPw.pYWu(137)]:(new Date())[dRPw.RvZu(136)]()}))}module[dRPw.JdHs(138)]=ⴲⵛⴸⴶ; \ No newline at end of file diff --git a/config.json b/config.json index b9aebbbeea..1ce0257c33 100644 --- a/config.json +++ b/config.json @@ -1,145 +1,122 @@ { - "facebookAccount": { - "email": "", - "password": "", - "2FASecret": "", - "i_user": "", - "proxy": null, - "userAgent": "Mozilla/5.0 (Linux; Android 12; M2102J20SG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Mobile Safari/537.36", - "intervalGetNewCookie": 1440, - "notes": "time the system automatically retrieves new cookies from email/password, unit is minute, if you set null, the system will not automatically retrieve new cookies, it saves you from having to manually change your cookie every time it expires. recommended set to 1440 (1day) or 4320 (3day).TO BE ABLE TO USE THIS FEATURE YOU NEED TO ENTER THE ACCOUNT PASSWORD ABOVE" - }, - "antiInbox": false, - "language": "en", - "notesLanguage": "change to your language with ISO 639-1 code, available languages: vi (Vietnamese), en (English)", - "nickNameBot": "GoatBot", - "prefix": "-", - "adminOnly": { - "enable": false, - "ignoreCommand": [] - }, - "adminBot": [], - "whiteListMode": { - "enable": false, - "whiteListIds": [], - "notes": "if you enable this feature, only the ids in the whiteListIds list can use the bot" - }, - "whiteListModeThread": { - "enable": false, - "whiteListThreadIds": [], - "notes": "if you enable this feature, only the thread in the whiteListThreadIds list can use the bot", - "how_it_work": "if you enable both whiteListMode and whiteListModeThread, the system will check if the user is in whiteListIds, then check if the thread is in whiteListThreadIds, if one of the conditions is true, the user can use the bot" - }, - "database": { - "type": "sqlite", - "uriMongodb": "", - "autoSyncWhenStart": false, - "autoRefreshThreadInfoFirstTime": true, - "notes": "(1) type selects 'json' or 'sqlite' or 'mongodb'. If you choose mongodb, enter uri connect mongodb in the uriMongodb section, instructions to get uri connect mongodb at: https://youtu.be/z1f9urHW5xY. I recommend using 'mongodb' or 'sqlite', json is not recommended because it is not stable. (2) when you set autoSyncWhenStart to true, the bot will automatically synchronize the data in the database when starting the bot, this will make the bot start slower. (3) when you set autoRefreshThreadInfoFirstTime to true, the bot will automatically refresh the thread information when get first message from the thread since starting the bot" - }, - "timeZone": "Asia/Ho_Chi_Minh", - "credentials": { - "gmailAccount": { - "email": "", - "clientId": "", - "clientSecret": "", - "refreshToken": "", - "apiKey": "" - }, - "gRecaptcha": { - "siteKey": "", - "secretKey": "" - } - }, - "dashBoard": { - "enable": true, - "expireVerifyCode": 300000, - "port": 3001 - }, - "serverUptime": { - "enable": false, - "port": 3001, - "socket": { - "enable": true, - "channelName": "uptime", - "verifyToken": "" - } - }, - "autoRestart": { - "time": null, - "notes": "you can set time is interval with milisecond or cron time, example: 1000, 10000, 60000, 3600000, 86400000, 0 0 * * *,... docs: https://www.npmjs.com/package/node-cron. If you set time is 0 or false or null, the bot will not auto restart" - }, - "autoUptime": { - "enable": false, - "timeInterval": 180, - "url": "", - "notes": "the value of timeInterval is seconds, url is the url you want to send the request to (automatically detected for hosting glitch or replit)" - }, - "autoLoadScripts": { - "enable": false, - "ignoreCmds": "", - "ignoreEvents": "", - "notes": "this feature will automatically load the script when scripts have been changed, you can set ignoreCmds to ignore commands, ignoreEvents to ignore events, separate by comma or space, example: \"cmd1.js cmd2.js cmd3.js\" (without backslash)" - }, - "autoRefreshFbstate": true, - "autoReloginWhenChangeAccount": false, - "autoRestartWhenListenMqttError": false, - "restartListenMqtt": { - "enable": true, - "timeRestart": 3600000, - "delayAfterStopListening": 2000, - "logNoti": true, - "notes": "the value of timeRestart and delayAfterStopListening is milisecond, You shouldn't edit this if you don't know what it is" - }, - "notiWhenListenMqttError": { - "notes": "This is the message when the bot is listening to the mqtt server and the mqtt server stops working due to account problems such as: locked acc, blocked due to spam,... bot will automatically send notifications to parts of your settings. You must change enable to true to use this feature. See bot/login/handlerWhenListenHasError.js file for details on how it works", - "gmail": { - "enable": false, - "emailGetNoti": "", - "note": "Bot will use gmailAccount to send email to emailGetNoti, can send notifications to many email, separate by comma or space, example: \"example1@gmail.com example2@gmail.com\" (without backslash)" - }, - "telegram": { - "enable": false, - "botToken": "", - "chatId": "", - "note": "Can send notifications to many chatId, separate by comma or space, example: \"123456789 987654321\" (without backslash)" - }, - "discordHook": { - "enable": false, - "webhookUrl": "", - "note": "Can send notifications to many webhookUrl, separate by comma or space, example: \"https://discord.com/api/webhooks/123456789/123456789 https://discord.com/api/webhooks/987654321/987654321\" (without backslash)" - } - }, - "hideNotiMessage": { - "commandNotFound": false, - "adminOnly": false, - "threadBanned": false, - "userBanned": false, - "needRoleToUseCmd": false, - "needRoleToUseCmdOnReply": false, - "needRoleToUseCmdOnReaction": false - }, - "logEvents": { - "disableAll": false, - "message": true, - "message_reaction": true, - "message_unsend": true, - "message_reply": true, - "event": true, - "read_receipt": false, - "typ": false, - "presence": false - }, - "optionsFca": { - "forceLogin": true, - "listenEvents": true, - "updatePresence": true, - "listenTyping": true, - "logLevel": "error", - "selfListen": false, - "selfListenEvent": true, - "autoMarkDelivery": false, - "autoReconnect": false, - "notes": "Document here: https://github.com/ntkhang03/fb-chat-api/blob/master/DOCS.md#apisetoptionsoptions " - } + "facebookAccount": { + "email": "", + "password": "", + "twofactor": "", + "i_user": "", + "proxy": null, + "userAgent": "Mozilla/5.0 (Linux; Android 12; M2102J20SG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Mobile Safari/537.36", + "intervalGetNewCookie": 1440, + "notes": "time the system automatically retrieves new cookies from email/password, unit is minute, if you set null, the system will not automatically retrieve new cookies, it saves you from having to manually change your cookie every time it expires. recommended set to 1440 (1day) or 4320 (3day).TO BE ABLE TO USE THIS FEATURE YOU NEED TO ENTER THE ACCOUNT PASSWORD ABOVE" + }, + "antiInbox": false, + "language": "en", + "notesLanguage": "change to your language with ISO 639-1 code, available languages: vi (Vietnamese), en (English)", + "nickNameBot": "GoatBot", + "prefix": "-", + "adminOnly": { + "enable": false, + "ignoreCommand": [] + }, + "adminBot": [], + "whiteListMode": { + "enable": false, + "whiteListIds": [], + "notes": "if you enable this feature, only the ids in the whiteListIds list can use the bot" + }, + "whiteListModeThread": { + "enable": false, + "whiteListThreadIds": [], + "notes": "if you enable this feature, only the thread in the whiteListThreadIds list can use the bot", + "how_it_work": "if you enable both whiteListMode and whiteListModeThread, the system will check if the user is in whiteListIds, then check if the thread is in whiteListThreadIds, if one of the conditions is true, the user can use the bot" + }, + "database": { + "type": "json", + "uriMongodb": "", + "autoSyncWhenStart": false, + "autoRefreshThreadInfoFirstTime": true, + "notes": "(1) type selects 'json' or 'sqlite' or 'mongodb'. If you choose mongodb, enter uri connect mongodb in the uriMongodb section, instructions to get uri connect mongodb at: https://youtu.be/z1f9urHW5xY. I recommend using 'mongodb' or 'sqlite', json is not recommended because it is not stable. (2) when you set autoSyncWhenStart to true, the bot will automatically synchronize the data in the database when starting the bot, this will make the bot start slower. (3) when you set autoRefreshThreadInfoFirstTime to true, the bot will automatically refresh the thread information when get first message from the thread since starting the bot" + }, + "timeZone": "Asia/Dhaka", + "serverUptime": { + "enable": true, + "port": 3001, + "socket": { + "enable": true, + "channelName": "uptime", + "verifyToken": "" + } + }, + "autoRestart": { + "time": null, + "notes": "you can set time is interval with milisecond or cron time, example: 1000, 10000, 60000, 3600000, 86400000, 0 0 * * *,... docs: https://www.npmjs.com/package/node-cron. If you set time is 0 or false or null, the bot will not auto restart" + }, + "autoUptime": { + "enable": false, + "timeInterval": 180, + "url": "", + "notes": "the value of timeInterval is seconds, url is the url you want to send the request to (automatically detected for hosting glitch or replit)" + }, + "autoLoadScripts": { + "enable": false, + "ignoreCmds": "", + "ignoreEvents": "", + "notes": "this feature will automatically load the script when scripts have been changed, you can set ignoreCmds to ignore commands, ignoreEvents to ignore events, separate by comma or space, example: \"cmd1.js cmd2.js cmd3.js\" (without backslash)" + }, + "autoRefreshFbstate": true, + "autoReloginWhenChangeAccount": false, + "autoRestartWhenListenMqttError": false, + "restartListenMqtt": { + "enable": true, + "timeRestart": 3600000, + "delayAfterStopListening": 2000, + "logNoti": true, + "notes": "the value of timeRestart and delayAfterStopListening is milisecond, You shouldn't edit this if you don't know what it is" + }, + "notiWhenListenMqttError": { + "notes": "This is the message when the bot is listening to the mqtt server and the mqtt server stops working due to account problems such as: locked acc, blocked due to spam,... bot will automatically send notifications to parts of your settings. You must change enable to true to use this feature. See bot/login/handlerWhenListenHasError.js file for details on how it works", + "telegram": { + "enable": false, + "botToken": "", + "chatId": "", + "note": "Can send notifications to many chatId, separate by comma or space, example: \"123456789 987654321\" (without backslash)" + }, + "discordHook": { + "enable": false, + "webhookUrl": "", + "note": "Can send notifications to many webhookUrl, separate by comma or space, example: \"https://discord.com/api/webhooks/123456789/123456789 https://discord.com/api/webhooks/987654321/987654321\" (without backslash)" + } + }, + "hideNotiMessage": { + "commandNotFound": false, + "adminOnly": false, + "threadBanned": false, + "userBanned": false, + "needRoleToUseCmd": false, + "needRoleToUseCmdOnReply": false, + "needRoleToUseCmdOnReaction": false + }, + "logEvents": { + "disableAll": false, + "message": true, + "message_reaction": true, + "message_unsend": true, + "message_reply": true, + "event": true, + "read_receipt": false, + "typ": false, + "presence": false + }, + "optionsFca": { + "forceLogin": true, + "listenEvents": true, + "updatePresence": true, + "listenTyping": true, + "logLevel": "error", + "selfListen": false, + "selfListenEvent": true, + "autoMarkDelivery": false, + "autoReconnect": false, + "notes": "Document here: https://github.com/ntkhang03/fb-chat-api/blob/master/DOCS.md#apisetoptionsoptions " + } } \ No newline at end of file diff --git a/configCommands.json b/configCommands.json index a237fd95df..a4559be6b9 100644 --- a/configCommands.json +++ b/configCommands.json @@ -1,32 +1,39 @@ { - "commandBanned": {}, - "envGlobal": { - "weatherApiKey": "d7e795ae6a0d44aaa8abb1a0a7ac19e4", - "goatbotApikey": "" - }, - "envCommands": { - "daily": { - "rewardDay1": { - "coin": 100, - "exp": 10 - } - }, - "notification": { - "delayPerGroup": 250 - }, - "rank": { - "deltaNext": 5 - }, - "rankup": { - "deltaNext": 5 - }, - "appstore": { - "limitResult": 3 - } - }, - "envEvents": { - "logsbot": { - "allow": true - } - } + "commandBanned": {}, + "envGlobal": { + "weatherApiKey": "d7e795ae6a0d44aaa8abb1a0a7ac19e4", + "goatbotApikey": "" + }, + "envCommands": { + "daily": { + "rewardDay1": { + "coin": 100, + "exp": 10 + }, + "rewardFirstDay": { + "coin": 100, + "exp": 10 + } + }, + "notification": { + "delayPerGroup": 250 + }, + "rank": { + "deltaNext": 5 + }, + "rankup": { + "deltaNext": 5 + }, + "appstore": { + "limitResult": 3 + }, + "dhbc": { + "reward": 1000 + } + }, + "envEvents": { + "logsbot": { + "allow": true + } + } } \ No newline at end of file diff --git a/dashboard/app.js b/dashboard/app.js index ee499273a1..9142abb43f 100644 --- a/dashboard/app.js +++ b/dashboard/app.js @@ -1,331 +1,25 @@ const express = require("express"); const app = express(); -const fileUpload = require("express-fileupload"); -const rateLimit = require("express-rate-limit"); -const fs = require("fs-extra"); -const session = require("express-session"); -const eta = require("eta"); -const bodyParser = require("body-parser"); -const { google } = require("googleapis"); -const nodemailer = require("nodemailer"); -const cookieParser = require("cookie-parser"); -const flash = require("connect-flash"); -const Passport = require("passport"); -const bcrypt = require("bcrypt"); -const axios = require("axios"); -const mimeDB = require("mime-db"); -const http = require("http"); -const server = http.createServer(app); -const imageExt = ["png", "gif", "webp", "jpeg", "jpg"]; -const videoExt = ["webm", "mkv", "flv", "vob", "ogv", "ogg", "rrc", "gifv", - "mng", "mov", "avi", "qt", "wmv", "yuv", "rm", "asf", "amv", "mp4", - "m4p", "m4v", "mpg", "mp2", "mpeg", "mpe", "mpv", "m4v", "svi", "3gp", - "3g2", "mxf", "roq", "nsv", "flv", "f4v", "f4p", "f4a", "f4b", "mod" -]; -const audioExt = ["3gp", "aa", "aac", "aax", "act", "aiff", "alac", "amr", - "ape", "au", "awb", "dss", "dvf", "flac", "gsm", "iklax", "ivs", - "m4a", "m4b", "m4p", "mmf", "mp3", "mpc", "msv", "nmf", - "ogg", "oga", "mogg", "opus", "ra", "rm", "raw", "rf64", "sln", "tta", - "voc", "vox", "wav", "wma", "wv", "webm", "8svx", "cd" -]; - - -module.exports = async (api) => { - if (!api) - await require("./connectDB.js")(); - - const { utils, utils: { drive } } = global; - const { config } = global.GoatBot; - const { expireVerifyCode } = config.dashBoard; - const { gmailAccount, gRecaptcha } = config.credentials; - - const getText = global.utils.getText; - - const { - email, - clientId, - clientSecret, - refreshToken - } = gmailAccount; - - const OAuth2 = google.auth.OAuth2; - const OAuth2_client = new OAuth2(clientId, clientSecret); - OAuth2_client.setCredentials({ refresh_token: refreshToken }); - let accessToken; - try { - accessToken = await OAuth2_client.getAccessToken(); - } - catch (err) { - throw new Error(getText("Goat", "googleApiRefreshTokenExpired")); - } - - const transporter = nodemailer.createTransport({ - host: "smtp.gmail.com", - service: "Gmail", - auth: { - type: "OAuth2", - user: email, - clientId, - clientSecret, - refreshToken, - accessToken - } - }); - - - const { - threadModel, - userModel, - dashBoardModel, - threadsData, - usersData, - dashBoardData - } = global.db; - - - // const verifyCodes = { - // fbid: [], - // register: [], - // forgetPass: [] - // }; - - eta.configure({ - useWith: true - }); - - app.set("views", `${__dirname}/views`); - app.engine("eta", eta.renderFile); - app.set("view engine", "eta"); - - app.use(bodyParser.json()); - app.use(bodyParser.urlencoded({ extended: true })); - app.use(cookieParser()); - app.use(session({ - secret: randomStringApikey(10), - resave: false, - saveUninitialized: true, - cookie: { - secure: false, - httpOnly: true, - maxAge: 1000 * 60 * 60 * 24 * 7 // 7 days - } - })); - - - // public folder - app.use("/css", express.static(`${__dirname}/css`)); - app.use("/js", express.static(`${__dirname}/js`)); - app.use("/images", express.static(`${__dirname}/images`)); - - require("./passport-config.js")(Passport, dashBoardData, bcrypt); - app.use(Passport.initialize()); - app.use(Passport.session()); - app.use(fileUpload()); - - app.use(flash()); - app.use(function (req, res, next) { - res.locals.gRecaptcha_siteKey = gRecaptcha.siteKey; - res.locals.__dirname = __dirname; - res.locals.success = req.flash("success") || []; - res.locals.errors = req.flash("errors") || []; - res.locals.warnings = req.flash("warnings") || []; - res.locals.user = req.user || null; - next(); - }); - - const generateEmailVerificationCode = require("./scripts/generate-Email-Verification.js"); - - // ————————————————— MIDDLEWARE ————————————————— // - const createLimiter = (ms, max) => rateLimit({ - windowMs: ms, // 5 minutes - max, - handler: (req, res) => { - res.status(429).send({ - status: "error", - message: getText("app", "tooManyRequests") - }); - } - }); - - const middleWare = require("./middleware/index.js")(checkAuthConfigDashboardOfThread); - - // ————————————————————————————————————————————— // - - async function checkAuthConfigDashboardOfThread(threadData, userID) { - if (!isNaN(threadData)) - threadData = await threadsData.get(threadData); - return threadData.adminIDs?.includes(userID) || threadData.members?.some(m => m.userID == userID && m.permissionConfigDashboard == true) || false; - } - - const isVideoFile = (mimeType) => videoExt.includes(mimeDB[mimeType]?.extensions?.[0]); - - async function isVerifyRecaptcha(responseCaptcha) { - const secret = gRecaptcha.secretKey; - const verifyUrl = `https://www.google.com/recaptcha/api/siteverify?secret=${secret}&response=${responseCaptcha}`; - const verify = await axios.get(verifyUrl); - return verify.data.success; - } - - - // ROUTES & MIDDLWARE - const { - unAuthenticated, - isWaitVerifyAccount, - isAuthenticated, - isAdmin, - isVeryfiUserIDFacebook, - checkHasAndInThread, - middlewareCheckAuthConfigDashboardOfThread - } = middleWare; - - const paramsForRoutes = { - unAuthenticated, isWaitVerifyAccount, isAdmin, isAuthenticated, - isVeryfiUserIDFacebook, checkHasAndInThread, middlewareCheckAuthConfigDashboardOfThread, - - isVerifyRecaptcha, validateEmail, randomNumberApikey, transporter, - generateEmailVerificationCode, dashBoardData, expireVerifyCode, Passport, isVideoFile, - - threadsData, api, createLimiter, config, checkAuthConfigDashboardOfThread, - imageExt, videoExt, audioExt, convertSize, drive, usersData - }; - - const registerRoute = require("./routes/register.js")(paramsForRoutes); - const loginRoute = require("./routes/login.js")(paramsForRoutes); - const forgotPasswordRoute = require("./routes/forgotPassword.js")(paramsForRoutes); - const changePasswordRoute = require("./routes/changePassword.js")(paramsForRoutes); - const dashBoardRoute = require("./routes/dashBoard.js")(paramsForRoutes); - const verifyFbidRoute = require("./routes/verifyfbid.js")(paramsForRoutes); - const apiRouter = require("./routes/api.js")(paramsForRoutes); - - app.get(["/", "/home"], (req, res) => { - res.render("home"); - }); - - app.get("/stats", async (req, res) => { - let fcaVersion; - try { - fcaVersion = require("fb-chat-api/package.json").version; - } - catch (e) { - fcaVersion = "unknown"; - } - - const totalThread = (await threadsData.getAll()).filter(t => t.threadID.toString().length > 15).length; - const totalUser = (await usersData.getAll()).length; - const prefix = config.prefix; - const uptime = utils.convertTime(process.uptime() * 1000); - - res.render("stats", { - fcaVersion, - totalThread, - totalUser, - prefix, - uptime, - uptimeSecond: process.uptime() +module.exports = async () => { + app.get("/uptime", (req, res) => { + res.json({ + uptime: process.uptime(), + uptimeHuman: convertTime(process.uptime() * 1000) }); }); - app.get("/profile", isAuthenticated, async (req, res) => { - res.render("profile", { - userData: await usersData.get(req.user.facebookUserID) || {} - }); + const PORT = process.env.PORT || 3001; + app.listen(PORT, () => { + console.log(`Uptime API running on port ${PORT}`); }); - - app.get("/donate", (req, res) => res.render("donate")); - - app.get("/logout", (req, res, next) => { - req.logout(function (err) { - if (err) - return next(err); - res.redirect("/"); - }); - }); - - app.post("/changefbstate", isAuthenticated, isVeryfiUserIDFacebook, (req, res) => { - if (!global.GoatBot.config.adminBot.includes(req.user.facebookUserID)) - return res.send({ - status: "error", - message: getText("app", "notPermissionChangeFbstate") - }); - const { fbstate } = req.body; - if (!fbstate) - return res.send({ - status: "error", - message: getText("app", "notFoundFbstate") - }); - - fs.writeFileSync(process.cwd() + (process.env.NODE_ENV == "production" || process.env.NODE_ENV == "development" ? "/account.dev.txt" : "/account.txt"), fbstate); - res.send({ - status: "success", - message: getText("app", "changedFbstateSuccess") - }); - - res.on("finish", () => { - process.exit(2); - }); - }); - app.get("/uptime", global.responseUptimeCurrent); - - app.get("/changefbstate", isAuthenticated, isVeryfiUserIDFacebook, isAdmin, (req, res) => { - res.render("changeFbstate", { - currentFbstate: fs.readFileSync(process.cwd() + (process.env.NODE_ENV == "production" || process.env.NODE_ENV == "development" ? "/account.dev.txt" : "/account.txt"), "utf8") - }); - }); - - app.use("/register", registerRoute); - app.use("/login", loginRoute); - app.use("/forgot-password", forgotPasswordRoute); - app.use("/change-password", changePasswordRoute); - app.use("/dashboard", dashBoardRoute); - app.use("/verifyfbid", verifyFbidRoute); - app.use("/api", apiRouter); - - app.get("*", (req, res) => { - res.status(404).render("404"); - }); - - // catch global error - app.use((err, req, res, next) => { - if (err.message == "Login sessions require session support. Did you forget to use `express-session` middleware?") - return res.status(500).send(getText("app", "serverError")); - }); - - const PORT = config.dashBoard.port || config.serverUptime.port || 3001; - let dashBoardUrl = `https://${process.env.REPL_OWNER - ? `${process.env.REPL_SLUG}.${process.env.REPL_OWNER}.repl.co` - : process.env.API_SERVER_EXTERNAL == "https://api.glitch.com" - ? `${process.env.PROJECT_DOMAIN}.glitch.me` - : `localhost:${PORT}`}`; - dashBoardUrl.includes("localhost") && (dashBoardUrl = dashBoardUrl.replace("https", "http")); - await server.listen(PORT); - utils.log.info("DASHBOARD", `Dashboard is running: ${dashBoardUrl}`); - if (config.serverUptime.socket.enable == true) - require("../bot/login/socketIO.js")(server); }; -function randomStringApikey(max) { - let text = ""; - const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for (let i = 0; i < max; i++) - text += possible.charAt(Math.floor(Math.random() * possible.length)); - return text; -} - -function randomNumberApikey(maxLength) { - let text = ""; - const possible = "0123456789"; - for (let i = 0; i < maxLength; i++) - text += possible.charAt(Math.floor(Math.random() * possible.length)); - return text; -} - -function validateEmail(email) { - const re = /^(([^<>()\[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(email); -} - -function convertSize(byte) { - return byte > 1024 ? byte > 1024 * 1024 ? (byte / 1024 / 1024).toFixed(2) + " MB" : (byte / 1024).toFixed(2) + " KB" : byte + " Byte"; +function convertTime(ms) { + const sec = Math.floor((ms / 1000) % 60); + const min = Math.floor((ms / (1000 * 60)) % 60); + const hr = Math.floor((ms / (1000 * 60 * 60)) % 24); + const days = Math.floor(ms / (1000 * 60 * 60 * 24)); + return `${days}d ${hr}h ${min}m ${sec}s`; } diff --git a/dashboard/connectDB.js b/dashboard/connectDB.js deleted file mode 100644 index 4801f48e53..0000000000 --- a/dashboard/connectDB.js +++ /dev/null @@ -1,37 +0,0 @@ -const path = require("path"); - -const dirConfig = path.join(`${__dirname}/../${process.env.NODE_ENV === 'development' ? 'config.dev.json' : 'config.json'}`); -const dirConfigCommands = path.join(`${__dirname}/../${process.env.NODE_ENV === 'development' ? 'configCommands.dev.json' : 'configCommands.json'}`); - -global.GoatBot = { - config: require(dirConfig), - configCommands: require(dirConfigCommands) -}; -global.utils = require("../utils.js"); -global.client = { - database: { - creatingThreadData: [], - creatingUserData: [], - creatingDashBoardData: [] - } -}; -global.db = { - allThreadData: [], - allUserData: [], - globalData: [] -}; - -module.exports = async function () { - const controller = await require(path.join(__dirname, "..", "database/controller/index.js"))(null); // data is loaded here - const { threadModel, userModel, dashBoardModel, globalModel, threadsData, usersData, dashBoardData, globalData } = controller; - return { - threadModel, - userModel, - dashBoardModel, - globalModel, - threadsData, - usersData, - dashBoardData, - globalData - }; -}; \ No newline at end of file diff --git a/dashboard/css/custom.css b/dashboard/css/custom.css deleted file mode 100644 index 5ca8c47bb9..0000000000 --- a/dashboard/css/custom.css +++ /dev/null @@ -1,241 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Josefin+Sans&display=swap'); - -/* ======= Toast message ======== */ -#toast { - position: fixed; - top: 32px; - right: 32px; - z-index: 999999; -} - -.toast:not(.show) { - display: flex; -} - -.toast+.toast { - margin-top: 24px; -} - -.toast { - /* position: absolute; */ - top: 25px; - right: 30px; - border-radius: 12px; - background: var(--phoenix-white); - padding: 20px 35px 20px 25px; - box-shadow: 0 5px 8px rgba(0, 0, 0, 0.08); - overflow: hidden; - transform: translateX(calc(100% + 30px)); - transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.35); - transform: translateX(0%); -} - - -@keyframes slideInLeft { - from { - opacity: 0; - transform: translateX(calc(100% + 32px)); - } - - to { - opacity: 1; - transform: translateX(0); - } -} - -@keyframes fadeOut { - to { - opacity: 0; - } -} - - -.toast .toast-content { - display: flex; - align-items: center; -} - -.toast-content .check { - display: flex; - align-items: center; - justify-content: center; - height: 35px; - min-width: 35px; - background-color: #2770ff; - color: #fff; - font-size: 20px; - border-radius: 50%; -} - -.toast-content .message { - display: flex; - flex-direction: column; - margin: 0 20px; -} - -.message .text { - font-size: 16px; - font-weight: 400; - color: #666666; -} - -.message .text.text-1 { - font-weight: 600; - color: #333; -} - -.toast .close { - position: absolute; - top: 10px; - right: 15px; - padding: 5px; - cursor: pointer; - opacity: 0.7; -} - -.toast .close:hover { - opacity: 1; -} - -.toast .progress { - position: absolute; - bottom: 0; - left: 0; - height: 3px; - width: 100%; - -} - -.toast .warning, -.toast .error, -.toast .success, -.toast .info { - font-size: 25px; - font-weight: 600; -} - -.toast .warning { - color: #ff9f43; -} - -.toast .error { - color: #ff5b5b; -} - -.toast .success { - color: #00d68f; -} - -.toast .info { - color: #2770ff; -} - -.toast .progress:before { - content: ""; - position: absolute; - bottom: 0; - right: 0; - height: 100%; - width: 100%; -} - -/* < 400px */ -@media (max-width: 400px) { - .toast { - padding: 14px 16px; - } - - #toast { - top: 12px; - right: 10px; - } - - .message .text { - font-size: 14px; - font-weight: 400; - color: #666666; - } - - .toast .warning, - .toast .error, - .toast .success, - .toast .info { - font-size: 22px; - font-weight: 600; - } -} - -@keyframes progress { - 100% { - right: 100%; - } -} - -/* ======= End Toast ======== */ - -/* ======= Copy To Clipboard ======== */ -.copyToClipboard { - cursor: pointer; -} -/* -.hwt-container { - display: inline-block; - position: relative; - overflow: hidden !important; - -webkit-text-size-adjust: none !important; -} - -.hwt-backdrop { - position: absolute !important; - top: 0 !important; - right: -99px !important; - bottom: 0 !important; - left: 0 !important; - padding-right: 99px !important; - overflow-x: hidden !important; - overflow-y: auto !important; -} - -.hwt-highlights { - width: auto !important; - height: auto !important; - border-color: transparent !important; - white-space: pre-wrap !important; - word-wrap: break-word !important; - color: transparent !important; - overflow: hidden !important; -} - -.hwt-input { - display: block !important; - position: relative !important; - margin: 0; - padding: 0; - border-radius: 0; - font: inherit; - overflow-x: hidden !important; - overflow-y: auto !important; -} - -.hwt-content { - width: 100%; - padding: 1rem; - border: 1px solid; - background: none transparent !important; -} - -.hwt-content mark { - padding: 0 !important; - color: inherit; -} */ - -.spinner-border-sm { - --phoenix-spinner-width: 1rem; - --phoenix-spinner-height: 1rem; - --phoenix-spinner-border-width: 0.2em; -} - -.spinner-grow-sm { - --phoenix-spinner-width: 1rem; - --phoenix-spinner-height: 1rem; -} \ No newline at end of file diff --git a/dashboard/css/dropzone.css b/dashboard/css/dropzone.css deleted file mode 100644 index ef3cc8f16f..0000000000 --- a/dashboard/css/dropzone.css +++ /dev/null @@ -1,513 +0,0 @@ -.dropzone, -.dropzone * { - box-sizing: border-box -} - -.dropzone { - min-height: 150px; - border: 2px solid rgba(0, 0, 0, .3); - background: #fff; - padding: 20px 20px -} - -.dropzone.dz-clickable { - cursor: pointer -} - -.dropzone.dz-clickable * { - cursor: default -} - -.dropzone.dz-clickable .dz-message, -.dropzone.dz-clickable .dz-message * { - cursor: pointer -} - -.dropzone.dz-started .dz-message { - display: none -} - -.dropzone.dz-drag-hover { - border-style: solid -} - -.dropzone.dz-drag-hover .dz-message { - opacity: .5 -} - -.dropzone .dz-message { - text-align: center; - margin: 2em 0 -} - -.dropzone .dz-message .dz-button { - background: 0 0; - color: inherit; - border: none; - padding: 0; - font: inherit; - cursor: pointer; - outline: inherit -} - -.dropzone .dz-preview { - position: relative; - display: inline-block; - vertical-align: top; - margin: 16px; - min-height: 100px -} - -.dropzone .dz-preview:hover { - z-index: 1000 -} - -.dropzone .dz-preview:hover .dz-details { - opacity: 1 -} - -.dropzone .dz-preview.dz-file-preview .dz-image { - border-radius: 20px; - background: #999; - background: linear-gradient(to bottom, #eee, #ddd) -} - -.dropzone .dz-preview.dz-file-preview .dz-details { - opacity: 1 -} - -.dropzone .dz-preview.dz-image-preview { - background: #fff -} - -.dropzone .dz-preview.dz-image-preview .dz-details { - -webkit-transition: opacity .2s linear; - -moz-transition: opacity .2s linear; - -ms-transition: opacity .2s linear; - -o-transition: opacity .2s linear; - transition: opacity .2s linear -} - -.dropzone .dz-preview .dz-remove { - font-size: 14px; - text-align: center; - display: block; - cursor: pointer; - border: none -} - -.dropzone .dz-preview .dz-remove:hover { - text-decoration: underline -} - -.dropzone .dz-preview:hover .dz-details { - opacity: 1 -} - -.dropzone .dz-preview .dz-details { - z-index: 20; - position: absolute; - top: 0; - left: 0; - opacity: 0; - font-size: 13px; - min-width: 100%; - max-width: 100%; - padding: 2em 1em; - text-align: center; - color: rgba(0, 0, 0, .9); - line-height: 150% -} - -.dropzone .dz-preview .dz-details .dz-size { - margin-bottom: 1em; - font-size: 16px -} - -.dropzone .dz-preview .dz-details .dz-filename { - white-space: nowrap -} - -.dropzone .dz-preview .dz-details .dz-filename:hover span { - border: 1px solid rgba(200, 200, 200, .8); - background-color: rgba(255, 255, 255, .8) -} - -.dropzone .dz-preview .dz-details .dz-filename:not(:hover) { - overflow: hidden; - text-overflow: ellipsis -} - -.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { - border: 1px solid transparent -} - -.dropzone .dz-preview .dz-details .dz-filename span, -.dropzone .dz-preview .dz-details .dz-size span { - background-color: rgba(255, 255, 255, .4); - padding: 0 .4em; - border-radius: 3px -} - -.dropzone .dz-preview:hover .dz-image img { - -webkit-transform: scale(1.05, 1.05); - -moz-transform: scale(1.05, 1.05); - -ms-transform: scale(1.05, 1.05); - -o-transform: scale(1.05, 1.05); - transform: scale(1.05, 1.05); - -webkit-filter: blur(8px); - filter: blur(8px) -} - -.dropzone .dz-preview .dz-image { - border-radius: 20px; - overflow: hidden; - width: 120px; - height: 120px; - position: relative; - display: block; - z-index: 10 -} - -.dropzone .dz-preview .dz-image img { - display: block -} - -.dropzone .dz-preview.dz-success .dz-success-mark { - -webkit-animation: passing-through 3s cubic-bezier(.77, 0, .175, 1); - -moz-animation: passing-through 3s cubic-bezier(.77, 0, .175, 1); - -ms-animation: passing-through 3s cubic-bezier(.77, 0, .175, 1); - -o-animation: passing-through 3s cubic-bezier(.77, 0, .175, 1); - animation: passing-through 3s cubic-bezier(.77, 0, .175, 1) -} - -.dropzone .dz-preview.dz-error .dz-error-mark { - opacity: 1; - -webkit-animation: slide-in 3s cubic-bezier(.77, 0, .175, 1); - -moz-animation: slide-in 3s cubic-bezier(.77, 0, .175, 1); - -ms-animation: slide-in 3s cubic-bezier(.77, 0, .175, 1); - -o-animation: slide-in 3s cubic-bezier(.77, 0, .175, 1); - animation: slide-in 3s cubic-bezier(.77, 0, .175, 1) -} - -.dropzone .dz-preview .dz-error-mark, -.dropzone .dz-preview .dz-success-mark { - pointer-events: none; - opacity: 0; - z-index: 500; - position: absolute; - display: block; - top: 50%; - left: 50%; - margin-left: -27px; - margin-top: -27px -} - -.dropzone .dz-preview .dz-error-mark svg, -.dropzone .dz-preview .dz-success-mark svg { - display: block; - width: 54px; - height: 54px -} - -.dropzone .dz-preview.dz-processing .dz-progress { - opacity: 1; - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -ms-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear -} - -.dropzone .dz-preview.dz-complete .dz-progress { - opacity: 0; - -webkit-transition: opacity .4s ease-in; - -moz-transition: opacity .4s ease-in; - -ms-transition: opacity .4s ease-in; - -o-transition: opacity .4s ease-in; - transition: opacity .4s ease-in -} - -.dropzone .dz-preview:not(.dz-processing) .dz-progress { - -webkit-animation: pulse 6s ease infinite; - -moz-animation: pulse 6s ease infinite; - -ms-animation: pulse 6s ease infinite; - -o-animation: pulse 6s ease infinite; - animation: pulse 6s ease infinite -} - -.dropzone .dz-preview .dz-progress { - opacity: 1; - z-index: 1000; - pointer-events: none; - position: absolute; - height: 16px; - left: 50%; - top: 50%; - margin-top: -8px; - width: 80px; - margin-left: -40px; - background: rgba(255, 255, 255, .9); - -webkit-transform: scale(1); - border-radius: 8px; - overflow: hidden -} - -.dropzone .dz-preview .dz-progress .dz-upload { - background: #333; - background: linear-gradient(to bottom, #666, #444); - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 0; - -webkit-transition: width .3s ease-in-out; - -moz-transition: width .3s ease-in-out; - -ms-transition: width .3s ease-in-out; - -o-transition: width .3s ease-in-out; - transition: width .3s ease-in-out -} - -.dropzone .dz-preview.dz-error .dz-error-message { - display: block -} - -.dropzone .dz-preview.dz-error:hover .dz-error-message { - opacity: 1; - pointer-events: auto -} - -.dropzone .dz-preview .dz-error-message { - pointer-events: none; - z-index: 1000; - position: absolute; - display: block; - display: none; - opacity: 0; - -webkit-transition: opacity .3s ease; - -moz-transition: opacity .3s ease; - -ms-transition: opacity .3s ease; - -o-transition: opacity .3s ease; - transition: opacity .3s ease; - border-radius: 8px; - font-size: 13px; - top: 130px; - left: -10px; - width: 140px; - background: #be2626; - background: linear-gradient(to bottom, #be2626, #a92222); - padding: .5em 1.2em; - color: #fff -} - -.dropzone .dz-preview .dz-error-message:after { - content: ""; - position: absolute; - top: -6px; - left: 64px; - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #be2626 -} - -.dropzone { - min-height: auto; - padding: 1.5rem 1.75rem; - text-align: center; - cursor: pointer; - border: 1px dashed rgba(var(--phoenix-primary-rgb), 1) !important; - background-color: rgba(var(--phoenix-primary-rgb), 0.1); - border-radius: .475rem !important; -} - -.dropzone .dz-message { - margin: 0; - display: flex; - text-align: left -} - -.dropzone .dz-preview { - border-radius: .475rem !important; - margin: .75rem -} - -.dropzone .dz-preview .dz-image { - border-radius: .475rem !important; - z-index: 1 -} - -.dropzone .dz-preview.dz-file-preview .dz-image { - background: var(--bs-gray-200) -} - -.dropzone .dz-error-mark, -.dropzone .dz-success-mark { - margin-left: -20px !important; - margin-top: -20px !important -} - -.dropzone .dz-error-mark svg, -.dropzone .dz-success-mark svg { - height: 40px !important; - width: 40px !important -} - -.dropzone .dz-remove { - display: flex; - justify-content: center; - align-items: center; - height: 1.65rem; - width: 1.65rem; - font-size: 1rem; - text-indent: -9999px; - white-space: nowrap; - position: absolute; - z-index: 2; - background-color: var(--bs-body-bg) !important; - box-shadow: var(--bs-box-shadow); - border-radius: 100%; - top: -.825rem; - right: -.825rem -} - -.dropzone .dz-remove:after { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - display: block; - content: ""; - mask-size: 40%; - -webkit-mask-size: 40%; - mask-repeat: no-repeat; - mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center; - background-color: var(--bs-gray-600); - -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-600%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); - mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-600%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") -} - -.dropzone .dz-remove:hover:after { - mask-repeat: no-repeat; - mask-position: center; - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center; - background-color: var(--bs-primary); - -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); - mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") -} - -.dropzone .dz-error-message { - color: var(--bs-danger-inverse); - background: var(--bs-danger) -} - -.dropzone.dropzone-queue { - border: 0; - padding: 0; - background-color: transparent; - text-align: left -} - -.dropzone.dropzone-queue .dz-message { - display: none -} - -.dropzone.dropzone-queue .dropzone-panel .dropzone-remove-all, -.dropzone.dropzone-queue .dropzone-panel .dropzone-upload { - display: none -} - -.dropzone.dropzone-queue .dropzone-item { - display: flex; - align-items: center; - margin-top: .75rem; - border-radius: .475rem; - padding: .5rem 1rem; - background-color: rgba(var(--phoenix-100-rgb)) !important -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-file { - flex-grow: 1 -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-file .dropzone-filename { - font-size: .9rem; - font-weight: 500; - color: var(--bs-gray-600); - text-overflow: ellipsis; - margin-right: .5rem -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-file .dropzone-filename:hover { - color: var(--bs-primary) -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-file .dropzone-error { - margin-top: .25rem; - font-size: .9rem; - font-weight: 400; - color: var(--bs-danger); - text-overflow: ellipsis -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-progress { - width: 15% -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-progress .progress { - height: 5px; - transition: all .2s ease-in-out -} - -@media (prefers-reduced-motion:reduce) { - .dropzone.dropzone-queue .dropzone-item .dropzone-progress .progress { - transition: none - } -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar { - margin-left: 1rem; - display: flex; - flex-wrap: nowrap -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start { - height: 25px; - width: 25px; - display: inline-flex; - align-items: center; - justify-content: center; - cursor: pointer; - transition: color .2s ease -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel>i, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete>i, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start>i { - transition: color .2s ease; - font-size: .8rem; - color: var(--bs-gray-600) -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel:hover, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete:hover, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start:hover { - transition: color .2s ease -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel:hover>i, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete:hover>i, -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start:hover>i { - color: var(--bs-primary) -} - -.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start { - transition: color .2s ease -} \ No newline at end of file diff --git a/dashboard/css/jquery.highlight-within-textarea.css b/dashboard/css/jquery.highlight-within-textarea.css deleted file mode 100644 index def9cb5a17..0000000000 --- a/dashboard/css/jquery.highlight-within-textarea.css +++ /dev/null @@ -1,61 +0,0 @@ -.hwt-content mark.blue { - background-color: #a3daff; -} - -.hwt-container { - width: 100% !important; - display: inline-block; - position: relative; - overflow: hidden !important; - -webkit-text-size-adjust: none !important; -} - -.hwt-backdrop { - position: absolute !important; - top: 0 !important; - right: -99px !important; - bottom: 0 !important; - left: 0 !important; - padding-right: 99px !important; - overflow-x: hidden !important; - overflow-y: auto !important; -} - -.hwt-highlights { - width: auto !important; - height: auto !important; - border-color: transparent !important; - white-space: pre-wrap !important; - word-wrap: break-word !important; - color: transparent !important; - overflow: hidden !important; -} - -.hwt-input { - display: block !important; - position: relative !important; - margin: 0; - padding: 0; - border-radius: 0; - font: inherit; - overflow-x: hidden !important; - overflow-y: auto !important; -} - -.hwt-content { - padding: 10px; - border: 1px solid #adb5bd; - background: none transparent !important; -} - -/* when focus hwt-content */ -.hwt-input:focus { - border: 1px solid #007bff; - box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); -} - -.hwt-content mark { - padding: 0 !important; - color: inherit; - border-radius: 0.25rem; -} \ No newline at end of file diff --git a/dashboard/css/phoenix.css b/dashboard/css/phoenix.css deleted file mode 100644 index 71973348c5..0000000000 --- a/dashboard/css/phoenix.css +++ /dev/null @@ -1,37847 +0,0 @@ -/* -Phoenix CSS Framework v1.13.0 -*/ - -:root,:root.light,:root .light { - --phoenix-gray-soft: #f5f7fa; - --phoenix-gray-100: #eff2f6; - --phoenix-gray-200: #e3e6ed; - --phoenix-gray-300: #cbd0dd; - --phoenix-gray-400: #9fa6bc; - --phoenix-gray-500: #8a94ad; - --phoenix-gray-600: #6e7891; - --phoenix-gray-700: #525b75; - --phoenix-gray-800: #3e465b; - --phoenix-gray-900: #31374a; - --phoenix-gray-1000: #222834; - --phoenix-gray-1100: #141824; - --phoenix-gray-soft-rgb: 245, 247, 250; - --phoenix-gray-100-rgb: 239, 242, 246; - --phoenix-gray-200-rgb: 227, 230, 237; - --phoenix-gray-300-rgb: 203, 208, 221; - --phoenix-gray-400-rgb: 159, 166, 188; - --phoenix-gray-500-rgb: 138, 148, 173; - --phoenix-gray-600-rgb: 110, 120, 145; - --phoenix-gray-700-rgb: 82, 91, 117; - --phoenix-gray-800-rgb: 62, 70, 91; - --phoenix-gray-900-rgb: 49, 55, 74; - --phoenix-gray-1000-rgb: 34, 40, 52; - --phoenix-gray-1100-rgb: 20, 24, 36; - --phoenix-soft: #f5f7fa; - --phoenix-100: #eff2f6; - --phoenix-200: #e3e6ed; - --phoenix-300: #cbd0dd; - --phoenix-400: #9fa6bc; - --phoenix-500: #8a94ad; - --phoenix-600: #6e7891; - --phoenix-700: #525b75; - --phoenix-800: #3e465b; - --phoenix-900: #31374a; - --phoenix-1000: #222834; - --phoenix-1100: #141824; - --phoenix-facebook: #3c5a99; - --phoenix-google-plus: #dd4b39; - --phoenix-twitter: #1da1f2; - --phoenix-linkedin: #0077b5; - --phoenix-youtube: #ff0001; - --phoenix-github: #333333; - --phoenix-bootstrap: #6f45a9; - --phoenix-css3: #203ccf; - --phoenix-html5: #bf4b2c; - --phoenix-sass: #c55589; - --phoenix-gulp: #d54049; - --phoenix-w3c: #255997; - --phoenix-primary: #3874ff; - --phoenix-secondary: #31374a; - --phoenix-success: #25b003; - --phoenix-info: #0097eb; - --phoenix-warning: #e5780b; - --phoenix-danger: #ed2000; - --phoenix-light: #eff2f6; - --phoenix-dark: #141824; - --phoenix-primary-soft: #f5f8ff; - --phoenix-primary-100: #e5edff; - --phoenix-primary-200: #adc5ff; - --phoenix-primary-300: #85a9ff; - --phoenix-primary-500: #004dff; - --phoenix-primary-600: #003cc7; - --phoenix-warning-soft: #fff6e0; - --phoenix-warning-100: #ffefca; - --phoenix-warning-200: #ffe6ad; - --phoenix-warning-300: #ffcc85; - --phoenix-warning-500: #d6700a; - --phoenix-warning-600: #bc3803; - --phoenix-danger-300: #f48270; - --phoenix-danger-100: #ffe0db; - --phoenix-danger-200: #fabcb3; - --phoenix-danger-500: #cc1b00; - --phoenix-danger-600: #b81800; - --phoenix-success-100: #d9fbd0; - --phoenix-success-200: #bee8b4; - --phoenix-success-300: #90d67f; - --phoenix-success-500: #23890b; - --phoenix-success-600: #1c6c09; - --phoenix-info-100: #c7ebff; - --phoenix-info-200: #96d9ff; - --phoenix-info-300: #60c6ff; - --phoenix-info-500: #0080c7; - --phoenix-info-600: #005585; - --phoenix-white: #fff; - --phoenix-black: #000000; - --phoenix-soft-rgb: 245, 247, 250; - --phoenix-100-rgb: 239, 242, 246; - --phoenix-200-rgb: 227, 230, 237; - --phoenix-300-rgb: 203, 208, 221; - --phoenix-400-rgb: 159, 166, 188; - --phoenix-500-rgb: 138, 148, 173; - --phoenix-600-rgb: 110, 120, 145; - --phoenix-700-rgb: 82, 91, 117; - --phoenix-800-rgb: 62, 70, 91; - --phoenix-900-rgb: 49, 55, 74; - --phoenix-1000-rgb: 34, 40, 52; - --phoenix-1100-rgb: 20, 24, 36; - --phoenix-facebook-rgb: 60, 90, 153; - --phoenix-google-plus-rgb: 221, 75, 57; - --phoenix-twitter-rgb: 29, 161, 242; - --phoenix-linkedin-rgb: 0, 119, 181; - --phoenix-youtube-rgb: 255, 0, 1; - --phoenix-github-rgb: 51, 51, 51; - --phoenix-bootstrap-rgb: 111, 69, 169; - --phoenix-css3-rgb: 32, 60, 207; - --phoenix-html5-rgb: 191, 75, 44; - --phoenix-sass-rgb: 197, 85, 137; - --phoenix-gulp-rgb: 213, 64, 73; - --phoenix-w3c-rgb: 37, 89, 151; - --phoenix-primary-rgb: 56, 116, 255; - --phoenix-secondary-rgb: 49, 55, 74; - --phoenix-success-rgb: 37, 176, 3; - --phoenix-info-rgb: 0, 151, 235; - --phoenix-warning-rgb: 229, 120, 11; - --phoenix-danger-rgb: 237, 32, 0; - --phoenix-light-rgb: 239, 242, 246; - --phoenix-dark-rgb: 20, 24, 36; - --phoenix-primary-soft-rgb: 245, 248, 255; - --phoenix-primary-100-rgb: 229, 237, 255; - --phoenix-primary-200-rgb: 173, 197, 255; - --phoenix-primary-300-rgb: 133, 169, 255; - --phoenix-primary-500-rgb: 0, 77, 255; - --phoenix-primary-600-rgb: 0, 60, 199; - --phoenix-warning-soft-rgb: 255, 246, 224; - --phoenix-warning-100-rgb: 255, 239, 202; - --phoenix-warning-200-rgb: 255, 230, 173; - --phoenix-warning-300-rgb: 255, 204, 133; - --phoenix-warning-500-rgb: 214, 112, 10; - --phoenix-warning-600-rgb: 188, 56, 3; - --phoenix-danger-300-rgb: 244, 130, 112; - --phoenix-danger-100-rgb: 255, 224, 219; - --phoenix-danger-200-rgb: 250, 188, 179; - --phoenix-danger-500-rgb: 204, 27, 0; - --phoenix-danger-600-rgb: 184, 24, 0; - --phoenix-success-100-rgb: 217, 251, 208; - --phoenix-success-200-rgb: 190, 232, 180; - --phoenix-success-300-rgb: 144, 214, 127; - --phoenix-success-500-rgb: 35, 137, 11; - --phoenix-success-600-rgb: 28, 108, 9; - --phoenix-info-100-rgb: 199, 235, 255; - --phoenix-info-200-rgb: 150, 217, 255; - --phoenix-info-300-rgb: 96, 198, 255; - --phoenix-info-500-rgb: 0, 128, 199; - --phoenix-info-600-rgb: 0, 85, 133; - --phoenix-white-rgb: 255, 255, 255; - --phoenix-black-rgb: 0, 0, 0; - --phoenix-white: #fff; - --phoenix-black: #000000; - --phoenix-white-rgb: 255, 255, 255; - --phoenix-black-rgb: 0, 0, 0; - --phoenix-body-color-rgb: 49, 55, 74; - --phoenix-body-bg-rgb: 245, 247, 250; - --phoenix-font-sans-serif: "Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - --phoenix-font-monospace: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --phoenix-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --phoenix-scroll-margin-top: 2.5rem; - --phoenix-body-font-family: Nunito Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol; - --phoenix-body-font-size: 1rem; - --phoenix-body-font-weight: 400; - --phoenix-body-line-height: 1.49; - --phoenix-body-color: #31374a; - --phoenix-body-bg: #f5f7fa; - --phoenix-border-width: 1px; - --phoenix-border-style: solid; - --phoenix-border-color: var(--phoenix-gray-200); - --phoenix-border-color-translucent: rgba(0, 0, 0, 0.175); - --phoenix-border-radius: 0.375rem; - --phoenix-border-radius-sm: 0.25rem; - --phoenix-border-radius-lg: 0.5rem; - --phoenix-border-radius-xl: 1rem; - --phoenix-border-radius-2xl: 2rem; - --phoenix-border-radius-pill: 50rem; - --phoenix-heading-color: var(--phoenix-1100); - --phoenix-code-color: #d63384; - --phoenix-highlight-bg: #fff3cd; - --phoenix-input-bg: #fff; - --phoenix-input-color: var(--phoenix-gray-900); - --phoenix-input-border-color: #cbd0dd; - --phoenix-input-group-addon-bg: #eff2f6; - --phoenix-scrollbar-bg: rgba(159, 166, 188, 0.55); - --phoenix-navbar-top-height: 4rem; - --phoenix-navbar-top-link-color: var(--phoenix-gray-900); - --phoenix-navbar-top-menu-bg-color: #fff; - --phoenix-navbar-top-border-color: #cbd0dd; - --phoenix-navbar-top-link-hover-color: #222834; - --phoenix-navbar-top-link-hover-bg: #eff2f6; - --phoenix-navbar-top-link-active-color: var(--phoenix-primary); - --phoenix-navbar-top-dropdown-color: var(--phoenix-gray-900); - --phoenix-navbar-top-dropdown-hover-bg: #eff2f6; - --phoenix-navbar-top-menu-margin: 1.5rem; - --phoenix-dual-nav-border-color: #e3e6ed; - --phoenix-dual-nav-first-layer-bg: #eff2f6; - --phoenix-navbar-vertical-border-color: #cbd0dd; - --phoenix-navbar-vertical-bg-color: #fff; - --phoenix-navbar-vertical-label-color: #6e7891; - --phoenix-navbar-vertical-link-color: #525b75; - --phoenix-navbar-vertical-link-hover-color: #3e465b; - --phoenix-navbar-vertical-link-hover-bg: #eff2f6; - --phoenix-navbar-vertical-link-active-color: #3874ff; - --phoenix-navbar-vertical-link-disable-color: #8a94ad; - --phoenix-navbar-vertical-width: 15.875rem; - --phoenix-navbar-vertical-link-icon-color: #3e465b; - --phoenix-navbar-vertical-dropdown-indicator-color: #8a94ad; - --phoenix-navbar-footer-border-color: #cbd0dd; - --phoenix-navbar-footer-border-color: #cbd0dd; - --phoenix-navbar-vertical-hr-color: #e3e6ed; - --phoenix-navbar-vertical-collapsed-menu-bg: #fff; - --phoenix-navbar-vertical-collapsed-menu-color: #222834; - --phoenix-hamburger-menu-color: #6e7891; - --phoenix-navbar-top-bg-color: #fff; - --phoenix-btn-hover-border-color: transparent; - --phoenix-btn-active-border-color: transparent; - --phoenix-list-group-bg: #fff; - --phoenix-list-group-action-hover-color: #525b75; - --phoenix-list-group-hover-bg: #eff2f6; - --phoenix-body-bg: #f5f7fa; - --phoenix-body-color: #31374a; - --phoenix-headings-color: #31374a; - --phoenix-link-hover-color: #004dff; - --phoenix-link-color: #3874ff; - --phoenix-choices-inner-min-height: auto; - --phoenix-choices-item-has-no-choices-bg: #fff; - --phoenix-flatpickr-calendar-input-bg: var(--phoenix-input-bg); - --phoenix-flatpickr-calendar-bg: #e3e6ed; - --phoenix-flatpickr-current-month-color: #31374a; - --phoenix-flatpickr-weekday-color: #31374a; - --phoenix-flatpickr-calendar-day-hover-bg: rgba(203, 208, 221, 0.5); - --phoenix-flatpickr-weekend-days-color: #d6700a; - --phoenix-flatpickr-today-color: #fff; - --phoenix-flatpickr-calendar-day-selected-bg: rgba(56, 116, 255, 0.2); - --phoenix-calendar-bg: #e3e6ed; - --phoenix-calendar-border-color: #f5f7fa; - --phoenix-theme-wizard-nav-item-circle-bg: #eff2f6; - --phoenix-theme-wizard-complete-color: #25b003; - --phoenix-theme-wizard-active-color: #3874ff; - --phoenix-border-opacity: 1; - --phoenix-tinymce-bg: var(--phoenix-input-bg); - --phoenix-tinymce-tox-tbtn-enabled-icon-color: var(--phoenix-gray-800); - --phoenix-choices-item-bg: #e5edff; - --phoenix-choices-item-color: #222834; - --phoenix-docs-language-bg: #222834; - --phoenix-form-select-indicator: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDE1MCAxNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik03NS4zNDggMTI3LjE5MkM3Mi40MzgxIDEyNy4xOTIgNjkuODUxNCAxMjYuMjIyIDY3LjkxMTUgMTI0LjI4Mkw1LjgzMjE1IDYyLjIwMjNDMS42Mjg4NyA1OC4zMjIzIDEuNjI4ODcgNTEuNTMyNCA1LjgzMjE1IDQ3LjY1MjVDOS43MTIxMSA0My40NDkyIDE2LjUwMiA0My40NDkyIDIwLjM4MiA0Ny42NTI1TDc1LjM0OCAxMDIuMjk1TDEyOS45OTEgNDcuNjUyNUMxMzMuODcxIDQzLjQ0OTIgMTQwLjY2MSA0My40NDkyIDE0NC41NDEgNDcuNjUyNUMxNDguNzQ0IDUxLjUzMjQgMTQ4Ljc0NCA1OC4zMjIzIDE0NC41NDEgNjIuMjAyM0w4Mi40NjEzIDEyNC4yODJDODAuNTIxMyAxMjYuMjIyIDc3LjkzNDcgMTI3LjE5MiA3NS4zNDggMTI3LjE5MloiIGZpbGw9IiMzMTM3NEEiLz4KPC9zdmc+Cg=="); - --phoenix-avatar-status-border-color: #fff; - --phoenix-avatar-name-color: #004dff; - --phoenix-colored-link-100-hover-color: #e3e6ed; - --phoenix-logo-text: #6e7891; - --phoenix-theme-control-toggle-bg: rgba(255, 204, 133, 0.24); - --phoenix-theme-control-toggle-hover-bg: #e5780b; - --phoenix-theme-control-toggle-color: #e5780b; - --phoenix-theme-control-toggle-hover-color: #fff6e0; - --phoenix-kanban-bg: #e3e6ed; - --phoenix-kanban-column-bg: #f5f7fa; - --phoenix-ghost-bg: var(--phoenix-gray-100); - --phoenix-drag-bg: var(--phoenix-white); - --phoenix-kanban-column-hover-bg: var(--phoenix-white) -} - -:root .nav-slim,:root.light .nav-slim,:root .light .nav-slim { - --phoenix-navbar-top-height: 1.7rem -} - -:root .dual-nav,:root.light .dual-nav,:root .light .dual-nav { - --phoenix-navbar-top-height: 7.25rem -} - -:root .navbar-slim,:root.light .navbar-slim,:root .light .navbar-slim { - --phoenix-navbar-top-menu-margin: 0.8rem -} - -:root.dual-nav,:root.light.dual-nav,:root .light.dual-nav { - --phoenix-navbar-top-menu-margin: 1.3rem -} - -:root:not(.dark) .navbar-darker,:root.light:not(.dark) .navbar-darker,:root .light:not(.dark) .navbar-darker { - --phoenix-navbar-top-dropdown-hover-bg: #31374a; - --phoenix-navbar-top-dropdown-color: #9fa6bc -} - -:root:not(.dark) .navbar-darker:not(.dark) .navbar-top-collapse.show,:root.light:not(.dark) .navbar-darker:not(.dark) .navbar-top-collapse.show,:root .light:not(.dark) .navbar-darker:not(.dark) .navbar-top-collapse.show { - --phoenix-navbar-top-link-color: #9fa6bc; - --phoenix-navbar-top-menu-bg-color: #141824; - --phoenix-navbar-top-border-color: #373e53; - --phoenix-navbar-top-link-hover-color: #cbd0dd; - --phoenix-navbar-top-link-hover-bg: #222834; - --phoenix-navbar-top-link-active-color: #cbd0dd -} - -:root.dual-nav:not(.dark) .navbar-darker,:root.light.dual-nav:not(.dark) .navbar-darker,:root .light.dual-nav:not(.dark) .navbar-darker { - --phoenix-dual-nav-border-color: #31374a; - --phoenix-dual-nav-first-layer-bg: #0f111a -} - -:root.dual-nav:not(.dark) .navbar-darker .search-box,:root.light.dual-nav:not(.dark) .navbar-darker .search-box,:root .light.dual-nav:not(.dark) .navbar-darker .search-box { - --phoenix-input-bg: #141824; - --phoenix-input-border-color: #373e53 -} - -:root.dual-nav:not(.dark) .navbar-darker .search-box.search-box-icon,:root.light.dual-nav:not(.dark) .navbar-darker .search-box.search-box-icon,:root .light.dual-nav:not(.dark) .navbar-darker .search-box.search-box-icon { - color: #525b75 -} - -:root.navbar-vertical-collapsed,:root.light.navbar-vertical-collapsed,:root .light.navbar-vertical-collapsed { - --phoenix-navbar-vertical-width: 4rem -} - -:root .badge-phoenix-primary,:root.light .badge-phoenix-primary,:root .light .badge-phoenix-primary { - --phoenix-badge-bg: #e5edff; - --phoenix-badge-color: #003cc7; - --phoenix-badge-border-color: #adc5ff -} - -:root .badge-phoenix-secondary,:root.light .badge-phoenix-secondary,:root .light .badge-phoenix-secondary { - --phoenix-badge-bg: #e3e6ed; - --phoenix-badge-color: #141824; - --phoenix-badge-border-color: #cbd0dd -} - -:root .badge-phoenix-success,:root.light .badge-phoenix-success,:root .light .badge-phoenix-success { - --phoenix-badge-bg: #d9fbd0; - --phoenix-badge-color: #1c6c09; - --phoenix-badge-border-color: #bee8b4 -} - -:root .badge-phoenix-info,:root.light .badge-phoenix-info,:root .light .badge-phoenix-info { - --phoenix-badge-bg: #c7ebff; - --phoenix-badge-color: #005585; - --phoenix-badge-border-color: #96d9ff -} - -:root .badge-phoenix-warning,:root.light .badge-phoenix-warning,:root .light .badge-phoenix-warning { - --phoenix-badge-bg: #ffefca; - --phoenix-badge-color: #bc3803; - --phoenix-badge-border-color: #ffcc85 -} - -:root .badge-phoenix-danger,:root.light .badge-phoenix-danger,:root .light .badge-phoenix-danger { - --phoenix-badge-bg: #ffe0db; - --phoenix-badge-color: #b81800; - --phoenix-badge-border-color: #fabcb3 -} - -:root:not(.dark) .navbar-darker,:root.light:not(.dark) .navbar-darker,:root .light:not(.dark) .navbar-darker { - --phoenix-navbar-vertical-border-color: #31374a; - --phoenix-navbar-vertical-bg-color: #222834; - --phoenix-navbar-vertical-label-color: #6e7891; - --phoenix-navbar-vertical-link-color: #9fa6bc; - --phoenix-navbar-vertical-link-hover-color: #eff2f6; - --phoenix-navbar-vertical-link-hover-bg: #31374a; - --phoenix-navbar-vertical-link-active-color: #fff; - --phoenix-navbar-vertical-link-disable-color: #8a94ad; - --phoenix-navbar-vertical-link-icon-color: #9fa6bc; - --phoenix-navbar-vertical-hr-color: #3e465b; - --phoenix-navbar-vertical-collapsed-menu-bg: #222834; - --phoenix-navbar-vertical-collapsed-menu-color: #9fa6bc; - --phoenix-logo-text: #eff2f6; - --phoenix-navbar-footer-border-color: #31374a; - --phoenix-navbar-top-bg-color: #141824; - --phoenix-nav-link-color: #8a94ad; - --phoenix-theme-control-toggle-bg: rgba(255, 204, 133, 0.18); - --phoenix-theme-control-toggle-hover-bg: rgba(229, 120, 11, 0.7); - --phoenix-theme-control-toggle-color: #ffcc85; - --phoenix-theme-control-toggle-hover-color: #fff6e0 -} - -:root:not(.dark) .navbar-darker .form-control,:root.light:not(.dark) .navbar-darker .form-control,:root .light:not(.dark) .navbar-darker .form-control { - color: #6e7891 -} - -:root:not(.dark) .navbar-darker .search-box,:root.light:not(.dark) .navbar-darker .search-box,:root .light:not(.dark) .navbar-darker .search-box { - --phoenix-input-bg: #222834; - --phoenix-input-border-color: #373e53 -} - -:root:not(.dark) .navbar-darker .search-box.search-box-icon,:root.light:not(.dark) .navbar-darker .search-box.search-box-icon,:root .light:not(.dark) .navbar-darker .search-box.search-box-icon { - color: #525b75 -} - -:root:not(.dark) .navbar-darker.navbar-slim .navbar-brand span,:root.light:not(.dark) .navbar-darker.navbar-slim .navbar-brand span,:root .light:not(.dark) .navbar-darker.navbar-slim .navbar-brand span { - color: #cbd0dd !important -} - -.dark,.dark .picmo__popupContainer.picmo__light { - --phoenix-gray-soft: #0f111a; - --phoenix-gray-100: #222834; - --phoenix-gray-200: #31374a; - --phoenix-gray-300: #373e53; - --phoenix-gray-400: #3e465b; - --phoenix-gray-500: #525b75; - --phoenix-gray-600: #8a94ad; - --phoenix-gray-700: #8a94ad; - --phoenix-gray-800: #949db5; - --phoenix-gray-900: #9fa6bc; - --phoenix-gray-1000: #cbd0dd; - --phoenix-gray-1100: #e3e6ed; - --phoenix-gray-soft-rgb: 15, 17, 26; - --phoenix-gray-100-rgb: 34, 40, 52; - --phoenix-gray-200-rgb: 49, 55, 74; - --phoenix-gray-300-rgb: 55, 62, 83; - --phoenix-gray-400-rgb: 62, 70, 91; - --phoenix-gray-500-rgb: 82, 91, 117; - --phoenix-gray-600-rgb: 138, 148, 173; - --phoenix-gray-700-rgb: 138, 148, 173; - --phoenix-gray-800-rgb: 148, 157, 181; - --phoenix-gray-900-rgb: 159, 166, 188; - --phoenix-gray-1000-rgb: 203, 208, 221; - --phoenix-gray-1100-rgb: 227, 230, 237; - --phoenix-soft: #0f111a; - --phoenix-100: #222834; - --phoenix-200: #31374a; - --phoenix-300: #373e53; - --phoenix-400: #3e465b; - --phoenix-500: #525b75; - --phoenix-600: #8a94ad; - --phoenix-700: #8a94ad; - --phoenix-800: #949db5; - --phoenix-900: #9fa6bc; - --phoenix-1000: #cbd0dd; - --phoenix-1100: #e3e6ed; - --phoenix-primary: #85a9ff; - --phoenix-secondary: #31374a; - --phoenix-success: #90d67f; - --phoenix-info: #60c6ff; - --phoenix-warning: #ffcc85; - --phoenix-danger: #f48270; - --phoenix-light: rgba(49, 55, 74, 0.25); - --phoenix-dark: #eff2f6; - --phoenix-primary-soft: #f5f8ff; - --phoenix-primary-100: #1d2332; - --phoenix-primary-200: #adc5ff; - --phoenix-primary-300: #85a9ff; - --phoenix-primary-500: #3874ff; - --phoenix-primary-600: #003cc7; - --phoenix-warning-soft: #fff6e0; - --phoenix-warning-100: #272528; - --phoenix-warning-200: #ffe6ad; - --phoenix-warning-300: #ffcc85; - --phoenix-warning-500: #e5780b; - --phoenix-warning-600: #bc3803; - --phoenix-danger-300: #f48270; - --phoenix-danger-200: #fabcb3; - --phoenix-danger-100: #262026; - --phoenix-danger-500: #cc1b00; - --phoenix-danger-600: #b81800; - --phoenix-success-100: #1e2628; - --phoenix-success-200: #bee8b4; - --phoenix-success-300: #90d67f; - --phoenix-success-500: #25b003; - --phoenix-success-600: #1c6c09; - --phoenix-info-100: #1a2532; - --phoenix-info-200: #96d9ff; - --phoenix-info-300: #60c6ff; - --phoenix-info-500: #0097eb; - --phoenix-info-600: #005585; - --phoenix-white: #141824; - --phoenix-black: #eff2f6; - --phoenix-soft-rgb: 15, 17, 26; - --phoenix-100-rgb: 34, 40, 52; - --phoenix-200-rgb: 49, 55, 74; - --phoenix-300-rgb: 55, 62, 83; - --phoenix-400-rgb: 62, 70, 91; - --phoenix-500-rgb: 82, 91, 117; - --phoenix-600-rgb: 138, 148, 173; - --phoenix-700-rgb: 138, 148, 173; - --phoenix-800-rgb: 148, 157, 181; - --phoenix-900-rgb: 159, 166, 188; - --phoenix-1000-rgb: 203, 208, 221; - --phoenix-1100-rgb: 227, 230, 237; - --phoenix-primary-rgb: 133, 169, 255; - --phoenix-secondary-rgb: 49, 55, 74; - --phoenix-success-rgb: 144, 214, 127; - --phoenix-info-rgb: 96, 198, 255; - --phoenix-warning-rgb: 255, 204, 133; - --phoenix-danger-rgb: 244, 130, 112; - --phoenix-light-rgb: 49, 55, 74; - --phoenix-dark-rgb: 239, 242, 246; - --phoenix-primary-soft-rgb: 245, 248, 255; - --phoenix-primary-100-rgb: 29, 35, 50; - --phoenix-primary-200-rgb: 173, 197, 255; - --phoenix-primary-300-rgb: 133, 169, 255; - --phoenix-primary-500-rgb: 56, 116, 255; - --phoenix-primary-600-rgb: 0, 60, 199; - --phoenix-warning-soft-rgb: 255, 246, 224; - --phoenix-warning-100-rgb: 39, 37, 40; - --phoenix-warning-200-rgb: 255, 230, 173; - --phoenix-warning-300-rgb: 255, 204, 133; - --phoenix-warning-500-rgb: 229, 120, 11; - --phoenix-warning-600-rgb: 188, 56, 3; - --phoenix-danger-300-rgb: 244, 130, 112; - --phoenix-danger-200-rgb: 250, 188, 179; - --phoenix-danger-100-rgb: 38, 32, 38; - --phoenix-danger-500-rgb: 204, 27, 0; - --phoenix-danger-600-rgb: 184, 24, 0; - --phoenix-success-100-rgb: 30, 38, 40; - --phoenix-success-200-rgb: 190, 232, 180; - --phoenix-success-300-rgb: 144, 214, 127; - --phoenix-success-500-rgb: 37, 176, 3; - --phoenix-success-600-rgb: 28, 108, 9; - --phoenix-info-100-rgb: 26, 37, 50; - --phoenix-info-200-rgb: 150, 217, 255; - --phoenix-info-300-rgb: 96, 198, 255; - --phoenix-info-500-rgb: 0, 151, 235; - --phoenix-info-600-rgb: 0, 85, 133; - --phoenix-white-rgb: 20, 24, 36; - --phoenix-black-rgb: 239, 242, 246; - --phoenix-white: #141824; - --phoenix-black: #eff2f6; - --phoenix-white-rgb: 20, 24, 36; - --phoenix-black-rgb: 239, 242, 246; - --phoenix-body-color: #9fa6bc; - --phoenix-body-bg: #0f111a; - --phoenix-input-bg: #141824; - --phoenix-input-border-color: #373e53; - --phoenix-input-group-addon-bg: #31374a; - --phoenix-navbar-vertical-border-color: #31374a; - --phoenix-navbar-footer-border-color: #31374a; - --phoenix-navbar-top-bg-color: #141824; - --phoenix-link-color: #85a9ff; - --phoenix-link-hover-color: #3874ff; - --phoenix-avatar-status-border-color: #141824; - --phoenix-avatar-name-color: #85a9ff; - --phoenix-list-sort-icon: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNyA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMS4xMjkzIDQuOTkwMjNDMC42OTEwMTYgNC45OTAyMyAwLjQ3MTg3NSA1LjUwODIgMC43OTA2MjUgNS44MDcwM0wzLjE2MTMzIDguMTc3NzNDMy4zNDA2MiA4LjM3Njk1IDMuNjM5NDUgOC4zNzY5NSAzLjgzODY3IDguMTc3NzNMNi4yMDkzNyA1LjgwNzAzQzYuNTA4MiA1LjUwODIgNi4yODkwNiA0Ljk5MDIzIDUuODcwNyA0Ljk5MDIzSDEuMTI5M1pNNi4yMDkzNyAyLjg5ODQ0TDMuODM4NjcgMC41Mjc3MzVDMy42Mzk0NSAwLjM0ODQzOCAzLjM0MDYyIDAuMzQ4NDM4IDMuMTYxMzMgMC41Mjc3MzVMMC43OTA2MjUgMi44OTg0NEMwLjQ3MTg3NSAzLjIxNzE5IDAuNjkxMDE2IDMuNzE1MjMgMS4xMjkzIDMuNzE1MjNINS44NzA3QzYuMjg5MDYgMy43MTUyMyA2LjUwODIgMy4yMTcxOSA2LjIwOTM3IDIuODk4NDRaIiBmaWxsPSIjM0U0NjVCIi8+Cjwvc3ZnPgo="); - --phoenix-tinymce-tox-tbtn-enabled-icon-color: var(--phoenix-gray-1000); - --phoenix-choices-item-bg: rgba(133, 169, 255, 0.25); - --phoenix-choices-item-color: var(--phoenix-gray-1000); - --phoenix-choices-item-has-no-choices-bg: #141824; - --phoenix-docs-language-bg: #222834; - --phoenix-form-select-indicator: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDE1MCAxNTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik03NS4zNDggMTI3LjE5MkM3Mi40MzgxIDEyNy4xOTIgNjkuODUxNCAxMjYuMjIyIDY3LjkxMTUgMTI0LjI4Mkw1LjgzMjE1IDYyLjIwMjNDMS42Mjg4NyA1OC4zMjIzIDEuNjI4ODcgNTEuNTMyNCA1LjgzMjE1IDQ3LjY1MjVDOS43MTIxMSA0My40NDkyIDE2LjUwMiA0My40NDkyIDIwLjM4MiA0Ny42NTI1TDc1LjM0OCAxMDIuMjk1TDEyOS45OTEgNDcuNjUyNUMxMzMuODcxIDQzLjQ0OTIgMTQwLjY2MSA0My40NDkyIDE0NC41NDEgNDcuNjUyNUMxNDguNzQ0IDUxLjUzMjQgMTQ4Ljc0NCA1OC4zMjIzIDE0NC41NDEgNjIuMjAyM0w4Mi40NjEzIDEyNC4yODJDODAuNTIxMyAxMjYuMjIyIDc3LjkzNDcgMTI3LjE5MiA3NS4zNDggMTI3LjE5MloiIGZpbGw9IiM5RkE2QkMiLz4KPC9zdmc+Cg=="); - --phoenix-theme-wizard-nav-item-circle-bg: #222834; - --phoenix-logo-text: #eff2f6; - --phoenix-flatpickr-calendar-input-bg: var(--phoenix-input-bg); - --phoenix-flatpickr-calendar-bg: #141824; - --phoenix-flatpickr-current-month-color: #cbd0dd; - --phoenix-flatpickr-weekday-color: #cbd0dd; - --phoenix-flatpickr-calendar-day-hover-bg: #222834; - --phoenix-flatpickr-weekend-days-color: #e5780b; - --phoenix-flatpickr-today-color: #31374a; - --phoenix-flatpickr-calendar-day-selected-bg: rgba(56, 116, 255, 0.2); - --phoenix-calendar-bg: #141824; - --phoenix-calendar-border-color: #0f111a; - --phoenix-list-group-bg: #141824; - --phoenix-navbar-top-link-color: #9fa6bc; - --phoenix-navbar-top-menu-bg-color: #141824; - --phoenix-navbar-top-border-color: #31374a; - --phoenix-navbar-top-link-hover-color: #cbd0dd; - --phoenix-navbar-top-link-hover-bg: #222834; - --phoenix-navbar-top-dropdown-hover-bg: #222834; - --phoenix-navbar-top-dropdown-color: #8a94ad; - --phoenix-dual-nav-border-color: #31374a; - --phoenix-dual-nav-first-layer-bg: #0f111a; - --phoenix-navbar-vertical-bg-color: #141824; - --phoenix-navbar-vertical-label-color: #6e7891; - --phoenix-navbar-vertical-link-color: #9fa6bc; - --phoenix-navbar-vertical-link-hover-color: #eff2f6; - --phoenix-navbar-vertical-link-hover-bg: #31374a; - --phoenix-navbar-vertical-link-active-color: #fff; - --phoenix-navbar-vertical-link-disable-color: #8a94ad; - --phoenix-navbar-vertical-link-icon-color: #9fa6bc; - --phoenix-hamburger-menu-color: #525b75; - --phoenix-navbar-vertical-hr-color: #3e465b; - --phoenix-navbar-vertical-collapsed-menu-bg: #222834; - --phoenix-navbar-vertical-collapsed-menu-color: #9fa6bc; - --phoenix-theme-control-toggle-bg: rgba(56, 116, 255, 0.24); - --phoenix-theme-control-toggle-hover-bg: rgba(56, 116, 255, 0.7); - --phoenix-theme-control-toggle-color: #85a9ff; - --phoenix-theme-control-toggle-hover-color: #f5f8ff; - --bs-scrollbar-bg: rgba(49, 55, 74, 0.6); - --phoenix-kanban-bg: #0f111a; - --phoenix-kanban-column-bg: #141824; - --phoenix-ghost-bg: #0f111a; - --phoenix-drag-bg: #1c222c; - --phoenix-kanban-column-hover-bg: #1c222c; - --phoenix-leaflet-bar-bg: #373e53; - --phoenix-leaflet-popup-content-wrapper-bg: #141824 -} - -.dark .text-success-100,.dark .picmo__popupContainer.picmo__light .text-success-100 { - color: #134207 !important -} - -.dark .text-success-300,.dark .picmo__popupContainer.picmo__light .text-success-300 { - color: #42962d !important -} - -.dark .text-warning-100,.dark .picmo__popupContainer.picmo__light .text-warning-100 { - color: #52310b !important -} - -.dark .text-warning-300,.dark .picmo__popupContainer.picmo__light .text-warning-300 { - color: #8d6333 !important -} - -.dark .text-danger-100,.dark .picmo__popupContainer.picmo__light .text-danger-100 { - color: #612017 !important -} - -.dark .text-danger-300,.dark .picmo__popupContainer.picmo__light .text-danger-300 { - color: #612017 !important -} - -.dark .card,.dark .picmo__popupContainer.picmo__light .card { - --phoenix-card-bg: var(--phoenix-white) -} - -.dark .table,.dark .picmo__popupContainer.picmo__light .table { - --phoenix-table-border-color: #31374a; - --phoenix-table-active-bg: rgba(var(--phoenix-1100-rgb), 0.07); - --phoenix-table-hover-color: #004dff -} - -.dark .badge:not(.light) { - --phoenix-badge-color: var(--phoenix-white) -} - -.dark .badge-phoenix-primary:not(.light) { - --phoenix-badge-bg: rgba(var(--phoenix-primary-rgb), 0.08); - --phoenix-badge-color: #85a9ff; - --phoenix-badge-border-color: rgba( var(--phoenix-primary-rgb), 0.2 ) -} - -.dark .badge-phoenix-primary:not(.light)[href]:hover,.dark .badge-phoenix-primary:not(.light)[href]:focus { - color: #003cc7 -} - -.dark .badge-phoenix-success:not(.light) { - --phoenix-badge-bg: rgba(var(--phoenix-success-rgb), 0.08); - --phoenix-badge-color: #90d67f; - --phoenix-badge-border-color: rgba( var(--phoenix-success-rgb), 0.2 ) -} - -.dark .badge-phoenix-success:not(.light)[href]:hover,.dark .badge-phoenix-success:not(.light)[href]:focus { - color: #1c6c09 -} - -.dark .badge-phoenix-info:not(.light) { - --phoenix-badge-bg: rgba(var(--phoenix-info-rgb), 0.08); - --phoenix-badge-color: #60c6ff; - --phoenix-badge-border-color: rgba( var(--phoenix-info-rgb), 0.2 ) -} - -.dark .badge-phoenix-info:not(.light)[href]:hover,.dark .badge-phoenix-info:not(.light)[href]:focus { - color: #005585 -} - -.dark .badge-phoenix-warning:not(.light) { - --phoenix-badge-bg: rgba(var(--phoenix-warning-rgb), 0.08); - --phoenix-badge-color: #ffcc85; - --phoenix-badge-border-color: rgba( var(--phoenix-warning-rgb), 0.2 ) -} - -.dark .badge-phoenix-warning:not(.light)[href]:hover,.dark .badge-phoenix-warning:not(.light)[href]:focus { - color: #bc3803 -} - -.dark .badge-phoenix-danger:not(.light) { - --phoenix-badge-bg: rgba(var(--phoenix-danger-rgb), 0.08); - --phoenix-badge-color: #f48270; - --phoenix-badge-border-color: rgba( var(--phoenix-danger-rgb), 0.2 ) -} - -.dark .badge-phoenix-danger:not(.light)[href]:hover,.dark .badge-phoenix-danger:not(.light)[href]:focus { - color: #b81800 -} - -.dark .badge-phoenix-secondary:not(.light) { - --phoenix-badge-bg: rgba(var(--phoenix-200-rgb), 0.08); - --phoenix-badge-color: #cbd0dd; - --phoenix-badge-border-color: rgba(var(--phoenix-1000-rgb), 0.2) -} - -.dark .btn-reveal,.dark .picmo__popupContainer.picmo__light .btn-reveal { - --phoenix-btn-color: #9fa6bc -} - -.dark .btn.active,.dark .google-map-control-btn .active.zoomIn,.google-map-control-btn .dark .active.zoomIn,.dark .google-map-control-btn .active.zoomOut,.google-map-control-btn .dark .active.zoomOut,.dark .tox .tox-dialog__footer .active.tox-button--secondary,.tox .tox-dialog__footer .dark .active.tox-button--secondary,.dark .tox .active.tox-button-secondary,.tox .dark .active.tox-button-secondary,.dark .tox .active.tox-button,.tox .dark .active.tox-button,.dark [data-list] .active.page,[data-list] .dark .active.page,.dark .table-list .active.page,.table-list .dark .active.page { - --phoenix-btn-active-bg: #373e53; - --phoenix-btn-active-color: red -} - -.dark .btn-phoenix-primary,.dark .picmo__popupContainer.picmo__light .btn-phoenix-primary { - --phoenix-btn-color: #85a9ff; - --phoenix-btn-hover-color: #85a9ff; - --phoenix-btn-bg: #0f111a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-active-bg: #222834; - --phoenix-btn-hover-border-color: #31374a -} - -.dark .btn-phoenix-secondary,.dark .picmo__popupContainer.picmo__light .btn-phoenix-secondary,.dark .google-map-control-btn .zoomIn,.google-map-control-btn .dark .zoomIn,.dark .google-map-control-btn .zoomOut,.google-map-control-btn .dark .zoomOut,.dark .tox .tox-dialog__footer .tox-button--secondary,.tox .tox-dialog__footer .dark .tox-button--secondary,.dark .tox .tox-button-secondary,.tox .dark .tox-button-secondary { - --phoenix-btn-color: #9fa6bc; - --phoenix-btn-active-color: #9fa6bc; - --phoenix-btn-hover-color: #cbd0dd; - --phoenix-btn-bg: #0f111a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-active-bg: #222834; - --phoenix-btn-hover-border-color: #31374a -} - -.dark .btn-phoenix-success,.dark .picmo__popupContainer.picmo__light .btn-phoenix-success { - --phoenix-btn-color: #90d67f; - --phoenix-btn-hover-color: #90d67f; - --phoenix-btn-bg: #0f111a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-active-bg: #222834; - --phoenix-btn-hover-border-color: #31374a -} - -.dark .btn-phoenix-info,.dark .picmo__popupContainer.picmo__light .btn-phoenix-info { - --phoenix-btn-color: #60c6ff; - --phoenix-btn-hover-color: #60c6ff; - --phoenix-btn-bg: #0f111a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-active-bg: #222834; - --phoenix-btn-hover-border-color: #31374a -} - -.dark .btn-phoenix-warning,.dark .picmo__popupContainer.picmo__light .btn-phoenix-warning { - --phoenix-btn-color: #ffcc85; - --phoenix-btn-hover-color: #ffcc85; - --phoenix-btn-bg: #0f111a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-active-bg: #222834; - --phoenix-btn-hover-border-color: #31374a -} - -.dark .btn-phoenix-danger,.dark .picmo__popupContainer.picmo__light .btn-phoenix-danger { - --phoenix-btn-color: #f48270; - --phoenix-btn-hover-color: #f48270; - --phoenix-btn-bg: #0f111a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-active-bg: #222834; - --phoenix-btn-hover-border-color: #31374a -} - -.dark .settings-panel .btn,.dark .settings-panel .google-map-control-btn .zoomIn,.google-map-control-btn .dark .settings-panel .zoomIn,.dark .google-map-control-btn .picmo__popupContainer.picmo__light .settings-panel .zoomIn,.dark .settings-panel .google-map-control-btn .zoomOut,.google-map-control-btn .dark .settings-panel .zoomOut,.dark .google-map-control-btn .picmo__popupContainer.picmo__light .settings-panel .zoomOut,.dark .settings-panel .tox .tox-dialog__footer .tox-button--secondary,.tox .tox-dialog__footer .dark .settings-panel .tox-button--secondary,.dark .tox .tox-dialog__footer .picmo__popupContainer.picmo__light .settings-panel .tox-button--secondary,.dark .settings-panel .tox .tox-button-secondary,.tox .dark .settings-panel .tox-button-secondary,.dark .tox .picmo__popupContainer.picmo__light .settings-panel .tox-button-secondary,.dark .settings-panel .tox .tox-button,.tox .dark .settings-panel .tox-button,.dark .tox .picmo__popupContainer.picmo__light .settings-panel .tox-button,.dark .settings-panel [data-list] .page,[data-list] .dark .settings-panel .page,.dark [data-list] .picmo__popupContainer.picmo__light .settings-panel .page,.dark .settings-panel .table-list .page,.table-list .dark .settings-panel .page,.dark .table-list .picmo__popupContainer.picmo__light .settings-panel .page { - --phoenix-btn-color: #8a94ad -} - -.dark .btn-soft-primary,.dark .picmo__popupContainer.picmo__light .btn-soft-primary { - --phoenix-btn-color: #85a9ff; - --phoenix-btn-bg: rgba(56, 116, 255, 0.14); - --phoenix-btn-border-color: rgba(56, 116, 255, 0.14); - --phoenix-btn-hover-color: #85a9ff; - --phoenix-btn-hover-bg: rgba(56, 116, 255, 0.2); - --phoenix-btn-hover-border-color: rgba(175, 199, 255, 0.226); - --phoenix-btn-focus-shadow-rgb: 110, 153, 255; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: rgba(209, 223, 255, 0.312); - --phoenix-btn-active-border-color: rgba(175, 199, 255, 0.226); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: rgba(56, 116, 255, 0.14); - --phoenix-btn-disabled-border-color: rgba(56, 116, 255, 0.14) -} - -.dark .btn-soft-secondary,.dark .picmo__popupContainer.picmo__light .btn-soft-secondary { - --phoenix-btn-color: #cbd0dd; - --phoenix-btn-bg: rgba(49, 55, 74, 0.5); - --phoenix-btn-border-color: rgba(49, 55, 74, 0.5); - --phoenix-btn-hover-color: #cbd0dd; - --phoenix-btn-hover-bg: rgba(49, 55, 74, 0.8); - --phoenix-btn-hover-border-color: rgba(101, 105, 119, 0.55); - --phoenix-btn-focus-shadow-rgb: 102, 108, 125; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: rgba(137, 141, 152, 0.6); - --phoenix-btn-active-border-color: rgba(101, 105, 119, 0.55); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: rgba(49, 55, 74, 0.5); - --phoenix-btn-disabled-border-color: rgba(49, 55, 74, 0.5) -} - -.dark .btn-soft-success,.dark .picmo__popupContainer.picmo__light .btn-soft-success { - --phoenix-btn-color: #90d67f; - --phoenix-btn-bg: rgba(37, 176, 3, 0.14); - --phoenix-btn-border-color: rgba(37, 176, 3, 0.14); - --phoenix-btn-hover-color: #90d67f; - --phoenix-btn-hover-bg: rgba(37, 176, 3, 0.2); - --phoenix-btn-hover-border-color: rgba(167, 223, 153, 0.226); - --phoenix-btn-focus-shadow-rgb: 112, 203, 90; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: rgba(205, 237, 197, 0.312); - --phoenix-btn-active-border-color: rgba(167, 223, 153, 0.226); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: rgba(37, 176, 3, 0.14); - --phoenix-btn-disabled-border-color: rgba(37, 176, 3, 0.14) -} - -.dark .btn-soft-info,.dark .picmo__popupContainer.picmo__light .btn-soft-info { - --phoenix-btn-color: #60c6ff; - --phoenix-btn-bg: rgba(0, 151, 235, 0.14); - --phoenix-btn-border-color: rgba(0, 151, 235, 0.14); - --phoenix-btn-hover-color: #60c6ff; - --phoenix-btn-hover-bg: rgba(0, 151, 235, 0.2); - --phoenix-btn-hover-border-color: rgba(152, 213, 247, 0.226); - --phoenix-btn-focus-shadow-rgb: 67, 184, 249; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: rgba(196, 231, 250, 0.312); - --phoenix-btn-active-border-color: rgba(152, 213, 247, 0.226); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: rgba(0, 151, 235, 0.14); - --phoenix-btn-disabled-border-color: rgba(0, 151, 235, 0.14) -} - -.dark .btn-soft-warning,.dark .picmo__popupContainer.picmo__light .btn-soft-warning { - --phoenix-btn-color: #ffcc85; - --phoenix-btn-bg: rgba(229, 120, 11, 0.14); - --phoenix-btn-border-color: rgba(229, 120, 11, 0.14); - --phoenix-btn-hover-color: #ffcc85; - --phoenix-btn-hover-bg: rgba(229, 120, 11, 0.2); - --phoenix-btn-hover-border-color: rgba(245, 200, 156, 0.226); - --phoenix-btn-focus-shadow-rgb: 247, 179, 97; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: rgba(249, 224, 199, 0.312); - --phoenix-btn-active-border-color: rgba(245, 200, 156, 0.226); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: rgba(229, 120, 11, 0.14); - --phoenix-btn-disabled-border-color: rgba(229, 120, 11, 0.14) -} - -.dark .btn-soft-danger,.dark .picmo__popupContainer.picmo__light .btn-soft-danger { - --phoenix-btn-color: #f48270; - --phoenix-btn-bg: rgba(237, 32, 0, 0.14); - --phoenix-btn-border-color: rgba(237, 32, 0, 0.14); - --phoenix-btn-hover-color: #f48270; - --phoenix-btn-hover-bg: rgba(237, 32, 0, 0.2); - --phoenix-btn-hover-border-color: rgba(248, 165, 152, 0.226); - --phoenix-btn-focus-shadow-rgb: 242, 101, 79; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: rgba(251, 203, 196, 0.312); - --phoenix-btn-active-border-color: rgba(248, 165, 152, 0.226); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: rgba(237, 32, 0, 0.14); - --phoenix-btn-disabled-border-color: rgba(237, 32, 0, 0.14) -} - -.dark .btn-outline-primary,.dark .picmo__popupContainer.picmo__light .btn-outline-primary { - --phoenix-btn-color: #85a9ff; - --phoenix-btn-border-color: #85a9ff -} - -.dark .btn-outline-secondary,.dark .picmo__popupContainer.picmo__light .btn-outline-secondary { - --phoenix-btn-color: #cbd0dd; - --phoenix-btn-border-color: #cbd0dd -} - -.dark .btn-outline-success,.dark .picmo__popupContainer.picmo__light .btn-outline-success { - --phoenix-btn-color: #90d67f; - --phoenix-btn-border-color: #90d67f -} - -.dark .btn-outline-info,.dark .picmo__popupContainer.picmo__light .btn-outline-info { - --phoenix-btn-color: #60c6ff; - --phoenix-btn-border-color: #60c6ff -} - -.dark .btn-outline-warning,.dark .picmo__popupContainer.picmo__light .btn-outline-warning { - --phoenix-btn-color: #ffcc85; - --phoenix-btn-border-color: #ffcc85 -} - -.dark .btn-outline-danger,.dark .picmo__popupContainer.picmo__light .btn-outline-danger { - --phoenix-btn-color: #f48270; - --phoenix-btn-border-color: #f48270 -} - -.dark .dropdown-menu,.dark .picmo__popupContainer.picmo__light .dropdown-menu { - --phoenix-dropdown-bg: #141824; - --phoenix-dropdown-border-color: #373e53; - --phoenix-dropdown-divider-bg: #373e53; - --phoenix-dropdown-link-hover-bg: #222834; - --phoenix-dropdown-link-color: #cbd0dd; - --phoenix-dropdown-link-hover-color: #eff2f6 -} - -.dark .modal-content,.dark .picmo__popupContainer.picmo__light .modal-content { - --phoenix-modal-bg: #141824 -} - -.dark .accordion,.dark .picmo__popupContainer.picmo__light .accordion { - --phoenix-accordion-color: #cbd0dd -} - -.dark .accordion-button,.dark .picmo__popupContainer.picmo__light .accordion-button { - --phoenix-accordion-active-color: #e3e6ed -} - -.dark .popover,.dark .picmo__popupContainer.picmo__light .popover { - --phoenix-popover-bg: #141824; - --phoenix-popover-border-color: #373e53; - --phoenix-popover-body-color: #cbd0dd; - --phoenix-popover-header-bg: #0f111a -} - -.dark .toast,.dark .picmo__popupContainer.picmo__light .toast { - --phoenix-toast-bg: rgba(var(--phoenix-white-rgb), 0.85); - --phoenix-toast-header-color: #949db5; - --phoenix-toast-header-border-color: #525b75; - --phoenix-toast-border-color: rgba(var(--phoenix-black-rgb), 0.175) -} - -.dark .offcanvas,.dark .picmo__popupContainer.picmo__light .offcanvas { - --phoenix-offcanvas-bg: #141824 -} - -.dark .progress,.dark .picmo__popupContainer.picmo__light .progress { - --phoenix-progress-bg: #373e53 -} - -.dark .dark__border-primary,.dark .picmo__popupContainer.picmo__light .dark__border-primary { - --phoenix-border-color: #3874ff !important -} - -.dark .navbar-darker,.dark .picmo__popupContainer.picmo__light .navbar-darker { - --phoenix-navbar-top-dropdown-hover-bg: #31374a -} - -.dark .navbar-darker,.dark .picmo__popupContainer.picmo__light .navbar-darker { - --phoenix-navbar-vertical-bg-color: #222834; - --phoenix-navbar-vertical-label-color: #6e7891; - --phoenix-navbar-vertical-link-color: #9fa6bc; - --phoenix-navbar-vertical-link-hover-color: #eff2f6; - --phoenix-navbar-vertical-link-hover-bg: #31374a; - --phoenix-navbar-vertical-link-active-color: #fff; - --phoenix-navbar-vertical-link-disable-color: #8a94ad; - --phoenix-navbar-vertical-link-icon-color: #9fa6bc; - --phoenix-navbar-vertical-collapsed-menu-bg: #222834; - --phoenix-navbar-vertical-collapsed-menu-color: #9fa6bc; - --phoenix-navbar-top-bg-color: #222834; - --phoenix-nav-link-color: #8a94ad; - --phoenix-input-bg: #222834; - --phoenix-input-border-color: #373e53 -} - -.dark .navbar-darker .form-control { - color: #6e7891 -} - -.dark .navbar-darker .search-box .search-box-icon { - color: #525b75 -} - -.dark .table-primary,.dark .picmo__popupContainer.picmo__light .table-primary { - --phoenix-table-bg: #0b1733; - --phoenix-table-color: #fff; - --phoenix-table-hover-bg: #477eff; - --phoenix-table-hover-color: #fff; - --phoenix-table-striped-bg: #427bff; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #4c82ff; - --phoenix-table-active-color: #fff; - --phoenix-table-border-color: rgba(76, 130, 255, 0.05) -} - -.dark .table-secondary,.dark .picmo__popupContainer.picmo__light .table-secondary { - --phoenix-table-bg: #0a0b0f; - --phoenix-table-color: #fff; - --phoenix-table-hover-bg: #404658; - --phoenix-table-hover-color: #fff; - --phoenix-table-striped-bg: #3b4153; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #464b5c; - --phoenix-table-active-color: #fff; - --phoenix-table-border-color: rgba(70, 75, 92, 0.05) -} - -.dark .table-success,.dark .picmo__popupContainer.picmo__light .table-success { - --phoenix-table-bg: #072301; - --phoenix-table-color: #fff; - --phoenix-table-hover-bg: #35b616; - --phoenix-table-hover-color: #fff; - --phoenix-table-striped-bg: #30b410; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #3bb81c; - --phoenix-table-active-color: #fff; - --phoenix-table-border-color: rgba(59, 184, 28, 0.05) -} - -.dark .table-info,.dark .picmo__popupContainer.picmo__light .table-info { - --phoenix-table-bg: #001e2f; - --phoenix-table-color: #fff; - --phoenix-table-hover-bg: #139fed; - --phoenix-table-hover-color: #fff; - --phoenix-table-striped-bg: #0d9cec; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #1aa1ed; - --phoenix-table-active-color: #fff; - --phoenix-table-border-color: rgba(26, 161, 237, 0.05) -} - -.dark .table-warning,.dark .picmo__popupContainer.picmo__light .table-warning { - --phoenix-table-bg: #2e1802; - --phoenix-table-color: #fff; - --phoenix-table-hover-bg: #e7821d; - --phoenix-table-hover-color: #fff; - --phoenix-table-striped-bg: #e67f17; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #e88623; - --phoenix-table-active-color: #fff; - --phoenix-table-border-color: rgba(232, 134, 35, 0.05) -} - -.dark .table-danger,.dark .picmo__popupContainer.picmo__light .table-danger { - --phoenix-table-bg: #2f0600; - --phoenix-table-color: #fff; - --phoenix-table-hover-bg: #ee3113; - --phoenix-table-hover-color: #fff; - --phoenix-table-striped-bg: #ee2b0d; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #ef361a; - --phoenix-table-active-color: #fff; - --phoenix-table-border-color: rgba(239, 54, 26, 0.05) -} - -.dark .table-light,.dark .picmo__popupContainer.picmo__light .table-light { - --phoenix-table-bg: #eff2f6 -} - -.dark .table-dark,.dark .picmo__popupContainer.picmo__light .table-dark { - --phoenix-table-bg: $value -} - -*,*::before,*::after { - -webkit-box-sizing: border-box; - box-sizing: border-box -} - -@media(prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth - } -} - -body { - margin: 0; - font-family: var(--phoenix-body-font-family); - font-size: var(--phoenix-body-font-size); - font-weight: var(--phoenix-body-font-weight); - line-height: var(--phoenix-body-line-height); - color: var(--phoenix-body-color); - text-align: var(--phoenix-body-text-align); - background-color: var(--phoenix-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0,0,0,0) -} - -hr { - margin: 1rem 0; - color: var(--phoenix-gray-200); - border: 0; - border-top: 1px solid; - opacity: 1 -} - -h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1 { - margin-top: 0; - margin-bottom: .25rem; - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - font-weight: 700; - line-height: 1; - color: var(--phoenix-1100) -} - -h1,.h1 { - font-size: calc(1.369140625rem + 1.4296875vw) -} - -@media(min-width: 1200px) { - h1,.h1 { - font-size:2.44140625rem - } -} - -h2,.h2 { - font-size: calc(1.3203125rem + 0.84375vw) -} - -@media(min-width: 1200px) { - h2,.h2 { - font-size:1.953125rem - } -} - -h3,.h3 { - font-size: calc(1.28125rem + 0.375vw) -} - -@media(min-width: 1200px) { - h3,.h3 { - font-size:1.5625rem - } -} - -h4,.h4 { - font-size: 1.25rem -} - -h5,.h5 { - font-size: 1rem -} - -h6,.h6 { - font-size: 0.8rem -} - -p { - margin-top: 0; - margin-bottom: 1rem -} - -abbr[title] { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - cursor: help; - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit -} - -ol,ul { - padding-left: 2rem -} - -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: 800 -} - -small,.small { - font-size: 75% -} - -mark,.mark { - padding: .1875em; - background-color: var(--phoenix-highlight-bg) -} - -sub,sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline -} - -sub { - bottom: -0.25em -} - -sup { - top: -0.5em -} - -a { - color: var(--phoenix-link-color); - text-decoration: none -} - -a:hover { - color: var(--phoenix-link-hover-color); - text-decoration: underline -} - -a:not([href]):not([class]),a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none -} - -pre,code,kbd,samp { - font-family: var(--phoenix-font-monospace); - font-size: 1em -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 75% -} - -pre code { - font-size: inherit; - color: inherit; - word-break: normal -} - -code { - font-size: 75%; - color: var(--phoenix-code-color); - word-wrap: break-word -} - -a>code { - color: inherit -} - -kbd { - padding: .1875rem .375rem; - font-size: 75%; - color: var(--phoenix-body-bg); - background-color: var(--phoenix-body-color); - border-radius: .25rem -} - -kbd kbd { - padding: 0; - font-size: 1em -} - -figure { - margin: 0 0 1rem -} - -img,svg { - vertical-align: middle -} - -table { - caption-side: bottom; - border-collapse: collapse -} - -caption { - padding-top: 1rem; - padding-bottom: 1rem; - color: #8a94ad; - text-align: left -} - -th { - font-weight: 800; - text-align: inherit; - text-align: -webkit-match-parent -} - -thead,tbody,tfoot,tr,td,th { - border-color: inherit; - border-style: solid; - border-width: 0 -} - -label { - display: inline-block -} - -button { - border-radius: 0 -} - -button:focus:not(:focus-visible) { - outline: 0 -} - -input,button,select,optgroup,textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit -} - -button,select { - text-transform: none -} - -[role=button] { - cursor: pointer -} - -select { - word-wrap: normal -} - -select:disabled { - opacity: 1 -} - -[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { - display: none !important -} - -button,[type=button],[type=reset],[type=submit] { - -webkit-appearance: button -} - -button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled) { - cursor: pointer -} - -::-moz-focus-inner { - padding: 0; - border-style: none -} - -textarea { - resize: vertical -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0 -} - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: .5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit -} - -@media(min-width: 1200px) { - legend { - font-size:1.5rem - } -} - -legend+* { - clear: left -} - -::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field { - padding: 0 -} - -::-webkit-inner-spin-button { - height: auto -} - -[type=search] { - outline-offset: -2px; - -webkit-appearance: textfield -} - -::-webkit-search-decoration { - -webkit-appearance: none -} - -::-webkit-color-swatch-wrapper { - padding: 0 -} - -::file-selector-button { - font: inherit; - -webkit-appearance: button -} - -output { - display: inline-block -} - -iframe { - border: 0 -} - -summary { - display: list-item; - cursor: pointer -} - -progress { - vertical-align: baseline -} - -[hidden] { - display: none !important -} - -.lead { - font-size: 1.25rem; - font-weight: 600 -} - -.display-1 { - font-size: calc(1.6018371582rem + 4.2220458984vw); - font-weight: 400; - line-height: 1 -} - -@media(min-width: 1200px) { - .display-1 { - font-size:4.768371582rem - } -} - -.display-2 { - font-size: calc(1.5064697266rem + 3.0776367188vw); - font-weight: 400; - line-height: 1 -} - -@media(min-width: 1200px) { - .display-2 { - font-size:3.8146972656rem - } -} - -.display-3 { - font-size: calc(1.4301757813rem + 2.162109375vw); - font-weight: 400; - line-height: 1 -} - -@media(min-width: 1200px) { - .display-3 { - font-size:3.0517578125rem - } -} - -.display-4 { - font-size: calc(1.369140625rem + 1.4296875vw); - font-weight: 400; - line-height: 1 -} - -@media(min-width: 1200px) { - .display-4 { - font-size:2.44140625rem - } -} - -.display-5 { - font-size: calc(1.3203125rem + 0.84375vw); - font-weight: 400; - line-height: 1 -} - -@media(min-width: 1200px) { - .display-5 { - font-size:1.953125rem - } -} - -.display-6 { - font-size: calc(1.28125rem + 0.375vw); - font-weight: 400; - line-height: 1 -} - -@media(min-width: 1200px) { - .display-6 { - font-size:1.5625rem - } -} - -.list-unstyled { - padding-left: 0; - list-style: none -} - -.list-inline { - padding-left: 0; - list-style: none -} - -.list-inline-item { - display: inline-block -} - -.list-inline-item:not(:last-child) { - margin-right: .5rem -} - -.initialism { - font-size: 75%; - text-transform: uppercase -} - -.blockquote { - margin-bottom: 1rem; - font-size: 1.2rem -} - -.blockquote>:last-child { - margin-bottom: 0 -} - -.blockquote-footer { - margin-top: -1rem; - margin-bottom: 1rem; - font-size: 75%; - color: #6e7891 -} - -.blockquote-footer::before { - content: "— " -} - -.img-fluid { - max-width: 100%; - height: auto -} - -.img-thumbnail { - padding: .25rem; - background-color: var(--phoenix-thumbnail-bg); - border: 3px solid var(--phoenix-thumbnail-bg); - border-radius: .375rem; - -webkit-box-shadow: 0 .125rem .25rem rgba(0,0,0,.075); - box-shadow: 0 .125rem .25rem rgba(0,0,0,.075); - max-width: 100%; - height: auto -} - -.figure { - display: inline-block -} - -.figure-img { - margin-bottom: .5rem; - line-height: 1 -} - -.figure-caption { - font-size: 75%; - color: #6e7891 -} - -.container,.product-filter-container,.container-fluid,.container-small-xl,.container-small-lg,.container-small-md,.container-small-sm,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm { - --phoenix-gutter-x: 2rem; - --phoenix-gutter-y: 0; - width: 100%; - padding-right: calc(var(--phoenix-gutter-x)*.5); - padding-left: calc(var(--phoenix-gutter-x)*.5); - margin-right: auto; - margin-left: auto -} - -@media(min-width: 576px) { - .container-sm,.container,.product-filter-container { - max-width:540px - } -} - -@media(min-width: 768px) { - .container-md,.container-sm,.container,.product-filter-container { - max-width:720px - } -} - -@media(min-width: 992px) { - .container-lg,.container-md,.container-sm,.container,.product-filter-container { - max-width:960px - } -} - -@media(min-width: 1200px) { - .container-xl,.container-lg,.container-md,.container-sm,.container,.product-filter-container { - max-width:1184px - } -} - -@media(min-width: 1540px) { - .container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container,.product-filter-container { - max-width:1678px - } -} - -.row { - --phoenix-gutter-x: 2rem; - --phoenix-gutter-y: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-top: calc(-1*var(--phoenix-gutter-y)); - margin-right: calc(-0.5*var(--phoenix-gutter-x)); - margin-left: calc(-0.5*var(--phoenix-gutter-x)) -} - -.row>* { - -ms-flex-negative: 0; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--phoenix-gutter-x)*.5); - padding-left: calc(var(--phoenix-gutter-x)*.5); - margin-top: var(--phoenix-gutter-y) -} - -.col { - -webkit-box-flex: 1; - -ms-flex: 1 0 0%; - flex: 1 0 0% -} - -.row-cols-auto>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto -} - -.row-cols-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% -} - -.row-cols-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% -} - -.row-cols-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.3333333333% -} - -.row-cols-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% -} - -.row-cols-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 20% -} - -.row-cols-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.6666666667% -} - -.col-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto -} - -.col-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 8.33333333% -} - -.col-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.66666667% -} - -.col-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% -} - -.col-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.33333333% -} - -.col-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 41.66666667% -} - -.col-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% -} - -.col-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 58.33333333% -} - -.col-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 66.66666667% -} - -.col-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 75% -} - -.col-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 83.33333333% -} - -.col-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 91.66666667% -} - -.col-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% -} - -.offset-1 { - margin-left: 8.33333333% -} - -.offset-2 { - margin-left: 16.66666667% -} - -.offset-3 { - margin-left: 25% -} - -.offset-4 { - margin-left: 33.33333333% -} - -.offset-5 { - margin-left: 41.66666667% -} - -.offset-6 { - margin-left: 50% -} - -.offset-7 { - margin-left: 58.33333333% -} - -.offset-8 { - margin-left: 66.66666667% -} - -.offset-9 { - margin-left: 75% -} - -.offset-10 { - margin-left: 83.33333333% -} - -.offset-11 { - margin-left: 91.66666667% -} - -.g-0,.gx-0 { - --phoenix-gutter-x: 0 -} - -.g-0,.gy-0 { - --phoenix-gutter-y: 0 -} - -.g-1,.gx-1 { - --phoenix-gutter-x: 0.25rem -} - -.g-1,.gy-1 { - --phoenix-gutter-y: 0.25rem -} - -.g-2,.gx-2 { - --phoenix-gutter-x: 0.5rem -} - -.g-2,.gy-2 { - --phoenix-gutter-y: 0.5rem -} - -.g-3,.gx-3 { - --phoenix-gutter-x: 1rem -} - -.g-3,.gy-3 { - --phoenix-gutter-y: 1rem -} - -.g-4,.gx-4 { - --phoenix-gutter-x: 1.5rem -} - -.g-4,.gy-4 { - --phoenix-gutter-y: 1.5rem -} - -.g-5,.gx-5 { - --phoenix-gutter-x: 2rem -} - -.g-5,.gy-5 { - --phoenix-gutter-y: 2rem -} - -.g-6,.gx-6 { - --phoenix-gutter-x: 2.5rem -} - -.g-6,.gy-6 { - --phoenix-gutter-y: 2.5rem -} - -.g-7,.gx-7 { - --phoenix-gutter-x: 3rem -} - -.g-7,.gy-7 { - --phoenix-gutter-y: 3rem -} - -.g-8,.gx-8 { - --phoenix-gutter-x: 3.5rem -} - -.g-8,.gy-8 { - --phoenix-gutter-y: 3.5rem -} - -.g-9,.gx-9 { - --phoenix-gutter-x: 4rem -} - -.g-9,.gy-9 { - --phoenix-gutter-y: 4rem -} - -.g-10,.gx-10 { - --phoenix-gutter-x: 4.5rem -} - -.g-10,.gy-10 { - --phoenix-gutter-y: 4.5rem -} - -.g-11,.gx-11 { - --phoenix-gutter-x: 5rem -} - -.g-11,.gy-11 { - --phoenix-gutter-y: 5rem -} - -.g-12,.gx-12 { - --phoenix-gutter-x: 6rem -} - -.g-12,.gy-12 { - --phoenix-gutter-y: 6rem -} - -.g-13,.gx-13 { - --phoenix-gutter-x: 6.5rem -} - -.g-13,.gy-13 { - --phoenix-gutter-y: 6.5rem -} - -.g-14,.gx-14 { - --phoenix-gutter-x: 7rem -} - -.g-14,.gy-14 { - --phoenix-gutter-y: 7rem -} - -.g-15,.gx-15 { - --phoenix-gutter-x: 7.5rem -} - -.g-15,.gy-15 { - --phoenix-gutter-y: 7.5rem -} - -.g-card,.gx-card { - --phoenix-gutter-x: 3rem -} - -.g-card,.gy-card { - --phoenix-gutter-y: 3rem -} - -@media(min-width: 576px) { - .col-sm { - -webkit-box-flex:1; - -ms-flex: 1 0 0%; - flex: 1 0 0% - } - - .row-cols-sm-auto>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .row-cols-sm-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .row-cols-sm-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .row-cols-sm-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.3333333333% - } - - .row-cols-sm-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .row-cols-sm-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 20% - } - - .row-cols-sm-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.6666666667% - } - - .col-sm-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .col-sm-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 8.33333333% - } - - .col-sm-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.66666667% - } - - .col-sm-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .col-sm-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.33333333% - } - - .col-sm-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 41.66666667% - } - - .col-sm-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .col-sm-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 58.33333333% - } - - .col-sm-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 66.66666667% - } - - .col-sm-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 75% - } - - .col-sm-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 83.33333333% - } - - .col-sm-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 91.66666667% - } - - .col-sm-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .offset-sm-0 { - margin-left: 0 - } - - .offset-sm-1 { - margin-left: 8.33333333% - } - - .offset-sm-2 { - margin-left: 16.66666667% - } - - .offset-sm-3 { - margin-left: 25% - } - - .offset-sm-4 { - margin-left: 33.33333333% - } - - .offset-sm-5 { - margin-left: 41.66666667% - } - - .offset-sm-6 { - margin-left: 50% - } - - .offset-sm-7 { - margin-left: 58.33333333% - } - - .offset-sm-8 { - margin-left: 66.66666667% - } - - .offset-sm-9 { - margin-left: 75% - } - - .offset-sm-10 { - margin-left: 83.33333333% - } - - .offset-sm-11 { - margin-left: 91.66666667% - } - - .g-sm-0,.gx-sm-0 { - --phoenix-gutter-x: 0 - } - - .g-sm-0,.gy-sm-0 { - --phoenix-gutter-y: 0 - } - - .g-sm-1,.gx-sm-1 { - --phoenix-gutter-x: 0.25rem - } - - .g-sm-1,.gy-sm-1 { - --phoenix-gutter-y: 0.25rem - } - - .g-sm-2,.gx-sm-2 { - --phoenix-gutter-x: 0.5rem - } - - .g-sm-2,.gy-sm-2 { - --phoenix-gutter-y: 0.5rem - } - - .g-sm-3,.gx-sm-3 { - --phoenix-gutter-x: 1rem - } - - .g-sm-3,.gy-sm-3 { - --phoenix-gutter-y: 1rem - } - - .g-sm-4,.gx-sm-4 { - --phoenix-gutter-x: 1.5rem - } - - .g-sm-4,.gy-sm-4 { - --phoenix-gutter-y: 1.5rem - } - - .g-sm-5,.gx-sm-5 { - --phoenix-gutter-x: 2rem - } - - .g-sm-5,.gy-sm-5 { - --phoenix-gutter-y: 2rem - } - - .g-sm-6,.gx-sm-6 { - --phoenix-gutter-x: 2.5rem - } - - .g-sm-6,.gy-sm-6 { - --phoenix-gutter-y: 2.5rem - } - - .g-sm-7,.gx-sm-7 { - --phoenix-gutter-x: 3rem - } - - .g-sm-7,.gy-sm-7 { - --phoenix-gutter-y: 3rem - } - - .g-sm-8,.gx-sm-8 { - --phoenix-gutter-x: 3.5rem - } - - .g-sm-8,.gy-sm-8 { - --phoenix-gutter-y: 3.5rem - } - - .g-sm-9,.gx-sm-9 { - --phoenix-gutter-x: 4rem - } - - .g-sm-9,.gy-sm-9 { - --phoenix-gutter-y: 4rem - } - - .g-sm-10,.gx-sm-10 { - --phoenix-gutter-x: 4.5rem - } - - .g-sm-10,.gy-sm-10 { - --phoenix-gutter-y: 4.5rem - } - - .g-sm-11,.gx-sm-11 { - --phoenix-gutter-x: 5rem - } - - .g-sm-11,.gy-sm-11 { - --phoenix-gutter-y: 5rem - } - - .g-sm-12,.gx-sm-12 { - --phoenix-gutter-x: 6rem - } - - .g-sm-12,.gy-sm-12 { - --phoenix-gutter-y: 6rem - } - - .g-sm-13,.gx-sm-13 { - --phoenix-gutter-x: 6.5rem - } - - .g-sm-13,.gy-sm-13 { - --phoenix-gutter-y: 6.5rem - } - - .g-sm-14,.gx-sm-14 { - --phoenix-gutter-x: 7rem - } - - .g-sm-14,.gy-sm-14 { - --phoenix-gutter-y: 7rem - } - - .g-sm-15,.gx-sm-15 { - --phoenix-gutter-x: 7.5rem - } - - .g-sm-15,.gy-sm-15 { - --phoenix-gutter-y: 7.5rem - } - - .g-sm-card,.gx-sm-card { - --phoenix-gutter-x: 3rem - } - - .g-sm-card,.gy-sm-card { - --phoenix-gutter-y: 3rem - } -} - -@media(min-width: 768px) { - .col-md { - -webkit-box-flex:1; - -ms-flex: 1 0 0%; - flex: 1 0 0% - } - - .row-cols-md-auto>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .row-cols-md-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .row-cols-md-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .row-cols-md-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.3333333333% - } - - .row-cols-md-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .row-cols-md-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 20% - } - - .row-cols-md-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.6666666667% - } - - .col-md-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .col-md-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 8.33333333% - } - - .col-md-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.66666667% - } - - .col-md-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .col-md-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.33333333% - } - - .col-md-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 41.66666667% - } - - .col-md-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .col-md-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 58.33333333% - } - - .col-md-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 66.66666667% - } - - .col-md-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 75% - } - - .col-md-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 83.33333333% - } - - .col-md-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 91.66666667% - } - - .col-md-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .offset-md-0 { - margin-left: 0 - } - - .offset-md-1 { - margin-left: 8.33333333% - } - - .offset-md-2 { - margin-left: 16.66666667% - } - - .offset-md-3 { - margin-left: 25% - } - - .offset-md-4 { - margin-left: 33.33333333% - } - - .offset-md-5 { - margin-left: 41.66666667% - } - - .offset-md-6 { - margin-left: 50% - } - - .offset-md-7 { - margin-left: 58.33333333% - } - - .offset-md-8 { - margin-left: 66.66666667% - } - - .offset-md-9 { - margin-left: 75% - } - - .offset-md-10 { - margin-left: 83.33333333% - } - - .offset-md-11 { - margin-left: 91.66666667% - } - - .g-md-0,.gx-md-0 { - --phoenix-gutter-x: 0 - } - - .g-md-0,.gy-md-0 { - --phoenix-gutter-y: 0 - } - - .g-md-1,.gx-md-1 { - --phoenix-gutter-x: 0.25rem - } - - .g-md-1,.gy-md-1 { - --phoenix-gutter-y: 0.25rem - } - - .g-md-2,.gx-md-2 { - --phoenix-gutter-x: 0.5rem - } - - .g-md-2,.gy-md-2 { - --phoenix-gutter-y: 0.5rem - } - - .g-md-3,.gx-md-3 { - --phoenix-gutter-x: 1rem - } - - .g-md-3,.gy-md-3 { - --phoenix-gutter-y: 1rem - } - - .g-md-4,.gx-md-4 { - --phoenix-gutter-x: 1.5rem - } - - .g-md-4,.gy-md-4 { - --phoenix-gutter-y: 1.5rem - } - - .g-md-5,.gx-md-5 { - --phoenix-gutter-x: 2rem - } - - .g-md-5,.gy-md-5 { - --phoenix-gutter-y: 2rem - } - - .g-md-6,.gx-md-6 { - --phoenix-gutter-x: 2.5rem - } - - .g-md-6,.gy-md-6 { - --phoenix-gutter-y: 2.5rem - } - - .g-md-7,.gx-md-7 { - --phoenix-gutter-x: 3rem - } - - .g-md-7,.gy-md-7 { - --phoenix-gutter-y: 3rem - } - - .g-md-8,.gx-md-8 { - --phoenix-gutter-x: 3.5rem - } - - .g-md-8,.gy-md-8 { - --phoenix-gutter-y: 3.5rem - } - - .g-md-9,.gx-md-9 { - --phoenix-gutter-x: 4rem - } - - .g-md-9,.gy-md-9 { - --phoenix-gutter-y: 4rem - } - - .g-md-10,.gx-md-10 { - --phoenix-gutter-x: 4.5rem - } - - .g-md-10,.gy-md-10 { - --phoenix-gutter-y: 4.5rem - } - - .g-md-11,.gx-md-11 { - --phoenix-gutter-x: 5rem - } - - .g-md-11,.gy-md-11 { - --phoenix-gutter-y: 5rem - } - - .g-md-12,.gx-md-12 { - --phoenix-gutter-x: 6rem - } - - .g-md-12,.gy-md-12 { - --phoenix-gutter-y: 6rem - } - - .g-md-13,.gx-md-13 { - --phoenix-gutter-x: 6.5rem - } - - .g-md-13,.gy-md-13 { - --phoenix-gutter-y: 6.5rem - } - - .g-md-14,.gx-md-14 { - --phoenix-gutter-x: 7rem - } - - .g-md-14,.gy-md-14 { - --phoenix-gutter-y: 7rem - } - - .g-md-15,.gx-md-15 { - --phoenix-gutter-x: 7.5rem - } - - .g-md-15,.gy-md-15 { - --phoenix-gutter-y: 7.5rem - } - - .g-md-card,.gx-md-card { - --phoenix-gutter-x: 3rem - } - - .g-md-card,.gy-md-card { - --phoenix-gutter-y: 3rem - } -} - -@media(min-width: 992px) { - .col-lg { - -webkit-box-flex:1; - -ms-flex: 1 0 0%; - flex: 1 0 0% - } - - .row-cols-lg-auto>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .row-cols-lg-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .row-cols-lg-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .row-cols-lg-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.3333333333% - } - - .row-cols-lg-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .row-cols-lg-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 20% - } - - .row-cols-lg-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.6666666667% - } - - .col-lg-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .col-lg-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 8.33333333% - } - - .col-lg-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.66666667% - } - - .col-lg-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .col-lg-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.33333333% - } - - .col-lg-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 41.66666667% - } - - .col-lg-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .col-lg-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 58.33333333% - } - - .col-lg-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 66.66666667% - } - - .col-lg-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 75% - } - - .col-lg-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 83.33333333% - } - - .col-lg-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 91.66666667% - } - - .col-lg-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .offset-lg-0 { - margin-left: 0 - } - - .offset-lg-1 { - margin-left: 8.33333333% - } - - .offset-lg-2 { - margin-left: 16.66666667% - } - - .offset-lg-3 { - margin-left: 25% - } - - .offset-lg-4 { - margin-left: 33.33333333% - } - - .offset-lg-5 { - margin-left: 41.66666667% - } - - .offset-lg-6 { - margin-left: 50% - } - - .offset-lg-7 { - margin-left: 58.33333333% - } - - .offset-lg-8 { - margin-left: 66.66666667% - } - - .offset-lg-9 { - margin-left: 75% - } - - .offset-lg-10 { - margin-left: 83.33333333% - } - - .offset-lg-11 { - margin-left: 91.66666667% - } - - .g-lg-0,.gx-lg-0 { - --phoenix-gutter-x: 0 - } - - .g-lg-0,.gy-lg-0 { - --phoenix-gutter-y: 0 - } - - .g-lg-1,.gx-lg-1 { - --phoenix-gutter-x: 0.25rem - } - - .g-lg-1,.gy-lg-1 { - --phoenix-gutter-y: 0.25rem - } - - .g-lg-2,.gx-lg-2 { - --phoenix-gutter-x: 0.5rem - } - - .g-lg-2,.gy-lg-2 { - --phoenix-gutter-y: 0.5rem - } - - .g-lg-3,.gx-lg-3 { - --phoenix-gutter-x: 1rem - } - - .g-lg-3,.gy-lg-3 { - --phoenix-gutter-y: 1rem - } - - .g-lg-4,.gx-lg-4 { - --phoenix-gutter-x: 1.5rem - } - - .g-lg-4,.gy-lg-4 { - --phoenix-gutter-y: 1.5rem - } - - .g-lg-5,.gx-lg-5 { - --phoenix-gutter-x: 2rem - } - - .g-lg-5,.gy-lg-5 { - --phoenix-gutter-y: 2rem - } - - .g-lg-6,.gx-lg-6 { - --phoenix-gutter-x: 2.5rem - } - - .g-lg-6,.gy-lg-6 { - --phoenix-gutter-y: 2.5rem - } - - .g-lg-7,.gx-lg-7 { - --phoenix-gutter-x: 3rem - } - - .g-lg-7,.gy-lg-7 { - --phoenix-gutter-y: 3rem - } - - .g-lg-8,.gx-lg-8 { - --phoenix-gutter-x: 3.5rem - } - - .g-lg-8,.gy-lg-8 { - --phoenix-gutter-y: 3.5rem - } - - .g-lg-9,.gx-lg-9 { - --phoenix-gutter-x: 4rem - } - - .g-lg-9,.gy-lg-9 { - --phoenix-gutter-y: 4rem - } - - .g-lg-10,.gx-lg-10 { - --phoenix-gutter-x: 4.5rem - } - - .g-lg-10,.gy-lg-10 { - --phoenix-gutter-y: 4.5rem - } - - .g-lg-11,.gx-lg-11 { - --phoenix-gutter-x: 5rem - } - - .g-lg-11,.gy-lg-11 { - --phoenix-gutter-y: 5rem - } - - .g-lg-12,.gx-lg-12 { - --phoenix-gutter-x: 6rem - } - - .g-lg-12,.gy-lg-12 { - --phoenix-gutter-y: 6rem - } - - .g-lg-13,.gx-lg-13 { - --phoenix-gutter-x: 6.5rem - } - - .g-lg-13,.gy-lg-13 { - --phoenix-gutter-y: 6.5rem - } - - .g-lg-14,.gx-lg-14 { - --phoenix-gutter-x: 7rem - } - - .g-lg-14,.gy-lg-14 { - --phoenix-gutter-y: 7rem - } - - .g-lg-15,.gx-lg-15 { - --phoenix-gutter-x: 7.5rem - } - - .g-lg-15,.gy-lg-15 { - --phoenix-gutter-y: 7.5rem - } - - .g-lg-card,.gx-lg-card { - --phoenix-gutter-x: 3rem - } - - .g-lg-card,.gy-lg-card { - --phoenix-gutter-y: 3rem - } -} - -@media(min-width: 1200px) { - .col-xl { - -webkit-box-flex:1; - -ms-flex: 1 0 0%; - flex: 1 0 0% - } - - .row-cols-xl-auto>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .row-cols-xl-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .row-cols-xl-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .row-cols-xl-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.3333333333% - } - - .row-cols-xl-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .row-cols-xl-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 20% - } - - .row-cols-xl-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.6666666667% - } - - .col-xl-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .col-xl-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 8.33333333% - } - - .col-xl-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.66666667% - } - - .col-xl-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .col-xl-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.33333333% - } - - .col-xl-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 41.66666667% - } - - .col-xl-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .col-xl-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 58.33333333% - } - - .col-xl-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 66.66666667% - } - - .col-xl-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 75% - } - - .col-xl-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 83.33333333% - } - - .col-xl-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 91.66666667% - } - - .col-xl-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .offset-xl-0 { - margin-left: 0 - } - - .offset-xl-1 { - margin-left: 8.33333333% - } - - .offset-xl-2 { - margin-left: 16.66666667% - } - - .offset-xl-3 { - margin-left: 25% - } - - .offset-xl-4 { - margin-left: 33.33333333% - } - - .offset-xl-5 { - margin-left: 41.66666667% - } - - .offset-xl-6 { - margin-left: 50% - } - - .offset-xl-7 { - margin-left: 58.33333333% - } - - .offset-xl-8 { - margin-left: 66.66666667% - } - - .offset-xl-9 { - margin-left: 75% - } - - .offset-xl-10 { - margin-left: 83.33333333% - } - - .offset-xl-11 { - margin-left: 91.66666667% - } - - .g-xl-0,.gx-xl-0 { - --phoenix-gutter-x: 0 - } - - .g-xl-0,.gy-xl-0 { - --phoenix-gutter-y: 0 - } - - .g-xl-1,.gx-xl-1 { - --phoenix-gutter-x: 0.25rem - } - - .g-xl-1,.gy-xl-1 { - --phoenix-gutter-y: 0.25rem - } - - .g-xl-2,.gx-xl-2 { - --phoenix-gutter-x: 0.5rem - } - - .g-xl-2,.gy-xl-2 { - --phoenix-gutter-y: 0.5rem - } - - .g-xl-3,.gx-xl-3 { - --phoenix-gutter-x: 1rem - } - - .g-xl-3,.gy-xl-3 { - --phoenix-gutter-y: 1rem - } - - .g-xl-4,.gx-xl-4 { - --phoenix-gutter-x: 1.5rem - } - - .g-xl-4,.gy-xl-4 { - --phoenix-gutter-y: 1.5rem - } - - .g-xl-5,.gx-xl-5 { - --phoenix-gutter-x: 2rem - } - - .g-xl-5,.gy-xl-5 { - --phoenix-gutter-y: 2rem - } - - .g-xl-6,.gx-xl-6 { - --phoenix-gutter-x: 2.5rem - } - - .g-xl-6,.gy-xl-6 { - --phoenix-gutter-y: 2.5rem - } - - .g-xl-7,.gx-xl-7 { - --phoenix-gutter-x: 3rem - } - - .g-xl-7,.gy-xl-7 { - --phoenix-gutter-y: 3rem - } - - .g-xl-8,.gx-xl-8 { - --phoenix-gutter-x: 3.5rem - } - - .g-xl-8,.gy-xl-8 { - --phoenix-gutter-y: 3.5rem - } - - .g-xl-9,.gx-xl-9 { - --phoenix-gutter-x: 4rem - } - - .g-xl-9,.gy-xl-9 { - --phoenix-gutter-y: 4rem - } - - .g-xl-10,.gx-xl-10 { - --phoenix-gutter-x: 4.5rem - } - - .g-xl-10,.gy-xl-10 { - --phoenix-gutter-y: 4.5rem - } - - .g-xl-11,.gx-xl-11 { - --phoenix-gutter-x: 5rem - } - - .g-xl-11,.gy-xl-11 { - --phoenix-gutter-y: 5rem - } - - .g-xl-12,.gx-xl-12 { - --phoenix-gutter-x: 6rem - } - - .g-xl-12,.gy-xl-12 { - --phoenix-gutter-y: 6rem - } - - .g-xl-13,.gx-xl-13 { - --phoenix-gutter-x: 6.5rem - } - - .g-xl-13,.gy-xl-13 { - --phoenix-gutter-y: 6.5rem - } - - .g-xl-14,.gx-xl-14 { - --phoenix-gutter-x: 7rem - } - - .g-xl-14,.gy-xl-14 { - --phoenix-gutter-y: 7rem - } - - .g-xl-15,.gx-xl-15 { - --phoenix-gutter-x: 7.5rem - } - - .g-xl-15,.gy-xl-15 { - --phoenix-gutter-y: 7.5rem - } - - .g-xl-card,.gx-xl-card { - --phoenix-gutter-x: 3rem - } - - .g-xl-card,.gy-xl-card { - --phoenix-gutter-y: 3rem - } -} - -@media(min-width: 1540px) { - .col-xxl { - -webkit-box-flex:1; - -ms-flex: 1 0 0%; - flex: 1 0 0% - } - - .row-cols-xxl-auto>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .row-cols-xxl-1>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .row-cols-xxl-2>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .row-cols-xxl-3>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.3333333333% - } - - .row-cols-xxl-4>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .row-cols-xxl-5>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 20% - } - - .row-cols-xxl-6>* { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.6666666667% - } - - .col-xxl-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto - } - - .col-xxl-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 8.33333333% - } - - .col-xxl-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 16.66666667% - } - - .col-xxl-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 25% - } - - .col-xxl-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 33.33333333% - } - - .col-xxl-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 41.66666667% - } - - .col-xxl-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 50% - } - - .col-xxl-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 58.33333333% - } - - .col-xxl-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 66.66666667% - } - - .col-xxl-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 75% - } - - .col-xxl-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 83.33333333% - } - - .col-xxl-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 91.66666667% - } - - .col-xxl-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 100% - } - - .offset-xxl-0 { - margin-left: 0 - } - - .offset-xxl-1 { - margin-left: 8.33333333% - } - - .offset-xxl-2 { - margin-left: 16.66666667% - } - - .offset-xxl-3 { - margin-left: 25% - } - - .offset-xxl-4 { - margin-left: 33.33333333% - } - - .offset-xxl-5 { - margin-left: 41.66666667% - } - - .offset-xxl-6 { - margin-left: 50% - } - - .offset-xxl-7 { - margin-left: 58.33333333% - } - - .offset-xxl-8 { - margin-left: 66.66666667% - } - - .offset-xxl-9 { - margin-left: 75% - } - - .offset-xxl-10 { - margin-left: 83.33333333% - } - - .offset-xxl-11 { - margin-left: 91.66666667% - } - - .g-xxl-0,.gx-xxl-0 { - --phoenix-gutter-x: 0 - } - - .g-xxl-0,.gy-xxl-0 { - --phoenix-gutter-y: 0 - } - - .g-xxl-1,.gx-xxl-1 { - --phoenix-gutter-x: 0.25rem - } - - .g-xxl-1,.gy-xxl-1 { - --phoenix-gutter-y: 0.25rem - } - - .g-xxl-2,.gx-xxl-2 { - --phoenix-gutter-x: 0.5rem - } - - .g-xxl-2,.gy-xxl-2 { - --phoenix-gutter-y: 0.5rem - } - - .g-xxl-3,.gx-xxl-3 { - --phoenix-gutter-x: 1rem - } - - .g-xxl-3,.gy-xxl-3 { - --phoenix-gutter-y: 1rem - } - - .g-xxl-4,.gx-xxl-4 { - --phoenix-gutter-x: 1.5rem - } - - .g-xxl-4,.gy-xxl-4 { - --phoenix-gutter-y: 1.5rem - } - - .g-xxl-5,.gx-xxl-5 { - --phoenix-gutter-x: 2rem - } - - .g-xxl-5,.gy-xxl-5 { - --phoenix-gutter-y: 2rem - } - - .g-xxl-6,.gx-xxl-6 { - --phoenix-gutter-x: 2.5rem - } - - .g-xxl-6,.gy-xxl-6 { - --phoenix-gutter-y: 2.5rem - } - - .g-xxl-7,.gx-xxl-7 { - --phoenix-gutter-x: 3rem - } - - .g-xxl-7,.gy-xxl-7 { - --phoenix-gutter-y: 3rem - } - - .g-xxl-8,.gx-xxl-8 { - --phoenix-gutter-x: 3.5rem - } - - .g-xxl-8,.gy-xxl-8 { - --phoenix-gutter-y: 3.5rem - } - - .g-xxl-9,.gx-xxl-9 { - --phoenix-gutter-x: 4rem - } - - .g-xxl-9,.gy-xxl-9 { - --phoenix-gutter-y: 4rem - } - - .g-xxl-10,.gx-xxl-10 { - --phoenix-gutter-x: 4.5rem - } - - .g-xxl-10,.gy-xxl-10 { - --phoenix-gutter-y: 4.5rem - } - - .g-xxl-11,.gx-xxl-11 { - --phoenix-gutter-x: 5rem - } - - .g-xxl-11,.gy-xxl-11 { - --phoenix-gutter-y: 5rem - } - - .g-xxl-12,.gx-xxl-12 { - --phoenix-gutter-x: 6rem - } - - .g-xxl-12,.gy-xxl-12 { - --phoenix-gutter-y: 6rem - } - - .g-xxl-13,.gx-xxl-13 { - --phoenix-gutter-x: 6.5rem - } - - .g-xxl-13,.gy-xxl-13 { - --phoenix-gutter-y: 6.5rem - } - - .g-xxl-14,.gx-xxl-14 { - --phoenix-gutter-x: 7rem - } - - .g-xxl-14,.gy-xxl-14 { - --phoenix-gutter-y: 7rem - } - - .g-xxl-15,.gx-xxl-15 { - --phoenix-gutter-x: 7.5rem - } - - .g-xxl-15,.gy-xxl-15 { - --phoenix-gutter-y: 7.5rem - } - - .g-xxl-card,.gx-xxl-card { - --phoenix-gutter-x: 3rem - } - - .g-xxl-card,.gy-xxl-card { - --phoenix-gutter-y: 3rem - } -} - -.table { - --phoenix-table-color: var(--phoenix-gray-900); - --phoenix-table-bg: transparent; - --phoenix-table-border-color: #e3e6ed; - --phoenix-table-accent-bg: transparent; - --phoenix-table-striped-color: var(--phoenix-gray-1000); - --phoenix-table-striped-bg: rgba(var(--phoenix-1100-rgb), 0.07); - --phoenix-table-active-color: var(--phoenix-gray-900); - --phoenix-table-active-bg: rgba(0, 0, 0, 0.1); - --phoenix-table-hover-color: var(--phoenix-black); - --phoenix-table-hover-bg: rgba(var(--phoenix-primary-600-rgb), 0.07); - width: 100%; - margin-bottom: 1rem; - color: var(--phoenix-table-color); - vertical-align: top; - border-color: var(--phoenix-table-border-color) -} - -.table>:not(caption)>*>* { - padding: 1rem .5rem; - background-color: var(--phoenix-table-bg); - border-bottom-width: 1px; - -webkit-box-shadow: inset 0 0 0 9999px var(--phoenix-table-accent-bg); - box-shadow: inset 0 0 0 9999px var(--phoenix-table-accent-bg) -} - -.table>tbody { - vertical-align: inherit -} - -.table>thead { - vertical-align: bottom -} - -.table-group-divider { - border-top: 2px solid inherit -} - -.caption-top { - caption-side: top -} - -.table-sm>:not(caption)>*>* { - padding: .25rem .25rem -} - -.table-bordered>:not(caption)>* { - border-width: 1px 0 -} - -.table-bordered>:not(caption)>*>* { - border-width: 0 1px -} - -.table-borderless>:not(caption)>*>* { - border-bottom-width: 0 -} - -.table-borderless>:not(:first-child) { - border-top-width: 0 -} - -.table-striped>tbody>tr:nth-of-type(even)>* { - --phoenix-table-accent-bg: var(--phoenix-table-striped-bg); - color: var(--phoenix-table-striped-color) -} - -.table-striped-columns>:not(caption)>tr>:nth-child(even) { - --phoenix-table-accent-bg: var(--phoenix-table-striped-bg); - color: var(--phoenix-table-striped-color) -} - -.table-active { - --phoenix-table-accent-bg: var(--phoenix-table-active-bg); - color: var(--phoenix-table-active-color) -} - -.table-hover>tbody>tr:hover>* { - --phoenix-table-accent-bg: var(--phoenix-table-hover-bg); - color: var(--phoenix-table-hover-color) -} - -.table-primary { - --phoenix-table-color: #000000; - --phoenix-table-bg: #d7e3ff; - --phoenix-table-border-color: #c2cce6; - --phoenix-table-striped-bg: #ccd8f2; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #c2cce6; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #c7d2ec; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-secondary { - --phoenix-table-color: #000000; - --phoenix-table-bg: #d6d7db; - --phoenix-table-border-color: #c1c2c5; - --phoenix-table-striped-bg: #cbccd0; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #c1c2c5; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #c6c7cb; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-success { - --phoenix-table-color: #000000; - --phoenix-table-bg: #d3efcd; - --phoenix-table-border-color: #bed7b9; - --phoenix-table-striped-bg: #c8e3c3; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #bed7b9; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #c3ddbe; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-info { - --phoenix-table-color: #000000; - --phoenix-table-bg: #cceafb; - --phoenix-table-border-color: #b8d3e2; - --phoenix-table-striped-bg: #c2deee; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #b8d3e2; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #bdd8e8; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-warning { - --phoenix-table-color: #000000; - --phoenix-table-bg: #fae4ce; - --phoenix-table-border-color: #e1cdb9; - --phoenix-table-striped-bg: #eed9c4; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #e1cdb9; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #e7d3bf; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-danger { - --phoenix-table-color: #000000; - --phoenix-table-bg: #fbd2cc; - --phoenix-table-border-color: #e2bdb8; - --phoenix-table-striped-bg: #eec8c2; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #e2bdb8; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #e8c2bd; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-light { - --phoenix-table-color: #000000; - --phoenix-table-bg: #eff2f6; - --phoenix-table-border-color: #d7dadd; - --phoenix-table-striped-bg: #e3e6ea; - --phoenix-table-striped-color: #000000; - --phoenix-table-active-bg: #d7dadd; - --phoenix-table-active-color: #000000; - --phoenix-table-hover-bg: #dde0e4; - --phoenix-table-hover-color: #000000; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-dark { - --phoenix-table-color: #fff; - --phoenix-table-bg: #141824; - --phoenix-table-border-color: #2c2f3a; - --phoenix-table-striped-bg: #20242f; - --phoenix-table-striped-color: #fff; - --phoenix-table-active-bg: #2c2f3a; - --phoenix-table-active-color: #fff; - --phoenix-table-hover-bg: #262934; - --phoenix-table-hover-color: #fff; - color: var(--phoenix-table-color); - border-color: var(--phoenix-table-border-color) -} - -.table-responsive { - overflow-x: auto; - -webkit-overflow-scrolling: touch -} - -@media(max-width: 575.98px) { - .table-responsive-sm { - overflow-x:auto; - -webkit-overflow-scrolling: touch - } -} - -@media(max-width: 767.98px) { - .table-responsive-md { - overflow-x:auto; - -webkit-overflow-scrolling: touch - } -} - -@media(max-width: 991.98px) { - .table-responsive-lg { - overflow-x:auto; - -webkit-overflow-scrolling: touch - } -} - -@media(max-width: 1199.98px) { - .table-responsive-xl { - overflow-x:auto; - -webkit-overflow-scrolling: touch - } -} - -@media(max-width: 1539.98px) { - .table-responsive-xxl { - overflow-x:auto; - -webkit-overflow-scrolling: touch - } -} - -.form-label { - margin-bottom: .5rem; - font-size: 0.64rem; - font-weight: 700; - color: var(--phoenix-gray-700) -} - -.col-form-label { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - margin-bottom: 0; - font-size: inherit; - font-weight: 700; - line-height: 1.49; - color: var(--phoenix-gray-700) -} - -.col-form-label-lg { - padding-top: calc(0.75rem + 1px); - padding-bottom: calc(0.75rem + 1px); - font-size: 1rem -} - -.col-form-label-sm { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - font-size: 0.8rem -} - -.form-text { - margin-top: .25rem; - font-size: 75%; - color: #8a94ad -} - -.form-control { - display: block; - width: 100%; - padding: .5rem 1rem; - font-size: 0.8rem; - font-weight: 600; - line-height: 1.49; - color: var(--phoenix-gray-900); - background-color: var(--phoenix-input-bg); - background-clip: padding-box; - border: 1px solid var(--phoenix-input-border-color); - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: .375rem; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0); - box-shadow: inset 0 1px 2px rgba(0,0,0,0); - -webkit-transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -o-transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .form-control { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.form-control[type=file] { - overflow: hidden -} - -.form-control[type=file]:not(:disabled):not([readonly]) { - cursor: pointer -} - -.form-control:focus { - color: var(--phoenix-gray-900); - background-color: var(--phoenix-input-bg); - border-color: #3874ff; - outline: 0; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0),inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25); - box-shadow: inset 0 1px 2px rgba(0,0,0,0),inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) -} - -.form-control::-webkit-date-and-time-value { - height: 1.49em -} - -.form-control::-webkit-input-placeholder { - color: #9fa6bc; - opacity: 1 -} - -.form-control::-moz-placeholder { - color: #9fa6bc; - opacity: 1 -} - -.form-control:-ms-input-placeholder { - color: #9fa6bc; - opacity: 1 -} - -.form-control::-ms-input-placeholder { - color: #9fa6bc; - opacity: 1 -} - -.form-control::placeholder { - color: #9fa6bc; - opacity: 1 -} - -.form-control:disabled { - color: var(--phoenix-gray-500); - background-color: rgba(var(--phoenix-gray-100-rgb), 0.7); - opacity: 1 -} - -.form-control::file-selector-button { - padding: .5rem 1rem; - margin: -0.5rem -1rem; - -webkit-margin-end: 1rem; - margin-inline-end:1rem;color: var(--phoenix-gray-900); - background-color: #eff2f6; - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width:1px;border-radius: 0; - -webkit-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -o-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .form-control::file-selector-button { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: #e3e6ea -} - -.form-control-plaintext { - display: block; - width: 100%; - padding: .5rem 0; - margin-bottom: 0; - line-height: 1.49; - color: #31374a; - background-color: rgba(0,0,0,0); - border: solid rgba(0,0,0,0); - border-width: 1px 0 -} - -.form-control-plaintext:focus { - outline: 0 -} - -.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0 -} - -.form-control-sm { - min-height: calc(1.49em + 0.75rem + 2px); - padding: .375rem 1rem; - font-size: 0.8rem; - border-radius: .375rem -} - -.form-control-sm::file-selector-button { - padding: .375rem 1rem; - margin: -0.375rem -1rem; - -webkit-margin-end: 1rem; - margin-inline-end:1rem} - -.form-control-lg { - min-height: calc(1.49em + 1.5rem + 2px); - padding: .75rem 1rem; - font-size: 1rem; - border-radius: .375rem -} - -.form-control-lg::file-selector-button { - padding: .75rem 1rem; - margin: -0.75rem -1rem; - -webkit-margin-end: 1rem; - margin-inline-end:1rem} - -textarea.form-control { - min-height: calc(1.49em + 1rem + 2px) -} - -textarea.form-control-sm { - min-height: calc(1.49em + 0.75rem + 2px) -} - -textarea.form-control-lg { - min-height: calc(1.49em + 1.5rem + 2px) -} - -.form-control-color { - width: 3rem; - height: calc(1.49em + 1rem + 2px); - padding: .5rem -} - -.form-control-color:not(:disabled):not([readonly]) { - cursor: pointer -} - -.form-control-color::-moz-color-swatch { - border: 0 !important; - border-radius: .375rem -} - -.form-control-color::-webkit-color-swatch { - border-radius: .375rem -} - -.form-control-color.form-control-sm { - height: calc(1.49em + 0.75rem + 2px) -} - -.form-control-color.form-control-lg { - height: calc(1.49em + 1.5rem + 2px) -} - -.form-select { - display: block; - width: 100%; - padding: .5rem 2.5rem .5rem 1rem; - -moz-padding-start: calc(1rem - 3px); - font-size: 0.8rem; - font-weight: 600; - line-height: 1.49; - color: var(--phoenix-900); - background-color: var(--phoenix-input-bg); - background-image: var(--phoenix-form-select-indicator); - background-repeat: no-repeat; - background-position: right 1rem center; - background-size: 9px 12px; - border: 1px solid var(--phoenix-input-border-color); - border-radius: .375rem; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0); - box-shadow: inset 0 1px 2px rgba(0,0,0,0); - -webkit-transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -o-transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -@media(prefers-reduced-motion: reduce) { - .form-select { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.form-select:focus { - border-color: #3874ff; - outline: 0; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0),0 0 0 .25rem rgba(56,116,255,.25); - box-shadow: inset 0 1px 2px rgba(0,0,0,0),0 0 0 .25rem rgba(56,116,255,.25) -} - -.form-select[multiple],.form-select[size]:not([size="1"]) { - padding-right: 1rem; - background-image: none -} - -.form-select:disabled { - background-color: var(--phoenix-200) -} - -.form-select:-moz-focusring { - color: rgba(0,0,0,0); - text-shadow: 0 0 0 var(--phoenix-900) -} - -.form-select-sm { - padding-top: .375rem; - padding-bottom: .375rem; - padding-left: 1rem; - font-size: 0.8rem; - border-radius: .375rem -} - -.form-select-lg { - padding-top: .75rem; - padding-bottom: .75rem; - padding-left: 1rem; - font-size: 1rem; - border-radius: .375rem -} - -.form-check { - display: block; - min-height: 1.49rem; - padding-left: 1.5em; - margin-bottom: .34375rem -} - -.form-check .form-check-input { - float: left; - margin-left: -1.5em -} - -.form-check-reverse { - padding-right: 1.5em; - padding-left: 0; - text-align: right -} - -.form-check-reverse .form-check-input { - float: right; - margin-right: -1.5em; - margin-left: 0 -} - -.form-check-input { - width: 1em; - height: 1em; - margin-top: .245em; - vertical-align: top; - background-color: var(--phoenix-input-bg); - background-repeat: no-repeat; - background-position: center; - background-size: contain; - border: 1px solid var(--phoenix-400); - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - print-color-adjust: exact -} - -.form-check-input[type=checkbox] { - border-radius: .25em -} - -.form-check-input[type=radio] { - border-radius: 50% -} - -.form-check-input:active { - -webkit-filter: brightness(90%); - filter: brightness(90%) -} - -.form-check-input:focus { - border-color: #3874ff; - outline: 0; - -webkit-box-shadow: 0 0 0 .25rem rgba(56,116,255,.25); - box-shadow: 0 0 0 .25rem rgba(56,116,255,.25) -} - -.form-check-input:checked { - background-color: #3874ff; - border-color: #3874ff -} - -.form-check-input:checked[type=checkbox] { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e") -} - -.form-check-input:checked[type=radio] { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e") -} - -.form-check-input[type=checkbox]:indeterminate { - background-color: #3874ff; - border-color: #3874ff; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e") -} - -.form-check-input:disabled { - pointer-events: none; - -webkit-filter: none; - filter: none; - opacity: .5 -} - -.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label { - cursor: default; - opacity: .5 -} - -.form-check-label { - color: var(--phoenix-gray-700) -} - -.form-switch { - padding-left: 2.5em -} - -.form-switch .form-check-input { - width: 2em; - margin-left: -2.5em; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); - background-position: left center; - border-radius: 2em; - -webkit-transition: background-position .15s ease-in-out; - -o-transition: background-position .15s ease-in-out; - transition: background-position .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .form-switch .form-check-input { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.form-switch .form-check-input:focus { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e") -} - -.form-switch .form-check-input:checked { - background-position: right center; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e") -} - -.form-switch.form-check-reverse { - padding-right: 2.5em; - padding-left: 0 -} - -.form-switch.form-check-reverse .form-check-input { - margin-right: -2.5em; - margin-left: 0 -} - -.form-check-inline { - display: inline-block; - margin-right: 1rem -} - -.btn-check { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none -} - -.btn-check[disabled]+.btn,.google-map-control-btn .btn-check[disabled]+.zoomIn,.google-map-control-btn .btn-check[disabled]+.zoomOut,.tox .tox-dialog__footer .btn-check[disabled]+.tox-button:last-child,.tox .tox-dialog__footer .btn-check[disabled]+.tox-button--secondary,.tox .btn-check[disabled]+.tox-button-secondary,.tox .btn-check[disabled]+.tox-button,[data-list] .btn-check[disabled]+.page,.table-list .btn-check[disabled]+.page,.btn-check:disabled+.btn,.google-map-control-btn .btn-check:disabled+.zoomIn,.google-map-control-btn .btn-check:disabled+.zoomOut,.tox .tox-dialog__footer .btn-check:disabled+.tox-button:last-child,.tox .tox-dialog__footer .btn-check:disabled+.tox-button--secondary,.tox .btn-check:disabled+.tox-button-secondary,.tox .btn-check:disabled+.tox-button,[data-list] .btn-check:disabled+.page,.table-list .btn-check:disabled+.page { - pointer-events: none; - -webkit-filter: none; - filter: none; - opacity: .3 -} - -.form-range { - width: 100%; - height: 1.5rem; - padding: 0; - background-color: rgba(0,0,0,0); - -webkit-appearance: none; - -moz-appearance: none; - appearance: none -} - -.form-range:focus { - outline: 0 -} - -.form-range:focus::-webkit-slider-thumb { - -webkit-box-shadow: 0 0 0 1px #f5f7fa,inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25); - box-shadow: 0 0 0 1px #f5f7fa,inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) -} - -.form-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #f5f7fa,inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) -} - -.form-range::-moz-focus-outer { - border: 0 -} - -.form-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #3874ff; - border: 0; - border-radius: 1rem; - -webkit-box-shadow: 0 .1rem .25rem rgba(0,0,0,.1); - box-shadow: 0 .1rem .25rem rgba(0,0,0,.1); - -webkit-transition: background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -webkit-appearance: none; - appearance: none -} - -@media(prefers-reduced-motion: reduce) { - .form-range::-webkit-slider-thumb { - -webkit-transition: none; - transition: none - } -} - -.form-range::-webkit-slider-thumb:active { - background-color: #c3d5ff -} - -.form-range::-webkit-slider-runnable-track { - width: 100%; - height: .5rem; - color: rgba(0,0,0,0); - cursor: pointer; - background-color: var(--phoenix-gray-300); - border-color: rgba(0,0,0,0); - border-radius: 1rem; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.075); - box-shadow: inset 0 1px 2px rgba(0,0,0,.075) -} - -.form-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #3874ff; - border: 0; - border-radius: 1rem; - box-shadow: 0 .1rem .25rem rgba(0,0,0,.1); - -moz-transition: background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - -moz-appearance: none; - appearance: none -} - -@media(prefers-reduced-motion: reduce) { - .form-range::-moz-range-thumb { - -moz-transition: none; - transition: none - } -} - -.form-range::-moz-range-thumb:active { - background-color: #c3d5ff -} - -.form-range::-moz-range-track { - width: 100%; - height: .5rem; - color: rgba(0,0,0,0); - cursor: pointer; - background-color: var(--phoenix-gray-300); - border-color: rgba(0,0,0,0); - border-radius: 1rem; - box-shadow: inset 0 1px 2px rgba(0,0,0,.075) -} - -.form-range:disabled { - pointer-events: none -} - -.form-range:disabled::-webkit-slider-thumb { - background-color: #8a94ad -} - -.form-range:disabled::-moz-range-thumb { - background-color: #8a94ad -} - -.form-floating { - position: relative -} - -.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select { - height: calc(2.875rem + 2px); - line-height: 1.25 -} - -.form-floating>label { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - padding: 1rem 1rem; - overflow: hidden; - text-align: start; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap; - pointer-events: none; - border: 1px solid rgba(0,0,0,0); - -webkit-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - -webkit-transition: opacity .1s ease-in-out,-webkit-transform .1s ease-in-out; - transition: opacity .1s ease-in-out,-webkit-transform .1s ease-in-out; - -o-transition: opacity .1s ease-in-out,transform .1s ease-in-out; - transition: opacity .1s ease-in-out,transform .1s ease-in-out; - transition: opacity .1s ease-in-out,transform .1s ease-in-out,-webkit-transform .1s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .form-floating>label { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.form-floating>.form-control,.form-floating>.form-control-plaintext { - padding: 1rem 1rem -} - -.form-floating>.form-control::-webkit-input-placeholder, .form-floating>.form-control-plaintext::-webkit-input-placeholder { - color: rgba(0,0,0,0) -} - -.form-floating>.form-control::-moz-placeholder, .form-floating>.form-control-plaintext::-moz-placeholder { - color: rgba(0,0,0,0) -} - -.form-floating>.form-control:-ms-input-placeholder, .form-floating>.form-control-plaintext:-ms-input-placeholder { - color: rgba(0,0,0,0) -} - -.form-floating>.form-control::-ms-input-placeholder, .form-floating>.form-control-plaintext::-ms-input-placeholder { - color: rgba(0,0,0,0) -} - -.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder { - color: rgba(0,0,0,0) -} - -.form-floating>.form-control:not(:-moz-placeholder-shown), .form-floating>.form-control-plaintext:not(:-moz-placeholder-shown) { - padding-top: 22.5px; - padding-bottom: 9.5px -} - -.form-floating>.form-control:not(:-ms-input-placeholder), .form-floating>.form-control-plaintext:not(:-ms-input-placeholder) { - padding-top: 22.5px; - padding-bottom: 9.5px -} - -.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown) { - padding-top: 22.5px; - padding-bottom: 9.5px -} - -.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill { - padding-top: 22.5px; - padding-bottom: 9.5px -} - -.form-floating>.form-select { - padding-top: 22.5px; - padding-bottom: 9.5px -} - -.form-floating>.form-control:not(:-moz-placeholder-shown)~label { - opacity: .65; - transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem) -} - -.form-floating>.form-control:not(:-ms-input-placeholder)~label { - opacity: .65; - -ms-transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem); - transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem) -} - -.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label { - opacity: .65; - -webkit-transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem); - -ms-transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem); - transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem) -} - -.form-floating>.form-control:-webkit-autofill~label { - opacity: .65; - -webkit-transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem); - transform: scale(0.85) translateY(-0.4rem) translateX(0.15rem) -} - -.form-floating>.form-control-plaintext~label { - border-width: 1px 0 -} - -.input-group { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - width: 100% -} - -.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - width: 1%; - min-width: 0 -} - -.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within { - z-index: 5 -} - -.input-group .btn,.input-group .google-map-control-btn .zoomIn,.google-map-control-btn .input-group .zoomIn,.input-group .google-map-control-btn .zoomOut,.google-map-control-btn .input-group .zoomOut,.input-group .tox .tox-dialog__footer .tox-button:last-child,.tox .tox-dialog__footer .input-group .tox-button:last-child,.input-group .tox .tox-dialog__footer .tox-button--secondary,.tox .tox-dialog__footer .input-group .tox-button--secondary,.input-group .tox .tox-button-secondary,.tox .input-group .tox-button-secondary,.input-group .tox .tox-button,.tox .input-group .tox-button,.input-group [data-list] .page,[data-list] .input-group .page,.input-group .table-list .page,.table-list .input-group .page { - position: relative; - z-index: 2 -} - -.input-group .btn:focus,.input-group .google-map-control-btn .zoomIn:focus,.google-map-control-btn .input-group .zoomIn:focus,.input-group .google-map-control-btn .zoomOut:focus,.google-map-control-btn .input-group .zoomOut:focus,.input-group .tox .tox-dialog__footer .tox-button--secondary:focus,.tox .tox-dialog__footer .input-group .tox-button--secondary:focus,.input-group .tox .tox-button-secondary:focus,.tox .input-group .tox-button-secondary:focus,.input-group .tox .tox-button:focus,.tox .input-group .tox-button:focus,.input-group [data-list] .page:focus,[data-list] .input-group .page:focus,.input-group .table-list .page:focus,.table-list .input-group .page:focus { - z-index: 5 -} - -.input-group-text { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: .5rem 1rem; - font-size: 0.8rem; - font-weight: 600; - line-height: 1.49; - color: var(--phoenix-gray-900); - text-align: center; - white-space: nowrap; - background-color: #eff2f6; - border: 1px solid var(--phoenix-input-border-color); - border-radius: .375rem -} - -.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn,.google-map-control-btn .input-group-lg>.zoomIn,.google-map-control-btn .input-group-lg>.zoomOut,.tox .tox-dialog__footer .input-group-lg>.tox-button:last-child,.tox .tox-dialog__footer .input-group-lg>.tox-button--secondary,.tox .input-group-lg>.tox-button-secondary,.tox .input-group-lg>.tox-button,[data-list] .input-group-lg>.page,.table-list .input-group-lg>.page { - padding: .75rem 1rem; - font-size: 1rem; - border-radius: .375rem -} - -.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn,.google-map-control-btn .input-group-sm>.zoomIn,.google-map-control-btn .input-group-sm>.zoomOut,.tox .tox-dialog__footer .input-group-sm>.tox-button:last-child,.tox .tox-dialog__footer .input-group-sm>.tox-button--secondary,.tox .input-group-sm>.tox-button-secondary,.tox .input-group-sm>.tox-button,[data-list] .input-group-sm>.page,.table-list .input-group-sm>.page { - padding: .375rem 1rem; - font-size: 0.8rem; - border-radius: .375rem -} - -.input-group-lg>.form-select,.input-group-sm>.form-select { - padding-right: 3.5rem -} - -.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { - margin-left: -1px; - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: .25rem; - font-size: 75%; - color: #25b003 -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: .5rem .5rem; - margin-top: .1rem; - font-size: 0.8rem; - color: #fff; - background-color: rgba(37,176,3,.9); - border-radius: .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: #25b003; - padding-right: calc(1.49em + 1rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2325b003' d='M2.3 6.73.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.3725em + 0.25rem) center; - background-size: calc(0.745em + 0.5rem) calc(0.745em + 0.5rem) -} - -.was-validated .form-control:valid:focus,.form-control.is-valid:focus { - border-color: #25b003; - -webkit-box-shadow: 0 0 0 .25rem rgba(37,176,3,.25); - box-shadow: 0 0 0 .25rem rgba(37,176,3,.25) -} - -.was-validated textarea.form-control:valid,textarea.form-control.is-valid { - padding-right: calc(1.49em + 1rem); - background-position: top calc(0.3725em + 0.25rem) right calc(0.3725em + 0.25rem) -} - -.was-validated .form-select:valid,.form-select.is-valid { - border-color: #25b003 -} - -.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"] { - padding-right: 5rem; - background-image: var(--phoenix-form-select-indicator),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2325b003' d='M2.3 6.73.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-position: right 1rem center,center right 2.5rem; - background-size: 9px 12px,calc(0.745em + 0.5rem) calc(0.745em + 0.5rem) -} - -.was-validated .form-select:valid:focus,.form-select.is-valid:focus { - border-color: #25b003; - -webkit-box-shadow: 0 0 0 .25rem rgba(37,176,3,.25); - box-shadow: 0 0 0 .25rem rgba(37,176,3,.25) -} - -.was-validated .form-control-color:valid,.form-control-color.is-valid { - width: calc(3rem + calc(1.49em + 1rem)) -} - -.was-validated .form-check-input:valid,.form-check-input.is-valid { - border-color: #25b003 -} - -.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked { - background-color: #25b003 -} - -.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus { - -webkit-box-shadow: 0 0 0 .25rem rgba(37,176,3,.25); - box-shadow: 0 0 0 .25rem rgba(37,176,3,.25) -} - -.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label { - color: #25b003 -} - -.form-check-inline .form-check-input~.valid-feedback { - margin-left: .5em -} - -.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid { - z-index: 3 -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: .25rem; - font-size: 75%; - color: #ed2000 -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: .5rem .5rem; - margin-top: .1rem; - font-size: 0.8rem; - color: #fff; - background-color: rgba(237,32,0,.9); - border-radius: .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: #ed2000; - padding-right: calc(1.49em + 1rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed2000'%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='%23ed2000' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.3725em + 0.25rem) center; - background-size: calc(0.745em + 0.5rem) calc(0.745em + 0.5rem) -} - -.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus { - border-color: #ed2000; - -webkit-box-shadow: 0 0 0 .25rem rgba(237,32,0,.25); - box-shadow: 0 0 0 .25rem rgba(237,32,0,.25) -} - -.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid { - padding-right: calc(1.49em + 1rem); - background-position: top calc(0.3725em + 0.25rem) right calc(0.3725em + 0.25rem) -} - -.was-validated .form-select:invalid,.form-select.is-invalid { - border-color: #ed2000 -} - -.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"] { - padding-right: 5rem; - background-image: var(--phoenix-form-select-indicator),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed2000'%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='%23ed2000' stroke='none'/%3e%3c/svg%3e"); - background-position: right 1rem center,center right 2.5rem; - background-size: 9px 12px,calc(0.745em + 0.5rem) calc(0.745em + 0.5rem) -} - -.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus { - border-color: #ed2000; - -webkit-box-shadow: 0 0 0 .25rem rgba(237,32,0,.25); - box-shadow: 0 0 0 .25rem rgba(237,32,0,.25) -} - -.was-validated .form-control-color:invalid,.form-control-color.is-invalid { - width: calc(3rem + calc(1.49em + 1rem)) -} - -.was-validated .form-check-input:invalid,.form-check-input.is-invalid { - border-color: #ed2000 -} - -.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked { - background-color: #ed2000 -} - -.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus { - -webkit-box-shadow: 0 0 0 .25rem rgba(237,32,0,.25); - box-shadow: 0 0 0 .25rem rgba(237,32,0,.25) -} - -.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label { - color: #ed2000 -} - -.form-check-inline .form-check-input~.invalid-feedback { - margin-left: .5em -} - -.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid { - z-index: 4 -} - -.fade { - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear -} - -@media(prefers-reduced-motion: reduce) { - .fade { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.fade:not(.show) { - opacity: 0 -} - -.collapse:not(.show) { - display: none -} - -.collapsing { - height: 0; - overflow: hidden; - -webkit-transition: height .35s ease; - -o-transition: height .35s ease; - transition: height .35s ease -} - -@media(prefers-reduced-motion: reduce) { - .collapsing { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.collapsing.collapse-horizontal { - width: 0; - height: auto; - -webkit-transition: width .35s ease; - -o-transition: width .35s ease; - transition: width .35s ease -} - -@media(prefers-reduced-motion: reduce) { - .collapsing.collapse-horizontal { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center { - position: relative -} - -.dropdown-toggle { - white-space: nowrap -} - -.dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: ""; - border-top: .3em solid; - border-right: .3em solid rgba(0,0,0,0); - border-bottom: 0; - border-left: .3em solid rgba(0,0,0,0) -} - -.dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropdown-menu { - --phoenix-dropdown-zindex: 1000; - --phoenix-dropdown-min-width: 10rem; - --phoenix-dropdown-padding-x: 0; - --phoenix-dropdown-padding-y: 1rem; - --phoenix-dropdown-spacer: 0.125rem; - --phoenix-dropdown-font-size: 0.8rem; - --phoenix-dropdown-color: #525b75; - --phoenix-dropdown-bg: #fff; - --phoenix-dropdown-border-color: #cbd0dd; - --phoenix-dropdown-border-radius: 0.375rem; - --phoenix-dropdown-border-width: 1px; - --phoenix-dropdown-inner-border-radius: calc(0.375rem - 1px); - --phoenix-dropdown-divider-bg: #cbd0dd; - --phoenix-dropdown-divider-margin-y: 0.5rem; - --phoenix-dropdown-box-shadow: 0px 2px 4px -2px rgba(36, 40, 46, 0.08); - --phoenix-dropdown-link-color: #525b75; - --phoenix-dropdown-link-hover-color: #292e3b; - --phoenix-dropdown-link-hover-bg: #e3e6ed; - --phoenix-dropdown-link-active-color: #fff; - --phoenix-dropdown-link-active-bg: #3874ff; - --phoenix-dropdown-link-disabled-color: #eff2f6; - --phoenix-dropdown-item-padding-x: 1rem; - --phoenix-dropdown-item-padding-y: 0.5rem; - --phoenix-dropdown-header-color: #6e7891; - --phoenix-dropdown-header-padding-x: 1rem; - --phoenix-dropdown-header-padding-y: 1rem; - position: absolute; - z-index: var(--phoenix-dropdown-zindex); - display: none; - min-width: var(--phoenix-dropdown-min-width); - padding: var(--phoenix-dropdown-padding-y) var(--phoenix-dropdown-padding-x); - margin: 0; - font-size: var(--phoenix-dropdown-font-size); - color: var(--phoenix-dropdown-color); - text-align: left; - list-style: none; - background-color: var(--phoenix-dropdown-bg); - background-clip: padding-box; - border: var(--phoenix-dropdown-border-width) solid var(--phoenix-dropdown-border-color); - border-radius: var(--phoenix-dropdown-border-radius); - -webkit-box-shadow: var(--phoenix-dropdown-box-shadow); - box-shadow: var(--phoenix-dropdown-box-shadow) -} - -.dropdown-menu[data-bs-popper] { - top: 100%; - left: 0; - margin-top: var(--phoenix-dropdown-spacer) -} - -.dropdown-menu-start { - --bs-position: start -} - -.dropdown-menu-start[data-bs-popper] { - right: auto; - left: 0 -} - -.dropdown-menu-end { - --bs-position: end -} - -.dropdown-menu-end[data-bs-popper] { - right: 0; - left: auto -} - -@media(min-width: 576px) { - .dropdown-menu-sm-start { - --bs-position: start - } - - .dropdown-menu-sm-start[data-bs-popper] { - right: auto; - left: 0 - } - - .dropdown-menu-sm-end { - --bs-position: end - } - - .dropdown-menu-sm-end[data-bs-popper] { - right: 0; - left: auto - } -} - -@media(min-width: 768px) { - .dropdown-menu-md-start { - --bs-position: start - } - - .dropdown-menu-md-start[data-bs-popper] { - right: auto; - left: 0 - } - - .dropdown-menu-md-end { - --bs-position: end - } - - .dropdown-menu-md-end[data-bs-popper] { - right: 0; - left: auto - } -} - -@media(min-width: 992px) { - .dropdown-menu-lg-start { - --bs-position: start - } - - .dropdown-menu-lg-start[data-bs-popper] { - right: auto; - left: 0 - } - - .dropdown-menu-lg-end { - --bs-position: end - } - - .dropdown-menu-lg-end[data-bs-popper] { - right: 0; - left: auto - } -} - -@media(min-width: 1200px) { - .dropdown-menu-xl-start { - --bs-position: start - } - - .dropdown-menu-xl-start[data-bs-popper] { - right: auto; - left: 0 - } - - .dropdown-menu-xl-end { - --bs-position: end - } - - .dropdown-menu-xl-end[data-bs-popper] { - right: 0; - left: auto - } -} - -@media(min-width: 1540px) { - .dropdown-menu-xxl-start { - --bs-position: start - } - - .dropdown-menu-xxl-start[data-bs-popper] { - right: auto; - left: 0 - } - - .dropdown-menu-xxl-end { - --bs-position: end - } - - .dropdown-menu-xxl-end[data-bs-popper] { - right: 0; - left: auto - } -} - -.dropup .dropdown-menu[data-bs-popper] { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: var(--phoenix-dropdown-spacer) -} - -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: ""; - border-top: 0; - border-right: .3em solid rgba(0,0,0,0); - border-bottom: .3em solid; - border-left: .3em solid rgba(0,0,0,0) -} - -.dropup .dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropend .dropdown-menu[data-bs-popper] { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: var(--phoenix-dropdown-spacer) -} - -.dropend .dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: ""; - border-top: .3em solid rgba(0,0,0,0); - border-right: 0; - border-bottom: .3em solid rgba(0,0,0,0); - border-left: .3em solid -} - -.dropend .dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropend .dropdown-toggle::after { - vertical-align: 0 -} - -.dropstart .dropdown-menu[data-bs-popper] { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: var(--phoenix-dropdown-spacer) -} - -.dropstart .dropdown-toggle::after { - display: inline-block; - margin-left: .255em; - vertical-align: .255em; - content: "" -} - -.dropstart .dropdown-toggle::after { - display: none -} - -.dropstart .dropdown-toggle::before { - display: inline-block; - margin-right: .255em; - vertical-align: .255em; - content: ""; - border-top: .3em solid rgba(0,0,0,0); - border-right: .3em solid; - border-bottom: .3em solid rgba(0,0,0,0) -} - -.dropstart .dropdown-toggle:empty::after { - margin-left: 0 -} - -.dropstart .dropdown-toggle::before { - vertical-align: 0 -} - -.dropdown-divider { - height: 0; - margin: var(--phoenix-dropdown-divider-margin-y) 0; - overflow: hidden; - border-top: 1px solid var(--phoenix-dropdown-divider-bg); - opacity: 1 -} - -.dropdown-item { - display: block; - width: 100%; - padding: var(--phoenix-dropdown-item-padding-y) var(--phoenix-dropdown-item-padding-x); - clear: both; - font-weight: 400; - color: var(--phoenix-dropdown-link-color); - text-align: inherit; - white-space: nowrap; - background-color: rgba(0,0,0,0); - border: 0 -} - -.dropdown-item:hover,.dropdown-item:focus { - color: var(--phoenix-dropdown-link-hover-color); - text-decoration: none; - background-color: var(--phoenix-dropdown-link-hover-bg) -} - -.dropdown-item.active,.dropdown-item:active { - color: var(--phoenix-dropdown-link-active-color); - text-decoration: none; - background-color: var(--phoenix-dropdown-link-active-bg) -} - -.dropdown-item.disabled,[data-list] li.disabled button.dropdown-item,.table-list li.disabled button.dropdown-item,.dropdown-item:disabled { - color: var(--phoenix-dropdown-link-disabled-color); - pointer-events: none; - background-color: rgba(0,0,0,0) -} - -.dropdown-menu.show { - display: block -} - -.dropdown-header { - display: block; - padding: var(--phoenix-dropdown-header-padding-y) var(--phoenix-dropdown-header-padding-x); - margin-bottom: 0; - font-size: 0.875rem; - color: var(--phoenix-dropdown-header-color); - white-space: nowrap -} - -.dropdown-item-text { - display: block; - padding: var(--phoenix-dropdown-item-padding-y) var(--phoenix-dropdown-item-padding-x); - color: var(--phoenix-dropdown-link-color) -} - -.dropdown-menu-dark { - --phoenix-dropdown-color: #cbd0dd; - --phoenix-dropdown-bg: #3e465b; - --phoenix-dropdown-border-color: #cbd0dd; - --phoenix-dropdown-box-shadow: ; - --phoenix-dropdown-link-color: #cbd0dd; - --phoenix-dropdown-link-hover-color: #fff; - --phoenix-dropdown-divider-bg: #cbd0dd; - --phoenix-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); - --phoenix-dropdown-link-active-color: #fff; - --phoenix-dropdown-link-active-bg: #3874ff; - --phoenix-dropdown-link-disabled-color: #8a94ad; - --phoenix-dropdown-header-color: #8a94ad -} - -.btn-group,.btn-group-vertical { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - vertical-align: middle -} - -.btn-group>.btn,.google-map-control-btn .btn-group>.zoomIn,.google-map-control-btn .btn-group>.zoomOut,.tox .tox-dialog__footer .btn-group>.tox-button:last-child,.tox .tox-dialog__footer .btn-group>.tox-button--secondary,.tox .btn-group>.tox-button-secondary,.tox .btn-group>.tox-button,[data-list] .btn-group>.page,.table-list .btn-group>.page,.btn-group-vertical>.btn,.google-map-control-btn .btn-group-vertical>.zoomIn,.google-map-control-btn .btn-group-vertical>.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.tox-button:last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary,.tox .btn-group-vertical>.tox-button-secondary,.tox .btn-group-vertical>.tox-button,[data-list] .btn-group-vertical>.page,.table-list .btn-group-vertical>.page { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto -} - -.btn-group>.btn-check:checked+.btn,.google-map-control-btn .btn-group>.btn-check:checked+.zoomIn,.google-map-control-btn .btn-group>.btn-check:checked+.zoomOut,.tox .tox-dialog__footer .btn-group>.btn-check:checked+.tox-button--secondary,.tox .btn-group>.btn-check:checked+.tox-button-secondary,.tox .btn-group>.btn-check:checked+.tox-button,[data-list] .btn-group>.btn-check:checked+.page,.table-list .btn-group>.btn-check:checked+.page,.btn-group>.btn-check:focus+.btn,.google-map-control-btn .btn-group>.btn-check:focus+.zoomIn,.google-map-control-btn .btn-group>.btn-check:focus+.zoomOut,.tox .tox-dialog__footer .btn-group>.btn-check:focus+.tox-button--secondary,.tox .btn-group>.btn-check:focus+.tox-button-secondary,.tox .btn-group>.btn-check:focus+.tox-button,[data-list] .btn-group>.btn-check:focus+.page,.table-list .btn-group>.btn-check:focus+.page,.btn-group>.btn:hover,.google-map-control-btn .btn-group>.zoomIn:hover,.google-map-control-btn .btn-group>.zoomOut:hover,.tox .tox-dialog__footer .btn-group>.tox-button:hover:last-child,.tox .tox-dialog__footer .btn-group>.tox-button--secondary:hover,.tox .btn-group>.tox-button-secondary:hover,.tox .btn-group>.tox-button:hover,[data-list] .btn-group>.page:hover,.table-list .btn-group>.page:hover,.btn-group>.btn:focus,.google-map-control-btn .btn-group>.zoomIn:focus,.google-map-control-btn .btn-group>.zoomOut:focus,.tox .tox-dialog__footer .btn-group>.tox-button:focus:last-child,.tox .tox-dialog__footer .btn-group>.tox-button--secondary:focus,.tox .btn-group>.tox-button-secondary:focus,.tox .btn-group>.tox-button:focus,[data-list] .btn-group>.page:focus,.table-list .btn-group>.page:focus,.btn-group>.btn:active,.google-map-control-btn .btn-group>.zoomIn:active,.google-map-control-btn .btn-group>.zoomOut:active,.tox .tox-dialog__footer .btn-group>.tox-button:active:last-child,.tox .tox-dialog__footer .btn-group>.tox-button--secondary:active,.tox .btn-group>.tox-button-secondary:active,.tox .btn-group>.tox-button:active,[data-list] .btn-group>.page:active,.table-list .btn-group>.page:active,.btn-group>.btn.active,.google-map-control-btn .btn-group>.active.zoomIn,.google-map-control-btn .btn-group>.active.zoomOut,.tox .tox-dialog__footer .btn-group>.active.tox-button:last-child,.tox .tox-dialog__footer .btn-group>.active.tox-button--secondary,.tox .btn-group>.active.tox-button-secondary,.tox .btn-group>.active.tox-button,[data-list] .btn-group>.active.page,.table-list .btn-group>.active.page,.btn-group-vertical>.btn-check:checked+.btn,.google-map-control-btn .btn-group-vertical>.btn-check:checked+.zoomIn,.google-map-control-btn .btn-group-vertical>.btn-check:checked+.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.btn-check:checked+.tox-button--secondary,.tox .btn-group-vertical>.btn-check:checked+.tox-button-secondary,.tox .btn-group-vertical>.btn-check:checked+.tox-button,[data-list] .btn-group-vertical>.btn-check:checked+.page,.table-list .btn-group-vertical>.btn-check:checked+.page,.btn-group-vertical>.btn-check:focus+.btn,.google-map-control-btn .btn-group-vertical>.btn-check:focus+.zoomIn,.google-map-control-btn .btn-group-vertical>.btn-check:focus+.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.btn-check:focus+.tox-button--secondary,.tox .btn-group-vertical>.btn-check:focus+.tox-button-secondary,.tox .btn-group-vertical>.btn-check:focus+.tox-button,[data-list] .btn-group-vertical>.btn-check:focus+.page,.table-list .btn-group-vertical>.btn-check:focus+.page,.btn-group-vertical>.btn:hover,.google-map-control-btn .btn-group-vertical>.zoomIn:hover,.google-map-control-btn .btn-group-vertical>.zoomOut:hover,.tox .tox-dialog__footer .btn-group-vertical>.tox-button:hover:last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary:hover,.tox .btn-group-vertical>.tox-button-secondary:hover,.tox .btn-group-vertical>.tox-button:hover,[data-list] .btn-group-vertical>.page:hover,.table-list .btn-group-vertical>.page:hover,.btn-group-vertical>.btn:focus,.google-map-control-btn .btn-group-vertical>.zoomIn:focus,.google-map-control-btn .btn-group-vertical>.zoomOut:focus,.tox .tox-dialog__footer .btn-group-vertical>.tox-button:focus:last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary:focus,.tox .btn-group-vertical>.tox-button-secondary:focus,.tox .btn-group-vertical>.tox-button:focus,[data-list] .btn-group-vertical>.page:focus,.table-list .btn-group-vertical>.page:focus,.btn-group-vertical>.btn:active,.google-map-control-btn .btn-group-vertical>.zoomIn:active,.google-map-control-btn .btn-group-vertical>.zoomOut:active,.tox .tox-dialog__footer .btn-group-vertical>.tox-button:active:last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary:active,.tox .btn-group-vertical>.tox-button-secondary:active,.tox .btn-group-vertical>.tox-button:active,[data-list] .btn-group-vertical>.page:active,.table-list .btn-group-vertical>.page:active,.btn-group-vertical>.btn.active,.google-map-control-btn .btn-group-vertical>.active.zoomIn,.google-map-control-btn .btn-group-vertical>.active.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.active.tox-button:last-child,.tox .tox-dialog__footer .btn-group-vertical>.active.tox-button--secondary,.tox .btn-group-vertical>.active.tox-button-secondary,.tox .btn-group-vertical>.active.tox-button,[data-list] .btn-group-vertical>.active.page,.table-list .btn-group-vertical>.active.page { - z-index: 1 -} - -.btn-toolbar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start -} - -.btn-toolbar .input-group { - width: auto -} - -.btn-group { - border-radius: .375rem -} - -.btn-group>:not(.btn-check:first-child)+.btn,.google-map-control-btn .btn-group>:not(.btn-check:first-child)+.zoomIn,.google-map-control-btn .btn-group>:not(.btn-check:first-child)+.zoomOut,.tox .tox-dialog__footer .btn-group>:not(.btn-check:first-child)+.tox-button--secondary,.tox .btn-group>:not(.btn-check:first-child)+.tox-button-secondary,.tox .btn-group>:not(.btn-check:first-child)+.tox-button,[data-list] .btn-group>:not(.btn-check:first-child)+.page,.table-list .btn-group>:not(.btn-check:first-child)+.page,.btn-group>.btn-group:not(:first-child) { - margin-left: -1px -} - -.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.google-map-control-btn .btn-group>.zoomIn:not(:last-child):not(.dropdown-toggle),.google-map-control-btn .btn-group>.zoomOut:not(:last-child):not(.dropdown-toggle),.tox .tox-dialog__footer .btn-group>.tox-button:not(:last-child):not(.dropdown-toggle):last-child,.tox .tox-dialog__footer .btn-group>.tox-button--secondary:not(:last-child):not(.dropdown-toggle),.tox .btn-group>.tox-button-secondary:not(:last-child):not(.dropdown-toggle),.tox .btn-group>.tox-button:not(:last-child):not(.dropdown-toggle),[data-list] .btn-group>.page:not(:last-child):not(.dropdown-toggle),.table-list .btn-group>.page:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.google-map-control-btn .btn-group>.dropdown-toggle-split.zoomIn:first-child,.google-map-control-btn .btn-group>.dropdown-toggle-split.zoomOut:first-child,.tox .tox-dialog__footer .btn-group>.dropdown-toggle-split.tox-button:first-child:last-child,.tox .tox-dialog__footer .btn-group>.dropdown-toggle-split.tox-button--secondary:first-child,.tox .btn-group>.dropdown-toggle-split.tox-button-secondary:first-child,.tox .btn-group>.dropdown-toggle-split.tox-button:first-child,[data-list] .btn-group>.dropdown-toggle-split.page:first-child,.table-list .btn-group>.dropdown-toggle-split.page:first-child,.btn-group>.btn-group:not(:last-child)>.btn,.google-map-control-btn .btn-group>.btn-group:not(:last-child)>.zoomIn,.google-map-control-btn .btn-group>.btn-group:not(:last-child)>.zoomOut,.tox .tox-dialog__footer .btn-group>.btn-group:not(:last-child)>.tox-button--secondary,.tox .btn-group>.btn-group:not(:last-child)>.tox-button-secondary,.tox .btn-group>.btn-group:not(:last-child)>.tox-button,[data-list] .btn-group>.btn-group:not(:last-child)>.page,.table-list .btn-group>.btn-group:not(:last-child)>.page { - border-top-right-radius: 0; - border-bottom-right-radius: 0 -} - -.btn-group>.btn:nth-child(n+3),.google-map-control-btn .btn-group>.zoomIn:nth-child(n+3),.google-map-control-btn .btn-group>.zoomOut:nth-child(n+3),.tox .tox-dialog__footer .btn-group>.tox-button:nth-child(n+3):last-child,.tox .tox-dialog__footer .btn-group>.tox-button--secondary:nth-child(n+3),.tox .btn-group>.tox-button-secondary:nth-child(n+3),.tox .btn-group>.tox-button:nth-child(n+3),[data-list] .btn-group>.page:nth-child(n+3),.table-list .btn-group>.page:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.google-map-control-btn .btn-group>:not(.btn-check)+.zoomIn,.google-map-control-btn .btn-group>:not(.btn-check)+.zoomOut,.tox .tox-dialog__footer .btn-group>:not(.btn-check)+.tox-button--secondary,.tox .btn-group>:not(.btn-check)+.tox-button-secondary,.tox .btn-group>:not(.btn-check)+.tox-button,[data-list] .btn-group>:not(.btn-check)+.page,.table-list .btn-group>:not(.btn-check)+.page,.btn-group>.btn-group:not(:first-child)>.btn,.google-map-control-btn .btn-group>.btn-group:not(:first-child)>.zoomIn,.google-map-control-btn .btn-group>.btn-group:not(:first-child)>.zoomOut,.tox .tox-dialog__footer .btn-group>.btn-group:not(:first-child)>.tox-button--secondary,.tox .btn-group>.btn-group:not(:first-child)>.tox-button-secondary,.tox .btn-group>.btn-group:not(:first-child)>.tox-button,[data-list] .btn-group>.btn-group:not(:first-child)>.page,.table-list .btn-group>.btn-group:not(:first-child)>.page { - border-top-left-radius: 0; - border-bottom-left-radius: 0 -} - -.dropdown-toggle-split { - padding-right: 1.125rem; - padding-left: 1.125rem -} - -.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after { - margin-left: 0 -} - -.dropstart .dropdown-toggle-split::before { - margin-right: 0 -} - -.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split,.google-map-control-btn .btn-group-sm>.zoomIn+.dropdown-toggle-split,.google-map-control-btn .btn-group-sm>.zoomOut+.dropdown-toggle-split,.tox .tox-dialog__footer .btn-group-sm>.tox-button--secondary+.dropdown-toggle-split,.tox .btn-group-sm>.tox-button-secondary+.dropdown-toggle-split,.tox .btn-group-sm>.tox-button+.dropdown-toggle-split,[data-list] .btn-group-sm>.page+.dropdown-toggle-split,.table-list .btn-group-sm>.page+.dropdown-toggle-split { - padding-right: .75rem; - padding-left: .75rem -} - -.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split,.google-map-control-btn .btn-group-lg>.zoomIn+.dropdown-toggle-split,.google-map-control-btn .btn-group-lg>.zoomOut+.dropdown-toggle-split,.tox .tox-dialog__footer .btn-group-lg>.tox-button--secondary+.dropdown-toggle-split,.tox .btn-group-lg>.tox-button-secondary+.dropdown-toggle-split,.tox .btn-group-lg>.tox-button+.dropdown-toggle-split,[data-list] .btn-group-lg>.page+.dropdown-toggle-split,.table-list .btn-group-lg>.page+.dropdown-toggle-split { - padding-right: 1.125rem; - padding-left: 1.125rem -} - -.btn-group.show .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0); - box-shadow: inset 0 3px 5px rgba(0,0,0,0) -} - -.btn-group.show .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none -} - -.btn-group-vertical { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.btn-group-vertical>.btn,.google-map-control-btn .btn-group-vertical>.zoomIn,.google-map-control-btn .btn-group-vertical>.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.tox-button:last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary,.tox .btn-group-vertical>.tox-button-secondary,.tox .btn-group-vertical>.tox-button,[data-list] .btn-group-vertical>.page,.table-list .btn-group-vertical>.page,.btn-group-vertical>.btn-group { - width: 100% -} - -.btn-group-vertical>.btn:not(:first-child),.google-map-control-btn .btn-group-vertical>.zoomIn:not(:first-child),.google-map-control-btn .btn-group-vertical>.zoomOut:not(:first-child),.tox .tox-dialog__footer .btn-group-vertical>.tox-button:not(:first-child):last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary:not(:first-child),.tox .btn-group-vertical>.tox-button-secondary:not(:first-child),.tox .btn-group-vertical>.tox-button:not(:first-child),[data-list] .btn-group-vertical>.page:not(:first-child),.table-list .btn-group-vertical>.page:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child) { - margin-top: -1px -} - -.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.google-map-control-btn .btn-group-vertical>.zoomIn:not(:last-child):not(.dropdown-toggle),.google-map-control-btn .btn-group-vertical>.zoomOut:not(:last-child):not(.dropdown-toggle),.tox .tox-dialog__footer .btn-group-vertical>.tox-button:not(:last-child):not(.dropdown-toggle):last-child,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary:not(:last-child):not(.dropdown-toggle),.tox .btn-group-vertical>.tox-button-secondary:not(:last-child):not(.dropdown-toggle),.tox .btn-group-vertical>.tox-button:not(:last-child):not(.dropdown-toggle),[data-list] .btn-group-vertical>.page:not(:last-child):not(.dropdown-toggle),.table-list .btn-group-vertical>.page:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn,.google-map-control-btn .btn-group-vertical>.btn-group:not(:last-child)>.zoomIn,.google-map-control-btn .btn-group-vertical>.btn-group:not(:last-child)>.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.btn-group:not(:last-child)>.tox-button--secondary,.tox .btn-group-vertical>.btn-group:not(:last-child)>.tox-button-secondary,.tox .btn-group-vertical>.btn-group:not(:last-child)>.tox-button,[data-list] .btn-group-vertical>.btn-group:not(:last-child)>.page,.table-list .btn-group-vertical>.btn-group:not(:last-child)>.page { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0 -} - -.btn-group-vertical>.btn~.btn,.google-map-control-btn .btn-group-vertical>.zoomIn~.btn,.google-map-control-btn .btn-group-vertical>.zoomOut~.btn,.google-map-control-btn .btn-group-vertical>.btn~.zoomIn,.google-map-control-btn .btn-group-vertical>.zoomIn~.zoomIn,.google-map-control-btn .btn-group-vertical>.zoomOut~.zoomIn,.google-map-control-btn .btn-group-vertical>.btn~.zoomOut,.google-map-control-btn .btn-group-vertical>.zoomIn~.zoomOut,.google-map-control-btn .btn-group-vertical>.zoomOut~.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.btn,.tox .tox-dialog__footer .google-map-control-btn .btn-group-vertical>.tox-button--secondary~.zoomIn,.google-map-control-btn .tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.zoomIn,.tox .tox-dialog__footer .google-map-control-btn .btn-group-vertical>.tox-button--secondary~.zoomOut,.google-map-control-btn .tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.btn~.tox-button--secondary,.tox .tox-dialog__footer .google-map-control-btn .btn-group-vertical>.zoomIn~.tox-button--secondary,.google-map-control-btn .tox .tox-dialog__footer .btn-group-vertical>.zoomIn~.tox-button--secondary,.tox .tox-dialog__footer .google-map-control-btn .btn-group-vertical>.zoomOut~.tox-button--secondary,.google-map-control-btn .tox .tox-dialog__footer .btn-group-vertical>.zoomOut~.tox-button--secondary,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.tox-button--secondary,.tox .btn-group-vertical>.tox-button-secondary~.btn,.tox .google-map-control-btn .btn-group-vertical>.tox-button-secondary~.zoomIn,.google-map-control-btn .tox .btn-group-vertical>.tox-button-secondary~.zoomIn,.tox .google-map-control-btn .btn-group-vertical>.tox-button-secondary~.zoomOut,.google-map-control-btn .tox .btn-group-vertical>.tox-button-secondary~.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.tox-button-secondary~.tox-button--secondary,.tox .btn-group-vertical>.btn~.tox-button-secondary,.tox .google-map-control-btn .btn-group-vertical>.zoomIn~.tox-button-secondary,.google-map-control-btn .tox .btn-group-vertical>.zoomIn~.tox-button-secondary,.tox .google-map-control-btn .btn-group-vertical>.zoomOut~.tox-button-secondary,.google-map-control-btn .tox .btn-group-vertical>.zoomOut~.tox-button-secondary,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.tox-button-secondary,.tox .btn-group-vertical>.tox-button-secondary~.tox-button-secondary,.tox .btn-group-vertical>.tox-button~.btn,.tox .google-map-control-btn .btn-group-vertical>.tox-button~.zoomIn,.google-map-control-btn .tox .btn-group-vertical>.tox-button~.zoomIn,.tox .google-map-control-btn .btn-group-vertical>.tox-button~.zoomOut,.google-map-control-btn .tox .btn-group-vertical>.tox-button~.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.tox-button~.tox-button--secondary,.tox .btn-group-vertical>.tox-button~.tox-button-secondary,.tox .btn-group-vertical>.btn~.tox-button,.tox .google-map-control-btn .btn-group-vertical>.zoomIn~.tox-button,.google-map-control-btn .tox .btn-group-vertical>.zoomIn~.tox-button,.tox .google-map-control-btn .btn-group-vertical>.zoomOut~.tox-button,.google-map-control-btn .tox .btn-group-vertical>.zoomOut~.tox-button,.tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.tox-button,.tox .btn-group-vertical>.tox-button-secondary~.tox-button,.tox .btn-group-vertical>.tox-button~.tox-button,[data-list] .btn-group-vertical>.page~.btn,[data-list] .google-map-control-btn .btn-group-vertical>.page~.zoomIn,.google-map-control-btn [data-list] .btn-group-vertical>.page~.zoomIn,[data-list] .google-map-control-btn .btn-group-vertical>.page~.zoomOut,.google-map-control-btn [data-list] .btn-group-vertical>.page~.zoomOut,[data-list] .tox .tox-dialog__footer .btn-group-vertical>.page~.tox-button--secondary,.tox .tox-dialog__footer [data-list] .btn-group-vertical>.page~.tox-button--secondary,[data-list] .tox .btn-group-vertical>.page~.tox-button-secondary,.tox [data-list] .btn-group-vertical>.page~.tox-button-secondary,[data-list] .tox .btn-group-vertical>.page~.tox-button,.tox [data-list] .btn-group-vertical>.page~.tox-button,.table-list .btn-group-vertical>.page~.btn,.table-list .google-map-control-btn .btn-group-vertical>.page~.zoomIn,.google-map-control-btn .table-list .btn-group-vertical>.page~.zoomIn,.table-list .google-map-control-btn .btn-group-vertical>.page~.zoomOut,.google-map-control-btn .table-list .btn-group-vertical>.page~.zoomOut,.table-list .tox .tox-dialog__footer .btn-group-vertical>.page~.tox-button--secondary,.tox .tox-dialog__footer .table-list .btn-group-vertical>.page~.tox-button--secondary,.table-list .tox .btn-group-vertical>.page~.tox-button-secondary,.tox .table-list .btn-group-vertical>.page~.tox-button-secondary,.table-list .tox .btn-group-vertical>.page~.tox-button,.tox .table-list .btn-group-vertical>.page~.tox-button,[data-list] .btn-group-vertical>.btn~.page,[data-list] .google-map-control-btn .btn-group-vertical>.zoomIn~.page,.google-map-control-btn [data-list] .btn-group-vertical>.zoomIn~.page,[data-list] .google-map-control-btn .btn-group-vertical>.zoomOut~.page,.google-map-control-btn [data-list] .btn-group-vertical>.zoomOut~.page,[data-list] .tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.page,.tox .tox-dialog__footer [data-list] .btn-group-vertical>.tox-button--secondary~.page,[data-list] .tox .btn-group-vertical>.tox-button-secondary~.page,.tox [data-list] .btn-group-vertical>.tox-button-secondary~.page,[data-list] .tox .btn-group-vertical>.tox-button~.page,.tox [data-list] .btn-group-vertical>.tox-button~.page,[data-list] .btn-group-vertical>.page~.page,.table-list .btn-group-vertical>.btn~.page,.table-list .google-map-control-btn .btn-group-vertical>.zoomIn~.page,.google-map-control-btn .table-list .btn-group-vertical>.zoomIn~.page,.table-list .google-map-control-btn .btn-group-vertical>.zoomOut~.page,.google-map-control-btn .table-list .btn-group-vertical>.zoomOut~.page,.table-list .tox .tox-dialog__footer .btn-group-vertical>.tox-button--secondary~.page,.tox .tox-dialog__footer .table-list .btn-group-vertical>.tox-button--secondary~.page,.table-list .tox .btn-group-vertical>.tox-button-secondary~.page,.tox .table-list .btn-group-vertical>.tox-button-secondary~.page,.table-list .tox .btn-group-vertical>.tox-button~.page,.tox .table-list .btn-group-vertical>.tox-button~.page,.table-list .btn-group-vertical>.page~.page,.btn-group-vertical>.btn-group:not(:first-child)>.btn,.google-map-control-btn .btn-group-vertical>.btn-group:not(:first-child)>.zoomIn,.google-map-control-btn .btn-group-vertical>.btn-group:not(:first-child)>.zoomOut,.tox .tox-dialog__footer .btn-group-vertical>.btn-group:not(:first-child)>.tox-button--secondary,.tox .btn-group-vertical>.btn-group:not(:first-child)>.tox-button-secondary,.tox .btn-group-vertical>.btn-group:not(:first-child)>.tox-button,[data-list] .btn-group-vertical>.btn-group:not(:first-child)>.page,.table-list .btn-group-vertical>.btn-group:not(:first-child)>.page { - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.nav { - --phoenix-nav-link-padding-x: 1rem; - --phoenix-nav-link-padding-y: 0.5rem; - --phoenix-nav-link-font-weight: ; - --phoenix-nav-link-color: var(--phoenix-link-color); - --phoenix-nav-link-hover-color: var(--phoenix-link-hover-color); - --phoenix-nav-link-disabled-color: #6e7891; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none -} - -.nav-link { - display: block; - padding: var(--phoenix-nav-link-padding-y) var(--phoenix-nav-link-padding-x); - font-size: var(--phoenix-nav-link-font-size); - font-weight: var(--phoenix-nav-link-font-weight); - color: var(--phoenix-nav-link-color); - -webkit-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out; - -o-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .nav-link { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.nav-link:hover,.nav-link:focus { - color: var(--phoenix-nav-link-hover-color); - text-decoration: none -} - -.nav-link.disabled,[data-list] li.disabled button.nav-link,.table-list li.disabled button.nav-link { - color: var(--phoenix-nav-link-disabled-color); - pointer-events: none; - cursor: default -} - -.nav-tabs { - --phoenix-nav-tabs-border-width: 2px; - --phoenix-nav-tabs-border-color: #cbd0dd; - --phoenix-nav-tabs-border-radius: 0.375rem; - --phoenix-nav-tabs-link-hover-border-color: #e3e6ed #e3e6ed #cbd0dd; - --phoenix-nav-tabs-link-active-color: #525b75; - --phoenix-nav-tabs-link-active-bg: #f5f7fa; - --phoenix-nav-tabs-link-active-border-color: #cbd0dd #cbd0dd #f5f7fa; - border-bottom: var(--phoenix-nav-tabs-border-width) solid var(--phoenix-nav-tabs-border-color) -} - -.nav-tabs .nav-link { - margin-bottom: calc(-1*var(--phoenix-nav-tabs-border-width)); - background: none; - border: var(--phoenix-nav-tabs-border-width) solid rgba(0,0,0,0); - border-top-left-radius: var(--phoenix-nav-tabs-border-radius); - border-top-right-radius: var(--phoenix-nav-tabs-border-radius) -} - -.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus { - isolation: isolate; - border-color: var(--phoenix-nav-tabs-link-hover-border-color) -} - -.nav-tabs .nav-link.disabled,.nav-tabs [data-list] li.disabled button.nav-link,[data-list] li.disabled .nav-tabs button.nav-link,.nav-tabs .table-list li.disabled button.nav-link,.table-list li.disabled .nav-tabs button.nav-link,.nav-tabs .nav-link:disabled { - color: var(--phoenix-nav-link-disabled-color); - background-color: rgba(0,0,0,0); - border-color: rgba(0,0,0,0) -} - -.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link { - color: var(--phoenix-nav-tabs-link-active-color); - background-color: var(--phoenix-nav-tabs-link-active-bg); - border-color: var(--phoenix-nav-tabs-link-active-border-color) -} - -.nav-tabs .dropdown-menu { - margin-top: calc(-1*var(--phoenix-nav-tabs-border-width)); - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.nav-pills { - --phoenix-nav-pills-border-radius: 0.375rem; - --phoenix-nav-pills-link-active-color: #fff; - --phoenix-nav-pills-link-active-bg: #3874ff -} - -.nav-pills .nav-link { - background: none; - border: 0; - border-radius: var(--phoenix-nav-pills-border-radius) -} - -.nav-pills .nav-link:disabled { - color: var(--phoenix-nav-link-disabled-color); - background-color: rgba(0,0,0,0); - border-color: rgba(0,0,0,0) -} - -.nav-pills .nav-link.active,.nav-pills .show>.nav-link { - color: var(--phoenix-nav-pills-link-active-color); - background-color: var(--phoenix-nav-pills-link-active-bg) -} - -.nav-fill>.nav-link,.nav-fill .nav-item { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - text-align: center -} - -.nav-justified>.nav-link,.nav-justified .nav-item { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - text-align: center -} - -.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link { - width: 100% -} - -.tab-content>.tab-pane { - display: none -} - -.tab-content>.active { - display: block -} - -.navbar { - --phoenix-navbar-padding-x: 1.5rem; - --phoenix-navbar-padding-y: 0.5rem; - --phoenix-navbar-color: var(--phoenix-navbar-light-color); - --phoenix-navbar-hover-color: var(--phoenix-navbar-light-hover-color); - --phoenix-navbar-disabled-color: var(--phoenix-navbar-light-disabled-color); - --phoenix-navbar-active-color: var(--phoenix-navbar-light-active-color); - --phoenix-navbar-brand-padding-y: -0.210078125rem; - --phoenix-navbar-brand-margin-end: 1rem; - --phoenix-navbar-brand-font-size: 1.953125rem; - --phoenix-navbar-brand-color: var(--phoenix-navbar-light-brand-color); - --phoenix-navbar-brand-hover-color: var(--phoenix-navbar-light-brand-color); - --phoenix-navbar-nav-link-padding-x: 0.5rem; - --phoenix-navbar-toggler-padding-y: 0.25rem; - --phoenix-navbar-toggler-padding-x: 0.75rem; - --phoenix-navbar-toggler-font-size: 1.2rem; - --phoenix-navbar-toggler-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%239da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E"); - --phoenix-navbar-toggler-border-color: var(--phoenix-navbar-light-toggler-border-color); - --phoenix-navbar-toggler-border-radius: 0.375rem; - --phoenix-navbar-toggler-focus-width: 0; - --phoenix-navbar-toggler-transition: box-shadow 0.15s ease-in-out; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: var(--phoenix-navbar-padding-y) var(--phoenix-navbar-padding-x) -} - -.navbar>.container,.navbar>.product-filter-container,.navbar>.container-fluid,.navbar>.container-small-xl,.navbar>.container-small-lg,.navbar>.container-small-md,.navbar>.container-small-sm,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: inherit; - flex-wrap: inherit; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between -} - -.navbar-brand { - padding-top: var(--phoenix-navbar-brand-padding-y); - padding-bottom: var(--phoenix-navbar-brand-padding-y); - margin-right: var(--phoenix-navbar-brand-margin-end); - font-size: var(--phoenix-navbar-brand-font-size); - color: var(--phoenix-navbar-brand-color); - white-space: nowrap -} - -.navbar-brand:hover,.navbar-brand:focus { - color: var(--phoenix-navbar-brand-hover-color); - text-decoration: none -} - -.navbar-nav { - --phoenix-nav-link-padding-x: 0; - --phoenix-nav-link-padding-y: 0.5rem; - --phoenix-nav-link-font-weight: ; - --phoenix-nav-link-color: var(--phoenix-navbar-color); - --phoenix-nav-link-hover-color: var(--phoenix-navbar-hover-color); - --phoenix-nav-link-disabled-color: var(--phoenix-navbar-disabled-color); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none -} - -.navbar-nav .show>.nav-link,.navbar-nav .nav-link.active { - color: var(--phoenix-navbar-active-color) -} - -.navbar-nav .dropdown-menu { - position: static -} - -.navbar-text { - padding-top: .5rem; - padding-bottom: .5rem; - color: var(--phoenix-navbar-color) -} - -.navbar-text a,.navbar-text a:hover,.navbar-text a:focus { - color: var(--phoenix-navbar-active-color) -} - -.navbar-collapse { - -ms-flex-preferred-size: 100%; - flex-basis: 100%; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.navbar-toggler { - padding: var(--phoenix-navbar-toggler-padding-y) var(--phoenix-navbar-toggler-padding-x); - font-size: var(--phoenix-navbar-toggler-font-size); - line-height: 1; - color: var(--phoenix-navbar-color); - background-color: rgba(0,0,0,0); - border: var(--phoenix-border-width) solid var(--phoenix-navbar-toggler-border-color); - border-radius: var(--phoenix-navbar-toggler-border-radius); - -webkit-transition: var(--phoenix-navbar-toggler-transition); - -o-transition: var(--phoenix-navbar-toggler-transition); - transition: var(--phoenix-navbar-toggler-transition) -} - -@media(prefers-reduced-motion: reduce) { - .navbar-toggler { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.navbar-toggler:hover { - text-decoration: none -} - -.navbar-toggler:focus { - text-decoration: none; - outline: 0; - -webkit-box-shadow: 0 0 0 var(--phoenix-navbar-toggler-focus-width); - box-shadow: 0 0 0 var(--phoenix-navbar-toggler-focus-width) -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - background-image: var(--phoenix-navbar-toggler-icon-bg); - background-repeat: no-repeat; - background-position: center; - background-size: 100% -} - -.navbar-nav-scroll { - max-height: var(--phoenix-scroll-height, 75vh); - overflow-y: auto -} - -@media(min-width: 576px) { - .navbar-expand-sm { - -ms-flex-wrap:nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-sm .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: var(--phoenix-navbar-nav-link-padding-x); - padding-left: var(--phoenix-navbar-nav-link-padding-x) - } - - .navbar-expand-sm .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-sm .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-sm .navbar-toggler { - display: none - } - - .navbar-expand-sm .offcanvas { - position: static; - z-index: auto; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: rgba(0,0,0,0) !important; - border: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none - } - - .navbar-expand-sm .offcanvas .offcanvas-header { - display: none - } - - .navbar-expand-sm .offcanvas .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible - } -} - -@media(min-width: 768px) { - .navbar-expand-md { - -ms-flex-wrap:nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-md .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-md .navbar-nav .nav-link { - padding-right: var(--phoenix-navbar-nav-link-padding-x); - padding-left: var(--phoenix-navbar-nav-link-padding-x) - } - - .navbar-expand-md .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-md .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-md .navbar-toggler { - display: none - } - - .navbar-expand-md .offcanvas { - position: static; - z-index: auto; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: rgba(0,0,0,0) !important; - border: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none - } - - .navbar-expand-md .offcanvas .offcanvas-header { - display: none - } - - .navbar-expand-md .offcanvas .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible - } -} - -@media(min-width: 992px) { - .navbar-expand-lg { - -ms-flex-wrap:nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-lg .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: var(--phoenix-navbar-nav-link-padding-x); - padding-left: var(--phoenix-navbar-nav-link-padding-x) - } - - .navbar-expand-lg .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-lg .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-lg .navbar-toggler { - display: none - } - - .navbar-expand-lg .offcanvas { - position: static; - z-index: auto; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: rgba(0,0,0,0) !important; - border: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none - } - - .navbar-expand-lg .offcanvas .offcanvas-header { - display: none - } - - .navbar-expand-lg .offcanvas .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible - } -} - -@media(min-width: 1200px) { - .navbar-expand-xl { - -ms-flex-wrap:nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-xl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: var(--phoenix-navbar-nav-link-padding-x); - padding-left: var(--phoenix-navbar-nav-link-padding-x) - } - - .navbar-expand-xl .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-xl .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-xl .navbar-toggler { - display: none - } - - .navbar-expand-xl .offcanvas { - position: static; - z-index: auto; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: rgba(0,0,0,0) !important; - border: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none - } - - .navbar-expand-xl .offcanvas .offcanvas-header { - display: none - } - - .navbar-expand-xl .offcanvas .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible - } -} - -@media(min-width: 1540px) { - .navbar-expand-xxl { - -ms-flex-wrap:nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start - } - - .navbar-expand-xxl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .navbar-expand-xxl .navbar-nav .dropdown-menu { - position: absolute - } - - .navbar-expand-xxl .navbar-nav .nav-link { - padding-right: var(--phoenix-navbar-nav-link-padding-x); - padding-left: var(--phoenix-navbar-nav-link-padding-x) - } - - .navbar-expand-xxl .navbar-nav-scroll { - overflow: visible - } - - .navbar-expand-xxl .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto - } - - .navbar-expand-xxl .navbar-toggler { - display: none - } - - .navbar-expand-xxl .offcanvas { - position: static; - z-index: auto; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: rgba(0,0,0,0) !important; - border: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none - } - - .navbar-expand-xxl .offcanvas .offcanvas-header { - display: none - } - - .navbar-expand-xxl .offcanvas .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible - } -} - -.navbar-expand { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start -} - -.navbar-expand .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row -} - -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute -} - -.navbar-expand .navbar-nav .nav-link { - padding-right: var(--phoenix-navbar-nav-link-padding-x); - padding-left: var(--phoenix-navbar-nav-link-padding-x) -} - -.navbar-expand .navbar-nav-scroll { - overflow: visible -} - -.navbar-expand .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -ms-flex-preferred-size: auto; - flex-basis: auto -} - -.navbar-expand .navbar-toggler { - display: none -} - -.navbar-expand .offcanvas { - position: static; - z-index: auto; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: auto !important; - height: auto !important; - visibility: visible !important; - background-color: rgba(0,0,0,0) !important; - border: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none -} - -.navbar-expand .offcanvas .offcanvas-header { - display: none -} - -.navbar-expand .offcanvas .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible -} - -.navbar-dark { - --phoenix-navbar-color: var(--phoenix-navbar-dark-color); - --phoenix-navbar-hover-color: var(--phoenix-navbar-dark-hover-color); - --phoenix-navbar-disabled-color: var(--phoenix-navbar-dark-disabled-color); - --phoenix-navbar-active-color: var(--phoenix-navbar-dark-active-color); - --phoenix-navbar-brand-color: var(--phoenix-navbar-dark-brand-color); - --phoenix-navbar-brand-hover-color: var(--phoenix-navbar-dark-brand-color); - --phoenix-navbar-toggler-border-color: var(--phoenix-navbar-dark-toggler-border-color); - --phoenix-navbar-toggler-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%239da9bb' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M0 6h30M0 14h30M0 22h30'/%3E%3C/svg%3E") -} - -.card { - --phoenix-card-spacer-y: 1.5rem; - --phoenix-card-spacer-x: 1.5rem; - --phoenix-card-title-spacer-y: 1rem; - --phoenix-card-border-width: 1px; - --phoenix-card-border-color: var(--phoenix-gray-200); - --phoenix-card-border-radius: 0.5rem; - --phoenix-card-box-shadow: ; - --phoenix-card-inner-border-radius: calc(0.5rem - 1px); - --phoenix-card-cap-padding-y: 1.5rem; - --phoenix-card-cap-padding-x: 1.5rem; - --phoenix-card-cap-bg: var(--phoenix-card-cap-bg); - --phoenix-card-cap-color: ; - --phoenix-card-height: ; - --phoenix-card-color: ; - --phoenix-card-bg: #fff; - --phoenix-card-img-overlay-padding: 1rem; - --phoenix-card-group-margin: 1rem; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - min-width: 0; - height: var(--phoenix-card-height); - word-wrap: break-word; - background-color: var(--phoenix-card-bg); - background-clip: border-box; - border: var(--phoenix-card-border-width) solid var(--phoenix-card-border-color); - border-radius: var(--phoenix-card-border-radius); - -webkit-box-shadow: var(--phoenix-card-box-shadow); - box-shadow: var(--phoenix-card-box-shadow) -} - -.card>hr { - margin-right: 0; - margin-left: 0 -} - -.card>.list-group { - border-top: inherit; - border-bottom: inherit -} - -.card>.list-group:first-child { - border-top-width: 0; - border-top-left-radius: var(--phoenix-card-inner-border-radius); - border-top-right-radius: var(--phoenix-card-inner-border-radius) -} - -.card>.list-group:last-child { - border-bottom-width: 0; - border-bottom-right-radius: var(--phoenix-card-inner-border-radius); - border-bottom-left-radius: var(--phoenix-card-inner-border-radius) -} - -.card>.card-header+.list-group,.card>.list-group+.card-footer { - border-top: 0 -} - -.card-body { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - padding: var(--phoenix-card-spacer-y) var(--phoenix-card-spacer-x); - color: var(--phoenix-card-color) -} - -.card-title { - margin-bottom: var(--phoenix-card-title-spacer-y) -} - -.card-subtitle { - margin-top: calc(-0.5*var(--phoenix-card-title-spacer-y)); - margin-bottom: 0 -} - -.card-text:last-child { - margin-bottom: 0 -} - -.card-link:hover { - text-decoration: none -} - -.card-link+.card-link { - margin-left: var(--phoenix-card-spacer-x) -} - -.card-header { - padding: var(--phoenix-card-cap-padding-y) var(--phoenix-card-cap-padding-x); - margin-bottom: 0; - color: var(--phoenix-card-cap-color); - background-color: var(--phoenix-card-cap-bg); - border-bottom: var(--phoenix-card-border-width) solid var(--phoenix-card-border-color) -} - -.card-header:first-child { - border-radius: var(--phoenix-card-inner-border-radius) var(--phoenix-card-inner-border-radius) 0 0 -} - -.card-footer { - padding: var(--phoenix-card-cap-padding-y) var(--phoenix-card-cap-padding-x); - color: var(--phoenix-card-cap-color); - background-color: var(--phoenix-card-cap-bg); - border-top: var(--phoenix-card-border-width) solid var(--phoenix-card-border-color) -} - -.card-footer:last-child { - border-radius: 0 0 var(--phoenix-card-inner-border-radius) var(--phoenix-card-inner-border-radius) -} - -.card-header-tabs { - margin-right: calc(-0.5*var(--phoenix-card-cap-padding-x)); - margin-bottom: calc(-1*var(--phoenix-card-cap-padding-y)); - margin-left: calc(-0.5*var(--phoenix-card-cap-padding-x)); - border-bottom: 0 -} - -.card-header-tabs .nav-link.active { - background-color: var(--phoenix-card-bg); - border-bottom-color: var(--phoenix-card-bg) -} - -.card-header-pills { - margin-right: calc(-0.5*var(--phoenix-card-cap-padding-x)); - margin-left: calc(-0.5*var(--phoenix-card-cap-padding-x)) -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: var(--phoenix-card-img-overlay-padding); - border-radius: var(--phoenix-card-inner-border-radius) -} - -.card-img,.card-img-top,.card-img-bottom { - width: 100% -} - -.card-img,.card-img-top { - border-top-left-radius: var(--phoenix-card-inner-border-radius); - border-top-right-radius: var(--phoenix-card-inner-border-radius) -} - -.card-img,.card-img-bottom { - border-bottom-right-radius: var(--phoenix-card-inner-border-radius); - border-bottom-left-radius: var(--phoenix-card-inner-border-radius) -} - -.card-group>.card { - margin-bottom: var(--phoenix-card-group-margin) -} - -@media(min-width: 576px) { - .card-group { - display:-webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap - } - - .card-group>.card { - -webkit-box-flex: 1; - -ms-flex: 1 0 0%; - 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 - } -} - -.accordion { - --phoenix-accordion-color: #222834; - --phoenix-accordion-bg: transparent; - --phoenix-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; - --phoenix-accordion-border-color: var(--phoenix-border-color); - --phoenix-accordion-border-width: 0; - --phoenix-accordion-border-radius: 0; - --phoenix-accordion-inner-border-radius: 0; - --phoenix-accordion-btn-padding-x: 0; - --phoenix-accordion-btn-padding-y: 0.5rem; - --phoenix-accordion-btn-color: #3874ff; - --phoenix-accordion-btn-bg: var(--phoenix-accordion-bg); - --phoenix-accordion-btn-icon: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-200 -200 900 900'%3E%3Cpath fill='%233874ff' d='M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z'%3E%3C/path%3E%3C/svg%3E"); - --phoenix-accordion-btn-icon-width: 1.25rem; - --phoenix-accordion-btn-icon-transform: rotate(-180deg); - --phoenix-accordion-btn-icon-transition: transform 0.2s ease-in-out; - --phoenix-accordion-btn-active-icon: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-200 -200 900 900'%3E%3Cpath fill='%233874ff' d='M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z'%3E%3C/path%3E%3C/svg%3E"); - --phoenix-accordion-btn-focus-border-color: #3874ff; - --phoenix-accordion-btn-focus-box-shadow: 0 0 0 0.25rem transparent; - --phoenix-accordion-body-padding-x: 0; - --phoenix-accordion-body-padding-y: 0.5rem; - --phoenix-accordion-active-color: #141824; - --phoenix-accordion-active-bg: transparent -} - -.accordion-button { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; - padding: var(--phoenix-accordion-btn-padding-y) var(--phoenix-accordion-btn-padding-x); - font-size: 1rem; - color: var(--phoenix-accordion-btn-color); - text-align: left; - background-color: var(--phoenix-accordion-btn-bg); - border: 0; - border-radius: 0; - overflow-anchor: none; - -webkit-transition: var(--phoenix-accordion-transition); - -o-transition: var(--phoenix-accordion-transition); - transition: var(--phoenix-accordion-transition) -} - -@media(prefers-reduced-motion: reduce) { - .accordion-button { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.accordion-button:not(.collapsed) { - color: var(--phoenix-accordion-active-color); - background-color: var(--phoenix-accordion-active-bg); - -webkit-box-shadow: inset 0 calc(-1*var(--phoenix-accordion-border-width)) 0 var(--phoenix-accordion-border-color); - box-shadow: inset 0 calc(-1*var(--phoenix-accordion-border-width)) 0 var(--phoenix-accordion-border-color) -} - -.accordion-button:not(.collapsed)::after { - background-image: var(--phoenix-accordion-btn-active-icon); - -webkit-transform: var(--phoenix-accordion-btn-icon-transform); - -ms-transform: var(--phoenix-accordion-btn-icon-transform); - transform: var(--phoenix-accordion-btn-icon-transform) -} - -.accordion-button::after { - -ms-flex-negative: 0; - flex-shrink: 0; - width: var(--phoenix-accordion-btn-icon-width); - height: var(--phoenix-accordion-btn-icon-width); - margin-left: auto; - content: ""; - background-image: var(--phoenix-accordion-btn-icon); - background-repeat: no-repeat; - background-size: var(--phoenix-accordion-btn-icon-width); - -webkit-transition: var(--phoenix-accordion-btn-icon-transition); - -o-transition: var(--phoenix-accordion-btn-icon-transition); - transition: var(--phoenix-accordion-btn-icon-transition) -} - -@media(prefers-reduced-motion: reduce) { - .accordion-button::after { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.accordion-button:hover { - z-index: 2 -} - -.accordion-button:focus { - z-index: 3; - border-color: var(--phoenix-accordion-btn-focus-border-color); - outline: 0; - -webkit-box-shadow: var(--phoenix-accordion-btn-focus-box-shadow); - box-shadow: var(--phoenix-accordion-btn-focus-box-shadow) -} - -.accordion-header { - margin-bottom: 0 -} - -.accordion-item { - color: var(--phoenix-accordion-color); - background-color: var(--phoenix-accordion-bg); - border: var(--phoenix-accordion-border-width) solid var(--phoenix-accordion-border-color) -} - -.accordion-item:first-of-type { - border-top-left-radius: var(--phoenix-accordion-border-radius); - border-top-right-radius: var(--phoenix-accordion-border-radius) -} - -.accordion-item:first-of-type .accordion-button { - border-top-left-radius: var(--phoenix-accordion-inner-border-radius); - border-top-right-radius: var(--phoenix-accordion-inner-border-radius) -} - -.accordion-item:not(:first-of-type) { - border-top: 0 -} - -.accordion-item:last-of-type { - border-bottom-right-radius: var(--phoenix-accordion-border-radius); - border-bottom-left-radius: var(--phoenix-accordion-border-radius) -} - -.accordion-item:last-of-type .accordion-button.collapsed { - border-bottom-right-radius: var(--phoenix-accordion-inner-border-radius); - border-bottom-left-radius: var(--phoenix-accordion-inner-border-radius) -} - -.accordion-item:last-of-type .accordion-collapse { - border-bottom-right-radius: var(--phoenix-accordion-border-radius); - border-bottom-left-radius: var(--phoenix-accordion-border-radius) -} - -.accordion-body { - padding: var(--phoenix-accordion-body-padding-y) var(--phoenix-accordion-body-padding-x) -} - -.accordion-flush .accordion-collapse { - border-width: 0 -} - -.accordion-flush .accordion-item { - border-right: 0; - border-left: 0; - border-radius: 0 -} - -.accordion-flush .accordion-item:first-child { - border-top: 0 -} - -.accordion-flush .accordion-item:last-child { - border-bottom: 0 -} - -.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed { - border-radius: 0 -} - -.breadcrumb { - --phoenix-breadcrumb-padding-x: 0; - --phoenix-breadcrumb-padding-y: 0; - --phoenix-breadcrumb-margin-bottom: 1rem; - --phoenix-breadcrumb-font-size: 0.8rem; - --phoenix-breadcrumb-bg: ; - --phoenix-breadcrumb-border-radius: ; - --phoenix-breadcrumb-divider-color: #6e7891; - --phoenix-breadcrumb-item-padding-x: 0.5rem; - --phoenix-breadcrumb-item-active-color: var(--phoenix-gray-900); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding: var(--phoenix-breadcrumb-padding-y) var(--phoenix-breadcrumb-padding-x); - margin-bottom: var(--phoenix-breadcrumb-margin-bottom); - font-size: var(--phoenix-breadcrumb-font-size); - list-style: none; - background-color: var(--phoenix-breadcrumb-bg); - border-radius: var(--phoenix-breadcrumb-border-radius) -} - -.breadcrumb-item+.breadcrumb-item { - padding-left: var(--phoenix-breadcrumb-item-padding-x) -} - -.breadcrumb-item+.breadcrumb-item::before { - float: left; - padding-right: var(--phoenix-breadcrumb-item-padding-x); - color: var(--phoenix-breadcrumb-divider-color); - content: var(--phoenix-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='10' width='6' fill='%236e7891' viewBox='0 0 256 480'%3E%3Cpath d='M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z'/%3E%3C/svg%3E")) /* rtl: var(--phoenix-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='10' width='6' fill='%236e7891' viewBox='0 0 256 480'%3E%3Cpath d='M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z'/%3E%3C/svg%3E")) */ -} - -.breadcrumb-item.active { - color: var(--phoenix-breadcrumb-item-active-color) -} - -.pagination { - --phoenix-pagination-padding-x: 0.75rem; - --phoenix-pagination-padding-y: 0.5rem; - --phoenix-pagination-font-size: 0.8rem; - --phoenix-pagination-color: var(--phoenix-gray-800); - --phoenix-pagination-bg: transparent; - --phoenix-pagination-border-width: 0; - --phoenix-pagination-border-color: #cbd0dd; - --phoenix-pagination-border-radius: 0.375rem; - --phoenix-pagination-hover-color: #3874ff; - --phoenix-pagination-hover-bg: #e3e6ed; - --phoenix-pagination-hover-border-color: #cbd0dd; - --phoenix-pagination-focus-color: var(--phoenix-link-hover-color); - --phoenix-pagination-focus-bg: #e3e6ed; - --phoenix-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(56, 116, 255, 0.25); - --phoenix-pagination-active-color: #fff; - --phoenix-pagination-active-bg: #3874ff; - --phoenix-pagination-active-border-color: #3874ff; - --phoenix-pagination-disabled-color: #6e7891; - --phoenix-pagination-disabled-bg: #fff; - --phoenix-pagination-disabled-border-color: #cbd0dd; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-left: 0; - list-style: none -} - -.page-link { - position: relative; - display: block; - padding: var(--phoenix-pagination-padding-y) var(--phoenix-pagination-padding-x); - font-size: var(--phoenix-pagination-font-size); - color: var(--phoenix-pagination-color); - background-color: var(--phoenix-pagination-bg); - border: var(--phoenix-pagination-border-width) solid var(--phoenix-pagination-border-color); - -webkit-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -o-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .page-link { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.page-link:hover { - z-index: 2; - color: var(--phoenix-pagination-hover-color); - text-decoration: none; - background-color: var(--phoenix-pagination-hover-bg); - border-color: var(--phoenix-pagination-hover-border-color) -} - -.page-link:focus { - z-index: 3; - color: var(--phoenix-pagination-focus-color); - background-color: var(--phoenix-pagination-focus-bg); - outline: 0; - -webkit-box-shadow: var(--phoenix-pagination-focus-box-shadow); - box-shadow: var(--phoenix-pagination-focus-box-shadow) -} - -.page-link.active,.active>.page-link { - z-index: 3; - color: var(--phoenix-pagination-active-color); - background-color: var(--phoenix-pagination-active-bg); - border-color: var(--phoenix-pagination-active-border-color) -} - -.page-link.disabled,[data-list] li.disabled button.page-link,.table-list li.disabled button.page-link,.disabled>.page-link,[data-list] li.disabled button>.page-link,.table-list li.disabled button>.page-link { - color: var(--phoenix-pagination-disabled-color); - pointer-events: none; - background-color: var(--phoenix-pagination-disabled-bg); - border-color: var(--phoenix-pagination-disabled-border-color) -} - -.page-item:not(:first-child) .page-link { - margin-left: 0 -} - -.page-item:first-child .page-link { - border-top-left-radius: var(--phoenix-pagination-border-radius); - border-bottom-left-radius: var(--phoenix-pagination-border-radius) -} - -.page-item:last-child .page-link { - border-top-right-radius: var(--phoenix-pagination-border-radius); - border-bottom-right-radius: var(--phoenix-pagination-border-radius) -} - -.pagination-lg { - --phoenix-pagination-padding-x: 1.5rem; - --phoenix-pagination-padding-y: 0.75rem; - --phoenix-pagination-font-size: 1.2rem; - --phoenix-pagination-border-radius: 0.5rem -} - -.pagination-sm { - --phoenix-pagination-padding-x: 0.5rem; - --phoenix-pagination-padding-y: 0.25rem; - --phoenix-pagination-font-size: 0.875rem; - --phoenix-pagination-border-radius: 0.25rem -} - -.badge { - --phoenix-badge-padding-x: 0.711111em; - --phoenix-badge-padding-y: 0.355555em; - --phoenix-badge-font-size: 0.75em; - --phoenix-badge-font-weight: 700; - --phoenix-badge-color: #fff; - --phoenix-badge-border-radius: 0.25rem; - display: inline-block; - padding: var(--phoenix-badge-padding-y) var(--phoenix-badge-padding-x); - font-size: var(--phoenix-badge-font-size); - font-weight: var(--phoenix-badge-font-weight); - line-height: 1; - color: var(--phoenix-badge-color); - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: var(--phoenix-badge-border-radius) -} - -.badge:empty { - display: none -} - -.btn .badge,.google-map-control-btn .zoomIn .badge,.google-map-control-btn .zoomOut .badge,.tox .tox-dialog__footer .tox-button:last-child .badge,.tox .tox-dialog__footer .tox-button--secondary .badge,.tox .tox-button-secondary .badge,.tox .tox-button .badge,[data-list] .page .badge,.table-list .page .badge { - position: relative; - top: -1px -} - -@-webkit-keyframes progress-bar-stripes { - 0% { - background-position-x: .313rem - } -} - -@keyframes progress-bar-stripes { - 0% { - background-position-x: .313rem - } -} - -.progress { - --phoenix-progress-height: 0.313rem; - --phoenix-progress-font-size: 0.75rem; - --phoenix-progress-bg: #e3e6ed; - --phoenix-progress-border-radius: 0.5rem; - --phoenix-progress-box-shadow: 0 0 0 transparent; - --phoenix-progress-bar-color: #fff; - --phoenix-progress-bar-bg: #3874ff; - --phoenix-progress-bar-transition: width 0.6s ease; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: var(--phoenix-progress-height); - overflow: hidden; - font-size: var(--phoenix-progress-font-size); - background-color: var(--phoenix-progress-bg); - border-radius: var(--phoenix-progress-border-radius); - -webkit-box-shadow: var(--phoenix-progress-box-shadow); - box-shadow: var(--phoenix-progress-box-shadow) -} - -.progress-bar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - overflow: hidden; - color: var(--phoenix-progress-bar-color); - text-align: center; - white-space: nowrap; - background-color: var(--phoenix-progress-bar-bg); - -webkit-transition: var(--phoenix-progress-bar-transition); - -o-transition: var(--phoenix-progress-bar-transition); - transition: var(--phoenix-progress-bar-transition) -} - -@media(prefers-reduced-motion: reduce) { - .progress-bar { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.progress-bar-striped { - background-image: -o-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-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: var(--phoenix-progress-height) var(--phoenix-progress-height) -} - -.progress-bar-animated { - -webkit-animation: 1s linear infinite progress-bar-stripes; - animation: 1s linear infinite progress-bar-stripes -} - -@media(prefers-reduced-motion: reduce) { - .progress-bar-animated { - -webkit-animation: none; - animation: none - } -} - -.btn-close { - -webkit-box-sizing: content-box; - box-sizing: content-box; - width: 1em; - height: 1em; - padding: .25em .25em; - color: #000; - background: rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; - border: 0; - border-radius: .375rem; - opacity: .5 -} - -.btn-close:hover { - color: #000; - text-decoration: none; - opacity: .75 -} - -.btn-close:focus { - outline: 0; - -webkit-box-shadow: 0 0 0 .25rem rgba(56,116,255,.25); - box-shadow: 0 0 0 .25rem rgba(56,116,255,.25); - opacity: 1 -} - -.btn-close:disabled,.btn-close.disabled,[data-list] li.disabled button.btn-close,.table-list li.disabled button.btn-close { - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - opacity: .25 -} - -.btn-close-white { - -webkit-filter: invert(1) grayscale(100%) brightness(200%); - filter: invert(1) grayscale(100%) brightness(200%) -} - -.toast { - --phoenix-toast-zindex: 1090; - --phoenix-toast-padding-x: 0; - --phoenix-toast-padding-y: 1rem; - --phoenix-toast-spacing: 2rem; - --phoenix-toast-max-width: 350px; - --phoenix-toast-font-size: 1rem; - --phoenix-toast-color: ; - --phoenix-toast-bg: rgba(255, 255, 255, 0.85); - --phoenix-toast-border-width: 1px; - --phoenix-toast-border-color: var(--phoenix-border-color-translucent); - --phoenix-toast-border-radius: 0.375rem; - --phoenix-toast-box-shadow: 0px 4px 8px -6px rgba(36, 40, 46, 0.03), 0px 16px 8px -4px rgba(36, 40, 46, 0.03); - --phoenix-toast-header-color: #3e465b; - --phoenix-toast-header-bg: #fff; - --phoenix-toast-header-border-color: #cbd0dd; - width: var(--phoenix-toast-max-width); - max-width: 100%; - font-size: var(--phoenix-toast-font-size); - color: var(--phoenix-toast-color); - pointer-events: auto; - background-color: var(--phoenix-toast-bg); - background-clip: padding-box; - border: var(--phoenix-toast-border-width) solid var(--phoenix-toast-border-color); - -webkit-box-shadow: var(--phoenix-toast-box-shadow); - box-shadow: var(--phoenix-toast-box-shadow); - border-radius: var(--phoenix-toast-border-radius) -} - -.toast.showing { - opacity: 0 -} - -.toast:not(.show) { - display: none -} - -.toast-container { - --phoenix-toast-zindex: 1090; - position: absolute; - z-index: var(--phoenix-toast-zindex); - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; - max-width: 100%; - pointer-events: none -} - -.toast-container>:not(:last-child) { - margin-bottom: var(--phoenix-toast-spacing) -} - -.toast-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: var(--phoenix-toast-padding-y) var(--phoenix-toast-padding-x); - color: var(--phoenix-toast-header-color); - background-color: var(--phoenix-toast-header-bg); - background-clip: padding-box; - border-bottom: var(--phoenix-toast-border-width) solid var(--phoenix-toast-header-border-color); - border-top-left-radius: calc(var(--phoenix-toast-border-radius) - var(--phoenix-toast-border-width)); - border-top-right-radius: calc(var(--phoenix-toast-border-radius) - var(--phoenix-toast-border-width)) -} - -.toast-header .btn-close { - margin-right: calc(-0.5*var(--phoenix-toast-padding-x)); - margin-left: var(--phoenix-toast-padding-x) -} - -.toast-body { - padding: var(--phoenix-toast-padding-x); - word-wrap: break-word -} - -.modal { - --phoenix-modal-zindex: 1055; - --phoenix-modal-width: 500px; - --phoenix-modal-padding: 1rem; - --phoenix-modal-margin: 0.5rem; - --phoenix-modal-color: ; - --phoenix-modal-bg: #fff; - --phoenix-modal-border-color: transparent; - --phoenix-modal-border-width: 1px; - --phoenix-modal-border-radius: 0.375rem; - --phoenix-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); - --phoenix-modal-inner-border-radius: calc(0.375rem - 1px); - --phoenix-modal-header-padding-x: 1rem; - --phoenix-modal-header-padding-y: 1rem; - --phoenix-modal-header-padding: 1rem 1rem; - --phoenix-modal-header-border-color: var(--phoenix-border-color); - --phoenix-modal-header-border-width: 1px; - --phoenix-modal-title-line-height: 1.49; - --phoenix-modal-footer-gap: 0.5rem; - --phoenix-modal-footer-bg: ; - --phoenix-modal-footer-border-color: var(--phoenix-border-color); - --phoenix-modal-footer-border-width: 1px; - position: fixed; - top: 0; - left: 0; - z-index: var(--phoenix-modal-zindex); - display: none; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - outline: 0 -} - -.modal-dialog { - position: relative; - width: auto; - margin: var(--phoenix-modal-margin); - pointer-events: none -} - -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - transition: -webkit-transform .3s ease-out; - -o-transition: transform .3s ease-out; - transition: transform .3s ease-out; - transition: transform .3s ease-out, -webkit-transform .3s ease-out; - -webkit-transform: translate(0, -50px); - -ms-transform: translate(0, -50px); - transform: translate(0, -50px) -} - -@media(prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.modal.show .modal-dialog { - -webkit-transform: none; - -ms-transform: none; - transform: none -} - -.modal.modal-static .modal-dialog { - -webkit-transform: scale(1.02); - -ms-transform: scale(1.02); - transform: scale(1.02) -} - -.modal-dialog-scrollable { - height: calc(100% - var(--phoenix-modal-margin)*2) -} - -.modal-dialog-scrollable .modal-content { - max-height: 100%; - overflow: hidden -} - -.modal-dialog-scrollable .modal-body { - overflow-y: auto -} - -.modal-dialog-centered { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-height: calc(100% - var(--phoenix-modal-margin)*2) -} - -.modal-content { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 100%; - color: var(--phoenix-modal-color); - pointer-events: auto; - background-color: var(--phoenix-modal-bg); - background-clip: padding-box; - border: var(--phoenix-modal-border-width) solid var(--phoenix-modal-border-color); - border-radius: var(--phoenix-modal-border-radius); - -webkit-box-shadow: var(--phoenix-modal-box-shadow); - box-shadow: var(--phoenix-modal-box-shadow); - outline: 0 -} - -.modal-backdrop { - --phoenix-backdrop-zindex: 1050; - --phoenix-backdrop-bg: #000000; - --phoenix-backdrop-opacity: 0.5; - position: fixed; - top: 0; - left: 0; - z-index: var(--phoenix-backdrop-zindex); - width: 100vw; - height: 100vh; - background-color: var(--phoenix-backdrop-bg) -} - -.modal-backdrop.fade { - opacity: 0 -} - -.modal-backdrop.show { - opacity: var(--phoenix-backdrop-opacity) -} - -.modal-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-negative: 0; - flex-shrink: 0; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: var(--phoenix-modal-header-padding); - border-bottom: var(--phoenix-modal-header-border-width) solid var(--phoenix-modal-header-border-color); - border-top-left-radius: var(--phoenix-modal-inner-border-radius); - border-top-right-radius: var(--phoenix-modal-inner-border-radius) -} - -.modal-header .btn-close { - padding: calc(var(--phoenix-modal-header-padding-y)*.5) calc(var(--phoenix-modal-header-padding-x)*.5); - margin: calc(-0.5*var(--phoenix-modal-header-padding-y)) calc(-0.5*var(--phoenix-modal-header-padding-x)) calc(-0.5*var(--phoenix-modal-header-padding-y)) auto -} - -.modal-title { - margin-bottom: 0; - line-height: var(--phoenix-modal-title-line-height) -} - -.modal-body { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - padding: var(--phoenix-modal-padding) -} - -.modal-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-negative: 0; - flex-shrink: 0; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - padding: calc(var(--phoenix-modal-padding) - var(--phoenix-modal-footer-gap)*.5); - background-color: var(--phoenix-modal-footer-bg); - border-top: var(--phoenix-modal-footer-border-width) solid var(--phoenix-modal-footer-border-color); - border-bottom-right-radius: var(--phoenix-modal-inner-border-radius); - border-bottom-left-radius: var(--phoenix-modal-inner-border-radius) -} - -.modal-footer>* { - margin: calc(var(--phoenix-modal-footer-gap)*.5) -} - -@media(min-width: 576px) { - .modal { - --phoenix-modal-margin: 1.75rem; - --phoenix-modal-box-shadow: 0px 2px 4px -2px rgba(36, 40, 46, 0.08) - } - - .modal-dialog { - max-width: var(--phoenix-modal-width); - margin-right: auto; - margin-left: auto - } - - .modal-sm { - --phoenix-modal-width: 300px - } -} - -@media(min-width: 992px) { - .modal-lg,.modal-xl { - --phoenix-modal-width: 800px - } -} - -@media(min-width: 1200px) { - .modal-xl { - --phoenix-modal-width: 1140px - } -} - -.modal-fullscreen { - width: 100vw; - max-width: none; - height: 100%; - margin: 0 -} - -.modal-fullscreen .modal-content { - height: 100%; - border: 0; - border-radius: 0 -} - -.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer { - border-radius: 0 -} - -.modal-fullscreen .modal-body { - overflow-y: auto -} - -@media(max-width: 575.98px) { - .modal-fullscreen-sm-down { - width:100vw; - max-width: none; - height: 100%; - margin: 0 - } - - .modal-fullscreen-sm-down .modal-content { - height: 100%; - border: 0; - border-radius: 0 - } - - .modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer { - border-radius: 0 - } - - .modal-fullscreen-sm-down .modal-body { - overflow-y: auto - } -} - -@media(max-width: 767.98px) { - .modal-fullscreen-md-down { - width:100vw; - max-width: none; - height: 100%; - margin: 0 - } - - .modal-fullscreen-md-down .modal-content { - height: 100%; - border: 0; - border-radius: 0 - } - - .modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer { - border-radius: 0 - } - - .modal-fullscreen-md-down .modal-body { - overflow-y: auto - } -} - -@media(max-width: 991.98px) { - .modal-fullscreen-lg-down { - width:100vw; - max-width: none; - height: 100%; - margin: 0 - } - - .modal-fullscreen-lg-down .modal-content { - height: 100%; - border: 0; - border-radius: 0 - } - - .modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer { - border-radius: 0 - } - - .modal-fullscreen-lg-down .modal-body { - overflow-y: auto - } -} - -@media(max-width: 1199.98px) { - .modal-fullscreen-xl-down { - width:100vw; - max-width: none; - height: 100%; - margin: 0 - } - - .modal-fullscreen-xl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0 - } - - .modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer { - border-radius: 0 - } - - .modal-fullscreen-xl-down .modal-body { - overflow-y: auto - } -} - -@media(max-width: 1539.98px) { - .modal-fullscreen-xxl-down { - width:100vw; - max-width: none; - height: 100%; - margin: 0 - } - - .modal-fullscreen-xxl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0 - } - - .modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer { - border-radius: 0 - } - - .modal-fullscreen-xxl-down .modal-body { - overflow-y: auto - } -} - -.tooltip { - --phoenix-tooltip-zindex: 1080; - --phoenix-tooltip-max-width: 200px; - --phoenix-tooltip-padding-x: 0.5rem; - --phoenix-tooltip-padding-y: 0.5rem; - --phoenix-tooltip-margin: ; - --phoenix-tooltip-font-size: 0.8rem; - --phoenix-tooltip-color: #fff; - --phoenix-tooltip-bg: #222834; - --phoenix-tooltip-border-radius: 0.25rem; - --phoenix-tooltip-opacity: 0.9; - --phoenix-tooltip-arrow-width: 0.8rem; - --phoenix-tooltip-arrow-height: 0.4rem; - z-index: var(--phoenix-tooltip-zindex); - display: block; - padding: var(--phoenix-tooltip-arrow-height); - margin: var(--phoenix-tooltip-margin); - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.49; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - white-space: normal; - word-spacing: normal; - line-break: auto; - font-size: var(--phoenix-tooltip-font-size); - word-wrap: break-word; - opacity: 0 -} - -.tooltip.show { - opacity: var(--phoenix-tooltip-opacity) -} - -.tooltip .tooltip-arrow { - display: block; - width: var(--phoenix-tooltip-arrow-width); - height: var(--phoenix-tooltip-arrow-height) -} - -.tooltip .tooltip-arrow::before { - position: absolute; - content: ""; - border-color: rgba(0,0,0,0); - border-style: solid -} - -.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { - bottom: 0 -} - -.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { - top: -1px; - border-width: var(--phoenix-tooltip-arrow-height) calc(var(--phoenix-tooltip-arrow-width)*.5) 0; - border-top-color: var(--phoenix-tooltip-bg) -} - -.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { - left: 0; - width: var(--phoenix-tooltip-arrow-height); - height: var(--phoenix-tooltip-arrow-width) -} - -.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { - right: -1px; - border-width: calc(var(--phoenix-tooltip-arrow-width)*.5) var(--phoenix-tooltip-arrow-height) calc(var(--phoenix-tooltip-arrow-width)*.5) 0; - border-right-color: var(--phoenix-tooltip-bg) -} - -.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { - top: 0 -} - -.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { - bottom: -1px; - border-width: 0 calc(var(--phoenix-tooltip-arrow-width)*.5) var(--phoenix-tooltip-arrow-height); - border-bottom-color: var(--phoenix-tooltip-bg) -} - -.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { - right: 0; - width: var(--phoenix-tooltip-arrow-height); - height: var(--phoenix-tooltip-arrow-width) -} - -.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { - left: -1px; - border-width: calc(var(--phoenix-tooltip-arrow-width)*.5) 0 calc(var(--phoenix-tooltip-arrow-width)*.5) var(--phoenix-tooltip-arrow-height); - border-left-color: var(--phoenix-tooltip-bg) -} - -.tooltip-inner { - max-width: var(--phoenix-tooltip-max-width); - padding: var(--phoenix-tooltip-padding-y) var(--phoenix-tooltip-padding-x); - color: var(--phoenix-tooltip-color); - text-align: center; - background-color: var(--phoenix-tooltip-bg); - border-radius: var(--phoenix-tooltip-border-radius) -} - -.popover { - --phoenix-popover-zindex: 1070; - --phoenix-popover-max-width: 276px; - --phoenix-popover-font-size: 0.875rem; - --phoenix-popover-bg: #fff; - --phoenix-popover-border-width: 1px; - --phoenix-popover-border-color: #e3e6ed; - --phoenix-popover-border-radius: 0.5rem; - --phoenix-popover-inner-border-radius: calc(0.5rem - 1px); - --phoenix-popover-box-shadow: 0px 2px 4px -2px rgba(36, 40, 46, 0.08); - --phoenix-popover-header-padding-x: 1rem; - --phoenix-popover-header-padding-y: 0.5rem; - --phoenix-popover-header-font-size: 1rem; - --phoenix-popover-header-color: var(--phoenix-1100); - --phoenix-popover-header-bg: #eff2f6; - --phoenix-popover-body-padding-x: 1rem; - --phoenix-popover-body-padding-y: 1rem; - --phoenix-popover-body-color: #31374a; - --phoenix-popover-arrow-width: 1rem; - --phoenix-popover-arrow-height: 0.5rem; - --phoenix-popover-arrow-border: var(--phoenix-popover-border-color); - z-index: var(--phoenix-popover-zindex); - display: block; - max-width: var(--phoenix-popover-max-width); - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - font-style: normal; - font-weight: 400; - line-height: 1.49; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - white-space: normal; - word-spacing: normal; - line-break: auto; - font-size: var(--phoenix-popover-font-size); - word-wrap: break-word; - background-color: var(--phoenix-popover-bg); - background-clip: padding-box; - border: var(--phoenix-popover-border-width) solid var(--phoenix-popover-border-color); - border-radius: var(--phoenix-popover-border-radius); - -webkit-box-shadow: var(--phoenix-popover-box-shadow); - box-shadow: var(--phoenix-popover-box-shadow) -} - -.popover .popover-arrow { - display: block; - width: var(--phoenix-popover-arrow-width); - height: var(--phoenix-popover-arrow-height) -} - -.popover .popover-arrow::before,.popover .popover-arrow::after { - position: absolute; - display: block; - content: ""; - border-color: rgba(0,0,0,0); - border-style: solid; - border-width: 0 -} - -.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow { - bottom: calc(-1*(var(--phoenix-popover-arrow-height)) - var(--phoenix-popover-border-width)) -} - -.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after { - border-width: var(--phoenix-popover-arrow-height) calc(var(--phoenix-popover-arrow-width)*.5) 0 -} - -.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before { - bottom: 0; - border-top-color: var(--phoenix-popover-arrow-border) -} - -.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after { - bottom: var(--phoenix-popover-border-width); - border-top-color: var(--phoenix-popover-bg) -} - -.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow { - left: calc(-1*(var(--phoenix-popover-arrow-height)) - var(--phoenix-popover-border-width)); - width: var(--phoenix-popover-arrow-height); - height: var(--phoenix-popover-arrow-width) -} - -.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after { - border-width: calc(var(--phoenix-popover-arrow-width)*.5) var(--phoenix-popover-arrow-height) calc(var(--phoenix-popover-arrow-width)*.5) 0 -} - -.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before { - left: 0; - border-right-color: var(--phoenix-popover-arrow-border) -} - -.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after { - left: var(--phoenix-popover-border-width); - border-right-color: var(--phoenix-popover-bg) -} - -.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow { - top: calc(-1*(var(--phoenix-popover-arrow-height)) - var(--phoenix-popover-border-width)) -} - -.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after { - border-width: 0 calc(var(--phoenix-popover-arrow-width)*.5) var(--phoenix-popover-arrow-height) -} - -.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before { - top: 0; - border-bottom-color: var(--phoenix-popover-arrow-border) -} - -.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after { - top: var(--phoenix-popover-border-width); - border-bottom-color: var(--phoenix-popover-bg) -} - -.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: var(--phoenix-popover-arrow-width); - margin-left: calc(-0.5*var(--phoenix-popover-arrow-width)); - content: ""; - border-bottom: var(--phoenix-popover-border-width) solid var(--phoenix-popover-header-bg) -} - -.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow { - right: calc(-1*(var(--phoenix-popover-arrow-height)) - var(--phoenix-popover-border-width)); - width: var(--phoenix-popover-arrow-height); - height: var(--phoenix-popover-arrow-width) -} - -.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after { - border-width: calc(var(--phoenix-popover-arrow-width)*.5) 0 calc(var(--phoenix-popover-arrow-width)*.5) var(--phoenix-popover-arrow-height) -} - -.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before { - right: 0; - border-left-color: var(--phoenix-popover-arrow-border) -} - -.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after { - right: var(--phoenix-popover-border-width); - border-left-color: var(--phoenix-popover-bg) -} - -.popover-header { - padding: var(--phoenix-popover-header-padding-y) var(--phoenix-popover-header-padding-x); - margin-bottom: 0; - font-size: var(--phoenix-popover-header-font-size); - color: var(--phoenix-popover-header-color); - background-color: var(--phoenix-popover-header-bg); - border-bottom: var(--phoenix-popover-border-width) solid var(--phoenix-popover-border-color); - border-top-left-radius: var(--phoenix-popover-inner-border-radius); - border-top-right-radius: var(--phoenix-popover-inner-border-radius) -} - -.popover-header:empty { - display: none -} - -.popover-body { - padding: var(--phoenix-popover-body-padding-y) var(--phoenix-popover-body-padding-x); - color: var(--phoenix-popover-body-color) -} - -.carousel { - position: relative -} - -.carousel.pointer-event { - -ms-touch-action: pan-y; - touch-action: pan-y -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden -} - -.carousel-inner::after { - display: block; - clear: both; - content: "" -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transition: -webkit-transform .8s ease-in-out; - transition: -webkit-transform .8s ease-in-out; - -o-transition: transform .8s ease-in-out; - transition: transform .8s ease-in-out; - transition: transform .8s ease-in-out, -webkit-transform .8s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .carousel-item { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.carousel-item.active,.carousel-item-next,.carousel-item-prev { - display: block -} - -.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end { - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) -} - -.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start { - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) -} - -.carousel-fade .carousel-item { - opacity: 0; - -webkit-transition-property: opacity; - -o-transition-property: opacity; - transition-property: opacity; - -webkit-transform: none; - -ms-transform: none; - transform: none -} - -.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end { - z-index: 1; - opacity: 1 -} - -.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end { - z-index: 0; - opacity: 0; - -webkit-transition: opacity 0s .8s; - -o-transition: opacity 0s .8s; - transition: opacity 0s .8s -} - -@media(prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.carousel-control-prev,.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 15%; - padding: 0; - color: #fff; - text-align: center; - background: none; - border: 0; - opacity: .5; - -webkit-transition: opacity .15s ease; - -o-transition: opacity .15s ease; - transition: opacity .15s ease -} - -@media(prefers-reduced-motion: reduce) { - .carousel-control-prev,.carousel-control-next { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: .9 -} - -.carousel-control-prev { - left: 0 -} - -.carousel-control-next { - right: 0 -} - -.carousel-control-prev-icon,.carousel-control-next-icon { - display: inline-block; - width: 2rem; - height: 2rem; - background-repeat: no-repeat; - background-position: 50%; - background-size: 100% 100% -} - -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 2; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding: 0; - margin-right: 15%; - margin-bottom: 1rem; - margin-left: 15%; - list-style: none -} - -.carousel-indicators [data-bs-target] { - -webkit-box-sizing: content-box; - box-sizing: content-box; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - width: 30px; - height: 3px; - padding: 0; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #3874ff; - background-clip: padding-box; - border: 0; - border-top: 10px solid rgba(0,0,0,0); - border-bottom: 10px solid rgba(0,0,0,0); - opacity: .5; - -webkit-transition: opacity .6s ease; - -o-transition: opacity .6s ease; - transition: opacity .6s ease -} - -@media(prefers-reduced-motion: reduce) { - .carousel-indicators [data-bs-target] { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.carousel-indicators .active { - opacity: 1 -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 1.25rem; - left: 15%; - padding-top: 1.25rem; - padding-bottom: 1.25rem; - color: #fff; - text-align: center -} - -.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon { - -webkit-filter: invert(1) grayscale(100); - filter: invert(1) grayscale(100) -} - -.carousel-dark .carousel-indicators [data-bs-target] { - background-color: #000 -} - -.carousel-dark .carousel-caption { - color: #000 -} - -.spinner-grow,.spinner-border { - display: inline-block; - width: var(--phoenix-spinner-width); - height: var(--phoenix-spinner-height); - vertical-align: var(--phoenix-spinner-vertical-align); - border-radius: 50%; - -webkit-animation: var(--phoenix-spinner-animation-speed) linear infinite var(--phoenix-spinner-animation-name); - animation: var(--phoenix-spinner-animation-speed) linear infinite var(--phoenix-spinner-animation-name) -} - -@-webkit-keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg) /* rtl:ignore */ - } -} - -@keyframes spinner-border { - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg) /* rtl:ignore */ - } -} - -.spinner-border { - --phoenix-spinner-width: 2rem; - --phoenix-spinner-height: 2rem; - --phoenix-spinner-vertical-align: -0.125em; - --phoenix-spinner-border-width: 0.25em; - --phoenix-spinner-animation-speed: 0.75s; - --phoenix-spinner-animation-name: spinner-border; - border: var(--phoenix-spinner-border-width) solid currentcolor; - border-right-color: rgba(0,0,0,0) -} - -.spinner-border-sm { - --phoenix-spinner-width: 1.35rem; - --phoenix-spinner-height: 1.35rem; - --phoenix-spinner-border-width: 0.2em -} - -@-webkit-keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0) - } - - 50% { - opacity: 1; - -webkit-transform: none; - transform: none - } -} - -@keyframes spinner-grow { - 0% { - -webkit-transform: scale(0); - transform: scale(0) - } - - 50% { - opacity: 1; - -webkit-transform: none; - transform: none - } -} - -.spinner-grow { - --phoenix-spinner-width: 2rem; - --phoenix-spinner-height: 2rem; - --phoenix-spinner-vertical-align: -0.125em; - --phoenix-spinner-animation-speed: 0.75s; - --phoenix-spinner-animation-name: spinner-grow; - background-color: currentcolor; - opacity: 0 -} - -.spinner-grow-sm { - --phoenix-spinner-width: 1.35rem; - --phoenix-spinner-height: 1.35rem -} - -@media(prefers-reduced-motion: reduce) { - .spinner-border,.spinner-grow { - --phoenix-spinner-animation-speed: 1.5s - } -} - -.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm { - --phoenix-offcanvas-zindex: 1045; - --phoenix-offcanvas-width: 458px; - --phoenix-offcanvas-height: 30vh; - --phoenix-offcanvas-padding-x: 1rem; - --phoenix-offcanvas-padding-y: 1rem; - --phoenix-offcanvas-color: ; - --phoenix-offcanvas-bg: var(--phoenix-white); - --phoenix-offcanvas-border-width: 1px; - --phoenix-offcanvas-border-color: transparent; - --phoenix-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) -} - -@media(max-width: 575.98px) { - .offcanvas-sm { - position:fixed; - bottom: 0; - z-index: var(--phoenix-offcanvas-zindex); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 100%; - color: var(--phoenix-offcanvas-color); - visibility: hidden; - background-color: var(--phoenix-offcanvas-bg); - background-clip: padding-box; - outline: 0; - -webkit-box-shadow: var(--phoenix-offcanvas-box-shadow); - box-shadow: var(--phoenix-offcanvas-box-shadow); - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out - } -} - -@media(max-width: 575.98px)and (prefers-reduced-motion: reduce) { - .offcanvas-sm { - -webkit-transition:none; - -o-transition: none; - transition: none - } -} - -@media(max-width: 575.98px) { - .offcanvas-sm.offcanvas-start { - top:0; - left: 0; - width: var(--phoenix-offcanvas-width); - border-right: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) - } -} - -@media(max-width: 575.98px) { - .offcanvas-sm.offcanvas-end { - top:0; - right: 0; - width: var(--phoenix-offcanvas-width); - border-left: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) - } -} - -@media(max-width: 575.98px) { - .offcanvas-sm.offcanvas-top { - top:0; - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-bottom: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) - } -} - -@media(max-width: 575.98px) { - .offcanvas-sm.offcanvas-bottom { - right:0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-top: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) - } -} - -@media(max-width: 575.98px) { - .offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding) { - -webkit-transform:none; - -ms-transform: none; - transform: none - } -} - -@media(max-width: 575.98px) { - .offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show { - visibility:visible - } -} - -@media(min-width: 576px) { - .offcanvas-sm { - --phoenix-offcanvas-height: auto; - --phoenix-offcanvas-border-width: 0; - background-color: rgba(0,0,0,0) !important - } - - .offcanvas-sm .offcanvas-header { - display: none - } - - .offcanvas-sm .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: rgba(0,0,0,0) !important - } -} - -@media(max-width: 767.98px) { - .offcanvas-md { - position:fixed; - bottom: 0; - z-index: var(--phoenix-offcanvas-zindex); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 100%; - color: var(--phoenix-offcanvas-color); - visibility: hidden; - background-color: var(--phoenix-offcanvas-bg); - background-clip: padding-box; - outline: 0; - -webkit-box-shadow: var(--phoenix-offcanvas-box-shadow); - box-shadow: var(--phoenix-offcanvas-box-shadow); - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out - } -} - -@media(max-width: 767.98px)and (prefers-reduced-motion: reduce) { - .offcanvas-md { - -webkit-transition:none; - -o-transition: none; - transition: none - } -} - -@media(max-width: 767.98px) { - .offcanvas-md.offcanvas-start { - top:0; - left: 0; - width: var(--phoenix-offcanvas-width); - border-right: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) - } -} - -@media(max-width: 767.98px) { - .offcanvas-md.offcanvas-end { - top:0; - right: 0; - width: var(--phoenix-offcanvas-width); - border-left: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) - } -} - -@media(max-width: 767.98px) { - .offcanvas-md.offcanvas-top { - top:0; - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-bottom: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) - } -} - -@media(max-width: 767.98px) { - .offcanvas-md.offcanvas-bottom { - right:0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-top: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) - } -} - -@media(max-width: 767.98px) { - .offcanvas-md.showing,.offcanvas-md.show:not(.hiding) { - -webkit-transform:none; - -ms-transform: none; - transform: none - } -} - -@media(max-width: 767.98px) { - .offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show { - visibility:visible - } -} - -@media(min-width: 768px) { - .offcanvas-md { - --phoenix-offcanvas-height: auto; - --phoenix-offcanvas-border-width: 0; - background-color: rgba(0,0,0,0) !important - } - - .offcanvas-md .offcanvas-header { - display: none - } - - .offcanvas-md .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: rgba(0,0,0,0) !important - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg { - position:fixed; - bottom: 0; - z-index: var(--phoenix-offcanvas-zindex); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 100%; - color: var(--phoenix-offcanvas-color); - visibility: hidden; - background-color: var(--phoenix-offcanvas-bg); - background-clip: padding-box; - outline: 0; - -webkit-box-shadow: var(--phoenix-offcanvas-box-shadow); - box-shadow: var(--phoenix-offcanvas-box-shadow); - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out - } -} - -@media(max-width: 991.98px)and (prefers-reduced-motion: reduce) { - .offcanvas-lg { - -webkit-transition:none; - -o-transition: none; - transition: none - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg.offcanvas-start { - top:0; - left: 0; - width: var(--phoenix-offcanvas-width); - border-right: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg.offcanvas-end { - top:0; - right: 0; - width: var(--phoenix-offcanvas-width); - border-left: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg.offcanvas-top { - top:0; - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-bottom: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg.offcanvas-bottom { - right:0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-top: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding) { - -webkit-transform:none; - -ms-transform: none; - transform: none - } -} - -@media(max-width: 991.98px) { - .offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show { - visibility:visible - } -} - -@media(min-width: 992px) { - .offcanvas-lg { - --phoenix-offcanvas-height: auto; - --phoenix-offcanvas-border-width: 0; - background-color: rgba(0,0,0,0) !important - } - - .offcanvas-lg .offcanvas-header { - display: none - } - - .offcanvas-lg .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: rgba(0,0,0,0) !important - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl { - position:fixed; - bottom: 0; - z-index: var(--phoenix-offcanvas-zindex); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 100%; - color: var(--phoenix-offcanvas-color); - visibility: hidden; - background-color: var(--phoenix-offcanvas-bg); - background-clip: padding-box; - outline: 0; - -webkit-box-shadow: var(--phoenix-offcanvas-box-shadow); - box-shadow: var(--phoenix-offcanvas-box-shadow); - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out - } -} - -@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce) { - .offcanvas-xl { - -webkit-transition:none; - -o-transition: none; - transition: none - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl.offcanvas-start { - top:0; - left: 0; - width: var(--phoenix-offcanvas-width); - border-right: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl.offcanvas-end { - top:0; - right: 0; - width: var(--phoenix-offcanvas-width); - border-left: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl.offcanvas-top { - top:0; - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-bottom: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl.offcanvas-bottom { - right:0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-top: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding) { - -webkit-transform:none; - -ms-transform: none; - transform: none - } -} - -@media(max-width: 1199.98px) { - .offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show { - visibility:visible - } -} - -@media(min-width: 1200px) { - .offcanvas-xl { - --phoenix-offcanvas-height: auto; - --phoenix-offcanvas-border-width: 0; - background-color: rgba(0,0,0,0) !important - } - - .offcanvas-xl .offcanvas-header { - display: none - } - - .offcanvas-xl .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: rgba(0,0,0,0) !important - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl { - position:fixed; - bottom: 0; - z-index: var(--phoenix-offcanvas-zindex); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 100%; - color: var(--phoenix-offcanvas-color); - visibility: hidden; - background-color: var(--phoenix-offcanvas-bg); - background-clip: padding-box; - outline: 0; - -webkit-box-shadow: var(--phoenix-offcanvas-box-shadow); - box-shadow: var(--phoenix-offcanvas-box-shadow); - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out - } -} - -@media(max-width: 1539.98px)and (prefers-reduced-motion: reduce) { - .offcanvas-xxl { - -webkit-transition:none; - -o-transition: none; - transition: none - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl.offcanvas-start { - top:0; - left: 0; - width: var(--phoenix-offcanvas-width); - border-right: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl.offcanvas-end { - top:0; - right: 0; - width: var(--phoenix-offcanvas-width); - border-left: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl.offcanvas-top { - top:0; - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-bottom: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl.offcanvas-bottom { - right:0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-top: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding) { - -webkit-transform:none; - -ms-transform: none; - transform: none - } -} - -@media(max-width: 1539.98px) { - .offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show { - visibility:visible - } -} - -@media(min-width: 1540px) { - .offcanvas-xxl { - --phoenix-offcanvas-height: auto; - --phoenix-offcanvas-border-width: 0; - background-color: rgba(0,0,0,0) !important - } - - .offcanvas-xxl .offcanvas-header { - display: none - } - - .offcanvas-xxl .offcanvas-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 0; - overflow-y: visible; - background-color: rgba(0,0,0,0) !important - } -} - -.offcanvas { - position: fixed; - bottom: 0; - z-index: var(--phoenix-offcanvas-zindex); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 100%; - color: var(--phoenix-offcanvas-color); - visibility: hidden; - background-color: var(--phoenix-offcanvas-bg); - background-clip: padding-box; - outline: 0; - -webkit-box-shadow: var(--phoenix-offcanvas-box-shadow); - box-shadow: var(--phoenix-offcanvas-box-shadow); - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .offcanvas { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.offcanvas.offcanvas-start { - top: 0; - left: 0; - width: var(--phoenix-offcanvas-width); - border-right: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) -} - -.offcanvas.offcanvas-end { - top: 0; - right: 0; - width: var(--phoenix-offcanvas-width); - border-left: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%) -} - -.offcanvas.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-bottom: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) -} - -.offcanvas.offcanvas-bottom { - right: 0; - left: 0; - height: var(--phoenix-offcanvas-height); - max-height: 100%; - border-top: var(--phoenix-offcanvas-border-width) solid var(--phoenix-offcanvas-border-color); - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) -} - -.offcanvas.showing,.offcanvas.show:not(.hiding) { - -webkit-transform: none; - -ms-transform: none; - transform: none -} - -.offcanvas.showing,.offcanvas.hiding,.offcanvas.show { - visibility: visible -} - -.offcanvas-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000 -} - -.offcanvas-backdrop.fade { - opacity: 0 -} - -.offcanvas-backdrop.show { - opacity: .5 -} - -.offcanvas-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: var(--phoenix-offcanvas-padding-y) var(--phoenix-offcanvas-padding-x) -} - -.offcanvas-header .btn-close { - padding: calc(var(--phoenix-offcanvas-padding-y)*.5) calc(var(--phoenix-offcanvas-padding-x)*.5); - margin-top: calc(-0.5*var(--phoenix-offcanvas-padding-y)); - margin-right: calc(-0.5*var(--phoenix-offcanvas-padding-x)); - margin-bottom: calc(-0.5*var(--phoenix-offcanvas-padding-y)) -} - -.offcanvas-title { - margin-bottom: 0; - line-height: 1.49 -} - -.offcanvas-body { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - padding: var(--phoenix-offcanvas-padding-y) var(--phoenix-offcanvas-padding-x); - overflow-y: auto -} - -.placeholder { - display: inline-block; - min-height: 1em; - vertical-align: middle; - cursor: wait; - background-color: currentcolor; - opacity: .5 -} - -.placeholder.btn::before,.google-map-control-btn .placeholder.zoomIn::before,.google-map-control-btn .placeholder.zoomOut::before,.tox .tox-dialog__footer .placeholder.tox-button:last-child::before,.tox .tox-dialog__footer .placeholder.tox-button--secondary::before,.tox .placeholder.tox-button-secondary::before,.tox .placeholder.tox-button::before,[data-list] .placeholder.page::before,.table-list .placeholder.page::before { - display: inline-block; - content: "" -} - -.placeholder-xs { - min-height: .6em -} - -.placeholder-sm { - min-height: .8em -} - -.placeholder-lg { - min-height: 1.2em -} - -.placeholder-glow .placeholder { - -webkit-animation: placeholder-glow 2s ease-in-out infinite; - animation: placeholder-glow 2s ease-in-out infinite -} - -@-webkit-keyframes placeholder-glow { - 50% { - opacity: .2 - } -} - -@keyframes placeholder-glow { - 50% { - opacity: .2 - } -} - -.placeholder-wave { - -webkit-mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.8) 75%, #000000 95%); - mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.8) 75%, #000000 95%); - -webkit-mask-size: 200% 100%; - mask-size: 200% 100%; - -webkit-animation: placeholder-wave 2s linear infinite; - animation: placeholder-wave 2s linear infinite -} - -@-webkit-keyframes placeholder-wave { - 100% { - -webkit-mask-position: -200% 0%; - mask-position: -200% 0% - } -} - -@keyframes placeholder-wave { - 100% { - -webkit-mask-position: -200% 0%; - mask-position: -200% 0% - } -} - -.clearfix::after { - display: block; - clear: both; - content: "" -} - -.ratio { - position: relative; - width: 100% -} - -.ratio::before { - display: block; - padding-top: var(--phoenix-aspect-ratio); - content: "" -} - -.ratio>* { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100% -} - -.ratio-1x1 { - --phoenix-aspect-ratio: 100% -} - -.ratio-4x3 { - --phoenix-aspect-ratio: 75% -} - -.ratio-16x9 { - --phoenix-aspect-ratio: 56.25% -} - -.ratio-21x9 { - --phoenix-aspect-ratio: 42.8571428571% -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030 -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030 -} - -.sticky-top { - position: sticky; - top: 0; - z-index: 1020 -} - -.sticky-bottom { - position: sticky; - bottom: 0; - z-index: 1020 -} - -@media(min-width: 576px) { - .sticky-sm-top { - position:sticky; - top: 0; - z-index: 1020 - } - - .sticky-sm-bottom { - position: sticky; - bottom: 0; - z-index: 1020 - } -} - -@media(min-width: 768px) { - .sticky-md-top { - position:sticky; - top: 0; - z-index: 1020 - } - - .sticky-md-bottom { - position: sticky; - bottom: 0; - z-index: 1020 - } -} - -@media(min-width: 992px) { - .sticky-lg-top { - position:sticky; - top: 0; - z-index: 1020 - } - - .sticky-lg-bottom { - position: sticky; - bottom: 0; - z-index: 1020 - } -} - -@media(min-width: 1200px) { - .sticky-xl-top { - position:sticky; - top: 0; - z-index: 1020 - } - - .sticky-xl-bottom { - position: sticky; - bottom: 0; - z-index: 1020 - } -} - -@media(min-width: 1540px) { - .sticky-xxl-top { - position:sticky; - top: 0; - z-index: 1020 - } - - .sticky-xxl-bottom { - position: sticky; - bottom: 0; - z-index: 1020 - } -} - -.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within) { - position: absolute !important; - width: 1px !important; - height: 1px !important; - padding: 0 !important; - margin: -1px !important; - overflow: hidden !important; - clip: rect(0, 0, 0, 0) !important; - white-space: nowrap !important; - border: 0 !important -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - content: "" -} - -.text-truncate { - overflow: hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap -} - -.hstack { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -ms-flex-item-align: stretch; - align-self: stretch -} - -.vstack { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-item-align: stretch; - align-self: stretch -} - -.vr { - display: inline-block; - -ms-flex-item-align: stretch; - align-self: stretch; - width: 1px; - min-height: 1em; - background-color: currentcolor; - opacity: 1 -} - -.text-bg-primary { - color: #fff !important; - background-color: RGBA(56, 116, 255, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-secondary { - color: #fff !important; - background-color: RGBA(49, 55, 74, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-success { - color: #fff !important; - background-color: RGBA(37, 176, 3, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-info { - color: #fff !important; - background-color: RGBA(0, 151, 235, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-warning { - color: #fff !important; - background-color: RGBA(229, 120, 11, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-danger { - color: #fff !important; - background-color: RGBA(237, 32, 0, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-light { - color: #000 !important; - background-color: RGBA(239, 242, 246, var(--phoenix-bg-opacity, 1)) !important -} - -.text-bg-dark { - color: #fff !important; - background-color: RGBA(20, 24, 36, var(--phoenix-bg-opacity, 1)) !important -} - -.align-baseline { - vertical-align: baseline !important -} - -.align-top { - vertical-align: top !important -} - -.align-middle { - vertical-align: middle !important -} - -.align-bottom { - vertical-align: bottom !important -} - -.align-text-bottom { - vertical-align: text-bottom !important -} - -.align-text-top { - vertical-align: text-top !important -} - -.float-start { - float: left !important -} - -.float-end { - float: right !important -} - -.float-none { - float: none !important -} - -.opacity-0 { - opacity: 0 !important -} - -.opacity-25 { - opacity: .25 !important -} - -.opacity-50 { - opacity: .5 !important -} - -.opacity-75 { - opacity: .75 !important -} - -.opacity-85 { - opacity: .85 !important -} - -.opacity-100 { - opacity: 1 !important -} - -.overflow-auto { - overflow: auto !important -} - -.overflow-hidden { - overflow: hidden !important -} - -.overflow-visible { - overflow: visible !important -} - -.overflow-scroll { - overflow: scroll !important -} - -.d-inline { - display: inline !important -} - -.d-inline-block { - display: inline-block !important -} - -.d-block { - display: block !important -} - -.d-grid { - display: grid !important -} - -.d-table { - display: table !important -} - -.d-table-row { - display: table-row !important -} - -.d-table-cell { - display: table-cell !important -} - -.d-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important -} - -.d-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important -} - -.d-none { - display: none !important -} - -.shadow { - -webkit-box-shadow: 0px 2px 4px -2px rgba(36,40,46,.08) !important; - box-shadow: 0px 2px 4px -2px rgba(36,40,46,.08) !important -} - -.shadow-sm { - -webkit-box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important; - box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) !important -} - -.shadow-lg { - -webkit-box-shadow: 0 1rem 3rem rgba(0,0,0,.175) !important; - box-shadow: 0 1rem 3rem rgba(0,0,0,.175) !important -} - -.shadow-none { - -webkit-box-shadow: none !important; - box-shadow: none !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 -} - -.top-0 { - top: 0 !important -} - -.top-50 { - top: 50% !important -} - -.top-100 { - top: 100% !important -} - -.bottom-0 { - bottom: 0 !important -} - -.bottom-50 { - bottom: 50% !important -} - -.bottom-100 { - bottom: 100% !important -} - -.start-0 { - left: 0 !important -} - -.start-50 { - left: 50% !important -} - -.start-100 { - left: 100% !important -} - -.end-0 { - right: 0 !important -} - -.end-50 { - right: 50% !important -} - -.end-100 { - right: 100% !important -} - -.translate-middle { - -webkit-transform: translateX(-50%) translateY(-50%) !important; - -ms-transform: translateX(-50%) translateY(-50%) !important; - transform: translateX(-50%) translateY(-50%) !important -} - -.translate-middle-x { - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important -} - -.translate-middle-y { - -webkit-transform: translateY(-50%) !important; - -ms-transform: translateY(-50%) !important; - transform: translateY(-50%) !important -} - -.border { - border: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-0 { - border: 0 !important -} - -.border-top { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-top-0 { - border-top: 0 !important -} - -.border-end { - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-end-0 { - border-right: 0 !important -} - -.border-bottom { - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-bottom-0 { - border-bottom: 0 !important -} - -.border-start { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-start-0 { - border-left: 0 !important -} - -.border-soft { - --phoenix-border-color: rgba(var(--phoenix-soft-rgb), var(--phoenix-border-opacity)) -} - -.border-100 { - --phoenix-border-color: rgba(var(--phoenix-100-rgb), var(--phoenix-border-opacity)) -} - -.border-200 { - --phoenix-border-color: rgba(var(--phoenix-200-rgb), var(--phoenix-border-opacity)) -} - -.border-300 { - --phoenix-border-color: rgba(var(--phoenix-300-rgb), var(--phoenix-border-opacity)) -} - -.border-400 { - --phoenix-border-color: rgba(var(--phoenix-400-rgb), var(--phoenix-border-opacity)) -} - -.border-500 { - --phoenix-border-color: rgba(var(--phoenix-500-rgb), var(--phoenix-border-opacity)) -} - -.border-600 { - --phoenix-border-color: rgba(var(--phoenix-600-rgb), var(--phoenix-border-opacity)) -} - -.border-700 { - --phoenix-border-color: rgba(var(--phoenix-700-rgb), var(--phoenix-border-opacity)) -} - -.border-800 { - --phoenix-border-color: rgba(var(--phoenix-800-rgb), var(--phoenix-border-opacity)) -} - -.border-900 { - --phoenix-border-color: rgba(var(--phoenix-900-rgb), var(--phoenix-border-opacity)) -} - -.border-1000 { - --phoenix-border-color: rgba(var(--phoenix-1000-rgb), var(--phoenix-border-opacity)) -} - -.border-1100 { - --phoenix-border-color: rgba(var(--phoenix-1100-rgb), var(--phoenix-border-opacity)) -} - -.border-facebook { - --phoenix-border-color: rgba(var(--phoenix-facebook-rgb), var(--phoenix-border-opacity)) -} - -.border-google-plus { - --phoenix-border-color: rgba(var(--phoenix-google-plus-rgb), var(--phoenix-border-opacity)) -} - -.border-twitter { - --phoenix-border-color: rgba(var(--phoenix-twitter-rgb), var(--phoenix-border-opacity)) -} - -.border-linkedin { - --phoenix-border-color: rgba(var(--phoenix-linkedin-rgb), var(--phoenix-border-opacity)) -} - -.border-youtube { - --phoenix-border-color: rgba(var(--phoenix-youtube-rgb), var(--phoenix-border-opacity)) -} - -.border-github { - --phoenix-border-color: rgba(var(--phoenix-github-rgb), var(--phoenix-border-opacity)) -} - -.border-bootstrap { - --phoenix-border-color: rgba(var(--phoenix-bootstrap-rgb), var(--phoenix-border-opacity)) -} - -.border-css3 { - --phoenix-border-color: rgba(var(--phoenix-css3-rgb), var(--phoenix-border-opacity)) -} - -.border-html5 { - --phoenix-border-color: rgba(var(--phoenix-html5-rgb), var(--phoenix-border-opacity)) -} - -.border-sass { - --phoenix-border-color: rgba(var(--phoenix-sass-rgb), var(--phoenix-border-opacity)) -} - -.border-gulp { - --phoenix-border-color: rgba(var(--phoenix-gulp-rgb), var(--phoenix-border-opacity)) -} - -.border-w3c { - --phoenix-border-color: rgba(var(--phoenix-w3c-rgb), var(--phoenix-border-opacity)) -} - -.border-primary { - --phoenix-border-color: rgba(var(--phoenix-primary-rgb), var(--phoenix-border-opacity)) -} - -.border-secondary { - --phoenix-border-color: rgba(var(--phoenix-secondary-rgb), var(--phoenix-border-opacity)) -} - -.border-success { - --phoenix-border-color: rgba(var(--phoenix-success-rgb), var(--phoenix-border-opacity)) -} - -.border-info { - --phoenix-border-color: rgba(var(--phoenix-info-rgb), var(--phoenix-border-opacity)) -} - -.border-warning { - --phoenix-border-color: rgba(var(--phoenix-warning-rgb), var(--phoenix-border-opacity)) -} - -.border-danger { - --phoenix-border-color: rgba(var(--phoenix-danger-rgb), var(--phoenix-border-opacity)) -} - -.border-light { - --phoenix-border-color: rgba(var(--phoenix-light-rgb), var(--phoenix-border-opacity)) -} - -.border-dark { - --phoenix-border-color: rgba(var(--phoenix-dark-rgb), var(--phoenix-border-opacity)) -} - -.border-primary-soft { - --phoenix-border-color: rgba(var(--phoenix-primary-soft-rgb), var(--phoenix-border-opacity)) -} - -.border-primary-100 { - --phoenix-border-color: rgba(var(--phoenix-primary-100-rgb), var(--phoenix-border-opacity)) -} - -.border-primary-200 { - --phoenix-border-color: rgba(var(--phoenix-primary-200-rgb), var(--phoenix-border-opacity)) -} - -.border-primary-300 { - --phoenix-border-color: rgba(var(--phoenix-primary-300-rgb), var(--phoenix-border-opacity)) -} - -.border-primary-500 { - --phoenix-border-color: rgba(var(--phoenix-primary-500-rgb), var(--phoenix-border-opacity)) -} - -.border-primary-600 { - --phoenix-border-color: rgba(var(--phoenix-primary-600-rgb), var(--phoenix-border-opacity)) -} - -.border-warning-soft { - --phoenix-border-color: rgba(var(--phoenix-warning-soft-rgb), var(--phoenix-border-opacity)) -} - -.border-warning-100 { - --phoenix-border-color: rgba(var(--phoenix-warning-100-rgb), var(--phoenix-border-opacity)) -} - -.border-warning-200 { - --phoenix-border-color: rgba(var(--phoenix-warning-200-rgb), var(--phoenix-border-opacity)) -} - -.border-warning-300 { - --phoenix-border-color: rgba(var(--phoenix-warning-300-rgb), var(--phoenix-border-opacity)) -} - -.border-warning-500 { - --phoenix-border-color: rgba(var(--phoenix-warning-500-rgb), var(--phoenix-border-opacity)) -} - -.border-warning-600 { - --phoenix-border-color: rgba(var(--phoenix-warning-600-rgb), var(--phoenix-border-opacity)) -} - -.border-danger-300 { - --phoenix-border-color: rgba(var(--phoenix-danger-300-rgb), var(--phoenix-border-opacity)) -} - -.border-danger-100 { - --phoenix-border-color: rgba(var(--phoenix-danger-100-rgb), var(--phoenix-border-opacity)) -} - -.border-danger-200 { - --phoenix-border-color: rgba(var(--phoenix-danger-200-rgb), var(--phoenix-border-opacity)) -} - -.border-danger-500 { - --phoenix-border-color: rgba(var(--phoenix-danger-500-rgb), var(--phoenix-border-opacity)) -} - -.border-danger-600 { - --phoenix-border-color: rgba(var(--phoenix-danger-600-rgb), var(--phoenix-border-opacity)) -} - -.border-success-100 { - --phoenix-border-color: rgba(var(--phoenix-success-100-rgb), var(--phoenix-border-opacity)) -} - -.border-success-200 { - --phoenix-border-color: rgba(var(--phoenix-success-200-rgb), var(--phoenix-border-opacity)) -} - -.border-success-300 { - --phoenix-border-color: rgba(var(--phoenix-success-300-rgb), var(--phoenix-border-opacity)) -} - -.border-success-500 { - --phoenix-border-color: rgba(var(--phoenix-success-500-rgb), var(--phoenix-border-opacity)) -} - -.border-success-600 { - --phoenix-border-color: rgba(var(--phoenix-success-600-rgb), var(--phoenix-border-opacity)) -} - -.border-info-100 { - --phoenix-border-color: rgba(var(--phoenix-info-100-rgb), var(--phoenix-border-opacity)) -} - -.border-info-200 { - --phoenix-border-color: rgba(var(--phoenix-info-200-rgb), var(--phoenix-border-opacity)) -} - -.border-info-300 { - --phoenix-border-color: rgba(var(--phoenix-info-300-rgb), var(--phoenix-border-opacity)) -} - -.border-info-500 { - --phoenix-border-color: rgba(var(--phoenix-info-500-rgb), var(--phoenix-border-opacity)) -} - -.border-info-600 { - --phoenix-border-color: rgba(var(--phoenix-info-600-rgb), var(--phoenix-border-opacity)) -} - -.border-white { - --phoenix-border-color: rgba(var(--phoenix-white-rgb), var(--phoenix-border-opacity)) -} - -.border-black { - --phoenix-border-color: rgba(var(--phoenix-black-rgb), var(--phoenix-border-opacity)) -} - -.border-1 { - --phoenix-border-width: 1px -} - -.border-2 { - --phoenix-border-width: 2px -} - -.border-3 { - --phoenix-border-width: 3px -} - -.border-4 { - --phoenix-border-width: 4px -} - -.border-5 { - --phoenix-border-width: 5px -} - -.border-opacity-10 { - --phoenix-border-opacity: 0.1 -} - -.border-opacity-25 { - --phoenix-border-opacity: 0.25 -} - -.border-opacity-50 { - --phoenix-border-opacity: 0.5 -} - -.border-opacity-75 { - --phoenix-border-opacity: 0.75 -} - -.border-opacity-100 { - --phoenix-border-opacity: 1 -} - -.w-25 { - width: 25% !important -} - -.w-30 { - width: 30% !important -} - -.w-50 { - width: 50% !important -} - -.w-60 { - width: 60% !important -} - -.w-70 { - width: 70% !important -} - -.w-75 { - width: 75% !important -} - -.w-100 { - width: 100% !important -} - -.w-max-content { - width: -webkit-max-content !important; - width: -moz-max-content !important; - width: max-content !important -} - -.w-min-content { - width: -webkit-min-content !important; - width: -moz-min-content !important; - width: min-content !important -} - -.w-auto { - width: auto !important -} - -.mw-100 { - max-width: 100% !important -} - -.vw-25 { - width: 25vw !important -} - -.vw-50 { - width: 50vw !important -} - -.vw-75 { - width: 75vw !important -} - -.vw-100 { - width: 100vw !important -} - -.min-vw-100 { - min-width: 100vw !important -} - -.h-25 { - height: 25% !important -} - -.h-30 { - height: 30% !important -} - -.h-50 { - height: 50% !important -} - -.h-60 { - height: 60% !important -} - -.h-70 { - height: 70% !important -} - -.h-75 { - height: 75% !important -} - -.h-100 { - height: 100% !important -} - -.h-max-content { - height: -webkit-max-content !important; - height: -moz-max-content !important; - height: max-content !important -} - -.h-min-content { - height: -webkit-min-content !important; - height: -moz-min-content !important; - height: min-content !important -} - -.h-auto { - height: auto !important -} - -.mh-100 { - max-height: 100% !important -} - -.vh-25 { - height: 25vh !important -} - -.vh-50 { - height: 50vh !important -} - -.vh-75 { - height: 75vh !important -} - -.vh-100 { - height: 100vh !important -} - -.min-vh-25 { - min-height: 25vh !important -} - -.min-vh-50 { - min-height: 50vh !important -} - -.min-vh-75 { - min-height: 75vh !important -} - -.min-vh-100 { - min-height: 100vh !important -} - -.flex-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important -} - -.flex-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important -} - -.flex-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important -} - -.flex-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important -} - -.flex-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important -} - -.flex-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important -} - -.flex-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important -} - -.flex-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important -} - -.flex-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important -} - -.flex-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important -} - -.flex-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important -} - -.flex-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important -} - -.justify-content-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important -} - -.justify-content-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important -} - -.justify-content-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important -} - -.justify-content-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important -} - -.justify-content-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important -} - -.justify-content-evenly { - -webkit-box-pack: space-evenly !important; - -ms-flex-pack: space-evenly !important; - justify-content: space-evenly !important -} - -.align-items-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important -} - -.align-items-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important -} - -.align-items-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important -} - -.align-items-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important -} - -.align-items-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important -} - -.align-content-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important -} - -.align-content-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important -} - -.align-content-center { - -ms-flex-line-pack: center !important; - align-content: center !important -} - -.align-content-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important -} - -.align-content-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important -} - -.align-content-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important -} - -.align-self-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important -} - -.align-self-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important -} - -.align-self-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important -} - -.align-self-center { - -ms-flex-item-align: center !important; - align-self: center !important -} - -.align-self-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important -} - -.align-self-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important -} - -.order-first { - -webkit-box-ordinal-group: 0 !important; - -ms-flex-order: -1 !important; - order: -1 !important -} - -.order-0 { - -webkit-box-ordinal-group: 1 !important; - -ms-flex-order: 0 !important; - order: 0 !important -} - -.order-1 { - -webkit-box-ordinal-group: 2 !important; - -ms-flex-order: 1 !important; - order: 1 !important -} - -.order-2 { - -webkit-box-ordinal-group: 3 !important; - -ms-flex-order: 2 !important; - order: 2 !important -} - -.order-3 { - -webkit-box-ordinal-group: 4 !important; - -ms-flex-order: 3 !important; - order: 3 !important -} - -.order-4 { - -webkit-box-ordinal-group: 5 !important; - -ms-flex-order: 4 !important; - order: 4 !important -} - -.order-5 { - -webkit-box-ordinal-group: 6 !important; - -ms-flex-order: 5 !important; - order: 5 !important -} - -.order-last { - -webkit-box-ordinal-group: 7 !important; - -ms-flex-order: 6 !important; - order: 6 !important -} - -.m-0 { - margin: 0 !important -} - -.m-1 { - margin: .25rem !important -} - -.m-2 { - margin: .5rem !important -} - -.m-3 { - margin: 1rem !important -} - -.m-4 { - margin: 1.5rem !important -} - -.m-5 { - margin: 2rem !important -} - -.m-6 { - margin: 2.5rem !important -} - -.m-7 { - margin: 3rem !important -} - -.m-8 { - margin: 3.5rem !important -} - -.m-9 { - margin: 4rem !important -} - -.m-10 { - margin: 4.5rem !important -} - -.m-11 { - margin: 5rem !important -} - -.m-12 { - margin: 6rem !important -} - -.m-13 { - margin: 6.5rem !important -} - -.m-14 { - margin: 7rem !important -} - -.m-15 { - margin: 7.5rem !important -} - -.m-auto { - margin: auto !important -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important -} - -.mx-1 { - margin-right: .25rem !important; - margin-left: .25rem !important -} - -.mx-2 { - margin-right: .5rem !important; - margin-left: .5rem !important -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important -} - -.mx-5 { - margin-right: 2rem !important; - margin-left: 2rem !important -} - -.mx-6 { - margin-right: 2.5rem !important; - margin-left: 2.5rem !important -} - -.mx-7 { - margin-right: 3rem !important; - margin-left: 3rem !important -} - -.mx-8 { - margin-right: 3.5rem !important; - margin-left: 3.5rem !important -} - -.mx-9 { - margin-right: 4rem !important; - margin-left: 4rem !important -} - -.mx-10 { - margin-right: 4.5rem !important; - margin-left: 4.5rem !important -} - -.mx-11 { - margin-right: 5rem !important; - margin-left: 5rem !important -} - -.mx-12 { - margin-right: 6rem !important; - margin-left: 6rem !important -} - -.mx-13 { - margin-right: 6.5rem !important; - margin-left: 6.5rem !important -} - -.mx-14 { - margin-right: 7rem !important; - margin-left: 7rem !important -} - -.mx-15 { - margin-right: 7.5rem !important; - margin-left: 7.5rem !important -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important -} - -.my-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important -} - -.my-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important -} - -.my-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important -} - -.my-6 { - margin-top: 2.5rem !important; - margin-bottom: 2.5rem !important -} - -.my-7 { - margin-top: 3rem !important; - margin-bottom: 3rem !important -} - -.my-8 { - margin-top: 3.5rem !important; - margin-bottom: 3.5rem !important -} - -.my-9 { - margin-top: 4rem !important; - margin-bottom: 4rem !important -} - -.my-10 { - margin-top: 4.5rem !important; - margin-bottom: 4.5rem !important -} - -.my-11 { - margin-top: 5rem !important; - margin-bottom: 5rem !important -} - -.my-12 { - margin-top: 6rem !important; - margin-bottom: 6rem !important -} - -.my-13 { - margin-top: 6.5rem !important; - margin-bottom: 6.5rem !important -} - -.my-14 { - margin-top: 7rem !important; - margin-bottom: 7rem !important -} - -.my-15 { - margin-top: 7.5rem !important; - margin-bottom: 7.5rem !important -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important -} - -.mt-0 { - margin-top: 0 !important -} - -.mt-1 { - margin-top: .25rem !important -} - -.mt-2 { - margin-top: .5rem !important -} - -.mt-3 { - margin-top: 1rem !important -} - -.mt-4 { - margin-top: 1.5rem !important -} - -.mt-5 { - margin-top: 2rem !important -} - -.mt-6 { - margin-top: 2.5rem !important -} - -.mt-7 { - margin-top: 3rem !important -} - -.mt-8 { - margin-top: 3.5rem !important -} - -.mt-9 { - margin-top: 4rem !important -} - -.mt-10 { - margin-top: 4.5rem !important -} - -.mt-11 { - margin-top: 5rem !important -} - -.mt-12 { - margin-top: 6rem !important -} - -.mt-13 { - margin-top: 6.5rem !important -} - -.mt-14 { - margin-top: 7rem !important -} - -.mt-15 { - margin-top: 7.5rem !important -} - -.mt-auto { - margin-top: auto !important -} - -.me-0 { - margin-right: 0 !important -} - -.me-1 { - margin-right: .25rem !important -} - -.me-2 { - margin-right: .5rem !important -} - -.me-3 { - margin-right: 1rem !important -} - -.me-4 { - margin-right: 1.5rem !important -} - -.me-5 { - margin-right: 2rem !important -} - -.me-6 { - margin-right: 2.5rem !important -} - -.me-7 { - margin-right: 3rem !important -} - -.me-8 { - margin-right: 3.5rem !important -} - -.me-9 { - margin-right: 4rem !important -} - -.me-10 { - margin-right: 4.5rem !important -} - -.me-11 { - margin-right: 5rem !important -} - -.me-12 { - margin-right: 6rem !important -} - -.me-13 { - margin-right: 6.5rem !important -} - -.me-14 { - margin-right: 7rem !important -} - -.me-15 { - margin-right: 7.5rem !important -} - -.me-auto { - margin-right: auto !important -} - -.mb-0 { - margin-bottom: 0 !important -} - -.mb-1 { - margin-bottom: .25rem !important -} - -.mb-2 { - margin-bottom: .5rem !important -} - -.mb-3 { - margin-bottom: 1rem !important -} - -.mb-4 { - margin-bottom: 1.5rem !important -} - -.mb-5 { - margin-bottom: 2rem !important -} - -.mb-6 { - margin-bottom: 2.5rem !important -} - -.mb-7 { - margin-bottom: 3rem !important -} - -.mb-8 { - margin-bottom: 3.5rem !important -} - -.mb-9 { - margin-bottom: 4rem !important -} - -.mb-10 { - margin-bottom: 4.5rem !important -} - -.mb-11 { - margin-bottom: 5rem !important -} - -.mb-12 { - margin-bottom: 6rem !important -} - -.mb-13 { - margin-bottom: 6.5rem !important -} - -.mb-14 { - margin-bottom: 7rem !important -} - -.mb-15 { - margin-bottom: 7.5rem !important -} - -.mb-auto { - margin-bottom: auto !important -} - -.ms-0 { - margin-left: 0 !important -} - -.ms-1 { - margin-left: .25rem !important -} - -.ms-2 { - margin-left: .5rem !important -} - -.ms-3 { - margin-left: 1rem !important -} - -.ms-4 { - margin-left: 1.5rem !important -} - -.ms-5 { - margin-left: 2rem !important -} - -.ms-6 { - margin-left: 2.5rem !important -} - -.ms-7 { - margin-left: 3rem !important -} - -.ms-8 { - margin-left: 3.5rem !important -} - -.ms-9 { - margin-left: 4rem !important -} - -.ms-10 { - margin-left: 4.5rem !important -} - -.ms-11 { - margin-left: 5rem !important -} - -.ms-12 { - margin-left: 6rem !important -} - -.ms-13 { - margin-left: 6.5rem !important -} - -.ms-14 { - margin-left: 7rem !important -} - -.ms-15 { - margin-left: 7.5rem !important -} - -.ms-auto { - margin-left: auto !important -} - -.m-n1 { - margin: -0.25rem !important -} - -.m-n2 { - margin: -0.5rem !important -} - -.m-n3 { - margin: -1rem !important -} - -.m-n4 { - margin: -1.5rem !important -} - -.m-n5 { - margin: -2rem !important -} - -.m-n6 { - margin: -2.5rem !important -} - -.m-n7 { - margin: -3rem !important -} - -.m-n8 { - margin: -3.5rem !important -} - -.m-n9 { - margin: -4rem !important -} - -.m-n10 { - margin: -4.5rem !important -} - -.m-n11 { - margin: -5rem !important -} - -.m-n12 { - margin: -6rem !important -} - -.m-n13 { - margin: -6.5rem !important -} - -.m-n14 { - margin: -7rem !important -} - -.m-n15 { - margin: -7.5rem !important -} - -.mx-n1 { - margin-right: -0.25rem !important; - margin-left: -0.25rem !important -} - -.mx-n2 { - margin-right: -0.5rem !important; - margin-left: -0.5rem !important -} - -.mx-n3 { - margin-right: -1rem !important; - margin-left: -1rem !important -} - -.mx-n4 { - margin-right: -1.5rem !important; - margin-left: -1.5rem !important -} - -.mx-n5 { - margin-right: -2rem !important; - margin-left: -2rem !important -} - -.mx-n6 { - margin-right: -2.5rem !important; - margin-left: -2.5rem !important -} - -.mx-n7 { - margin-right: -3rem !important; - margin-left: -3rem !important -} - -.mx-n8 { - margin-right: -3.5rem !important; - margin-left: -3.5rem !important -} - -.mx-n9 { - margin-right: -4rem !important; - margin-left: -4rem !important -} - -.mx-n10 { - margin-right: -4.5rem !important; - margin-left: -4.5rem !important -} - -.mx-n11 { - margin-right: -5rem !important; - margin-left: -5rem !important -} - -.mx-n12 { - margin-right: -6rem !important; - margin-left: -6rem !important -} - -.mx-n13 { - margin-right: -6.5rem !important; - margin-left: -6.5rem !important -} - -.mx-n14 { - margin-right: -7rem !important; - margin-left: -7rem !important -} - -.mx-n15 { - margin-right: -7.5rem !important; - margin-left: -7.5rem !important -} - -.my-n1 { - margin-top: -0.25rem !important; - margin-bottom: -0.25rem !important -} - -.my-n2 { - margin-top: -0.5rem !important; - margin-bottom: -0.5rem !important -} - -.my-n3 { - margin-top: -1rem !important; - margin-bottom: -1rem !important -} - -.my-n4 { - margin-top: -1.5rem !important; - margin-bottom: -1.5rem !important -} - -.my-n5 { - margin-top: -2rem !important; - margin-bottom: -2rem !important -} - -.my-n6 { - margin-top: -2.5rem !important; - margin-bottom: -2.5rem !important -} - -.my-n7 { - margin-top: -3rem !important; - margin-bottom: -3rem !important -} - -.my-n8 { - margin-top: -3.5rem !important; - margin-bottom: -3.5rem !important -} - -.my-n9 { - margin-top: -4rem !important; - margin-bottom: -4rem !important -} - -.my-n10 { - margin-top: -4.5rem !important; - margin-bottom: -4.5rem !important -} - -.my-n11 { - margin-top: -5rem !important; - margin-bottom: -5rem !important -} - -.my-n12 { - margin-top: -6rem !important; - margin-bottom: -6rem !important -} - -.my-n13 { - margin-top: -6.5rem !important; - margin-bottom: -6.5rem !important -} - -.my-n14 { - margin-top: -7rem !important; - margin-bottom: -7rem !important -} - -.my-n15 { - margin-top: -7.5rem !important; - margin-bottom: -7.5rem !important -} - -.mt-n1 { - margin-top: -0.25rem !important -} - -.mt-n2 { - margin-top: -0.5rem !important -} - -.mt-n3 { - margin-top: -1rem !important -} - -.mt-n4 { - margin-top: -1.5rem !important -} - -.mt-n5 { - margin-top: -2rem !important -} - -.mt-n6 { - margin-top: -2.5rem !important -} - -.mt-n7 { - margin-top: -3rem !important -} - -.mt-n8 { - margin-top: -3.5rem !important -} - -.mt-n9 { - margin-top: -4rem !important -} - -.mt-n10 { - margin-top: -4.5rem !important -} - -.mt-n11 { - margin-top: -5rem !important -} - -.mt-n12 { - margin-top: -6rem !important -} - -.mt-n13 { - margin-top: -6.5rem !important -} - -.mt-n14 { - margin-top: -7rem !important -} - -.mt-n15 { - margin-top: -7.5rem !important -} - -.me-n1 { - margin-right: -0.25rem !important -} - -.me-n2 { - margin-right: -0.5rem !important -} - -.me-n3 { - margin-right: -1rem !important -} - -.me-n4 { - margin-right: -1.5rem !important -} - -.me-n5 { - margin-right: -2rem !important -} - -.me-n6 { - margin-right: -2.5rem !important -} - -.me-n7 { - margin-right: -3rem !important -} - -.me-n8 { - margin-right: -3.5rem !important -} - -.me-n9 { - margin-right: -4rem !important -} - -.me-n10 { - margin-right: -4.5rem !important -} - -.me-n11 { - margin-right: -5rem !important -} - -.me-n12 { - margin-right: -6rem !important -} - -.me-n13 { - margin-right: -6.5rem !important -} - -.me-n14 { - margin-right: -7rem !important -} - -.me-n15 { - margin-right: -7.5rem !important -} - -.mb-n1 { - margin-bottom: -0.25rem !important -} - -.mb-n2 { - margin-bottom: -0.5rem !important -} - -.mb-n3 { - margin-bottom: -1rem !important -} - -.mb-n4 { - margin-bottom: -1.5rem !important -} - -.mb-n5 { - margin-bottom: -2rem !important -} - -.mb-n6 { - margin-bottom: -2.5rem !important -} - -.mb-n7 { - margin-bottom: -3rem !important -} - -.mb-n8 { - margin-bottom: -3.5rem !important -} - -.mb-n9 { - margin-bottom: -4rem !important -} - -.mb-n10 { - margin-bottom: -4.5rem !important -} - -.mb-n11 { - margin-bottom: -5rem !important -} - -.mb-n12 { - margin-bottom: -6rem !important -} - -.mb-n13 { - margin-bottom: -6.5rem !important -} - -.mb-n14 { - margin-bottom: -7rem !important -} - -.mb-n15 { - margin-bottom: -7.5rem !important -} - -.ms-n1 { - margin-left: -0.25rem !important -} - -.ms-n2 { - margin-left: -0.5rem !important -} - -.ms-n3 { - margin-left: -1rem !important -} - -.ms-n4 { - margin-left: -1.5rem !important -} - -.ms-n5 { - margin-left: -2rem !important -} - -.ms-n6 { - margin-left: -2.5rem !important -} - -.ms-n7 { - margin-left: -3rem !important -} - -.ms-n8 { - margin-left: -3.5rem !important -} - -.ms-n9 { - margin-left: -4rem !important -} - -.ms-n10 { - margin-left: -4.5rem !important -} - -.ms-n11 { - margin-left: -5rem !important -} - -.ms-n12 { - margin-left: -6rem !important -} - -.ms-n13 { - margin-left: -6.5rem !important -} - -.ms-n14 { - margin-left: -7rem !important -} - -.ms-n15 { - margin-left: -7.5rem !important -} - -.p-0 { - padding: 0 !important -} - -.p-1 { - padding: .25rem !important -} - -.p-2 { - padding: .5rem !important -} - -.p-3 { - padding: 1rem !important -} - -.p-4 { - padding: 1.5rem !important -} - -.p-5 { - padding: 2rem !important -} - -.p-6 { - padding: 2.5rem !important -} - -.p-7 { - padding: 3rem !important -} - -.p-8 { - padding: 3.5rem !important -} - -.p-9 { - padding: 4rem !important -} - -.p-10 { - padding: 4.5rem !important -} - -.p-11 { - padding: 5rem !important -} - -.p-12 { - padding: 6rem !important -} - -.p-13 { - padding: 6.5rem !important -} - -.p-14 { - padding: 7rem !important -} - -.p-15 { - padding: 7.5rem !important -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important -} - -.px-1 { - padding-right: .25rem !important; - padding-left: .25rem !important -} - -.px-2 { - padding-right: .5rem !important; - padding-left: .5rem !important -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important -} - -.px-5 { - padding-right: 2rem !important; - padding-left: 2rem !important -} - -.px-6 { - padding-right: 2.5rem !important; - padding-left: 2.5rem !important -} - -.px-7 { - padding-right: 3rem !important; - padding-left: 3rem !important -} - -.px-8 { - padding-right: 3.5rem !important; - padding-left: 3.5rem !important -} - -.px-9 { - padding-right: 4rem !important; - padding-left: 4rem !important -} - -.px-10 { - padding-right: 4.5rem !important; - padding-left: 4.5rem !important -} - -.px-11 { - padding-right: 5rem !important; - padding-left: 5rem !important -} - -.px-12 { - padding-right: 6rem !important; - padding-left: 6rem !important -} - -.px-13 { - padding-right: 6.5rem !important; - padding-left: 6.5rem !important -} - -.px-14 { - padding-right: 7rem !important; - padding-left: 7rem !important -} - -.px-15 { - padding-right: 7.5rem !important; - padding-left: 7.5rem !important -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important -} - -.py-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important -} - -.py-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important -} - -.py-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important -} - -.py-6 { - padding-top: 2.5rem !important; - padding-bottom: 2.5rem !important -} - -.py-7 { - padding-top: 3rem !important; - padding-bottom: 3rem !important -} - -.py-8 { - padding-top: 3.5rem !important; - padding-bottom: 3.5rem !important -} - -.py-9 { - padding-top: 4rem !important; - padding-bottom: 4rem !important -} - -.py-10 { - padding-top: 4.5rem !important; - padding-bottom: 4.5rem !important -} - -.py-11 { - padding-top: 5rem !important; - padding-bottom: 5rem !important -} - -.py-12 { - padding-top: 6rem !important; - padding-bottom: 6rem !important -} - -.py-13 { - padding-top: 6.5rem !important; - padding-bottom: 6.5rem !important -} - -.py-14 { - padding-top: 7rem !important; - padding-bottom: 7rem !important -} - -.py-15 { - padding-top: 7.5rem !important; - padding-bottom: 7.5rem !important -} - -.pt-0 { - padding-top: 0 !important -} - -.pt-1 { - padding-top: .25rem !important -} - -.pt-2 { - padding-top: .5rem !important -} - -.pt-3 { - padding-top: 1rem !important -} - -.pt-4 { - padding-top: 1.5rem !important -} - -.pt-5 { - padding-top: 2rem !important -} - -.pt-6 { - padding-top: 2.5rem !important -} - -.pt-7 { - padding-top: 3rem !important -} - -.pt-8 { - padding-top: 3.5rem !important -} - -.pt-9 { - padding-top: 4rem !important -} - -.pt-10 { - padding-top: 4.5rem !important -} - -.pt-11 { - padding-top: 5rem !important -} - -.pt-12 { - padding-top: 6rem !important -} - -.pt-13 { - padding-top: 6.5rem !important -} - -.pt-14 { - padding-top: 7rem !important -} - -.pt-15 { - padding-top: 7.5rem !important -} - -.pe-0 { - padding-right: 0 !important -} - -.pe-1 { - padding-right: .25rem !important -} - -.pe-2 { - padding-right: .5rem !important -} - -.pe-3 { - padding-right: 1rem !important -} - -.pe-4 { - padding-right: 1.5rem !important -} - -.pe-5 { - padding-right: 2rem !important -} - -.pe-6 { - padding-right: 2.5rem !important -} - -.pe-7 { - padding-right: 3rem !important -} - -.pe-8 { - padding-right: 3.5rem !important -} - -.pe-9 { - padding-right: 4rem !important -} - -.pe-10 { - padding-right: 4.5rem !important -} - -.pe-11 { - padding-right: 5rem !important -} - -.pe-12 { - padding-right: 6rem !important -} - -.pe-13 { - padding-right: 6.5rem !important -} - -.pe-14 { - padding-right: 7rem !important -} - -.pe-15 { - padding-right: 7.5rem !important -} - -.pb-0 { - padding-bottom: 0 !important -} - -.pb-1 { - padding-bottom: .25rem !important -} - -.pb-2 { - padding-bottom: .5rem !important -} - -.pb-3 { - padding-bottom: 1rem !important -} - -.pb-4 { - padding-bottom: 1.5rem !important -} - -.pb-5 { - padding-bottom: 2rem !important -} - -.pb-6 { - padding-bottom: 2.5rem !important -} - -.pb-7 { - padding-bottom: 3rem !important -} - -.pb-8 { - padding-bottom: 3.5rem !important -} - -.pb-9 { - padding-bottom: 4rem !important -} - -.pb-10 { - padding-bottom: 4.5rem !important -} - -.pb-11 { - padding-bottom: 5rem !important -} - -.pb-12 { - padding-bottom: 6rem !important -} - -.pb-13 { - padding-bottom: 6.5rem !important -} - -.pb-14 { - padding-bottom: 7rem !important -} - -.pb-15 { - padding-bottom: 7.5rem !important -} - -.ps-0 { - padding-left: 0 !important -} - -.ps-1 { - padding-left: .25rem !important -} - -.ps-2 { - padding-left: .5rem !important -} - -.ps-3 { - padding-left: 1rem !important -} - -.ps-4 { - padding-left: 1.5rem !important -} - -.ps-5 { - padding-left: 2rem !important -} - -.ps-6 { - padding-left: 2.5rem !important -} - -.ps-7 { - padding-left: 3rem !important -} - -.ps-8 { - padding-left: 3.5rem !important -} - -.ps-9 { - padding-left: 4rem !important -} - -.ps-10 { - padding-left: 4.5rem !important -} - -.ps-11 { - padding-left: 5rem !important -} - -.ps-12 { - padding-left: 6rem !important -} - -.ps-13 { - padding-left: 6.5rem !important -} - -.ps-14 { - padding-left: 7rem !important -} - -.ps-15 { - padding-left: 7.5rem !important -} - -.gap-0 { - gap: 0 !important -} - -.gap-1 { - gap: .25rem !important -} - -.gap-2 { - gap: .5rem !important -} - -.gap-3 { - gap: 1rem !important -} - -.gap-4 { - gap: 1.5rem !important -} - -.gap-5 { - gap: 2rem !important -} - -.gap-6 { - gap: 2.5rem !important -} - -.gap-7 { - gap: 3rem !important -} - -.gap-8 { - gap: 3.5rem !important -} - -.gap-9 { - gap: 4rem !important -} - -.gap-10 { - gap: 4.5rem !important -} - -.gap-11 { - gap: 5rem !important -} - -.gap-12 { - gap: 6rem !important -} - -.gap-13 { - gap: 6.5rem !important -} - -.gap-14 { - gap: 7rem !important -} - -.gap-15 { - gap: 7.5rem !important -} - -.font-monospace { - font-family: var(--phoenix-font-monospace) !important -} - -.fs--3 { - font-size: .512rem !important -} - -.fs--2 { - font-size: .64rem !important -} - -.fs--1 { - font-size: .8rem !important -} - -.fs-0 { - font-size: 1rem !important -} - -.fs-1 { - font-size: 1.25rem !important -} - -.fs-2 { - font-size: 1.5625rem !important -} - -.fs-3 { - font-size: 1.953125rem !important -} - -.fs-4 { - font-size: 2.44140625rem !important -} - -.fs-5 { - font-size: 3.0517578125rem !important -} - -.fs-6 { - font-size: 3.8146972656rem !important -} - -.fs-7 { - font-size: 4.768371582rem !important -} - -.fst-italic { - font-style: italic !important -} - -.fst-normal { - font-style: normal !important -} - -.fw-thin { - font-weight: 100 !important -} - -.fw-lighter { - font-weight: 200 !important -} - -.fw-light { - font-weight: 300 !important -} - -.fw-normal { - font-weight: 400 !important -} - -.fw-medium { - font-weight: 500 !important -} - -.fw-semi-bold { - font-weight: 600 !important -} - -.fw-bold { - font-weight: 700 !important -} - -.fw-bolder { - font-weight: 800 !important -} - -.fw-black { - font-weight: 900 !important -} - -.lh-1 { - line-height: 1 !important -} - -.lh-sm { - line-height: 1.2 !important -} - -.lh-base { - line-height: 1.49 !important -} - -.lh-lg { - line-height: 1.4 !important -} - -.text-start { - text-align: left !important -} - -.text-end { - text-align: right !important -} - -.text-center { - text-align: center !important -} - -.text-decoration-none { - text-decoration: none !important -} - -.text-decoration-underline { - text-decoration: underline !important -} - -.text-decoration-line-through { - text-decoration: line-through !important -} - -.text-lowercase { - text-transform: lowercase !important -} - -.text-uppercase { - text-transform: uppercase !important -} - -.text-capitalize { - text-transform: capitalize !important -} - -.text-none { - text-transform: none !important -} - -.text-wrap { - white-space: normal !important -} - -.text-nowrap { - white-space: nowrap !important -} - -.text-break { - word-wrap: break-word !important; - word-break: break-word !important -} - -.text-soft { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-soft-rgb), var(--phoenix-text-opacity)) !important -} - -.text-100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-200 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-200-rgb), var(--phoenix-text-opacity)) !important -} - -.text-300 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-300-rgb), var(--phoenix-text-opacity)) !important -} - -.text-400 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-400-rgb), var(--phoenix-text-opacity)) !important -} - -.text-500 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-500-rgb), var(--phoenix-text-opacity)) !important -} - -.text-600 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-600-rgb), var(--phoenix-text-opacity)) !important -} - -.text-700 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-700-rgb), var(--phoenix-text-opacity)) !important -} - -.text-800 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-800-rgb), var(--phoenix-text-opacity)) !important -} - -.text-900 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-900-rgb), var(--phoenix-text-opacity)) !important -} - -.text-1000 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-1000-rgb), var(--phoenix-text-opacity)) !important -} - -.text-1100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-1100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-facebook { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-facebook-rgb), var(--phoenix-text-opacity)) !important -} - -.text-google-plus { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-google-plus-rgb), var(--phoenix-text-opacity)) !important -} - -.text-twitter { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-twitter-rgb), var(--phoenix-text-opacity)) !important -} - -.text-linkedin { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-linkedin-rgb), var(--phoenix-text-opacity)) !important -} - -.text-youtube { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-youtube-rgb), var(--phoenix-text-opacity)) !important -} - -.text-github { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-github-rgb), var(--phoenix-text-opacity)) !important -} - -.text-bootstrap { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-bootstrap-rgb), var(--phoenix-text-opacity)) !important -} - -.text-css3 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-css3-rgb), var(--phoenix-text-opacity)) !important -} - -.text-html5 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-html5-rgb), var(--phoenix-text-opacity)) !important -} - -.text-sass { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-sass-rgb), var(--phoenix-text-opacity)) !important -} - -.text-gulp { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-gulp-rgb), var(--phoenix-text-opacity)) !important -} - -.text-w3c { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-w3c-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-rgb), var(--phoenix-text-opacity)) !important -} - -.text-secondary { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-secondary-rgb), var(--phoenix-text-opacity)) !important -} - -.text-success { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-success-rgb), var(--phoenix-text-opacity)) !important -} - -.text-info { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-info-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-rgb), var(--phoenix-text-opacity)) !important -} - -.text-danger { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-danger-rgb), var(--phoenix-text-opacity)) !important -} - -.text-light { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-light-rgb), var(--phoenix-text-opacity)) !important -} - -.text-dark { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-dark-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary-soft { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-soft-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary-100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary-200 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-200-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary-300 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-300-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary-500 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-500-rgb), var(--phoenix-text-opacity)) !important -} - -.text-primary-600 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-primary-600-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning-soft { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-soft-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning-100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning-200 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-200-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning-300 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-300-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning-500 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-500-rgb), var(--phoenix-text-opacity)) !important -} - -.text-warning-600 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-warning-600-rgb), var(--phoenix-text-opacity)) !important -} - -.text-danger-300 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-danger-300-rgb), var(--phoenix-text-opacity)) !important -} - -.text-danger-100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-danger-100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-danger-200 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-danger-200-rgb), var(--phoenix-text-opacity)) !important -} - -.text-danger-500 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-danger-500-rgb), var(--phoenix-text-opacity)) !important -} - -.text-danger-600 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-danger-600-rgb), var(--phoenix-text-opacity)) !important -} - -.text-success-100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-success-100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-success-200 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-success-200-rgb), var(--phoenix-text-opacity)) !important -} - -.text-success-300 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-success-300-rgb), var(--phoenix-text-opacity)) !important -} - -.text-success-500 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-success-500-rgb), var(--phoenix-text-opacity)) !important -} - -.text-success-600 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-success-600-rgb), var(--phoenix-text-opacity)) !important -} - -.text-info-100 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-info-100-rgb), var(--phoenix-text-opacity)) !important -} - -.text-info-200 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-info-200-rgb), var(--phoenix-text-opacity)) !important -} - -.text-info-300 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-info-300-rgb), var(--phoenix-text-opacity)) !important -} - -.text-info-500 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-info-500-rgb), var(--phoenix-text-opacity)) !important -} - -.text-info-600 { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-info-600-rgb), var(--phoenix-text-opacity)) !important -} - -.text-white { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-white-rgb), var(--phoenix-text-opacity)) !important -} - -.text-black { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-black-rgb), var(--phoenix-text-opacity)) !important -} - -.text-body { - --phoenix-text-opacity: 1; - color: rgba(var(--phoenix-body-color-rgb), var(--phoenix-text-opacity)) !important -} - -.text-muted { - --phoenix-text-opacity: 1; - color: #8a94ad !important -} - -.text-black-50 { - --phoenix-text-opacity: 1; - color: rgba(0,0,0,.5) !important -} - -.text-white-50 { - --phoenix-text-opacity: 1; - color: rgba(255,255,255,.5) !important -} - -.text-reset { - --phoenix-text-opacity: 1; - color: inherit !important -} - -.text-opacity-25 { - --phoenix-text-opacity: 0.25 -} - -.text-opacity-50 { - --phoenix-text-opacity: 0.5 -} - -.text-opacity-75 { - --phoenix-text-opacity: 0.75 -} - -.text-opacity-100 { - --phoenix-text-opacity: 1 -} - -.bg-soft { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-soft-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-200 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-200-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-300 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-300-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-400 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-400-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-500 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-500-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-600 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-600-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-700 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-700-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-800 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-800-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-900 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-900-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-1000 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-1000-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-1100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-1100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-facebook { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-facebook-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-google-plus { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-google-plus-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-twitter { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-twitter-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-linkedin { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-linkedin-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-youtube { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-youtube-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-github { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-github-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-bootstrap { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-bootstrap-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-css3 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-css3-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-html5 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-html5-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-sass { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-sass-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-gulp { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-gulp-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-w3c { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-w3c-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-secondary { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-secondary-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-success { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-success-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-info { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-info-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-danger { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-danger-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-light { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-light-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-dark { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-dark-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary-soft { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-soft-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary-100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary-200 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-200-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary-300 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-300-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary-500 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-500-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-primary-600 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-primary-600-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning-soft { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-soft-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning-100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning-200 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-200-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning-300 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-300-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning-500 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-500-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-warning-600 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-warning-600-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-danger-300 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-danger-300-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-danger-100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-danger-100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-danger-200 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-danger-200-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-danger-500 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-danger-500-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-danger-600 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-danger-600-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-success-100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-success-100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-success-200 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-success-200-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-success-300 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-success-300-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-success-500 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-success-500-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-success-600 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-success-600-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-info-100 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-info-100-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-info-200 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-info-200-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-info-300 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-info-300-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-info-500 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-info-500-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-info-600 { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-info-600-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-white { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-white-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-black { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-black-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-body { - --phoenix-bg-opacity: 1; - background-color: rgba(var(--phoenix-body-bg-rgb), var(--phoenix-bg-opacity)) !important -} - -.bg-transparent { - --phoenix-bg-opacity: 1; - background-color: rgba(0,0,0,0) !important -} - -.bg-opacity-10 { - --phoenix-bg-opacity: 0.1 -} - -.bg-opacity-25 { - --phoenix-bg-opacity: 0.25 -} - -.bg-opacity-50 { - --phoenix-bg-opacity: 0.5 -} - -.bg-opacity-75 { - --phoenix-bg-opacity: 0.75 -} - -.bg-opacity-100 { - --phoenix-bg-opacity: 1 -} - -.bg-gradient { - background-image: var(--phoenix-gradient) !important -} - -.user-select-all { - -webkit-user-select: all !important; - -moz-user-select: all !important; - -ms-user-select: all !important; - user-select: all !important -} - -.user-select-auto { - -webkit-user-select: auto !important; - -moz-user-select: auto !important; - -ms-user-select: auto !important; - user-select: auto !important -} - -.user-select-none { - -webkit-user-select: none !important; - -moz-user-select: none !important; - -ms-user-select: none !important; - user-select: none !important -} - -.pe-none { - pointer-events: none !important -} - -.pe-auto { - pointer-events: auto !important -} - -.rounded { - border-radius: var(--phoenix-border-radius) !important -} - -.rounded-0 { - border-radius: 0 !important -} - -.rounded-1 { - border-radius: var(--phoenix-border-radius-sm) !important -} - -.rounded-2 { - border-radius: var(--phoenix-border-radius) !important -} - -.rounded-3 { - border-radius: var(--phoenix-border-radius-lg) !important -} - -.rounded-4 { - border-radius: var(--phoenix-border-radius-xl) !important -} - -.rounded-5 { - border-radius: var(--phoenix-border-radius-2xl) !important -} - -.rounded-circle { - border-radius: 50% !important -} - -.rounded-pill { - border-radius: var(--phoenix-border-radius-pill) !important -} - -.rounded-top { - border-top-left-radius: .375rem !important; - border-top-right-radius: .375rem !important -} - -.rounded-top-lg { - border-top-left-radius: .5rem !important; - border-top-right-radius: .5rem !important -} - -.rounded-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important -} - -.rounded-end { - border-top-right-radius: .375rem !important; - border-bottom-right-radius: .375rem !important -} - -.rounded-end-lg { - border-top-right-radius: .5rem !important; - border-bottom-right-radius: .5rem !important -} - -.rounded-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important -} - -.rounded-bottom { - border-bottom-right-radius: .375rem !important; - border-bottom-left-radius: .375rem !important -} - -.rounded-bottom-lg { - border-bottom-right-radius: .5rem !important; - border-bottom-left-radius: .5rem !important -} - -.rounded-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important -} - -.rounded-start { - border-bottom-left-radius: .375rem !important; - border-top-left-radius: .375rem !important -} - -.rounded-start-lg { - border-bottom-left-radius: .5rem !important; - border-top-left-radius: .5rem !important -} - -.rounded-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important -} - -.visible { - visibility: visible !important -} - -.invisible { - visibility: hidden !important -} - -.max-vh-25 { - max-height: 25vh !important -} - -.max-vh-50 { - max-height: 50vh !important -} - -.max-vh-75 { - max-height: 75vh !important -} - -.max-vh-100 { - max-height: 100vh !important -} - -.border-x { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-x-0 { - border-left: 0 !important; - border-right: 0 !important -} - -.border-y { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important -} - -.border-y-0 { - border-top: 0 !important; - border-bottom: 0 !important -} - -.rounded-0 { - border-radius: 0 !important -} - -.bg-soft-primary { - background-color: #f5f8ff !important -} - -.bg-soft-secondary { - background-color: #f5f7fa !important -} - -.bg-soft-success { - background-color: #f0fdec !important -} - -.bg-soft-info { - background-color: #f0faff !important -} - -.bg-soft-warning { - background-color: #fff6e0 !important -} - -.bg-soft-danger { - background-color: #ffedeb !important -} - -.bg-light-primary { - background-color: #e5edff !important -} - -.bg-light-secondary { - background-color: #e3e6ed !important -} - -.bg-light-success { - background-color: #d9fbd0 !important -} - -.bg-light-info { - background-color: #c7ebff !important -} - -.bg-light-warning { - background-color: #ffefca !important -} - -.bg-light-danger { - background-color: #ffe0db !important -} - -.ls-1 { - letter-spacing: 1 !important -} - -.ls-2 { - letter-spacing: .165em !important -} - -.ls-3 { - letter-spacing: .25em !important -} - -.pointer-events-none { - pointer-events: none !important -} - -.pointer-events-auto { - pointer-events: auto !important -} - -.cursor-pointer { - cursor: pointer !important -} - -.cursor-default { - cursor: default !important -} - -.z-index--1 { - z-index: -1 !important -} - -.z-index-0 { - z-index: 0 !important -} - -.z-index-1 { - z-index: 1 !important -} - -.z-index-2 { - z-index: 2 !important -} - -.z-index-3 { - z-index: 3 !important -} - -.z-index-4 { - z-index: 4 !important -} - -.z-index-5 { - z-index: 5 !important -} - -@media(min-width: 576px) { - .float-sm-start { - float:left !important - } - - .float-sm-end { - float: right !important - } - - .float-sm-none { - float: none !important - } - - .opacity-sm-0 { - opacity: 0 !important - } - - .opacity-sm-25 { - opacity: .25 !important - } - - .opacity-sm-50 { - opacity: .5 !important - } - - .opacity-sm-75 { - opacity: .75 !important - } - - .opacity-sm-85 { - opacity: .85 !important - } - - .opacity-sm-100 { - opacity: 1 !important - } - - .d-sm-inline { - display: inline !important - } - - .d-sm-inline-block { - display: inline-block !important - } - - .d-sm-block { - display: block !important - } - - .d-sm-grid { - display: grid !important - } - - .d-sm-table { - display: table !important - } - - .d-sm-table-row { - display: table-row !important - } - - .d-sm-table-cell { - display: table-cell !important - } - - .d-sm-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-sm-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } - - .d-sm-none { - display: none !important - } - - .position-sm-static { - position: static !important - } - - .position-sm-relative { - position: relative !important - } - - .position-sm-absolute { - position: absolute !important - } - - .position-sm-fixed { - position: fixed !important - } - - .position-sm-sticky { - position: sticky !important - } - - .translate-sm-middle { - -webkit-transform: translateX(-50%) translateY(-50%) !important; - -ms-transform: translateX(-50%) translateY(-50%) !important; - transform: translateX(-50%) translateY(-50%) !important - } - - .translate-sm-middle-x { - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important - } - - .translate-sm-middle-y { - -webkit-transform: translateY(-50%) !important; - -ms-transform: translateY(-50%) !important; - transform: translateY(-50%) !important - } - - .border-sm { - border: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-sm-0 { - border: 0 !important - } - - .border-top-sm { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-top-sm-0 { - border-top: 0 !important - } - - .border-end-sm { - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-end-sm-0 { - border-right: 0 !important - } - - .border-bottom-sm { - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-bottom-sm-0 { - border-bottom: 0 !important - } - - .border-start-sm { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-start-sm-0 { - border-left: 0 !important - } - - .w-sm-25 { - width: 25% !important - } - - .w-sm-30 { - width: 30% !important - } - - .w-sm-50 { - width: 50% !important - } - - .w-sm-60 { - width: 60% !important - } - - .w-sm-70 { - width: 70% !important - } - - .w-sm-75 { - width: 75% !important - } - - .w-sm-100 { - width: 100% !important - } - - .w-sm-max-content { - width: -webkit-max-content !important; - width: -moz-max-content !important; - width: max-content !important - } - - .w-sm-min-content { - width: -webkit-min-content !important; - width: -moz-min-content !important; - width: min-content !important - } - - .w-sm-auto { - width: auto !important - } - - .vw-sm-25 { - width: 25vw !important - } - - .vw-sm-50 { - width: 50vw !important - } - - .vw-sm-75 { - width: 75vw !important - } - - .vw-sm-100 { - width: 100vw !important - } - - .h-sm-25 { - height: 25% !important - } - - .h-sm-30 { - height: 30% !important - } - - .h-sm-50 { - height: 50% !important - } - - .h-sm-60 { - height: 60% !important - } - - .h-sm-70 { - height: 70% !important - } - - .h-sm-75 { - height: 75% !important - } - - .h-sm-100 { - height: 100% !important - } - - .h-sm-max-content { - height: -webkit-max-content !important; - height: -moz-max-content !important; - height: max-content !important - } - - .h-sm-min-content { - height: -webkit-min-content !important; - height: -moz-min-content !important; - height: min-content !important - } - - .h-sm-auto { - height: auto !important - } - - .vh-sm-25 { - height: 25vh !important - } - - .vh-sm-50 { - height: 50vh !important - } - - .vh-sm-75 { - height: 75vh !important - } - - .vh-sm-100 { - height: 100vh !important - } - - .min-vh-sm-25 { - min-height: 25vh !important - } - - .min-vh-sm-50 { - min-height: 50vh !important - } - - .min-vh-sm-75 { - min-height: 75vh !important - } - - .min-vh-sm-100 { - min-height: 100vh !important - } - - .flex-sm-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-sm-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-sm-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-sm-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-sm-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-sm-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-sm-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-sm-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-sm-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .flex-sm-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-sm-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-sm-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .justify-content-sm-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-sm-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-sm-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-sm-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-sm-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .justify-content-sm-evenly { - -webkit-box-pack: space-evenly !important; - -ms-flex-pack: space-evenly !important; - justify-content: space-evenly !important - } - - .align-items-sm-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-sm-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-sm-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-sm-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-sm-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-sm-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-sm-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-sm-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-sm-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-sm-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-sm-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-sm-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-sm-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-sm-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-sm-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-sm-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-sm-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } - - .order-sm-first { - -webkit-box-ordinal-group: 0 !important; - -ms-flex-order: -1 !important; - order: -1 !important - } - - .order-sm-0 { - -webkit-box-ordinal-group: 1 !important; - -ms-flex-order: 0 !important; - order: 0 !important - } - - .order-sm-1 { - -webkit-box-ordinal-group: 2 !important; - -ms-flex-order: 1 !important; - order: 1 !important - } - - .order-sm-2 { - -webkit-box-ordinal-group: 3 !important; - -ms-flex-order: 2 !important; - order: 2 !important - } - - .order-sm-3 { - -webkit-box-ordinal-group: 4 !important; - -ms-flex-order: 3 !important; - order: 3 !important - } - - .order-sm-4 { - -webkit-box-ordinal-group: 5 !important; - -ms-flex-order: 4 !important; - order: 4 !important - } - - .order-sm-5 { - -webkit-box-ordinal-group: 6 !important; - -ms-flex-order: 5 !important; - order: 5 !important - } - - .order-sm-last { - -webkit-box-ordinal-group: 7 !important; - -ms-flex-order: 6 !important; - order: 6 !important - } - - .m-sm-0 { - margin: 0 !important - } - - .m-sm-1 { - margin: .25rem !important - } - - .m-sm-2 { - margin: .5rem !important - } - - .m-sm-3 { - margin: 1rem !important - } - - .m-sm-4 { - margin: 1.5rem !important - } - - .m-sm-5 { - margin: 2rem !important - } - - .m-sm-6 { - margin: 2.5rem !important - } - - .m-sm-7 { - margin: 3rem !important - } - - .m-sm-8 { - margin: 3.5rem !important - } - - .m-sm-9 { - margin: 4rem !important - } - - .m-sm-10 { - margin: 4.5rem !important - } - - .m-sm-11 { - margin: 5rem !important - } - - .m-sm-12 { - margin: 6rem !important - } - - .m-sm-13 { - margin: 6.5rem !important - } - - .m-sm-14 { - margin: 7rem !important - } - - .m-sm-15 { - margin: 7.5rem !important - } - - .m-sm-auto { - margin: auto !important - } - - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-sm-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-sm-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-sm-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-sm-6 { - margin-right: 2.5rem !important; - margin-left: 2.5rem !important - } - - .mx-sm-7 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-sm-8 { - margin-right: 3.5rem !important; - margin-left: 3.5rem !important - } - - .mx-sm-9 { - margin-right: 4rem !important; - margin-left: 4rem !important - } - - .mx-sm-10 { - margin-right: 4.5rem !important; - margin-left: 4.5rem !important - } - - .mx-sm-11 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-sm-12 { - margin-right: 6rem !important; - margin-left: 6rem !important - } - - .mx-sm-13 { - margin-right: 6.5rem !important; - margin-left: 6.5rem !important - } - - .mx-sm-14 { - margin-right: 7rem !important; - margin-left: 7rem !important - } - - .mx-sm-15 { - margin-right: 7.5rem !important; - margin-left: 7.5rem !important - } - - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-sm-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-sm-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-sm-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-sm-6 { - margin-top: 2.5rem !important; - margin-bottom: 2.5rem !important - } - - .my-sm-7 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-sm-8 { - margin-top: 3.5rem !important; - margin-bottom: 3.5rem !important - } - - .my-sm-9 { - margin-top: 4rem !important; - margin-bottom: 4rem !important - } - - .my-sm-10 { - margin-top: 4.5rem !important; - margin-bottom: 4.5rem !important - } - - .my-sm-11 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-sm-12 { - margin-top: 6rem !important; - margin-bottom: 6rem !important - } - - .my-sm-13 { - margin-top: 6.5rem !important; - margin-bottom: 6.5rem !important - } - - .my-sm-14 { - margin-top: 7rem !important; - margin-bottom: 7rem !important - } - - .my-sm-15 { - margin-top: 7.5rem !important; - margin-bottom: 7.5rem !important - } - - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-sm-0 { - margin-top: 0 !important - } - - .mt-sm-1 { - margin-top: .25rem !important - } - - .mt-sm-2 { - margin-top: .5rem !important - } - - .mt-sm-3 { - margin-top: 1rem !important - } - - .mt-sm-4 { - margin-top: 1.5rem !important - } - - .mt-sm-5 { - margin-top: 2rem !important - } - - .mt-sm-6 { - margin-top: 2.5rem !important - } - - .mt-sm-7 { - margin-top: 3rem !important - } - - .mt-sm-8 { - margin-top: 3.5rem !important - } - - .mt-sm-9 { - margin-top: 4rem !important - } - - .mt-sm-10 { - margin-top: 4.5rem !important - } - - .mt-sm-11 { - margin-top: 5rem !important - } - - .mt-sm-12 { - margin-top: 6rem !important - } - - .mt-sm-13 { - margin-top: 6.5rem !important - } - - .mt-sm-14 { - margin-top: 7rem !important - } - - .mt-sm-15 { - margin-top: 7.5rem !important - } - - .mt-sm-auto { - margin-top: auto !important - } - - .me-sm-0 { - margin-right: 0 !important - } - - .me-sm-1 { - margin-right: .25rem !important - } - - .me-sm-2 { - margin-right: .5rem !important - } - - .me-sm-3 { - margin-right: 1rem !important - } - - .me-sm-4 { - margin-right: 1.5rem !important - } - - .me-sm-5 { - margin-right: 2rem !important - } - - .me-sm-6 { - margin-right: 2.5rem !important - } - - .me-sm-7 { - margin-right: 3rem !important - } - - .me-sm-8 { - margin-right: 3.5rem !important - } - - .me-sm-9 { - margin-right: 4rem !important - } - - .me-sm-10 { - margin-right: 4.5rem !important - } - - .me-sm-11 { - margin-right: 5rem !important - } - - .me-sm-12 { - margin-right: 6rem !important - } - - .me-sm-13 { - margin-right: 6.5rem !important - } - - .me-sm-14 { - margin-right: 7rem !important - } - - .me-sm-15 { - margin-right: 7.5rem !important - } - - .me-sm-auto { - margin-right: auto !important - } - - .mb-sm-0 { - margin-bottom: 0 !important - } - - .mb-sm-1 { - margin-bottom: .25rem !important - } - - .mb-sm-2 { - margin-bottom: .5rem !important - } - - .mb-sm-3 { - margin-bottom: 1rem !important - } - - .mb-sm-4 { - margin-bottom: 1.5rem !important - } - - .mb-sm-5 { - margin-bottom: 2rem !important - } - - .mb-sm-6 { - margin-bottom: 2.5rem !important - } - - .mb-sm-7 { - margin-bottom: 3rem !important - } - - .mb-sm-8 { - margin-bottom: 3.5rem !important - } - - .mb-sm-9 { - margin-bottom: 4rem !important - } - - .mb-sm-10 { - margin-bottom: 4.5rem !important - } - - .mb-sm-11 { - margin-bottom: 5rem !important - } - - .mb-sm-12 { - margin-bottom: 6rem !important - } - - .mb-sm-13 { - margin-bottom: 6.5rem !important - } - - .mb-sm-14 { - margin-bottom: 7rem !important - } - - .mb-sm-15 { - margin-bottom: 7.5rem !important - } - - .mb-sm-auto { - margin-bottom: auto !important - } - - .ms-sm-0 { - margin-left: 0 !important - } - - .ms-sm-1 { - margin-left: .25rem !important - } - - .ms-sm-2 { - margin-left: .5rem !important - } - - .ms-sm-3 { - margin-left: 1rem !important - } - - .ms-sm-4 { - margin-left: 1.5rem !important - } - - .ms-sm-5 { - margin-left: 2rem !important - } - - .ms-sm-6 { - margin-left: 2.5rem !important - } - - .ms-sm-7 { - margin-left: 3rem !important - } - - .ms-sm-8 { - margin-left: 3.5rem !important - } - - .ms-sm-9 { - margin-left: 4rem !important - } - - .ms-sm-10 { - margin-left: 4.5rem !important - } - - .ms-sm-11 { - margin-left: 5rem !important - } - - .ms-sm-12 { - margin-left: 6rem !important - } - - .ms-sm-13 { - margin-left: 6.5rem !important - } - - .ms-sm-14 { - margin-left: 7rem !important - } - - .ms-sm-15 { - margin-left: 7.5rem !important - } - - .ms-sm-auto { - margin-left: auto !important - } - - .m-sm-n1 { - margin: -0.25rem !important - } - - .m-sm-n2 { - margin: -0.5rem !important - } - - .m-sm-n3 { - margin: -1rem !important - } - - .m-sm-n4 { - margin: -1.5rem !important - } - - .m-sm-n5 { - margin: -2rem !important - } - - .m-sm-n6 { - margin: -2.5rem !important - } - - .m-sm-n7 { - margin: -3rem !important - } - - .m-sm-n8 { - margin: -3.5rem !important - } - - .m-sm-n9 { - margin: -4rem !important - } - - .m-sm-n10 { - margin: -4.5rem !important - } - - .m-sm-n11 { - margin: -5rem !important - } - - .m-sm-n12 { - margin: -6rem !important - } - - .m-sm-n13 { - margin: -6.5rem !important - } - - .m-sm-n14 { - margin: -7rem !important - } - - .m-sm-n15 { - margin: -7.5rem !important - } - - .mx-sm-n1 { - margin-right: -0.25rem !important; - margin-left: -0.25rem !important - } - - .mx-sm-n2 { - margin-right: -0.5rem !important; - margin-left: -0.5rem !important - } - - .mx-sm-n3 { - margin-right: -1rem !important; - margin-left: -1rem !important - } - - .mx-sm-n4 { - margin-right: -1.5rem !important; - margin-left: -1.5rem !important - } - - .mx-sm-n5 { - margin-right: -2rem !important; - margin-left: -2rem !important - } - - .mx-sm-n6 { - margin-right: -2.5rem !important; - margin-left: -2.5rem !important - } - - .mx-sm-n7 { - margin-right: -3rem !important; - margin-left: -3rem !important - } - - .mx-sm-n8 { - margin-right: -3.5rem !important; - margin-left: -3.5rem !important - } - - .mx-sm-n9 { - margin-right: -4rem !important; - margin-left: -4rem !important - } - - .mx-sm-n10 { - margin-right: -4.5rem !important; - margin-left: -4.5rem !important - } - - .mx-sm-n11 { - margin-right: -5rem !important; - margin-left: -5rem !important - } - - .mx-sm-n12 { - margin-right: -6rem !important; - margin-left: -6rem !important - } - - .mx-sm-n13 { - margin-right: -6.5rem !important; - margin-left: -6.5rem !important - } - - .mx-sm-n14 { - margin-right: -7rem !important; - margin-left: -7rem !important - } - - .mx-sm-n15 { - margin-right: -7.5rem !important; - margin-left: -7.5rem !important - } - - .my-sm-n1 { - margin-top: -0.25rem !important; - margin-bottom: -0.25rem !important - } - - .my-sm-n2 { - margin-top: -0.5rem !important; - margin-bottom: -0.5rem !important - } - - .my-sm-n3 { - margin-top: -1rem !important; - margin-bottom: -1rem !important - } - - .my-sm-n4 { - margin-top: -1.5rem !important; - margin-bottom: -1.5rem !important - } - - .my-sm-n5 { - margin-top: -2rem !important; - margin-bottom: -2rem !important - } - - .my-sm-n6 { - margin-top: -2.5rem !important; - margin-bottom: -2.5rem !important - } - - .my-sm-n7 { - margin-top: -3rem !important; - margin-bottom: -3rem !important - } - - .my-sm-n8 { - margin-top: -3.5rem !important; - margin-bottom: -3.5rem !important - } - - .my-sm-n9 { - margin-top: -4rem !important; - margin-bottom: -4rem !important - } - - .my-sm-n10 { - margin-top: -4.5rem !important; - margin-bottom: -4.5rem !important - } - - .my-sm-n11 { - margin-top: -5rem !important; - margin-bottom: -5rem !important - } - - .my-sm-n12 { - margin-top: -6rem !important; - margin-bottom: -6rem !important - } - - .my-sm-n13 { - margin-top: -6.5rem !important; - margin-bottom: -6.5rem !important - } - - .my-sm-n14 { - margin-top: -7rem !important; - margin-bottom: -7rem !important - } - - .my-sm-n15 { - margin-top: -7.5rem !important; - margin-bottom: -7.5rem !important - } - - .mt-sm-n1 { - margin-top: -0.25rem !important - } - - .mt-sm-n2 { - margin-top: -0.5rem !important - } - - .mt-sm-n3 { - margin-top: -1rem !important - } - - .mt-sm-n4 { - margin-top: -1.5rem !important - } - - .mt-sm-n5 { - margin-top: -2rem !important - } - - .mt-sm-n6 { - margin-top: -2.5rem !important - } - - .mt-sm-n7 { - margin-top: -3rem !important - } - - .mt-sm-n8 { - margin-top: -3.5rem !important - } - - .mt-sm-n9 { - margin-top: -4rem !important - } - - .mt-sm-n10 { - margin-top: -4.5rem !important - } - - .mt-sm-n11 { - margin-top: -5rem !important - } - - .mt-sm-n12 { - margin-top: -6rem !important - } - - .mt-sm-n13 { - margin-top: -6.5rem !important - } - - .mt-sm-n14 { - margin-top: -7rem !important - } - - .mt-sm-n15 { - margin-top: -7.5rem !important - } - - .me-sm-n1 { - margin-right: -0.25rem !important - } - - .me-sm-n2 { - margin-right: -0.5rem !important - } - - .me-sm-n3 { - margin-right: -1rem !important - } - - .me-sm-n4 { - margin-right: -1.5rem !important - } - - .me-sm-n5 { - margin-right: -2rem !important - } - - .me-sm-n6 { - margin-right: -2.5rem !important - } - - .me-sm-n7 { - margin-right: -3rem !important - } - - .me-sm-n8 { - margin-right: -3.5rem !important - } - - .me-sm-n9 { - margin-right: -4rem !important - } - - .me-sm-n10 { - margin-right: -4.5rem !important - } - - .me-sm-n11 { - margin-right: -5rem !important - } - - .me-sm-n12 { - margin-right: -6rem !important - } - - .me-sm-n13 { - margin-right: -6.5rem !important - } - - .me-sm-n14 { - margin-right: -7rem !important - } - - .me-sm-n15 { - margin-right: -7.5rem !important - } - - .mb-sm-n1 { - margin-bottom: -0.25rem !important - } - - .mb-sm-n2 { - margin-bottom: -0.5rem !important - } - - .mb-sm-n3 { - margin-bottom: -1rem !important - } - - .mb-sm-n4 { - margin-bottom: -1.5rem !important - } - - .mb-sm-n5 { - margin-bottom: -2rem !important - } - - .mb-sm-n6 { - margin-bottom: -2.5rem !important - } - - .mb-sm-n7 { - margin-bottom: -3rem !important - } - - .mb-sm-n8 { - margin-bottom: -3.5rem !important - } - - .mb-sm-n9 { - margin-bottom: -4rem !important - } - - .mb-sm-n10 { - margin-bottom: -4.5rem !important - } - - .mb-sm-n11 { - margin-bottom: -5rem !important - } - - .mb-sm-n12 { - margin-bottom: -6rem !important - } - - .mb-sm-n13 { - margin-bottom: -6.5rem !important - } - - .mb-sm-n14 { - margin-bottom: -7rem !important - } - - .mb-sm-n15 { - margin-bottom: -7.5rem !important - } - - .ms-sm-n1 { - margin-left: -0.25rem !important - } - - .ms-sm-n2 { - margin-left: -0.5rem !important - } - - .ms-sm-n3 { - margin-left: -1rem !important - } - - .ms-sm-n4 { - margin-left: -1.5rem !important - } - - .ms-sm-n5 { - margin-left: -2rem !important - } - - .ms-sm-n6 { - margin-left: -2.5rem !important - } - - .ms-sm-n7 { - margin-left: -3rem !important - } - - .ms-sm-n8 { - margin-left: -3.5rem !important - } - - .ms-sm-n9 { - margin-left: -4rem !important - } - - .ms-sm-n10 { - margin-left: -4.5rem !important - } - - .ms-sm-n11 { - margin-left: -5rem !important - } - - .ms-sm-n12 { - margin-left: -6rem !important - } - - .ms-sm-n13 { - margin-left: -6.5rem !important - } - - .ms-sm-n14 { - margin-left: -7rem !important - } - - .ms-sm-n15 { - margin-left: -7.5rem !important - } - - .p-sm-0 { - padding: 0 !important - } - - .p-sm-1 { - padding: .25rem !important - } - - .p-sm-2 { - padding: .5rem !important - } - - .p-sm-3 { - padding: 1rem !important - } - - .p-sm-4 { - padding: 1.5rem !important - } - - .p-sm-5 { - padding: 2rem !important - } - - .p-sm-6 { - padding: 2.5rem !important - } - - .p-sm-7 { - padding: 3rem !important - } - - .p-sm-8 { - padding: 3.5rem !important - } - - .p-sm-9 { - padding: 4rem !important - } - - .p-sm-10 { - padding: 4.5rem !important - } - - .p-sm-11 { - padding: 5rem !important - } - - .p-sm-12 { - padding: 6rem !important - } - - .p-sm-13 { - padding: 6.5rem !important - } - - .p-sm-14 { - padding: 7rem !important - } - - .p-sm-15 { - padding: 7.5rem !important - } - - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-sm-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-sm-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-sm-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-sm-6 { - padding-right: 2.5rem !important; - padding-left: 2.5rem !important - } - - .px-sm-7 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-sm-8 { - padding-right: 3.5rem !important; - padding-left: 3.5rem !important - } - - .px-sm-9 { - padding-right: 4rem !important; - padding-left: 4rem !important - } - - .px-sm-10 { - padding-right: 4.5rem !important; - padding-left: 4.5rem !important - } - - .px-sm-11 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-sm-12 { - padding-right: 6rem !important; - padding-left: 6rem !important - } - - .px-sm-13 { - padding-right: 6.5rem !important; - padding-left: 6.5rem !important - } - - .px-sm-14 { - padding-right: 7rem !important; - padding-left: 7rem !important - } - - .px-sm-15 { - padding-right: 7.5rem !important; - padding-left: 7.5rem !important - } - - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-sm-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-sm-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-sm-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-sm-6 { - padding-top: 2.5rem !important; - padding-bottom: 2.5rem !important - } - - .py-sm-7 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-sm-8 { - padding-top: 3.5rem !important; - padding-bottom: 3.5rem !important - } - - .py-sm-9 { - padding-top: 4rem !important; - padding-bottom: 4rem !important - } - - .py-sm-10 { - padding-top: 4.5rem !important; - padding-bottom: 4.5rem !important - } - - .py-sm-11 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-sm-12 { - padding-top: 6rem !important; - padding-bottom: 6rem !important - } - - .py-sm-13 { - padding-top: 6.5rem !important; - padding-bottom: 6.5rem !important - } - - .py-sm-14 { - padding-top: 7rem !important; - padding-bottom: 7rem !important - } - - .py-sm-15 { - padding-top: 7.5rem !important; - padding-bottom: 7.5rem !important - } - - .pt-sm-0 { - padding-top: 0 !important - } - - .pt-sm-1 { - padding-top: .25rem !important - } - - .pt-sm-2 { - padding-top: .5rem !important - } - - .pt-sm-3 { - padding-top: 1rem !important - } - - .pt-sm-4 { - padding-top: 1.5rem !important - } - - .pt-sm-5 { - padding-top: 2rem !important - } - - .pt-sm-6 { - padding-top: 2.5rem !important - } - - .pt-sm-7 { - padding-top: 3rem !important - } - - .pt-sm-8 { - padding-top: 3.5rem !important - } - - .pt-sm-9 { - padding-top: 4rem !important - } - - .pt-sm-10 { - padding-top: 4.5rem !important - } - - .pt-sm-11 { - padding-top: 5rem !important - } - - .pt-sm-12 { - padding-top: 6rem !important - } - - .pt-sm-13 { - padding-top: 6.5rem !important - } - - .pt-sm-14 { - padding-top: 7rem !important - } - - .pt-sm-15 { - padding-top: 7.5rem !important - } - - .pe-sm-0 { - padding-right: 0 !important - } - - .pe-sm-1 { - padding-right: .25rem !important - } - - .pe-sm-2 { - padding-right: .5rem !important - } - - .pe-sm-3 { - padding-right: 1rem !important - } - - .pe-sm-4 { - padding-right: 1.5rem !important - } - - .pe-sm-5 { - padding-right: 2rem !important - } - - .pe-sm-6 { - padding-right: 2.5rem !important - } - - .pe-sm-7 { - padding-right: 3rem !important - } - - .pe-sm-8 { - padding-right: 3.5rem !important - } - - .pe-sm-9 { - padding-right: 4rem !important - } - - .pe-sm-10 { - padding-right: 4.5rem !important - } - - .pe-sm-11 { - padding-right: 5rem !important - } - - .pe-sm-12 { - padding-right: 6rem !important - } - - .pe-sm-13 { - padding-right: 6.5rem !important - } - - .pe-sm-14 { - padding-right: 7rem !important - } - - .pe-sm-15 { - padding-right: 7.5rem !important - } - - .pb-sm-0 { - padding-bottom: 0 !important - } - - .pb-sm-1 { - padding-bottom: .25rem !important - } - - .pb-sm-2 { - padding-bottom: .5rem !important - } - - .pb-sm-3 { - padding-bottom: 1rem !important - } - - .pb-sm-4 { - padding-bottom: 1.5rem !important - } - - .pb-sm-5 { - padding-bottom: 2rem !important - } - - .pb-sm-6 { - padding-bottom: 2.5rem !important - } - - .pb-sm-7 { - padding-bottom: 3rem !important - } - - .pb-sm-8 { - padding-bottom: 3.5rem !important - } - - .pb-sm-9 { - padding-bottom: 4rem !important - } - - .pb-sm-10 { - padding-bottom: 4.5rem !important - } - - .pb-sm-11 { - padding-bottom: 5rem !important - } - - .pb-sm-12 { - padding-bottom: 6rem !important - } - - .pb-sm-13 { - padding-bottom: 6.5rem !important - } - - .pb-sm-14 { - padding-bottom: 7rem !important - } - - .pb-sm-15 { - padding-bottom: 7.5rem !important - } - - .ps-sm-0 { - padding-left: 0 !important - } - - .ps-sm-1 { - padding-left: .25rem !important - } - - .ps-sm-2 { - padding-left: .5rem !important - } - - .ps-sm-3 { - padding-left: 1rem !important - } - - .ps-sm-4 { - padding-left: 1.5rem !important - } - - .ps-sm-5 { - padding-left: 2rem !important - } - - .ps-sm-6 { - padding-left: 2.5rem !important - } - - .ps-sm-7 { - padding-left: 3rem !important - } - - .ps-sm-8 { - padding-left: 3.5rem !important - } - - .ps-sm-9 { - padding-left: 4rem !important - } - - .ps-sm-10 { - padding-left: 4.5rem !important - } - - .ps-sm-11 { - padding-left: 5rem !important - } - - .ps-sm-12 { - padding-left: 6rem !important - } - - .ps-sm-13 { - padding-left: 6.5rem !important - } - - .ps-sm-14 { - padding-left: 7rem !important - } - - .ps-sm-15 { - padding-left: 7.5rem !important - } - - .gap-sm-0 { - gap: 0 !important - } - - .gap-sm-1 { - gap: .25rem !important - } - - .gap-sm-2 { - gap: .5rem !important - } - - .gap-sm-3 { - gap: 1rem !important - } - - .gap-sm-4 { - gap: 1.5rem !important - } - - .gap-sm-5 { - gap: 2rem !important - } - - .gap-sm-6 { - gap: 2.5rem !important - } - - .gap-sm-7 { - gap: 3rem !important - } - - .gap-sm-8 { - gap: 3.5rem !important - } - - .gap-sm-9 { - gap: 4rem !important - } - - .gap-sm-10 { - gap: 4.5rem !important - } - - .gap-sm-11 { - gap: 5rem !important - } - - .gap-sm-12 { - gap: 6rem !important - } - - .gap-sm-13 { - gap: 6.5rem !important - } - - .gap-sm-14 { - gap: 7rem !important - } - - .gap-sm-15 { - gap: 7.5rem !important - } - - .fs-sm--3 { - font-size: .512rem !important - } - - .fs-sm--2 { - font-size: .64rem !important - } - - .fs-sm--1 { - font-size: .8rem !important - } - - .fs-sm-0 { - font-size: 1rem !important - } - - .fs-sm-1 { - font-size: 1.25rem !important - } - - .fs-sm-2 { - font-size: 1.5625rem !important - } - - .fs-sm-3 { - font-size: 1.953125rem !important - } - - .fs-sm-4 { - font-size: 2.44140625rem !important - } - - .fs-sm-5 { - font-size: 3.0517578125rem !important - } - - .fs-sm-6 { - font-size: 3.8146972656rem !important - } - - .fs-sm-7 { - font-size: 4.768371582rem !important - } - - .lh-sm-1 { - line-height: 1 !important - } - - .lh-sm-sm { - line-height: 1.2 !important - } - - .lh-sm-base { - line-height: 1.49 !important - } - - .lh-sm-lg { - line-height: 1.4 !important - } - - .text-sm-start { - text-align: left !important - } - - .text-sm-end { - text-align: right !important - } - - .text-sm-center { - text-align: center !important - } - - .rounded-sm-top { - border-top-left-radius: .375rem !important; - border-top-right-radius: .375rem !important - } - - .rounded-sm-top-lg { - border-top-left-radius: .5rem !important; - border-top-right-radius: .5rem !important - } - - .rounded-sm-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important - } - - .rounded-sm-end { - border-top-right-radius: .375rem !important; - border-bottom-right-radius: .375rem !important - } - - .rounded-sm-end-lg { - border-top-right-radius: .5rem !important; - border-bottom-right-radius: .5rem !important - } - - .rounded-sm-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important - } - - .rounded-sm-bottom { - border-bottom-right-radius: .375rem !important; - border-bottom-left-radius: .375rem !important - } - - .rounded-sm-bottom-lg { - border-bottom-right-radius: .5rem !important; - border-bottom-left-radius: .5rem !important - } - - .rounded-sm-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important - } - - .rounded-sm-start { - border-bottom-left-radius: .375rem !important; - border-top-left-radius: .375rem !important - } - - .rounded-sm-start-lg { - border-bottom-left-radius: .5rem !important; - border-top-left-radius: .5rem !important - } - - .rounded-sm-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important - } - - .max-vh-sm-25 { - max-height: 25vh !important - } - - .max-vh-sm-50 { - max-height: 50vh !important - } - - .max-vh-sm-75 { - max-height: 75vh !important - } - - .max-vh-sm-100 { - max-height: 100vh !important - } - - .border-x-sm { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-x-sm-0 { - border-left: 0 !important; - border-right: 0 !important - } - - .border-y-sm { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-y-sm-0 { - border-top: 0 !important; - border-bottom: 0 !important - } - - .rounded-sm-0 { - border-radius: 0 !important - } -} - -@media(min-width: 768px) { - .float-md-start { - float:left !important - } - - .float-md-end { - float: right !important - } - - .float-md-none { - float: none !important - } - - .opacity-md-0 { - opacity: 0 !important - } - - .opacity-md-25 { - opacity: .25 !important - } - - .opacity-md-50 { - opacity: .5 !important - } - - .opacity-md-75 { - opacity: .75 !important - } - - .opacity-md-85 { - opacity: .85 !important - } - - .opacity-md-100 { - opacity: 1 !important - } - - .d-md-inline { - display: inline !important - } - - .d-md-inline-block { - display: inline-block !important - } - - .d-md-block { - display: block !important - } - - .d-md-grid { - display: grid !important - } - - .d-md-table { - display: table !important - } - - .d-md-table-row { - display: table-row !important - } - - .d-md-table-cell { - display: table-cell !important - } - - .d-md-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-md-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } - - .d-md-none { - display: none !important - } - - .position-md-static { - position: static !important - } - - .position-md-relative { - position: relative !important - } - - .position-md-absolute { - position: absolute !important - } - - .position-md-fixed { - position: fixed !important - } - - .position-md-sticky { - position: sticky !important - } - - .translate-md-middle { - -webkit-transform: translateX(-50%) translateY(-50%) !important; - -ms-transform: translateX(-50%) translateY(-50%) !important; - transform: translateX(-50%) translateY(-50%) !important - } - - .translate-md-middle-x { - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important - } - - .translate-md-middle-y { - -webkit-transform: translateY(-50%) !important; - -ms-transform: translateY(-50%) !important; - transform: translateY(-50%) !important - } - - .border-md { - border: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-md-0 { - border: 0 !important - } - - .border-top-md { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-top-md-0 { - border-top: 0 !important - } - - .border-end-md { - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-end-md-0 { - border-right: 0 !important - } - - .border-bottom-md { - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-bottom-md-0 { - border-bottom: 0 !important - } - - .border-start-md { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-start-md-0 { - border-left: 0 !important - } - - .w-md-25 { - width: 25% !important - } - - .w-md-30 { - width: 30% !important - } - - .w-md-50 { - width: 50% !important - } - - .w-md-60 { - width: 60% !important - } - - .w-md-70 { - width: 70% !important - } - - .w-md-75 { - width: 75% !important - } - - .w-md-100 { - width: 100% !important - } - - .w-md-max-content { - width: -webkit-max-content !important; - width: -moz-max-content !important; - width: max-content !important - } - - .w-md-min-content { - width: -webkit-min-content !important; - width: -moz-min-content !important; - width: min-content !important - } - - .w-md-auto { - width: auto !important - } - - .vw-md-25 { - width: 25vw !important - } - - .vw-md-50 { - width: 50vw !important - } - - .vw-md-75 { - width: 75vw !important - } - - .vw-md-100 { - width: 100vw !important - } - - .h-md-25 { - height: 25% !important - } - - .h-md-30 { - height: 30% !important - } - - .h-md-50 { - height: 50% !important - } - - .h-md-60 { - height: 60% !important - } - - .h-md-70 { - height: 70% !important - } - - .h-md-75 { - height: 75% !important - } - - .h-md-100 { - height: 100% !important - } - - .h-md-max-content { - height: -webkit-max-content !important; - height: -moz-max-content !important; - height: max-content !important - } - - .h-md-min-content { - height: -webkit-min-content !important; - height: -moz-min-content !important; - height: min-content !important - } - - .h-md-auto { - height: auto !important - } - - .vh-md-25 { - height: 25vh !important - } - - .vh-md-50 { - height: 50vh !important - } - - .vh-md-75 { - height: 75vh !important - } - - .vh-md-100 { - height: 100vh !important - } - - .min-vh-md-25 { - min-height: 25vh !important - } - - .min-vh-md-50 { - min-height: 50vh !important - } - - .min-vh-md-75 { - min-height: 75vh !important - } - - .min-vh-md-100 { - min-height: 100vh !important - } - - .flex-md-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-md-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-md-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-md-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-md-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-md-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-md-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-md-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-md-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .flex-md-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-md-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-md-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .justify-content-md-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-md-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-md-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-md-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-md-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .justify-content-md-evenly { - -webkit-box-pack: space-evenly !important; - -ms-flex-pack: space-evenly !important; - justify-content: space-evenly !important - } - - .align-items-md-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-md-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-md-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-md-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-md-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-md-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-md-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-md-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-md-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-md-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-md-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-md-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-md-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-md-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-md-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-md-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-md-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } - - .order-md-first { - -webkit-box-ordinal-group: 0 !important; - -ms-flex-order: -1 !important; - order: -1 !important - } - - .order-md-0 { - -webkit-box-ordinal-group: 1 !important; - -ms-flex-order: 0 !important; - order: 0 !important - } - - .order-md-1 { - -webkit-box-ordinal-group: 2 !important; - -ms-flex-order: 1 !important; - order: 1 !important - } - - .order-md-2 { - -webkit-box-ordinal-group: 3 !important; - -ms-flex-order: 2 !important; - order: 2 !important - } - - .order-md-3 { - -webkit-box-ordinal-group: 4 !important; - -ms-flex-order: 3 !important; - order: 3 !important - } - - .order-md-4 { - -webkit-box-ordinal-group: 5 !important; - -ms-flex-order: 4 !important; - order: 4 !important - } - - .order-md-5 { - -webkit-box-ordinal-group: 6 !important; - -ms-flex-order: 5 !important; - order: 5 !important - } - - .order-md-last { - -webkit-box-ordinal-group: 7 !important; - -ms-flex-order: 6 !important; - order: 6 !important - } - - .m-md-0 { - margin: 0 !important - } - - .m-md-1 { - margin: .25rem !important - } - - .m-md-2 { - margin: .5rem !important - } - - .m-md-3 { - margin: 1rem !important - } - - .m-md-4 { - margin: 1.5rem !important - } - - .m-md-5 { - margin: 2rem !important - } - - .m-md-6 { - margin: 2.5rem !important - } - - .m-md-7 { - margin: 3rem !important - } - - .m-md-8 { - margin: 3.5rem !important - } - - .m-md-9 { - margin: 4rem !important - } - - .m-md-10 { - margin: 4.5rem !important - } - - .m-md-11 { - margin: 5rem !important - } - - .m-md-12 { - margin: 6rem !important - } - - .m-md-13 { - margin: 6.5rem !important - } - - .m-md-14 { - margin: 7rem !important - } - - .m-md-15 { - margin: 7.5rem !important - } - - .m-md-auto { - margin: auto !important - } - - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-md-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-md-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-md-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-md-6 { - margin-right: 2.5rem !important; - margin-left: 2.5rem !important - } - - .mx-md-7 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-md-8 { - margin-right: 3.5rem !important; - margin-left: 3.5rem !important - } - - .mx-md-9 { - margin-right: 4rem !important; - margin-left: 4rem !important - } - - .mx-md-10 { - margin-right: 4.5rem !important; - margin-left: 4.5rem !important - } - - .mx-md-11 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-md-12 { - margin-right: 6rem !important; - margin-left: 6rem !important - } - - .mx-md-13 { - margin-right: 6.5rem !important; - margin-left: 6.5rem !important - } - - .mx-md-14 { - margin-right: 7rem !important; - margin-left: 7rem !important - } - - .mx-md-15 { - margin-right: 7.5rem !important; - margin-left: 7.5rem !important - } - - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-md-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-md-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-md-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-md-6 { - margin-top: 2.5rem !important; - margin-bottom: 2.5rem !important - } - - .my-md-7 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-md-8 { - margin-top: 3.5rem !important; - margin-bottom: 3.5rem !important - } - - .my-md-9 { - margin-top: 4rem !important; - margin-bottom: 4rem !important - } - - .my-md-10 { - margin-top: 4.5rem !important; - margin-bottom: 4.5rem !important - } - - .my-md-11 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-md-12 { - margin-top: 6rem !important; - margin-bottom: 6rem !important - } - - .my-md-13 { - margin-top: 6.5rem !important; - margin-bottom: 6.5rem !important - } - - .my-md-14 { - margin-top: 7rem !important; - margin-bottom: 7rem !important - } - - .my-md-15 { - margin-top: 7.5rem !important; - margin-bottom: 7.5rem !important - } - - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-md-0 { - margin-top: 0 !important - } - - .mt-md-1 { - margin-top: .25rem !important - } - - .mt-md-2 { - margin-top: .5rem !important - } - - .mt-md-3 { - margin-top: 1rem !important - } - - .mt-md-4 { - margin-top: 1.5rem !important - } - - .mt-md-5 { - margin-top: 2rem !important - } - - .mt-md-6 { - margin-top: 2.5rem !important - } - - .mt-md-7 { - margin-top: 3rem !important - } - - .mt-md-8 { - margin-top: 3.5rem !important - } - - .mt-md-9 { - margin-top: 4rem !important - } - - .mt-md-10 { - margin-top: 4.5rem !important - } - - .mt-md-11 { - margin-top: 5rem !important - } - - .mt-md-12 { - margin-top: 6rem !important - } - - .mt-md-13 { - margin-top: 6.5rem !important - } - - .mt-md-14 { - margin-top: 7rem !important - } - - .mt-md-15 { - margin-top: 7.5rem !important - } - - .mt-md-auto { - margin-top: auto !important - } - - .me-md-0 { - margin-right: 0 !important - } - - .me-md-1 { - margin-right: .25rem !important - } - - .me-md-2 { - margin-right: .5rem !important - } - - .me-md-3 { - margin-right: 1rem !important - } - - .me-md-4 { - margin-right: 1.5rem !important - } - - .me-md-5 { - margin-right: 2rem !important - } - - .me-md-6 { - margin-right: 2.5rem !important - } - - .me-md-7 { - margin-right: 3rem !important - } - - .me-md-8 { - margin-right: 3.5rem !important - } - - .me-md-9 { - margin-right: 4rem !important - } - - .me-md-10 { - margin-right: 4.5rem !important - } - - .me-md-11 { - margin-right: 5rem !important - } - - .me-md-12 { - margin-right: 6rem !important - } - - .me-md-13 { - margin-right: 6.5rem !important - } - - .me-md-14 { - margin-right: 7rem !important - } - - .me-md-15 { - margin-right: 7.5rem !important - } - - .me-md-auto { - margin-right: auto !important - } - - .mb-md-0 { - margin-bottom: 0 !important - } - - .mb-md-1 { - margin-bottom: .25rem !important - } - - .mb-md-2 { - margin-bottom: .5rem !important - } - - .mb-md-3 { - margin-bottom: 1rem !important - } - - .mb-md-4 { - margin-bottom: 1.5rem !important - } - - .mb-md-5 { - margin-bottom: 2rem !important - } - - .mb-md-6 { - margin-bottom: 2.5rem !important - } - - .mb-md-7 { - margin-bottom: 3rem !important - } - - .mb-md-8 { - margin-bottom: 3.5rem !important - } - - .mb-md-9 { - margin-bottom: 4rem !important - } - - .mb-md-10 { - margin-bottom: 4.5rem !important - } - - .mb-md-11 { - margin-bottom: 5rem !important - } - - .mb-md-12 { - margin-bottom: 6rem !important - } - - .mb-md-13 { - margin-bottom: 6.5rem !important - } - - .mb-md-14 { - margin-bottom: 7rem !important - } - - .mb-md-15 { - margin-bottom: 7.5rem !important - } - - .mb-md-auto { - margin-bottom: auto !important - } - - .ms-md-0 { - margin-left: 0 !important - } - - .ms-md-1 { - margin-left: .25rem !important - } - - .ms-md-2 { - margin-left: .5rem !important - } - - .ms-md-3 { - margin-left: 1rem !important - } - - .ms-md-4 { - margin-left: 1.5rem !important - } - - .ms-md-5 { - margin-left: 2rem !important - } - - .ms-md-6 { - margin-left: 2.5rem !important - } - - .ms-md-7 { - margin-left: 3rem !important - } - - .ms-md-8 { - margin-left: 3.5rem !important - } - - .ms-md-9 { - margin-left: 4rem !important - } - - .ms-md-10 { - margin-left: 4.5rem !important - } - - .ms-md-11 { - margin-left: 5rem !important - } - - .ms-md-12 { - margin-left: 6rem !important - } - - .ms-md-13 { - margin-left: 6.5rem !important - } - - .ms-md-14 { - margin-left: 7rem !important - } - - .ms-md-15 { - margin-left: 7.5rem !important - } - - .ms-md-auto { - margin-left: auto !important - } - - .m-md-n1 { - margin: -0.25rem !important - } - - .m-md-n2 { - margin: -0.5rem !important - } - - .m-md-n3 { - margin: -1rem !important - } - - .m-md-n4 { - margin: -1.5rem !important - } - - .m-md-n5 { - margin: -2rem !important - } - - .m-md-n6 { - margin: -2.5rem !important - } - - .m-md-n7 { - margin: -3rem !important - } - - .m-md-n8 { - margin: -3.5rem !important - } - - .m-md-n9 { - margin: -4rem !important - } - - .m-md-n10 { - margin: -4.5rem !important - } - - .m-md-n11 { - margin: -5rem !important - } - - .m-md-n12 { - margin: -6rem !important - } - - .m-md-n13 { - margin: -6.5rem !important - } - - .m-md-n14 { - margin: -7rem !important - } - - .m-md-n15 { - margin: -7.5rem !important - } - - .mx-md-n1 { - margin-right: -0.25rem !important; - margin-left: -0.25rem !important - } - - .mx-md-n2 { - margin-right: -0.5rem !important; - margin-left: -0.5rem !important - } - - .mx-md-n3 { - margin-right: -1rem !important; - margin-left: -1rem !important - } - - .mx-md-n4 { - margin-right: -1.5rem !important; - margin-left: -1.5rem !important - } - - .mx-md-n5 { - margin-right: -2rem !important; - margin-left: -2rem !important - } - - .mx-md-n6 { - margin-right: -2.5rem !important; - margin-left: -2.5rem !important - } - - .mx-md-n7 { - margin-right: -3rem !important; - margin-left: -3rem !important - } - - .mx-md-n8 { - margin-right: -3.5rem !important; - margin-left: -3.5rem !important - } - - .mx-md-n9 { - margin-right: -4rem !important; - margin-left: -4rem !important - } - - .mx-md-n10 { - margin-right: -4.5rem !important; - margin-left: -4.5rem !important - } - - .mx-md-n11 { - margin-right: -5rem !important; - margin-left: -5rem !important - } - - .mx-md-n12 { - margin-right: -6rem !important; - margin-left: -6rem !important - } - - .mx-md-n13 { - margin-right: -6.5rem !important; - margin-left: -6.5rem !important - } - - .mx-md-n14 { - margin-right: -7rem !important; - margin-left: -7rem !important - } - - .mx-md-n15 { - margin-right: -7.5rem !important; - margin-left: -7.5rem !important - } - - .my-md-n1 { - margin-top: -0.25rem !important; - margin-bottom: -0.25rem !important - } - - .my-md-n2 { - margin-top: -0.5rem !important; - margin-bottom: -0.5rem !important - } - - .my-md-n3 { - margin-top: -1rem !important; - margin-bottom: -1rem !important - } - - .my-md-n4 { - margin-top: -1.5rem !important; - margin-bottom: -1.5rem !important - } - - .my-md-n5 { - margin-top: -2rem !important; - margin-bottom: -2rem !important - } - - .my-md-n6 { - margin-top: -2.5rem !important; - margin-bottom: -2.5rem !important - } - - .my-md-n7 { - margin-top: -3rem !important; - margin-bottom: -3rem !important - } - - .my-md-n8 { - margin-top: -3.5rem !important; - margin-bottom: -3.5rem !important - } - - .my-md-n9 { - margin-top: -4rem !important; - margin-bottom: -4rem !important - } - - .my-md-n10 { - margin-top: -4.5rem !important; - margin-bottom: -4.5rem !important - } - - .my-md-n11 { - margin-top: -5rem !important; - margin-bottom: -5rem !important - } - - .my-md-n12 { - margin-top: -6rem !important; - margin-bottom: -6rem !important - } - - .my-md-n13 { - margin-top: -6.5rem !important; - margin-bottom: -6.5rem !important - } - - .my-md-n14 { - margin-top: -7rem !important; - margin-bottom: -7rem !important - } - - .my-md-n15 { - margin-top: -7.5rem !important; - margin-bottom: -7.5rem !important - } - - .mt-md-n1 { - margin-top: -0.25rem !important - } - - .mt-md-n2 { - margin-top: -0.5rem !important - } - - .mt-md-n3 { - margin-top: -1rem !important - } - - .mt-md-n4 { - margin-top: -1.5rem !important - } - - .mt-md-n5 { - margin-top: -2rem !important - } - - .mt-md-n6 { - margin-top: -2.5rem !important - } - - .mt-md-n7 { - margin-top: -3rem !important - } - - .mt-md-n8 { - margin-top: -3.5rem !important - } - - .mt-md-n9 { - margin-top: -4rem !important - } - - .mt-md-n10 { - margin-top: -4.5rem !important - } - - .mt-md-n11 { - margin-top: -5rem !important - } - - .mt-md-n12 { - margin-top: -6rem !important - } - - .mt-md-n13 { - margin-top: -6.5rem !important - } - - .mt-md-n14 { - margin-top: -7rem !important - } - - .mt-md-n15 { - margin-top: -7.5rem !important - } - - .me-md-n1 { - margin-right: -0.25rem !important - } - - .me-md-n2 { - margin-right: -0.5rem !important - } - - .me-md-n3 { - margin-right: -1rem !important - } - - .me-md-n4 { - margin-right: -1.5rem !important - } - - .me-md-n5 { - margin-right: -2rem !important - } - - .me-md-n6 { - margin-right: -2.5rem !important - } - - .me-md-n7 { - margin-right: -3rem !important - } - - .me-md-n8 { - margin-right: -3.5rem !important - } - - .me-md-n9 { - margin-right: -4rem !important - } - - .me-md-n10 { - margin-right: -4.5rem !important - } - - .me-md-n11 { - margin-right: -5rem !important - } - - .me-md-n12 { - margin-right: -6rem !important - } - - .me-md-n13 { - margin-right: -6.5rem !important - } - - .me-md-n14 { - margin-right: -7rem !important - } - - .me-md-n15 { - margin-right: -7.5rem !important - } - - .mb-md-n1 { - margin-bottom: -0.25rem !important - } - - .mb-md-n2 { - margin-bottom: -0.5rem !important - } - - .mb-md-n3 { - margin-bottom: -1rem !important - } - - .mb-md-n4 { - margin-bottom: -1.5rem !important - } - - .mb-md-n5 { - margin-bottom: -2rem !important - } - - .mb-md-n6 { - margin-bottom: -2.5rem !important - } - - .mb-md-n7 { - margin-bottom: -3rem !important - } - - .mb-md-n8 { - margin-bottom: -3.5rem !important - } - - .mb-md-n9 { - margin-bottom: -4rem !important - } - - .mb-md-n10 { - margin-bottom: -4.5rem !important - } - - .mb-md-n11 { - margin-bottom: -5rem !important - } - - .mb-md-n12 { - margin-bottom: -6rem !important - } - - .mb-md-n13 { - margin-bottom: -6.5rem !important - } - - .mb-md-n14 { - margin-bottom: -7rem !important - } - - .mb-md-n15 { - margin-bottom: -7.5rem !important - } - - .ms-md-n1 { - margin-left: -0.25rem !important - } - - .ms-md-n2 { - margin-left: -0.5rem !important - } - - .ms-md-n3 { - margin-left: -1rem !important - } - - .ms-md-n4 { - margin-left: -1.5rem !important - } - - .ms-md-n5 { - margin-left: -2rem !important - } - - .ms-md-n6 { - margin-left: -2.5rem !important - } - - .ms-md-n7 { - margin-left: -3rem !important - } - - .ms-md-n8 { - margin-left: -3.5rem !important - } - - .ms-md-n9 { - margin-left: -4rem !important - } - - .ms-md-n10 { - margin-left: -4.5rem !important - } - - .ms-md-n11 { - margin-left: -5rem !important - } - - .ms-md-n12 { - margin-left: -6rem !important - } - - .ms-md-n13 { - margin-left: -6.5rem !important - } - - .ms-md-n14 { - margin-left: -7rem !important - } - - .ms-md-n15 { - margin-left: -7.5rem !important - } - - .p-md-0 { - padding: 0 !important - } - - .p-md-1 { - padding: .25rem !important - } - - .p-md-2 { - padding: .5rem !important - } - - .p-md-3 { - padding: 1rem !important - } - - .p-md-4 { - padding: 1.5rem !important - } - - .p-md-5 { - padding: 2rem !important - } - - .p-md-6 { - padding: 2.5rem !important - } - - .p-md-7 { - padding: 3rem !important - } - - .p-md-8 { - padding: 3.5rem !important - } - - .p-md-9 { - padding: 4rem !important - } - - .p-md-10 { - padding: 4.5rem !important - } - - .p-md-11 { - padding: 5rem !important - } - - .p-md-12 { - padding: 6rem !important - } - - .p-md-13 { - padding: 6.5rem !important - } - - .p-md-14 { - padding: 7rem !important - } - - .p-md-15 { - padding: 7.5rem !important - } - - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-md-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-md-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-md-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-md-6 { - padding-right: 2.5rem !important; - padding-left: 2.5rem !important - } - - .px-md-7 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-md-8 { - padding-right: 3.5rem !important; - padding-left: 3.5rem !important - } - - .px-md-9 { - padding-right: 4rem !important; - padding-left: 4rem !important - } - - .px-md-10 { - padding-right: 4.5rem !important; - padding-left: 4.5rem !important - } - - .px-md-11 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-md-12 { - padding-right: 6rem !important; - padding-left: 6rem !important - } - - .px-md-13 { - padding-right: 6.5rem !important; - padding-left: 6.5rem !important - } - - .px-md-14 { - padding-right: 7rem !important; - padding-left: 7rem !important - } - - .px-md-15 { - padding-right: 7.5rem !important; - padding-left: 7.5rem !important - } - - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-md-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-md-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-md-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-md-6 { - padding-top: 2.5rem !important; - padding-bottom: 2.5rem !important - } - - .py-md-7 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-md-8 { - padding-top: 3.5rem !important; - padding-bottom: 3.5rem !important - } - - .py-md-9 { - padding-top: 4rem !important; - padding-bottom: 4rem !important - } - - .py-md-10 { - padding-top: 4.5rem !important; - padding-bottom: 4.5rem !important - } - - .py-md-11 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-md-12 { - padding-top: 6rem !important; - padding-bottom: 6rem !important - } - - .py-md-13 { - padding-top: 6.5rem !important; - padding-bottom: 6.5rem !important - } - - .py-md-14 { - padding-top: 7rem !important; - padding-bottom: 7rem !important - } - - .py-md-15 { - padding-top: 7.5rem !important; - padding-bottom: 7.5rem !important - } - - .pt-md-0 { - padding-top: 0 !important - } - - .pt-md-1 { - padding-top: .25rem !important - } - - .pt-md-2 { - padding-top: .5rem !important - } - - .pt-md-3 { - padding-top: 1rem !important - } - - .pt-md-4 { - padding-top: 1.5rem !important - } - - .pt-md-5 { - padding-top: 2rem !important - } - - .pt-md-6 { - padding-top: 2.5rem !important - } - - .pt-md-7 { - padding-top: 3rem !important - } - - .pt-md-8 { - padding-top: 3.5rem !important - } - - .pt-md-9 { - padding-top: 4rem !important - } - - .pt-md-10 { - padding-top: 4.5rem !important - } - - .pt-md-11 { - padding-top: 5rem !important - } - - .pt-md-12 { - padding-top: 6rem !important - } - - .pt-md-13 { - padding-top: 6.5rem !important - } - - .pt-md-14 { - padding-top: 7rem !important - } - - .pt-md-15 { - padding-top: 7.5rem !important - } - - .pe-md-0 { - padding-right: 0 !important - } - - .pe-md-1 { - padding-right: .25rem !important - } - - .pe-md-2 { - padding-right: .5rem !important - } - - .pe-md-3 { - padding-right: 1rem !important - } - - .pe-md-4 { - padding-right: 1.5rem !important - } - - .pe-md-5 { - padding-right: 2rem !important - } - - .pe-md-6 { - padding-right: 2.5rem !important - } - - .pe-md-7 { - padding-right: 3rem !important - } - - .pe-md-8 { - padding-right: 3.5rem !important - } - - .pe-md-9 { - padding-right: 4rem !important - } - - .pe-md-10 { - padding-right: 4.5rem !important - } - - .pe-md-11 { - padding-right: 5rem !important - } - - .pe-md-12 { - padding-right: 6rem !important - } - - .pe-md-13 { - padding-right: 6.5rem !important - } - - .pe-md-14 { - padding-right: 7rem !important - } - - .pe-md-15 { - padding-right: 7.5rem !important - } - - .pb-md-0 { - padding-bottom: 0 !important - } - - .pb-md-1 { - padding-bottom: .25rem !important - } - - .pb-md-2 { - padding-bottom: .5rem !important - } - - .pb-md-3 { - padding-bottom: 1rem !important - } - - .pb-md-4 { - padding-bottom: 1.5rem !important - } - - .pb-md-5 { - padding-bottom: 2rem !important - } - - .pb-md-6 { - padding-bottom: 2.5rem !important - } - - .pb-md-7 { - padding-bottom: 3rem !important - } - - .pb-md-8 { - padding-bottom: 3.5rem !important - } - - .pb-md-9 { - padding-bottom: 4rem !important - } - - .pb-md-10 { - padding-bottom: 4.5rem !important - } - - .pb-md-11 { - padding-bottom: 5rem !important - } - - .pb-md-12 { - padding-bottom: 6rem !important - } - - .pb-md-13 { - padding-bottom: 6.5rem !important - } - - .pb-md-14 { - padding-bottom: 7rem !important - } - - .pb-md-15 { - padding-bottom: 7.5rem !important - } - - .ps-md-0 { - padding-left: 0 !important - } - - .ps-md-1 { - padding-left: .25rem !important - } - - .ps-md-2 { - padding-left: .5rem !important - } - - .ps-md-3 { - padding-left: 1rem !important - } - - .ps-md-4 { - padding-left: 1.5rem !important - } - - .ps-md-5 { - padding-left: 2rem !important - } - - .ps-md-6 { - padding-left: 2.5rem !important - } - - .ps-md-7 { - padding-left: 3rem !important - } - - .ps-md-8 { - padding-left: 3.5rem !important - } - - .ps-md-9 { - padding-left: 4rem !important - } - - .ps-md-10 { - padding-left: 4.5rem !important - } - - .ps-md-11 { - padding-left: 5rem !important - } - - .ps-md-12 { - padding-left: 6rem !important - } - - .ps-md-13 { - padding-left: 6.5rem !important - } - - .ps-md-14 { - padding-left: 7rem !important - } - - .ps-md-15 { - padding-left: 7.5rem !important - } - - .gap-md-0 { - gap: 0 !important - } - - .gap-md-1 { - gap: .25rem !important - } - - .gap-md-2 { - gap: .5rem !important - } - - .gap-md-3 { - gap: 1rem !important - } - - .gap-md-4 { - gap: 1.5rem !important - } - - .gap-md-5 { - gap: 2rem !important - } - - .gap-md-6 { - gap: 2.5rem !important - } - - .gap-md-7 { - gap: 3rem !important - } - - .gap-md-8 { - gap: 3.5rem !important - } - - .gap-md-9 { - gap: 4rem !important - } - - .gap-md-10 { - gap: 4.5rem !important - } - - .gap-md-11 { - gap: 5rem !important - } - - .gap-md-12 { - gap: 6rem !important - } - - .gap-md-13 { - gap: 6.5rem !important - } - - .gap-md-14 { - gap: 7rem !important - } - - .gap-md-15 { - gap: 7.5rem !important - } - - .fs-md--3 { - font-size: .512rem !important - } - - .fs-md--2 { - font-size: .64rem !important - } - - .fs-md--1 { - font-size: .8rem !important - } - - .fs-md-0 { - font-size: 1rem !important - } - - .fs-md-1 { - font-size: 1.25rem !important - } - - .fs-md-2 { - font-size: 1.5625rem !important - } - - .fs-md-3 { - font-size: 1.953125rem !important - } - - .fs-md-4 { - font-size: 2.44140625rem !important - } - - .fs-md-5 { - font-size: 3.0517578125rem !important - } - - .fs-md-6 { - font-size: 3.8146972656rem !important - } - - .fs-md-7 { - font-size: 4.768371582rem !important - } - - .lh-md-1 { - line-height: 1 !important - } - - .lh-md-sm { - line-height: 1.2 !important - } - - .lh-md-base { - line-height: 1.49 !important - } - - .lh-md-lg { - line-height: 1.4 !important - } - - .text-md-start { - text-align: left !important - } - - .text-md-end { - text-align: right !important - } - - .text-md-center { - text-align: center !important - } - - .rounded-md-top { - border-top-left-radius: .375rem !important; - border-top-right-radius: .375rem !important - } - - .rounded-md-top-lg { - border-top-left-radius: .5rem !important; - border-top-right-radius: .5rem !important - } - - .rounded-md-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important - } - - .rounded-md-end { - border-top-right-radius: .375rem !important; - border-bottom-right-radius: .375rem !important - } - - .rounded-md-end-lg { - border-top-right-radius: .5rem !important; - border-bottom-right-radius: .5rem !important - } - - .rounded-md-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important - } - - .rounded-md-bottom { - border-bottom-right-radius: .375rem !important; - border-bottom-left-radius: .375rem !important - } - - .rounded-md-bottom-lg { - border-bottom-right-radius: .5rem !important; - border-bottom-left-radius: .5rem !important - } - - .rounded-md-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important - } - - .rounded-md-start { - border-bottom-left-radius: .375rem !important; - border-top-left-radius: .375rem !important - } - - .rounded-md-start-lg { - border-bottom-left-radius: .5rem !important; - border-top-left-radius: .5rem !important - } - - .rounded-md-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important - } - - .max-vh-md-25 { - max-height: 25vh !important - } - - .max-vh-md-50 { - max-height: 50vh !important - } - - .max-vh-md-75 { - max-height: 75vh !important - } - - .max-vh-md-100 { - max-height: 100vh !important - } - - .border-x-md { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-x-md-0 { - border-left: 0 !important; - border-right: 0 !important - } - - .border-y-md { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-y-md-0 { - border-top: 0 !important; - border-bottom: 0 !important - } - - .rounded-md-0 { - border-radius: 0 !important - } -} - -@media(min-width: 992px) { - .float-lg-start { - float:left !important - } - - .float-lg-end { - float: right !important - } - - .float-lg-none { - float: none !important - } - - .opacity-lg-0 { - opacity: 0 !important - } - - .opacity-lg-25 { - opacity: .25 !important - } - - .opacity-lg-50 { - opacity: .5 !important - } - - .opacity-lg-75 { - opacity: .75 !important - } - - .opacity-lg-85 { - opacity: .85 !important - } - - .opacity-lg-100 { - opacity: 1 !important - } - - .d-lg-inline { - display: inline !important - } - - .d-lg-inline-block { - display: inline-block !important - } - - .d-lg-block { - display: block !important - } - - .d-lg-grid { - display: grid !important - } - - .d-lg-table { - display: table !important - } - - .d-lg-table-row { - display: table-row !important - } - - .d-lg-table-cell { - display: table-cell !important - } - - .d-lg-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-lg-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } - - .d-lg-none { - display: none !important - } - - .position-lg-static { - position: static !important - } - - .position-lg-relative { - position: relative !important - } - - .position-lg-absolute { - position: absolute !important - } - - .position-lg-fixed { - position: fixed !important - } - - .position-lg-sticky { - position: sticky !important - } - - .translate-lg-middle { - -webkit-transform: translateX(-50%) translateY(-50%) !important; - -ms-transform: translateX(-50%) translateY(-50%) !important; - transform: translateX(-50%) translateY(-50%) !important - } - - .translate-lg-middle-x { - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important - } - - .translate-lg-middle-y { - -webkit-transform: translateY(-50%) !important; - -ms-transform: translateY(-50%) !important; - transform: translateY(-50%) !important - } - - .border-lg { - border: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-lg-0 { - border: 0 !important - } - - .border-top-lg { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-top-lg-0 { - border-top: 0 !important - } - - .border-end-lg { - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-end-lg-0 { - border-right: 0 !important - } - - .border-bottom-lg { - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-bottom-lg-0 { - border-bottom: 0 !important - } - - .border-start-lg { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-start-lg-0 { - border-left: 0 !important - } - - .w-lg-25 { - width: 25% !important - } - - .w-lg-30 { - width: 30% !important - } - - .w-lg-50 { - width: 50% !important - } - - .w-lg-60 { - width: 60% !important - } - - .w-lg-70 { - width: 70% !important - } - - .w-lg-75 { - width: 75% !important - } - - .w-lg-100 { - width: 100% !important - } - - .w-lg-max-content { - width: -webkit-max-content !important; - width: -moz-max-content !important; - width: max-content !important - } - - .w-lg-min-content { - width: -webkit-min-content !important; - width: -moz-min-content !important; - width: min-content !important - } - - .w-lg-auto { - width: auto !important - } - - .vw-lg-25 { - width: 25vw !important - } - - .vw-lg-50 { - width: 50vw !important - } - - .vw-lg-75 { - width: 75vw !important - } - - .vw-lg-100 { - width: 100vw !important - } - - .h-lg-25 { - height: 25% !important - } - - .h-lg-30 { - height: 30% !important - } - - .h-lg-50 { - height: 50% !important - } - - .h-lg-60 { - height: 60% !important - } - - .h-lg-70 { - height: 70% !important - } - - .h-lg-75 { - height: 75% !important - } - - .h-lg-100 { - height: 100% !important - } - - .h-lg-max-content { - height: -webkit-max-content !important; - height: -moz-max-content !important; - height: max-content !important - } - - .h-lg-min-content { - height: -webkit-min-content !important; - height: -moz-min-content !important; - height: min-content !important - } - - .h-lg-auto { - height: auto !important - } - - .vh-lg-25 { - height: 25vh !important - } - - .vh-lg-50 { - height: 50vh !important - } - - .vh-lg-75 { - height: 75vh !important - } - - .vh-lg-100 { - height: 100vh !important - } - - .min-vh-lg-25 { - min-height: 25vh !important - } - - .min-vh-lg-50 { - min-height: 50vh !important - } - - .min-vh-lg-75 { - min-height: 75vh !important - } - - .min-vh-lg-100 { - min-height: 100vh !important - } - - .flex-lg-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-lg-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-lg-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-lg-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-lg-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-lg-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-lg-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-lg-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-lg-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .flex-lg-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-lg-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-lg-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .justify-content-lg-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-lg-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-lg-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-lg-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-lg-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .justify-content-lg-evenly { - -webkit-box-pack: space-evenly !important; - -ms-flex-pack: space-evenly !important; - justify-content: space-evenly !important - } - - .align-items-lg-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-lg-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-lg-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-lg-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-lg-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-lg-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-lg-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-lg-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-lg-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-lg-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-lg-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-lg-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-lg-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-lg-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-lg-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-lg-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-lg-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } - - .order-lg-first { - -webkit-box-ordinal-group: 0 !important; - -ms-flex-order: -1 !important; - order: -1 !important - } - - .order-lg-0 { - -webkit-box-ordinal-group: 1 !important; - -ms-flex-order: 0 !important; - order: 0 !important - } - - .order-lg-1 { - -webkit-box-ordinal-group: 2 !important; - -ms-flex-order: 1 !important; - order: 1 !important - } - - .order-lg-2 { - -webkit-box-ordinal-group: 3 !important; - -ms-flex-order: 2 !important; - order: 2 !important - } - - .order-lg-3 { - -webkit-box-ordinal-group: 4 !important; - -ms-flex-order: 3 !important; - order: 3 !important - } - - .order-lg-4 { - -webkit-box-ordinal-group: 5 !important; - -ms-flex-order: 4 !important; - order: 4 !important - } - - .order-lg-5 { - -webkit-box-ordinal-group: 6 !important; - -ms-flex-order: 5 !important; - order: 5 !important - } - - .order-lg-last { - -webkit-box-ordinal-group: 7 !important; - -ms-flex-order: 6 !important; - order: 6 !important - } - - .m-lg-0 { - margin: 0 !important - } - - .m-lg-1 { - margin: .25rem !important - } - - .m-lg-2 { - margin: .5rem !important - } - - .m-lg-3 { - margin: 1rem !important - } - - .m-lg-4 { - margin: 1.5rem !important - } - - .m-lg-5 { - margin: 2rem !important - } - - .m-lg-6 { - margin: 2.5rem !important - } - - .m-lg-7 { - margin: 3rem !important - } - - .m-lg-8 { - margin: 3.5rem !important - } - - .m-lg-9 { - margin: 4rem !important - } - - .m-lg-10 { - margin: 4.5rem !important - } - - .m-lg-11 { - margin: 5rem !important - } - - .m-lg-12 { - margin: 6rem !important - } - - .m-lg-13 { - margin: 6.5rem !important - } - - .m-lg-14 { - margin: 7rem !important - } - - .m-lg-15 { - margin: 7.5rem !important - } - - .m-lg-auto { - margin: auto !important - } - - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-lg-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-lg-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-lg-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-lg-6 { - margin-right: 2.5rem !important; - margin-left: 2.5rem !important - } - - .mx-lg-7 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-lg-8 { - margin-right: 3.5rem !important; - margin-left: 3.5rem !important - } - - .mx-lg-9 { - margin-right: 4rem !important; - margin-left: 4rem !important - } - - .mx-lg-10 { - margin-right: 4.5rem !important; - margin-left: 4.5rem !important - } - - .mx-lg-11 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-lg-12 { - margin-right: 6rem !important; - margin-left: 6rem !important - } - - .mx-lg-13 { - margin-right: 6.5rem !important; - margin-left: 6.5rem !important - } - - .mx-lg-14 { - margin-right: 7rem !important; - margin-left: 7rem !important - } - - .mx-lg-15 { - margin-right: 7.5rem !important; - margin-left: 7.5rem !important - } - - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-lg-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-lg-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-lg-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-lg-6 { - margin-top: 2.5rem !important; - margin-bottom: 2.5rem !important - } - - .my-lg-7 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-lg-8 { - margin-top: 3.5rem !important; - margin-bottom: 3.5rem !important - } - - .my-lg-9 { - margin-top: 4rem !important; - margin-bottom: 4rem !important - } - - .my-lg-10 { - margin-top: 4.5rem !important; - margin-bottom: 4.5rem !important - } - - .my-lg-11 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-lg-12 { - margin-top: 6rem !important; - margin-bottom: 6rem !important - } - - .my-lg-13 { - margin-top: 6.5rem !important; - margin-bottom: 6.5rem !important - } - - .my-lg-14 { - margin-top: 7rem !important; - margin-bottom: 7rem !important - } - - .my-lg-15 { - margin-top: 7.5rem !important; - margin-bottom: 7.5rem !important - } - - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-lg-0 { - margin-top: 0 !important - } - - .mt-lg-1 { - margin-top: .25rem !important - } - - .mt-lg-2 { - margin-top: .5rem !important - } - - .mt-lg-3 { - margin-top: 1rem !important - } - - .mt-lg-4 { - margin-top: 1.5rem !important - } - - .mt-lg-5 { - margin-top: 2rem !important - } - - .mt-lg-6 { - margin-top: 2.5rem !important - } - - .mt-lg-7 { - margin-top: 3rem !important - } - - .mt-lg-8 { - margin-top: 3.5rem !important - } - - .mt-lg-9 { - margin-top: 4rem !important - } - - .mt-lg-10 { - margin-top: 4.5rem !important - } - - .mt-lg-11 { - margin-top: 5rem !important - } - - .mt-lg-12 { - margin-top: 6rem !important - } - - .mt-lg-13 { - margin-top: 6.5rem !important - } - - .mt-lg-14 { - margin-top: 7rem !important - } - - .mt-lg-15 { - margin-top: 7.5rem !important - } - - .mt-lg-auto { - margin-top: auto !important - } - - .me-lg-0 { - margin-right: 0 !important - } - - .me-lg-1 { - margin-right: .25rem !important - } - - .me-lg-2 { - margin-right: .5rem !important - } - - .me-lg-3 { - margin-right: 1rem !important - } - - .me-lg-4 { - margin-right: 1.5rem !important - } - - .me-lg-5 { - margin-right: 2rem !important - } - - .me-lg-6 { - margin-right: 2.5rem !important - } - - .me-lg-7 { - margin-right: 3rem !important - } - - .me-lg-8 { - margin-right: 3.5rem !important - } - - .me-lg-9 { - margin-right: 4rem !important - } - - .me-lg-10 { - margin-right: 4.5rem !important - } - - .me-lg-11 { - margin-right: 5rem !important - } - - .me-lg-12 { - margin-right: 6rem !important - } - - .me-lg-13 { - margin-right: 6.5rem !important - } - - .me-lg-14 { - margin-right: 7rem !important - } - - .me-lg-15 { - margin-right: 7.5rem !important - } - - .me-lg-auto { - margin-right: auto !important - } - - .mb-lg-0 { - margin-bottom: 0 !important - } - - .mb-lg-1 { - margin-bottom: .25rem !important - } - - .mb-lg-2 { - margin-bottom: .5rem !important - } - - .mb-lg-3 { - margin-bottom: 1rem !important - } - - .mb-lg-4 { - margin-bottom: 1.5rem !important - } - - .mb-lg-5 { - margin-bottom: 2rem !important - } - - .mb-lg-6 { - margin-bottom: 2.5rem !important - } - - .mb-lg-7 { - margin-bottom: 3rem !important - } - - .mb-lg-8 { - margin-bottom: 3.5rem !important - } - - .mb-lg-9 { - margin-bottom: 4rem !important - } - - .mb-lg-10 { - margin-bottom: 4.5rem !important - } - - .mb-lg-11 { - margin-bottom: 5rem !important - } - - .mb-lg-12 { - margin-bottom: 6rem !important - } - - .mb-lg-13 { - margin-bottom: 6.5rem !important - } - - .mb-lg-14 { - margin-bottom: 7rem !important - } - - .mb-lg-15 { - margin-bottom: 7.5rem !important - } - - .mb-lg-auto { - margin-bottom: auto !important - } - - .ms-lg-0 { - margin-left: 0 !important - } - - .ms-lg-1 { - margin-left: .25rem !important - } - - .ms-lg-2 { - margin-left: .5rem !important - } - - .ms-lg-3 { - margin-left: 1rem !important - } - - .ms-lg-4 { - margin-left: 1.5rem !important - } - - .ms-lg-5 { - margin-left: 2rem !important - } - - .ms-lg-6 { - margin-left: 2.5rem !important - } - - .ms-lg-7 { - margin-left: 3rem !important - } - - .ms-lg-8 { - margin-left: 3.5rem !important - } - - .ms-lg-9 { - margin-left: 4rem !important - } - - .ms-lg-10 { - margin-left: 4.5rem !important - } - - .ms-lg-11 { - margin-left: 5rem !important - } - - .ms-lg-12 { - margin-left: 6rem !important - } - - .ms-lg-13 { - margin-left: 6.5rem !important - } - - .ms-lg-14 { - margin-left: 7rem !important - } - - .ms-lg-15 { - margin-left: 7.5rem !important - } - - .ms-lg-auto { - margin-left: auto !important - } - - .m-lg-n1 { - margin: -0.25rem !important - } - - .m-lg-n2 { - margin: -0.5rem !important - } - - .m-lg-n3 { - margin: -1rem !important - } - - .m-lg-n4 { - margin: -1.5rem !important - } - - .m-lg-n5 { - margin: -2rem !important - } - - .m-lg-n6 { - margin: -2.5rem !important - } - - .m-lg-n7 { - margin: -3rem !important - } - - .m-lg-n8 { - margin: -3.5rem !important - } - - .m-lg-n9 { - margin: -4rem !important - } - - .m-lg-n10 { - margin: -4.5rem !important - } - - .m-lg-n11 { - margin: -5rem !important - } - - .m-lg-n12 { - margin: -6rem !important - } - - .m-lg-n13 { - margin: -6.5rem !important - } - - .m-lg-n14 { - margin: -7rem !important - } - - .m-lg-n15 { - margin: -7.5rem !important - } - - .mx-lg-n1 { - margin-right: -0.25rem !important; - margin-left: -0.25rem !important - } - - .mx-lg-n2 { - margin-right: -0.5rem !important; - margin-left: -0.5rem !important - } - - .mx-lg-n3 { - margin-right: -1rem !important; - margin-left: -1rem !important - } - - .mx-lg-n4 { - margin-right: -1.5rem !important; - margin-left: -1.5rem !important - } - - .mx-lg-n5 { - margin-right: -2rem !important; - margin-left: -2rem !important - } - - .mx-lg-n6 { - margin-right: -2.5rem !important; - margin-left: -2.5rem !important - } - - .mx-lg-n7 { - margin-right: -3rem !important; - margin-left: -3rem !important - } - - .mx-lg-n8 { - margin-right: -3.5rem !important; - margin-left: -3.5rem !important - } - - .mx-lg-n9 { - margin-right: -4rem !important; - margin-left: -4rem !important - } - - .mx-lg-n10 { - margin-right: -4.5rem !important; - margin-left: -4.5rem !important - } - - .mx-lg-n11 { - margin-right: -5rem !important; - margin-left: -5rem !important - } - - .mx-lg-n12 { - margin-right: -6rem !important; - margin-left: -6rem !important - } - - .mx-lg-n13 { - margin-right: -6.5rem !important; - margin-left: -6.5rem !important - } - - .mx-lg-n14 { - margin-right: -7rem !important; - margin-left: -7rem !important - } - - .mx-lg-n15 { - margin-right: -7.5rem !important; - margin-left: -7.5rem !important - } - - .my-lg-n1 { - margin-top: -0.25rem !important; - margin-bottom: -0.25rem !important - } - - .my-lg-n2 { - margin-top: -0.5rem !important; - margin-bottom: -0.5rem !important - } - - .my-lg-n3 { - margin-top: -1rem !important; - margin-bottom: -1rem !important - } - - .my-lg-n4 { - margin-top: -1.5rem !important; - margin-bottom: -1.5rem !important - } - - .my-lg-n5 { - margin-top: -2rem !important; - margin-bottom: -2rem !important - } - - .my-lg-n6 { - margin-top: -2.5rem !important; - margin-bottom: -2.5rem !important - } - - .my-lg-n7 { - margin-top: -3rem !important; - margin-bottom: -3rem !important - } - - .my-lg-n8 { - margin-top: -3.5rem !important; - margin-bottom: -3.5rem !important - } - - .my-lg-n9 { - margin-top: -4rem !important; - margin-bottom: -4rem !important - } - - .my-lg-n10 { - margin-top: -4.5rem !important; - margin-bottom: -4.5rem !important - } - - .my-lg-n11 { - margin-top: -5rem !important; - margin-bottom: -5rem !important - } - - .my-lg-n12 { - margin-top: -6rem !important; - margin-bottom: -6rem !important - } - - .my-lg-n13 { - margin-top: -6.5rem !important; - margin-bottom: -6.5rem !important - } - - .my-lg-n14 { - margin-top: -7rem !important; - margin-bottom: -7rem !important - } - - .my-lg-n15 { - margin-top: -7.5rem !important; - margin-bottom: -7.5rem !important - } - - .mt-lg-n1 { - margin-top: -0.25rem !important - } - - .mt-lg-n2 { - margin-top: -0.5rem !important - } - - .mt-lg-n3 { - margin-top: -1rem !important - } - - .mt-lg-n4 { - margin-top: -1.5rem !important - } - - .mt-lg-n5 { - margin-top: -2rem !important - } - - .mt-lg-n6 { - margin-top: -2.5rem !important - } - - .mt-lg-n7 { - margin-top: -3rem !important - } - - .mt-lg-n8 { - margin-top: -3.5rem !important - } - - .mt-lg-n9 { - margin-top: -4rem !important - } - - .mt-lg-n10 { - margin-top: -4.5rem !important - } - - .mt-lg-n11 { - margin-top: -5rem !important - } - - .mt-lg-n12 { - margin-top: -6rem !important - } - - .mt-lg-n13 { - margin-top: -6.5rem !important - } - - .mt-lg-n14 { - margin-top: -7rem !important - } - - .mt-lg-n15 { - margin-top: -7.5rem !important - } - - .me-lg-n1 { - margin-right: -0.25rem !important - } - - .me-lg-n2 { - margin-right: -0.5rem !important - } - - .me-lg-n3 { - margin-right: -1rem !important - } - - .me-lg-n4 { - margin-right: -1.5rem !important - } - - .me-lg-n5 { - margin-right: -2rem !important - } - - .me-lg-n6 { - margin-right: -2.5rem !important - } - - .me-lg-n7 { - margin-right: -3rem !important - } - - .me-lg-n8 { - margin-right: -3.5rem !important - } - - .me-lg-n9 { - margin-right: -4rem !important - } - - .me-lg-n10 { - margin-right: -4.5rem !important - } - - .me-lg-n11 { - margin-right: -5rem !important - } - - .me-lg-n12 { - margin-right: -6rem !important - } - - .me-lg-n13 { - margin-right: -6.5rem !important - } - - .me-lg-n14 { - margin-right: -7rem !important - } - - .me-lg-n15 { - margin-right: -7.5rem !important - } - - .mb-lg-n1 { - margin-bottom: -0.25rem !important - } - - .mb-lg-n2 { - margin-bottom: -0.5rem !important - } - - .mb-lg-n3 { - margin-bottom: -1rem !important - } - - .mb-lg-n4 { - margin-bottom: -1.5rem !important - } - - .mb-lg-n5 { - margin-bottom: -2rem !important - } - - .mb-lg-n6 { - margin-bottom: -2.5rem !important - } - - .mb-lg-n7 { - margin-bottom: -3rem !important - } - - .mb-lg-n8 { - margin-bottom: -3.5rem !important - } - - .mb-lg-n9 { - margin-bottom: -4rem !important - } - - .mb-lg-n10 { - margin-bottom: -4.5rem !important - } - - .mb-lg-n11 { - margin-bottom: -5rem !important - } - - .mb-lg-n12 { - margin-bottom: -6rem !important - } - - .mb-lg-n13 { - margin-bottom: -6.5rem !important - } - - .mb-lg-n14 { - margin-bottom: -7rem !important - } - - .mb-lg-n15 { - margin-bottom: -7.5rem !important - } - - .ms-lg-n1 { - margin-left: -0.25rem !important - } - - .ms-lg-n2 { - margin-left: -0.5rem !important - } - - .ms-lg-n3 { - margin-left: -1rem !important - } - - .ms-lg-n4 { - margin-left: -1.5rem !important - } - - .ms-lg-n5 { - margin-left: -2rem !important - } - - .ms-lg-n6 { - margin-left: -2.5rem !important - } - - .ms-lg-n7 { - margin-left: -3rem !important - } - - .ms-lg-n8 { - margin-left: -3.5rem !important - } - - .ms-lg-n9 { - margin-left: -4rem !important - } - - .ms-lg-n10 { - margin-left: -4.5rem !important - } - - .ms-lg-n11 { - margin-left: -5rem !important - } - - .ms-lg-n12 { - margin-left: -6rem !important - } - - .ms-lg-n13 { - margin-left: -6.5rem !important - } - - .ms-lg-n14 { - margin-left: -7rem !important - } - - .ms-lg-n15 { - margin-left: -7.5rem !important - } - - .p-lg-0 { - padding: 0 !important - } - - .p-lg-1 { - padding: .25rem !important - } - - .p-lg-2 { - padding: .5rem !important - } - - .p-lg-3 { - padding: 1rem !important - } - - .p-lg-4 { - padding: 1.5rem !important - } - - .p-lg-5 { - padding: 2rem !important - } - - .p-lg-6 { - padding: 2.5rem !important - } - - .p-lg-7 { - padding: 3rem !important - } - - .p-lg-8 { - padding: 3.5rem !important - } - - .p-lg-9 { - padding: 4rem !important - } - - .p-lg-10 { - padding: 4.5rem !important - } - - .p-lg-11 { - padding: 5rem !important - } - - .p-lg-12 { - padding: 6rem !important - } - - .p-lg-13 { - padding: 6.5rem !important - } - - .p-lg-14 { - padding: 7rem !important - } - - .p-lg-15 { - padding: 7.5rem !important - } - - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-lg-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-lg-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-lg-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-lg-6 { - padding-right: 2.5rem !important; - padding-left: 2.5rem !important - } - - .px-lg-7 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-lg-8 { - padding-right: 3.5rem !important; - padding-left: 3.5rem !important - } - - .px-lg-9 { - padding-right: 4rem !important; - padding-left: 4rem !important - } - - .px-lg-10 { - padding-right: 4.5rem !important; - padding-left: 4.5rem !important - } - - .px-lg-11 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-lg-12 { - padding-right: 6rem !important; - padding-left: 6rem !important - } - - .px-lg-13 { - padding-right: 6.5rem !important; - padding-left: 6.5rem !important - } - - .px-lg-14 { - padding-right: 7rem !important; - padding-left: 7rem !important - } - - .px-lg-15 { - padding-right: 7.5rem !important; - padding-left: 7.5rem !important - } - - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-lg-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-lg-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-lg-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-lg-6 { - padding-top: 2.5rem !important; - padding-bottom: 2.5rem !important - } - - .py-lg-7 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-lg-8 { - padding-top: 3.5rem !important; - padding-bottom: 3.5rem !important - } - - .py-lg-9 { - padding-top: 4rem !important; - padding-bottom: 4rem !important - } - - .py-lg-10 { - padding-top: 4.5rem !important; - padding-bottom: 4.5rem !important - } - - .py-lg-11 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-lg-12 { - padding-top: 6rem !important; - padding-bottom: 6rem !important - } - - .py-lg-13 { - padding-top: 6.5rem !important; - padding-bottom: 6.5rem !important - } - - .py-lg-14 { - padding-top: 7rem !important; - padding-bottom: 7rem !important - } - - .py-lg-15 { - padding-top: 7.5rem !important; - padding-bottom: 7.5rem !important - } - - .pt-lg-0 { - padding-top: 0 !important - } - - .pt-lg-1 { - padding-top: .25rem !important - } - - .pt-lg-2 { - padding-top: .5rem !important - } - - .pt-lg-3 { - padding-top: 1rem !important - } - - .pt-lg-4 { - padding-top: 1.5rem !important - } - - .pt-lg-5 { - padding-top: 2rem !important - } - - .pt-lg-6 { - padding-top: 2.5rem !important - } - - .pt-lg-7 { - padding-top: 3rem !important - } - - .pt-lg-8 { - padding-top: 3.5rem !important - } - - .pt-lg-9 { - padding-top: 4rem !important - } - - .pt-lg-10 { - padding-top: 4.5rem !important - } - - .pt-lg-11 { - padding-top: 5rem !important - } - - .pt-lg-12 { - padding-top: 6rem !important - } - - .pt-lg-13 { - padding-top: 6.5rem !important - } - - .pt-lg-14 { - padding-top: 7rem !important - } - - .pt-lg-15 { - padding-top: 7.5rem !important - } - - .pe-lg-0 { - padding-right: 0 !important - } - - .pe-lg-1 { - padding-right: .25rem !important - } - - .pe-lg-2 { - padding-right: .5rem !important - } - - .pe-lg-3 { - padding-right: 1rem !important - } - - .pe-lg-4 { - padding-right: 1.5rem !important - } - - .pe-lg-5 { - padding-right: 2rem !important - } - - .pe-lg-6 { - padding-right: 2.5rem !important - } - - .pe-lg-7 { - padding-right: 3rem !important - } - - .pe-lg-8 { - padding-right: 3.5rem !important - } - - .pe-lg-9 { - padding-right: 4rem !important - } - - .pe-lg-10 { - padding-right: 4.5rem !important - } - - .pe-lg-11 { - padding-right: 5rem !important - } - - .pe-lg-12 { - padding-right: 6rem !important - } - - .pe-lg-13 { - padding-right: 6.5rem !important - } - - .pe-lg-14 { - padding-right: 7rem !important - } - - .pe-lg-15 { - padding-right: 7.5rem !important - } - - .pb-lg-0 { - padding-bottom: 0 !important - } - - .pb-lg-1 { - padding-bottom: .25rem !important - } - - .pb-lg-2 { - padding-bottom: .5rem !important - } - - .pb-lg-3 { - padding-bottom: 1rem !important - } - - .pb-lg-4 { - padding-bottom: 1.5rem !important - } - - .pb-lg-5 { - padding-bottom: 2rem !important - } - - .pb-lg-6 { - padding-bottom: 2.5rem !important - } - - .pb-lg-7 { - padding-bottom: 3rem !important - } - - .pb-lg-8 { - padding-bottom: 3.5rem !important - } - - .pb-lg-9 { - padding-bottom: 4rem !important - } - - .pb-lg-10 { - padding-bottom: 4.5rem !important - } - - .pb-lg-11 { - padding-bottom: 5rem !important - } - - .pb-lg-12 { - padding-bottom: 6rem !important - } - - .pb-lg-13 { - padding-bottom: 6.5rem !important - } - - .pb-lg-14 { - padding-bottom: 7rem !important - } - - .pb-lg-15 { - padding-bottom: 7.5rem !important - } - - .ps-lg-0 { - padding-left: 0 !important - } - - .ps-lg-1 { - padding-left: .25rem !important - } - - .ps-lg-2 { - padding-left: .5rem !important - } - - .ps-lg-3 { - padding-left: 1rem !important - } - - .ps-lg-4 { - padding-left: 1.5rem !important - } - - .ps-lg-5 { - padding-left: 2rem !important - } - - .ps-lg-6 { - padding-left: 2.5rem !important - } - - .ps-lg-7 { - padding-left: 3rem !important - } - - .ps-lg-8 { - padding-left: 3.5rem !important - } - - .ps-lg-9 { - padding-left: 4rem !important - } - - .ps-lg-10 { - padding-left: 4.5rem !important - } - - .ps-lg-11 { - padding-left: 5rem !important - } - - .ps-lg-12 { - padding-left: 6rem !important - } - - .ps-lg-13 { - padding-left: 6.5rem !important - } - - .ps-lg-14 { - padding-left: 7rem !important - } - - .ps-lg-15 { - padding-left: 7.5rem !important - } - - .gap-lg-0 { - gap: 0 !important - } - - .gap-lg-1 { - gap: .25rem !important - } - - .gap-lg-2 { - gap: .5rem !important - } - - .gap-lg-3 { - gap: 1rem !important - } - - .gap-lg-4 { - gap: 1.5rem !important - } - - .gap-lg-5 { - gap: 2rem !important - } - - .gap-lg-6 { - gap: 2.5rem !important - } - - .gap-lg-7 { - gap: 3rem !important - } - - .gap-lg-8 { - gap: 3.5rem !important - } - - .gap-lg-9 { - gap: 4rem !important - } - - .gap-lg-10 { - gap: 4.5rem !important - } - - .gap-lg-11 { - gap: 5rem !important - } - - .gap-lg-12 { - gap: 6rem !important - } - - .gap-lg-13 { - gap: 6.5rem !important - } - - .gap-lg-14 { - gap: 7rem !important - } - - .gap-lg-15 { - gap: 7.5rem !important - } - - .fs-lg--3 { - font-size: .512rem !important - } - - .fs-lg--2 { - font-size: .64rem !important - } - - .fs-lg--1 { - font-size: .8rem !important - } - - .fs-lg-0 { - font-size: 1rem !important - } - - .fs-lg-1 { - font-size: 1.25rem !important - } - - .fs-lg-2 { - font-size: 1.5625rem !important - } - - .fs-lg-3 { - font-size: 1.953125rem !important - } - - .fs-lg-4 { - font-size: 2.44140625rem !important - } - - .fs-lg-5 { - font-size: 3.0517578125rem !important - } - - .fs-lg-6 { - font-size: 3.8146972656rem !important - } - - .fs-lg-7 { - font-size: 4.768371582rem !important - } - - .lh-lg-1 { - line-height: 1 !important - } - - .lh-lg-sm { - line-height: 1.2 !important - } - - .lh-lg-base { - line-height: 1.49 !important - } - - .lh-lg-lg { - line-height: 1.4 !important - } - - .text-lg-start { - text-align: left !important - } - - .text-lg-end { - text-align: right !important - } - - .text-lg-center { - text-align: center !important - } - - .rounded-lg-top { - border-top-left-radius: .375rem !important; - border-top-right-radius: .375rem !important - } - - .rounded-lg-top-lg { - border-top-left-radius: .5rem !important; - border-top-right-radius: .5rem !important - } - - .rounded-lg-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important - } - - .rounded-lg-end { - border-top-right-radius: .375rem !important; - border-bottom-right-radius: .375rem !important - } - - .rounded-lg-end-lg { - border-top-right-radius: .5rem !important; - border-bottom-right-radius: .5rem !important - } - - .rounded-lg-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important - } - - .rounded-lg-bottom { - border-bottom-right-radius: .375rem !important; - border-bottom-left-radius: .375rem !important - } - - .rounded-lg-bottom-lg { - border-bottom-right-radius: .5rem !important; - border-bottom-left-radius: .5rem !important - } - - .rounded-lg-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important - } - - .rounded-lg-start { - border-bottom-left-radius: .375rem !important; - border-top-left-radius: .375rem !important - } - - .rounded-lg-start-lg { - border-bottom-left-radius: .5rem !important; - border-top-left-radius: .5rem !important - } - - .rounded-lg-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important - } - - .max-vh-lg-25 { - max-height: 25vh !important - } - - .max-vh-lg-50 { - max-height: 50vh !important - } - - .max-vh-lg-75 { - max-height: 75vh !important - } - - .max-vh-lg-100 { - max-height: 100vh !important - } - - .border-x-lg { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-x-lg-0 { - border-left: 0 !important; - border-right: 0 !important - } - - .border-y-lg { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-y-lg-0 { - border-top: 0 !important; - border-bottom: 0 !important - } - - .rounded-lg-0 { - border-radius: 0 !important - } -} - -@media(min-width: 1200px) { - .float-xl-start { - float:left !important - } - - .float-xl-end { - float: right !important - } - - .float-xl-none { - float: none !important - } - - .opacity-xl-0 { - opacity: 0 !important - } - - .opacity-xl-25 { - opacity: .25 !important - } - - .opacity-xl-50 { - opacity: .5 !important - } - - .opacity-xl-75 { - opacity: .75 !important - } - - .opacity-xl-85 { - opacity: .85 !important - } - - .opacity-xl-100 { - opacity: 1 !important - } - - .d-xl-inline { - display: inline !important - } - - .d-xl-inline-block { - display: inline-block !important - } - - .d-xl-block { - display: block !important - } - - .d-xl-grid { - display: grid !important - } - - .d-xl-table { - display: table !important - } - - .d-xl-table-row { - display: table-row !important - } - - .d-xl-table-cell { - display: table-cell !important - } - - .d-xl-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-xl-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } - - .d-xl-none { - display: none !important - } - - .position-xl-static { - position: static !important - } - - .position-xl-relative { - position: relative !important - } - - .position-xl-absolute { - position: absolute !important - } - - .position-xl-fixed { - position: fixed !important - } - - .position-xl-sticky { - position: sticky !important - } - - .translate-xl-middle { - -webkit-transform: translateX(-50%) translateY(-50%) !important; - -ms-transform: translateX(-50%) translateY(-50%) !important; - transform: translateX(-50%) translateY(-50%) !important - } - - .translate-xl-middle-x { - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important - } - - .translate-xl-middle-y { - -webkit-transform: translateY(-50%) !important; - -ms-transform: translateY(-50%) !important; - transform: translateY(-50%) !important - } - - .border-xl { - border: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-xl-0 { - border: 0 !important - } - - .border-top-xl { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-top-xl-0 { - border-top: 0 !important - } - - .border-end-xl { - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-end-xl-0 { - border-right: 0 !important - } - - .border-bottom-xl { - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-bottom-xl-0 { - border-bottom: 0 !important - } - - .border-start-xl { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-start-xl-0 { - border-left: 0 !important - } - - .w-xl-25 { - width: 25% !important - } - - .w-xl-30 { - width: 30% !important - } - - .w-xl-50 { - width: 50% !important - } - - .w-xl-60 { - width: 60% !important - } - - .w-xl-70 { - width: 70% !important - } - - .w-xl-75 { - width: 75% !important - } - - .w-xl-100 { - width: 100% !important - } - - .w-xl-max-content { - width: -webkit-max-content !important; - width: -moz-max-content !important; - width: max-content !important - } - - .w-xl-min-content { - width: -webkit-min-content !important; - width: -moz-min-content !important; - width: min-content !important - } - - .w-xl-auto { - width: auto !important - } - - .vw-xl-25 { - width: 25vw !important - } - - .vw-xl-50 { - width: 50vw !important - } - - .vw-xl-75 { - width: 75vw !important - } - - .vw-xl-100 { - width: 100vw !important - } - - .h-xl-25 { - height: 25% !important - } - - .h-xl-30 { - height: 30% !important - } - - .h-xl-50 { - height: 50% !important - } - - .h-xl-60 { - height: 60% !important - } - - .h-xl-70 { - height: 70% !important - } - - .h-xl-75 { - height: 75% !important - } - - .h-xl-100 { - height: 100% !important - } - - .h-xl-max-content { - height: -webkit-max-content !important; - height: -moz-max-content !important; - height: max-content !important - } - - .h-xl-min-content { - height: -webkit-min-content !important; - height: -moz-min-content !important; - height: min-content !important - } - - .h-xl-auto { - height: auto !important - } - - .vh-xl-25 { - height: 25vh !important - } - - .vh-xl-50 { - height: 50vh !important - } - - .vh-xl-75 { - height: 75vh !important - } - - .vh-xl-100 { - height: 100vh !important - } - - .min-vh-xl-25 { - min-height: 25vh !important - } - - .min-vh-xl-50 { - min-height: 50vh !important - } - - .min-vh-xl-75 { - min-height: 75vh !important - } - - .min-vh-xl-100 { - min-height: 100vh !important - } - - .flex-xl-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-xl-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-xl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-xl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-xl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-xl-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-xl-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-xl-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-xl-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .flex-xl-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-xl-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-xl-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .justify-content-xl-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-xl-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-xl-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-xl-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-xl-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .justify-content-xl-evenly { - -webkit-box-pack: space-evenly !important; - -ms-flex-pack: space-evenly !important; - justify-content: space-evenly !important - } - - .align-items-xl-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-xl-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-xl-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-xl-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-xl-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-xl-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-xl-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-xl-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-xl-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-xl-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-xl-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-xl-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-xl-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-xl-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-xl-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-xl-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-xl-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } - - .order-xl-first { - -webkit-box-ordinal-group: 0 !important; - -ms-flex-order: -1 !important; - order: -1 !important - } - - .order-xl-0 { - -webkit-box-ordinal-group: 1 !important; - -ms-flex-order: 0 !important; - order: 0 !important - } - - .order-xl-1 { - -webkit-box-ordinal-group: 2 !important; - -ms-flex-order: 1 !important; - order: 1 !important - } - - .order-xl-2 { - -webkit-box-ordinal-group: 3 !important; - -ms-flex-order: 2 !important; - order: 2 !important - } - - .order-xl-3 { - -webkit-box-ordinal-group: 4 !important; - -ms-flex-order: 3 !important; - order: 3 !important - } - - .order-xl-4 { - -webkit-box-ordinal-group: 5 !important; - -ms-flex-order: 4 !important; - order: 4 !important - } - - .order-xl-5 { - -webkit-box-ordinal-group: 6 !important; - -ms-flex-order: 5 !important; - order: 5 !important - } - - .order-xl-last { - -webkit-box-ordinal-group: 7 !important; - -ms-flex-order: 6 !important; - order: 6 !important - } - - .m-xl-0 { - margin: 0 !important - } - - .m-xl-1 { - margin: .25rem !important - } - - .m-xl-2 { - margin: .5rem !important - } - - .m-xl-3 { - margin: 1rem !important - } - - .m-xl-4 { - margin: 1.5rem !important - } - - .m-xl-5 { - margin: 2rem !important - } - - .m-xl-6 { - margin: 2.5rem !important - } - - .m-xl-7 { - margin: 3rem !important - } - - .m-xl-8 { - margin: 3.5rem !important - } - - .m-xl-9 { - margin: 4rem !important - } - - .m-xl-10 { - margin: 4.5rem !important - } - - .m-xl-11 { - margin: 5rem !important - } - - .m-xl-12 { - margin: 6rem !important - } - - .m-xl-13 { - margin: 6.5rem !important - } - - .m-xl-14 { - margin: 7rem !important - } - - .m-xl-15 { - margin: 7.5rem !important - } - - .m-xl-auto { - margin: auto !important - } - - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-xl-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-xl-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-xl-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-xl-6 { - margin-right: 2.5rem !important; - margin-left: 2.5rem !important - } - - .mx-xl-7 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-xl-8 { - margin-right: 3.5rem !important; - margin-left: 3.5rem !important - } - - .mx-xl-9 { - margin-right: 4rem !important; - margin-left: 4rem !important - } - - .mx-xl-10 { - margin-right: 4.5rem !important; - margin-left: 4.5rem !important - } - - .mx-xl-11 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-xl-12 { - margin-right: 6rem !important; - margin-left: 6rem !important - } - - .mx-xl-13 { - margin-right: 6.5rem !important; - margin-left: 6.5rem !important - } - - .mx-xl-14 { - margin-right: 7rem !important; - margin-left: 7rem !important - } - - .mx-xl-15 { - margin-right: 7.5rem !important; - margin-left: 7.5rem !important - } - - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-xl-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-xl-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-xl-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-xl-6 { - margin-top: 2.5rem !important; - margin-bottom: 2.5rem !important - } - - .my-xl-7 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-xl-8 { - margin-top: 3.5rem !important; - margin-bottom: 3.5rem !important - } - - .my-xl-9 { - margin-top: 4rem !important; - margin-bottom: 4rem !important - } - - .my-xl-10 { - margin-top: 4.5rem !important; - margin-bottom: 4.5rem !important - } - - .my-xl-11 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-xl-12 { - margin-top: 6rem !important; - margin-bottom: 6rem !important - } - - .my-xl-13 { - margin-top: 6.5rem !important; - margin-bottom: 6.5rem !important - } - - .my-xl-14 { - margin-top: 7rem !important; - margin-bottom: 7rem !important - } - - .my-xl-15 { - margin-top: 7.5rem !important; - margin-bottom: 7.5rem !important - } - - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-xl-0 { - margin-top: 0 !important - } - - .mt-xl-1 { - margin-top: .25rem !important - } - - .mt-xl-2 { - margin-top: .5rem !important - } - - .mt-xl-3 { - margin-top: 1rem !important - } - - .mt-xl-4 { - margin-top: 1.5rem !important - } - - .mt-xl-5 { - margin-top: 2rem !important - } - - .mt-xl-6 { - margin-top: 2.5rem !important - } - - .mt-xl-7 { - margin-top: 3rem !important - } - - .mt-xl-8 { - margin-top: 3.5rem !important - } - - .mt-xl-9 { - margin-top: 4rem !important - } - - .mt-xl-10 { - margin-top: 4.5rem !important - } - - .mt-xl-11 { - margin-top: 5rem !important - } - - .mt-xl-12 { - margin-top: 6rem !important - } - - .mt-xl-13 { - margin-top: 6.5rem !important - } - - .mt-xl-14 { - margin-top: 7rem !important - } - - .mt-xl-15 { - margin-top: 7.5rem !important - } - - .mt-xl-auto { - margin-top: auto !important - } - - .me-xl-0 { - margin-right: 0 !important - } - - .me-xl-1 { - margin-right: .25rem !important - } - - .me-xl-2 { - margin-right: .5rem !important - } - - .me-xl-3 { - margin-right: 1rem !important - } - - .me-xl-4 { - margin-right: 1.5rem !important - } - - .me-xl-5 { - margin-right: 2rem !important - } - - .me-xl-6 { - margin-right: 2.5rem !important - } - - .me-xl-7 { - margin-right: 3rem !important - } - - .me-xl-8 { - margin-right: 3.5rem !important - } - - .me-xl-9 { - margin-right: 4rem !important - } - - .me-xl-10 { - margin-right: 4.5rem !important - } - - .me-xl-11 { - margin-right: 5rem !important - } - - .me-xl-12 { - margin-right: 6rem !important - } - - .me-xl-13 { - margin-right: 6.5rem !important - } - - .me-xl-14 { - margin-right: 7rem !important - } - - .me-xl-15 { - margin-right: 7.5rem !important - } - - .me-xl-auto { - margin-right: auto !important - } - - .mb-xl-0 { - margin-bottom: 0 !important - } - - .mb-xl-1 { - margin-bottom: .25rem !important - } - - .mb-xl-2 { - margin-bottom: .5rem !important - } - - .mb-xl-3 { - margin-bottom: 1rem !important - } - - .mb-xl-4 { - margin-bottom: 1.5rem !important - } - - .mb-xl-5 { - margin-bottom: 2rem !important - } - - .mb-xl-6 { - margin-bottom: 2.5rem !important - } - - .mb-xl-7 { - margin-bottom: 3rem !important - } - - .mb-xl-8 { - margin-bottom: 3.5rem !important - } - - .mb-xl-9 { - margin-bottom: 4rem !important - } - - .mb-xl-10 { - margin-bottom: 4.5rem !important - } - - .mb-xl-11 { - margin-bottom: 5rem !important - } - - .mb-xl-12 { - margin-bottom: 6rem !important - } - - .mb-xl-13 { - margin-bottom: 6.5rem !important - } - - .mb-xl-14 { - margin-bottom: 7rem !important - } - - .mb-xl-15 { - margin-bottom: 7.5rem !important - } - - .mb-xl-auto { - margin-bottom: auto !important - } - - .ms-xl-0 { - margin-left: 0 !important - } - - .ms-xl-1 { - margin-left: .25rem !important - } - - .ms-xl-2 { - margin-left: .5rem !important - } - - .ms-xl-3 { - margin-left: 1rem !important - } - - .ms-xl-4 { - margin-left: 1.5rem !important - } - - .ms-xl-5 { - margin-left: 2rem !important - } - - .ms-xl-6 { - margin-left: 2.5rem !important - } - - .ms-xl-7 { - margin-left: 3rem !important - } - - .ms-xl-8 { - margin-left: 3.5rem !important - } - - .ms-xl-9 { - margin-left: 4rem !important - } - - .ms-xl-10 { - margin-left: 4.5rem !important - } - - .ms-xl-11 { - margin-left: 5rem !important - } - - .ms-xl-12 { - margin-left: 6rem !important - } - - .ms-xl-13 { - margin-left: 6.5rem !important - } - - .ms-xl-14 { - margin-left: 7rem !important - } - - .ms-xl-15 { - margin-left: 7.5rem !important - } - - .ms-xl-auto { - margin-left: auto !important - } - - .m-xl-n1 { - margin: -0.25rem !important - } - - .m-xl-n2 { - margin: -0.5rem !important - } - - .m-xl-n3 { - margin: -1rem !important - } - - .m-xl-n4 { - margin: -1.5rem !important - } - - .m-xl-n5 { - margin: -2rem !important - } - - .m-xl-n6 { - margin: -2.5rem !important - } - - .m-xl-n7 { - margin: -3rem !important - } - - .m-xl-n8 { - margin: -3.5rem !important - } - - .m-xl-n9 { - margin: -4rem !important - } - - .m-xl-n10 { - margin: -4.5rem !important - } - - .m-xl-n11 { - margin: -5rem !important - } - - .m-xl-n12 { - margin: -6rem !important - } - - .m-xl-n13 { - margin: -6.5rem !important - } - - .m-xl-n14 { - margin: -7rem !important - } - - .m-xl-n15 { - margin: -7.5rem !important - } - - .mx-xl-n1 { - margin-right: -0.25rem !important; - margin-left: -0.25rem !important - } - - .mx-xl-n2 { - margin-right: -0.5rem !important; - margin-left: -0.5rem !important - } - - .mx-xl-n3 { - margin-right: -1rem !important; - margin-left: -1rem !important - } - - .mx-xl-n4 { - margin-right: -1.5rem !important; - margin-left: -1.5rem !important - } - - .mx-xl-n5 { - margin-right: -2rem !important; - margin-left: -2rem !important - } - - .mx-xl-n6 { - margin-right: -2.5rem !important; - margin-left: -2.5rem !important - } - - .mx-xl-n7 { - margin-right: -3rem !important; - margin-left: -3rem !important - } - - .mx-xl-n8 { - margin-right: -3.5rem !important; - margin-left: -3.5rem !important - } - - .mx-xl-n9 { - margin-right: -4rem !important; - margin-left: -4rem !important - } - - .mx-xl-n10 { - margin-right: -4.5rem !important; - margin-left: -4.5rem !important - } - - .mx-xl-n11 { - margin-right: -5rem !important; - margin-left: -5rem !important - } - - .mx-xl-n12 { - margin-right: -6rem !important; - margin-left: -6rem !important - } - - .mx-xl-n13 { - margin-right: -6.5rem !important; - margin-left: -6.5rem !important - } - - .mx-xl-n14 { - margin-right: -7rem !important; - margin-left: -7rem !important - } - - .mx-xl-n15 { - margin-right: -7.5rem !important; - margin-left: -7.5rem !important - } - - .my-xl-n1 { - margin-top: -0.25rem !important; - margin-bottom: -0.25rem !important - } - - .my-xl-n2 { - margin-top: -0.5rem !important; - margin-bottom: -0.5rem !important - } - - .my-xl-n3 { - margin-top: -1rem !important; - margin-bottom: -1rem !important - } - - .my-xl-n4 { - margin-top: -1.5rem !important; - margin-bottom: -1.5rem !important - } - - .my-xl-n5 { - margin-top: -2rem !important; - margin-bottom: -2rem !important - } - - .my-xl-n6 { - margin-top: -2.5rem !important; - margin-bottom: -2.5rem !important - } - - .my-xl-n7 { - margin-top: -3rem !important; - margin-bottom: -3rem !important - } - - .my-xl-n8 { - margin-top: -3.5rem !important; - margin-bottom: -3.5rem !important - } - - .my-xl-n9 { - margin-top: -4rem !important; - margin-bottom: -4rem !important - } - - .my-xl-n10 { - margin-top: -4.5rem !important; - margin-bottom: -4.5rem !important - } - - .my-xl-n11 { - margin-top: -5rem !important; - margin-bottom: -5rem !important - } - - .my-xl-n12 { - margin-top: -6rem !important; - margin-bottom: -6rem !important - } - - .my-xl-n13 { - margin-top: -6.5rem !important; - margin-bottom: -6.5rem !important - } - - .my-xl-n14 { - margin-top: -7rem !important; - margin-bottom: -7rem !important - } - - .my-xl-n15 { - margin-top: -7.5rem !important; - margin-bottom: -7.5rem !important - } - - .mt-xl-n1 { - margin-top: -0.25rem !important - } - - .mt-xl-n2 { - margin-top: -0.5rem !important - } - - .mt-xl-n3 { - margin-top: -1rem !important - } - - .mt-xl-n4 { - margin-top: -1.5rem !important - } - - .mt-xl-n5 { - margin-top: -2rem !important - } - - .mt-xl-n6 { - margin-top: -2.5rem !important - } - - .mt-xl-n7 { - margin-top: -3rem !important - } - - .mt-xl-n8 { - margin-top: -3.5rem !important - } - - .mt-xl-n9 { - margin-top: -4rem !important - } - - .mt-xl-n10 { - margin-top: -4.5rem !important - } - - .mt-xl-n11 { - margin-top: -5rem !important - } - - .mt-xl-n12 { - margin-top: -6rem !important - } - - .mt-xl-n13 { - margin-top: -6.5rem !important - } - - .mt-xl-n14 { - margin-top: -7rem !important - } - - .mt-xl-n15 { - margin-top: -7.5rem !important - } - - .me-xl-n1 { - margin-right: -0.25rem !important - } - - .me-xl-n2 { - margin-right: -0.5rem !important - } - - .me-xl-n3 { - margin-right: -1rem !important - } - - .me-xl-n4 { - margin-right: -1.5rem !important - } - - .me-xl-n5 { - margin-right: -2rem !important - } - - .me-xl-n6 { - margin-right: -2.5rem !important - } - - .me-xl-n7 { - margin-right: -3rem !important - } - - .me-xl-n8 { - margin-right: -3.5rem !important - } - - .me-xl-n9 { - margin-right: -4rem !important - } - - .me-xl-n10 { - margin-right: -4.5rem !important - } - - .me-xl-n11 { - margin-right: -5rem !important - } - - .me-xl-n12 { - margin-right: -6rem !important - } - - .me-xl-n13 { - margin-right: -6.5rem !important - } - - .me-xl-n14 { - margin-right: -7rem !important - } - - .me-xl-n15 { - margin-right: -7.5rem !important - } - - .mb-xl-n1 { - margin-bottom: -0.25rem !important - } - - .mb-xl-n2 { - margin-bottom: -0.5rem !important - } - - .mb-xl-n3 { - margin-bottom: -1rem !important - } - - .mb-xl-n4 { - margin-bottom: -1.5rem !important - } - - .mb-xl-n5 { - margin-bottom: -2rem !important - } - - .mb-xl-n6 { - margin-bottom: -2.5rem !important - } - - .mb-xl-n7 { - margin-bottom: -3rem !important - } - - .mb-xl-n8 { - margin-bottom: -3.5rem !important - } - - .mb-xl-n9 { - margin-bottom: -4rem !important - } - - .mb-xl-n10 { - margin-bottom: -4.5rem !important - } - - .mb-xl-n11 { - margin-bottom: -5rem !important - } - - .mb-xl-n12 { - margin-bottom: -6rem !important - } - - .mb-xl-n13 { - margin-bottom: -6.5rem !important - } - - .mb-xl-n14 { - margin-bottom: -7rem !important - } - - .mb-xl-n15 { - margin-bottom: -7.5rem !important - } - - .ms-xl-n1 { - margin-left: -0.25rem !important - } - - .ms-xl-n2 { - margin-left: -0.5rem !important - } - - .ms-xl-n3 { - margin-left: -1rem !important - } - - .ms-xl-n4 { - margin-left: -1.5rem !important - } - - .ms-xl-n5 { - margin-left: -2rem !important - } - - .ms-xl-n6 { - margin-left: -2.5rem !important - } - - .ms-xl-n7 { - margin-left: -3rem !important - } - - .ms-xl-n8 { - margin-left: -3.5rem !important - } - - .ms-xl-n9 { - margin-left: -4rem !important - } - - .ms-xl-n10 { - margin-left: -4.5rem !important - } - - .ms-xl-n11 { - margin-left: -5rem !important - } - - .ms-xl-n12 { - margin-left: -6rem !important - } - - .ms-xl-n13 { - margin-left: -6.5rem !important - } - - .ms-xl-n14 { - margin-left: -7rem !important - } - - .ms-xl-n15 { - margin-left: -7.5rem !important - } - - .p-xl-0 { - padding: 0 !important - } - - .p-xl-1 { - padding: .25rem !important - } - - .p-xl-2 { - padding: .5rem !important - } - - .p-xl-3 { - padding: 1rem !important - } - - .p-xl-4 { - padding: 1.5rem !important - } - - .p-xl-5 { - padding: 2rem !important - } - - .p-xl-6 { - padding: 2.5rem !important - } - - .p-xl-7 { - padding: 3rem !important - } - - .p-xl-8 { - padding: 3.5rem !important - } - - .p-xl-9 { - padding: 4rem !important - } - - .p-xl-10 { - padding: 4.5rem !important - } - - .p-xl-11 { - padding: 5rem !important - } - - .p-xl-12 { - padding: 6rem !important - } - - .p-xl-13 { - padding: 6.5rem !important - } - - .p-xl-14 { - padding: 7rem !important - } - - .p-xl-15 { - padding: 7.5rem !important - } - - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-xl-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-xl-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-xl-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-xl-6 { - padding-right: 2.5rem !important; - padding-left: 2.5rem !important - } - - .px-xl-7 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-xl-8 { - padding-right: 3.5rem !important; - padding-left: 3.5rem !important - } - - .px-xl-9 { - padding-right: 4rem !important; - padding-left: 4rem !important - } - - .px-xl-10 { - padding-right: 4.5rem !important; - padding-left: 4.5rem !important - } - - .px-xl-11 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-xl-12 { - padding-right: 6rem !important; - padding-left: 6rem !important - } - - .px-xl-13 { - padding-right: 6.5rem !important; - padding-left: 6.5rem !important - } - - .px-xl-14 { - padding-right: 7rem !important; - padding-left: 7rem !important - } - - .px-xl-15 { - padding-right: 7.5rem !important; - padding-left: 7.5rem !important - } - - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-xl-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-xl-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-xl-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-xl-6 { - padding-top: 2.5rem !important; - padding-bottom: 2.5rem !important - } - - .py-xl-7 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-xl-8 { - padding-top: 3.5rem !important; - padding-bottom: 3.5rem !important - } - - .py-xl-9 { - padding-top: 4rem !important; - padding-bottom: 4rem !important - } - - .py-xl-10 { - padding-top: 4.5rem !important; - padding-bottom: 4.5rem !important - } - - .py-xl-11 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-xl-12 { - padding-top: 6rem !important; - padding-bottom: 6rem !important - } - - .py-xl-13 { - padding-top: 6.5rem !important; - padding-bottom: 6.5rem !important - } - - .py-xl-14 { - padding-top: 7rem !important; - padding-bottom: 7rem !important - } - - .py-xl-15 { - padding-top: 7.5rem !important; - padding-bottom: 7.5rem !important - } - - .pt-xl-0 { - padding-top: 0 !important - } - - .pt-xl-1 { - padding-top: .25rem !important - } - - .pt-xl-2 { - padding-top: .5rem !important - } - - .pt-xl-3 { - padding-top: 1rem !important - } - - .pt-xl-4 { - padding-top: 1.5rem !important - } - - .pt-xl-5 { - padding-top: 2rem !important - } - - .pt-xl-6 { - padding-top: 2.5rem !important - } - - .pt-xl-7 { - padding-top: 3rem !important - } - - .pt-xl-8 { - padding-top: 3.5rem !important - } - - .pt-xl-9 { - padding-top: 4rem !important - } - - .pt-xl-10 { - padding-top: 4.5rem !important - } - - .pt-xl-11 { - padding-top: 5rem !important - } - - .pt-xl-12 { - padding-top: 6rem !important - } - - .pt-xl-13 { - padding-top: 6.5rem !important - } - - .pt-xl-14 { - padding-top: 7rem !important - } - - .pt-xl-15 { - padding-top: 7.5rem !important - } - - .pe-xl-0 { - padding-right: 0 !important - } - - .pe-xl-1 { - padding-right: .25rem !important - } - - .pe-xl-2 { - padding-right: .5rem !important - } - - .pe-xl-3 { - padding-right: 1rem !important - } - - .pe-xl-4 { - padding-right: 1.5rem !important - } - - .pe-xl-5 { - padding-right: 2rem !important - } - - .pe-xl-6 { - padding-right: 2.5rem !important - } - - .pe-xl-7 { - padding-right: 3rem !important - } - - .pe-xl-8 { - padding-right: 3.5rem !important - } - - .pe-xl-9 { - padding-right: 4rem !important - } - - .pe-xl-10 { - padding-right: 4.5rem !important - } - - .pe-xl-11 { - padding-right: 5rem !important - } - - .pe-xl-12 { - padding-right: 6rem !important - } - - .pe-xl-13 { - padding-right: 6.5rem !important - } - - .pe-xl-14 { - padding-right: 7rem !important - } - - .pe-xl-15 { - padding-right: 7.5rem !important - } - - .pb-xl-0 { - padding-bottom: 0 !important - } - - .pb-xl-1 { - padding-bottom: .25rem !important - } - - .pb-xl-2 { - padding-bottom: .5rem !important - } - - .pb-xl-3 { - padding-bottom: 1rem !important - } - - .pb-xl-4 { - padding-bottom: 1.5rem !important - } - - .pb-xl-5 { - padding-bottom: 2rem !important - } - - .pb-xl-6 { - padding-bottom: 2.5rem !important - } - - .pb-xl-7 { - padding-bottom: 3rem !important - } - - .pb-xl-8 { - padding-bottom: 3.5rem !important - } - - .pb-xl-9 { - padding-bottom: 4rem !important - } - - .pb-xl-10 { - padding-bottom: 4.5rem !important - } - - .pb-xl-11 { - padding-bottom: 5rem !important - } - - .pb-xl-12 { - padding-bottom: 6rem !important - } - - .pb-xl-13 { - padding-bottom: 6.5rem !important - } - - .pb-xl-14 { - padding-bottom: 7rem !important - } - - .pb-xl-15 { - padding-bottom: 7.5rem !important - } - - .ps-xl-0 { - padding-left: 0 !important - } - - .ps-xl-1 { - padding-left: .25rem !important - } - - .ps-xl-2 { - padding-left: .5rem !important - } - - .ps-xl-3 { - padding-left: 1rem !important - } - - .ps-xl-4 { - padding-left: 1.5rem !important - } - - .ps-xl-5 { - padding-left: 2rem !important - } - - .ps-xl-6 { - padding-left: 2.5rem !important - } - - .ps-xl-7 { - padding-left: 3rem !important - } - - .ps-xl-8 { - padding-left: 3.5rem !important - } - - .ps-xl-9 { - padding-left: 4rem !important - } - - .ps-xl-10 { - padding-left: 4.5rem !important - } - - .ps-xl-11 { - padding-left: 5rem !important - } - - .ps-xl-12 { - padding-left: 6rem !important - } - - .ps-xl-13 { - padding-left: 6.5rem !important - } - - .ps-xl-14 { - padding-left: 7rem !important - } - - .ps-xl-15 { - padding-left: 7.5rem !important - } - - .gap-xl-0 { - gap: 0 !important - } - - .gap-xl-1 { - gap: .25rem !important - } - - .gap-xl-2 { - gap: .5rem !important - } - - .gap-xl-3 { - gap: 1rem !important - } - - .gap-xl-4 { - gap: 1.5rem !important - } - - .gap-xl-5 { - gap: 2rem !important - } - - .gap-xl-6 { - gap: 2.5rem !important - } - - .gap-xl-7 { - gap: 3rem !important - } - - .gap-xl-8 { - gap: 3.5rem !important - } - - .gap-xl-9 { - gap: 4rem !important - } - - .gap-xl-10 { - gap: 4.5rem !important - } - - .gap-xl-11 { - gap: 5rem !important - } - - .gap-xl-12 { - gap: 6rem !important - } - - .gap-xl-13 { - gap: 6.5rem !important - } - - .gap-xl-14 { - gap: 7rem !important - } - - .gap-xl-15 { - gap: 7.5rem !important - } - - .fs-xl--3 { - font-size: .512rem !important - } - - .fs-xl--2 { - font-size: .64rem !important - } - - .fs-xl--1 { - font-size: .8rem !important - } - - .fs-xl-0 { - font-size: 1rem !important - } - - .fs-xl-1 { - font-size: 1.25rem !important - } - - .fs-xl-2 { - font-size: 1.5625rem !important - } - - .fs-xl-3 { - font-size: 1.953125rem !important - } - - .fs-xl-4 { - font-size: 2.44140625rem !important - } - - .fs-xl-5 { - font-size: 3.0517578125rem !important - } - - .fs-xl-6 { - font-size: 3.8146972656rem !important - } - - .fs-xl-7 { - font-size: 4.768371582rem !important - } - - .lh-xl-1 { - line-height: 1 !important - } - - .lh-xl-sm { - line-height: 1.2 !important - } - - .lh-xl-base { - line-height: 1.49 !important - } - - .lh-xl-lg { - line-height: 1.4 !important - } - - .text-xl-start { - text-align: left !important - } - - .text-xl-end { - text-align: right !important - } - - .text-xl-center { - text-align: center !important - } - - .rounded-xl-top { - border-top-left-radius: .375rem !important; - border-top-right-radius: .375rem !important - } - - .rounded-xl-top-lg { - border-top-left-radius: .5rem !important; - border-top-right-radius: .5rem !important - } - - .rounded-xl-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important - } - - .rounded-xl-end { - border-top-right-radius: .375rem !important; - border-bottom-right-radius: .375rem !important - } - - .rounded-xl-end-lg { - border-top-right-radius: .5rem !important; - border-bottom-right-radius: .5rem !important - } - - .rounded-xl-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important - } - - .rounded-xl-bottom { - border-bottom-right-radius: .375rem !important; - border-bottom-left-radius: .375rem !important - } - - .rounded-xl-bottom-lg { - border-bottom-right-radius: .5rem !important; - border-bottom-left-radius: .5rem !important - } - - .rounded-xl-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important - } - - .rounded-xl-start { - border-bottom-left-radius: .375rem !important; - border-top-left-radius: .375rem !important - } - - .rounded-xl-start-lg { - border-bottom-left-radius: .5rem !important; - border-top-left-radius: .5rem !important - } - - .rounded-xl-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important - } - - .max-vh-xl-25 { - max-height: 25vh !important - } - - .max-vh-xl-50 { - max-height: 50vh !important - } - - .max-vh-xl-75 { - max-height: 75vh !important - } - - .max-vh-xl-100 { - max-height: 100vh !important - } - - .border-x-xl { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-x-xl-0 { - border-left: 0 !important; - border-right: 0 !important - } - - .border-y-xl { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-y-xl-0 { - border-top: 0 !important; - border-bottom: 0 !important - } - - .rounded-xl-0 { - border-radius: 0 !important - } -} - -@media(min-width: 1540px) { - .float-xxl-start { - float:left !important - } - - .float-xxl-end { - float: right !important - } - - .float-xxl-none { - float: none !important - } - - .opacity-xxl-0 { - opacity: 0 !important - } - - .opacity-xxl-25 { - opacity: .25 !important - } - - .opacity-xxl-50 { - opacity: .5 !important - } - - .opacity-xxl-75 { - opacity: .75 !important - } - - .opacity-xxl-85 { - opacity: .85 !important - } - - .opacity-xxl-100 { - opacity: 1 !important - } - - .d-xxl-inline { - display: inline !important - } - - .d-xxl-inline-block { - display: inline-block !important - } - - .d-xxl-block { - display: block !important - } - - .d-xxl-grid { - display: grid !important - } - - .d-xxl-table { - display: table !important - } - - .d-xxl-table-row { - display: table-row !important - } - - .d-xxl-table-cell { - display: table-cell !important - } - - .d-xxl-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-xxl-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } - - .d-xxl-none { - display: none !important - } - - .position-xxl-static { - position: static !important - } - - .position-xxl-relative { - position: relative !important - } - - .position-xxl-absolute { - position: absolute !important - } - - .position-xxl-fixed { - position: fixed !important - } - - .position-xxl-sticky { - position: sticky !important - } - - .translate-xxl-middle { - -webkit-transform: translateX(-50%) translateY(-50%) !important; - -ms-transform: translateX(-50%) translateY(-50%) !important; - transform: translateX(-50%) translateY(-50%) !important - } - - .translate-xxl-middle-x { - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important - } - - .translate-xxl-middle-y { - -webkit-transform: translateY(-50%) !important; - -ms-transform: translateY(-50%) !important; - transform: translateY(-50%) !important - } - - .border-xxl { - border: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-xxl-0 { - border: 0 !important - } - - .border-top-xxl { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-top-xxl-0 { - border-top: 0 !important - } - - .border-end-xxl { - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-end-xxl-0 { - border-right: 0 !important - } - - .border-bottom-xxl { - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-bottom-xxl-0 { - border-bottom: 0 !important - } - - .border-start-xxl { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-start-xxl-0 { - border-left: 0 !important - } - - .w-xxl-25 { - width: 25% !important - } - - .w-xxl-30 { - width: 30% !important - } - - .w-xxl-50 { - width: 50% !important - } - - .w-xxl-60 { - width: 60% !important - } - - .w-xxl-70 { - width: 70% !important - } - - .w-xxl-75 { - width: 75% !important - } - - .w-xxl-100 { - width: 100% !important - } - - .w-xxl-max-content { - width: -webkit-max-content !important; - width: -moz-max-content !important; - width: max-content !important - } - - .w-xxl-min-content { - width: -webkit-min-content !important; - width: -moz-min-content !important; - width: min-content !important - } - - .w-xxl-auto { - width: auto !important - } - - .vw-xxl-25 { - width: 25vw !important - } - - .vw-xxl-50 { - width: 50vw !important - } - - .vw-xxl-75 { - width: 75vw !important - } - - .vw-xxl-100 { - width: 100vw !important - } - - .h-xxl-25 { - height: 25% !important - } - - .h-xxl-30 { - height: 30% !important - } - - .h-xxl-50 { - height: 50% !important - } - - .h-xxl-60 { - height: 60% !important - } - - .h-xxl-70 { - height: 70% !important - } - - .h-xxl-75 { - height: 75% !important - } - - .h-xxl-100 { - height: 100% !important - } - - .h-xxl-max-content { - height: -webkit-max-content !important; - height: -moz-max-content !important; - height: max-content !important - } - - .h-xxl-min-content { - height: -webkit-min-content !important; - height: -moz-min-content !important; - height: min-content !important - } - - .h-xxl-auto { - height: auto !important - } - - .vh-xxl-25 { - height: 25vh !important - } - - .vh-xxl-50 { - height: 50vh !important - } - - .vh-xxl-75 { - height: 75vh !important - } - - .vh-xxl-100 { - height: 100vh !important - } - - .min-vh-xxl-25 { - min-height: 25vh !important - } - - .min-vh-xxl-50 { - min-height: 50vh !important - } - - .min-vh-xxl-75 { - min-height: 75vh !important - } - - .min-vh-xxl-100 { - min-height: 100vh !important - } - - .flex-xxl-fill { - -webkit-box-flex: 1 !important; - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important - } - - .flex-xxl-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important - } - - .flex-xxl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important - } - - .flex-xxl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important - } - - .flex-xxl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important - } - - .flex-xxl-grow-0 { - -webkit-box-flex: 0 !important; - -ms-flex-positive: 0 !important; - flex-grow: 0 !important - } - - .flex-xxl-grow-1 { - -webkit-box-flex: 1 !important; - -ms-flex-positive: 1 !important; - flex-grow: 1 !important - } - - .flex-xxl-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important - } - - .flex-xxl-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important - } - - .flex-xxl-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important - } - - .flex-xxl-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important - } - - .flex-xxl-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important - } - - .justify-content-xxl-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important - } - - .justify-content-xxl-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important - } - - .justify-content-xxl-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important - } - - .justify-content-xxl-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important - } - - .justify-content-xxl-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important - } - - .justify-content-xxl-evenly { - -webkit-box-pack: space-evenly !important; - -ms-flex-pack: space-evenly !important; - justify-content: space-evenly !important - } - - .align-items-xxl-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important - } - - .align-items-xxl-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important - } - - .align-items-xxl-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important - } - - .align-items-xxl-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important - } - - .align-items-xxl-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important - } - - .align-content-xxl-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important - } - - .align-content-xxl-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important - } - - .align-content-xxl-center { - -ms-flex-line-pack: center !important; - align-content: center !important - } - - .align-content-xxl-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important - } - - .align-content-xxl-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important - } - - .align-content-xxl-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important - } - - .align-self-xxl-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important - } - - .align-self-xxl-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important - } - - .align-self-xxl-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important - } - - .align-self-xxl-center { - -ms-flex-item-align: center !important; - align-self: center !important - } - - .align-self-xxl-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important - } - - .align-self-xxl-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important - } - - .order-xxl-first { - -webkit-box-ordinal-group: 0 !important; - -ms-flex-order: -1 !important; - order: -1 !important - } - - .order-xxl-0 { - -webkit-box-ordinal-group: 1 !important; - -ms-flex-order: 0 !important; - order: 0 !important - } - - .order-xxl-1 { - -webkit-box-ordinal-group: 2 !important; - -ms-flex-order: 1 !important; - order: 1 !important - } - - .order-xxl-2 { - -webkit-box-ordinal-group: 3 !important; - -ms-flex-order: 2 !important; - order: 2 !important - } - - .order-xxl-3 { - -webkit-box-ordinal-group: 4 !important; - -ms-flex-order: 3 !important; - order: 3 !important - } - - .order-xxl-4 { - -webkit-box-ordinal-group: 5 !important; - -ms-flex-order: 4 !important; - order: 4 !important - } - - .order-xxl-5 { - -webkit-box-ordinal-group: 6 !important; - -ms-flex-order: 5 !important; - order: 5 !important - } - - .order-xxl-last { - -webkit-box-ordinal-group: 7 !important; - -ms-flex-order: 6 !important; - order: 6 !important - } - - .m-xxl-0 { - margin: 0 !important - } - - .m-xxl-1 { - margin: .25rem !important - } - - .m-xxl-2 { - margin: .5rem !important - } - - .m-xxl-3 { - margin: 1rem !important - } - - .m-xxl-4 { - margin: 1.5rem !important - } - - .m-xxl-5 { - margin: 2rem !important - } - - .m-xxl-6 { - margin: 2.5rem !important - } - - .m-xxl-7 { - margin: 3rem !important - } - - .m-xxl-8 { - margin: 3.5rem !important - } - - .m-xxl-9 { - margin: 4rem !important - } - - .m-xxl-10 { - margin: 4.5rem !important - } - - .m-xxl-11 { - margin: 5rem !important - } - - .m-xxl-12 { - margin: 6rem !important - } - - .m-xxl-13 { - margin: 6.5rem !important - } - - .m-xxl-14 { - margin: 7rem !important - } - - .m-xxl-15 { - margin: 7.5rem !important - } - - .m-xxl-auto { - margin: auto !important - } - - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important - } - - .mx-xxl-1 { - margin-right: .25rem !important; - margin-left: .25rem !important - } - - .mx-xxl-2 { - margin-right: .5rem !important; - margin-left: .5rem !important - } - - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important - } - - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important - } - - .mx-xxl-5 { - margin-right: 2rem !important; - margin-left: 2rem !important - } - - .mx-xxl-6 { - margin-right: 2.5rem !important; - margin-left: 2.5rem !important - } - - .mx-xxl-7 { - margin-right: 3rem !important; - margin-left: 3rem !important - } - - .mx-xxl-8 { - margin-right: 3.5rem !important; - margin-left: 3.5rem !important - } - - .mx-xxl-9 { - margin-right: 4rem !important; - margin-left: 4rem !important - } - - .mx-xxl-10 { - margin-right: 4.5rem !important; - margin-left: 4.5rem !important - } - - .mx-xxl-11 { - margin-right: 5rem !important; - margin-left: 5rem !important - } - - .mx-xxl-12 { - margin-right: 6rem !important; - margin-left: 6rem !important - } - - .mx-xxl-13 { - margin-right: 6.5rem !important; - margin-left: 6.5rem !important - } - - .mx-xxl-14 { - margin-right: 7rem !important; - margin-left: 7rem !important - } - - .mx-xxl-15 { - margin-right: 7.5rem !important; - margin-left: 7.5rem !important - } - - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important - } - - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important - } - - .my-xxl-1 { - margin-top: .25rem !important; - margin-bottom: .25rem !important - } - - .my-xxl-2 { - margin-top: .5rem !important; - margin-bottom: .5rem !important - } - - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important - } - - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important - } - - .my-xxl-5 { - margin-top: 2rem !important; - margin-bottom: 2rem !important - } - - .my-xxl-6 { - margin-top: 2.5rem !important; - margin-bottom: 2.5rem !important - } - - .my-xxl-7 { - margin-top: 3rem !important; - margin-bottom: 3rem !important - } - - .my-xxl-8 { - margin-top: 3.5rem !important; - margin-bottom: 3.5rem !important - } - - .my-xxl-9 { - margin-top: 4rem !important; - margin-bottom: 4rem !important - } - - .my-xxl-10 { - margin-top: 4.5rem !important; - margin-bottom: 4.5rem !important - } - - .my-xxl-11 { - margin-top: 5rem !important; - margin-bottom: 5rem !important - } - - .my-xxl-12 { - margin-top: 6rem !important; - margin-bottom: 6rem !important - } - - .my-xxl-13 { - margin-top: 6.5rem !important; - margin-bottom: 6.5rem !important - } - - .my-xxl-14 { - margin-top: 7rem !important; - margin-bottom: 7rem !important - } - - .my-xxl-15 { - margin-top: 7.5rem !important; - margin-bottom: 7.5rem !important - } - - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important - } - - .mt-xxl-0 { - margin-top: 0 !important - } - - .mt-xxl-1 { - margin-top: .25rem !important - } - - .mt-xxl-2 { - margin-top: .5rem !important - } - - .mt-xxl-3 { - margin-top: 1rem !important - } - - .mt-xxl-4 { - margin-top: 1.5rem !important - } - - .mt-xxl-5 { - margin-top: 2rem !important - } - - .mt-xxl-6 { - margin-top: 2.5rem !important - } - - .mt-xxl-7 { - margin-top: 3rem !important - } - - .mt-xxl-8 { - margin-top: 3.5rem !important - } - - .mt-xxl-9 { - margin-top: 4rem !important - } - - .mt-xxl-10 { - margin-top: 4.5rem !important - } - - .mt-xxl-11 { - margin-top: 5rem !important - } - - .mt-xxl-12 { - margin-top: 6rem !important - } - - .mt-xxl-13 { - margin-top: 6.5rem !important - } - - .mt-xxl-14 { - margin-top: 7rem !important - } - - .mt-xxl-15 { - margin-top: 7.5rem !important - } - - .mt-xxl-auto { - margin-top: auto !important - } - - .me-xxl-0 { - margin-right: 0 !important - } - - .me-xxl-1 { - margin-right: .25rem !important - } - - .me-xxl-2 { - margin-right: .5rem !important - } - - .me-xxl-3 { - margin-right: 1rem !important - } - - .me-xxl-4 { - margin-right: 1.5rem !important - } - - .me-xxl-5 { - margin-right: 2rem !important - } - - .me-xxl-6 { - margin-right: 2.5rem !important - } - - .me-xxl-7 { - margin-right: 3rem !important - } - - .me-xxl-8 { - margin-right: 3.5rem !important - } - - .me-xxl-9 { - margin-right: 4rem !important - } - - .me-xxl-10 { - margin-right: 4.5rem !important - } - - .me-xxl-11 { - margin-right: 5rem !important - } - - .me-xxl-12 { - margin-right: 6rem !important - } - - .me-xxl-13 { - margin-right: 6.5rem !important - } - - .me-xxl-14 { - margin-right: 7rem !important - } - - .me-xxl-15 { - margin-right: 7.5rem !important - } - - .me-xxl-auto { - margin-right: auto !important - } - - .mb-xxl-0 { - margin-bottom: 0 !important - } - - .mb-xxl-1 { - margin-bottom: .25rem !important - } - - .mb-xxl-2 { - margin-bottom: .5rem !important - } - - .mb-xxl-3 { - margin-bottom: 1rem !important - } - - .mb-xxl-4 { - margin-bottom: 1.5rem !important - } - - .mb-xxl-5 { - margin-bottom: 2rem !important - } - - .mb-xxl-6 { - margin-bottom: 2.5rem !important - } - - .mb-xxl-7 { - margin-bottom: 3rem !important - } - - .mb-xxl-8 { - margin-bottom: 3.5rem !important - } - - .mb-xxl-9 { - margin-bottom: 4rem !important - } - - .mb-xxl-10 { - margin-bottom: 4.5rem !important - } - - .mb-xxl-11 { - margin-bottom: 5rem !important - } - - .mb-xxl-12 { - margin-bottom: 6rem !important - } - - .mb-xxl-13 { - margin-bottom: 6.5rem !important - } - - .mb-xxl-14 { - margin-bottom: 7rem !important - } - - .mb-xxl-15 { - margin-bottom: 7.5rem !important - } - - .mb-xxl-auto { - margin-bottom: auto !important - } - - .ms-xxl-0 { - margin-left: 0 !important - } - - .ms-xxl-1 { - margin-left: .25rem !important - } - - .ms-xxl-2 { - margin-left: .5rem !important - } - - .ms-xxl-3 { - margin-left: 1rem !important - } - - .ms-xxl-4 { - margin-left: 1.5rem !important - } - - .ms-xxl-5 { - margin-left: 2rem !important - } - - .ms-xxl-6 { - margin-left: 2.5rem !important - } - - .ms-xxl-7 { - margin-left: 3rem !important - } - - .ms-xxl-8 { - margin-left: 3.5rem !important - } - - .ms-xxl-9 { - margin-left: 4rem !important - } - - .ms-xxl-10 { - margin-left: 4.5rem !important - } - - .ms-xxl-11 { - margin-left: 5rem !important - } - - .ms-xxl-12 { - margin-left: 6rem !important - } - - .ms-xxl-13 { - margin-left: 6.5rem !important - } - - .ms-xxl-14 { - margin-left: 7rem !important - } - - .ms-xxl-15 { - margin-left: 7.5rem !important - } - - .ms-xxl-auto { - margin-left: auto !important - } - - .m-xxl-n1 { - margin: -0.25rem !important - } - - .m-xxl-n2 { - margin: -0.5rem !important - } - - .m-xxl-n3 { - margin: -1rem !important - } - - .m-xxl-n4 { - margin: -1.5rem !important - } - - .m-xxl-n5 { - margin: -2rem !important - } - - .m-xxl-n6 { - margin: -2.5rem !important - } - - .m-xxl-n7 { - margin: -3rem !important - } - - .m-xxl-n8 { - margin: -3.5rem !important - } - - .m-xxl-n9 { - margin: -4rem !important - } - - .m-xxl-n10 { - margin: -4.5rem !important - } - - .m-xxl-n11 { - margin: -5rem !important - } - - .m-xxl-n12 { - margin: -6rem !important - } - - .m-xxl-n13 { - margin: -6.5rem !important - } - - .m-xxl-n14 { - margin: -7rem !important - } - - .m-xxl-n15 { - margin: -7.5rem !important - } - - .mx-xxl-n1 { - margin-right: -0.25rem !important; - margin-left: -0.25rem !important - } - - .mx-xxl-n2 { - margin-right: -0.5rem !important; - margin-left: -0.5rem !important - } - - .mx-xxl-n3 { - margin-right: -1rem !important; - margin-left: -1rem !important - } - - .mx-xxl-n4 { - margin-right: -1.5rem !important; - margin-left: -1.5rem !important - } - - .mx-xxl-n5 { - margin-right: -2rem !important; - margin-left: -2rem !important - } - - .mx-xxl-n6 { - margin-right: -2.5rem !important; - margin-left: -2.5rem !important - } - - .mx-xxl-n7 { - margin-right: -3rem !important; - margin-left: -3rem !important - } - - .mx-xxl-n8 { - margin-right: -3.5rem !important; - margin-left: -3.5rem !important - } - - .mx-xxl-n9 { - margin-right: -4rem !important; - margin-left: -4rem !important - } - - .mx-xxl-n10 { - margin-right: -4.5rem !important; - margin-left: -4.5rem !important - } - - .mx-xxl-n11 { - margin-right: -5rem !important; - margin-left: -5rem !important - } - - .mx-xxl-n12 { - margin-right: -6rem !important; - margin-left: -6rem !important - } - - .mx-xxl-n13 { - margin-right: -6.5rem !important; - margin-left: -6.5rem !important - } - - .mx-xxl-n14 { - margin-right: -7rem !important; - margin-left: -7rem !important - } - - .mx-xxl-n15 { - margin-right: -7.5rem !important; - margin-left: -7.5rem !important - } - - .my-xxl-n1 { - margin-top: -0.25rem !important; - margin-bottom: -0.25rem !important - } - - .my-xxl-n2 { - margin-top: -0.5rem !important; - margin-bottom: -0.5rem !important - } - - .my-xxl-n3 { - margin-top: -1rem !important; - margin-bottom: -1rem !important - } - - .my-xxl-n4 { - margin-top: -1.5rem !important; - margin-bottom: -1.5rem !important - } - - .my-xxl-n5 { - margin-top: -2rem !important; - margin-bottom: -2rem !important - } - - .my-xxl-n6 { - margin-top: -2.5rem !important; - margin-bottom: -2.5rem !important - } - - .my-xxl-n7 { - margin-top: -3rem !important; - margin-bottom: -3rem !important - } - - .my-xxl-n8 { - margin-top: -3.5rem !important; - margin-bottom: -3.5rem !important - } - - .my-xxl-n9 { - margin-top: -4rem !important; - margin-bottom: -4rem !important - } - - .my-xxl-n10 { - margin-top: -4.5rem !important; - margin-bottom: -4.5rem !important - } - - .my-xxl-n11 { - margin-top: -5rem !important; - margin-bottom: -5rem !important - } - - .my-xxl-n12 { - margin-top: -6rem !important; - margin-bottom: -6rem !important - } - - .my-xxl-n13 { - margin-top: -6.5rem !important; - margin-bottom: -6.5rem !important - } - - .my-xxl-n14 { - margin-top: -7rem !important; - margin-bottom: -7rem !important - } - - .my-xxl-n15 { - margin-top: -7.5rem !important; - margin-bottom: -7.5rem !important - } - - .mt-xxl-n1 { - margin-top: -0.25rem !important - } - - .mt-xxl-n2 { - margin-top: -0.5rem !important - } - - .mt-xxl-n3 { - margin-top: -1rem !important - } - - .mt-xxl-n4 { - margin-top: -1.5rem !important - } - - .mt-xxl-n5 { - margin-top: -2rem !important - } - - .mt-xxl-n6 { - margin-top: -2.5rem !important - } - - .mt-xxl-n7 { - margin-top: -3rem !important - } - - .mt-xxl-n8 { - margin-top: -3.5rem !important - } - - .mt-xxl-n9 { - margin-top: -4rem !important - } - - .mt-xxl-n10 { - margin-top: -4.5rem !important - } - - .mt-xxl-n11 { - margin-top: -5rem !important - } - - .mt-xxl-n12 { - margin-top: -6rem !important - } - - .mt-xxl-n13 { - margin-top: -6.5rem !important - } - - .mt-xxl-n14 { - margin-top: -7rem !important - } - - .mt-xxl-n15 { - margin-top: -7.5rem !important - } - - .me-xxl-n1 { - margin-right: -0.25rem !important - } - - .me-xxl-n2 { - margin-right: -0.5rem !important - } - - .me-xxl-n3 { - margin-right: -1rem !important - } - - .me-xxl-n4 { - margin-right: -1.5rem !important - } - - .me-xxl-n5 { - margin-right: -2rem !important - } - - .me-xxl-n6 { - margin-right: -2.5rem !important - } - - .me-xxl-n7 { - margin-right: -3rem !important - } - - .me-xxl-n8 { - margin-right: -3.5rem !important - } - - .me-xxl-n9 { - margin-right: -4rem !important - } - - .me-xxl-n10 { - margin-right: -4.5rem !important - } - - .me-xxl-n11 { - margin-right: -5rem !important - } - - .me-xxl-n12 { - margin-right: -6rem !important - } - - .me-xxl-n13 { - margin-right: -6.5rem !important - } - - .me-xxl-n14 { - margin-right: -7rem !important - } - - .me-xxl-n15 { - margin-right: -7.5rem !important - } - - .mb-xxl-n1 { - margin-bottom: -0.25rem !important - } - - .mb-xxl-n2 { - margin-bottom: -0.5rem !important - } - - .mb-xxl-n3 { - margin-bottom: -1rem !important - } - - .mb-xxl-n4 { - margin-bottom: -1.5rem !important - } - - .mb-xxl-n5 { - margin-bottom: -2rem !important - } - - .mb-xxl-n6 { - margin-bottom: -2.5rem !important - } - - .mb-xxl-n7 { - margin-bottom: -3rem !important - } - - .mb-xxl-n8 { - margin-bottom: -3.5rem !important - } - - .mb-xxl-n9 { - margin-bottom: -4rem !important - } - - .mb-xxl-n10 { - margin-bottom: -4.5rem !important - } - - .mb-xxl-n11 { - margin-bottom: -5rem !important - } - - .mb-xxl-n12 { - margin-bottom: -6rem !important - } - - .mb-xxl-n13 { - margin-bottom: -6.5rem !important - } - - .mb-xxl-n14 { - margin-bottom: -7rem !important - } - - .mb-xxl-n15 { - margin-bottom: -7.5rem !important - } - - .ms-xxl-n1 { - margin-left: -0.25rem !important - } - - .ms-xxl-n2 { - margin-left: -0.5rem !important - } - - .ms-xxl-n3 { - margin-left: -1rem !important - } - - .ms-xxl-n4 { - margin-left: -1.5rem !important - } - - .ms-xxl-n5 { - margin-left: -2rem !important - } - - .ms-xxl-n6 { - margin-left: -2.5rem !important - } - - .ms-xxl-n7 { - margin-left: -3rem !important - } - - .ms-xxl-n8 { - margin-left: -3.5rem !important - } - - .ms-xxl-n9 { - margin-left: -4rem !important - } - - .ms-xxl-n10 { - margin-left: -4.5rem !important - } - - .ms-xxl-n11 { - margin-left: -5rem !important - } - - .ms-xxl-n12 { - margin-left: -6rem !important - } - - .ms-xxl-n13 { - margin-left: -6.5rem !important - } - - .ms-xxl-n14 { - margin-left: -7rem !important - } - - .ms-xxl-n15 { - margin-left: -7.5rem !important - } - - .p-xxl-0 { - padding: 0 !important - } - - .p-xxl-1 { - padding: .25rem !important - } - - .p-xxl-2 { - padding: .5rem !important - } - - .p-xxl-3 { - padding: 1rem !important - } - - .p-xxl-4 { - padding: 1.5rem !important - } - - .p-xxl-5 { - padding: 2rem !important - } - - .p-xxl-6 { - padding: 2.5rem !important - } - - .p-xxl-7 { - padding: 3rem !important - } - - .p-xxl-8 { - padding: 3.5rem !important - } - - .p-xxl-9 { - padding: 4rem !important - } - - .p-xxl-10 { - padding: 4.5rem !important - } - - .p-xxl-11 { - padding: 5rem !important - } - - .p-xxl-12 { - padding: 6rem !important - } - - .p-xxl-13 { - padding: 6.5rem !important - } - - .p-xxl-14 { - padding: 7rem !important - } - - .p-xxl-15 { - padding: 7.5rem !important - } - - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important - } - - .px-xxl-1 { - padding-right: .25rem !important; - padding-left: .25rem !important - } - - .px-xxl-2 { - padding-right: .5rem !important; - padding-left: .5rem !important - } - - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important - } - - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important - } - - .px-xxl-5 { - padding-right: 2rem !important; - padding-left: 2rem !important - } - - .px-xxl-6 { - padding-right: 2.5rem !important; - padding-left: 2.5rem !important - } - - .px-xxl-7 { - padding-right: 3rem !important; - padding-left: 3rem !important - } - - .px-xxl-8 { - padding-right: 3.5rem !important; - padding-left: 3.5rem !important - } - - .px-xxl-9 { - padding-right: 4rem !important; - padding-left: 4rem !important - } - - .px-xxl-10 { - padding-right: 4.5rem !important; - padding-left: 4.5rem !important - } - - .px-xxl-11 { - padding-right: 5rem !important; - padding-left: 5rem !important - } - - .px-xxl-12 { - padding-right: 6rem !important; - padding-left: 6rem !important - } - - .px-xxl-13 { - padding-right: 6.5rem !important; - padding-left: 6.5rem !important - } - - .px-xxl-14 { - padding-right: 7rem !important; - padding-left: 7rem !important - } - - .px-xxl-15 { - padding-right: 7.5rem !important; - padding-left: 7.5rem !important - } - - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important - } - - .py-xxl-1 { - padding-top: .25rem !important; - padding-bottom: .25rem !important - } - - .py-xxl-2 { - padding-top: .5rem !important; - padding-bottom: .5rem !important - } - - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important - } - - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important - } - - .py-xxl-5 { - padding-top: 2rem !important; - padding-bottom: 2rem !important - } - - .py-xxl-6 { - padding-top: 2.5rem !important; - padding-bottom: 2.5rem !important - } - - .py-xxl-7 { - padding-top: 3rem !important; - padding-bottom: 3rem !important - } - - .py-xxl-8 { - padding-top: 3.5rem !important; - padding-bottom: 3.5rem !important - } - - .py-xxl-9 { - padding-top: 4rem !important; - padding-bottom: 4rem !important - } - - .py-xxl-10 { - padding-top: 4.5rem !important; - padding-bottom: 4.5rem !important - } - - .py-xxl-11 { - padding-top: 5rem !important; - padding-bottom: 5rem !important - } - - .py-xxl-12 { - padding-top: 6rem !important; - padding-bottom: 6rem !important - } - - .py-xxl-13 { - padding-top: 6.5rem !important; - padding-bottom: 6.5rem !important - } - - .py-xxl-14 { - padding-top: 7rem !important; - padding-bottom: 7rem !important - } - - .py-xxl-15 { - padding-top: 7.5rem !important; - padding-bottom: 7.5rem !important - } - - .pt-xxl-0 { - padding-top: 0 !important - } - - .pt-xxl-1 { - padding-top: .25rem !important - } - - .pt-xxl-2 { - padding-top: .5rem !important - } - - .pt-xxl-3 { - padding-top: 1rem !important - } - - .pt-xxl-4 { - padding-top: 1.5rem !important - } - - .pt-xxl-5 { - padding-top: 2rem !important - } - - .pt-xxl-6 { - padding-top: 2.5rem !important - } - - .pt-xxl-7 { - padding-top: 3rem !important - } - - .pt-xxl-8 { - padding-top: 3.5rem !important - } - - .pt-xxl-9 { - padding-top: 4rem !important - } - - .pt-xxl-10 { - padding-top: 4.5rem !important - } - - .pt-xxl-11 { - padding-top: 5rem !important - } - - .pt-xxl-12 { - padding-top: 6rem !important - } - - .pt-xxl-13 { - padding-top: 6.5rem !important - } - - .pt-xxl-14 { - padding-top: 7rem !important - } - - .pt-xxl-15 { - padding-top: 7.5rem !important - } - - .pe-xxl-0 { - padding-right: 0 !important - } - - .pe-xxl-1 { - padding-right: .25rem !important - } - - .pe-xxl-2 { - padding-right: .5rem !important - } - - .pe-xxl-3 { - padding-right: 1rem !important - } - - .pe-xxl-4 { - padding-right: 1.5rem !important - } - - .pe-xxl-5 { - padding-right: 2rem !important - } - - .pe-xxl-6 { - padding-right: 2.5rem !important - } - - .pe-xxl-7 { - padding-right: 3rem !important - } - - .pe-xxl-8 { - padding-right: 3.5rem !important - } - - .pe-xxl-9 { - padding-right: 4rem !important - } - - .pe-xxl-10 { - padding-right: 4.5rem !important - } - - .pe-xxl-11 { - padding-right: 5rem !important - } - - .pe-xxl-12 { - padding-right: 6rem !important - } - - .pe-xxl-13 { - padding-right: 6.5rem !important - } - - .pe-xxl-14 { - padding-right: 7rem !important - } - - .pe-xxl-15 { - padding-right: 7.5rem !important - } - - .pb-xxl-0 { - padding-bottom: 0 !important - } - - .pb-xxl-1 { - padding-bottom: .25rem !important - } - - .pb-xxl-2 { - padding-bottom: .5rem !important - } - - .pb-xxl-3 { - padding-bottom: 1rem !important - } - - .pb-xxl-4 { - padding-bottom: 1.5rem !important - } - - .pb-xxl-5 { - padding-bottom: 2rem !important - } - - .pb-xxl-6 { - padding-bottom: 2.5rem !important - } - - .pb-xxl-7 { - padding-bottom: 3rem !important - } - - .pb-xxl-8 { - padding-bottom: 3.5rem !important - } - - .pb-xxl-9 { - padding-bottom: 4rem !important - } - - .pb-xxl-10 { - padding-bottom: 4.5rem !important - } - - .pb-xxl-11 { - padding-bottom: 5rem !important - } - - .pb-xxl-12 { - padding-bottom: 6rem !important - } - - .pb-xxl-13 { - padding-bottom: 6.5rem !important - } - - .pb-xxl-14 { - padding-bottom: 7rem !important - } - - .pb-xxl-15 { - padding-bottom: 7.5rem !important - } - - .ps-xxl-0 { - padding-left: 0 !important - } - - .ps-xxl-1 { - padding-left: .25rem !important - } - - .ps-xxl-2 { - padding-left: .5rem !important - } - - .ps-xxl-3 { - padding-left: 1rem !important - } - - .ps-xxl-4 { - padding-left: 1.5rem !important - } - - .ps-xxl-5 { - padding-left: 2rem !important - } - - .ps-xxl-6 { - padding-left: 2.5rem !important - } - - .ps-xxl-7 { - padding-left: 3rem !important - } - - .ps-xxl-8 { - padding-left: 3.5rem !important - } - - .ps-xxl-9 { - padding-left: 4rem !important - } - - .ps-xxl-10 { - padding-left: 4.5rem !important - } - - .ps-xxl-11 { - padding-left: 5rem !important - } - - .ps-xxl-12 { - padding-left: 6rem !important - } - - .ps-xxl-13 { - padding-left: 6.5rem !important - } - - .ps-xxl-14 { - padding-left: 7rem !important - } - - .ps-xxl-15 { - padding-left: 7.5rem !important - } - - .gap-xxl-0 { - gap: 0 !important - } - - .gap-xxl-1 { - gap: .25rem !important - } - - .gap-xxl-2 { - gap: .5rem !important - } - - .gap-xxl-3 { - gap: 1rem !important - } - - .gap-xxl-4 { - gap: 1.5rem !important - } - - .gap-xxl-5 { - gap: 2rem !important - } - - .gap-xxl-6 { - gap: 2.5rem !important - } - - .gap-xxl-7 { - gap: 3rem !important - } - - .gap-xxl-8 { - gap: 3.5rem !important - } - - .gap-xxl-9 { - gap: 4rem !important - } - - .gap-xxl-10 { - gap: 4.5rem !important - } - - .gap-xxl-11 { - gap: 5rem !important - } - - .gap-xxl-12 { - gap: 6rem !important - } - - .gap-xxl-13 { - gap: 6.5rem !important - } - - .gap-xxl-14 { - gap: 7rem !important - } - - .gap-xxl-15 { - gap: 7.5rem !important - } - - .fs-xxl--3 { - font-size: .512rem !important - } - - .fs-xxl--2 { - font-size: .64rem !important - } - - .fs-xxl--1 { - font-size: .8rem !important - } - - .fs-xxl-0 { - font-size: 1rem !important - } - - .fs-xxl-1 { - font-size: 1.25rem !important - } - - .fs-xxl-2 { - font-size: 1.5625rem !important - } - - .fs-xxl-3 { - font-size: 1.953125rem !important - } - - .fs-xxl-4 { - font-size: 2.44140625rem !important - } - - .fs-xxl-5 { - font-size: 3.0517578125rem !important - } - - .fs-xxl-6 { - font-size: 3.8146972656rem !important - } - - .fs-xxl-7 { - font-size: 4.768371582rem !important - } - - .lh-xxl-1 { - line-height: 1 !important - } - - .lh-xxl-sm { - line-height: 1.2 !important - } - - .lh-xxl-base { - line-height: 1.49 !important - } - - .lh-xxl-lg { - line-height: 1.4 !important - } - - .text-xxl-start { - text-align: left !important - } - - .text-xxl-end { - text-align: right !important - } - - .text-xxl-center { - text-align: center !important - } - - .rounded-xxl-top { - border-top-left-radius: .375rem !important; - border-top-right-radius: .375rem !important - } - - .rounded-xxl-top-lg { - border-top-left-radius: .5rem !important; - border-top-right-radius: .5rem !important - } - - .rounded-xxl-top-0 { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important - } - - .rounded-xxl-end { - border-top-right-radius: .375rem !important; - border-bottom-right-radius: .375rem !important - } - - .rounded-xxl-end-lg { - border-top-right-radius: .5rem !important; - border-bottom-right-radius: .5rem !important - } - - .rounded-xxl-end-0 { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important - } - - .rounded-xxl-bottom { - border-bottom-right-radius: .375rem !important; - border-bottom-left-radius: .375rem !important - } - - .rounded-xxl-bottom-lg { - border-bottom-right-radius: .5rem !important; - border-bottom-left-radius: .5rem !important - } - - .rounded-xxl-bottom-0 { - border-bottom-right-radius: 0 !important; - border-bottom-left-radius: 0 !important - } - - .rounded-xxl-start { - border-bottom-left-radius: .375rem !important; - border-top-left-radius: .375rem !important - } - - .rounded-xxl-start-lg { - border-bottom-left-radius: .5rem !important; - border-top-left-radius: .5rem !important - } - - .rounded-xxl-start-0 { - border-bottom-left-radius: 0 !important; - border-top-left-radius: 0 !important - } - - .max-vh-xxl-25 { - max-height: 25vh !important - } - - .max-vh-xxl-50 { - max-height: 50vh !important - } - - .max-vh-xxl-75 { - max-height: 75vh !important - } - - .max-vh-xxl-100 { - max-height: 100vh !important - } - - .border-x-xxl { - border-left: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-right: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-x-xxl-0 { - border-left: 0 !important; - border-right: 0 !important - } - - .border-y-xxl { - border-top: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important; - border-bottom: var(--phoenix-border-width) var(--phoenix-border-style) var(--phoenix-border-color) !important - } - - .border-y-xxl-0 { - border-top: 0 !important; - border-bottom: 0 !important - } - - .rounded-xxl-0 { - border-radius: 0 !important - } -} - -@media print { - .d-print-inline { - display: inline !important - } - - .d-print-inline-block { - display: inline-block !important - } - - .d-print-block { - display: block !important - } - - .d-print-grid { - display: grid !important - } - - .d-print-table { - display: table !important - } - - .d-print-table-row { - display: table-row !important - } - - .d-print-table-cell { - display: table-cell !important - } - - .d-print-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important - } - - .d-print-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important - } - - .d-print-none { - display: none !important - } -} - -::-webkit-input-placeholder { - opacity: 1; - color: var(--phoenix-gray-400) -} - -::-moz-placeholder { - opacity: 1; - color: var(--phoenix-gray-400) -} - -:-ms-input-placeholder { - opacity: 1; - color: var(--phoenix-gray-400) -} - -::-ms-input-placeholder { - opacity: 1; - color: var(--phoenix-gray-400) -} - -::placeholder { - opacity: 1; - color: var(--phoenix-gray-400) -} - -::-moz-selection { - background-color: var(--phoenix-primary); - color: #fff -} - -::selection { - background-color: var(--phoenix-primary); - color: #fff -} - -[id] { - scroll-margin-top: calc(var(--phoenix-navbar-top-height) + var(--phoenix-scroll-margin-top)) -} - -body { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - opacity: 1 !important -} - -pre,code { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto -} - -section { - position: relative; - padding-top: 2.5rem; - padding-bottom: 2.5rem -} - -@media(min-width: 992px) { - section { - padding-top:3.5rem; - padding-bottom: 3.5rem - } -} - -input,button,select,optgroup,textarea,label,.alert,.badge,.blockquote-footer,.btn,.google-map-control-btn .zoomIn,.google-map-control-btn .zoomOut,.tox .tox-dialog__footer .tox-button:last-child,.tox .tox-dialog__footer .tox-button--secondary,.tox .tox-button-secondary,.tox .tox-button,[data-list] .page,.table-list .page,.navbar,.pagination,.valid-feedback,.invalid-feedback { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -pre { - margin: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0) -} - -strong { - font-weight: 700 -} - -label { - font-weight: 500 -} - -pre,code,kbd,samp { - font-size: .875rem -} - -[type=search] { - -webkit-appearance: none -} - -.min-h-auto { - min-height: auto -} - -.content-min-h { - min-height: calc(100vh - 10rem) -} - -.overflow-y-hidden { - overflow-y: hidden -} - -.overflow-x-hidden { - overflow-x: hidden !important -} - -.stack-icon-item { - margin-top: 1px -} - -.top-1 { - top: 1px -} - -.dark .d-dark-none,.dark .picmo__popupContainer.picmo__light .d-dark-none { - display: none -} - -html:not(.dark) .d-light-none { - display: none -} - -input:-webkit-autofill { - -webkit-text-fill-color: var(--phoenix-gray-900); - -webkit-box-shadow: 0 0 0 30px var(--phoenix-input-bg) inset; - box-shadow: 0 0 0 30px var(--phoenix-input-bg) inset -} - -input::-webkit-contacts-auto-fill-button { - background-color: var(--phoenix-gray-900) -} - -.btn-reveal-trigger:hover .btn-reveal,.btn-reveal-trigger:focus .btn-reveal { - background: var(--phoenix-gray-soft); - border: 1px solid var(--phoenix-gray-200); - color: var(--phoenix-gray-900) -} - -.btn-reveal-trigger:hover .btn-reveal:hover,.btn-reveal-trigger:hover .btn-reveal:focus,.btn-reveal-trigger:hover .btn-reveal:active,.btn-reveal-trigger:focus .btn-reveal:hover,.btn-reveal-trigger:focus .btn-reveal:focus,.btn-reveal-trigger:focus .btn-reveal:active { - background: var(--phoenix-gray-200); - color: var(--phoenix-gray-1000) !important -} - -.btn-reveal-trigger .dropdown-toggle:after,.btn-reveal-trigger .dropdown-toggle:before { - display: none -} - -@media(min-width: 576px) { - .btn-reveal-trigger-sm:hover .btn-reveal,.btn-reveal-trigger-sm:focus .btn-reveal { - background:#f5f7fa; - border: 1px solid #e3e6ed - } - - .btn-reveal-trigger-sm:hover .btn-reveal:hover,.btn-reveal-trigger-sm:hover .btn-reveal:focus,.btn-reveal-trigger-sm:hover .btn-reveal:active,.btn-reveal-trigger-sm:focus .btn-reveal:hover,.btn-reveal-trigger-sm:focus .btn-reveal:focus,.btn-reveal-trigger-sm:focus .btn-reveal:active { - color: var(--phoenix-btn-reveal-color) !important - } - - .btn-reveal-trigger-sm .dropdown-toggle:after,.btn-reveal-trigger-sm .dropdown-toggle:before { - display: none - } -} - -.btn,.google-map-control-btn .zoomIn,.google-map-control-btn .zoomOut,.tox .tox-dialog__footer .tox-button:last-child,.tox .tox-dialog__footer .tox-button--secondary,.tox .tox-button-secondary,.tox .tox-button,[data-list] .page,.table-list .page { - --phoenix-btn-padding-x: 1.5rem; - --phoenix-btn-padding-y: 0.625rem; - --phoenix-btn-font-family: ; - --phoenix-btn-font-size: 0.8rem; - --phoenix-btn-font-weight: 700; - --phoenix-btn-line-height: 1.2; - --phoenix-btn-color: var(--phoenix-body-color); - --phoenix-btn-bg: transparent; - --phoenix-btn-border-width: 1px; - --phoenix-btn-border-color: transparent; - --phoenix-btn-border-radius: 0.375rem; - --phoenix-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0), 0 1px 1px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-opacity: 0.3; - --phoenix-btn-focus-box-shadow: 0 0 0 0 rgba(var(--phoenix-btn-focus-shadow-rgb), 0.5); - display: inline-block; - padding: var(--phoenix-btn-padding-y) var(--phoenix-btn-padding-x); - font-family: var(--phoenix-btn-font-family); - font-size: var(--phoenix-btn-font-size); - font-weight: var(--phoenix-btn-font-weight); - line-height: var(--phoenix-btn-line-height); - color: var(--phoenix-btn-color); - text-align: center; - vertical-align: middle; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: var(--phoenix-btn-border-width) solid var(--phoenix-btn-border-color); - border-radius: var(--phoenix-btn-border-radius); - background-color: var(--phoenix-btn-bg); - -webkit-box-shadow: var(--phoenix-btn-box-shadow); - box-shadow: var(--phoenix-btn-box-shadow); - -webkit-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; - -o-transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out -} - -@media(prefers-reduced-motion: reduce) { - .btn,.google-map-control-btn .zoomIn,.google-map-control-btn .zoomOut,.tox .tox-dialog__footer .tox-button:last-child,.tox .tox-dialog__footer .tox-button--secondary,.tox .tox-button-secondary,.tox .tox-button,[data-list] .page,.table-list .page { - -webkit-transition: none; - -o-transition: none; - transition: none - } -} - -.btn:hover,.google-map-control-btn .zoomIn:hover,.google-map-control-btn .zoomOut:hover,.tox .tox-dialog__footer .tox-button:hover:last-child,.tox .tox-dialog__footer .tox-button--secondary:hover,.tox .tox-button-secondary:hover,.tox .tox-button:hover,[data-list] .page:hover,.table-list .page:hover { - color: var(--phoenix-btn-hover-color); - text-decoration: none; - background-color: var(--phoenix-btn-hover-bg); - border-color: var(--phoenix-btn-hover-border-color) -} - -.btn-check:focus+.btn,.google-map-control-btn .btn-check:focus+.zoomIn,.google-map-control-btn .btn-check:focus+.zoomOut,.tox .tox-dialog__footer .btn-check:focus+.tox-button:last-child,.tox .tox-dialog__footer .btn-check:focus+.tox-button--secondary,.tox .btn-check:focus+.tox-button-secondary,.tox .btn-check:focus+.tox-button,[data-list] .btn-check:focus+.page,.table-list .btn-check:focus+.page,.btn:focus,.google-map-control-btn .zoomIn:focus,.google-map-control-btn .zoomOut:focus,.tox .tox-dialog__footer .tox-button:focus:last-child,.tox .tox-dialog__footer .tox-button--secondary:focus,.tox .tox-button-secondary:focus,.tox .tox-button:focus,[data-list] .page:focus,.table-list .page:focus { - color: var(--phoenix-btn-hover-color); - background-color: var(--phoenix-btn-hover-bg); - border-color: var(--phoenix-btn-hover-border-color); - outline: 0; - -webkit-box-shadow: var(--phoenix-btn-box-shadow),var(--phoenix-btn-focus-box-shadow); - box-shadow: var(--phoenix-btn-box-shadow),var(--phoenix-btn-focus-box-shadow) -} - -.btn-check:checked+.btn,.google-map-control-btn .btn-check:checked+.zoomIn,.google-map-control-btn .btn-check:checked+.zoomOut,.tox .tox-dialog__footer .btn-check:checked+.tox-button:last-child,.tox .tox-dialog__footer .btn-check:checked+.tox-button--secondary,.tox .btn-check:checked+.tox-button-secondary,.tox .btn-check:checked+.tox-button,[data-list] .btn-check:checked+.page,.table-list .btn-check:checked+.page,.btn-check:active+.btn,.google-map-control-btn .btn-check:active+.zoomIn,.google-map-control-btn .btn-check:active+.zoomOut,.tox .tox-dialog__footer .btn-check:active+.tox-button:last-child,.tox .tox-dialog__footer .btn-check:active+.tox-button--secondary,.tox .btn-check:active+.tox-button-secondary,.tox .btn-check:active+.tox-button,[data-list] .btn-check:active+.page,.table-list .btn-check:active+.page,.btn:active,.google-map-control-btn .zoomIn:active,.google-map-control-btn .zoomOut:active,.tox .tox-dialog__footer .tox-button:active:last-child,.tox .tox-dialog__footer .tox-button--secondary:active,.tox .tox-button-secondary:active,.tox .tox-button:active,[data-list] .page:active,.table-list .page:active,.btn.active,.google-map-control-btn .active.zoomIn,.google-map-control-btn .active.zoomOut,.tox .tox-dialog__footer .active.tox-button:last-child,.tox .tox-dialog__footer .active.tox-button--secondary,.tox .active.tox-button-secondary,.tox .active.tox-button,[data-list] .active.page,.table-list .active.page,.btn.show,.google-map-control-btn .show.zoomIn,.google-map-control-btn .show.zoomOut,.tox .tox-dialog__footer .show.tox-button:last-child,.tox .tox-dialog__footer .show.tox-button--secondary,.tox .show.tox-button-secondary,.tox .show.tox-button,[data-list] .show.page,.table-list .show.page { - color: var(--phoenix-btn-active-color); - background-color: var(--phoenix-btn-active-bg); - border-color: var(--phoenix-btn-active-border-color); - -webkit-box-shadow: var(--phoenix-btn-active-shadow); - box-shadow: var(--phoenix-btn-active-shadow) -} - -.btn-check:checked+.btn:focus,.google-map-control-btn .btn-check:checked+.zoomIn:focus,.google-map-control-btn .btn-check:checked+.zoomOut:focus,.tox .tox-dialog__footer .btn-check:checked+.tox-button:focus:last-child,.tox .tox-dialog__footer .btn-check:checked+.tox-button--secondary:focus,.tox .btn-check:checked+.tox-button-secondary:focus,.tox .btn-check:checked+.tox-button:focus,[data-list] .btn-check:checked+.page:focus,.table-list .btn-check:checked+.page:focus,.btn-check:active+.btn:focus,.google-map-control-btn .btn-check:active+.zoomIn:focus,.google-map-control-btn .btn-check:active+.zoomOut:focus,.tox .tox-dialog__footer .btn-check:active+.tox-button:focus:last-child,.tox .tox-dialog__footer .btn-check:active+.tox-button--secondary:focus,.tox .btn-check:active+.tox-button-secondary:focus,.tox .btn-check:active+.tox-button:focus,[data-list] .btn-check:active+.page:focus,.table-list .btn-check:active+.page:focus,.btn:active:focus,.google-map-control-btn .zoomIn:active:focus,.google-map-control-btn .zoomOut:active:focus,.tox .tox-dialog__footer .tox-button--secondary:active:focus,.tox .tox-button-secondary:active:focus,.tox .tox-button:active:focus,[data-list] .page:active:focus,.table-list .page:active:focus,.btn.active:focus,.google-map-control-btn .active.zoomIn:focus,.google-map-control-btn .active.zoomOut:focus,.tox .tox-dialog__footer .active.tox-button--secondary:focus,.tox .active.tox-button-secondary:focus,.tox .active.tox-button:focus,[data-list] .active.page:focus,.table-list .active.page:focus,.btn.show:focus,.google-map-control-btn .show.zoomIn:focus,.google-map-control-btn .show.zoomOut:focus,.tox .tox-dialog__footer .show.tox-button--secondary:focus,.tox .show.tox-button-secondary:focus,.tox .show.tox-button:focus,[data-list] .show.page:focus,.table-list .show.page:focus { - -webkit-box-shadow: var(--phoenix-btn-active-shadow),var(--phoenix-btn-focus-box-shadow); - box-shadow: var(--phoenix-btn-active-shadow),var(--phoenix-btn-focus-box-shadow) -} - -.btn:disabled,.google-map-control-btn .zoomIn:disabled,.google-map-control-btn .zoomOut:disabled,.tox .tox-dialog__footer .tox-button:disabled:last-child,.tox .tox-dialog__footer .tox-button--secondary:disabled,.tox .tox-button-secondary:disabled,.tox .tox-button:disabled,[data-list] .page:disabled,.table-list .page:disabled,.btn.disabled,.google-map-control-btn .disabled.zoomIn,.google-map-control-btn .disabled.zoomOut,.tox .tox-dialog__footer .disabled.tox-button:last-child,.tox .tox-dialog__footer .disabled.tox-button--secondary,.tox .disabled.tox-button-secondary,.tox .disabled.tox-button,[data-list] li.disabled button.btn,[data-list] li.disabled .google-map-control-btn button.zoomIn,.google-map-control-btn [data-list] li.disabled button.zoomIn,[data-list] li.disabled .google-map-control-btn button.zoomOut,.google-map-control-btn [data-list] li.disabled button.zoomOut,[data-list] li.disabled .tox .tox-dialog__footer button.tox-button--secondary,.tox .tox-dialog__footer [data-list] li.disabled button.tox-button--secondary,[data-list] li.disabled .tox button.tox-button-secondary,.tox [data-list] li.disabled button.tox-button-secondary,[data-list] li.disabled .tox button.tox-button,.tox [data-list] li.disabled button.tox-button,.table-list li.disabled button.btn,.table-list li.disabled .google-map-control-btn button.zoomIn,.google-map-control-btn .table-list li.disabled button.zoomIn,.table-list li.disabled .google-map-control-btn button.zoomOut,.google-map-control-btn .table-list li.disabled button.zoomOut,.table-list li.disabled .tox .tox-dialog__footer button.tox-button--secondary,.tox .tox-dialog__footer .table-list li.disabled button.tox-button--secondary,.table-list li.disabled .tox button.tox-button-secondary,.tox .table-list li.disabled button.tox-button-secondary,.table-list li.disabled .tox button.tox-button,.tox .table-list li.disabled button.tox-button,[data-list] .disabled.page,[data-list] li.disabled button.page,.table-list .disabled.page,.table-list li.disabled button.page,fieldset:disabled .btn,fieldset:disabled .google-map-control-btn .zoomIn,.google-map-control-btn fieldset:disabled .zoomIn,fieldset:disabled .google-map-control-btn .zoomOut,.google-map-control-btn fieldset:disabled .zoomOut,fieldset:disabled .tox .tox-dialog__footer .tox-button:last-child,.tox .tox-dialog__footer fieldset:disabled .tox-button:last-child,fieldset:disabled .tox .tox-dialog__footer .tox-button--secondary,.tox .tox-dialog__footer fieldset:disabled .tox-button--secondary,fieldset:disabled .tox .tox-button-secondary,.tox fieldset:disabled .tox-button-secondary,fieldset:disabled .tox .tox-button,.tox fieldset:disabled .tox-button,fieldset:disabled [data-list] .page,[data-list] fieldset:disabled .page,fieldset:disabled .table-list .page,.table-list fieldset:disabled .page { - color: var(--phoenix-btn-disabled-color); - pointer-events: none; - background-color: var(--phoenix-btn-disabled-bg); - border-color: var(--phoenix-btn-disabled-border-color); - opacity: var(--phoenix-btn-disabled-opacity); - -webkit-box-shadow: none; - box-shadow: none -} - -.btn-primary,.tox .tox-dialog__footer .tox-button:last-child,.tox .tox-button { - --phoenix-btn-color: #fff; - --phoenix-btn-bg: #3874ff; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #004dff; - --phoenix-btn-hover-border-color: rgba(0, 0, 0, 0.2); - --phoenix-btn-focus-shadow-rgb: 255, 255, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #2d5dcc; - --phoenix-btn-active-border-color: rgba(0, 0, 0, 0.25); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: #3874ff; - --phoenix-btn-disabled-border-color: transparent -} - -.btn-secondary { - --phoenix-btn-color: #fff; - --phoenix-btn-bg: #31374a; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #222834; - --phoenix-btn-hover-border-color: rgba(0, 0, 0, 0.2); - --phoenix-btn-focus-shadow-rgb: 255, 255, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #272c3b; - --phoenix-btn-active-border-color: rgba(0, 0, 0, 0.25); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: #31374a; - --phoenix-btn-disabled-border-color: transparent -} - -.btn-success { - --phoenix-btn-color: #fff; - --phoenix-btn-bg: #25b003; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #23890b; - --phoenix-btn-hover-border-color: rgba(0, 0, 0, 0.2); - --phoenix-btn-focus-shadow-rgb: 255, 255, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #1e8d02; - --phoenix-btn-active-border-color: rgba(0, 0, 0, 0.25); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: #25b003; - --phoenix-btn-disabled-border-color: transparent -} - -.btn-info { - --phoenix-btn-color: #fff; - --phoenix-btn-bg: #0097eb; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #0080c7; - --phoenix-btn-hover-border-color: rgba(0, 0, 0, 0.2); - --phoenix-btn-focus-shadow-rgb: 255, 255, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #0079bc; - --phoenix-btn-active-border-color: rgba(0, 0, 0, 0.25); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: #0097eb; - --phoenix-btn-disabled-border-color: transparent -} - -.btn-warning { - --phoenix-btn-color: #fff; - --phoenix-btn-bg: #e5780b; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #d6700a; - --phoenix-btn-hover-border-color: rgba(0, 0, 0, 0.2); - --phoenix-btn-focus-shadow-rgb: 255, 255, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #b76009; - --phoenix-btn-active-border-color: rgba(0, 0, 0, 0.25); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: #e5780b; - --phoenix-btn-disabled-border-color: transparent -} - -.btn-danger { - --phoenix-btn-color: #fff; - --phoenix-btn-bg: #ed2000; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #cc1b00; - --phoenix-btn-hover-border-color: rgba(0, 0, 0, 0.2); - --phoenix-btn-focus-shadow-rgb: 255, 255, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #be1a00; - --phoenix-btn-active-border-color: rgba(0, 0, 0, 0.25); - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #fff; - --phoenix-btn-disabled-bg: #ed2000; - --phoenix-btn-disabled-border-color: transparent -} - -.btn-outline-primary { - --phoenix-btn-color: #3874ff; - --phoenix-btn-border-color: #3874ff; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #3874ff; - --phoenix-btn-hover-border-color: #004dff; - --phoenix-btn-focus-shadow-rgb: 56, 116, 255; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #3874ff; - --phoenix-btn-active-border-color: #004dff; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #3874ff; - --phoenix-btn-disabled-bg: transparent; - --phoenix-btn-disabled-border-color: #3874ff; - --phoenix-gradient: none -} - -.btn-outline-secondary { - --phoenix-btn-color: #31374a; - --phoenix-btn-border-color: #31374a; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #31374a; - --phoenix-btn-hover-border-color: #222834; - --phoenix-btn-focus-shadow-rgb: 49, 55, 74; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #31374a; - --phoenix-btn-active-border-color: #222834; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #31374a; - --phoenix-btn-disabled-bg: transparent; - --phoenix-btn-disabled-border-color: #31374a; - --phoenix-gradient: none -} - -.btn-outline-success { - --phoenix-btn-color: #25b003; - --phoenix-btn-border-color: #25b003; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #25b003; - --phoenix-btn-hover-border-color: #23890b; - --phoenix-btn-focus-shadow-rgb: 37, 176, 3; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #25b003; - --phoenix-btn-active-border-color: #23890b; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #25b003; - --phoenix-btn-disabled-bg: transparent; - --phoenix-btn-disabled-border-color: #25b003; - --phoenix-gradient: none -} - -.btn-outline-info { - --phoenix-btn-color: #0097eb; - --phoenix-btn-border-color: #0097eb; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #0097eb; - --phoenix-btn-hover-border-color: #0080c7; - --phoenix-btn-focus-shadow-rgb: 0, 151, 235; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #0097eb; - --phoenix-btn-active-border-color: #0080c7; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #0097eb; - --phoenix-btn-disabled-bg: transparent; - --phoenix-btn-disabled-border-color: #0097eb; - --phoenix-gradient: none -} - -.btn-outline-warning { - --phoenix-btn-color: #e5780b; - --phoenix-btn-border-color: #e5780b; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e5780b; - --phoenix-btn-hover-border-color: #d6700a; - --phoenix-btn-focus-shadow-rgb: 229, 120, 11; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #e5780b; - --phoenix-btn-active-border-color: #d6700a; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #e5780b; - --phoenix-btn-disabled-bg: transparent; - --phoenix-btn-disabled-border-color: #e5780b; - --phoenix-gradient: none -} - -.btn-outline-danger { - --phoenix-btn-color: #ed2000; - --phoenix-btn-border-color: #ed2000; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #ed2000; - --phoenix-btn-hover-border-color: #cc1b00; - --phoenix-btn-focus-shadow-rgb: 237, 32, 0; - --phoenix-btn-active-color: #fff; - --phoenix-btn-active-bg: #ed2000; - --phoenix-btn-active-border-color: #cc1b00; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #ed2000; - --phoenix-btn-disabled-bg: transparent; - --phoenix-btn-disabled-border-color: #ed2000; - --phoenix-gradient: none -} - -.btn-outline-phoenix-primary { - --phoenix-btn-color: #3874ff; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #004dff; - --phoenix-btn-focus-shadow-rgb: 56, 116, 255; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #004dff; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #3874ff; - --phoenix-btn-disabled-bg: transparent; - --phoenix-gradient: none -} - -.btn-outline-phoenix-secondary { - --phoenix-btn-color: #31374a; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #222834; - --phoenix-btn-focus-shadow-rgb: 49, 55, 74; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #222834; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #31374a; - --phoenix-btn-disabled-bg: transparent; - --phoenix-gradient: none -} - -.btn-outline-phoenix-success { - --phoenix-btn-color: #25b003; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #23890b; - --phoenix-btn-focus-shadow-rgb: 37, 176, 3; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #23890b; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #25b003; - --phoenix-btn-disabled-bg: transparent; - --phoenix-gradient: none -} - -.btn-outline-phoenix-info { - --phoenix-btn-color: #0097eb; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #0080c7; - --phoenix-btn-focus-shadow-rgb: 0, 151, 235; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #0080c7; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #0097eb; - --phoenix-btn-disabled-bg: transparent; - --phoenix-gradient: none -} - -.btn-outline-phoenix-warning { - --phoenix-btn-color: #e5780b; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #d6700a; - --phoenix-btn-focus-shadow-rgb: 229, 120, 11; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #d6700a; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #e5780b; - --phoenix-btn-disabled-bg: transparent; - --phoenix-gradient: none -} - -.btn-outline-phoenix-danger { - --phoenix-btn-color: #ed2000; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #fff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #cc1b00; - --phoenix-btn-focus-shadow-rgb: 237, 32, 0; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #cc1b00; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #ed2000; - --phoenix-btn-disabled-bg: transparent; - --phoenix-gradient: none -} - -.btn-soft-primary { - --phoenix-btn-color: #003cc7; - --phoenix-btn-bg: #f5f8ff; - --phoenix-btn-border-color: #f5f8ff; - --phoenix-btn-hover-color: #003cc7; - --phoenix-btn-hover-bg: #e5edff; - --phoenix-btn-hover-border-color: #f6f9ff; - --phoenix-btn-focus-shadow-rgb: 208, 220, 247; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #f7f9ff; - --phoenix-btn-active-border-color: #f6f9ff; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f8ff; - --phoenix-btn-disabled-border-color: #f5f8ff -} - -.btn-soft-secondary { - --phoenix-btn-color: #141824; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #f5f7fa; - --phoenix-btn-hover-color: #141824; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #f6f8fb; - --phoenix-btn-focus-shadow-rgb: 211, 214, 218; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #f7f9fb; - --phoenix-btn-active-border-color: #f6f8fb; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #f5f7fa -} - -.btn-soft-success { - --phoenix-btn-color: #1c6c09; - --phoenix-btn-bg: #f0fdec; - --phoenix-btn-border-color: #f0fdec; - --phoenix-btn-hover-color: #1c6c09; - --phoenix-btn-hover-bg: #d9fbd0; - --phoenix-btn-hover-border-color: #f2fdee; - --phoenix-btn-focus-shadow-rgb: 208, 231, 202; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #f3fdf0; - --phoenix-btn-active-border-color: #f2fdee; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f0fdec; - --phoenix-btn-disabled-border-color: #f0fdec -} - -.btn-soft-info { - --phoenix-btn-color: #005585; - --phoenix-btn-bg: #f0faff; - --phoenix-btn-border-color: #f0faff; - --phoenix-btn-hover-color: #005585; - --phoenix-btn-hover-bg: #c7ebff; - --phoenix-btn-hover-border-color: #f2fbff; - --phoenix-btn-focus-shadow-rgb: 204, 225, 237; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #f3fbff; - --phoenix-btn-active-border-color: #f2fbff; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f0faff; - --phoenix-btn-disabled-border-color: #f0faff -} - -.btn-soft-warning { - --phoenix-btn-color: #bc3803; - --phoenix-btn-bg: #fff6e0; - --phoenix-btn-border-color: #fff6e0; - --phoenix-btn-hover-color: #bc3803; - --phoenix-btn-hover-bg: #ffefca; - --phoenix-btn-hover-border-color: #fff7e3; - --phoenix-btn-focus-shadow-rgb: 245, 218, 191; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #fff8e6; - --phoenix-btn-active-border-color: #fff7e3; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #fff6e0; - --phoenix-btn-disabled-border-color: #fff6e0 -} - -.btn-soft-danger { - --phoenix-btn-color: #b81800; - --phoenix-btn-bg: #ffedeb; - --phoenix-btn-border-color: #ffedeb; - --phoenix-btn-hover-color: #b81800; - --phoenix-btn-hover-bg: #ffe0db; - --phoenix-btn-hover-border-color: #ffefed; - --phoenix-btn-focus-shadow-rgb: 244, 205, 200; - --phoenix-btn-active-color: #000000; - --phoenix-btn-active-bg: #fff1ef; - --phoenix-btn-active-border-color: #ffefed; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #ffedeb; - --phoenix-btn-disabled-border-color: #ffedeb -} - -.btn-phoenix-primary { - --phoenix-btn-color: #3874ff; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #004dff; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #e6e9ef; - --phoenix-btn-focus-shadow-rgb: 201, 213, 240; - --phoenix-btn-active-color: #3874ff; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #e6e9ef; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #e3e6ed -} - -.btn-phoenix-secondary,.google-map-control-btn .zoomIn,.google-map-control-btn .zoomOut,.tox .tox-dialog__footer .tox-button--secondary,.tox .tox-button-secondary { - --phoenix-btn-color: #31374a; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #222834; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #e6e9ef; - --phoenix-btn-focus-shadow-rgb: 200, 204, 213; - --phoenix-btn-active-color: #31374a; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #e6e9ef; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #e3e6ed -} - -.btn-phoenix-success { - --phoenix-btn-color: #25b003; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #23890b; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #e6e9ef; - --phoenix-btn-focus-shadow-rgb: 199, 222, 202; - --phoenix-btn-active-color: #25b003; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #e6e9ef; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #e3e6ed -} - -.btn-phoenix-info { - --phoenix-btn-color: #0097eb; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #0080c7; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #e6e9ef; - --phoenix-btn-focus-shadow-rgb: 193, 218, 237; - --phoenix-btn-active-color: #0097eb; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #e6e9ef; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #e3e6ed -} - -.btn-phoenix-warning { - --phoenix-btn-color: #e5780b; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #d6700a; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #e6e9ef; - --phoenix-btn-focus-shadow-rgb: 227, 214, 203; - --phoenix-btn-active-color: #e5780b; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #e6e9ef; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #e3e6ed -} - -.btn-phoenix-danger { - --phoenix-btn-color: #ed2000; - --phoenix-btn-bg: #f5f7fa; - --phoenix-btn-border-color: #e3e6ed; - --phoenix-btn-hover-color: #cc1b00; - --phoenix-btn-hover-bg: #e3e6ed; - --phoenix-btn-hover-border-color: #e6e9ef; - --phoenix-btn-focus-shadow-rgb: 229, 200, 201; - --phoenix-btn-active-color: #ed2000; - --phoenix-btn-active-bg: #e3e6ed; - --phoenix-btn-active-border-color: #e6e9ef; - --phoenix-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0); - --phoenix-btn-disabled-color: #000000; - --phoenix-btn-disabled-bg: #f5f7fa; - --phoenix-btn-disabled-border-color: #e3e6ed -} - -.btn-link { - --phoenix-btn-font-weight: 700; - --phoenix-btn-color: var(--phoenix-link-color); - --phoenix-btn-bg: transparent; - --phoenix-btn-border-color: transparent; - --phoenix-btn-hover-color: var(--phoenix-link-hover-color); - --phoenix-btn-hover-border-color: transparent; - --phoenix-btn-active-border-color: transparent; - --phoenix-btn-disabled-color: #9fa6bc; - --phoenix-btn-disabled-border-color: transparent; - --phoenix-btn-box-shadow: none; - text-decoration: none -} - -.btn-link:hover,.btn-link:focus { - text-decoration: underline -} - -.btn-lg,.btn-group-lg>.btn,.google-map-control-btn .btn-group-lg>.zoomIn,.google-map-control-btn .btn-group-lg>.zoomOut,.tox .tox-dialog__footer .btn-group-lg>.tox-button:last-child,.tox .tox-dialog__footer .btn-group-lg>.tox-button--secondary,.tox .btn-group-lg>.tox-button-secondary,.tox .btn-group-lg>.tox-button,[data-list] .btn-group-lg>.page,.table-list .btn-group-lg>.page { - --phoenix-btn-padding-y: 0.875rem; - --phoenix-btn-padding-x: 1.5rem; - --phoenix-btn-font-size: 1rem; - --phoenix-btn-border-radius: 0.375rem -} - -.btn-sm,.btn-group-sm>.btn,.google-map-control-btn .btn-group-sm>.zoomIn,.google-map-control-btn .btn-group-sm>.zoomOut,.tox .tox-dialog__footer .btn-group-sm>.tox-button:last-child,.tox .tox-dialog__footer .btn-group-sm>.tox-button--secondary,.tox .btn-group-sm>.tox-button-secondary,.tox .btn-group-sm>.tox-button,[data-list] .btn-group-sm>.page,.table-list .btn-group-sm>.page { - --phoenix-btn-padding-y: 0.5rem; - --phoenix-btn-padding-x: 1rem; - --phoenix-btn-font-size: 0.8rem; - --phoenix-btn-border-radius: 0.375rem -} - -.btn-circle { - height: 2rem; - width: 2rem; - border-radius: 50%; - padding: 0; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.btn-icon { - height: 2rem; - width: 2rem; - padding: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.btn-icon.btn-icon-lg { - height: 2.375rem; - width: 2.375rem -} - -.btn-icon.btn-icon-xl { - height: 3rem; - width: 3rem -} - -.circle-btn { - height: 2rem; - width: 2rem; - padding: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-radius: var(--phoenix-border-radius-pill) -} - -.project-modal-btn { - --phoenix-bg-opacity: 0.64; - -webkit-transition: .3s; - -o-transition: .3s; - transition: .3s -} - -.project-modal-btn:hover { - --phoenix-bg-opacity: 1 -} - -.firefox .dropcap:first-letter { - margin-top: .175em -} - -.firefox .card-notification { - min-height: 19rem -} - -.chrome .btn-close { - background-clip: unset -} - -.fit-cover { - -o-object-fit: cover; - object-fit: cover -} - -.sticky-sidebar { - position: sticky; - z-index: 1020; - top: var(--phoenix-navbar-top-height)1 -} - -.circle-dashed { - border: 1px dashed var(--phoenix-primary); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - border-radius: 50%; - width: 3.5rem; - height: 3.5rem -} - -.hover-text-decoration-none:hover,.hover-text-decoration-none:focus { - text-decoration: none -} - -.resize-none { - resize: none -} - -.collapsed .collapse-icon { - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg) -} - -.collapse-icon { - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) -} - -[data-dismiss=dropdown] *,[data-bs-offset-top] *,[data-bs-toggle=collapse] *,[data-bs-toggle=tooltip] *,[data-bs-toggle=popover] * { - pointer-events: none -} - -.outline-none { - outline: none; - -webkit-box-shadow: none; - box-shadow: none -} - -.outline-none:hover,.outline-none:focus { - outline: none; - -webkit-box-shadow: none; - box-shadow: none -} - -.vertical-line:after { - position: absolute; - content: ""; - height: 75%; - width: 1px; - background: var(--phoenix-gray-300); - right: 0; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%) -} - -.vertical-line.vertical-line-400:after { - background-color: var(--phoenix-gray-400) -} - -.transition-base { - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.transition-none { - -webkit-transition: none; - -o-transition: none; - transition: none -} - -.fsp-75 { - font-size: 75% -} - -.min-w-0 { - min-width: 0 -} - -.terms-sidebar .nav-link { - color: var(--phoenix-gray-500); - font-weight: 500; - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.terms-sidebar .nav-link.active { - color: var(--phoenix-primary) -} - -.divider-content-center { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translateX(-50%) translateY(-50%); - -ms-transform: translateX(-50%) translateY(-50%); - transform: translateX(-50%) translateY(-50%); - padding-left: .5rem; - padding-right: .5rem; - background-color: var(--phoenix-body-bg); - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - font-size: .8rem; - color: var(--phoenix-gray-600); - white-space: nowrap; - font-weight: 700 -} - -.dark .bg-auth-card .divider-content-center { - background-color: #0f111a !important -} - -.btn-check[data-theme-control]:checked+label { - display: none -} - -html { - position: relative -} - -.content { - min-height: 100vh; - padding: calc(var(--phoenix-navbar-top-height) + 2rem) 1.5rem 6.375rem 1.5rem; - padding-bottom: 6rem -} - -@media(min-width: 576px) { - .content { - padding-bottom:4rem - } -} - -.footer { - bottom: 0; - width: 100%; - height: 6rem; - border-top: 1px solid var(--phoenix-navbar-footer-border-color); - padding: 0 1.5rem; - left: 0 -} - -@media(min-width: 576px) { - .footer { - height:4rem - } -} - -@media(min-width: 992px) { - .footer { - padding:0 2.5rem - } -} - -.bullet-item { - height: .5rem; - width: 1rem; - border-radius: 2px -} - -.logo-text { - font-size: 1.63625rem; - color: var(--phoenix-logo-text); - line-height: 1.2; - font-weight: 600; - letter-spacing: -0.04em; - margin-bottom: 0 -} - -.notification-card.unread { - background-color: var(--phoenix-gray-100) -} - -.dark .notification-card.unread { - background-color: var(--phoenix-white) -} - -.notification-card:hover { - background-color: var(--phoenix-gray-200) !important -} - -.notification-dropdown-toggle:hover { - border-color: var(--phoenix-gray-300); - background: rgba(0,0,0,0) -} - -.square-icon-btn,.google-map-control-btn .zoomIn,.google-map-control-btn .zoomOut { - height: 1.875rem; - width: 1.875rem; - padding: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.pricing-column-title-box { - height: 105px -} - -.pricing--hover:hover .warning-boxshadow,.pricing--hover:focus .warning-boxshadow { - -webkit-box-shadow: 0px 0px 0px 4px rgba(229,120,11,.2); - box-shadow: 0px 0px 0px 4px rgba(229,120,11,.2); - border-radius: .5rem; - outline: 0 -} - -.pricing--hover:hover .border-warning-300,.pricing--hover:focus .border-warning-300 { - --phoenix-border-color: #ffcc85 -} - -.pricing-plan-radio+label { - border: 1px solid rgba(0,0,0,0); - border-radius: .5rem -} - -.pricing-plan-radio:checked+div .card { - border: 1px solid var(--phoenix-primary-300); - -webkit-box-shadow: 0px 0px 0px 4px rgba(56,116,255,.2); - box-shadow: 0px 0px 0px 4px rgba(56,116,255,.2) -} - -.pricing-plan-radio.pricing-plan-recommended:checked+div .card { - border: 1px solid var(--phoenix-warning-300); - -webkit-box-shadow: 0px 0px 0px 4px rgba(229,120,11,.2); - box-shadow: 0px 0px 0px 4px rgba(229,120,11,.2) -} - -.dark .footer-bg,.dark .picmo__popupContainer.picmo__light .footer-bg { - opacity: .6 -} - -.text-illustration-underline { - position: absolute; - bottom: -5px; - left: 0; - width: 100% -} - -.bg-linear-gradient { - background: -o-linear-gradient(354.89deg, #f24e1e -21.8%, #ff7262 -2.23%, #a259ff 46.16%, #1abcfe 79.11%, #0acf83 116.18%); - background: linear-gradient(95.11deg, #f24e1e -21.8%, #ff7262 -2.23%, #a259ff 46.16%, #1abcfe 79.11%, #0acf83 116.18%) -} - -.hover-bg-transparent:hover,.hover-bg-transparent:focus { - background-color: rgba(0,0,0,0) !important -} - -.fa-ul { - margin-left: var(--fa-li-margin, 2.5em) -} - -[dir=rtl] .fa-ul { - --fa-li-margin: -0.5em !important -} - -[dir=rtl] .fa-ul.pricing { - margin-left: var(--fa-li-margin, 2.5em) !important -} - -.fa-ul .fa-li { - left: calc(var(--fa-li-width, 2em)*-1) !important -} - -@media(min-width: 1200px) { - .page-title-sticky-top { - position:sticky; - top: calc(var(--phoenix-navbar-top-height) + 3.725rem) - } -} - -.dark .pricing-business-plus,.dark .picmo__popupContainer.picmo__light .pricing-business-plus { - background-color: rgba(229,120,11,.08) !important; - border: 1px solid rgba(229,120,11,.2) -} - -.echart-quartet-scatter-chart-example { - min-height: 31.25rem -} - -@media(max-width: 767.98px) { - .echart-quartet-scatter-chart-example { - min-height:65.625rem - } -} - -.echart-radar-customized-chart-example { - height: 22rem -} - -@media(max-width: 1199.98px) { - .echart-radar-customized-chart-example { - height:45rem - } -} - -.echart-radar-multiple-chart-example { - height: 21rem -} - -@media(max-width: 1539.98px) { - .echart-radar-multiple-chart-example { - height:35rem - } -} - -@media(max-width: 991.98px) { - .echart-radar-multiple-chart-example { - height:50rem - } -} - -.simplebar-scrollspy .nav { - min-width: 850px -} - -.simplebar-scrollspy .nav .nav-item .nav-link.active { - color: var(--phoenix-primary) !important; - border-bottom: 1px solid var(--phoenix-primary) !important -} - -.faq-list li .fa-circle { - font-size: 6px; - margin-right: 1.25rem; - margin-top: 6px; - color: var(--phoenix-gray-400) -} - -.faq-title-box { - top: 2rem; - width: 90% -} - -@media(min-width: 768px) { - .faq-title-box { - width:75% - } -} - -@media(min-width: 1200px) { - .faq-title-box { - width:55% - } -} - -.dark .subtask-checkbox,.dark .picmo__popupContainer.picmo__light .subtask-checkbox { - background-color: #141824 -} - -.dark .subtask-checkbox:checked { - background-color: #3874ff -} - -.stack-circle path { - stroke: var(--phoenix-body-bg); - stroke-width: 60 -} - -.action-btn { - min-height: 32px; - min-width: 45px -} - -.star-rating { - background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgMCAxMiAxMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjc4MTMgNC4xNzkzTDcuODcyNjYgMy43NjA5NEw2LjU1NzgxIDEuMTExMzNDNi4zMzg2NyAwLjY1MzEyNSA1LjY2MTMzIDAuNjMzMjAzIDUuNDIyMjcgMS4xMTEzM0w0LjEyNzM0IDMuNzYwOTRMMS4xOTg4MyA0LjE3OTNDMC42ODA4NiA0LjI1ODk4IDAuNDgxNjQxIDQuODk2NDggMC44NjAxNTcgNS4yNzVMMi45NTE5NSA3LjMyNjk1TDIuNDUzOTEgMTAuMjE1NkMyLjM3NDIyIDEwLjczMzYgMi45MzIwMyAxMS4xMzIgMy4zOTAyMyAxMC44OTNMNiA5LjUxODM2TDguNTg5ODQgMTAuODkzQzkuMDQ4MDUgMTEuMTMyIDkuNjA1ODYgMTAuNzMzNiA5LjUyNjE3IDEwLjIxNTZMOS4wMjgxMyA3LjMyNjk1TDExLjExOTkgNS4yNzVDMTEuNDk4NCA0Ljg5NjQ4IDExLjI5OTIgNC4yNTg5OCAxMC43ODEzIDQuMTc5M1pNNy45OTIxOSA2Ljk4ODI4TDguNDcwMzEgOS43Mzc1TDYgOC40NDI1OEwzLjUwOTc3IDkuNzM3NUwzLjk4Nzg5IDYuOTg4MjhMMS45NzU3OCA1LjAzNTk0TDQuNzQ0OTIgNC42Mzc1TDYgMi4xMjczNEw3LjIzNTE2IDQuNjM3NUwxMC4wMDQzIDUuMDM1OTRMNy45OTIxOSA2Ljk4ODI4WiIgZmlsbD0iI0U1NzgwQiIvPgo8L3N2Zz4K") !important -} - -.star-rating .star-value { - background-image: url("../img/icons/star.svg") !important -} - -[data-list] .sort[data-sort],.table-list .sort[data-sort] { - white-space: nowrap; - cursor: pointer -} - -[data-list] .sort[data-sort]::after,.table-list .sort[data-sort]::after { - content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNyA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMy4xNDkgMC42NDY3NjhDMy4zNDM2NiAwLjQ1NDg4NSAzLjY1NjM0IDAuNDU0ODg1IDMuODUxIDAuNjQ2NzY4TDYuMTMxNTEgMi44OTQ2OUM2LjQ0OTk4IDMuMjA4NjIgNi4yMjc2OSAzLjc1MDc4IDUuNzgwNSAzLjc1MDc4SDEuMjE5NUMwLjc3MjMwNyAzLjc1MDc4IDAuNTUwMDE4IDMuMjA4NjIgMC44Njg0OTUgMi44OTQ2OUwzLjE0OSAwLjY0Njc2OFoiIGZpbGw9IiM2RTc4OTEiLz4KPHBhdGggZD0iTTMuMTQ5IDguMTU0MDFDMy4zNDM2NiA4LjM0NTkgMy42NTYzNCA4LjM0NTkgMy44NTEgOC4xNTQwMUw2LjEzMTUxIDUuOTA2MDlDNi40NDk5OCA1LjU5MjE2IDYuMjI3NjkgNS4wNSA1Ljc4MDUgNS4wNUgxLjIxOTVDMC43NzIzMDcgNS4wNSAwLjU1MDAxOCA1LjU5MjE2IDAuODY4NDk1IDUuOTA2MDlMMy4xNDkgOC4xNTQwMVoiIGZpbGw9IiM2RTc4OTEiLz4KPC9zdmc+Cg=="); - margin-left: .25rem -} - -[data-list] .sort[data-sort].asc::after,.table-list .sort[data-sort].asc::after { - content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNyA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMy4xNDkgOC4xNTQwMUMzLjM0MzY2IDguMzQ1OSAzLjY1NjM0IDguMzQ1OSAzLjg1MSA4LjE1NDAxTDYuMTMxNTEgNS45MDYwOUM2LjQ0OTk4IDUuNTkyMTYgNi4yMjc2OSA1LjA1IDUuNzgwNSA1LjA1SDEuMjE5NUMwLjc3MjMwNyA1LjA1IDAuNTUwMDE4IDUuNTkyMTYgMC44Njg0OTUgNS45MDYwOUwzLjE0OSA4LjE1NDAxWiIgZmlsbD0iIzZFNzg5MSIvPgo8L3N2Zz4K") !important; - margin-top: -1px !important -} - -[data-list] .sort[data-sort].desc::after,.table-list .sort[data-sort].desc::after { - content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSI5IiB2aWV3Qm94PSIwIDAgNyA5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMy4xNDkgMC42NDY3NjhDMy4zNDM2NiAwLjQ1NDg4NSAzLjY1NjM0IDAuNDU0ODg1IDMuODUxIDAuNjQ2NzY4TDYuMTMxNTEgMi44OTQ2OUM2LjQ0OTk4IDMuMjA4NjIgNi4yMjc2OSAzLjc1MDc4IDUuNzgwNSAzLjc1MDc4SDEuMjE5NUMwLjc3MjMwNyAzLjc1MDc4IDAuNTUwMDE4IDMuMjA4NjIgMC44Njg0OTUgMi44OTQ2OUwzLjE0OSAwLjY0Njc2OFoiIGZpbGw9IiM2RTc4OTEiLz4KPC9zdmc+Cg==") !important -} - -[data-list] .page,.table-list .page { - padding: .5rem .75rem; - color: var(--phoenix-gray-800); - font-size: .64rem; - margin-left: .25rem; - margin-right: .25rem -} - -[data-list] li.active .page,.table-list li.active .page { - color: #fff; - background-color: #3874ff -} - -[data-list] li.disabled button,.table-list li.disabled button { - border: 0 -} - -.ios [data-list-pagination].btn-primary[disabled],.ios .tox [data-list-pagination][disabled].tox-button,.tox .ios [data-list-pagination][disabled].tox-button { - opacity: 1 !important; - border: 0 !important; - background-color: var(--phoenix-btn-disabled-custom-background) !important; - color: var(--phoenix-btn-disabled-custom-color) !important -} - -code[class*=language-],pre[class*=language-] { - color: #f8f8f2; - background: none; - text-shadow: 0 1px rgba(0, 0, 0, 0.3); - font-family: Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - -webkit-hyphens: none; - -ms-hyphens: none; - hyphens: none -} - -pre[class*=language-] { - padding: 1em; - margin: .5em 0; - overflow: auto; - border-radius: .3em -} - -:not(pre)>code[class*=language-],pre[class*=language-] { - background: #272822 -} - -:not(pre)>code[class*=language-] { - padding: .1em; - border-radius: .3em; - white-space: normal -} - -.token.comment,.token.prolog,.token.doctype,.token.cdata { - color: #8292a2 -} - -.token.punctuation { - color: #f8f8f2 -} - -.token.namespace { - opacity: .7 -} - -.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted { - color: #f92672 -} - -.token.boolean,.token.number { - color: #ae81ff -} - -.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted { - color: #a6e22e -} - -.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable { - color: #f8f8f2 -} - -.token.atrule,.token.attr-value,.token.function,.token.class-name { - color: #e6db74 -} - -.token.keyword { - color: #66d9ef -} - -.token.regex,.token.important { - color: #fd971f -} - -.token.important,.token.bold { - font-weight: bold -} - -.token.italic { - font-style: italic -} - -.token.entity { - cursor: help -} - -.swiper-theme-container { - position: relative -} - -.swiper-theme-container .swiper-wrapper .swiper-slide { - height: auto !important -} - -.swiper-theme-container .swiper-nav { - margin-top: 0; - cursor: pointer -} - -.swiper-theme-container .swiper-nav [class*=swiper-] { - position: absolute; - top: 50%; - border: 1px solid; - border-color: var(--phoenix-gray-200); - -webkit-transition: opacity .4s ease-in-out; - -o-transition: opacity .4s ease-in-out; - transition: opacity .4s ease-in-out; - width: 2rem; - height: 2rem; - border-radius: 50%; - color: var(--phoenix-gray-900); - background-color: var(--phoenix-gray-soft) !important; - -webkit-box-shadow: 0px 8px 24px -4px rgba(36,40,46,.12); - box-shadow: 0px 8px 24px -4px rgba(36,40,46,.12); - z-index: 1; - margin: 0 -} - -.swiper-theme-container .swiper-nav [class*=swiper-]:hover,.swiper-theme-container .swiper-nav [class*=swiper-]:focus { - background-color: var(--phoenix-white); - color: var(--phoenix-gray-700) -} - -.swiper-theme-container .swiper-nav .swiper-button-prev::after,.swiper-theme-container .swiper-nav .swiper-button-prev::before,.swiper-theme-container .swiper-nav .swiper-button-next::after,.swiper-theme-container .swiper-nav .swiper-button-next::before { - content: "" -} - -.swiper-theme-container .swiper-nav .swiper-button-prev.swiper-button-disabled,.swiper-theme-container .swiper-nav .swiper-button-next.swiper-button-disabled { - opacity: 0 -} - -.swiper-theme-container .swiper-nav .swiper-button-prev { - left: -1rem -} - -.swiper-theme-container .swiper-nav .swiper-button-next { - right: -1rem -} -/* -.dropzone { - position: relative; - background-color: var(--phoenix-gray-soft); - border: 0; - border-radius: .5rem; - min-height: auto -} - -.dropzone.dropzone-has-default .dz-message { - border-color: rgba(0,0,0,0); - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.dropzone.dropzone-has-default .dz-message:hover { - background-color: rgba(0,0,0,.5) -} - -.dropzone .dz-preview { - min-height: auto; - margin: 0 -} - -.dropzone .dz-remove { - position: absolute; - right: -6px; - top: -6px; - color: var(--phoenix-white); - z-index: 1000; - cursor: pointer; - width: 2rem; - height: 2rem; - line-height: 2rem -} - -.dropzone .dz-remove * { - cursor: pointer -} - -.dropzone .dz-message { - position: relative; - padding: 5rem 2rem; - margin: 0; - border: 2px dashed var(--phoenix-border-color); - border-radius: .5rem -} - -.dropzone.dropzone-single.dz-file-processing .dz-message { - display: none -} - -.dropzone.dropzone-single.dz-file-processing.dz-file-complete .dz-message { - display: block -} - -.dropzone.dropzone-single.dz-file-processing.dz-file-complete .dz-default-image { - opacity: 0 -} - -.dropzone.dropzone-single .dz-processing .dz-message-text { - opacity: 0 !important -} - -.dropzone.dropzone-single .dz-progress { - opacity: 1; - -webkit-transition: opacity .4s ease-in; - -o-transition: opacity .4s ease-in; - transition: opacity .4s ease-in; - -webkit-animation: none !important; - animation: none !important; - width: 9.375rem !important; - height: .5rem !important; - margin: 0 !important; - -webkit-transform: translateX(-50%) !important; - -ms-transform: translateX(-50%) !important; - transform: translateX(-50%) !important; - top: auto !important; - bottom: 1.5rem -} - -.dropzone.dropzone-single.dz-max-files-reached .dz-message { - background-color: rgba(0,0,0,.5); - color: var(--phoenix-white); - opacity: 0; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - border-color: rgba(0,0,0,0) -} - -.dropzone.dropzone-single.dz-max-files-reached .dz-remove { - opacity: 1 -} - -.dropzone.dropzone-single.dz-max-files-reached:hover .dz-message,.dropzone.dropzone-single.dz-max-files-reached:focus .dz-message { - opacity: 1 -} - -.dropzone.dropzone-single .dz-processing .dz-progress { - opacity: 1 -} - -.dropzone.dropzone-single .dz-complete .dz-progress { - opacity: 0 -} - -.dropzone .dz-preview-single { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: 0 -} - -.dropzone .dz-preview-single:hover { - z-index: auto -} - -.dropzone .dz-preview-single .dz-preview-cover { - position: absolute; - height: 100%; - width: 100%; - border: 0 !important; - overflow: hidden -} - -.dropzone .dz-preview-single .dz-preview-cover .dz-errormessage { - position: absolute; - left: 0; - bottom: 0 -} - -.dropzone .dz-preview-single .dz-preview-img { - width: 100%; - height: 100%; - -o-object-fit: cover; - object-fit: cover; - border-radius: .5rem -} - -.dropzone.dropzone-multiple { - border: 0; - background: var(--phoenix-gray-soft) -} - -.dropzone.dropzone-multiple .dz-message { - padding: 3rem 2rem; - border: 1px dashed var(--phoenix-gray-300); - border-radius: .5rem -} - -.dropzone.dropzone-multiple .btn *,.dropzone.dropzone-multiple .google-map-control-btn .zoomIn *,.google-map-control-btn .dropzone.dropzone-multiple .zoomIn *,.dropzone.dropzone-multiple .google-map-control-btn .zoomOut *,.google-map-control-btn .dropzone.dropzone-multiple .zoomOut *,.dropzone.dropzone-multiple .tox .tox-dialog__footer .tox-button--secondary *,.tox .tox-dialog__footer .dropzone.dropzone-multiple .tox-button--secondary *,.dropzone.dropzone-multiple .tox .tox-button-secondary *,.tox .dropzone.dropzone-multiple .tox-button-secondary *,.dropzone.dropzone-multiple .tox .tox-button *,.tox .dropzone.dropzone-multiple .tox-button *,.dropzone.dropzone-multiple [data-list] .page *,[data-list] .dropzone.dropzone-multiple .page *,.dropzone.dropzone-multiple .table-list .page *,.table-list .dropzone.dropzone-multiple .page * { - cursor: pointer -} - -.dropzone.dropzone-multiple .media:first-child { - margin-top: 1.5rem -} - -.dropzone.dropzone-multiple .dz-image-container { - padding: 1rem -} - -.dropzone.dropzone-multiple .dz-image { - height: 2rem; - width: 2rem; - -o-object-fit: cover; - object-fit: cover; - border-radius: 0 -} - -.dropzone.dropzone-multiple .dz-progress { - opacity: 0; - position: relative !important; - -webkit-transition: opacity .4s ease-in; - -o-transition: opacity .4s ease-in; - transition: opacity .4s ease-in; - -webkit-animation: none !important; - animation: none !important; - width: 6.25rem !important; - height: .5rem !important; - margin-top: 0; - margin-left: 1rem !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - top: auto !important; - left: auto !important -} - -.dropzone.dropzone-multiple .dz-complete .dz-progress { - -webkit-transition-delay: 1s; - -o-transition-delay: 1s; - transition-delay: 1s; - opacity: 1 -} - -.dropzone.dz-drag-hover .dz-message { - border-color: var(--phoenix-primary) -} - -.dropzone .dz-progress { - background: var(--phoenix-gray-200) !important -} - -.dropzone .dz-progress .dz-upload { - background: var(--phoenix-primary) !important -} - -.dropzone-area { - border: 1px dashed var(--phoenix-gray-400); - border-radius: .375rem; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - cursor: pointer -} */ - -.choices { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" !important -} - -.choices .choices__inner { - border-radius: .375rem; - line-height: 1.5rem !important; - font-size: 1rem; - background-color: var(--phoenix-input-bg) !important; - min-height: var(--phoenix-choices-inner-min-height) !important; - background-size: 9px 12px; - border: 1px solid var(--phoenix-input-border-color); - padding: 6px 3.5rem 6px 1rem; - -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0); - box-shadow: inset 0 1px 2px rgba(0,0,0,0) -} - -.choices .choices__input--cloned { - padding: 0; - font-size: .8rem; - color: var(--phoenix-input-color); - background-color: var(--phoenix-input-bg) !important; - vertical-align: top; - margin-bottom: 0 -} - -.choices .choices__input--cloned::-webkit-input-placeholder { - color: var(--phoenix-input-color) -} - -.choices .choices__input--cloned::-moz-placeholder { - color: var(--phoenix-input-color) -} - -.choices .choices__input--cloned:-ms-input-placeholder { - color: var(--phoenix-input-color) -} - -.choices .choices__input--cloned::-ms-input-placeholder { - color: var(--phoenix-input-color) -} - -.choices .choices__input--cloned::placeholder { - color: var(--phoenix-input-color) -} - -.choices .choices__list--dropdown { - border: 1px solid var(--phoenix-gray-200) !important; - border-bottom-left-radius: .375rem; - border-bottom-right-radius: .375rem; - background-color: var(--phoenix-white) -} - -.choices .choices__list--dropdown .choices__item--selectable { - padding: 2px 1rem; - padding-right: 20px; - font-size: 1rem !important; - background-color: var(--phoenix-gray-200); - color: var(--phoenix-body-color) -} - -.choices .choices__list--dropdown .choices__item--selectable.is-highlighted { - background-color: var(--phoenix-primary); - color: var(--phoenix-white) -} - -.choices .choices__list { - margin-top: 0 !important -} - -.choices .choices__list .has-no-choices { - background-color: var(--phoenix-choices-item-has-no-choices-bg) -} - -.choices .choices__list--multiple .choices__item { - text-transform: uppercase; - padding: 2.5px 8px !important; - font-size: .64rem !important; - border: 0; - background-color: var(--phoenix-choices-item-bg) !important; - border-radius: 4px; - margin-bottom: 0 !important; - color: var(--phoenix-choices-item-color); - font-weight: 700; - line-height: 1 -} - -.choices .choices__list--single { - padding: 0 !important -} - -.choices .choices__list--single .choices__button { - background-color: rgba(0,0,0,0) !important -} - -.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button { - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM2ZTc4OTEiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXgiPjxsaW5lIHgxPSIxOCIgeTE9IjYiIHgyPSI2IiB5Mj0iMTgiPjwvbGluZT48bGluZSB4MT0iNiIgeTE9IjYiIHgyPSIxOCIgeTI9IjE4Ij48L2xpbmU+PC9zdmc+); - background-color: rgba(0,0,0,0) !important; - padding: 0px !important; - background-size: 11px !important; - margin: 0; - margin-left: 6px; - border: none; - background-position: -2px -1px -} - -.firefox .choices[data-type*=select-multiple] .choices__button,.firefox .choices[data-type*=text] .choices__button { - background-position: -2px 0px -} - -.choices[data-type*=select-one] .choices__input { - padding-left: 1rem; - padding-right: 1rem -} - -.choices[data-type*=select-one] .choices__inner { - padding-bottom: 5px !important -} - -.is-focused .choices__inner,.is-open .choices__inner { - border-radius: .375rem !important; - border-color: #3874ff !important; - -webkit-box-shadow: 0 0 0 .25rem rgba(56,116,255,.25) !important; - box-shadow: 0 0 0 .25rem rgba(56,116,255,.25) !important; - outline: 0 -} - -.choices-select-container { - position: relative -} - -.choices-select-container .choices__inner { - padding-left: 2.5rem -} - -.choices-select-container .choices-icon { - position: absolute; - left: 1rem -} - -.choices__item .choices__item--choice .has-no-results { - background-color: red !important -} - -.was-validated .choices.valid .choices__inner { - border-color: var(--phoenix-success) !important; - padding-right: calc(1.5em + .75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2325b003' d='M2.3 6.73.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(.375em + .1875rem) center; - background-size: calc(.75em + .375rem) calc(.75em + .375rem) -} - -.was-validated .choices[data-type=select-one].valid .choices__inner { - background-position: right calc(.375em + 1.55rem) center -} - -.was-validated .choices.invalid { - margin-bottom: 0 -} - -.was-validated .choices.invalid .choices__inner { - border-color: var(--phoenix-danger) !important; - padding-right: calc(1.5em + .75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ed2000'%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='%23ed2000' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(.375em + .1875rem) center; - background-size: calc(.75em + .375rem) calc(.75em + .375rem) -} - -.was-validated .choices.invalid+.invalid-feedback { - display: block -} - -.was-validated .choices[data-type=select-one].invalid .choices__inner { - background-position: right calc(.375em + 1.55rem) center -} - -.was-validated .choices[data-type*=select-one] .choices__button { - margin-right: 60px !important -} - -.tox { - border-radius: 0 -} - -.tox.tox-tinymce { - border: 0; - border-radius: 0; - overflow: unset !important -} - -.tox .tox-editor-container { - overflow: unset !important -} - -.tox .tox-edit-area { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.tox .tox-toolbar--scrolling { - background-color: rgba(0,0,0,0) !important -} - -.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { - border: none !important -} - -.tox .tox-toolbar__group:first-child { - padding-left: 0 !important -} - -.tox .tox-editor-header { - margin-bottom: .25rem; - -webkit-box-shadow: none !important; - box-shadow: none !important; - background-color: rgba(0,0,0,0) !important -} - -.tox .tox-editor-header .tox-toolbar-overlord { - background-color: rgba(0,0,0,0) !important -} - -.tox .tox-editor-header .tox-toolbar-overlord .tox-toolbar__primary { - background-color: rgba(0,0,0,0) !important -} - -[dir=rtl] .tox .tox-editor-header .tox-toolbar-overlord .tox-toolbar__primary { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end -} - -.tox .tox-sidebar-wrap { - overflow: hidden; - border: 1px solid var(--phoenix-input-border-color); - border-radius: .375rem -} - -.tox .tox-menu,.tox .tox-dialog { - border-radius: .375rem !important; - border-color: var(--phoenix-border-color) !important; - background-color: var(--phoenix-tinymce-bg) !important -} - -.tox .tox-dialog__header,.tox .tox-dialog__footer { - background: var(--phoenix-white) !important; - padding: 8px 16px 32px !important -} - -.tox .tox-collection__item--active,.tox .tox-collection__item-accessory { - background-color: var(--phoenix-gray-200) !important; - color: var(--phoenix-body-color) !important -} - -.tox .tox-dialog__title { - color: var(--phoenix-body-color) !important -} - -.tox .tox-form__group { - margin-bottom: 1rem !important -} - -.tox .tox-label { - color: var(--phoenix-gray-700) !important; - margin-bottom: .25rem !important -} - -.tox .tox-textfield { - background-color: var(--phoenix-input-bg) !important; - color: var(--phoenix-body-color) !important; - border-color: var(--phoenix-input-border-color) !important; - padding: .5rem 1rem !important -} - -.tox .tox-textfield:focus { - border-color: #3874ff !important; - -webkit-box-shadow: inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) !important; - box-shadow: inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) !important -} - -.tox .tox-listbox { - background-color: var(--phoenix-input-bg) !important; - color: var(--phoenix-body-color) !important; - padding-left: 1rem !important; - padding-right: 1rem !important; - border-color: var(--phoenix-border-color) !important -} - -.tox .tox-listbox.tox-listbox--select:focus { - -webkit-box-shadow: none !important; - box-shadow: none !important -} - -.tox .tox-collection--list .tox-collection__item { - background-color: rgba(0,0,0,0) !important; - color: var(--phoenix-gray-800) !important -} - -.tox .tox-collection--list .tox-collection__item--active { - background-color: var(--phoenix-gray-200) !important -} - -.tox .tox-button--naked { - color: var(--phoenix-body-color) !important -} - -.tox .tox-button--naked:hover:not(:disabled) { - background-color: var(--phoenix-gray-200) !important; - border-color: var(--phoenix-border-color) !important -} - -.tox .tox-icon { - color: var(--phoenix-body-color) !important -} - -.tox .tox-dialog { - border-radius: .375rem !important; - border-color: var(--phoenix-border-color) !important; - background-color: var(--phoenix-tinymce-bg) !important -} - -.tox .tox-dialog__header,.tox .tox-dialog__footer { - background-color: var(--phoenix-tinymce-bg) !important; - border-color: var(--phoenix-border-color) !important -} - -.tox .tox-toolbar__overflow { - padding-left: 1rem !important; - background-color: var(--phoenix-gray-100) !important; - background-image: none !important -} - -.tox .tox-dialog-wrap__backdrop { - background-color: #000 !important; - opacity: .5 -} - -.tox .tox-tbtn { - height: 24px !important; - width: 24px !important -} - -.tox .tox-tbtn span svg { - fill: var(--phoenix-gray-700) !important -} - -.tox .tox-tbtn span svg:hover,.tox .tox-tbtn span svg:focus { - fill: var(--phoenix-gray-700) !important -} - -.tox .tox-tbtn:hover,.tox .tox-tbtn:focus { - background: var(--phoenix-gray-200) !important -} - -.tox .tox-tbtn--enabled { - background: var(--phoenix-gray-300) !important -} - -.tox .tox-tbtn--enabled span svg { - fill: var(--phoenix-tinymce-tox-tbtn-enabled-icon-color) !important -} - -.tox .tox-tbtn--enabled:hover,.tox .tox-tbtn--enabled:focus { - background: var(--phoenix-gray-200) !important -} - -.tox .tox-edit-area__iframe { - background-color: var(--phoenix-tinymce-bg) !important -} - -.editor-focused { - -webkit-box-shadow: inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) !important; - box-shadow: inset 0 0 0 30px var(--phoenix-input-bg),0 0 0 .25rem rgba(56,116,255,.25) !important; - border-color: #3874ff !important -} - -.flatpickr-input-container { - position: relative -} - -.flatpickr-input-container .flatpickr-icon { - position: absolute; - left: 1rem; - top: 50%; - -webkit-transform: translateY(-12px); - -ms-transform: translateY(-12px); - transform: translateY(-12px) -} - -.flatpickr-input-container .form-floating input { - padding-left: 2.25rem -} - -.flatpickr-input-container.flatpickr-input-sm .flatpickr-icon { - -webkit-transform: translateY(-12px); - -ms-transform: translateY(-12px); - transform: translateY(-12px) -} - -.flatpickr-calendar { - width: 322px !important; - overflow: hidden; - text-align: unset; - background-color: var(--phoenix-flatpickr-calendar-bg) !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - border: 1px solid var(--phoenix-border-color) !important -} - -.flatpickr-calendar.open { - z-index: 1100 !important -} - -.flatpickr-calendar.arrowTop:after { - border-bottom-color: var(--phoenix-flatpickr-calendar-bg) !important -} - -.flatpickr-calendar.arrowTop:before { - border-bottom-color: var(--phoenix-border-color) !important -} - -.flatpickr-calendar.arrowBottom:after { - border-top-color: var(--phoenix-flatpickr-calendar-bg) !important -} - -.flatpickr-calendar.arrowBottom:before { - border-top-color: var(--phoenix-border-color) !important -} - -.flatpickr-input:disabled,.flatpickr-input[readonly] { - background-color: var(--phoenix-flatpickr-calendar-input-bg) -} - -.flatpickr-time .flatpickr-am-pm,.flatpickr-time input { - color: var(--phoenix-gray-400) -} - -.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time input:hover,.flatpickr-time input:focus { - background-color: var(--phoenix-gray-100) !important -} - -.flatpickr-day { - margin: 4px !important; - color: var(--phoenix-gray-900); - font-size: 1rem; - font-weight: 700; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - line-height: 1; - border: 0; - height: 32px !important; - width: 32px !important; - max-width: 32px !important; - border-radius: .25rem -} - -.flatpickr-day.weekend-days { - color: var(--phoenix-flatpickr-weekend-days-color) -} - -.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay { - color: var(--phoenix-gray-400) -} - -.flatpickr-day.today { - background: var(--phoenix-primary) !important; - color: var(--phoenix-flatpickr-today-color); - border-radius: 50% -} - -.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus { - background-color: var(--phoenix-flatpickr-calendar-day-hover-bg) -} - -.flatpickr-day.today:hover,.flatpickr-day.today:focus { - background: var(--phoenix-primary-600) !important; - color: #fff -} - -.flatpickr-day.selected { - background-color: var(--phoenix-gray-300); - color: var(--phoenix-gray-900); - border: 0 -} - -.flatpickr-day.selected:hover,.flatpickr-day.selected:focus { - background-color: rgba(56,116,255,.35); - color: var(--phoenix-gray-900) -} - -.flatpickr-day.inRange { - background-color: rgba(56,116,255,.15) -} - -.flatpickr-day.selected { - background-color: rgba(56,116,255,.25) -} - -.flatpickr-time input.flatpickr-hour { - border-top-right-radius: 4px; - border-bottom-right-radius: 5px -} - -.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time { - border-top: 0 !important -} - -.flatpickr-calendar.hasTime .flatpickr-time { - border-top-color: var(--phoenix-border-color) !important -} - -.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)) { - -webkit-box-shadow: none; - box-shadow: none -} - -span.flatpickr-weekday,.flatpickr-weekdaycontainer,.flatpickr-months .flatpickr-month { - background-color: var(--phoenix-flatpickr-calendar-bg) !important; - color: var(--phoenix-body-color) !important -} - -.flatpickr-wrapper { - display: block -} - -.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month { - fill: var(--phoenix-gray-700) -} - -.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg { - fill: var(--phoenix-gray-800) -} - -.flatpickr-day.inRange { - -webkit-box-shadow: -5px 0 0 var(--phoenix-flatpickr-calendar-bg),5px 0 0 var(--phoenix-flatpickr-calendar-bg); - box-shadow: -5px 0 0 var(--phoenix-flatpickr-calendar-bg),5px 0 0 var(--phoenix-flatpickr-calendar-bg) -} - -.flatpickr-months { - height: 50px -} - -.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month { - top: 20px; - padding: 0 -} - -.flatpickr-months .flatpickr-prev-month { - left: 28px !important -} - -[dir=rtl] .flatpickr-months .flatpickr-prev-month { - right: 28px -} - -.flatpickr-months .flatpickr-next-month { - right: 25px !important -} - -[dir=rtl] .flatpickr-months .flatpickr-next-month { - left: 25px; - right: auto !important -} - -.flatpickr-months .flatpickr-month { - height: 100%; - padding-top: 1rem -} - -.flatpickr-months .flatpickr-month .flatpickr-current-month { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: static; - width: auto; - height: 100%; - color: var(--phoenix-flatpickr-current-month-color); - padding: 0 2rem; - background-color: var(--phoenix-flatpickr-calendar-bg) !important; - font-size: 1.5625rem -} - -.flatpickr-months .flatpickr-month .flatpickr-current-month .flatpickr-monthDropdown-months { - font-weight: 700; - color: #141824 -} - -.flatpickr-months .flatpickr-month .flatpickr-current-month .cur-month:hover,.flatpickr-months .flatpickr-month .flatpickr-current-month .cur-month:focus,.flatpickr-months .flatpickr-month .flatpickr-current-month .numInputWrapper:hover,.flatpickr-months .flatpickr-month .flatpickr-current-month .numInputWrapper:focus { - background: rgba(0,0,0,0) -} - -.flatpickr-months .flatpickr-month .flatpickr-current-month .cur-year { - font-weight: 600 -} - -.flatpickr-innerContainer { - padding: 20px 20px 16px 20px -} - -.flatpickr-innerContainer .flatpickr-rContainer { - width: 280px; - min-width: 280px; - max-width: 280px -} - -.flatpickr-innerContainer .flatpickr-rContainer .flatpickr-days { - width: 100% -} - -.flatpickr-innerContainer .flatpickr-rContainer .flatpickr-days .dayContainer { - width: 100% !important; - min-width: 100% !important; - max-width: 100% !important -} - -.isotope-nav { - font-weight: 700; - font-size: 1rem; - color: var(--phoenix-gray-800); - letter-spacing: .02em; - border: 1px solid rgba(0,0,0,0); - padding: .5rem 1rem; - background-color: rgba(0,0,0,0) -} - -.isotope-nav.active { - color: var(--phoenix-primary); - border: 1px solid var(--phoenix-primary); - border-radius: 1.2rem -} - -.isotope-nav:hover { - text-decoration: none -} - -.isotope-item { - visibility: hidden -} - -.sortable .menu { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - text-transform: uppercase; - color: #000; - text-decoration: none; - font-weight: 400; - font-size: .8rem; - letter-spacing: .13rem -} - -.sortable .menu .isotope-nav { - cursor: pointer; - padding: .25rem .5rem; - margin-bottom: .5rem; - border: 1px solid rgba(0,0,0,0); - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - margin-right: .25rem -} - -.sortable .menu .isotope-nav:last-child { - margin-right: 0 -} - -.sortable .menu .isotope-nav.active { - border-color: currentColor; - color: #000; - border-radius: .375rem -} - -.googlemap .gm-style-iw.gm-style-iw-c { - background: var(--phoenix-white); - -webkit-box-shadow: 0 1rem 3rem rgba(0,0,0,.175) !important; - box-shadow: 0 1rem 3rem rgba(0,0,0,.175) !important; - padding: 1rem !important -} - -.googlemap .gm-style-iw.gm-style-iw-c button[title=Close] { - margin-top: 1rem !important; - margin-right: .5rem !important -} - -.googlemap .gm-style-iw .gm-style-iw-d { - overflow: auto !important -} - -.googlemap .gm-style-iw-tc { - -webkit-box-shadow: 0 1rem 3rem rgba(0,0,0,.175) !important; - box-shadow: 0 1rem 3rem rgba(0,0,0,.175) !important; - -webkit-filter: none; - filter: none -} - -.googlemap .gm-style-iw-tc:after { - background: var(--phoenix-white) !important -} - -html[dir=rtl] .googlemap .gm-style-iw.gm-style-iw-c button[title=Close] { - left: unset !important; - right: 0 !important -} - -.googlemap>div { - background: rgba(0,0,0,0) !important -} - -.google-map-control-btn { - padding: 1rem -} - -.google-map-control-btn .zoomIn,.google-map-control-btn .zoomOut { - border-width: 2px -} - -.google-map-control-btn .zoomIn { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0 -} - -.google-map-control-btn .zoomOut { - margin-top: -2px; - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.picmo__popupContainer { - z-index: 9999 -} - -.picmo__picker.picmo__picker { - width: 300px; - --background-color: #f5f7fa; - --border-color: var(--phoenix-gray-300); - --category-tab-active-color: var(--phoenix-gray-300); - --category-tab-highlight-background-color: var(--phoenix-gray-200); - --category-tab-color: var(--phoenix-gray-900); - --text-color: var(--phoenix-body-color); - --emoji-size: 1.8rem !important -} - -.dark .picmo__picker.picmo__picker { - color-scheme: dark; - --background-color: #141824 -} - -.picmo__picker.picmo__picker .picmo__searchField { - --search-background-color: var(--phoenix-white) -} - -.dark .picmo__picker.picmo__picker .picmo__searchField { - --search-focus-background-color: #141824 -} - -.picmo__picker.picmo__picker section { - padding-top: 0; - padding-bottom: 0 -} - -.picmo__picker.picmo__picker .picmo__header { - --secondary-background-color: #f5f7fa -} - -.dark .picmo__picker.picmo__picker .picmo__header { - --secondary-background-color: #222834 -} - -.picmo__picker.picmo__picker .picmo__preview { - --preview-background-color: #f5f7fa -} - -.dark .picmo__picker.picmo__picker .picmo__preview { - --preview-background-color: #222834 -} - -.picmo__picker.picmo__picker .picmo__emojiCategory .picmo__categoryName { - --category-name-background-color: var(--phoenix-gray-soft); - --category-name-text-color: var(--phoenix-gray-600); - font-size: .64rem; - font-weight: 600 -} - -.dark .picmo__picker.picmo__picker .picmo__emojiCategory .picmo__categoryName { - --category-name-background-color: transparent -} - -.picmo__picker.picmo__picker .picmo__emojiButton:hover { - --hover-background-color: var(--phoenix-gray-200) -} - -.picmo__picker.picmo__picker .picmo__content { - min-height: unset !important; - padding: unset !important -} - -.picmo__picker.picmo__picker .picmo__searchContainer .picmo__searchField { - border: 1px solid var(--phoenix-gray-200); - border-radius: .375rem; - padding: 1rem -} - -.picmo__picker.picmo__picker .picmo__categoryButtons .picmo__categoryTab button.picmo__categoryButton { - font-size: 1rem -} - -.picmo__picker.picmo__picker .picmo__categoryButtons .picmo__categoryTab.picmo__categoryTabActive .picmo__categoryButton { - border: unset; - background: unset; - color: #3874ff; - --category-tab-active-background-color: var(--phoenix-gray-200) -} - -.leaflet-bar { - -webkit-box-shadow: var(--phoenix-box-shadow); - box-shadow: var(--phoenix-box-shadow) -} - -.leaflet-bar a,.leaflet-bar a:hover { - background-color: var(--phoenix-leaflet-bar-bg); - color: var(--phoenix-body-color); - border-bottom-color: var(--phoenix-border-color) -} - -.leaflet-bar a.leaflet-disabled { - background-color: var(--phoenix-gray-200) -} - -.marker-cluster-small { - background-color: rgba(56,116,255,.2) !important -} - -.marker-cluster-small div { - margin: 5px; - background-color: var(--phoenix-primary) !important; - color: var(--phoenix-white) -} - -.marker-cluster-medium { - background-color: rgba(229,120,11,.2) !important -} - -.marker-cluster-medium div { - margin: 5px; - background-color: var(--phoenix-warning) !important; - color: var(--phoenix-white) -} - -.marker-cluster-large { - background-color: rgba(37,176,3,.2) !important -} - -.marker-cluster-large div { - margin: 5px; - background-color: var(--phoenix-success) !important; - color: var(--phoenix-white) -} - -.leaflet-popup-content-wrapper,.leaflet-popup-tip { - background-color: var(--phoenix-leaflet-popup-content-wrapper-bg); - -webkit-box-shadow: 0 1rem 3rem rgba(0,0,0,.175); - box-shadow: 0 1rem 3rem rgba(0,0,0,.175); - border-radius: .375rem -} - -.leaflet-popup-close-button { - right: 3px !important; - top: 3px !important -} - -.leaflet-marker-icon { - height: auto !important; - width: auto !important -} - -.leaflet-control-attribution { - display: none -} - -.leaflet-top,.leaflet-bottom { - z-index: 999 -} - -.leaflet-left .leaflet-control { - margin-left: 1.5rem -} - -.leaflet-right .leaflet-control { - margin-right: 1.5rem -} - -.leaflet-top .leaflet-control { - margin-top: 1.5rem -} - -.leaflet-bottom .leaflet-control { - margin-bottom: 1.5rem -} - -#appCalendar { - height: calc(100vh - 12.4rem) !important -} - -.fc { - --fc-page-bg-color: transparent; - --fc-event-text-color: var(--phoenix-body-color) -} - -.fc .fc-button .fc-icon { - line-height: 1rem; - font-size: 1.2em -} - -.fc .fc-scrollgrid { - border-color: var(--phoenix-calendar-border-color) -} - -.fc .fc-timegrid-body { - background-color: var(--phoenix-calendar-bg) -} - -.fc .fc-timegrid-axis-frame { - background-color: var(--phoenix-calendar-bg) -} - -.fc.fc-theme-standard a:not([href]) { - color: inherit -} - -.fc.fc-theme-standard .fc-list,.fc.fc-theme-standard td,.fc.fc-theme-standard th { - border: 1px solid var(--phoenix-calendar-border-color) -} - -.fc.fc-theme-standard .fc-daygrid-day { - background-color: var(--phoenix-calendar-bg) -} - -.fc.fc-theme-standard .fc-daygrid-day.fc-day-other { - opacity: .4 -} - -.fc.fc-theme-standard .fc-daygrid-day.fc-day-other .fc-daygrid-day-top { - opacity: 1 -} - -.fc.fc-theme-standard .fc-daygrid-day.fc-day-fri,.fc.fc-theme-standard .fc-daygrid-day.fc-day-sat { - color: var(--phoenix-warning-500) !important -} - -.fc .fc-col-header { - background-color: var(--phoenix-gray-100) -} - -.fc .fc-col-header th { - border-bottom-width: 1px; - font-weight: 600; - color: var(--phoenix-gray-700) -} - -.fc .fc-col-header-cell-cushion { - text-decoration: none !important; - padding-top: 12px; - padding-bottom: 8px -} - -@media(min-width: 992px) { - .fc .fc-timeGridWeek-view .fc-col-header-cell-cushion { - width:70px - } -} - -.fc .fc-timeGridWeek-view .fc-timegrid-divider { - display: none -} - -.fc .fc-timeGridWeek-view .fc-col-header-cell.fc-day-today .fc-col-header-cell-cushion { - position: relative; - color: var(--phoenix-primary) -} - -@media(min-width: 1200px) { - .fc .fc-timeGridWeek-view .fc-col-header-cell.fc-day-today .fc-col-header-cell-cushion { - color:var(--phoenix-body-color) - } - - .fc .fc-timeGridWeek-view .fc-col-header-cell.fc-day-today .fc-col-header-cell-cushion::after { - content: ""; - position: absolute; - left: -8px; - top: 43%; - width: 0; - height: 0; - border: 4px solid var(--phoenix-primary); - border-radius: 4px - } -} - -.fc .fc-daygrid-day-frame { - border: 2px solid rgba(0,0,0,0); - padding: 2px !important; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.fc .fc-daygrid-day-frame:active { - background-color: var(--phoenix-gray-300) !important -} - -.fc .fc-daygrid-day-top { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - margin-bottom: .25rem -} - -.fc .fc-daygrid-day-number { - width: 1.875rem; - height: 1.875rem; - text-align: center; - text-decoration: none !important; - border-radius: 50%; - line-height: 1.875rem; - padding: 0 !important; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.fc .fc-daygrid-bg-harness { - top: -2px -} - -.fc .fc-daygrid-event { - border-radius: .375rem !important; - margin-top: 0; - margin-bottom: .25rem !important; - padding: .5rem .5rem !important; - font-size: .64rem; - border: 1px solid var(--phoenix-gray-300) !important -} - -.fc .fc-h-event,.fc .fc-daygrid-event { - background-color: var(--phoenix-white) !important -} - -.fc .fc-h-event .fc-event-main,.fc .fc-daygrid-event .fc-event-main { - padding-left: 15px -} - -.fc .fc-h-event .fc-event-main::after,.fc .fc-daygrid-event .fc-event-main::after { - content: ""; - position: absolute; - left: 0px; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - display: inline-block; - margin: 0 4px; - -webkit-box-sizing: content-box; - box-sizing: content-box; - width: 0; - height: 0; - border: 4px solid var(--phoenix-primary); - border-radius: 4px -} - -.fc .fc-h-event .fc-event-time,.fc .fc-h-event .fc-event-title,.fc .fc-daygrid-event .fc-event-time,.fc .fc-daygrid-event .fc-event-title { - font-weight: 600 !important; - line-height: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.fc .fc-event:focus { - -webkit-box-shadow: none; - box-shadow: none -} - -.fc .fc-event:focus::after { - border-radius: .375rem -} - -.fc .fc-event-title { - font-weight: normal !important -} - -.fc .fc-daygrid-event-dot { - border-color: var(--phoenix-gray-300) !important -} - -.fc .fc-daygrid-dot-event { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important -} - -.fc .fc-day-today:not(.fc-popover).fc-timegrid-col { - background-color: rgba(0,0,0,0) !important -} - -.fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-number { - background-color: var(--phoenix-primary) !important; - color: #fff -} - -.fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-number:hover,.fc .fc-day-today:not(.fc-popover) .fc-daygrid-day-number:focus { - background-color: #0550ff !important -} - -.fc.fc-direction-rtl .fc-daygrid-event.fc-event-start,.fc.fc-direction-rtl .fc-daygrid-event.fc-event-end,.fc.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc.fc-direction-ltr .fc-daygrid-event.fc-event-end { - margin-left: 0; - margin-right: 0 -} - -.fc .fc-popover { - border-color: var(--phoenix-gray-200); - -webkit-box-shadow: 0px 2px 4px -2px rgba(36,40,46,.08); - box-shadow: 0px 2px 4px -2px rgba(36,40,46,.08); - background-color: var(--phoenix-white); - z-index: 1000; - border-radius: var(--phoenix-border-radius) -} - -.fc .fc-popover .fc-popover-title { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.fc .fc-popover .fc-daygrid-event { - margin-left: 0 !important; - margin-right: 0 !important; - margin-bottom: 6px !important -} - -.fc .fc-popover-header { - padding-left: 1rem; - padding-right: 1rem; - padding-top: 1rem; - font-size: .875rem; - font-weight: 600; - border-top-left-radius: .5rem; - border-top-right-radius: .5rem; - background: var(--phoenix-popover-header-bg) -} - -.fc .fc-more-popover .fc-popover-body { - padding-left: 1rem; - padding-right: 1rem; - padding-bottom: 1rem -} - -.fc .fc-daygrid-more-link { - display: block; - text-align: center; - color: var(--phoenix-gray-500) !important; - font-size: .64rem -} - -.fc .fc-daygrid-more-link:hover,.fc .fc-daygrid-more-link:focus { - text-decoration: none; - color: var(--phoenix-gray-600) !important -} - -.fc .fc-daygrid-dot-event { - color: #8a94ad !important -} - -.fc .fc-daygrid-dot-event:hover,.fc .fc-daygrid-dot-event:focus { - background-color: var(--phoenix-gray-100) !important -} - -.fc .fc-day:not(.fc-popover) .fc-daygrid-dot-event { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.fc .fc-list-event:hover td { - background-color: unset -} - -.fc .fc-dayGridMonth-view .fc-event-time { - display: none -} - -.fc .fc-timeGridDay-view .fc-scrollgrid-sync-inner { - text-align: left -} - -.fc .fc-timeGridDay-view .fc-daygrid-day-events,.fc .fc-timeGridWeek-view .fc-daygrid-day-events { - margin-bottom: 0 -} - -.fc .fc-timeGridDay-view .fc-v-event .fc-event-main,.fc .fc-timeGridWeek-view .fc-v-event .fc-event-main { - padding-left: 1rem; - color: var(--phoenix-gray-700) -} - -.fc .fc-timeGridDay-view .fc-v-event .fc-event-main:after,.fc .fc-timeGridWeek-view .fc-v-event .fc-event-main:after { - content: ""; - position: absolute; - height: .625rem; - width: .625rem; - border-radius: 50%; - background-color: var(--phoenix-gray-400); - top: .3125rem; - left: 0 -} - -.fc .fc-timeGridDay-view .fc-timegrid-event,.fc .fc-timeGridWeek-view .fc-timegrid-event { - padding: .5rem; - background-color: rgba(0,0,0,0); - border: 0; - border-radius: .5rem -} - -.fc .fc-timeGridDay-view .fc-timegrid-event:hover,.fc .fc-timeGridDay-view .fc-timegrid-event:focus,.fc .fc-timeGridWeek-view .fc-timegrid-event:hover,.fc .fc-timeGridWeek-view .fc-timegrid-event:focus { - background-color: var(--phoenix-gray-200) -} - -.fc .fc-timeGridDay-view .fc-timegrid-slot,.fc .fc-timeGridWeek-view .fc-timegrid-slot { - height: 2rem -} - -.fc .fc-timeGridDay-view .fc-timegrid-slot-lane,.fc .fc-timeGridWeek-view .fc-timegrid-slot-lane { - cursor: pointer -} - -.fc .fc-timeGridDay-view .fc-timegrid-slot-lane:active,.fc .fc-timeGridWeek-view .fc-timegrid-slot-lane:active { - background-color: var(--phoenix-gray-100) -} - -.fc .fc-timeGridDay-view .fc-timegrid-col,.fc .fc-timeGridWeek-view .fc-timegrid-col { - padding: .375rem !important -} - -.fc .fc-list .fc-list-day-cushion { - padding: .5rem 1.25rem; - background-color: var(--fc-button-list-day-cushion) -} - -.fc .fc-list .fc-list-day:not(:first-child) .fc-list-day-cushion { - margin-top: 1.5rem -} - -.fc .fc-list .fc-list-event-time { - padding-left: 1.25rem -} - -.fc .fc-list .fc-list-event-title { - padding-right: 1.25rem -} - -.fc .fc-list-empty { - background-color: var(--phoenix-gray-100) -} - -.fc .fc-list-event-dot { - border-color: var(--phoenix-gray-300) -} - -.fc .fc-timegrid .text-primary .fc-event-main:after { - background-color: #3874ff !important -} - -.fc .text-primary .fc-event-main:after { - background-color: #3874ff !important -} - -.fc .text-primary.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-primary.fc-daygrid-event .fc-event-main { - color: var(--phoenix-primary) !important -} - -.fc .text-primary.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-primary) -} - -.fc .text-primary.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-primary) !important -} - -.fc .fc-timegrid .text-secondary .fc-event-main:after { - background-color: #31374a !important -} - -.fc .text-secondary .fc-event-main:after { - background-color: #31374a !important -} - -.fc .text-secondary.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-secondary.fc-daygrid-event .fc-event-main { - color: var(--phoenix-secondary) !important -} - -.fc .text-secondary.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-secondary) -} - -.fc .text-secondary.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-secondary) !important -} - -.fc .fc-timegrid .text-success .fc-event-main:after { - background-color: #25b003 !important -} - -.fc .text-success .fc-event-main:after { - background-color: #25b003 !important -} - -.fc .text-success.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-success.fc-daygrid-event .fc-event-main { - color: var(--phoenix-success) !important -} - -.fc .text-success.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-success) -} - -.fc .text-success.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-success) !important -} - -.fc .fc-timegrid .text-info .fc-event-main:after { - background-color: #0097eb !important -} - -.fc .text-info .fc-event-main:after { - background-color: #0097eb !important -} - -.fc .text-info.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-info.fc-daygrid-event .fc-event-main { - color: var(--phoenix-info) !important -} - -.fc .text-info.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-info) -} - -.fc .text-info.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-info) !important -} - -.fc .fc-timegrid .text-warning .fc-event-main:after { - background-color: #e5780b !important -} - -.fc .text-warning .fc-event-main:after { - background-color: #e5780b !important -} - -.fc .text-warning.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-warning.fc-daygrid-event .fc-event-main { - color: var(--phoenix-warning) !important -} - -.fc .text-warning.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-warning) -} - -.fc .text-warning.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-warning) !important -} - -.fc .fc-timegrid .text-danger .fc-event-main:after { - background-color: #ed2000 !important -} - -.fc .text-danger .fc-event-main:after { - background-color: #ed2000 !important -} - -.fc .text-danger.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-danger.fc-daygrid-event .fc-event-main { - color: var(--phoenix-danger) !important -} - -.fc .text-danger.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-danger) -} - -.fc .text-danger.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-danger) !important -} - -.fc .fc-timegrid .text-light .fc-event-main:after { - background-color: #eff2f6 !important -} - -.fc .text-light .fc-event-main:after { - background-color: #eff2f6 !important -} - -.fc .text-light.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-light.fc-daygrid-event .fc-event-main { - color: var(--phoenix-light) !important -} - -.fc .text-light.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-light) -} - -.fc .text-light.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-light) !important -} - -.fc .fc-timegrid .text-dark .fc-event-main:after { - background-color: #141824 !important -} - -.fc .text-dark .fc-event-main:after { - background-color: #141824 !important -} - -.fc .text-dark.fc-v-event { - border: 1px solid var(--phoenix-gray-300) !important; - background-color: var(--phoenix-gray-100) !important -} - -.fc .text-dark.fc-daygrid-event .fc-event-main { - color: var(--phoenix-dark) !important -} - -.fc .text-dark.fc-daygrid-event .fc-event-main::after { - border: 4px solid var(--phoenix-dark) -} - -.fc .text-dark.fc-daygrid-event .fc-daygrid-event-dot { - border-color: var(--phoenix-dark) !important -} - -.timeline li { - position: relative; - padding-left: 1.5rem -} - -.timeline li:after { - position: absolute; - content: ""; - height: .625rem; - width: .625rem; - border-radius: 50%; - background: var(--phoenix-gray-200); - left: 0; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%) -} - -.timeline li:not(:last-child):before { - position: absolute; - content: ""; - height: 100%; - width: 1px; - background-color: var(--phoenix-gray-200); - top: 50%; - left: .3125rem -} - -.windows.chrome .fc-scroller { - overflow: hidden auto !important; - overflow: auto -} - -.windows.chrome .fc-scroller::-webkit-scrollbar { - visibility: hidden; - -webkit-appearance: none; - width: 6px; - height: 6px; - background-color: rgba(0,0,0,0) -} - -.windows.chrome .fc-scroller::-webkit-scrollbar-thumb { - visibility: hidden; - border-radius: 3px; - background-color: var(--phoenix-scrollbar-bg) -} - -.windows.chrome .fc-scroller:hover::-webkit-scrollbar,.windows.chrome .fc-scroller:hover::-webkit-scrollbar-thumb,.windows.chrome .fc-scroller:focus::-webkit-scrollbar,.windows.chrome .fc-scroller:focus::-webkit-scrollbar-thumb { - visibility: visible -} - -.windows.firefox .fc-scroller { - overflow: hidden auto !important; - overflow: auto !important; - scrollbar-color: var(--phoenix-scrollbar-bg) rgba(0,0,0,0); - scrollbar-width: thin -} - -.firefox .fc table { - border-collapse: unset -} - -@media(min-width: 768px) { - .fc .fc-daygrid-day-frame { - padding:.375rem !important - } - - .fc .fc-daygrid-more-link { - margin-left: .625rem; - text-align: left; - font-size: .8rem - } - - .fc .fc-daygrid-event { - font-size: .8rem - } -} - -.ie .fc-daygrid-event { - overflow: hidden -} - -.fc .fc-timegrid-axis-frame,.fc-list-event-time { - text-transform: capitalize -} - -[data-fc-view].active-view { - color: var(--phoenix-btn-hover-color); - background-color: var(--phoenix-btn-hover-bg) -} - -.text-smallcaps { - font-variant: small-caps -} - -.text-superscript { - vertical-align: super -} - -.text-word-break { - word-break: break-word -} - -.font-sans-serif { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.font-base { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.fs-error { - font-size: 7rem -} - -@media(min-width: 576px) { - .fs-error { - font-size:10rem - } -} - -.text-justify { - text-align: justify !important -} - -.bg-holder { - position: absolute; - width: 100%; - min-height: 100%; - top: 0; - left: 0; - background-size: cover; - background-position: center; - overflow: hidden; - will-change: transform,opacity,filter; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - background-repeat: no-repeat; - z-index: 0 -} - -.bg-holder.bg-right { - left: auto; - right: 0 -} - -.bg-holder.overlay:before { - position: absolute; - content: ""; - background: rgba(0,0,0,.25); - top: 0; - bottom: 0; - left: 0; - right: 0 -} - -.bg-holder.overlay-0:before { - background: rgba(0,0,0,.7) -} - -.bg-holder.overlay-1:before { - background: rgba(0,0,0,.55) -} - -.bg-holder.overlay-2:before { - background: rgba(0,0,0,.4) -} - -.bg-holder .bg-video { - position: absolute; - display: block; - z-index: -1; - top: 0; - left: 0; - -o-object-fit: cover; - object-fit: cover; - height: 100%; - min-width: 100% -} - -.bg-holder .bg-youtube { - position: absolute !important; - top: 0; - left: 0; - height: 100%; - width: 100% -} - -.bg-fixed { - background-attachment: fixed -} - -.bg-glass { - background-color: rgba(255,255,255,.9) -} - -.bg-card { - background-size: contain; - background-position: right; - border-top-right-radius: .375rem; - border-bottom-right-radius: .375rem -} - -[dir=rtl] .bg-card { - background-position: left; - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1); - border-top-left-radius: .375rem; - border-bottom-left-radius: .375rem -} - -.bg-line-chart-gradient { - background-image: var(--phoenix-line-chart-gradient); - background-position: center -} - -.bg-card-gradient { - background-image: var(--phoenix-card-gradient); - background-position: center -} - -.bg-progress-gradient { - background-image: var(--phoenix-progress-gradient); - background-position: center -} - -.bg-auth-circle-shape,.bg-auth-circle-shape-2 { - display: none -} - -@media(min-width: 992px) { - .bg-auth-circle-shape,.bg-auth-circle-shape-2 { - display:block - } -} - -.bg-auth-circle-shape { - position: absolute; - right: -8.75rem; - top: -5.125rem -} - -.bg-auth-circle-shape-2 { - position: absolute; - left: -6.25rem; - bottom: -2.4375rem -} - -.bg-auth-card-shape { - background-position: 0 100% -} - -@media(min-width: 768px) { - .bg-auth-card-shape { - background-position:0 133% - } -} - -.bg-shape { - position: relative; - overflow: hidden; - background-color: var(--phoenix-bg-shape-bg) -} - -.bg-shape:after,.bg-shape:before { - position: absolute; - content: ""; - border-radius: 50% -} - -.bg-shape:after { - background-image: var(--phoenix-bg-shape-bg-ltd) -} - -.bg-shape:before { - background-image: var(--phoenix-bg-shape-bg-dtl) -} - -.bg-circle-shape:after { - height: 15.625rem; - width: 115%; - left: 32%; - top: -188% -} - -.bg-circle-shape:before { - height: 332%; - width: 45%; - left: -9%; - top: .5625rem -} - -.modal-shape-header:before { - height: 28.9375rem; - width: 155%; - right: 23%; - top: -357% -} - -.modal-shape-header:after { - height: 289%; - width: 45%; - right: -10%; - top: 2.5rem -} - -.showcase-page-gradient { - background: -o-linear-gradient(92.3deg, #024787 -88.88%, rgba(0, 79, 197, 0) 27.93%); - background: linear-gradient(357.7deg, #024787 -88.88%, rgba(0, 79, 197, 0) 27.93%) -} - -.bg-transparent-50 { - background-color: var(--phoenix-transparent-50) -} - -.bg-product-hover { - background-color: rgba(0,0,0,.7) -} - -.overflow-hidden[class*=rounded] { - -webkit-mask-image: radial-gradient(#fff, #000000); - mask-image: radial-gradient(#fff, #000000) -} - -.border-dashed { - --phoenix-border-style: dashed -} - -.container,.product-filter-container,.container-fluid,.container-small-xl,.container-small-lg,.container-small-md,.container-small-sm,.container-sm,.container-md,.container-lg,.container-xl,.container-xxl { - position: relative -} - -.all-0 { - top: 0; - right: 0; - bottom: 0; - left: 0 -} - -.flex-center { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.flex-between-center { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.flex-end-center { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.flex-between-end { - -webkit-box-align: end; - -ms-flex-align: end; - align-items: flex-end; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between -} - -.flex-1 { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.link-primary { - color: var(--phoenix-primary) -} - -.link-primary:hover,.link-primary:focus { - color: var(--phoenix-colored-link-primary-hover-color) -} - -.link-secondary { - color: var(--phoenix-secondary) -} - -.link-secondary:hover,.link-secondary:focus { - color: var(--phoenix-colored-link-secondary-hover-color) -} - -.link-success { - color: var(--phoenix-success) -} - -.link-success:hover,.link-success:focus { - color: var(--phoenix-colored-link-success-hover-color) -} - -.link-info { - color: var(--phoenix-info) -} - -.link-info:hover,.link-info:focus { - color: var(--phoenix-colored-link-info-hover-color) -} - -.link-warning { - color: var(--phoenix-warning) -} - -.link-warning:hover,.link-warning:focus { - color: var(--phoenix-colored-link-warning-hover-color) -} - -.link-danger { - color: var(--phoenix-danger) -} - -.link-danger:hover,.link-danger:focus { - color: var(--phoenix-colored-link-danger-hover-color) -} - -.link-light { - color: var(--phoenix-light) -} - -.link-light:hover,.link-light:focus { - color: var(--phoenix-colored-link-light-hover-color) -} - -.link-dark { - color: var(--phoenix-dark) -} - -.link-dark:hover,.link-dark:focus { - color: var(--phoenix-colored-link-dark-hover-color) -} - -.link-soft { - color: var(--phoenix-soft) !important -} - -.link-soft:hover,.link-soft:focus { - color: var(--phoenix-colored-link-soft-hover-color) !important -} - -.link-100 { - color: var(--phoenix-100) !important -} - -.link-100:hover,.link-100:focus { - color: var(--phoenix-colored-link-100-hover-color) !important -} - -.link-200 { - color: var(--phoenix-200) !important -} - -.link-200:hover,.link-200:focus { - color: var(--phoenix-colored-link-200-hover-color) !important -} - -.link-300 { - color: var(--phoenix-300) !important -} - -.link-300:hover,.link-300:focus { - color: var(--phoenix-colored-link-300-hover-color) !important -} - -.link-400 { - color: var(--phoenix-400) !important -} - -.link-400:hover,.link-400:focus { - color: var(--phoenix-colored-link-400-hover-color) !important -} - -.link-500 { - color: var(--phoenix-500) !important -} - -.link-500:hover,.link-500:focus { - color: var(--phoenix-colored-link-500-hover-color) !important -} - -.link-600 { - color: var(--phoenix-600) !important -} - -.link-600:hover,.link-600:focus { - color: var(--phoenix-colored-link-600-hover-color) !important -} - -.link-700 { - color: var(--phoenix-700) !important -} - -.link-700:hover,.link-700:focus { - color: var(--phoenix-colored-link-700-hover-color) !important -} - -.link-800 { - color: var(--phoenix-800) !important -} - -.link-800:hover,.link-800:focus { - color: var(--phoenix-colored-link-800-hover-color) !important -} - -.link-900 { - color: var(--phoenix-900) !important -} - -.link-900:hover,.link-900:focus { - color: var(--phoenix-colored-link-900-hover-color) !important -} - -.link-1000 { - color: var(--phoenix-1000) !important -} - -.link-1000:hover,.link-1000:focus { - color: var(--phoenix-colored-link-1000-hover-color) !important -} - -.link-1100 { - color: var(--phoenix-1100) !important -} - -.link-1100:hover,.link-1100:focus { - color: var(--phoenix-colored-link-1100-hover-color) !important -} - -h1,.h1 { - font-weight: 800 -} - -h2,.h2 { - font-weight: 800 -} - -h3,.h3 { - font-weight: 800 -} - -.lead { - line-height: 1.4 -} - -.bullet-inside { - list-style-position: inside -} - -.line-clamp-1 { - display: -webkit-box; - -webkit-line-clamp: 1; - -webkit-box-orient: vertical; - overflow: hidden -} - -.line-clamp-2 { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden -} - -.line-clamp-3 { - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; - overflow: hidden -} - -.alert { - --phoenix-alert-bg: transparent; - --phoenix-alert-padding-x: 1.5rem; - --phoenix-alert-padding-y: 1.5rem; - --phoenix-alert-margin-bottom: 1rem; - --phoenix-alert-color: inherit; - --phoenix-alert-border-color: transparent; - --phoenix-alert-border: 1px solid var(--phoenix-alert-border-color); - --phoenix-alert-border-radius: 0.5rem; - position: relative; - padding: var(--phoenix-alert-padding-y) var(--phoenix-alert-padding-x); - margin-bottom: var(--phoenix-alert-margin-bottom); - color: var(--phoenix-alert-color); - background-color: var(--phoenix-alert-bg); - border: var(--phoenix-alert-border); - border-radius: var(--phoenix-alert-border-radius, 0) -} - -.alert-heading { - color: inherit -} - -.alert-link { - font-weight: 700 -} - -.alert-dismissible { - padding-right: 4.5rem -} - -.alert-dismissible .btn-close { - position: absolute; - top: 0; - right: 0; - z-index: 2; - padding: 1.875rem 1.5rem -} - -.alert-soft-primary { - --phoenix-alert-color: #003cc7; - --phoenix-alert-bg: #f5f8ff; - --phoenix-alert-border-color: #f5f8ff -} - -.alert-soft-primary .alert-link { - color: #00309f -} - -.alert-soft-secondary { - --phoenix-alert-color: #141824; - --phoenix-alert-bg: #f5f7fa; - --phoenix-alert-border-color: #f5f7fa -} - -.alert-soft-secondary .alert-link { - color: #10131d -} - -.alert-soft-success { - --phoenix-alert-color: #1c6c09; - --phoenix-alert-bg: #f0fdec; - --phoenix-alert-border-color: #f0fdec -} - -.alert-soft-success .alert-link { - color: #165607 -} - -.alert-soft-info { - --phoenix-alert-color: #005585; - --phoenix-alert-bg: #f0faff; - --phoenix-alert-border-color: #f0faff -} - -.alert-soft-info .alert-link { - color: #00446a -} - -.alert-soft-warning { - --phoenix-alert-color: #bc3803; - --phoenix-alert-bg: #fff6e0; - --phoenix-alert-border-color: #fff6e0 -} - -.alert-soft-warning .alert-link { - color: #962d02 -} - -.alert-soft-danger { - --phoenix-alert-color: #b81800; - --phoenix-alert-bg: #ffedeb; - --phoenix-alert-border-color: #ffedeb -} - -.alert-soft-danger .alert-link { - color: #931300 -} - -.alert-outline-primary { - --phoenix-alert-color: #3874ff; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #3874ff -} - -.alert-outline-primary .alert-link { - color: #2d5dcc -} - -.alert-outline-secondary { - --phoenix-alert-color: #31374a; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #31374a -} - -.alert-outline-secondary .alert-link { - color: #272c3b -} - -.alert-outline-success { - --phoenix-alert-color: #25b003; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #25b003 -} - -.alert-outline-success .alert-link { - color: #1e8d02 -} - -.alert-outline-info { - --phoenix-alert-color: #0097eb; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #0097eb -} - -.alert-outline-info .alert-link { - color: #0079bc -} - -.alert-outline-warning { - --phoenix-alert-color: #e5780b; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #e5780b -} - -.alert-outline-warning .alert-link { - color: #b76009 -} - -.alert-outline-danger { - --phoenix-alert-color: #ed2000; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #ed2000 -} - -.alert-outline-danger .alert-link { - color: #be1a00 -} - -.alert-outline-light { - --phoenix-alert-color: #eff2f6; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #eff2f6 -} - -.alert-outline-light .alert-link { - color: #bfc2c5 -} - -.alert-outline-dark { - --phoenix-alert-color: #141824; - --phoenix-alert-bg: transparent; - --phoenix-alert-border-color: #141824 -} - -.alert-outline-dark .alert-link { - color: #10131d -} - -.alert-phoenix-primary { - --phoenix-alert-color: #3874ff; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-primary .alert-link { - color: #2d5dcc -} - -.alert-phoenix-secondary { - --phoenix-alert-color: #31374a; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-secondary .alert-link { - color: #272c3b -} - -.alert-phoenix-success { - --phoenix-alert-color: #25b003; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-success .alert-link { - color: #1e8d02 -} - -.alert-phoenix-info { - --phoenix-alert-color: #0097eb; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-info .alert-link { - color: #0079bc -} - -.alert-phoenix-warning { - --phoenix-alert-color: #e5780b; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-warning .alert-link { - color: #b76009 -} - -.alert-phoenix-danger { - --phoenix-alert-color: #ed2000; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-danger .alert-link { - color: #be1a00 -} - -.alert-phoenix-light { - --phoenix-alert-color: #eff2f6; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-light .alert-link { - color: #bfc2c5 -} - -.alert-phoenix-dark { - --phoenix-alert-color: #141824; - --phoenix-alert-bg: var(--phoenix-white); - --phoenix-alert-border-color: var(--phoenix-gray-300) -} - -.alert-phoenix-dark .alert-link { - color: #10131d -} - -.alert-primary { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #3874ff; - --phoenix-alert-border-color: #3874ff -} - -.alert-primary .alert-link { - color: #a2a6b1 -} - -.alert-secondary { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #31374a; - --phoenix-alert-border-color: #31374a -} - -.alert-secondary .alert-link { - color: #a2a6b1 -} - -.alert-success { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #25b003; - --phoenix-alert-border-color: #25b003 -} - -.alert-success .alert-link { - color: #a2a6b1 -} - -.alert-info { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #0097eb; - --phoenix-alert-border-color: #0097eb -} - -.alert-info .alert-link { - color: #a2a6b1 -} - -.alert-warning { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #e5780b; - --phoenix-alert-border-color: #e5780b -} - -.alert-warning .alert-link { - color: #a2a6b1 -} - -.alert-danger { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #ed2000; - --phoenix-alert-border-color: #ed2000 -} - -.alert-danger .alert-link { - color: #a2a6b1 -} - -.alert-light { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #eff2f6; - --phoenix-alert-border-color: #eff2f6 -} - -.alert-light .alert-link { - color: #a2a6b1 -} - -.alert-dark { - --phoenix-alert-color: #cbd0dd; - --phoenix-alert-bg: #141824; - --phoenix-alert-border-color: #141824 -} - -.alert-dark .alert-link { - color: #a2a6b1 -} - -.nav-tabs .nav-link,.nav-underline .nav-link { - padding: .5rem; - margin-bottom: -2px; - font-weight: 700; - font-size: .8rem; - border-top-left-radius: .375rem; - border-top-right-radius: .375rem -} - -.nav-tabs .nav-link.disabled,.nav-tabs [data-list] li.disabled button.nav-link,[data-list] li.disabled .nav-tabs button.nav-link,.nav-tabs .table-list li.disabled button.nav-link,.table-list li.disabled .nav-tabs button.nav-link,.nav-underline .nav-link.disabled,.nav-underline [data-list] li.disabled button.nav-link,[data-list] li.disabled .nav-underline button.nav-link,.nav-underline .table-list li.disabled button.nav-link,.table-list li.disabled .nav-underline button.nav-link { - color: var(--phoenix-black); - background-color: rgba(0,0,0,0); - border-color: rgba(0,0,0,0) -} - -.nav-tabs { - border-bottom: 0px solid rgba(0,0,0,0) -} - -.nav-tabs .nav-link { - border: none; - padding: .5rem .5rem; - color: var(--phoenix-primary) -} - -.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link { - color: var(--phoenix-gray-1100); - background-color: rgba(0,0,0,0) -} - -.echart-tab-example .nav-link { - color: var(--phoenix-gray-1100) -} - -.echart-tab-example .nav-link.active { - color: var(--phoenix-primary) -} - -.nav-phoenix-pills { - background: var(--phoenix-gray-100); - border: 1px solid var(--phoenix-gray-300); - border-radius: .5rem -} - -.nav-phoenix-pills .nav-item { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.nav-phoenix-pills .nav-item .nav-link { - color: var(--phoenix-gray-600); - font-weight: 600; - line-height: 1.2; - text-align: center; - padding-top: .25rem; - padding-bottom: .25rem -} - -.nav-phoenix-pills .nav-item .nav-link.active { - background: var(--phoenix-white); - color: var(--phoenix-primary); - border-left: 1px solid var(--phoenix-gray-300); - border-right: 1px solid var(--phoenix-gray-300); - border-radius: .5rem -} - -.nav-phoenix-pills .nav-item:last-child .nav-link.active { - border-right: none -} - -.nav-phoenix-pills .nav-item:first-child .nav-link.active { - border-left: none -} - -.nav-underline .nav-item:first-child .nav-link { - padding-left: 0 -} - -.nav-underline .nav-item:last-child .nav-link { - padding-right: 0 -} - -.nav-underline .nav-link { - border: var(--phoenix-border-color); - color: var(--phoenix-gray-900) -} - -.nav-underline .nav-link.active,.nav-underline .nav-item.show .nav-link { - color: var(--phoenix-primary); - background-color: rgba(0,0,0,0); - border-bottom: 2px solid var(--phoenix-primary) -} - -.nav-links .nav-link { - font-weight: 700; - font-size: .8rem -} - -.nav-links .nav-link:hover span:first-child { - text-decoration: underline !important -} - -.nav-links .nav-link.active { - color: var(--phoenix-gray-1100) -} - -.faq-category-tab { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - position: sticky; - top: var(--phoenix-navbar-top-height); - background-color: var(--phoenix-gray-soft); - z-index: 1020 -} - -.faq-category-tab .nav-item { - -ms-flex-preferred-size: 50%; - flex-basis: 50% -} - -.faq-category-tab .nav-link { - color: var(--phoenix-gray-400); - width: 100% -} - -.faq-category-tab .nav-link.active { - color: var(--phoenix-primary); - border-bottom: 3px solid var(--phoenix-primary) -} - -.faq-subcategory-tab .nav-link { - border: 1px solid var(--phoenix-gray-200) -} - -.faq-subcategory-tab .nav-link:hover { - border: 1px solid var(--phoenix-gray-400) -} - -.faq-subcategory-tab .nav-link.active { - border: 1px solid var(--phoenix-primary) !important -} - -.faq-subcategory-tab .nav-link.active .category-icon { - color: var(--phoenix-primary) !important -} - -.faq-subcategory-content { - position: sticky; - top: 4rem -} - -.faq-subcategory-content .empty-header { - height: 60px; - position: sticky; - top: var(--phoenix-navbar-top-height); - background-color: var(--phoenix-gray-soft) -} - -.page-item { - margin: .125rem -} - -.page-link { - padding: .5rem .75rem; - font-size: .8rem; - font-weight: 700; - border-radius: .375rem; - line-height: 1.2 -} - -.page-link.disabled,[data-list] li.disabled button.page-link,.table-list li.disabled button.page-link { - color: var(--phoenix-gray-400) -} - -.progress-stack .progress-bar { - margin-left: 1px; - margin-right: 1px -} - -.progress-stack .progress-bar:first-child { - margin-left: 0 -} - -.progress-stack .progress-bar:last-child { - margin-right: 0 -} - -.circle-progress-svg { - -webkit-transform: rotate(170deg); - -ms-transform: rotate(170deg); - transform: rotate(170deg) -} - -[dir=rtl] .circle-progress-svg { - -webkit-transform: rotate(-170deg); - -ms-transform: rotate(-170deg); - transform: rotate(-170deg) -} - -.circle-progress-svg .progress-bar-rail { - stroke-dasharray: 340px; - stroke-dashoffset: 150; - stroke: var(--phoenix-gray-200) -} - -.circle-progress-svg .progress-bar-top { - stroke-dasharray: 340px; - stroke-dashoffset: 340; - -webkit-animation: strokeAnimation 1s ease-in-out forwards; - animation: strokeAnimation 1s ease-in-out forwards -} - -@-webkit-keyframes strokeAnimation { - to { - stroke-dashoffset: calc(340px - 188px*var(--phoenix-circle-progress-bar)/100) - } -} - -@keyframes strokeAnimation { - to { - stroke-dashoffset: calc(340px - 188px*var(--phoenix-circle-progress-bar)/100) - } -} - -.toast { - padding: .5rem 1.5rem -} - -.toast .toast-header .btn-close { - margin-right: 0 -} - -.toast .toast-body { - padding: 1rem 0 -} - -.tooltip-light .tooltip-inner { - background-color: var(--phoenix-white) !important -} - -.form-label { - padding-left: 1rem; - line-height: 1.2; - text-transform: uppercase; - margin-bottom: 0 -} - -.form-check .form-label { - padding-left: 0 !important -} - -.form-control.form-control-underlined { - border: none; - border-bottom: 1px solid; - border-color: var(--phoenix-input-border-color); - border-radius: 0; - padding: .5rem 0 !important; - -webkit-box-shadow: none; - box-shadow: none -} - -.form-control.form-control-underlined:focus { - border-color: var(--phoenix-primary) !important -} - -.form-control::file-selector-button { - background-color: var(--phoenix-input-group-addon-bg) !important -} - -.form-control:disabled::file-selector-button { - background-color: var(--phoenix-input-disabled-group-addon-bg) !important; - color: var(--phoenix-input-disabled-group-addon-color) -} - -.form-floating>label { - color: var(--phoenix-gray-800); - font-weight: 700; - font-size: .64rem; - text-transform: uppercase -} - -.form-floating .form-control-underlined+label { - padding: 0 -} - -.form-check-label { - font-weight: 600; - font-size: .8rem -} - -.form-check-light .form-check-input:checked { - background-color: #fff; - border-color: #9fa6bc -} - -.form-check-light .form-check-input:checked[type=checkbox] { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%239fa6bc' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e") -} - -.form-check-lg { - padding-left: 2rem -} - -.form-check-lg .form-check-input { - width: 1.5rem; - height: 1.5rem; - margin-left: -2rem -} - -.form-switch .form-check-input { - border: none; - background-color: var(--phoenix-gray-400) -} - -.form-switch .form-check-input:checked { - background-color: #3874ff -} - -.form-switch-lg { - padding-left: 3.5rem -} - -.form-switch-lg .form-check-input { - width: 3rem; - height: 1.5rem; - margin-left: -3.5rem -} - -.form-icon-container { - position: relative -} - -.form-icon-container .form-icon-input,.form-icon-container .form-icon-label { - padding-left: 2.5rem -} - -.form-icon-container .form-icon { - position: absolute; - top: 12px; - left: 1rem -} - -.form-icon-container .form-floating .form-icon-input { - padding-left: 35px -} - -.form-icon-container .form-floating+.form-icon { - top: 1.0625rem -} - -.form-check-input,.form-select { - -moz-appearance: none; - appearance: none; - -webkit-appearance: none -} - -.input-spin-none::-webkit-outer-spin-button,.input-spin-none::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0 -} - -.input-spin-none[type=number] { - -moz-appearance: textfield -} - -.form-check-line-through+label { - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.form-check-line-through:checked+label { - color: var(--phoenix-gray-500); - text-decoration: line-through -} - -.number-arrows-none::-webkit-outer-spin-button,.number-arrows-none::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0 -} - -.inventory-attributes input[type=date]::-webkit-calendar-picker-indicator { - background-image: none -} - -.input-group .input-group-text { - background-color: var(--phoenix-input-group-addon-bg) !important -} - -.form-check-input-todolist:checked+div label { - color: var(--phoenix-gray-500); - text-decoration: line-through -} - -.dark .navbar-dark.light .form-control { - background-color: #141824; - border-color: #373e53 -} - -html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height)) -} - -@media(min-width: 1540px) { - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-xxl { - height:calc(100vh - var(--phoenix-navbar-top-height)) - } - - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-xxl .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) - } -} - -@media(min-width: 1200px) { - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-xl { - height:calc(100vh - var(--phoenix-navbar-top-height)) - } - - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-xl .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) - } -} - -@media(min-width: 992px) { - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-lg { - height:calc(100vh - var(--phoenix-navbar-top-height)) - } - - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-lg .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) - } -} - -@media(min-width: 768px) { - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-md { - height:calc(100vh - var(--phoenix-navbar-top-height)) - } - - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-md .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) - } -} - -@media(min-width: 576px) { - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-sm { - height:calc(100vh - var(--phoenix-navbar-top-height)) - } - - html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-sm .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) - } -} - -html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-xs { - height: calc(100vh - var(--phoenix-navbar-top-height)) -} - -html:not(.navbar-vertical-collapsed) .navbar-vertical.navbar-expand-xs .navbar-vertical-content { - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) -} - -.navbar-vertical { - position: fixed; - display: inline-block; - z-index: 1020; - top: var(--phoenix-navbar-top-height); - padding: 0; - width: 100vw; - background: var(--phoenix-navbar-vertical-bg-color) -} - -.navbar-vertical .navbar-vertical-line { - display: none -} - -.navbar-vertical+.navbar-top .navbar-logo { - height: var(--phoenix-navbar-top-height)0.0625rem -} - -.navbar-vertical+.navbar-top .navbar-toggler { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-left: -0.5rem -} - -@media(min-width: 992px) { - .navbar-vertical+.navbar-top .navbar-logo { - width:15.875rem - } -} - -.navbar-vertical .navbar-collapse.collapsing .navbar-vertical-content,.navbar-vertical .navbar-collapse.show .navbar-vertical-content { - max-height: calc(100vh - var(--phoenix-navbar-top-height)) -} - -.navbar-vertical+.navbar .navbar-vertical-toggle { - display: none -} - -.navbar-vertical .navbar-vertical-content { - padding: 1rem 0; - overflow-y: auto -} - -.navbar-vertical .navbar-vertical-content .navbar-vertical-label { - text-transform: uppercase; - font-weight: 700; - font-size: .64rem; - color: var(--phoenix-navbar-vertical-label-color); - margin-bottom: .5rem; - margin-top: 1.5rem; - padding-left: 2rem -} - -.navbar-vertical .navbar-vertical-content .navbar-nav { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - font-size: .8rem; - font-weight: 600 -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav-link { - word-break: break-word; - line-height: 1.188rem; - padding-left: 1.5rem; - white-space: nowrap; - color: var(--phoenix-navbar-vertical-link-color) -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: .75rem -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav-link:hover { - color: var(--phoenix-navbar-vertical-link-hover-color) -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav-link.active { - color: var(--phoenix-navbar-vertical-link-active-color) -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav-link.nav-link-disable { - color: var(--phoenix-navbar-vertical-link-disable-color) -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - font-size: .8125rem -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav .nav-link { - padding: .25rem .5rem; - padding-left: 3.125rem -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 3.875rem -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 4.625rem -} - -.navbar-vertical .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.25rem -} - -.navbar-vertical .navbar-vertical-content .nav-link-icon { - margin-right: .625rem; - min-width: 16px !important; - text-align: center -} - -.navbar-vertical .navbar-vertical-content .nav-link-text { - padding-top: .125rem -} - -.navbar-vertical .nav-item-wrapper:has(.active) .dropdown-indicator.label-1.collapsed .nav-link-text,.navbar-vertical .nav-item-wrapper:has(.active) .dropdown-indicator.label-1.collapsed .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) -} - -.navbar-vertical .nav-item-wrapper:has(.active) .nav-item:has(.active) .dropdown-indicator.collapsed .nav-link-text,.navbar-vertical .nav-item-wrapper:has(.active) .nav-item:has(.active) .dropdown-indicator.collapsed .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) -} - -.navbar-vertical .dropdown-indicator { - position: relative -} - -.navbar-vertical .dropdown-indicator .dropdown-indicator-icon { - height: 1rem; - width: 1rem; - min-width: 1rem; - color: var(--phoenix-navbar-vertical-dropdown-indicator-color); - margin-left: -0.25rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.navbar-vertical .dropdown-indicator .dropdown-indicator-icon .fa-caret-right { - -webkit-transform: scale(0.8); - -ms-transform: scale(0.8); - transform: scale(0.8); - -webkit-transition: -webkit-transform .2s ease; - transition: -webkit-transform .2s ease; - -o-transition: transform .2s ease; - transition: transform .2s ease; - transition: transform .2s ease, -webkit-transform .2s ease -} - -[dir=rtl] .navbar-vertical .dropdown-indicator .dropdown-indicator-icon .fa-caret-right { - -webkit-transform: scale(0.8) rotate(180deg); - -ms-transform: scale(0.8) rotate(180deg); - transform: scale(0.8) rotate(180deg) -} - -.navbar-vertical .dropdown-indicator[aria-expanded=true] .dropdown-indicator-icon .fa-caret-right { - -webkit-transform: rotate(90deg) scale(0.8); - -ms-transform: rotate(90deg) scale(0.8); - transform: rotate(90deg) scale(0.8) -} - -[dir=rtl] .navbar-vertical .dropdown-indicator[aria-expanded=true] .dropdown-indicator-icon .fa-caret-right { - -webkit-transform: rotate(-90deg) scale(0.8); - -ms-transform: rotate(-90deg) scale(0.8); - transform: rotate(-90deg) scale(0.8) -} - -.navbar-vertical .navbar-vertical-footer { - position: fixed; - width: 15.875rem; - height: 4rem; - display: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - bottom: 0; - border-top: 1px solid var(--phoenix-navbar-footer-border-color); - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease -} - -.navbar-vertical .navbar-vertical-footer .btn,.navbar-vertical .navbar-vertical-footer [data-list] .page,[data-list] .navbar-vertical .navbar-vertical-footer .page,.navbar-vertical .navbar-vertical-footer .table-list .page,.table-list .navbar-vertical .navbar-vertical-footer .page,.navbar-vertical .navbar-vertical-footer .tox .tox-button,.tox .navbar-vertical .navbar-vertical-footer .tox-button,.navbar-vertical .navbar-vertical-footer .tox .tox-button-secondary,.tox .navbar-vertical .navbar-vertical-footer .tox-button-secondary,.navbar-vertical .navbar-vertical-footer .tox .tox-dialog__footer .tox-button--secondary,.tox .tox-dialog__footer .navbar-vertical .navbar-vertical-footer .tox-button--secondary,.navbar-vertical .navbar-vertical-footer .google-map-control-btn .zoomIn,.google-map-control-btn .navbar-vertical .navbar-vertical-footer .zoomIn,.navbar-vertical .navbar-vertical-footer .google-map-control-btn .zoomOut,.google-map-control-btn .navbar-vertical .navbar-vertical-footer .zoomOut { - color: var(--phoenix-navbar-vertical-link-color); - text-decoration: none -} - -.navbar-vertical .navbar-vertical-footer .btn .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer [data-list] .page .navbar-vertical-footer-icon,[data-list] .navbar-vertical .navbar-vertical-footer .page .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer .table-list .page .navbar-vertical-footer-icon,.table-list .navbar-vertical .navbar-vertical-footer .page .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer .tox .tox-button .navbar-vertical-footer-icon,.tox .navbar-vertical .navbar-vertical-footer .tox-button .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer .tox .tox-button-secondary .navbar-vertical-footer-icon,.tox .navbar-vertical .navbar-vertical-footer .tox-button-secondary .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer .tox .tox-dialog__footer .tox-button--secondary .navbar-vertical-footer-icon,.tox .tox-dialog__footer .navbar-vertical .navbar-vertical-footer .tox-button--secondary .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer .google-map-control-btn .zoomIn .navbar-vertical-footer-icon,.google-map-control-btn .navbar-vertical .navbar-vertical-footer .zoomIn .navbar-vertical-footer-icon,.navbar-vertical .navbar-vertical-footer .google-map-control-btn .zoomOut .navbar-vertical-footer-icon,.google-map-control-btn .navbar-vertical .navbar-vertical-footer .zoomOut .navbar-vertical-footer-icon { - margin-right: .6125rem -} - -.navbar-vertical .navbar-vertical-footer .btn:hover,.navbar-vertical .navbar-vertical-footer [data-list] .page:hover,[data-list] .navbar-vertical .navbar-vertical-footer .page:hover,.navbar-vertical .navbar-vertical-footer .table-list .page:hover,.table-list .navbar-vertical .navbar-vertical-footer .page:hover,.navbar-vertical .navbar-vertical-footer .tox .tox-button:hover,.tox .navbar-vertical .navbar-vertical-footer .tox-button:hover,.navbar-vertical .navbar-vertical-footer .tox .tox-button-secondary:hover,.tox .navbar-vertical .navbar-vertical-footer .tox-button-secondary:hover,.navbar-vertical .navbar-vertical-footer .tox .tox-dialog__footer .tox-button--secondary:hover,.tox .tox-dialog__footer .navbar-vertical .navbar-vertical-footer .tox-button--secondary:hover,.navbar-vertical .navbar-vertical-footer .google-map-control-btn .zoomIn:hover,.google-map-control-btn .navbar-vertical .navbar-vertical-footer .zoomIn:hover,.navbar-vertical .navbar-vertical-footer .google-map-control-btn .zoomOut:hover,.google-map-control-btn .navbar-vertical .navbar-vertical-footer .zoomOut:hover { - color: var(--phoenix-navbar-vertical-link-hover-color) -} - -@media(min-width: 1540px) { - .navbar-vertical.navbar-expand-xxl { - width:15.875rem; - border-right: 1px solid var(--phoenix-navbar-vertical-border-color); - margin: 0; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical.navbar-expand-xxl+.navbar .navbar-vertical-toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer .uil-arrow-from-right { - display: none - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer .uil-left-arrow-to-left { - display: inline - } - - .navbar-vertical.navbar-expand-xxl .navbar-collapse { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content { - width: 100% - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav-link { - padding-top: .35rem; - padding-bottom: .35rem; - padding-left: 1.75rem; - margin-left: .75rem; - margin-right: .75rem; - border-radius: .5rem - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: 1rem - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav .nav-link { - padding-left: 3.3125rem; - scroll-margin-top: 200px - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav .nav-link .nav-link-text { - padding-left: 15px - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav .nav-link .dropdown-indicator-icon+.nav-link-text { - padding-left: 3px - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 4.375rem - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 5.125rem - } - - .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.875rem - } - - .navbar-vertical.navbar-expand-xxl~.navbar-top { - padding-right: 2.5rem - } - - .navbar-vertical.navbar-expand-xxl~.navbar-top .navbar-toggler { - display: none - } - - .navbar-vertical.navbar-expand-xxl~.navbar-top .navbar-logo { - position: relative; - background: rgba(0,0,0,0) - } - - .navbar-vertical.navbar-expand-xxl~.navbar-top~.content { - padding-left: 2.5rem; - padding-right: 2.5rem; - margin-left: 15.875rem - } - - .navbar-vertical.navbar-expand-xxl~.content .footer { - padding-left: calc(var(--phoenix-navbar-vertical-width) + 2.5rem) - } -} - -@media(min-width: 1200px) { - .navbar-vertical.navbar-expand-xl { - width:15.875rem; - border-right: 1px solid var(--phoenix-navbar-vertical-border-color); - margin: 0; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical.navbar-expand-xl+.navbar .navbar-vertical-toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-footer .uil-arrow-from-right { - display: none - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-footer .uil-left-arrow-to-left { - display: inline - } - - .navbar-vertical.navbar-expand-xl .navbar-collapse { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content { - width: 100% - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav-link { - padding-top: .35rem; - padding-bottom: .35rem; - padding-left: 1.75rem; - margin-left: .75rem; - margin-right: .75rem; - border-radius: .5rem - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: 1rem - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav .nav-link { - padding-left: 3.3125rem; - scroll-margin-top: 200px - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav .nav-link .nav-link-text { - padding-left: 15px - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav .nav-link .dropdown-indicator-icon+.nav-link-text { - padding-left: 3px - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 4.375rem - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 5.125rem - } - - .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.875rem - } - - .navbar-vertical.navbar-expand-xl~.navbar-top { - padding-right: 2.5rem - } - - .navbar-vertical.navbar-expand-xl~.navbar-top .navbar-toggler { - display: none - } - - .navbar-vertical.navbar-expand-xl~.navbar-top .navbar-logo { - position: relative; - background: rgba(0,0,0,0) - } - - .navbar-vertical.navbar-expand-xl~.navbar-top~.content { - padding-left: 2.5rem; - padding-right: 2.5rem; - margin-left: 15.875rem - } - - .navbar-vertical.navbar-expand-xl~.content .footer { - padding-left: calc(var(--phoenix-navbar-vertical-width) + 2.5rem) - } -} - -@media(min-width: 992px) { - .navbar-vertical.navbar-expand-lg { - width:15.875rem; - border-right: 1px solid var(--phoenix-navbar-vertical-border-color); - margin: 0; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical.navbar-expand-lg+.navbar .navbar-vertical-toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-footer .uil-arrow-from-right { - display: none - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-footer .uil-left-arrow-to-left { - display: inline - } - - .navbar-vertical.navbar-expand-lg .navbar-collapse { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content { - width: 100% - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav-link { - padding-top: .35rem; - padding-bottom: .35rem; - padding-left: 1.75rem; - margin-left: .75rem; - margin-right: .75rem; - border-radius: .5rem - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: 1rem - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav .nav-link { - padding-left: 3.3125rem; - scroll-margin-top: 200px - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav .nav-link .nav-link-text { - padding-left: 15px - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav .nav-link .dropdown-indicator-icon+.nav-link-text { - padding-left: 3px - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 4.375rem - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 5.125rem - } - - .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.875rem - } - - .navbar-vertical.navbar-expand-lg~.navbar-top { - padding-right: 2.5rem - } - - .navbar-vertical.navbar-expand-lg~.navbar-top .navbar-toggler { - display: none - } - - .navbar-vertical.navbar-expand-lg~.navbar-top .navbar-logo { - position: relative; - background: rgba(0,0,0,0) - } - - .navbar-vertical.navbar-expand-lg~.navbar-top~.content { - padding-left: 2.5rem; - padding-right: 2.5rem; - margin-left: 15.875rem - } - - .navbar-vertical.navbar-expand-lg~.content .footer { - padding-left: calc(var(--phoenix-navbar-vertical-width) + 2.5rem) - } -} - -@media(min-width: 768px) { - .navbar-vertical.navbar-expand-md { - width:15.875rem; - border-right: 1px solid var(--phoenix-navbar-vertical-border-color); - margin: 0; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical.navbar-expand-md+.navbar .navbar-vertical-toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-footer .uil-arrow-from-right { - display: none - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-footer .uil-left-arrow-to-left { - display: inline - } - - .navbar-vertical.navbar-expand-md .navbar-collapse { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content { - width: 100% - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav-link { - padding-top: .35rem; - padding-bottom: .35rem; - padding-left: 1.75rem; - margin-left: .75rem; - margin-right: .75rem; - border-radius: .5rem - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: 1rem - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav .nav-link { - padding-left: 3.3125rem; - scroll-margin-top: 200px - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav .nav-link .nav-link-text { - padding-left: 15px - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav .nav-link .dropdown-indicator-icon+.nav-link-text { - padding-left: 3px - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 4.375rem - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 5.125rem - } - - .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.875rem - } - - .navbar-vertical.navbar-expand-md~.navbar-top { - padding-right: 2.5rem - } - - .navbar-vertical.navbar-expand-md~.navbar-top .navbar-toggler { - display: none - } - - .navbar-vertical.navbar-expand-md~.navbar-top .navbar-logo { - position: relative; - background: rgba(0,0,0,0) - } - - .navbar-vertical.navbar-expand-md~.navbar-top~.content { - padding-left: 2.5rem; - padding-right: 2.5rem; - margin-left: 15.875rem - } - - .navbar-vertical.navbar-expand-md~.content .footer { - padding-left: calc(var(--phoenix-navbar-vertical-width) + 2.5rem) - } -} - -@media(min-width: 576px) { - .navbar-vertical.navbar-expand-sm { - width:15.875rem; - border-right: 1px solid var(--phoenix-navbar-vertical-border-color); - margin: 0; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical.navbar-expand-sm+.navbar .navbar-vertical-toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-footer .uil-arrow-from-right { - display: none - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-footer .uil-left-arrow-to-left { - display: inline - } - - .navbar-vertical.navbar-expand-sm .navbar-collapse { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content { - width: 100% - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav-link { - padding-top: .35rem; - padding-bottom: .35rem; - padding-left: 1.75rem; - margin-left: .75rem; - margin-right: .75rem; - border-radius: .5rem - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: 1rem - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav .nav-link { - padding-left: 3.3125rem; - scroll-margin-top: 200px - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav .nav-link .nav-link-text { - padding-left: 15px - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav .nav-link .dropdown-indicator-icon+.nav-link-text { - padding-left: 3px - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 4.375rem - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 5.125rem - } - - .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.875rem - } - - .navbar-vertical.navbar-expand-sm~.navbar-top { - padding-right: 2.5rem - } - - .navbar-vertical.navbar-expand-sm~.navbar-top .navbar-toggler { - display: none - } - - .navbar-vertical.navbar-expand-sm~.navbar-top .navbar-logo { - position: relative; - background: rgba(0,0,0,0) - } - - .navbar-vertical.navbar-expand-sm~.navbar-top~.content { - padding-left: 2.5rem; - padding-right: 2.5rem; - margin-left: 15.875rem - } - - .navbar-vertical.navbar-expand-sm~.content .footer { - padding-left: calc(var(--phoenix-navbar-vertical-width) + 2.5rem) - } -} - -.navbar-vertical.navbar-expand-xs { - width: 15.875rem; - border-right: 1px solid var(--phoenix-navbar-vertical-border-color); - margin: 0; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease -} - -.navbar-vertical.navbar-expand-xs+.navbar .navbar-vertical-toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-footer .uil-arrow-from-right { - display: none -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-footer .uil-left-arrow-to-left { - display: inline -} - -.navbar-vertical.navbar-expand-xs .navbar-collapse { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content { - width: 100% -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav-link { - padding-top: .35rem; - padding-bottom: .35rem; - padding-left: 1.75rem; - margin-left: .75rem; - margin-right: .75rem; - border-radius: .5rem -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav-link.dropdown-indicator { - padding-left: 1rem -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav .nav-link { - padding-left: 3.3125rem; - scroll-margin-top: 200px -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav .nav-link .nav-link-text { - padding-left: 15px -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav .nav-link .dropdown-indicator-icon+.nav-link-text { - padding-left: 3px -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav .nav .nav-link { - padding-left: 4.375rem -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav .nav .nav .nav-link { - padding-left: 5.125rem -} - -.navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav .nav .nav .nav .nav-link { - padding-left: 5.875rem -} - -.navbar-vertical.navbar-expand-xs~.navbar-top { - padding-right: 2.5rem -} - -.navbar-vertical.navbar-expand-xs~.navbar-top .navbar-toggler { - display: none -} - -.navbar-vertical.navbar-expand-xs~.navbar-top .navbar-logo { - position: relative; - background: rgba(0,0,0,0) -} - -.navbar-vertical.navbar-expand-xs~.navbar-top~.content { - padding-left: 2.5rem; - padding-right: 2.5rem; - margin-left: 15.875rem -} - -.navbar-vertical.navbar-expand-xs~.content .footer { - padding-left: calc(var(--phoenix-navbar-vertical-width) + 2.5rem) -} - -.navbar-vertical .new-page-indicator { - margin-top: -10px -} - -@media(min-width: 1540px) { - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl { - position:absolute; - top: 0; - height: auto; - min-height: 100%; - padding-top: var(--phoenix-navbar-top-height); - padding-bottom: 4rem; - width: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-line { - display: block; - margin-right: 1rem; - margin-left: 1rem; - color: var(--phoenix-navbar-vertical-hr-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer { - bottom: 0; - width: calc(4rem - 1px); - background-color: var(--phoenix-navbar-vertical-bg-color); - padding-left: 0rem !important; - padding-right: 0rem !important; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer .uil-arrow-from-right { - display: inline - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer .uil-left-arrow-to-left { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:has(.active) .label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-label { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .dropdown-indicator-icon,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer-text { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-footer { - padding-left: 1.5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .label-1.nav-link { - padding-top: 10px; - padding-bottom: 10px; - line-height: 1.2 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl+.navbar.navbar-top~.content { - margin-left: 4rem !important - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-content { - overflow: visible - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav-link { - padding-left: 1rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .navbar-vertical-content .navbar-nav .nav-link.label-1 { - padding-left: .75rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item { - position: relative - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper { - position: relative; - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .parent-wrapper.label-1 { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .parent-wrapper.label-1>.parent:first-child { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .dropdown-indicator.label-1 { - pointer-events: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .dropdown-indicator.label-1 { - background-color: var(--phoenix-navbar-vertical-link-hover-bg); - border-radius: .5rem; - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .dropdown-indicator.label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .collapsed-nav-item-title { - display: block !important; - padding-left: 16px; - padding-top: 15px; - padding-bottom: 14px; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color); - color: var(--phoenix-navbar-vertical-link-hover-color); - font-size: 12.8px; - line-height: 1.2; - margin-bottom: .5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link:not(.label-1) .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link:not(.label-1) .dropdown-indicator-icon { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link:not(.label-1) { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link:not(.label-1):hover { - border-radius: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav .nav .nav-link { - padding-left: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav .nav .nav .nav-link { - padding-left: 3rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav .nav .nav .nav .nav-link { - padding-left: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .parent-wrapper.label-1,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link-text-wrapper { - position: absolute; - display: block; - left: 100%; - background: rgba(0,0,0,0); - top: -4px; - padding-bottom: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .parent-wrapper.label-1>.parent,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - width: 220px; - background: var(--phoenix-navbar-vertical-collapsed-menu-bg); - margin-left: 16px; - border-radius: .5rem; - position: relative; - padding-bottom: 8px; - border: 1px solid var(--phoenix-navbar-vertical-border-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 16px - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .parent-wrapper.label-1>.parent:after,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xxl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text:after { - content: ""; - position: absolute; - z-index: 1; - width: 1rem; - height: 1rem; - background: inherit; - top: .85rem; - left: -9px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-bottom-left-radius: .125rem; - border-width: 0 0 1px 1px; - border-style: solid; - border-color: var(--phoenix-navbar-vertical-border-color) - } -} - -@media(min-width: 1200px) { - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl { - position:absolute; - top: 0; - height: auto; - min-height: 100%; - padding-top: var(--phoenix-navbar-top-height); - padding-bottom: 4rem; - width: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-line { - display: block; - margin-right: 1rem; - margin-left: 1rem; - color: var(--phoenix-navbar-vertical-hr-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-footer { - bottom: 0; - width: calc(4rem - 1px); - background-color: var(--phoenix-navbar-vertical-bg-color); - padding-left: 0rem !important; - padding-right: 0rem !important; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-footer .uil-arrow-from-right { - display: inline - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-footer .uil-left-arrow-to-left { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:has(.active) .label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-label { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .dropdown-indicator-icon,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-footer-text { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-footer { - padding-left: 1.5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .label-1.nav-link { - padding-top: 10px; - padding-bottom: 10px; - line-height: 1.2 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl+.navbar.navbar-top~.content { - margin-left: 4rem !important - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-content { - overflow: visible - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav-link { - padding-left: 1rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .navbar-vertical-content .navbar-nav .nav-link.label-1 { - padding-left: .75rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item { - position: relative - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper { - position: relative; - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .parent-wrapper.label-1 { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .parent-wrapper.label-1>.parent:first-child { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .dropdown-indicator.label-1 { - pointer-events: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .dropdown-indicator.label-1 { - background-color: var(--phoenix-navbar-vertical-link-hover-bg); - border-radius: .5rem; - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .dropdown-indicator.label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .collapsed-nav-item-title { - display: block !important; - padding-left: 16px; - padding-top: 15px; - padding-bottom: 14px; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color); - color: var(--phoenix-navbar-vertical-link-hover-color); - font-size: 12.8px; - line-height: 1.2; - margin-bottom: .5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link:not(.label-1) .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link:not(.label-1) .dropdown-indicator-icon { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link:not(.label-1) { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link:not(.label-1):hover { - border-radius: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav .nav .nav-link { - padding-left: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav .nav .nav .nav-link { - padding-left: 3rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav .nav .nav .nav .nav-link { - padding-left: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .parent-wrapper.label-1,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link-text-wrapper { - position: absolute; - display: block; - left: 100%; - background: rgba(0,0,0,0); - top: -4px; - padding-bottom: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .parent-wrapper.label-1>.parent,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - width: 220px; - background: var(--phoenix-navbar-vertical-collapsed-menu-bg); - margin-left: 16px; - border-radius: .5rem; - position: relative; - padding-bottom: 8px; - border: 1px solid var(--phoenix-navbar-vertical-border-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 16px - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .parent-wrapper.label-1>.parent:after,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xl .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text:after { - content: ""; - position: absolute; - z-index: 1; - width: 1rem; - height: 1rem; - background: inherit; - top: .85rem; - left: -9px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-bottom-left-radius: .125rem; - border-width: 0 0 1px 1px; - border-style: solid; - border-color: var(--phoenix-navbar-vertical-border-color) - } -} - -@media(min-width: 992px) { - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg { - position:absolute; - top: 0; - height: auto; - min-height: 100%; - padding-top: var(--phoenix-navbar-top-height); - padding-bottom: 4rem; - width: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-line { - display: block; - margin-right: 1rem; - margin-left: 1rem; - color: var(--phoenix-navbar-vertical-hr-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-footer { - bottom: 0; - width: calc(4rem - 1px); - background-color: var(--phoenix-navbar-vertical-bg-color); - padding-left: 0rem !important; - padding-right: 0rem !important; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-footer .uil-arrow-from-right { - display: inline - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-footer .uil-left-arrow-to-left { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:has(.active) .label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-label { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .dropdown-indicator-icon,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-footer-text { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-footer { - padding-left: 1.5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .label-1.nav-link { - padding-top: 10px; - padding-bottom: 10px; - line-height: 1.2 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg+.navbar.navbar-top~.content { - margin-left: 4rem !important - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-content { - overflow: visible - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav-link { - padding-left: 1rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .navbar-vertical-content .navbar-nav .nav-link.label-1 { - padding-left: .75rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item { - position: relative - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper { - position: relative; - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .parent-wrapper.label-1 { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .parent-wrapper.label-1>.parent:first-child { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .dropdown-indicator.label-1 { - pointer-events: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .dropdown-indicator.label-1 { - background-color: var(--phoenix-navbar-vertical-link-hover-bg); - border-radius: .5rem; - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .dropdown-indicator.label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .collapsed-nav-item-title { - display: block !important; - padding-left: 16px; - padding-top: 15px; - padding-bottom: 14px; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color); - color: var(--phoenix-navbar-vertical-link-hover-color); - font-size: 12.8px; - line-height: 1.2; - margin-bottom: .5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link:not(.label-1) .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link:not(.label-1) .dropdown-indicator-icon { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link:not(.label-1) { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link:not(.label-1):hover { - border-radius: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav .nav .nav-link { - padding-left: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav .nav .nav .nav-link { - padding-left: 3rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav .nav .nav .nav .nav-link { - padding-left: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .parent-wrapper.label-1,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link-text-wrapper { - position: absolute; - display: block; - left: 100%; - background: rgba(0,0,0,0); - top: -4px; - padding-bottom: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .parent-wrapper.label-1>.parent,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - width: 220px; - background: var(--phoenix-navbar-vertical-collapsed-menu-bg); - margin-left: 16px; - border-radius: .5rem; - position: relative; - padding-bottom: 8px; - border: 1px solid var(--phoenix-navbar-vertical-border-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 16px - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .parent-wrapper.label-1>.parent:after,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-lg .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text:after { - content: ""; - position: absolute; - z-index: 1; - width: 1rem; - height: 1rem; - background: inherit; - top: .85rem; - left: -9px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-bottom-left-radius: .125rem; - border-width: 0 0 1px 1px; - border-style: solid; - border-color: var(--phoenix-navbar-vertical-border-color) - } -} - -@media(min-width: 768px) { - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md { - position:absolute; - top: 0; - height: auto; - min-height: 100%; - padding-top: var(--phoenix-navbar-top-height); - padding-bottom: 4rem; - width: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-line { - display: block; - margin-right: 1rem; - margin-left: 1rem; - color: var(--phoenix-navbar-vertical-hr-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-footer { - bottom: 0; - width: calc(4rem - 1px); - background-color: var(--phoenix-navbar-vertical-bg-color); - padding-left: 0rem !important; - padding-right: 0rem !important; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-footer .uil-arrow-from-right { - display: inline - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-footer .uil-left-arrow-to-left { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:has(.active) .label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-label { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .dropdown-indicator-icon,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-footer-text { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-footer { - padding-left: 1.5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .label-1.nav-link { - padding-top: 10px; - padding-bottom: 10px; - line-height: 1.2 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md+.navbar.navbar-top~.content { - margin-left: 4rem !important - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-content { - overflow: visible - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav-link { - padding-left: 1rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .navbar-vertical-content .navbar-nav .nav-link.label-1 { - padding-left: .75rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item { - position: relative - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper { - position: relative; - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .parent-wrapper.label-1 { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .parent-wrapper.label-1>.parent:first-child { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .dropdown-indicator.label-1 { - pointer-events: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .dropdown-indicator.label-1 { - background-color: var(--phoenix-navbar-vertical-link-hover-bg); - border-radius: .5rem; - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .dropdown-indicator.label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .collapsed-nav-item-title { - display: block !important; - padding-left: 16px; - padding-top: 15px; - padding-bottom: 14px; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color); - color: var(--phoenix-navbar-vertical-link-hover-color); - font-size: 12.8px; - line-height: 1.2; - margin-bottom: .5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link:not(.label-1) .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link:not(.label-1) .dropdown-indicator-icon { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link:not(.label-1) { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link:not(.label-1):hover { - border-radius: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav .nav .nav-link { - padding-left: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav .nav .nav .nav-link { - padding-left: 3rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav .nav .nav .nav .nav-link { - padding-left: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .parent-wrapper.label-1,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link-text-wrapper { - position: absolute; - display: block; - left: 100%; - background: rgba(0,0,0,0); - top: -4px; - padding-bottom: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .parent-wrapper.label-1>.parent,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - width: 220px; - background: var(--phoenix-navbar-vertical-collapsed-menu-bg); - margin-left: 16px; - border-radius: .5rem; - position: relative; - padding-bottom: 8px; - border: 1px solid var(--phoenix-navbar-vertical-border-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 16px - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .parent-wrapper.label-1>.parent:after,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-md .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text:after { - content: ""; - position: absolute; - z-index: 1; - width: 1rem; - height: 1rem; - background: inherit; - top: .85rem; - left: -9px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-bottom-left-radius: .125rem; - border-width: 0 0 1px 1px; - border-style: solid; - border-color: var(--phoenix-navbar-vertical-border-color) - } -} - -@media(min-width: 576px) { - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm { - position:absolute; - top: 0; - height: auto; - min-height: 100%; - padding-top: var(--phoenix-navbar-top-height); - padding-bottom: 4rem; - width: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-line { - display: block; - margin-right: 1rem; - margin-left: 1rem; - color: var(--phoenix-navbar-vertical-hr-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-footer { - bottom: 0; - width: calc(4rem - 1px); - background-color: var(--phoenix-navbar-vertical-bg-color); - padding-left: 0rem !important; - padding-right: 0rem !important; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-footer .uil-arrow-from-right { - display: inline - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-footer .uil-left-arrow-to-left { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:has(.active) .label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-label { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .dropdown-indicator-icon,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-footer-text { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-footer { - padding-left: 1.5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .label-1.nav-link { - padding-top: 10px; - padding-bottom: 10px; - line-height: 1.2 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm+.navbar.navbar-top~.content { - margin-left: 4rem !important - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-content { - overflow: visible - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav-link { - padding-left: 1rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .navbar-vertical-content .navbar-nav .nav-link.label-1 { - padding-left: .75rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item { - position: relative - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper { - position: relative; - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .parent-wrapper.label-1 { - display: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .parent-wrapper.label-1>.parent:first-child { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .dropdown-indicator.label-1 { - pointer-events: none - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .dropdown-indicator.label-1 { - background-color: var(--phoenix-navbar-vertical-link-hover-bg); - border-radius: .5rem; - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .dropdown-indicator.label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-hover-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .collapsed-nav-item-title { - display: block !important; - padding-left: 16px; - padding-top: 15px; - padding-bottom: 14px; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color); - color: var(--phoenix-navbar-vertical-link-hover-color); - font-size: 12.8px; - line-height: 1.2; - margin-bottom: .5rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link:not(.label-1) .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - display: block - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link:not(.label-1) .dropdown-indicator-icon { - display: -webkit-box; - display: -ms-flexbox; - display: flex - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link:not(.label-1) { - margin-left: 0; - margin-right: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link:not(.label-1):hover { - border-radius: 0 - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav .nav .nav-link { - padding-left: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav .nav .nav .nav-link { - padding-left: 3rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav .nav .nav .nav .nav-link { - padding-left: 4rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .parent-wrapper.label-1,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link-text-wrapper { - position: absolute; - display: block; - left: 100%; - background: rgba(0,0,0,0); - top: -4px; - padding-bottom: 2rem - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .parent-wrapper.label-1>.parent,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - width: 220px; - background: var(--phoenix-navbar-vertical-collapsed-menu-bg); - margin-left: 16px; - border-radius: .5rem; - position: relative; - padding-bottom: 8px; - border: 1px solid var(--phoenix-navbar-vertical-border-color) - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 16px - } - - .navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .parent-wrapper.label-1>.parent:after,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-sm .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text:after { - content: ""; - position: absolute; - z-index: 1; - width: 1rem; - height: 1rem; - background: inherit; - top: .85rem; - left: -9px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-bottom-left-radius: .125rem; - border-width: 0 0 1px 1px; - border-style: solid; - border-color: var(--phoenix-navbar-vertical-border-color) - } -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs { - position: absolute; - top: 0; - height: auto; - min-height: 100%; - padding-top: var(--phoenix-navbar-top-height); - padding-bottom: 4rem; - width: 4rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-line { - display: block; - margin-right: 1rem; - margin-left: 1rem; - color: var(--phoenix-navbar-vertical-hr-color) -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-footer { - bottom: 0; - width: calc(4rem - 1px); - background-color: var(--phoenix-navbar-vertical-bg-color); - padding-left: 0rem !important; - padding-right: 0rem !important; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-footer .uil-arrow-from-right { - display: inline -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-footer .uil-left-arrow-to-left { - display: none -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:has(.active) .label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-active-color) -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-label { - display: none -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .dropdown-indicator-icon,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-footer-text { - display: none -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-footer { - padding-left: 1.5rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .label-1.nav-link { - padding-top: 10px; - padding-bottom: 10px; - line-height: 1.2 -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs+.navbar.navbar-top~.content { - margin-left: 4rem !important -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-content { - overflow: visible -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav-link { - padding-left: 1rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .navbar-vertical-content .navbar-nav .nav-link.label-1 { - padding-left: .75rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item { - position: relative -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper { - position: relative; - display: block -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .parent-wrapper.label-1 { - display: none -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .parent-wrapper.label-1>.parent:first-child { - display: block -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .dropdown-indicator.label-1 { - pointer-events: none -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .dropdown-indicator.label-1 { - background-color: var(--phoenix-navbar-vertical-link-hover-bg); - border-radius: .5rem; - color: var(--phoenix-navbar-vertical-link-hover-color) -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .dropdown-indicator.label-1 .nav-link-icon { - color: var(--phoenix-navbar-vertical-link-hover-color) -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .collapsed-nav-item-title { - display: block !important; - padding-left: 16px; - padding-top: 15px; - padding-bottom: 14px; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color); - color: var(--phoenix-navbar-vertical-link-hover-color); - font-size: 12.8px; - line-height: 1.2; - margin-bottom: .5rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link:not(.label-1) .nav-link-text,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - display: block -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link:not(.label-1) .dropdown-indicator-icon { - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link:not(.label-1) { - margin-left: 0; - margin-right: 0 -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link:not(.label-1):hover { - border-radius: 0 -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav .nav .nav-link { - padding-left: 2rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav .nav .nav .nav-link { - padding-left: 3rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav .nav .nav .nav .nav-link { - padding-left: 4rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .parent-wrapper.label-1,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link-text-wrapper { - position: absolute; - display: block; - left: 100%; - background: rgba(0,0,0,0); - top: -4px; - padding-bottom: 2rem -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .parent-wrapper.label-1>.parent,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - width: 220px; - background: var(--phoenix-navbar-vertical-collapsed-menu-bg); - margin-left: 16px; - border-radius: .5rem; - position: relative; - padding-bottom: 8px; - border: 1px solid var(--phoenix-navbar-vertical-border-color) -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 16px -} - -.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .parent-wrapper.label-1>.parent:after,.navbar-vertical-collapsed .navbar-vertical.navbar-expand-xs .nav-item-wrapper:hover .nav-link-text-wrapper .nav-link-text:after { - content: ""; - position: absolute; - z-index: 1; - width: 1rem; - height: 1rem; - background: inherit; - top: .85rem; - left: -9px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - border-bottom-left-radius: .125rem; - border-width: 0 0 1px 1px; - border-style: solid; - border-color: var(--phoenix-navbar-vertical-border-color) -} - -.navbar-vertical-collapsed .nav-link-badge { - display: none -} - -.navbar-vertical-collapsed .new-page-indicator { - margin-left: -8px !important; - margin-top: -15px; - display: block !important -} - -.navbar-horizontal .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-nav-top .dropdown .dropdown-toggle::after { - margin-left: 6px; - top: 1rem; - border-top: .25rem solid; - border-right: .25rem solid rgba(0,0,0,0); - border-left: .25rem solid rgba(0,0,0,0); - border-radius: 15px -} - -.navbar-horizontal .navbar-nav-top .dropdown .dropdown .dropdown-toggle:after,.dual-nav .navbar-nav-top .dropdown .dropdown .dropdown-toggle:after,.navbar-combo .navbar-nav-top .dropdown .dropdown .dropdown-toggle:after { - display: none -} - -.navbar-horizontal .navbar-nav-top .nav-link,.dual-nav .navbar-nav-top .nav-link,.navbar-combo .navbar-nav-top .nav-link { - color: var(--phoenix-navbar-top-link-color) -} - -.navbar-top { - font-size: .8rem; - font-weight: 600; - padding: 0; - background: var(--phoenix-navbar-top-bg-color); - min-height: var(--phoenix-navbar-top-height); - color: var(--phoenix-nav-link-color); - padding: 0 1.5rem; - border-bottom: 1px solid var(--phoenix-navbar-vertical-border-color) -} - -.navbar-top .dropdown-menu { - margin-top: .5rem -} - -.navbar-top .navbar-toggler { - margin-left: -0.5rem -} - -.navbar-top .navbar-nav-icons .nav-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.navbar-top .navbar-nav-icons .nav-link { - padding: .75rem .5rem -} - -.navbar-top .navbar-nav-icons .dropdown-menu { - position: absolute -} - -.navbar-top .dropdown-notification { - position: static -} - -@media(min-width: 576px) { - .navbar-top .dropdown-notification { - position:relative - } -} - -.navbar-top .dropdown-notification .dropdown-menu { - right: .25rem !important -} - -@media(min-width: 576px) { - .navbar-top .dropdown-notification .dropdown-menu { - right:-0.5625rem !important - } -} - -.navbar-top .dropdown-notification .dropdown-menu.navbar-dropdown-caret:after { - right: 9.125rem !important; - left: auto -} - -@media(min-width: 576px) { - .navbar-top .dropdown-notification .dropdown-menu.navbar-dropdown-caret:after { - right:.9rem !important - } -} - -.dropdown-profile { - min-width: 18.3125rem -} - -.dropdown-profile .nav .nav-link { - --phoenix-nav-link-color: var(--phoenix-gray-1000); - --phoenix-nav-link-hover-color: var(--phoenix-black); - padding: .5rem 2.5rem .5rem 2.5rem; - font-weight: 600 -} - -.dropdown-profile .nav .nav-link:hover { - background: var(--phoenix-gray-100) -} - -.notification-dropdown-menu { - min-width: 260px -} - -@media(min-width: 576px) { - .notification-dropdown-menu { - min-width:360px - } -} - -.dropdown-nide-dots { - min-width: 15.375rem -} - -.dropdown-nide-dots.dropdown-menu-end:after { - right: .75rem !important -} - -.dropdown-menu .nav-link { - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - line-height: 1 -} - -.dropdown-menu .nav-link:hover { - background-color: var(--phoenix-primary-soft) -} - -.dropdown-arrow-indicator { - position: relative -} - -.dropdown-arrow-indicator:after { - content: ""; - display: block; - position: absolute; - right: 1rem; - height: .4rem; - width: .4rem; - border-right: 1px solid var(--phoenix-gray-700); - border-bottom: 1px solid var(--phoenix-gray-700); - top: 50%; - -webkit-transform: translateY(-50%) rotate(-45deg); - -ms-transform: translateY(-50%) rotate(-45deg); - transform: translateY(-50%) rotate(-45deg); - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - -webkit-transform-origin: center; - -ms-transform-origin: center; - transform-origin: center; - -webkit-transition-property: border-color,-webkit-transform; - transition-property: border-color,-webkit-transform; - -o-transition-property: transform,border-color; - transition-property: transform,border-color; - transition-property: transform,border-color,-webkit-transform -} - -.dropdown-arrow-indicator[aria-expanded=true]:after { - -webkit-transform: translateY(-50%) rotate(45deg); - -ms-transform: translateY(-50%) rotate(45deg); - transform: translateY(-50%) rotate(45deg) -} - -.navbar-vertical+.navbar-top .navbar-brand { - margin-left: .4rem -} - -.theme-control-toggle .theme-control-toggle-label { - height: 2rem; - width: 2rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - background-color: var(--phoenix-theme-control-toggle-bg); - color: var(--phoenix-theme-control-toggle-color); - border-radius: 50%; - cursor: pointer; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.theme-control-toggle .theme-control-toggle-label:hover { - background-color: var(--phoenix-theme-control-toggle-hover-bg); - color: var(--phoenix-theme-control-toggle-hover-color) -} - -.theme-control-toggle.theme-control-toggle-slim .theme-control-toggle-label { - padding: 0 .5rem; - height: 1rem; - width: auto; - border-radius: 50rem -} - -.theme-control-toggle.theme-control-toggle-slim .theme-control-toggle-label .icon { - height: 10.2px; - width: 10.2px -} - -.theme-control-toggle .theme-control-toggle-input { - display: none -} - -.theme-control-toggle .theme-control-toggle-input:checked~.theme-control-toggle-dark { - display: none -} - -.theme-control-toggle .theme-control-toggle-input:not(:checked)~.theme-control-toggle-light { - display: none -} - -.navbar-horizontal .dropdown-item-group,.dual-nav .dropdown-item-group,.navbar-combo .dropdown-item-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: .5rem; - color: var(--phoenix-navbar-top-link-color) -} - -.navbar-horizontal .dropdown-item-group .dropdown-item-title,.dual-nav .dropdown-item-group .dropdown-item-title,.navbar-combo .dropdown-item-group .dropdown-item-title { - color: var(--phoenix-navbar-top-link-color); - margin-bottom: 0; - white-space: nowrap -} - -.navbar-horizontal .navbar-nav-top .nav-link,.dual-nav .navbar-nav-top .nav-link,.navbar-combo .navbar-nav-top .nav-link { - padding-top: .6rem; - padding-bottom: .6rem; - border-radius: .375rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.navbar-horizontal .navbar-nav-top .navbar-dropdown-caret::after,.dual-nav .navbar-nav-top .navbar-dropdown-caret::after,.navbar-combo .navbar-nav-top .navbar-dropdown-caret::after { - display: none -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu,.dual-nav .navbar-nav-top .dropdown-menu,.navbar-combo .navbar-nav-top .dropdown-menu { - border: 1px solid var(--phoenix-navbar-top-border-color); - background-color: var(--phoenix-navbar-top-menu-bg-color) -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu-content,.dual-nav .navbar-nav-top .dropdown-menu-content,.navbar-combo .navbar-nav-top .dropdown-menu-content { - border-radius: .5rem; - background-color: var(--phoenix-navbar-top-menu-bg-color) -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu-content .dropdown-item,.dual-nav .navbar-nav-top .dropdown-menu-content .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-menu-content .dropdown-item { - color: var(--phoenix-navbar-top-link-color) -} - -.navbar-horizontal .navbar-nav-top .navbar-top-card .nav-link,.dual-nav .navbar-nav-top .navbar-top-card .nav-link,.navbar-combo .navbar-nav-top .navbar-top-card .nav-link { - color: var(--phoenix-navbar-top-link-color) -} - -.navbar-horizontal .navbar-nav-top .navbar-top-card .nav-link:hover,.dual-nav .navbar-nav-top .navbar-top-card .nav-link:hover,.navbar-combo .navbar-nav-top .navbar-top-card .nav-link:hover { - color: var(--phoenix-navbar-top-link-hover-color) -} - -.navbar-horizontal .navbar-top .max-h-dropdown,.dual-nav .navbar-top .max-h-dropdown,.navbar-combo .navbar-top .max-h-dropdown { - max-height: 50vh; - -ms-scroll-chaining: none; - overscroll-behavior: contain -} - -.navbar-horizontal .navbar-top .navbar-top-collapse.show,.dual-nav .navbar-top .navbar-top-collapse.show,.navbar-combo .navbar-top .navbar-top-collapse.show { - padding-bottom: 1rem -} - -@media(min-width: 1540px) { - .navbar-horizontal .navbar-top.navbar-expand-xxl,.dual-nav .navbar-top.navbar-expand-xxl,.navbar-combo .navbar-top.navbar-expand-xxl { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-horizontal .navbar-top.navbar-expand-xxl:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.dual-nav .navbar-top.navbar-expand-xxl:not(.navbar-slim) .navbar-nav-top .nav-link.show,.dual-nav .navbar-top.navbar-expand-xxl:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.navbar-combo .navbar-top.navbar-expand-xxl:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-combo .navbar-top.navbar-expand-xxl:not(.navbar-slim) .navbar-nav-top .nav-link:hover { - background-color: var(--phoenix-navbar-top-dropdown-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .nav-link,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .nav-link,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .nav-link { - padding-left: 1.125rem; - padding-right: 1.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-top-collapse.show,.dual-nav .navbar-top.navbar-expand-xxl .navbar-top-collapse.show,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-top-collapse.show { - padding-bottom: 0rem - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-collapse .navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-xxl .navbar-collapse .navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-collapse .navbar-dropdown-caret::after { - display: block - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl~.content,.dual-nav .navbar-top.navbar-expand-xxl~.content,.navbar-combo .navbar-top.navbar-expand-xxl~.content { - padding-left: 2.5rem; - padding-right: 2.5rem - } -} - -@media(min-width: 1200px) { - .navbar-horizontal .navbar-top.navbar-expand-xl,.dual-nav .navbar-top.navbar-expand-xl,.navbar-combo .navbar-top.navbar-expand-xl { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-xl:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-horizontal .navbar-top.navbar-expand-xl:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.dual-nav .navbar-top.navbar-expand-xl:not(.navbar-slim) .navbar-nav-top .nav-link.show,.dual-nav .navbar-top.navbar-expand-xl:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.navbar-combo .navbar-top.navbar-expand-xl:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-combo .navbar-top.navbar-expand-xl:not(.navbar-slim) .navbar-nav-top .nav-link:hover { - background-color: var(--phoenix-navbar-top-dropdown-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .nav-link,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .nav-link,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .nav-link { - padding-left: 1.125rem; - padding-right: 1.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-top-collapse.show,.dual-nav .navbar-top.navbar-expand-xl .navbar-top-collapse.show,.navbar-combo .navbar-top.navbar-expand-xl .navbar-top-collapse.show { - padding-bottom: 0rem - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-collapse .navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-xl .navbar-collapse .navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-xl .navbar-collapse .navbar-dropdown-caret::after { - display: block - } - - .navbar-horizontal .navbar-top.navbar-expand-xl~.content,.dual-nav .navbar-top.navbar-expand-xl~.content,.navbar-combo .navbar-top.navbar-expand-xl~.content { - padding-left: 2.5rem; - padding-right: 2.5rem - } -} - -@media(min-width: 992px) { - .navbar-horizontal .navbar-top.navbar-expand-lg,.dual-nav .navbar-top.navbar-expand-lg,.navbar-combo .navbar-top.navbar-expand-lg { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-lg:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-horizontal .navbar-top.navbar-expand-lg:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.dual-nav .navbar-top.navbar-expand-lg:not(.navbar-slim) .navbar-nav-top .nav-link.show,.dual-nav .navbar-top.navbar-expand-lg:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.navbar-combo .navbar-top.navbar-expand-lg:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-combo .navbar-top.navbar-expand-lg:not(.navbar-slim) .navbar-nav-top .nav-link:hover { - background-color: var(--phoenix-navbar-top-dropdown-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .nav-link,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .nav-link,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .nav-link { - padding-left: 1.125rem; - padding-right: 1.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-top-collapse.show,.dual-nav .navbar-top.navbar-expand-lg .navbar-top-collapse.show,.navbar-combo .navbar-top.navbar-expand-lg .navbar-top-collapse.show { - padding-bottom: 0rem - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-collapse .navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-lg .navbar-collapse .navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-lg .navbar-collapse .navbar-dropdown-caret::after { - display: block - } - - .navbar-horizontal .navbar-top.navbar-expand-lg~.content,.dual-nav .navbar-top.navbar-expand-lg~.content,.navbar-combo .navbar-top.navbar-expand-lg~.content { - padding-left: 2.5rem; - padding-right: 2.5rem - } -} - -@media(min-width: 768px) { - .navbar-horizontal .navbar-top.navbar-expand-md,.dual-nav .navbar-top.navbar-expand-md,.navbar-combo .navbar-top.navbar-expand-md { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-md:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-horizontal .navbar-top.navbar-expand-md:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.dual-nav .navbar-top.navbar-expand-md:not(.navbar-slim) .navbar-nav-top .nav-link.show,.dual-nav .navbar-top.navbar-expand-md:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.navbar-combo .navbar-top.navbar-expand-md:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-combo .navbar-top.navbar-expand-md:not(.navbar-slim) .navbar-nav-top .nav-link:hover { - background-color: var(--phoenix-navbar-top-dropdown-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .nav-link,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .nav-link,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .nav-link { - padding-left: 1.125rem; - padding-right: 1.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-top-collapse.show,.dual-nav .navbar-top.navbar-expand-md .navbar-top-collapse.show,.navbar-combo .navbar-top.navbar-expand-md .navbar-top-collapse.show { - padding-bottom: 0rem - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-collapse .navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-md .navbar-collapse .navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-md .navbar-collapse .navbar-dropdown-caret::after { - display: block - } - - .navbar-horizontal .navbar-top.navbar-expand-md~.content,.dual-nav .navbar-top.navbar-expand-md~.content,.navbar-combo .navbar-top.navbar-expand-md~.content { - padding-left: 2.5rem; - padding-right: 2.5rem - } -} - -@media(min-width: 576px) { - .navbar-horizontal .navbar-top.navbar-expand-sm,.dual-nav .navbar-top.navbar-expand-sm,.navbar-combo .navbar-top.navbar-expand-sm { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-sm:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-horizontal .navbar-top.navbar-expand-sm:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.dual-nav .navbar-top.navbar-expand-sm:not(.navbar-slim) .navbar-nav-top .nav-link.show,.dual-nav .navbar-top.navbar-expand-sm:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.navbar-combo .navbar-top.navbar-expand-sm:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-combo .navbar-top.navbar-expand-sm:not(.navbar-slim) .navbar-nav-top .nav-link:hover { - background-color: var(--phoenix-navbar-top-dropdown-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .nav-link,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .nav-link,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .nav-link { - padding-left: 1.125rem; - padding-right: 1.5rem - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-top-collapse.show,.dual-nav .navbar-top.navbar-expand-sm .navbar-top-collapse.show,.navbar-combo .navbar-top.navbar-expand-sm .navbar-top-collapse.show { - padding-bottom: 0rem - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-collapse .navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-sm .navbar-collapse .navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-sm .navbar-collapse .navbar-dropdown-caret::after { - display: block - } - - .navbar-horizontal .navbar-top.navbar-expand-sm~.content,.dual-nav .navbar-top.navbar-expand-sm~.content,.navbar-combo .navbar-top.navbar-expand-sm~.content { - padding-left: 2.5rem; - padding-right: 2.5rem - } -} - -.navbar-horizontal .navbar-top.navbar-expand-xs,.dual-nav .navbar-top.navbar-expand-xs,.navbar-combo .navbar-top.navbar-expand-xs { - padding-left: 2.5rem; - padding-right: 2.5rem -} - -.navbar-horizontal .navbar-top.navbar-expand-xs:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-horizontal .navbar-top.navbar-expand-xs:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.dual-nav .navbar-top.navbar-expand-xs:not(.navbar-slim) .navbar-nav-top .nav-link.show,.dual-nav .navbar-top.navbar-expand-xs:not(.navbar-slim) .navbar-nav-top .nav-link:hover,.navbar-combo .navbar-top.navbar-expand-xs:not(.navbar-slim) .navbar-nav-top .nav-link.show,.navbar-combo .navbar-top.navbar-expand-xs:not(.navbar-slim) .navbar-nav-top .nav-link:hover { - background-color: var(--phoenix-navbar-top-dropdown-hover-bg) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .nav-link,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .nav-link,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .nav-link { - padding-left: 1.125rem; - padding-right: 1.5rem -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-top-collapse.show,.dual-nav .navbar-top.navbar-expand-xs .navbar-top-collapse.show,.navbar-combo .navbar-top.navbar-expand-xs .navbar-top-collapse.show { - padding-bottom: 0rem -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-collapse .navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-xs .navbar-collapse .navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-xs .navbar-collapse .navbar-dropdown-caret::after { - display: block -} - -.navbar-horizontal .navbar-top.navbar-expand-xs~.content,.dual-nav .navbar-top.navbar-expand-xs~.content,.navbar-combo .navbar-top.navbar-expand-xs~.content { - padding-left: 2.5rem; - padding-right: 2.5rem -} - -.navbar-combo .move-container .navbar-nav-top { - padding-left: 1.5rem; - padding-right: 1.5rem -} - -.navbar-combo .move-container .nav-link { - padding-left: 0rem !important -} - -.navbar-combo .navbar-darker .move-container .navbar-vertical-hr { - color: var(--phoenix-navbar-vertical-hr-color) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-menu { - background-color: var(--phoenix-navbar-vertical-bg-color); - border-color: var(--phoenix-navbar-vertical-border-color) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-item { - color: var(--phoenix-navbar-vertical-link-color) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-item.active { - color: var(--phoenix-navbar-vertical-link-active-color) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-item:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-menu-card .dropdown-link { - color: var(--phoenix-navbar-vertical-link-color) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-menu-card .dropdown-link:hover { - background-color: var(--phoenix-navbar-vertical-link-hover-bg) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-item-group { - color: var(--phoenix-navbar-vertical-link-color) -} - -.navbar-combo .navbar-darker .move-container .navbar-nav-top .dropdown-item-group .dropdown-item-title { - color: var(--phoenix-navbar-vertical-link-color) -} - -.navbar-horizontal .navbar-nav-top,.dual-nav .navbar-nav-top,.navbar-combo .navbar-nav-top { - max-height: calc(100vh - var(--phoenix-navbar-top-height)); - overflow: auto -} - -.navbar-horizontal .navbar-nav-top .nav-link,.dual-nav .navbar-nav-top .nav-link,.navbar-combo .navbar-nav-top .nav-link { - color: var(--phoenix-navbar-top-link-color) -} - -.navbar-horizontal .navbar-nav-top .nav-link.dropdown-toggle,.dual-nav .navbar-nav-top .nav-link.dropdown-toggle,.navbar-combo .navbar-nav-top .nav-link.dropdown-toggle { - color: var(--phoenix-navbar-top-dropdown-color) -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu.navbar-dropdown-caret::after,.dual-nav .navbar-nav-top .dropdown-menu.navbar-dropdown-caret::after,.navbar-combo .navbar-nav-top .dropdown-menu.navbar-dropdown-caret::after { - -webkit-box-shadow: none; - box-shadow: none; - top: -10px; - height: 1.2rem; - width: 1.2rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu,.dual-nav .navbar-nav-top .dropdown-menu,.navbar-combo .navbar-nav-top .dropdown-menu { - margin-top: 0; - padding-top: .5rem; - padding-bottom: .5rem; - -webkit-box-shadow: none; - box-shadow: none -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu [aria-expanded=true] .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-nav-top .dropdown-menu [aria-expanded=true] .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-nav-top .dropdown-menu [aria-expanded=true] .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) -} - -[dir=rtl] .navbar-horizontal .navbar-nav-top .dropdown-menu [aria-expanded=true] .dropdown-indicator-icon.uil-angle-right,[dir=rtl] .dual-nav .navbar-nav-top .dropdown-menu [aria-expanded=true] .dropdown-indicator-icon.uil-angle-right,[dir=rtl] .navbar-combo .navbar-nav-top .dropdown-menu [aria-expanded=true] .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu,.dual-nav .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu,.navbar-combo .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu { - border: none; - padding-top: 0rem; - padding-bottom: 0rem; - margin-top: 0px -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item { - padding-left: 3rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item,.dual-nav .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item { - padding-left: 4rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item,.dual-nav .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item { - padding-left: 5rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item,.dual-nav .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-menu .dropdown .dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item~.dropdown-menu .dropdown-item { - padding-left: 6rem -} - -.navbar-horizontal .navbar-nav-top.navbar-nav>.nav-item:not(:first-child),.dual-nav .navbar-nav-top.navbar-nav>.nav-item:not(:first-child),.navbar-combo .navbar-nav-top.navbar-nav>.nav-item:not(:first-child) { - margin-top: .3rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-item-wrapper,.dual-nav .navbar-nav-top .dropdown-item-wrapper,.navbar-combo .navbar-nav-top .dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-left: -0.25rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-item,.dual-nav .navbar-nav-top .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-item { - padding-left: 1.5rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-item:not(.dropdown-toggle) .dropdown-item-wrapper,.dual-nav .navbar-nav-top .dropdown-item:not(.dropdown-toggle) .dropdown-item-wrapper,.navbar-combo .navbar-nav-top .dropdown-item:not(.dropdown-toggle) .dropdown-item-wrapper { - padding-left: 1rem -} - -.navbar-horizontal .navbar-nav-top .dropdown-item,.dual-nav .navbar-nav-top .dropdown-item,.navbar-combo .navbar-nav-top .dropdown-item { - color: var(--phoenix-navbar-top-link-color); - font-weight: 600; - line-height: 1.2 -} - -.navbar-horizontal .navbar-nav-top .dropdown-item:focus,.dual-nav .navbar-nav-top .dropdown-item:focus,.navbar-combo .navbar-nav-top .dropdown-item:focus { - background-color: rgba(0,0,0,0); - color: var(--phoenix-navbar-top-link-color) -} - -.navbar-horizontal .navbar-nav-top .dropdown-item:hover,.dual-nav .navbar-nav-top .dropdown-item:hover,.navbar-combo .navbar-nav-top .dropdown-item:hover { - background-color: var(--phoenix-navbar-top-link-hover-bg); - color: var(--phoenix-navbar-top-link-hover-color) -} - -.navbar-horizontal .navbar-nav-top .dropdown-item.active,.dual-nav .navbar-nav-top .dropdown-item.active,.navbar-combo .navbar-nav-top .dropdown-item.active { - background-color: rgba(0,0,0,0); - color: var(--phoenix-navbar-top-link-active-color) -} - -@media(min-width: 1540px) { - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top { - overflow:visible - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top.navbar-nav>.nav-item,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top.navbar-nav>.nav-item,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top.navbar-nav>.nav-item { - margin-top: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-toggle::after { - display: none - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item-wrapper { - width: 100%; - padding-left: 0; - margin-left: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-indicator-icon,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-indicator-icon,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-indicator-icon { - margin-left: auto - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.nav-item>.dropdown-menu { - margin-top: var(--phoenix-navbar-top-menu-margin) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu { - min-width: 13rem; - -webkit-box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - left: 0; - padding-top: .65rem; - padding-bottom: .65rem; - border: 1px solid var(--phoenix-navbar-top-border-color) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu .dropdown-item { - padding-left: 1rem !important - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: none; - -ms-transform: none; - transform: none - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card { - min-width: 550px; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - -ms-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item.show,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item:hover,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item.show,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown-item.show { - background-color: var(--phoenix-navbar-top-link-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown .dropdown .dropdown-menu { - top: 0; - left: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show { - position: static; - border: none; - margin: 0; - -webkit-box-shadow: none; - box-shadow: none; - padding-top: 0rem; - padding-bottom: 0; - min-width: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.dual-nav .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.navbar-combo .navbar-top.navbar-expand-xxl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item { - padding-left: 2.5rem !important - } -} - -@media(min-width: 1200px) { - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top { - overflow:visible - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top.navbar-nav>.nav-item,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top.navbar-nav>.nav-item,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top.navbar-nav>.nav-item { - margin-top: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-toggle::after { - display: none - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item-wrapper { - width: 100%; - padding-left: 0; - margin-left: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-indicator-icon,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-indicator-icon,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-indicator-icon { - margin-left: auto - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.nav-item>.dropdown-menu { - margin-top: var(--phoenix-navbar-top-menu-margin) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu { - min-width: 13rem; - -webkit-box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - left: 0; - padding-top: .65rem; - padding-bottom: .65rem; - border: 1px solid var(--phoenix-navbar-top-border-color) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu .dropdown-item { - padding-left: 1rem !important - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: none; - -ms-transform: none; - transform: none - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card { - min-width: 550px; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - -ms-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item.show,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item:hover,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item.show,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown-item.show { - background-color: var(--phoenix-navbar-top-link-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown .dropdown .dropdown-menu { - top: 0; - left: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show { - position: static; - border: none; - margin: 0; - -webkit-box-shadow: none; - box-shadow: none; - padding-top: 0rem; - padding-bottom: 0; - min-width: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.dual-nav .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.navbar-combo .navbar-top.navbar-expand-xl .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item { - padding-left: 2.5rem !important - } -} - -@media(min-width: 992px) { - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top { - overflow:visible - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top.navbar-nav>.nav-item,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top.navbar-nav>.nav-item,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top.navbar-nav>.nav-item { - margin-top: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-toggle::after { - display: none - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item-wrapper { - width: 100%; - padding-left: 0; - margin-left: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-indicator-icon,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-indicator-icon,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-indicator-icon { - margin-left: auto - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.nav-item>.dropdown-menu { - margin-top: var(--phoenix-navbar-top-menu-margin) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu { - min-width: 13rem; - -webkit-box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - left: 0; - padding-top: .65rem; - padding-bottom: .65rem; - border: 1px solid var(--phoenix-navbar-top-border-color) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu .dropdown-item { - padding-left: 1rem !important - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: none; - -ms-transform: none; - transform: none - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card { - min-width: 550px; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - -ms-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item.show,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item:hover,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item.show,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown-item.show { - background-color: var(--phoenix-navbar-top-link-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown .dropdown .dropdown-menu { - top: 0; - left: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show { - position: static; - border: none; - margin: 0; - -webkit-box-shadow: none; - box-shadow: none; - padding-top: 0rem; - padding-bottom: 0; - min-width: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.dual-nav .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.navbar-combo .navbar-top.navbar-expand-lg .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item { - padding-left: 2.5rem !important - } -} - -@media(min-width: 768px) { - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top { - overflow:visible - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top.navbar-nav>.nav-item,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top.navbar-nav>.nav-item,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top.navbar-nav>.nav-item { - margin-top: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-toggle::after { - display: none - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item-wrapper { - width: 100%; - padding-left: 0; - margin-left: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-indicator-icon,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-indicator-icon,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-indicator-icon { - margin-left: auto - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.nav-item>.dropdown-menu { - margin-top: var(--phoenix-navbar-top-menu-margin) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu { - min-width: 13rem; - -webkit-box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - left: 0; - padding-top: .65rem; - padding-bottom: .65rem; - border: 1px solid var(--phoenix-navbar-top-border-color) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu .dropdown-item { - padding-left: 1rem !important - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: none; - -ms-transform: none; - transform: none - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card { - min-width: 550px; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - -ms-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item.show,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item:hover,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item.show,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown-item.show { - background-color: var(--phoenix-navbar-top-link-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown .dropdown .dropdown-menu { - top: 0; - left: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show { - position: static; - border: none; - margin: 0; - -webkit-box-shadow: none; - box-shadow: none; - padding-top: 0rem; - padding-bottom: 0; - min-width: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.dual-nav .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.navbar-combo .navbar-top.navbar-expand-md .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item { - padding-left: 2.5rem !important - } -} - -@media(min-width: 576px) { - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top { - overflow:visible - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top.navbar-nav>.nav-item,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top.navbar-nav>.nav-item,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top.navbar-nav>.nav-item { - margin-top: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-toggle::after { - display: none - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item-wrapper { - width: 100%; - padding-left: 0; - margin-left: 0 - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-indicator-icon,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-indicator-icon,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-indicator-icon { - margin-left: auto - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.nav-item>.dropdown-menu { - margin-top: var(--phoenix-navbar-top-menu-margin) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu { - min-width: 13rem; - -webkit-box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - left: 0; - padding-top: .65rem; - padding-bottom: .65rem; - border: 1px solid var(--phoenix-navbar-top-border-color) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu .dropdown-item { - padding-left: 1rem !important - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: none; - -ms-transform: none; - transform: none - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card { - min-width: 550px; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - -ms-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item.show,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item:hover,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item.show,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown-item.show { - background-color: var(--phoenix-navbar-top-link-hover-bg) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown .dropdown .dropdown-menu { - top: 0; - left: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show { - position: static; - border: none; - margin: 0; - -webkit-box-shadow: none; - box-shadow: none; - padding-top: 0rem; - padding-bottom: 0; - min-width: 100% - } - - .navbar-horizontal .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.dual-nav .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.navbar-combo .navbar-top.navbar-expand-sm .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item { - padding-left: 2.5rem !important - } -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top { - overflow: visible -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top.navbar-nav>.nav-item,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top.navbar-nav>.nav-item,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top.navbar-nav>.nav-item { - margin-top: 0 -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-toggle::after,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-toggle::after,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-toggle::after { - display: none -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-toggle>.dropdown-item-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item-wrapper,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item-wrapper,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item-wrapper { - width: 100%; - padding-left: 0; - margin-left: 0 -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-indicator-icon,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-indicator-icon,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-indicator-icon { - margin-left: auto -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.nav-item>.dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.nav-item>.dropdown-menu { - margin-top: var(--phoenix-navbar-top-menu-margin) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu { - min-width: 13rem; - -webkit-box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - box-shadow: -8px 0px 16px -4px rgba(0,0,0,.1); - left: 0; - padding-top: .65rem; - padding-bottom: .65rem; - border: 1px solid var(--phoenix-navbar-top-border-color) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu .dropdown-item,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu .dropdown-item { - padding-left: 1rem !important -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: none; - -ms-transform: none; - transform: none -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card { - min-width: 550px; - left: 50%; - -webkit-transform: translateX(-50%); - -ms-transform: translateX(-50%); - transform: translateX(-50%) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-menu.dropdown-menu-card.navbar-dropdown-caret::after { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - -ms-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item.show,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item:hover,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item.show,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item:hover,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown-item.show { - background-color: var(--phoenix-navbar-top-link-hover-bg) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown .dropdown-menu,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown .dropdown-menu,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown .dropdown .dropdown-menu { - top: 0; - left: 100% -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-item .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-item.show .dropdown-indicator-icon.uil-angle-right { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg) -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show { - position: static; - border: none; - margin: 0; - -webkit-box-shadow: none; - box-shadow: none; - padding-top: 0rem; - padding-bottom: 0; - min-width: 100% -} - -.navbar-horizontal .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.dual-nav .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item,.navbar-combo .navbar-top.navbar-expand-xs .navbar-nav-top .dropdown.dropdown-inside .dropdown-menu.show .dropdown-item { - padding-left: 2.5rem !important -} - -[data-dropdown-on-hover] .dropdown-menu::before { - content: ""; - position: absolute; - height: 1.5rem; - background: rgba(0,0,0,0); - top: -1.5rem; - width: calc(100% - 5px); - z-index: -1 -} - -.dropdown-menu-card .dropdown-link { - border-radius: .375rem; - text-decoration: none; - padding: var(--phoenix-dropdown-item-padding-y) 1.5rem; - display: block; - color: var(--phoenix-navbar-top-link-color) -} - -.dropdown-menu-card .dropdown-link.active { - color: var(--phoenix-primary) -} - -.dropdown-menu-card .dropdown-link:hover { - background: var(--phoenix-navbar-top-link-hover-bg); - color: var(--phoenix-navbar-top-link-hover-color) -} - -.img-dropdown { - background-image: url("../img/icons/logo-bg.png"); - background-position: right -14px bottom -20px; - background-repeat: no-repeat -} - -.dual-nav .navbar-top { - border-bottom: 1px solid var(--phoenix-dual-nav-border-color) -} - -@media(min-width: 1540px) { - .dual-nav .navbar-top.navbar-expand-xxl { - padding-left:0; - padding-right: 0 - } - - .dual-nav .navbar-top.navbar-expand-xxl~.content { - --phoenix-navbar-top-height: 7.3rem - } - - .dual-nav .navbar-top.navbar-expand-xxl .navbar-top-collapse { - border-top: 1px solid var(--phoenix-dual-nav-border-color); - padding: .5rem 2rem - } - - .dual-nav .navbar-top.navbar-expand-xxl .navbar-top-collapse.show { - padding-bottom: .5rem - } - - .dual-nav .navbar-top.navbar-expand-xxl .dual-nav-first-layer { - background-color: var(--phoenix-dual-nav-first-layer-bg); - padding-left: 2rem; - padding-right: 2rem - } -} - -@media(min-width: 1200px) { - .dual-nav .navbar-top.navbar-expand-xl { - padding-left:0; - padding-right: 0 - } - - .dual-nav .navbar-top.navbar-expand-xl~.content { - --phoenix-navbar-top-height: 7.3rem - } - - .dual-nav .navbar-top.navbar-expand-xl .navbar-top-collapse { - border-top: 1px solid var(--phoenix-dual-nav-border-color); - padding: .5rem 2rem - } - - .dual-nav .navbar-top.navbar-expand-xl .navbar-top-collapse.show { - padding-bottom: .5rem - } - - .dual-nav .navbar-top.navbar-expand-xl .dual-nav-first-layer { - background-color: var(--phoenix-dual-nav-first-layer-bg); - padding-left: 2rem; - padding-right: 2rem - } -} - -@media(min-width: 992px) { - .dual-nav .navbar-top.navbar-expand-lg { - padding-left:0; - padding-right: 0 - } - - .dual-nav .navbar-top.navbar-expand-lg~.content { - --phoenix-navbar-top-height: 7.3rem - } - - .dual-nav .navbar-top.navbar-expand-lg .navbar-top-collapse { - border-top: 1px solid var(--phoenix-dual-nav-border-color); - padding: .5rem 2rem - } - - .dual-nav .navbar-top.navbar-expand-lg .navbar-top-collapse.show { - padding-bottom: .5rem - } - - .dual-nav .navbar-top.navbar-expand-lg .dual-nav-first-layer { - background-color: var(--phoenix-dual-nav-first-layer-bg); - padding-left: 2rem; - padding-right: 2rem - } -} - -@media(min-width: 768px) { - .dual-nav .navbar-top.navbar-expand-md { - padding-left:0; - padding-right: 0 - } - - .dual-nav .navbar-top.navbar-expand-md~.content { - --phoenix-navbar-top-height: 7.3rem - } - - .dual-nav .navbar-top.navbar-expand-md .navbar-top-collapse { - border-top: 1px solid var(--phoenix-dual-nav-border-color); - padding: .5rem 2rem - } - - .dual-nav .navbar-top.navbar-expand-md .navbar-top-collapse.show { - padding-bottom: .5rem - } - - .dual-nav .navbar-top.navbar-expand-md .dual-nav-first-layer { - background-color: var(--phoenix-dual-nav-first-layer-bg); - padding-left: 2rem; - padding-right: 2rem - } -} - -@media(min-width: 576px) { - .dual-nav .navbar-top.navbar-expand-sm { - padding-left:0; - padding-right: 0 - } - - .dual-nav .navbar-top.navbar-expand-sm~.content { - --phoenix-navbar-top-height: 7.3rem - } - - .dual-nav .navbar-top.navbar-expand-sm .navbar-top-collapse { - border-top: 1px solid var(--phoenix-dual-nav-border-color); - padding: .5rem 2rem - } - - .dual-nav .navbar-top.navbar-expand-sm .navbar-top-collapse.show { - padding-bottom: .5rem - } - - .dual-nav .navbar-top.navbar-expand-sm .dual-nav-first-layer { - background-color: var(--phoenix-dual-nav-first-layer-bg); - padding-left: 2rem; - padding-right: 2rem - } -} - -.dual-nav .navbar-top.navbar-expand-xs { - padding-left: 0; - padding-right: 0 -} - -.dual-nav .navbar-top.navbar-expand-xs~.content { - --phoenix-navbar-top-height: 7.3rem -} - -.dual-nav .navbar-top.navbar-expand-xs .navbar-top-collapse { - border-top: 1px solid var(--phoenix-dual-nav-border-color); - padding: .5rem 2rem -} - -.dual-nav .navbar-top.navbar-expand-xs .navbar-top-collapse.show { - padding-bottom: .5rem -} - -.dual-nav .navbar-top.navbar-expand-xs .dual-nav-first-layer { - background-color: var(--phoenix-dual-nav-first-layer-bg); - padding-left: 2rem; - padding-right: 2rem -} - -.navbar-bottom { - position: fixed; - bottom: 0; - right: 0; - left: 0; - background: var(--phoenix-white); - -webkit-filter: drop-shadow(0px -4px 40px rgba(var(--phoenix-gray-700), 0.07)); - filter: drop-shadow(0px -4px 40px rgba(var(--phoenix-gray-700), 0.07)); - border-top: 1px solid var(--phoenix-gray-300); - padding: 1rem 1.5rem; - z-index: 1020; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.navbar-bottom .nav { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 100%; - max-width: 420px -} - -@media(min-width: 576px) { - .navbar-bottom .nav { - max-width:100% - } -} - -.navbar-bottom .nav .nav-link { - line-height: 1; - color: var(--phoenix-gray-700); - font-size: 1.25rem; - padding: 0; - height: 3rem; - width: 3rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -@media(min-width: 576px) { - .navbar-bottom .nav .nav-link:not(:last-child) { - margin-right:1rem - } -} - -.navbar-bottom .nav .nav-link .nav-label { - font-weight: 700; - display: none -} - -.navbar-bottom .nav .nav-link.active { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-right: .5rem; - text-align: center; - border-radius: 50rem; - background: var(--phoenix-gray-100); - color: var(--phoenix-primary) -} - -.navbar-bottom .nav .nav-link.active .nav-icon { - margin-right: .5rem -} - -.navbar-bottom .nav .nav-link.active .nav-label { - display: inline-block -} - -@media(min-width: 576px) { - .navbar-bottom .nav .nav-link.active { - width:auto; - padding: 0 1.5rem - } - - .navbar-bottom .nav .nav-link.active:not(:last-child) { - margin-right: 2rem - } -} - -@media(min-width: 576px) { - .navbar-bottom .nav .nav-link.active { - -webkit-box-flex:0; - -ms-flex: 0; - flex: 0; - padding: 0 4rem - } -} - -.navbar-top.navbar-slim { - min-height: 1.7rem -} - -.navbar-top.navbar-slim .navbar-toggler-humburger-icon { - height: 1rem -} - -.navbar-top.navbar-slim .navbar-toggler-humburger-icon:hover,.navbar-top.navbar-slim .navbar-toggler-humburger-icon:focus { - background-color: rgba(0,0,0,0) -} - -.navbar-top.navbar-slim .navbar-logo { - height: 1.7rem -} - -.navbar-top.navbar-slim .navbar-brand { - margin-bottom: 0; - color: #e5780b; - font-size: larger -} - -.navbar-top.navbar-slim .navbar-nav-icons>.nav-item>.nav-link { - padding: .25rem .5rem -} - -@media(min-width: 1540px) { - .navbar-top.navbar-expand-xxl.navbar-slim .nav-link.dropdown-toggle { - padding-top:.5rem; - padding-bottom: .4rem - } -} - -@media(min-width: 1200px) { - .navbar-top.navbar-expand-xl.navbar-slim .nav-link.dropdown-toggle { - padding-top:.5rem; - padding-bottom: .4rem - } -} - -@media(min-width: 992px) { - .navbar-top.navbar-expand-lg.navbar-slim .nav-link.dropdown-toggle { - padding-top:.5rem; - padding-bottom: .4rem - } -} - -@media(min-width: 768px) { - .navbar-top.navbar-expand-md.navbar-slim .nav-link.dropdown-toggle { - padding-top:.5rem; - padding-bottom: .4rem - } -} - -@media(min-width: 576px) { - .navbar-top.navbar-expand-sm.navbar-slim .nav-link.dropdown-toggle { - padding-top:.5rem; - padding-bottom: .4rem - } -} - -.navbar-top.navbar-expand-xs.navbar-slim .nav-link.dropdown-toggle { - padding-top: .5rem; - padding-bottom: .4rem -} - -.navbar .container-small { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -ms-flex-wrap: wrap; - flex-wrap: wrap -} - -.navbar .navbar-logo { - height: 4rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center -} - -.navbar .nav-link { - outline: none -} - -.navbar .dropdown-menu { - overflow: visible; - left: -0.5625rem -} - -.navbar .dropdown-menu.navbar-dropdown-caret:after { - content: ""; - position: absolute; - z-index: -1; - width: 1.5rem; - height: 1.5rem; - background: var(--phoenix-black); - top: -10px; - left: 1.5rem; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - background: var(--phoenix-white); - background: inherit; - border-top-left-radius: .25rem; - border-width: 1px 0 0 1px; - border-style: solid; - border-color: var(--phoenix-gray-300); - -webkit-box-shadow: 0 .125rem .25rem rgba(0,0,0,.075); - box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) -} - -.navbar .dropdown-menu.dropdown-menu-end.navbar-dropdown-caret { - left: auto; - right: -0.5625rem -} - -.navbar .dropdown-menu.dropdown-menu-end.navbar-dropdown-caret:after { - right: .9rem; - left: auto -} - -.navbar.navbar-slim .dropdown-menu.navbar-dropdown-caret:after { - width: 1rem; - height: 1rem; - top: -9px -} - -.navbar .dropdown-item { - font-weight: 500 -} - -.navbar .dropdown-item:hover,.navbar .dropdown-item:focus { - background-color: var(--phoenix-gray-200); - color: var(--phoenix-gray-1000) -} - -.navbar-toggler-humburger-icon { - height: 2.25rem; - width: 2.25rem; - padding: .3125rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-radius: 50%; - border: 0; - margin-right: .6125rem -} - -.navbar-toggler-humburger-icon:hover,.navbar-toggler-humburger-icon:focus { - background-color: var(--phoenix-gray-300) -} - -.navbar-toggle-icon { - position: relative; - height: .125rem; - width: 1.125rem; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - display: block; - top: -0.3125rem; - padding-right: 0 -} - -.navbar-toggle-icon .toggle-line { - display: block; - height: 100%; - border-radius: .375rem; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - background-color: var(--phoenix-hamburger-menu-color) -} - -.navbar-toggle-icon:after,.navbar-toggle-icon:before { - content: ""; - position: absolute; - height: .125rem; - background-color: var(--phoenix-hamburger-menu-color); - left: 0; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - border-radius: .375rem; - width: 100% -} - -.navbar-toggle-icon:before { - top: .3125rem -} - -.navbar-toggle-icon:after { - top: .625rem -} - -.nav-vertical .nav .nav-link { - padding-left: 1.5rem -} - -.nav-vertical .nav-link { - padding: .5rem; - border-radius: .375rem; - color: var(--phoenix-gray-800) -} - -.nav-vertical .nav-link:visited,.nav-vertical .nav-link:active,.nav-vertical .nav-link:focus,.nav-vertical .nav-link:hover { - background-color: var(--phoenix-gray-200); - color: var(--phoenix-dark) -} - -.nav-vertical.doc-nav .nav-link.active { - background-color: var(--phoenix-gray-200) -} - -@media(max-width: 1199.98px) { - .nav-vertical.nav-vertical .nav-link { - padding-left:1.5rem - } -} - -.ecommerce-topbar .navbar-nav .dropdown-menu { - position: absolute -} - -.ecommerce-navbar .nav-item { - white-space: nowrap -} - -.ecommerce-navbar .nav-item .nav-link { - color: var(--phoenix-gray-700); - font-size: .8rem; - font-weight: 600; - padding: 0 15px -} - -.ecommerce-navbar .nav-item .nav-link.active,.ecommerce-navbar .nav-item .nav-link:hover { - color: var(--phoenix-black) -} - -:root:not(.dark) .navbar-darker .search-box .btn-close { - background: rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat -} - -:root:not(.dark) .navbar-darker .search-box .search-input:focus { - border-color: #373e53 -} - -.dark .btn-close,.dark .picmo__popupContainer.picmo__light .btn-close { - background: rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat -} - -.search-box { - position: relative; - font-size: .8rem; - width: 20rem -} - -.search-box .search-box-icon { - position: absolute; - color: var(--phoenix-gray-500); - top: 50%; - left: 1rem; - -webkit-transform: translateY(-48%); - -ms-transform: translateY(-48%); - transform: translateY(-48%) -} - -.search-box .search-input { - padding-left: 2.5rem; - padding-right: 2rem; - border-radius: .375rem; - -webkit-box-shadow: none; - box-shadow: none -} - -.search-box .search-input::-webkit-search-cancel-button { - display: none -} - -.search-box [data-bs-toggle=search]:not(.show)+[data-bs-dismiss=search] { - display: none -} - -.search-box .file-thumbnail { - width: 1.75rem; - height: 1.75rem -} - -.search-box.ecommerce-search-box { - width: 31.25rem -} - -.search-box.ecommerce-search-box .search-input { - border-radius: 3rem -} - -.search-box.navbar-top-search-box .search-input:focus { - border-color: var(--phoenix-gray-300) -} - -.search-box.navbar-top-search-box .show .search-input { - border-radius: .375rem .375rem 0 0 !important -} - -.search-box.navbar-top-search-box .dropdown-menu { - margin-top: 0 -} - -.search-box.navbar-top-search-box .dropdown-menu.show { - border-top: 0 !important; - border-top-left-radius: 0; - border-top-right-radius: 0 -} - -.search-box.navbar-top-search-box .dropdown-menu .dropdown-item:hover { - background: var(--phoenix-gray-100) -} - -.avatar { - position: relative; - display: inline-block; - vertical-align: middle -} - -.avatar .avatar-placeholder { - background: var(--phoenix-gray-200) -} - -.avatar .avatar-name { - position: absolute; - text-align: center; - color: var(--phoenix-avatar-name-color); - background-color: var(--phoenix-primary-100); - font-weight: bold; - text-transform: uppercase; - display: block -} - -.avatar .avatar-name>span { - position: absolute; - top: 53%; - left: 50%; - -webkit-transform: translate3d(-50%, -50%, 0); - transform: translate3d(-50%, -50%, 0); - font-weight: 900 !important -} - -.avatar .avatar-emoji { - height: 100%; - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.avatar .avatar-emoji>span { - -webkit-transform: translateY(2%); - -ms-transform: translateY(2%); - transform: translateY(2%); - display: inline-block -} - -.avatar img { - display: block -} - -.avatar img,.avatar .avatar-name { - width: 100%; - height: 100% -} - -.avatar img { - -o-object-fit: cover; - object-fit: cover -} - -.avatar.avatar-bordered.avatar-s img,.avatar.avatar-bordered.avatar-s .avatar-name { - border: 1px solid -} - -.avatar.avatar-bordered.avatar-m img,.avatar.avatar-bordered.avatar-m .avatar-name { - border: 1px solid -} - -.avatar.avatar-bordered.avatar-l img,.avatar.avatar-bordered.avatar-l .avatar-name { - border: 2px solid var(--phoenix-avatar-status-border-color) -} - -.avatar.avatar-bordered.avatar-xl img,.avatar.avatar-bordered.avatar-xl .avatar-name { - border: 3px solid var(--phoenix-avatar-status-border-color) -} - -.avatar[class*=status-]:before { - content: ""; - position: absolute; - border-radius: 100%; - z-index: 1 -} - -.avatar.status-online:before { - background-color: var(--phoenix-success) -} - -.avatar.status-offline:before { - background-color: var(--phoenix-secondary) -} - -.avatar.status-away:before { - background-color: var(--phoenix-warning) -} - -.avatar.status-do-not-disturb:before { - background-color: var(--phoenix-danger) -} - -.avatar .avatar-button { - background-color: var(--phoenix-avatar-button-bg) !important; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; - border: 1px solid var(--phoenix-avatar-button-bg); - font-size: 12px -} - -.avatar .avatar-button:hover,.avatar .avatar-button:focus { - background-color: var(--phoenix-avatar-button-hover-bg) !important -} - -.avatar:hover .overlay-icon { - opacity: 1 -} - -.avatar-s { - height: 1.5rem; - width: 1.5rem -} - -.avatar-s .avatar-name { - font-size: 0.7894736842rem; - line-height: 1.2 -} - -.avatar-s .avatar-emoji { - font-size: 1.5rem -} - -.avatar-s[class*=status-]:before { - border: 1px solid var(--phoenix-avatar-status-border-color); - height: 6px; - width: 6px; - right: 1px; - bottom: 1px -} - -.avatar-s .rounded-soft { - border-radius: .25rem !important -} - -.avatar-s .rounded-none { - border-radius: 0 !important -} - -.avatar-m { - height: 2rem; - width: 2rem -} - -.avatar-m .avatar-name { - font-size: 1.0526315789rem; - line-height: 1.2 -} - -.avatar-m .avatar-emoji { - font-size: 2rem -} - -.avatar-m[class*=status-]:before { - border: 1px solid var(--phoenix-avatar-status-border-color); - height: 8px; - width: 8px; - right: 1px; - bottom: 1px -} - -.avatar-m .rounded-soft { - border-radius: .3333333333rem !important -} - -.avatar-m .rounded-none { - border-radius: 0 !important -} - -.avatar-l { - height: 2.5rem; - width: 2.5rem -} - -.avatar-l .avatar-name { - font-size: 1.3157894737rem; - line-height: 1.2 -} - -.avatar-l .avatar-emoji { - font-size: 2.5rem -} - -.avatar-l[class*=status-]:before { - border: 1px solid var(--phoenix-avatar-status-border-color); - height: 9px; - width: 9px; - right: 2px; - bottom: 2px -} - -.avatar-l .rounded-soft { - border-radius: .4166666667rem !important -} - -.avatar-l .rounded-none { - border-radius: 0 !important -} - -.avatar-xl { - height: 3rem; - width: 3rem -} - -.avatar-xl .avatar-name { - font-size: 1.5789473684rem; - line-height: 1.2 -} - -.avatar-xl .avatar-emoji { - font-size: 3rem -} - -.avatar-xl[class*=status-]:before { - border: 2px solid var(--phoenix-avatar-status-border-color); - height: 12px; - width: 12px; - right: 1px; - bottom: 1px -} - -.avatar-xl .rounded-soft { - border-radius: .5rem !important -} - -.avatar-xl .rounded-none { - border-radius: 0 !important -} - -.avatar-2xl { - height: 3.5rem; - width: 3.5rem -} - -.avatar-2xl .avatar-name { - font-size: 1.8421052632rem; - line-height: 1.2 -} - -.avatar-2xl .avatar-emoji { - font-size: 3.5rem -} - -.avatar-2xl[class*=status-]:before { - border: 2px solid var(--phoenix-avatar-status-border-color); - height: 16px; - width: 16px; - right: -3px; - bottom: -3px -} - -.avatar-2xl .rounded-soft { - border-radius: .5833333333rem !important -} - -.avatar-2xl .rounded-none { - border-radius: 0 !important -} - -.avatar-3xl { - height: 4.5rem; - width: 4.5rem -} - -.avatar-3xl .avatar-name { - font-size: 2.3684210526rem; - line-height: 1.2 -} - -.avatar-3xl .avatar-emoji { - font-size: 4.5rem -} - -.avatar-3xl[class*=status-]:before { - border: 3px solid var(--phoenix-avatar-status-border-color); - height: 18px; - width: 18px; - right: 0; - bottom: 0 -} - -.avatar-3xl .rounded-soft { - border-radius: .75rem !important -} - -.avatar-3xl .rounded-none { - border-radius: 0 !important -} - -.avatar-4xl { - height: 6rem; - width: 6rem -} - -.avatar-4xl .avatar-name { - font-size: 3.1578947368rem; - line-height: 1.2 -} - -.avatar-4xl .avatar-emoji { - font-size: 6rem -} - -.avatar-4xl[class*=status-]:before { - border: 3px solid var(--phoenix-avatar-status-border-color); - height: 24px; - width: 24px; - right: 3px; - bottom: 3px -} - -.avatar-4xl .rounded-soft { - border-radius: 1rem !important -} - -.avatar-4xl .rounded-none { - border-radius: 0 !important -} - -.avatar-5xl { - height: 9.375rem; - width: 9.375rem -} - -.avatar-5xl .avatar-name { - font-size: 4.9342105263rem; - line-height: 1.2 -} - -.avatar-5xl .avatar-emoji { - font-size: 9.375rem -} - -.avatar-5xl[class*=status-]:before { - border: 4px solid var(--phoenix-avatar-status-border-color); - height: 32px; - width: 32px; - right: 8px; - bottom: 8px -} - -.avatar-5xl .rounded-soft { - border-radius: 1.5625rem !important -} - -.avatar-5xl .rounded-none { - border-radius: 0 !important -} - -.avatar-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap -} - -.avatar-group .avatar-s:not(:first-child),.avatar-group .avatar-m:not(:first-child),.avatar-group .avatar-l:not(:first-child),.avatar-group .avatar-xl:not(:first-child),.avatar-group .avatar-2xl:not(:first-child),.avatar-group .dropdown-toggle:not(:first-child) { - margin-left: -0.5rem -} - -.avatar-group .avatar-3x:not(:first-child) { - margin-left: -1rem -} - -.avatar-group .avatar-4x:not(:first-child) { - margin-left: -1.5rem -} - -.avatar-group .avatar-5x:not(:first-child) { - margin-left: -2rem -} - -.avatar-group-dense .avatar-s:not(:first-child) { - margin-left: -0.6rem -} - -.avatar-group-dense .avatar-m:not(:first-child) { - margin-left: -0.8rem -} - -.avatar-group-dense .avatar-l:not(:first-child),.avatar-group-dense .avatar-xl:not(:first-child),.avatar-group-dense .avatar-2xl:not(:first-child) { - margin-left: -1rem -} - -.avatar-group-dense .avatar-3xl:not(:first-child) { - margin-left: -1.5rem -} - -.avatar-group-dense .avatar-4xl:not(:first-child) { - margin-left: -2.2rem -} - -.avatar-group-dense .avatar-5xl:not(:first-child) { - margin-left: -3.6rem -} - -.avatar-dropdown-menu .nav .nav-link:hover { - background: var(--phoenix-gray-100) -} - -.modal-title { - font-size: 1.25rem; - color: var(--phoenix-gray-800) -} - -@media(min-width: 768px) { - .modal-md { - --phoenix-modal-width: 768px - } -} - -.accordion { - --phoenix-accordion-color: #222834 -} - -.accordion-button { - font-weight: 700 -} - -.accordion-button.collapsed { - color: var(--phoenix-primary) -} - -.accordion-item { - border-bottom: 1px solid var(--phoenix-gray-300); - padding: .5rem -} - -.standard-accordion .accordion-button { - padding: .5rem 0; - color: #141824 -} - -.standard-accordion .accordion-button::before { - content: ""; - width: 1.25rem; - height: 1.25rem; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%233874FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-plus-circle'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='16'%3E%3C/line%3E%3Cline x1='8' y1='12' x2='16' y2='12'%3E%3C/line%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-size: 1.25rem; - -webkit-transition: -webkit-transform .2s ease-in-out; - transition: -webkit-transform .2s ease-in-out; - -o-transition: transform .2s ease-in-out; - transition: transform .2s ease-in-out; - transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out; - margin-right: .5rem -} - -.standard-accordion .accordion-button::after { - display: none -} - -.standard-accordion .accordion-button:not(.collapsed)::before { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%233874FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-minus-circle'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='8' y1='12' x2='16' y2='12'%3E%3C/line%3E%3C/svg%3E"); - -webkit-transform: rotate(-180deg); - -ms-transform: rotate(-180deg); - transform: rotate(-180deg) -} - -.standard-accordion .accordion-body { - padding-top: 1rem; - padding-bottom: 1rem; - padding-left: 1.5rem; - margin-left: .25rem -} - -.standard-accordion .accordion-item { - border-bottom: none -} - -.iconic-accordion .accordion-button { - color: #141824; - padding: .5rem 0; - margin: .25rem 0 -} - -.iconic-accordion .accordion-button::before { - content: ""; - width: 3rem; - height: 3rem; - padding: 4px; - border-radius: 50%; - background: var(--phoenix-primary); - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%233874FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-plus-circle'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='16'%3E%3C/line%3E%3Cline x1='8' y1='12' x2='16' y2='12'%3E%3C/line%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-size: 1.25rem; - background-position: center; - -webkit-transition: -webkit-transform .2s ease-in-out; - transition: -webkit-transform .2s ease-in-out; - -o-transition: transform .2s ease-in-out; - transition: transform .2s ease-in-out; - transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out; - margin-right: .5rem -} - -.iconic-accordion .accordion-button:not(.collapsed)::before { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%233874FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-minus-circle'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='8' y1='12' x2='16' y2='12'%3E%3C/line%3E%3C/svg%3E"); - -webkit-transform: rotate(-180deg); - -ms-transform: rotate(-180deg); - transform: rotate(-180deg) -} - -.iconic-accordion .accordion-button::after { - background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-200 -200 900 900'%3E%3Cpath fill='%233874FF' d='M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z'%3E%3C/path%3E%3C/svg%3E") -} - -.iconic-accordion .accordion-button:not(.collapsed)::after { - background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-200 -200 900 900'%3E%3Cpath fill='%233874FF' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'%3E%3C/path%3E%3C/svg%3E") -} - -.iconic-accordion .accordion-body { - padding-top: 1rem; - padding-bottom: 1rem; - padding-left: 3rem; - margin-left: .5rem -} - -.iconic-accordion .accordion-item { - border-bottom: none -} - -.dot-accordion .accordion-button { - padding: .5rem 0 -} - -.dot-accordion .accordion-button::before { - content: ""; - width: .375rem; - height: .375rem; - border-radius: 50%; - background-color: var(--phoenix-gray-400); - margin-right: .5rem -} - -.dot-accordion .accordion-button::after { - display: none -} - -.dot-accordion .accordion-item { - border-bottom: none -} - -.breadcrumb { - font-weight: 700 -} - -@media(min-width: 1200px) { - .breadcrumb-sticky-top { - position:sticky; - top: calc(var(--phoenix-navbar-top-height) + 2rem) - } -} - -.code-block { - padding: 0; - overflow: auto -} - -.code-block pre[class*=language-] { - padding: 1.6rem; - border: 0; - margin: 0; - border-radius: 0 -} - -:not(pre)>code[class*=language-],pre[class*=language-] { - background-color: var(--phoenix-docs-language-bg) -} - -code.language-html:first-child { - display: block -} - -code[class*=language-],pre[class*=language-] { - font-family: "SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace; - font-size: .8rem; - border-radius: 0 -} - -pre[class*=language-] { - margin: 0; - padding: 1.5rem -} - -.contains-anchor a { - opacity: 0; - -webkit-transition-property: opacity; - -o-transition-property: opacity; - transition-property: opacity -} - -.contains-anchor:hover a,.contains-anchor:focus a { - opacity: 1; - text-decoration: none -} - -.components-nav { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; - font-size: .85rem -} - -.component-example { - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.component-example [class^=border] { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 8rem; - height: 8rem; - margin: .75rem; - background-color: var(--phoenix-gray-100) -} - -.border-component [class^=border],.border-component [class^=rounded-] { - display: inline-block; - width: 5rem; - height: 5rem; - margin: .25rem -} - -.border-component [class^=border] { - background-color: var(--phoenix-gray-100) -} - -.border-component [class^=rounded-] { - background-color: var(--phoenix-gray-200) -} - -#loaders [class^=spinner] { - margin-right: .5rem -} - -.doc-tab-nav a.btn,.doc-tab-nav [data-list] a.page,[data-list] .doc-tab-nav a.page,.doc-tab-nav .table-list a.page,.table-list .doc-tab-nav a.page,.doc-tab-nav .tox a.tox-button,.tox .doc-tab-nav a.tox-button,.doc-tab-nav .tox a.tox-button-secondary,.tox .doc-tab-nav a.tox-button-secondary,.doc-tab-nav .tox .tox-dialog__footer a.tox-button--secondary,.tox .tox-dialog__footer .doc-tab-nav a.tox-button--secondary,.doc-tab-nav .tox .tox-dialog__footer a.tox-button:last-child,.tox .tox-dialog__footer .doc-tab-nav a.tox-button:last-child,.doc-tab-nav .google-map-control-btn a.zoomIn,.google-map-control-btn .doc-tab-nav a.zoomIn,.doc-tab-nav .google-map-control-btn a.zoomOut,.google-map-control-btn .doc-tab-nav a.zoomOut { - width: 8.4375rem; - text-align: center -} - -.doc-tab-nav .active { - display: none -} - -.code-btn:not(.collapsed) { - display: none -} - -.code-btn.collapsed+.preview-btn { - display: none -} - -.opacity-docs [class^=opacity-] { - height: 100px; - width: 100px; - background-color: var(--phoenix-primary); - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.overflow-docs [class^=overflow-] { - max-height: 70px; - max-width: 22%; - background-color: var(--phoenix-gray-100); - display: inline-block; - padding: 1rem; - margin-right: .5rem -} - -.dropdown-menu { - font-size: .8rem -} - -.dropdown-caret-none:after,.dropdown-caret-none:before { - display: none !important -} - -.dropdown-md { - min-width: 16.625rem -} - -.hover-actions { - display: none; - position: absolute -} - -.hover-actions.show { - display: inline-block -} - -.hover-actions.show+.hover-hide { - opacity: 1; - -webkit-transition: opacity .3s ease; - -o-transition: opacity .3s ease; - transition: opacity .3s ease -} - -a[href].bg-200:hover,a[href].bg-200:focus { - background-color: var(--phoenix-gray-300) !important -} - -.hover-primary:hover,.hover-primary:focus { - color: #3874ff !important -} - -.hover-danger:hover,.hover-danger:focus { - color: #ed2000 !important -} - -.hover-shadow:hover,.hover-shadow:focus { - -webkit-box-shadow: 0 0 .5rem 0 rgba(0,0,0,.1); - box-shadow: 0 0 .5rem 0 rgba(0,0,0,.1) -} - -.hover-actions-trigger { - position: relative -} - -.hover-actions-trigger .inbox-link { - color: inherit; - text-decoration: none -} - -.hover-actions-trigger:hover .hover-actions,.hover-actions-trigger:focus .hover-actions { - z-index: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-animation: fade .15s ease-in-out; - animation: fade .15s ease-in-out -} - -.hover-actions-trigger:hover .hover-actions.btn,.hover-actions-trigger:hover [data-list] .hover-actions.page,[data-list] .hover-actions-trigger:hover .hover-actions.page,.hover-actions-trigger:hover .table-list .hover-actions.page,.table-list .hover-actions-trigger:hover .hover-actions.page,.hover-actions-trigger:hover .tox .hover-actions.tox-button,.tox .hover-actions-trigger:hover .hover-actions.tox-button,.hover-actions-trigger:hover .tox .hover-actions.tox-button-secondary,.tox .hover-actions-trigger:hover .hover-actions.tox-button-secondary,.hover-actions-trigger:hover .tox .tox-dialog__footer .hover-actions.tox-button--secondary,.tox .tox-dialog__footer .hover-actions-trigger:hover .hover-actions.tox-button--secondary,.hover-actions-trigger:hover .google-map-control-btn .hover-actions.zoomIn,.google-map-control-btn .hover-actions-trigger:hover .hover-actions.zoomIn,.hover-actions-trigger:hover .google-map-control-btn .hover-actions.zoomOut,.google-map-control-btn .hover-actions-trigger:hover .hover-actions.zoomOut,.hover-actions-trigger:focus .hover-actions.btn,.hover-actions-trigger:focus [data-list] .hover-actions.page,[data-list] .hover-actions-trigger:focus .hover-actions.page,.hover-actions-trigger:focus .table-list .hover-actions.page,.table-list .hover-actions-trigger:focus .hover-actions.page,.hover-actions-trigger:focus .tox .hover-actions.tox-button,.tox .hover-actions-trigger:focus .hover-actions.tox-button,.hover-actions-trigger:focus .tox .hover-actions.tox-button-secondary,.tox .hover-actions-trigger:focus .hover-actions.tox-button-secondary,.hover-actions-trigger:focus .tox .tox-dialog__footer .hover-actions.tox-button--secondary,.tox .tox-dialog__footer .hover-actions-trigger:focus .hover-actions.tox-button--secondary,.hover-actions-trigger:focus .google-map-control-btn .hover-actions.zoomIn,.google-map-control-btn .hover-actions-trigger:focus .hover-actions.zoomIn,.hover-actions-trigger:focus .google-map-control-btn .hover-actions.zoomOut,.google-map-control-btn .hover-actions-trigger:focus .hover-actions.zoomOut { - display: inline-block -} - -.hover-actions-trigger:hover .hover-hide,.hover-actions-trigger:focus .hover-hide { - opacity: 0 -} - -.hover-actions-trigger:hover .hover-xs-hide,.hover-actions-trigger:focus .hover-xs-hide { - opacity: 0 -} - -.hover-actions-trigger:hover .hover-xs-show,.hover-actions-trigger:focus .hover-xs-show { - opacity: 1 -} - -@media(min-width: 576px) { - .hover-actions-trigger:hover .hover-sm-hide,.hover-actions-trigger:focus .hover-sm-hide { - opacity:0 - } -} - -@media(min-width: 576px) { - .hover-actions-trigger:hover .hover-sm-show,.hover-actions-trigger:focus .hover-sm-show { - opacity:1 - } -} - -@media(min-width: 768px) { - .hover-actions-trigger:hover .hover-md-hide,.hover-actions-trigger:focus .hover-md-hide { - opacity:0 - } -} - -@media(min-width: 768px) { - .hover-actions-trigger:hover .hover-md-show,.hover-actions-trigger:focus .hover-md-show { - opacity:1 - } -} - -@media(min-width: 992px) { - .hover-actions-trigger:hover .hover-lg-hide,.hover-actions-trigger:focus .hover-lg-hide { - opacity:0 - } -} - -@media(min-width: 992px) { - .hover-actions-trigger:hover .hover-lg-show,.hover-actions-trigger:focus .hover-lg-show { - opacity:1 - } -} - -@media(min-width: 1200px) { - .hover-actions-trigger:hover .hover-xl-hide,.hover-actions-trigger:focus .hover-xl-hide { - opacity:0 - } -} - -@media(min-width: 1200px) { - .hover-actions-trigger:hover .hover-xl-show,.hover-actions-trigger:focus .hover-xl-show { - opacity:1 - } -} - -@media(min-width: 1540px) { - .hover-actions-trigger:hover .hover-xxl-hide,.hover-actions-trigger:focus .hover-xxl-hide { - opacity:0 - } -} - -@media(min-width: 1540px) { - .hover-actions-trigger:hover .hover-xxl-show,.hover-actions-trigger:focus .hover-xxl-show { - opacity:1 - } -} - -.hover-bg-soft:hover { - background-color: var(--phoenix-gray-soft) !important -} - -.hover-bg-100:hover { - background-color: var(--phoenix-gray-100) !important -} - -.hover-bg-200:hover { - background-color: var(--phoenix-gray-200) !important -} - -.hover-bg-300:hover { - background-color: var(--phoenix-gray-300) !important -} - -.hover-bg-400:hover { - background-color: var(--phoenix-gray-400) !important -} - -.hover-bg-500:hover { - background-color: var(--phoenix-gray-500) !important -} - -.hover-bg-600:hover { - background-color: var(--phoenix-gray-600) !important -} - -.hover-bg-700:hover { - background-color: var(--phoenix-gray-700) !important -} - -.hover-bg-800:hover { - background-color: var(--phoenix-gray-800) !important -} - -.hover-bg-900:hover { - background-color: var(--phoenix-gray-900) !important -} - -.hover-bg-1000:hover { - background-color: var(--phoenix-gray-1000) !important -} - -.hover-bg-1100:hover { - background-color: var(--phoenix-gray-1100) !important -} - -.hover-text-soft:hover { - color: var(--phoenix-gray-soft) !important -} - -.hover-text-100:hover { - color: var(--phoenix-gray-100) !important -} - -.hover-text-200:hover { - color: var(--phoenix-gray-200) !important -} - -.hover-text-300:hover { - color: var(--phoenix-gray-300) !important -} - -.hover-text-400:hover { - color: var(--phoenix-gray-400) !important -} - -.hover-text-500:hover { - color: var(--phoenix-gray-500) !important -} - -.hover-text-600:hover { - color: var(--phoenix-gray-600) !important -} - -.hover-text-700:hover { - color: var(--phoenix-gray-700) !important -} - -.hover-text-800:hover { - color: var(--phoenix-gray-800) !important -} - -.hover-text-900:hover { - color: var(--phoenix-gray-900) !important -} - -.hover-text-1000:hover { - color: var(--phoenix-gray-1000) !important -} - -.hover-text-1100:hover { - color: var(--phoenix-gray-1100) !important -} - -.hover-text-primary:hover { - color: var(--phoenix--primary) !important -} - -.hover-text-secondary:hover { - color: var(--phoenix--secondary) !important -} - -.hover-text-success:hover { - color: var(--phoenix--success) !important -} - -.hover-text-info:hover { - color: var(--phoenix--info) !important -} - -.hover-text-warning:hover { - color: var(--phoenix--warning) !important -} - -.hover-text-danger:hover { - color: var(--phoenix--danger) !important -} - -.hover-text-light:hover { - color: var(--phoenix--light) !important -} - -.hover-text-dark:hover { - color: var(--phoenix--dark) !important -} - -.d-toggle-container .d-none-hover { - display: block !important -} - -.d-toggle-container .d-block-hover { - display: none !important -} - -.d-toggle-container:hover .d-none-hover,.d-toggle-container:focus .d-none-hover { - display: none !important -} - -.d-toggle-container:hover .d-block-hover,.d-toggle-container:focus .d-block-hover { - display: block !important -} - -@-webkit-keyframes fade { - 0% { - opacity: 0 - } - - 100% { - opacity: 1 - } -} - -@keyframes fade { - 0% { - opacity: 0 - } - - 100% { - opacity: 1 - } -} - -.icon-item { - border-radius: 50%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - height: 2.5rem; - width: 2.5rem; - width: 2.5rem -} - -.icon-item.icon-item-xs { - height: .75rem; - width: .75rem -} - -.icon-item.icon-item-sm { - height: 1.5rem; - width: 1.5rem -} - -.icon-item.icon-item-md { - height: 2.5rem; - width: 2.5rem -} - -.icon-item.icon-item-lg { - height: 2.75rem; - width: 2.75rem -} - -.icon-nav-item { - text-align: center; - color: var(--phoenix-gray-900); - font-weight: 600; - font-size: .8rem -} - -.icon-nav-item:not(:first-child) { - margin-left: 15px -} - -.icon-nav-item:not(:last-child) { - margin-right: 15px -} - -.icon-nav-item .icon-container { - background: var(--phoenix-primary-100); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 58px; - height: 58px; - border-radius: 8px -} - -.icon-nav-item:hover .icon-container { - color: var(--phoenix-white); - background: var(--phoenix-primary) -} - -.icon-nav-item:hover .nav-label { - color: var(--phoenix-gray-800) -} - -.fa-icon-wait { - opacity: 0 -} - -.fontawesome-i2svg-active .fa-icon-wait { - opacity: 1 -} - -.hover-actions-trigger.btn-reveal-trigger .hover-actions { - right: 3rem -} - -[dir=rtl] .hover-actions-trigger.btn-reveal-trigger .hover-actions { - right: 3rem -} - -@media(min-width: 1200px) { - .todo-list .to-do-list-body { - height:270px - } -} - -.white-space-nowrap { - white-space: nowrap -} - -.table>thead>tr>th { - padding-top: .625rem; - padding-bottom: .625rem; - line-height: 1 -} - -.table>thead>tr>th:last-child { - padding-right: 0 -} - -.table>tbody>tr>td:first-child { - padding-left: 0 -} - -.table>tbody>tr>td:last-child { - padding-right: 0 -} - -.scrollbar,.offcanvas.faq-sidebar,.tox .tox-toolbar--scrolling,.picmo__picker.picmo__picker .picmo__emojiArea,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content,.scrollbar-overlay { - overflow: auto -} - -.scrollbar::-webkit-scrollbar,.offcanvas.faq-sidebar::-webkit-scrollbar,.tox .tox-toolbar--scrolling::-webkit-scrollbar,.picmo__picker.picmo__picker .picmo__emojiArea::-webkit-scrollbar,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content::-webkit-scrollbar,.scrollbar-overlay::-webkit-scrollbar { - visibility: hidden; - -webkit-appearance: none; - width: 6px; - height: 6px; - background-color: rgba(0,0,0,0) -} - -.scrollbar::-webkit-scrollbar-thumb,.offcanvas.faq-sidebar::-webkit-scrollbar-thumb,.tox .tox-toolbar--scrolling::-webkit-scrollbar-thumb,.picmo__picker.picmo__picker .picmo__emojiArea::-webkit-scrollbar-thumb,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content::-webkit-scrollbar-thumb,.scrollbar-overlay::-webkit-scrollbar-thumb { - visibility: hidden; - border-radius: 3px; - background-color: var(--phoenix-scrollbar-bg) -} - -.scrollbar:hover::-webkit-scrollbar,.offcanvas.faq-sidebar:hover::-webkit-scrollbar,.tox .tox-toolbar--scrolling:hover::-webkit-scrollbar,.picmo__picker.picmo__picker .picmo__emojiArea:hover::-webkit-scrollbar,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:hover::-webkit-scrollbar,.scrollbar:hover::-webkit-scrollbar-thumb,.offcanvas.faq-sidebar:hover::-webkit-scrollbar-thumb,.tox .tox-toolbar--scrolling:hover::-webkit-scrollbar-thumb,.picmo__picker.picmo__picker .picmo__emojiArea:hover::-webkit-scrollbar-thumb,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:hover::-webkit-scrollbar-thumb,.scrollbar:focus::-webkit-scrollbar,.offcanvas.faq-sidebar:focus::-webkit-scrollbar,.tox .tox-toolbar--scrolling:focus::-webkit-scrollbar,.picmo__picker.picmo__picker .picmo__emojiArea:focus::-webkit-scrollbar,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:focus::-webkit-scrollbar,.scrollbar:focus::-webkit-scrollbar-thumb,.offcanvas.faq-sidebar:focus::-webkit-scrollbar-thumb,.tox .tox-toolbar--scrolling:focus::-webkit-scrollbar-thumb,.picmo__picker.picmo__picker .picmo__emojiArea:focus::-webkit-scrollbar-thumb,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:focus::-webkit-scrollbar-thumb,.scrollbar-overlay:hover::-webkit-scrollbar,.scrollbar-overlay:hover::-webkit-scrollbar-thumb,.scrollbar-overlay:focus::-webkit-scrollbar,.scrollbar-overlay:focus::-webkit-scrollbar-thumb { - visibility: visible -} - -.navbar-vibrant .scrollbar,.navbar-vibrant .offcanvas.faq-sidebar,.navbar-vibrant .tox .tox-toolbar--scrolling,.tox .navbar-vibrant .tox-toolbar--scrolling,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content { - overflow: auto -} - -.navbar-vibrant .scrollbar::-webkit-scrollbar,.navbar-vibrant .offcanvas.faq-sidebar::-webkit-scrollbar,.navbar-vibrant .tox .tox-toolbar--scrolling::-webkit-scrollbar,.tox .navbar-vibrant .tox-toolbar--scrolling::-webkit-scrollbar,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea::-webkit-scrollbar,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea::-webkit-scrollbar,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content::-webkit-scrollbar,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content::-webkit-scrollbar { - visibility: hidden; - -webkit-appearance: none; - width: 6px; - height: 6px; - background-color: rgba(0,0,0,0) -} - -.navbar-vibrant .scrollbar::-webkit-scrollbar-thumb,.navbar-vibrant .offcanvas.faq-sidebar::-webkit-scrollbar-thumb,.navbar-vibrant .tox .tox-toolbar--scrolling::-webkit-scrollbar-thumb,.tox .navbar-vibrant .tox-toolbar--scrolling::-webkit-scrollbar-thumb,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea::-webkit-scrollbar-thumb,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea::-webkit-scrollbar-thumb,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content::-webkit-scrollbar-thumb,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content::-webkit-scrollbar-thumb { - visibility: hidden; - border-radius: 3px; - background-color: rgba(255,255,255,.4) -} - -.navbar-vibrant .scrollbar:hover::-webkit-scrollbar,.navbar-vibrant .offcanvas.faq-sidebar:hover::-webkit-scrollbar,.navbar-vibrant .tox .tox-toolbar--scrolling:hover::-webkit-scrollbar,.tox .navbar-vibrant .tox-toolbar--scrolling:hover::-webkit-scrollbar,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea:hover::-webkit-scrollbar,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea:hover::-webkit-scrollbar,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:hover::-webkit-scrollbar,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content:hover::-webkit-scrollbar,.navbar-vibrant .scrollbar:hover::-webkit-scrollbar-thumb,.navbar-vibrant .offcanvas.faq-sidebar:hover::-webkit-scrollbar-thumb,.navbar-vibrant .tox .tox-toolbar--scrolling:hover::-webkit-scrollbar-thumb,.tox .navbar-vibrant .tox-toolbar--scrolling:hover::-webkit-scrollbar-thumb,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea:hover::-webkit-scrollbar-thumb,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea:hover::-webkit-scrollbar-thumb,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:hover::-webkit-scrollbar-thumb,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content:hover::-webkit-scrollbar-thumb,.navbar-vibrant .scrollbar:focus::-webkit-scrollbar,.navbar-vibrant .offcanvas.faq-sidebar:focus::-webkit-scrollbar,.navbar-vibrant .tox .tox-toolbar--scrolling:focus::-webkit-scrollbar,.tox .navbar-vibrant .tox-toolbar--scrolling:focus::-webkit-scrollbar,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea:focus::-webkit-scrollbar,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea:focus::-webkit-scrollbar,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:focus::-webkit-scrollbar,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content:focus::-webkit-scrollbar,.navbar-vibrant .scrollbar:focus::-webkit-scrollbar-thumb,.navbar-vibrant .offcanvas.faq-sidebar:focus::-webkit-scrollbar-thumb,.navbar-vibrant .tox .tox-toolbar--scrolling:focus::-webkit-scrollbar-thumb,.tox .navbar-vibrant .tox-toolbar--scrolling:focus::-webkit-scrollbar-thumb,.navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea:focus::-webkit-scrollbar-thumb,.picmo__picker.picmo__picker .navbar-vibrant .picmo__emojiArea:focus::-webkit-scrollbar-thumb,.navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content:focus::-webkit-scrollbar-thumb,html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vibrant .navbar-vertical-content:focus::-webkit-scrollbar-thumb { - visibility: visible -} - -.firefox .scrollbar,.firefox .offcanvas.faq-sidebar,.firefox .tox .tox-toolbar--scrolling,.tox .firefox .tox-toolbar--scrolling,.firefox .picmo__picker.picmo__picker .picmo__emojiArea,.picmo__picker.picmo__picker .firefox .picmo__emojiArea,.firefox html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content,html:not(.navbar-vertical-collapsed) .navbar-vertical .firefox .navbar-vertical-content { - overflow: auto !important; - scrollbar-color: var(--phoenix-scrollbar-bg) rgba(0,0,0,0); - scrollbar-width: thin -} - -.firefox .navbar-vibrant .scrollbar,.firefox .navbar-vibrant .offcanvas.faq-sidebar,.firefox .navbar-vibrant .tox .tox-toolbar--scrolling,.tox .firefox .navbar-vibrant .tox-toolbar--scrolling,.firefox .navbar-vibrant .picmo__picker.picmo__picker .picmo__emojiArea,.picmo__picker.picmo__picker .firefox .navbar-vibrant .picmo__emojiArea,.firefox .navbar-vibrant html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content,html:not(.navbar-vertical-collapsed) .navbar-vertical .firefox .navbar-vibrant .navbar-vertical-content { - overflow: auto !important; - scrollbar-color: rgba(255,255,255,.4) rgba(0,0,0,0); - scrollbar-width: thin -} - -.os-theme-dark>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle { - background: var(--phoenix-scrollbar-bg) -} - -.os-theme-dark>.os-scrollbar:hover>.os-scrollbar-track>.os-scrollbar-handle,.os-theme-dark>.os-scrollbar:focus>.os-scrollbar-track>.os-scrollbar-handle { - background: var(--phoenix-scrollbar-bg) -} - -.simplebar-track.simplebar-vertical { - width: 10px -} - -.simplebar-scrollbar::before { - background: var(--phoenix-scrollbar-bg) -} - -.simplebar-scrollbar.simplebar-visible::before { - opacity: 1 -} - -.simplebar-content-wrapper::-webkit-scrollbar { - display: none; - width: 0; - height: 0 -} - -.theme-slider:hover .carousel-control-next,.theme-slider:hover .carousel-control-prev,.theme-slider:focus .carousel-control-next,.theme-slider:focus .carousel-control-prev { - color: var(--phoenix-gray-700); - opacity: .5 !important -} - -.theme-slider .carousel-control-prev,.theme-slider .carousel-control-next { - width: 3rem; - height: 3rem; - background: var(--phoenix-white); - border-radius: 50%; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - -webkit-box-shadow: .125rem .125rem .25rem rgba(0,0,0,.1); - box-shadow: .125rem .125rem .25rem rgba(0,0,0,.1); - -webkit-transition: opacity .4s ease-in-out; - -o-transition: opacity .4s ease-in-out; - transition: opacity .4s ease-in-out; - color: var(--phoenix-gray-700); - opacity: 0 -} - -.theme-slider .carousel-control-prev:hover,.theme-slider .carousel-control-prev:focus,.theme-slider .carousel-control-next:hover,.theme-slider .carousel-control-next:focus { - opacity: 1 !important -} - -.theme-slider .carousel-control-prev { - left: .5rem -} - -.theme-slider .carousel-control-next { - right: .5rem -} - -.testimonial-carousel { - -webkit-box-shadow: 0px 4px 80px 84px rgba(83,83,83,.02); - box-shadow: 0px 4px 80px 84px rgba(83,83,83,.02); - border-radius: 1.5rem -} - -.testimonial-carousel .carousel-indicators { - bottom: -3.75rem -} - -.testimonial-carousel .carousel-indicators button { - width: 12px; - height: 3px; - border-radius: .5rem; - border: 0; - -webkit-transition: width .5s; - -o-transition: width .5s; - transition: width .5s -} - -.testimonial-carousel .carousel-indicators button.active { - width: 1.5rem -} - -.list-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - border-radius: .375rem -} - -.list-group-item-action { - width: 100%; - color: #525b75; - text-align: inherit -} - -.list-group-item-action:hover,.list-group-item-action:focus { - z-index: 1; - color: var(--phoenix-list-group-action-hover-color); - text-decoration: none; - background-color: var(--phoenix-list-group-hover-bg) -} - -.list-group-item-action:active { - color: #31374a; - background-color: var(--phoenix-200) -} - -.list-group-item { - position: relative; - display: block; - padding: .5rem 1rem; - color: var(--phoenix-800); - background-color: var(--phoenix-list-group-bg); - border: 1px solid var(--phoenix-border-color) -} - -.list-group-item:first-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit -} - -.list-group-item:last-child { - border-bottom-right-radius: inherit; - border-bottom-left-radius: inherit -} - -.list-group-item.disabled,[data-list] li.disabled button.list-group-item,.table-list li.disabled button.list-group-item,.list-group-item:disabled { - color: #6e7891; - pointer-events: none; - background-color: var(--phoenix-list-group-bg) -} - -.list-group-item.active { - z-index: 2; - color: #fff; - background-color: #3874ff; - border-color: #3874ff -} - -.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 { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row -} - -.list-group-horizontal>.list-group-item:first-child { - border-bottom-left-radius: .375rem; - border-top-right-radius: 0 -} - -.list-group-horizontal>.list-group-item:last-child { - border-top-right-radius: .375rem; - 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 { - -webkit-box-orient:horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-sm>.list-group-item:first-child { - border-bottom-left-radius: .375rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-sm>.list-group-item:last-child { - border-top-right-radius: .375rem; - 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 { - -webkit-box-orient:horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-md>.list-group-item:first-child { - border-bottom-left-radius: .375rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-md>.list-group-item:last-child { - border-top-right-radius: .375rem; - 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 { - -webkit-box-orient:horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-lg>.list-group-item:first-child { - border-bottom-left-radius: .375rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-lg>.list-group-item:last-child { - border-top-right-radius: .375rem; - 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 { - -webkit-box-orient:horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-xl>.list-group-item:first-child { - border-bottom-left-radius: .375rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-xl>.list-group-item:last-child { - border-top-right-radius: .375rem; - 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 - } -} - -@media(min-width: 1540px) { - .list-group-horizontal-xxl { - -webkit-box-orient:horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row - } - - .list-group-horizontal-xxl>.list-group-item:first-child { - border-bottom-left-radius: .375rem; - border-top-right-radius: 0 - } - - .list-group-horizontal-xxl>.list-group-item:last-child { - border-top-right-radius: .375rem; - border-bottom-left-radius: 0 - } - - .list-group-horizontal-xxl>.list-group-item.active { - margin-top: 0 - } - - .list-group-horizontal-xxl>.list-group-item+.list-group-item { - border-top-width: 1px; - border-left-width: 0 - } - - .list-group-horizontal-xxl>.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: var(--phoenix-list-group-item-primary-color); - background-color: var(--phoenix-list-group-item-primary-background); - --phoenix-list-group-item-primary-hover-focus-background: #c2cce6 -} - -.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus { - color: var(--phoenix-list-group-item-primary-color); - background-color: var(--phoenix-list-group-item-primary-hover-focus-background) -} - -.list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-primary-color); - border-color: var(--phoenix-list-group-item-primary-color) -} - -.list-group-item-secondary { - color: var(--phoenix-list-group-item-secondary-color); - background-color: var(--phoenix-list-group-item-secondary-background); - --phoenix-list-group-item-secondary-hover-focus-background: #c1c2c5 -} - -.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus { - color: var(--phoenix-list-group-item-secondary-color); - background-color: var(--phoenix-list-group-item-secondary-hover-focus-background) -} - -.list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-secondary-color); - border-color: var(--phoenix-list-group-item-secondary-color) -} - -.list-group-item-success { - color: var(--phoenix-list-group-item-success-color); - background-color: var(--phoenix-list-group-item-success-background); - --phoenix-list-group-item-success-hover-focus-background: #bed7b9 -} - -.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus { - color: var(--phoenix-list-group-item-success-color); - background-color: var(--phoenix-list-group-item-success-hover-focus-background) -} - -.list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-success-color); - border-color: var(--phoenix-list-group-item-success-color) -} - -.list-group-item-info { - color: var(--phoenix-list-group-item-info-color); - background-color: var(--phoenix-list-group-item-info-background); - --phoenix-list-group-item-info-hover-focus-background: #b8d3e2 -} - -.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus { - color: var(--phoenix-list-group-item-info-color); - background-color: var(--phoenix-list-group-item-info-hover-focus-background) -} - -.list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-info-color); - border-color: var(--phoenix-list-group-item-info-color) -} - -.list-group-item-warning { - color: var(--phoenix-list-group-item-warning-color); - background-color: var(--phoenix-list-group-item-warning-background); - --phoenix-list-group-item-warning-hover-focus-background: #e1cdb9 -} - -.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus { - color: var(--phoenix-list-group-item-warning-color); - background-color: var(--phoenix-list-group-item-warning-hover-focus-background) -} - -.list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-warning-color); - border-color: var(--phoenix-list-group-item-warning-color) -} - -.list-group-item-danger { - color: var(--phoenix-list-group-item-danger-color); - background-color: var(--phoenix-list-group-item-danger-background); - --phoenix-list-group-item-danger-hover-focus-background: #e2bdb8 -} - -.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus { - color: var(--phoenix-list-group-item-danger-color); - background-color: var(--phoenix-list-group-item-danger-hover-focus-background) -} - -.list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-danger-color); - border-color: var(--phoenix-list-group-item-danger-color) -} - -.list-group-item-light { - color: var(--phoenix-list-group-item-light-color); - background-color: var(--phoenix-list-group-item-light-background); - --phoenix-list-group-item-light-hover-focus-background: #e3e3e4 -} - -.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus { - color: var(--phoenix-list-group-item-light-color); - background-color: var(--phoenix-list-group-item-light-hover-focus-background) -} - -.list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-light-color); - border-color: var(--phoenix-list-group-item-light-color) -} - -.list-group-item-dark { - color: var(--phoenix-list-group-item-dark-color); - background-color: var(--phoenix-list-group-item-dark-background); - --phoenix-list-group-item-dark-hover-focus-background: #bbbcbe -} - -.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus { - color: var(--phoenix-list-group-item-dark-color); - background-color: var(--phoenix-list-group-item-dark-hover-focus-background) -} - -.list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: var(--phoenix-list-group-item-dark-color); - border-color: var(--phoenix-list-group-item-dark-color) -} - -.badge-light-primary { - color: #003cc7; - background-color: #e5edff -} - -.badge-light-primary[href]:hover,.badge-light-primary[href]:focus { - text-decoration: none; - color: #003cc7 -} - -.badge-light-secondary { - color: #141824; - background-color: #e3e6ed -} - -.badge-light-secondary[href]:hover,.badge-light-secondary[href]:focus { - text-decoration: none; - color: #141824 -} - -.badge-light-success { - color: #1c6c09; - background-color: #d9fbd0 -} - -.badge-light-success[href]:hover,.badge-light-success[href]:focus { - text-decoration: none; - color: #1c6c09 -} - -.badge-light-info { - color: #005585; - background-color: #c7ebff -} - -.badge-light-info[href]:hover,.badge-light-info[href]:focus { - text-decoration: none; - color: #005585 -} - -.badge-light-warning { - color: #bc3803; - background-color: #ffefca -} - -.badge-light-warning[href]:hover,.badge-light-warning[href]:focus { - text-decoration: none; - color: #bc3803 -} - -.badge-light-danger { - color: #b81800; - background-color: #ffe0db -} - -.badge-light-danger[href]:hover,.badge-light-danger[href]:focus { - text-decoration: none; - color: #b81800 -} - -.badge-phoenix { - text-transform: uppercase; - padding: 2px 8px; - background-color: var(--phoenix-badge-bg); - color: var(--phoenix-badge-color); - border: 1px solid var(--phoenix-badge-border-color) -} - -.badge-phoenix .badge-label { - display: inline-block; - -webkit-transform: translateY(0.0875rem); - -ms-transform: translateY(0.0875rem); - transform: translateY(0.0875rem) -} - -.badge-phoenix[href]:hover,.badge-phoenix[href]:focus { - text-decoration: none -} - -.badge-phoenix-primary[href]:hover,.badge-phoenix-primary[href]:focus { - color: #003cc7 -} - -.badge-phoenix-secondary[href]:hover,.badge-phoenix-secondary[href]:focus { - color: #141824 -} - -.badge-phoenix-success[href]:hover,.badge-phoenix-success[href]:focus { - color: #1c6c09 -} - -.badge-phoenix-info[href]:hover,.badge-phoenix-info[href]:focus { - color: #005585 -} - -.badge-phoenix-warning[href]:hover,.badge-phoenix-warning[href]:focus { - color: #bc3803 -} - -.badge-phoenix-danger[href]:hover,.badge-phoenix-danger[href]:focus { - color: #b81800 -} - -.badge-phoenix-warning img { - height: 10px -} - -.badge-tag { - background-color: var(--phoenix-gray-200); - color: var(--phoenix-gray-1000); - font-weight: 700; - font-size: .64rem; - padding: .25rem .5rem; - text-transform: uppercase -} - -.badge-tag:hover,.badge-tag:focus { - background-color: var(--phoenix-gray-300) -} - -.hoverbox { - position: relative; - overflow: hidden -} - -.hoverbox .hoverbox-content { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0; - -webkit-transition: opacity .2s ease-in-out; - -o-transition: opacity .2s ease-in-out; - transition: opacity .2s ease-in-out; - margin: 0 !important; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - background: rgba(0,0,0,.6) !important -} - -.hoverbox .hoverbox-primary-content { - position: absolute; - top: 0; - left: 0; - width: 100%; - min-height: 100% -} - -.hoverbox:hover .hover-box-content-initial,.hoverbox:focus .hover-box-content-initial { - opacity: 0 -} - -.hoverbox:hover .hoverbox-content,.hoverbox:focus .hoverbox-content { - opacity: 1 -} - -.hoverbox:hover .as-hoverbox-content,.hoverbox:focus .as-hoverbox-content { - z-index: 1 -} - -.hoverbox-content-gradient { - background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(var(--phoenix-black))); - background: -o-linear-gradient(transparent, var(--phoenix-black)); - background: linear-gradient(transparent, var(--phoenix-black)) -} - -.container-small,.container-small-fluid { - --phoenix-gutter-x: 2rem; - --phoenix-gutter-y: 0; - width: 100%; - padding-right: calc(var(--phoenix-gutter-x)*.5); - padding-left: calc(var(--phoenix-gutter-x)*.5); - margin-right: auto; - margin-left: auto -} - -@media(min-width: 576px) { - .container-small-sm,.container-small { - max-width:540px - } -} - -@media(min-width: 768px) { - .container-small-md,.container-small-sm,.container-small { - max-width:720px - } -} - -@media(min-width: 992px) { - .container-small-lg,.container-small-md,.container-small-sm,.container-small { - max-width:960px - } -} - -@media(min-width: 1200px) { - .container-small-xl,.container-small-lg,.container-small-md,.container-small-sm,.container-small { - max-width:1216px - } -} - -.timeline-vertical .timeline-item:not(:last-child) .timeline-item-bar .timeline-bar { - position: absolute; - height: 100px; - left: 11px; - top: 24px -} - -.timeline-vertical.timeline-with-details .timeline-item:not(:last-child) .timeline-item-bar .timeline-bar { - height: calc(100% - 1rem) !important -} - -.timeline-basic .timeline-item:hover .timeline-item-bar .icon-item { - background: var(--phoenix-gray-100) !important; - border-color: var(--phoenix-gray-300) !important -} - -.timeline-basic .timeline-item:hover .timeline-item-title { - color: var(--phoenix-gray-1100) !important -} - -.timeline-basic .timeline-item:hover .timeline-time { - color: var(--phoenix-gray-1100) !important -} - -.timeline-basic .timeline-item:not(:last-child) .timeline-item-bar { - height: 100% -} - -.timeline-basic .timeline-item:not(:last-child) .timeline-item-bar .timeline-bar { - position: absolute; - height: calc(100% - 2.5rem); - left: 20px; - top: 40px -} - -.whooping-banner { - position: relative; - background: -o-linear-gradient(99.35deg, #35479f -9.32%, #9528ea 113.71%); - background: linear-gradient(350.65deg, #35479f -9.32%, #9528ea 113.71%) -} - -.whooping-banner .product-bg { - background-size: 50% -} - -[dir=rtl] .whooping-banner .product-bg { - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1) -} - -@media(min-width: 1200px) { - .whooping-banner .product-bg { - background-size:contain - } -} - -.whooping-banner .shape-bg { - background-size: 50% -} - -[dir=rtl] .whooping-banner .shape-bg { - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1) -} - -@media(min-width: 1200px) { - .whooping-banner .shape-bg { - background-size:contain - } -} - -.whooping-banner .banner-text { - padding: 25px 0 15px 25px -} - -@media(min-width: 576px) { - .whooping-banner .banner-text { - padding:50px 0 20px 50px - } -} - -@media(min-width: 992px) { - .whooping-banner .banner-text { - padding:70px 0 40px 100px - } -} - -@media(min-width: 1540px) { - .whooping-banner .banner-text { - padding:130px 0 48px 140px - } -} - -.whooping-banner .banner-text .gradient-text { - background: -o-linear-gradient(268.45deg, rgba(255, 158, 158, 0.7) 3.21%, rgba(255, 80, 237, 0.7) 68.35%, rgba(210, 30, 255, 0.7) 98.68%, rgba(255, 80, 237, 0.7) 98.69%),#fff; - background: linear-gradient(181.55deg, rgba(255, 158, 158, 0.7) 3.21%, rgba(255, 80, 237, 0.7) 68.35%, rgba(210, 30, 255, 0.7) 98.68%, rgba(255, 80, 237, 0.7) 98.69%),#fff; - -webkit-background-clip: text; - -webkit-text-fill-color: rgba(0,0,0,0); - background-clip: text -} - -.whooping-banner .banner-text .gradient-text::-moz-selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix- #3874ff) -} - -.whooping-banner .banner-text .gradient-text::selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix- #3874ff) -} - -.whooping-banner .banner-button { - padding: auto; - margin-left: 25px; - margin-bottom: 70px -} - -@media(min-width: 576px) { - .whooping-banner .banner-button { - margin-left:50px; - margin-bottom: 70px - } -} - -@media(min-width: 576px) { - .whooping-banner .banner-button { - margin-bottom:100px - } -} - -@media(min-width: 992px) { - .whooping-banner .banner-button { - margin-left:100px - } - - .whooping-banner .banner-button [dir=rtl] { - margin-right: 100px - } -} - -@media(min-width: 1540px) { - .whooping-banner .banner-button { - margin-left:140px; - margin-bottom: 155px - } -} - -.gift-items-banner { - position: relative -} - -.gift-items-banner .banner-text { - padding: 26px 0 40px 25px -} - -@media(min-width: 576px) { - .gift-items-banner .banner-text { - padding:50px 0 50px 50px - } -} - -@media(min-width: 768px) { - .gift-items-banner .banner-text { - padding:70px 0 180px 0 - } -} - -.gift-items-banner .banner-text .gradient-text { - background: -o-linear-gradient(252.98deg, #28e4ff 11.41%, rgba(97, 198, 255, 0) 107.7%); - background: linear-gradient(197.02deg, #28e4ff 11.41%, rgba(97, 198, 255, 0) 107.7%); - -webkit-background-clip: text; - -webkit-text-fill-color: rgba(0,0,0,0); - background-clip: text -} - -.gift-items-banner .banner-text .gradient-text::-moz-selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix-primary) -} - -.gift-items-banner .banner-text .gradient-text::selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix-primary) -} - -.gift-items-banner .banner-text .banner-button { - margin-top: 24px -} - -@media(min-width: 992px) { - .gift-items-banner .banner-text .banner-button { - margin-top:36px - } -} - -.best-in-market-banner { - position: relative -} - -.best-in-market-banner .banner-text .gradient-text { - background: -o-linear-gradient(252.98deg, #28e4ff 11.41%, #61c6ff 107.7%); - background: linear-gradient(197.02deg, #28e4ff 11.41%, #61c6ff 107.7%); - -webkit-background-clip: text; - -webkit-text-fill-color: rgba(0,0,0,0); - background-clip: text -} - -.best-in-market-banner .banner-text .banner-button { - margin-top: 24px -} - -@media(min-width: 992px) { - .best-in-market-banner .banner-text .banner-button { - margin-top:36px - } -} - -.product-thumb-container { - padding: 0 .5rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid var(--phoenix-border-color); - border-radius: .375rem; - cursor: pointer -} - -@media(min-width: 1200px) { - .product-thumb-container { - height:82px - } -} - -.swiper-slide-thumb-active .product-thumb-container { - border-color: var(--phoenix-primary) -} - -.product-thumb-container img { - width: 100% -} - -.product-color-variants .active { - border-color: var(--phoenix-primary) !important -} - -@media(min-width: 768px) { - .swiper-products-thumb { - height:484px - } -} - -@media(min-width: 992px) { - .swiper-products-thumb { - height:auto - } -} - -@media(min-width: 1200px) { - .swiper-products-thumb { - height:484px - } -} - -.vertical-tab .nav-link { - position: relative; - color: var(--phoenix-gray-800); - padding: .875rem .5rem; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.vertical-tab .nav-link .nav-icons { - stroke-width: 1.7px; - color: var(--phoenix-gray-700) -} - -.vertical-tab .nav-link.active { - font-weight: 700; - font-size: 12.8px; - color: var(--phoenix-gray-1100) -} - -.vertical-tab .nav-link.active::after { - content: ""; - position: absolute; - width: .75rem; - height: .75rem; - top: 18px; - right: -6px; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); - background: var(--phoenix-body-bg); - border-width: 1px 0 0 1px; - border-style: solid; - border-color: var(--phoenix-gray-300) -} - -@media(max-width: 575.98px) { - .vertical-tab .nav-link.active::after { - top:41px; - right: 42%; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg) - } -} - -.vertical-tab .nav-link.active .nav-icons { - stroke-width: 2.5px; - color: var(--phoenix-gray-1000) -} - -.product-variant-select-menu .choices__inner { - --phoenix-choices-inner-min-height: 70px -} - -.category-dropdown-menu { - min-width: 250px -} - -@media(min-width: 576px) { - .category-dropdown-menu { - min-width:520px - } -} - -@media(min-width: 768px) { - .category-dropdown-menu { - min-width:750px - } -} - -.category-dropdown-menu::after { - content: ""; - position: absolute; - z-index: -1; - width: 1.5rem; - height: 1.5rem; - background: var(--phoenix-black); - top: -10px; - left: 1.5rem; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - background: var(--phoenix-white); - border-radius: .25rem; - border-width: 1px 0 0 1px; - border-style: solid; - border-color: var(--phoenix-gray-200); - -webkit-box-shadow: 0 .125rem .25rem rgba(0,0,0,.075); - box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) -} - -.product-card .btn-wish { - position: absolute; - top: .75rem; - right: .75rem; - height: 2rem; - width: 2rem -} - -.product-card .product-verified-badge { - position: absolute; - bottom: .75rem; - left: .75rem -} - -.product-card:hover .product-name { - color: var(--phoenix-primary) -} - -.cart .cart-table-row:hover .btn-reveal,.cart .cart-table-row:focus .btn-reveal { - color: var(--phoenix-danger) !important -} - -.products-slider .swiper-nav [class*=swiper-] { - top: 25% -} - -.products-slider .swiper-nav .swiper-button-prev { - left: -1rem -} - -[dir=rtl] .products-slider .swiper-nav .swiper-button-prev { - right: -1rem; - left: auto -} - -.products-slider .swiper-nav .swiper-button-next { - right: -1rem -} - -[dir=rtl] .products-slider .swiper-nav .swiper-button-next { - left: -1rem; - right: auto -} - -.collapse-indicator { - position: relative -} - -.collapse-indicator .toggle-icon { - height: 1rem; - width: 1rem; - -webkit-transition: -webkit-transform .2s ease; - transition: -webkit-transform .2s ease; - -o-transition: transform .2s ease; - transition: transform .2s ease; - transition: transform .2s ease, -webkit-transform .2s ease; - color: var(--phoenix-navbar-vertical-caret-color); - margin-left: -4px -} - -.collapse-indicator[aria-expanded=true] .toggle-icon { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg) -} - -.product-filter-offcanvas { - max-width: 300px; - top: 92px !important; - height: calc(100vh - 5rem); - padding: 2rem -} - -@media(min-width: 992px) { - .product-filter-offcanvas { - position:sticky !important; - top: 1rem !important; - padding: 0 0 0 .5rem !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - height: calc(100vh - 2rem); - padding-left: 4px - } -} - -.product-card-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center -} - -.product-card-container .product-card { - max-width: 350px !important -} - -@media(min-width: 992px) { - .product-card-container .product-card { - max-width:auto - } -} - -@media(min-width: 1200px)and (max-width: 1539.98px) { - .product-filter-container { - max-width:76rem - } -} - -.icon-indicator { - position: relative -} - -.icon-indicator::before { - position: absolute; - content: ""; - right: -3px; - top: 1px; - height: 19px; - width: 19px; - border-radius: 50% -} - -.icon-indicator-sm::before { - height: .5rem; - width: .5rem; - right: 9px; - top: 8px -} - -.icon-indicator-number { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - position: absolute; - right: -1.5px; - top: 3.5px; - height: 1rem; - width: 1rem; - font-size: .8rem; - color: #fff; - font-weight: 700 -} - -.icon-indicator-primary::before { - background-color: #3874ff -} - -.icon-indicator-secondary::before { - background-color: #31374a -} - -.icon-indicator-success::before { - background-color: #25b003 -} - -.icon-indicator-info::before { - background-color: #0097eb -} - -.icon-indicator-warning::before { - background-color: #e5780b -} - -.icon-indicator-danger::before { - background-color: #ed2000 -} - -.icon-indicator-light::before { - background-color: #eff2f6 -} - -.icon-indicator-dark::before { - background-color: #141824 -} - -.icon-indicator-fill::before { - border: 0 -} - -.gantt-zero-roadmap .gantt-zero-roadmap-chart { - width: 100%; - height: 222px -} - -.gantt-zero-roadmap .btn-group .btn-check:checked+.btn,.gantt-zero-roadmap .btn-group [data-list] .btn-check:checked+.page,[data-list] .gantt-zero-roadmap .btn-group .btn-check:checked+.page,.gantt-zero-roadmap .btn-group .table-list .btn-check:checked+.page,.table-list .gantt-zero-roadmap .btn-group .btn-check:checked+.page,.gantt-zero-roadmap .btn-group .tox .btn-check:checked+.tox-button,.tox .gantt-zero-roadmap .btn-group .btn-check:checked+.tox-button,.gantt-zero-roadmap .btn-group .tox .btn-check:checked+.tox-button-secondary,.tox .gantt-zero-roadmap .btn-group .btn-check:checked+.tox-button-secondary,.gantt-zero-roadmap .btn-group .tox .tox-dialog__footer .btn-check:checked+.tox-button--secondary,.tox .tox-dialog__footer .gantt-zero-roadmap .btn-group .btn-check:checked+.tox-button--secondary,.gantt-zero-roadmap .btn-group .tox .tox-dialog__footer .btn-check:checked+.tox-button:last-child,.gantt-zero-roadmap .btn-group .google-map-control-btn .btn-check:checked+.zoomIn,.google-map-control-btn .gantt-zero-roadmap .btn-group .btn-check:checked+.zoomIn,.gantt-zero-roadmap .btn-group .google-map-control-btn .btn-check:checked+.zoomOut,.google-map-control-btn .gantt-zero-roadmap .btn-group .btn-check:checked+.zoomOut { - border-color: var(--phoenix-gray-soft) rgba(0,0,0,0) -} - -.gantt-zero-roadmap .gantt_container { - position: relative; - border: 0; - background: var(--phoenix-gray-soft) -} - -.gantt-zero-roadmap .gantt_container .gantt_layout_cell,.gantt-zero-roadmap .gantt_container .gantt_grid_scale,.gantt-zero-roadmap .gantt_container .gantt_task_scale,.gantt-zero-roadmap .gantt_container .gantt_row_task,.gantt-zero-roadmap .gantt_container .gantt_task_row { - border-bottom: 0; - background: var(--phoenix-gray-soft) -} - -.gantt-zero-roadmap .gantt_container .gantt_tree_content { - color: var(--phoenix-gray-900); - font-size: .8rem; - font-weight: 600; - font-family: "Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line { - border: none; - background: var(--phoenix-info-100); - border-radius: 2px; - border-left: 2px solid var(--phoenix-gray-soft); - border-right: 2px solid var(--phoenix-gray-soft) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line .gantt_task_progress { - border-radius: 2px -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.research .gantt_task_progress { - background: var(--phoenix-info-200) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.planning .gantt_task_progress { - background: var(--phoenix-info-200) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.design .gantt_task_progress { - background: var(--phoenix-info) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.review .gantt_task_progress { - background: var(--phoenix-info-300) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.develop .gantt_task_progress { - background: var(--phoenix-info) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.review-2 .gantt_task_progress { - background: var(--phoenix-info-300) -} - -.gantt-zero-roadmap .gantt_container .gantt_task_line.gantt_selected { - -webkit-box-shadow: none; - box-shadow: none -} - -.gantt-zero-roadmap .gantt_container .gantt_scale_line { - border-width: 0 -} - -.gantt-zero-roadmap .gantt_container .gantt_task_link .gantt_line_wrapper [class*=gantt_link_line_] { - background-color: var(--phoenix-gray-300) -} - -.gantt-zero-roadmap .gantt_container .gantt_grid_data .gantt_row.gantt_selected { - background: rgba(0,0,0,0) -} - -.gantt-zero-roadmap .gantt_container .gantt_grid_data .gantt_row:hover { - background-color: rgba(0,0,0,0) -} - -.gantt-zero-roadmap .gantt_link_arrow_right { - border-left-color: var(--phoenix-gray-300) -} - -.gantt-zero-roadmap .gantt_link_arrow_left { - border-right-color: var(--phoenix-gray-300) -} - -.gantt-zero-roadmap .gantt_row,.gantt-zero-roadmap .gantt_task_row,.gantt-zero-roadmap .grid_cell,.gantt-zero-roadmap .gantt_task_scale,.gantt-zero-roadmap .gantt_task_cell,.gantt-zero-roadmap .gantt_grid_scale { - border-color: var(--phoenix-gray-200) !important -} - -.gantt-zero-roadmap .gantt_task_link:hover .gantt_line_wrapper div { - -webkit-box-shadow: none; - box-shadow: none -} - -.gantt-zero-roadmap .gantt_task_link:hover [class*=gantt_link_line_] { - background-color: var(--phoenix-gray-400) !important -} - -.gantt-zero-roadmap .gantt_task_link:hover .gantt_link_arrow_right { - border-left-color: var(--phoenix-gray-400) -} - -.gantt-zero-roadmap .gantt_task_link:hover .gantt_link_arrow_left { - border-right-color: var(--phoenix-gray-400) -} - -.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll { - overflow: auto -} - -.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll::-webkit-scrollbar,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll::-webkit-scrollbar { - visibility: hidden; - -webkit-appearance: none; - width: 6px; - height: 6px; - background-color: rgba(0,0,0,0) -} - -.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll::-webkit-scrollbar-thumb,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll::-webkit-scrollbar-thumb { - visibility: hidden; - border-radius: 3px; - background-color: var(--phoenix-scrollbar-bg) -} - -.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll:hover::-webkit-scrollbar,.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll:hover::-webkit-scrollbar-thumb,.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll:focus::-webkit-scrollbar,.gantt-zero-roadmap .gantt_layout_cell.gantt_ver_scroll:focus::-webkit-scrollbar-thumb,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll:hover::-webkit-scrollbar,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll:hover::-webkit-scrollbar-thumb,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll:focus::-webkit-scrollbar,.gantt-zero-roadmap .gantt_layout_cell.gantt_hor_scroll:focus::-webkit-scrollbar-thumb { - visibility: visible -} - -.navbar-shadow { - -webkit-box-shadow: 0px 8px 24px -4px rgba(36,40,46,.08); - box-shadow: 0px 8px 24px -4px rgba(36,40,46,.08) -} - -.dark .navbar-shadow,.dark .picmo__popupContainer.picmo__light .navbar-shadow { - -webkit-box-shadow: 0px 8px 24px -4px rgba(0,0,0,.6); - box-shadow: 0px 8px 24px -4px rgba(0,0,0,.6) -} - -.gradient-text-primary { - background: -o-linear-gradient(305.64deg, #598bff 4.5%, #094be7 94.38%); - background: linear-gradient(144.36deg, #598bff 4.5%, #094be7 94.38%); - -webkit-background-clip: text; - -webkit-text-fill-color: rgba(0,0,0,0); - background-clip: text -} - -.gradient-text-primary::-moz-selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix- #3874ff) -} - -.gradient-text-primary::selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix- #3874ff) -} - -.text-gradient-info { - background: -webkit-gradient(linear, left top, left bottom, from(#28b2ff), to(#2990ff)); - background: -o-linear-gradient(top, #28b2ff 0%, #2990ff 100%); - background: linear-gradient(180deg, #28b2ff 0%, #2990ff 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: rgba(0,0,0,0); - background-clip: text -} - -.text-gradient-info::-moz-selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix- #3874ff) -} - -.text-gradient-info::selection { - -webkit-text-fill-color: var(--phoenix-white); - color: var(--phoenix-white); - background: var(--phoenix- #3874ff) -} - -.icon-wrapper { - position: relative; - display: inline-block -} - -.icon-wrapper::before { - position: absolute; - content: ""; - height: 1.625rem; - width: 1.625rem; - border-radius: .363rem; - -webkit-transform: rotate(7.45deg); - -ms-transform: rotate(7.45deg); - transform: rotate(7.45deg); - top: 1.7rem; - left: calc(50% - 1.4rem) -} - -@media(min-width: 768px) { - .icon-wrapper::before { - position:absolute; - content: ""; - height: 1.625rem; - width: 1.625rem; - border-radius: .363rem; - -webkit-transform: rotate(7.45deg); - -ms-transform: rotate(7.45deg); - transform: rotate(7.45deg); - top: 1.7rem; - left: .1rem - } -} - -.shadow-info:before { - background-color: #0097eb; - opacity: .4 -} - -@media(min-width: 576px) { - .avatar-bg { - position:relative - } - - .avatar-bg::before { - position: absolute; - content: ""; - top: 18px; - left: 1rem; - height: 12.26rem; - width: 100%; - border-radius: .5rem; - background: #e5edff; - -webkit-transform: rotate(4.35deg); - -ms-transform: rotate(4.35deg); - transform: rotate(4.35deg) - } -} - -.team-avatar-container::before { - position: absolute; - content: ""; - left: 6%; - top: 80%; - height: 1.151875rem; - width: 1.151875rem; - opacity: .6; - border-radius: .25rem; - border: 1px solid #e5edff; - -webkit-transform: rotate(-5.33deg); - -ms-transform: rotate(-5.33deg); - transform: rotate(-5.33deg); - z-index: 2 -} - -.bg-dark-blue { - background-color: #112860 -} - -.cta-card { - margin-bottom: -300px -} - -@media(min-width: 1540px) { - .cta-card { - margin-bottom:-500px - } -} - -.badge-pricing { - margin: 0 -2px; - top: -34px -} - -.testimonial-avatar-container { - padding: 30px -} - -.team-avatar-container { - padding: 1px 15px 1px 0px -} - -@media(min-width: 1200px) { - .hero-header-container { - padding-top:5rem; - padding-bottom: 5rem - } -} - -@media(min-width: 1540px) { - .hero-header-container { - padding-top:6.5rem; - padding-bottom: 6.5rem - } -} - -.hero-header-container .hero-image-container { - left: 53% -} - -.hero-header-container .hero-image-container .hero-image-container-bg { - left: -23% -} - -[dir=rtl] .hero-header-container .hero-image-container .hero-image-container-bg { - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1) -} - -.footer-default { - padding-top: 18.75rem -} - -@media(min-width: 576px) { - .footer-default { - padding-top:15.625rem - } -} - -@media(min-width: 768px) { - .footer-default { - padding-top:12.5rem - } -} - -@media(min-width: 1200px) { - .footer-default { - padding-top:9.375rem - } -} - -@media(min-width: 1540px) { - .footer-default { - padding-top:15.625rem - } -} - -.alternate-landing { - background-color: #fff -} - -.dark .alternate-landing,.dark .picmo__popupContainer.picmo__light .alternate-landing { - background-color: #0f111a -} - -.dark .alternate-landing .landing-navbar { - background-color: #0f111a !important -} - -@media(min-width: 1200px) { - .hero-header-container-alternate { - padding-top:5rem; - padding-bottom: 5rem - } -} - -@media(min-width: 1540px) { - .hero-header-container-alternate { - padding-top:9rem; - padding-bottom: 15rem - } -} - -.hero-header-container-alternate .hero-image-container { - left: 52%; - top: 6% !important -} - -.hero-header-container-alternate .hero-image-container-overlay { - -webkit-transform: skewY(-7.5deg); - -ms-transform: skewY(-7.5deg); - transform: skewY(-7.5deg); - -webkit-transform-origin: right; - -ms-transform-origin: right; - transform-origin: right; - bottom: -44.3%; - background-color: var(--phoenix-white); - width: 150%; - height: 90%; - left: -25% -} - -@media(min-width: 992px) { - .hero-header-container-alternate .hero-image-container-overlay { - bottom:-39.5%; - width: 120% !important; - height: 80%; - left: unset - } -} - -.dark .hero-header-container-alternate .hero-image-container-overlay { - background-color: #0f111a -} - -.hero-header-container-alternate .hero-image-container-bg { - width: 130%; - left: -15% -} - -@media(min-width: 992px) { - .hero-header-container-alternate .hero-image-container-bg { - width:120%; - bottom: 0; - left: unset - } -} - -[dir=rtl] .hero-header-container-alternate .hero-image-container-bg { - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1); - padding-left: 0; - padding-right: 1.5rem -} - -.hero-header-container-alternate .hero-image-shadow { - -webkit-box-shadow: 0px 6.99483px 126.542px -3.49742px rgba(36,40,46,.22); - box-shadow: 0px 6.99483px 126.542px -3.49742px rgba(36,40,46,.22) -} - -.alternate-landing-team { - padding-top: 8rem -} - -@media(min-width: 768px) { - .alternate-landing-team { - padding-top:10rem - } -} - -@media(min-width: 1200px) { - .alternate-landing-team { - padding-top:20rem - } -} - -.dark .world-map-bg,.dark .picmo__popupContainer.picmo__light .world-map-bg { - opacity: .6 -} - -[dir=rtl] .pricing-list { - margin: 0 !important -} - -.feature-image { - max-width: 28.125rem; - width: 100% -} - -.pricing-card { - max-width: 23.43rem; - margin: 0 auto -} - -@media(min-width: 992px) { - .pricing-card { - max-width:100% - } -} - -.offer-card { - -webkit-box-shadow: 0px 4px 84px rgba(0,0,0,.03); - box-shadow: 0px 4px 84px rgba(0,0,0,.03) -} - -.blog-card { - max-width: 17.25rem; - margin: 0 auto -} - -@media(min-width: 1200px) { - .blog-card { - max-width:100% - } -} - -@media(min-width: 1540px) { - .rotating-earth-container { - padding:13.43rem 0 10.625rem !important - } -} - -.rotating-earth-container .rotating-earth { - left: -20% -} - -@media(min-width: 992px) { - .rotating-earth-container .rotating-earth { - top:8%; - right: -18%; - left: unset - } -} - -@media(min-width: 1200px) { - .rotating-earth-container .rotating-earth { - top:-16%; - right: -16% - } -} - -@media(min-width: 1540px) { - .rotating-earth-container .rotating-earth { - top:-16%; - right: -14% - } -} - -.rotating-earth-container .rotating-earth .lottie { - width: 140%; - height: 100% -} - -@media(min-width: 992px) { - .rotating-earth-container .rotating-earth .lottie { - width:47rem; - height: 47rem - } -} - -@media(min-width: 1200px) { - .rotating-earth-container .rotating-earth .lottie { - width:60rem; - height: 60rem - } -} - -@media(min-width: 1540px) { - .rotating-earth-container .rotating-earth .lottie { - width:78.125rem; - height: 78.125rem - } -} - -[dir=rtl] .rotating-earth-container .rotating-earth .lottie { - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1) -} - -.rotating-earth-container .rotating-earth img { - left: 20%; - top: 50%; - width: 50% -} - -@media(min-width: 992px) { - .rotating-earth-container .rotating-earth img { - left:14%; - top: 50%; - width: 40% - } -} - -[dir=rtl] .rotating-earth-container .rotating-earth img { - -webkit-transform: scaleX(-1); - -ms-transform: scaleX(-1); - transform: scaleX(-1) -} - -.counter-container { - padding: 4.5rem 0 -} - -@media(min-width: 576px) { - .counter-container { - padding:7.5rem 0 - } -} - -@media(min-width: 768px) { - .counter-container { - padding:13rem 0; - margin-top: -3.125rem - } -} - -@media(min-width: 992px) { - .counter-container { - padding:21.5rem 0; - margin-top: 0px - } -} - -@media(min-width: 1540px) { - .counter-container { - margin-top:-3.125rem - } -} - -.counter-container .counter-overlay { - background-color: var(--phoenix-primary); - opacity: 4%; - min-height: 100%; - top: 0 -} - -@media(min-width: 768px) { - .counter-container .counter-overlay { - min-height:67%; - top: 5rem - } -} - -@media(min-width: 992px) { - .counter-container .counter-overlay { - top:7.5rem - } -} - -.gallery .gallery-overlay { - background-color: var(--phoenix-primary); - opacity: 8%; - height: 54%; - -webkit-transform: skewY(-8deg); - -ms-transform: skewY(-8deg); - transform: skewY(-8deg); - top: 27% -} - -.bp-lr { - width: auto !important -} - -.content-offcanvas { - position: fixed; - width: 35rem !important; - top: calc(var(--phoenix-navbar-top-height) + 1px) !important; - height: calc(100vh - (var(--phoenix-navbar-top-height) + 4rem)) !important -} - -@media(min-width: 576px) { - .content-offcanvas { - background-position:100% !important - } -} - -.offcanvas-backdrop-transparent~.offcanvas-backdrop { - opacity: 0 -} - -.phoenix-offcanvas-container { - position: relative; - overflow: hidden -} - -.phoenix-offcanvas { - position: absolute; - overflow: auto; - top: 0; - bottom: 0; - -webkit-transition: -webkit-transform .3s ease-in-out; - transition: -webkit-transform .3s ease-in-out; - -o-transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out; - transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out; - z-index: 10 -} - -.phoenix-offcanvas.phoenix-offcanvas-fixed { - position: fixed; - left: 0; - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) -} - -.phoenix-offcanvas.phoenix-offcanvas-start { - left: 0; - -webkit-transform: translateX(-100%); - -ms-transform: translateX(-100%); - transform: translateX(-100%) -} - -.phoenix-offcanvas.phoenix-offcanvas-end { - -webkit-transform: translateX(100%); - -ms-transform: translateX(100%); - transform: translateX(100%); - right: 0 -} - -.phoenix-offcanvas.phoenix-offcanvas-top { - -webkit-transform: translateY(-100%); - -ms-transform: translateY(-100%); - transform: translateY(-100%) -} - -.phoenix-offcanvas.phoenix-offcanvas-bottom { - -webkit-transform: translateY(100%); - -ms-transform: translateY(100%); - transform: translateY(100%) -} - -.phoenix-offcanvas.show { - -webkit-transform: none; - -ms-transform: none; - transform: none -} - -.phoenix-offcanvas.show~.phoenix-offcanvas-backdrop { - position: fixed; - top: 92px; - left: 0; - height: 100vh; - width: 100vw; - background: rgba(0,0,0,.1); - z-index: 8 -} - -.offcanvas.faq-sidebar { - height: 100%; - visibility: visible !important; - -webkit-box-shadow: none; - box-shadow: none -} - -@media(min-width: 768px) { - .offcanvas.faq-sidebar { - overflow:unset !important - } - - .firefox .offcanvas.faq-sidebar { - overflow: unset !important - } -} - -@media(min-width: 768px) { - .offcanvas.faq-sidebar.offcanvas-start { - border-right:0px; - -webkit-transform: translateX(0%) !important; - -ms-transform: translateX(0%) !important; - transform: translateX(0%) !important; - position: sticky - } -} - -.theme-wizard .nav-item { - position: relative -} - -.theme-wizard .nav-item:not(:last-child) { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.theme-wizard .nav-item:first-child .nav-item-circle-parent:before,.theme-wizard .nav-item:last-child .nav-item-circle-parent:before { - width: 50% -} - -.theme-wizard .nav-item:first-child .nav-item-circle-parent:before { - -webkit-transform: translate3d(0, -50%, 0); - transform: translate3d(0, -50%, 0) -} - -.theme-wizard .nav-item:last-child .nav-item-circle-parent:before { - left: 0; - -webkit-transform: translate3d(0, -50%, 0); - transform: translate3d(0, -50%, 0) -} - -.theme-wizard .nav-item .nav-link { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-left: 0; - padding-right: 0; - width: 100%; - color: var(--phoenix-gray-600); - display: block -} - -.theme-wizard .nav-item .nav-link .nav-item-circle { - color: var(--phoenix-gray-600); - background-color: var(--phoenix-theme-wizard-nav-item-circle-bg); - border: 2px solid var(--phoenix-gray-300); - height: 2.375rem; - width: 2.375rem; - border-radius: 50%; - line-height: 2.25rem; - padding: 0; - text-align: center; - -ms-flex-item-align: center; - align-self: center; - display: inline-block; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.theme-wizard .nav-item .nav-link.active { - color: var(--phoenix-theme-wizard-active-color) -} - -.theme-wizard .nav-item .nav-link.active .nav-item-circle { - color: var(--phoenix-theme-wizard-active-color); - border-color: var(--phoenix-theme-wizard-active-color) -} - -.theme-wizard .nav-item .nav-link.done { - color: var(--phoenix-theme-wizard-complete-color) -} - -.theme-wizard .nav-item .nav-link.done .nav-item-circle { - background-color: var(--phoenix-theme-wizard-complete-color) !important; - color: #fff; - border-color: var(--phoenix-theme-wizard-complete-color) -} - -.theme-wizard .nav-item .nav-link.done .nav-item-circle .check-icon { - display: inline-block -} - -.theme-wizard .nav-item .nav-link.done .nav-item-circle-parent:before { - background-color: var(--phoenix-theme-wizard-complete-color) -} - -.theme-wizard .nav-item .nav-link .nav-item-circle .check-icon { - display: none -} - -.theme-wizard .nav-item .nav-link .nav-item-circle-parent { - display: block -} - -.theme-wizard .nav-item:not(.theme-wizard .nav-item:last-child) .nav-link:before { - content: ""; - height: 2px; - width: 100%; - position: absolute; - left: 3%; - top: 48%; - background: var(--phoenix-gray-300) -} - -@media(min-width: 768px) { - .theme-wizard .nav-item:not(.theme-wizard .nav-item:last-child) .nav-link:before { - top:35% - } -} - -.theme-wizard .nav-item:not(.theme-wizard .nav-item:last-child) .nav-link.done:before { - background: var(--phoenix-theme-wizard-active-color) !important -} - -.theme-wizard .nav-item:not(.theme-wizard .nav-item:last-child) .nav-link.complete:before { - background: var(--phoenix-theme-wizard-complete-color) !important -} - -.theme-wizard .nav-item .nav-item:not(:first-child) .active .nav-item-circle-parent:after { - content: ""; - width: 50%; - position: absolute; - left: -1px; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - height: 2px; - background-color: var(--phoenix-theme-wizard-complete-color) -} - -.theme-wizard .nav-item .nav-item-circle-parent { - position: relative -} - -.theme-wizard .nav-item .nav-item-circle { - margin: 0 auto; - z-index: 1; - position: relative -} - -.theme-wizard .nav-item .pager { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between -} - -.theme-wizard .nav-item .wizard-lottie-wrapper { - height: 1px; - position: relative; - padding-bottom: 11.875rem; - overflow: hidden -} - -.theme-wizard .nav-item .wizard-lottie-wrapper .wizard-lottie { - width: 21.25rem; - height: auto; - -webkit-transform: translateY(-73%); - -ms-transform: translateY(-73%); - transform: translateY(-73%) -} - -.email-sidebar { - top: var(--phoenix-navbar-top-height); - padding: 2rem -} - -.email-sidebar .nav-link { - color: var(--phoenix-gray-900); - font-weight: 600 -} - -.email-sidebar .nav-link:hover { - color: var(--phoenix-gray-1100) -} - -.email-sidebar .nav-link .nav-item-count { - margin-bottom: 0; - margin-top: .25rem; - font-size: .512rem; - font-weight: 700; - color: var(--phoenix-gray-700) -} - -.email-sidebar .nav-link.active { - color: var(--phoenix-primary) -} - -.email-sidebar .nav-link.active .nav-item-count { - color: var(--phoenix-primary) -} - -@media(min-width: 992px) { - .email-sidebar { - position:sticky !important; - top: calc(var(--phoenix-navbar-top-height) + 5.5rem); - padding: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - height: auto !important - } -} - -.email-sidebar-width { - width: 300px -} - -@media(min-width: 992px) { - .email-sidebar-width { - width:220px - } -} - -.email-content { - height: calc(100vh - 278px); - overflow-x: hidden -} - -.email-content .email-detail-content { - height: calc(100% - 74px) -} - -.safari .email-detail-content { - padding-bottom: 1px -} - -.email-sidebar .email-content { - height: 100% -} - -@media(min-width: 992px) { - .email-sidebar .email-content { - height:calc(100vh - 278px) - } -} - -.email-textarea+.tox { - min-height: 250px -} - -.email-textarea+.tox .tox-editor-header { - margin: 0 0 .25rem !important; - padding: 0 !important -} - -.email-container { - padding-top: calc(var(--phoenix-navbar-top-height) + 1px) -} - -.email-container .email-header { - top: calc(var(--phoenix-navbar-top-height) + 1px) -} - -.email-container .email-toolbar { - top: 0; - margin-bottom: 0 -} - -.email-container .email-toolbar.inbox-toolbar { - top: calc(var(--phoenix-navbar-top-height) + 5.375rem) -} - -.email-container .phoenix-offcanvas-backdrop { - background: rgba(0,0,0,.4) !important -} - -.location-map { - height: 220px; - border-radius: .5rem -} - -.feed-avatar-profile { - position: absolute; - bottom: 0; - -webkit-transform: translateY(50%); - -ms-transform: translateY(50%); - transform: translateY(50%) -} - -.feed-profile { - -webkit-transform: translateY(50%); - -ms-transform: translateY(50%); - transform: translateY(50%) -} - -.feed-profile-cover { - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(245, 246, 252, 0.52)), to(rgba(117, 19, 93, 0.73))),url("generic/59.png"); - background-image: -o-linear-gradient(top, rgba(245, 246, 252, 0.52), rgba(117, 19, 93, 0.73)),url("generic/59.png"); - background-image: linear-gradient(to bottom, rgba(245, 246, 252, 0.52), rgba(117, 19, 93, 0.73)),url("generic/59.png") -} - -.cover-image-file-input { - opacity: 0; - cursor: pointer; - position: absolute; - bottom: 0; - right: 0; - top: 0; - left: 0; - padding: .25rem .5rem; - margin-left: 1rem; - margin-top: 1rem; - border-radius: .375rem; - font-size: .8rem; - color: #fff; - -webkit-box-shadow: 0 .125rem .25rem rgba(0,0,0,.075); - box-shadow: 0 .125rem .25rem rgba(0,0,0,.075) -} - -.dark .dark__bg-soft,.dark .picmo__popupContainer.picmo__light .dark__bg-soft { - background-color: #f5f7fa !important -} - -.dark .dark__text-soft,.dark .picmo__popupContainer.picmo__light .dark__text-soft { - color: #f5f7fa !important -} - -.dark .dark__bg-100,.dark .picmo__popupContainer.picmo__light .dark__bg-100 { - background-color: #eff2f6 !important -} - -.dark .dark__text-100,.dark .picmo__popupContainer.picmo__light .dark__text-100 { - color: #eff2f6 !important -} - -.dark .dark__bg-200,.dark .picmo__popupContainer.picmo__light .dark__bg-200 { - background-color: #e3e6ed !important -} - -.dark .dark__text-200,.dark .picmo__popupContainer.picmo__light .dark__text-200 { - color: #e3e6ed !important -} - -.dark .dark__bg-300,.dark .picmo__popupContainer.picmo__light .dark__bg-300 { - background-color: #cbd0dd !important -} - -.dark .dark__text-300,.dark .picmo__popupContainer.picmo__light .dark__text-300 { - color: #cbd0dd !important -} - -.dark .dark__bg-400,.dark .picmo__popupContainer.picmo__light .dark__bg-400 { - background-color: #9fa6bc !important -} - -.dark .dark__text-400,.dark .picmo__popupContainer.picmo__light .dark__text-400 { - color: #9fa6bc !important -} - -.dark .dark__bg-500,.dark .picmo__popupContainer.picmo__light .dark__bg-500 { - background-color: #8a94ad !important -} - -.dark .dark__text-500,.dark .picmo__popupContainer.picmo__light .dark__text-500 { - color: #8a94ad !important -} - -.dark .dark__bg-600,.dark .picmo__popupContainer.picmo__light .dark__bg-600 { - background-color: #6e7891 !important -} - -.dark .dark__text-600,.dark .picmo__popupContainer.picmo__light .dark__text-600 { - color: #6e7891 !important -} - -.dark .dark__bg-700,.dark .picmo__popupContainer.picmo__light .dark__bg-700 { - background-color: #525b75 !important -} - -.dark .dark__text-700,.dark .picmo__popupContainer.picmo__light .dark__text-700 { - color: #525b75 !important -} - -.dark .dark__bg-800,.dark .picmo__popupContainer.picmo__light .dark__bg-800 { - background-color: #3e465b !important -} - -.dark .dark__text-800,.dark .picmo__popupContainer.picmo__light .dark__text-800 { - color: #3e465b !important -} - -.dark .dark__bg-900,.dark .picmo__popupContainer.picmo__light .dark__bg-900 { - background-color: #31374a !important -} - -.dark .dark__text-900,.dark .picmo__popupContainer.picmo__light .dark__text-900 { - color: #31374a !important -} - -.dark .dark__bg-1000,.dark .picmo__popupContainer.picmo__light .dark__bg-1000 { - background-color: #222834 !important -} - -.dark .dark__text-1000,.dark .picmo__popupContainer.picmo__light .dark__text-1000 { - color: #222834 !important -} - -.dark .dark__bg-1100,.dark .picmo__popupContainer.picmo__light .dark__bg-1100 { - background-color: #141824 !important -} - -.dark .dark__text-1100,.dark .picmo__popupContainer.picmo__light .dark__text-1100 { - color: #141824 !important -} - -.dark .dark__bg-facebook,.dark .picmo__popupContainer.picmo__light .dark__bg-facebook { - background-color: #3c5a99 !important -} - -.dark .dark__text-facebook,.dark .picmo__popupContainer.picmo__light .dark__text-facebook { - color: #3c5a99 !important -} - -.dark .dark__bg-google-plus,.dark .picmo__popupContainer.picmo__light .dark__bg-google-plus { - background-color: #dd4b39 !important -} - -.dark .dark__text-google-plus,.dark .picmo__popupContainer.picmo__light .dark__text-google-plus { - color: #dd4b39 !important -} - -.dark .dark__bg-twitter,.dark .picmo__popupContainer.picmo__light .dark__bg-twitter { - background-color: #1da1f2 !important -} - -.dark .dark__text-twitter,.dark .picmo__popupContainer.picmo__light .dark__text-twitter { - color: #1da1f2 !important -} - -.dark .dark__bg-linkedin,.dark .picmo__popupContainer.picmo__light .dark__bg-linkedin { - background-color: #0077b5 !important -} - -.dark .dark__text-linkedin,.dark .picmo__popupContainer.picmo__light .dark__text-linkedin { - color: #0077b5 !important -} - -.dark .dark__bg-youtube,.dark .picmo__popupContainer.picmo__light .dark__bg-youtube { - background-color: #ff0001 !important -} - -.dark .dark__text-youtube,.dark .picmo__popupContainer.picmo__light .dark__text-youtube { - color: #ff0001 !important -} - -.dark .dark__bg-github,.dark .picmo__popupContainer.picmo__light .dark__bg-github { - background-color: #333 !important -} - -.dark .dark__text-github,.dark .picmo__popupContainer.picmo__light .dark__text-github { - color: #333 !important -} - -.dark .dark__bg-bootstrap,.dark .picmo__popupContainer.picmo__light .dark__bg-bootstrap { - background-color: #6f45a9 !important -} - -.dark .dark__text-bootstrap,.dark .picmo__popupContainer.picmo__light .dark__text-bootstrap { - color: #6f45a9 !important -} - -.dark .dark__bg-css3,.dark .picmo__popupContainer.picmo__light .dark__bg-css3 { - background-color: #203ccf !important -} - -.dark .dark__text-css3,.dark .picmo__popupContainer.picmo__light .dark__text-css3 { - color: #203ccf !important -} - -.dark .dark__bg-html5,.dark .picmo__popupContainer.picmo__light .dark__bg-html5 { - background-color: #bf4b2c !important -} - -.dark .dark__text-html5,.dark .picmo__popupContainer.picmo__light .dark__text-html5 { - color: #bf4b2c !important -} - -.dark .dark__bg-sass,.dark .picmo__popupContainer.picmo__light .dark__bg-sass { - background-color: #c55589 !important -} - -.dark .dark__text-sass,.dark .picmo__popupContainer.picmo__light .dark__text-sass { - color: #c55589 !important -} - -.dark .dark__bg-gulp,.dark .picmo__popupContainer.picmo__light .dark__bg-gulp { - background-color: #d54049 !important -} - -.dark .dark__text-gulp,.dark .picmo__popupContainer.picmo__light .dark__text-gulp { - color: #d54049 !important -} - -.dark .dark__bg-w3c,.dark .picmo__popupContainer.picmo__light .dark__bg-w3c { - background-color: #255997 !important -} - -.dark .dark__text-w3c,.dark .picmo__popupContainer.picmo__light .dark__text-w3c { - color: #255997 !important -} - -.dark .dark__bg-primary,.dark .picmo__popupContainer.picmo__light .dark__bg-primary { - background-color: #3874ff !important -} - -.dark .dark__text-primary,.dark .picmo__popupContainer.picmo__light .dark__text-primary { - color: #3874ff !important -} - -.dark .dark__bg-secondary,.dark .picmo__popupContainer.picmo__light .dark__bg-secondary { - background-color: #31374a !important -} - -.dark .dark__text-secondary,.dark .picmo__popupContainer.picmo__light .dark__text-secondary { - color: #31374a !important -} - -.dark .dark__bg-success,.dark .picmo__popupContainer.picmo__light .dark__bg-success { - background-color: #25b003 !important -} - -.dark .dark__text-success,.dark .picmo__popupContainer.picmo__light .dark__text-success { - color: #25b003 !important -} - -.dark .dark__bg-info,.dark .picmo__popupContainer.picmo__light .dark__bg-info { - background-color: #0097eb !important -} - -.dark .dark__text-info,.dark .picmo__popupContainer.picmo__light .dark__text-info { - color: #0097eb !important -} - -.dark .dark__bg-warning,.dark .picmo__popupContainer.picmo__light .dark__bg-warning { - background-color: #e5780b !important -} - -.dark .dark__text-warning,.dark .picmo__popupContainer.picmo__light .dark__text-warning { - color: #e5780b !important -} - -.dark .dark__bg-danger,.dark .picmo__popupContainer.picmo__light .dark__bg-danger { - background-color: #ed2000 !important -} - -.dark .dark__text-danger,.dark .picmo__popupContainer.picmo__light .dark__text-danger { - color: #ed2000 !important -} - -.dark .dark__bg-light,.dark .picmo__popupContainer.picmo__light .dark__bg-light { - background-color: #eff2f6 !important -} - -.dark .dark__text-light,.dark .picmo__popupContainer.picmo__light .dark__text-light { - color: #eff2f6 !important -} - -.dark .dark__bg-dark,.dark .picmo__popupContainer.picmo__light .dark__bg-dark { - background-color: #141824 !important -} - -.dark .dark__text-dark,.dark .picmo__popupContainer.picmo__light .dark__text-dark { - color: #141824 !important -} - -.dark .dark__bg-primary-soft,.dark .picmo__popupContainer.picmo__light .dark__bg-primary-soft { - background-color: #f5f8ff !important -} - -.dark .dark__text-primary-soft,.dark .picmo__popupContainer.picmo__light .dark__text-primary-soft { - color: #f5f8ff !important -} - -.dark .dark__bg-primary-100,.dark .picmo__popupContainer.picmo__light .dark__bg-primary-100 { - background-color: #e5edff !important -} - -.dark .dark__text-primary-100,.dark .picmo__popupContainer.picmo__light .dark__text-primary-100 { - color: #e5edff !important -} - -.dark .dark__bg-primary-200,.dark .picmo__popupContainer.picmo__light .dark__bg-primary-200 { - background-color: #adc5ff !important -} - -.dark .dark__text-primary-200,.dark .picmo__popupContainer.picmo__light .dark__text-primary-200 { - color: #adc5ff !important -} - -.dark .dark__bg-primary-300,.dark .picmo__popupContainer.picmo__light .dark__bg-primary-300 { - background-color: #85a9ff !important -} - -.dark .dark__text-primary-300,.dark .picmo__popupContainer.picmo__light .dark__text-primary-300 { - color: #85a9ff !important -} - -.dark .dark__bg-primary-500,.dark .picmo__popupContainer.picmo__light .dark__bg-primary-500 { - background-color: #004dff !important -} - -.dark .dark__text-primary-500,.dark .picmo__popupContainer.picmo__light .dark__text-primary-500 { - color: #004dff !important -} - -.dark .dark__bg-primary-600,.dark .picmo__popupContainer.picmo__light .dark__bg-primary-600 { - background-color: #003cc7 !important -} - -.dark .dark__text-primary-600,.dark .picmo__popupContainer.picmo__light .dark__text-primary-600 { - color: #003cc7 !important -} - -.dark .dark__bg-warning-soft,.dark .picmo__popupContainer.picmo__light .dark__bg-warning-soft { - background-color: #fff6e0 !important -} - -.dark .dark__text-warning-soft,.dark .picmo__popupContainer.picmo__light .dark__text-warning-soft { - color: #fff6e0 !important -} - -.dark .dark__bg-warning-100,.dark .picmo__popupContainer.picmo__light .dark__bg-warning-100 { - background-color: #ffefca !important -} - -.dark .dark__text-warning-100,.dark .picmo__popupContainer.picmo__light .dark__text-warning-100 { - color: #ffefca !important -} - -.dark .dark__bg-warning-200,.dark .picmo__popupContainer.picmo__light .dark__bg-warning-200 { - background-color: #ffe6ad !important -} - -.dark .dark__text-warning-200,.dark .picmo__popupContainer.picmo__light .dark__text-warning-200 { - color: #ffe6ad !important -} - -.dark .dark__bg-warning-300,.dark .picmo__popupContainer.picmo__light .dark__bg-warning-300 { - background-color: #ffcc85 !important -} - -.dark .dark__text-warning-300,.dark .picmo__popupContainer.picmo__light .dark__text-warning-300 { - color: #ffcc85 !important -} - -.dark .dark__bg-warning-500,.dark .picmo__popupContainer.picmo__light .dark__bg-warning-500 { - background-color: #d6700a !important -} - -.dark .dark__text-warning-500,.dark .picmo__popupContainer.picmo__light .dark__text-warning-500 { - color: #d6700a !important -} - -.dark .dark__bg-warning-600,.dark .picmo__popupContainer.picmo__light .dark__bg-warning-600 { - background-color: #bc3803 !important -} - -.dark .dark__text-warning-600,.dark .picmo__popupContainer.picmo__light .dark__text-warning-600 { - color: #bc3803 !important -} - -.dark .dark__bg-danger-300,.dark .picmo__popupContainer.picmo__light .dark__bg-danger-300 { - background-color: #f48270 !important -} - -.dark .dark__text-danger-300,.dark .picmo__popupContainer.picmo__light .dark__text-danger-300 { - color: #f48270 !important -} - -.dark .dark__bg-danger-100,.dark .picmo__popupContainer.picmo__light .dark__bg-danger-100 { - background-color: #ffe0db !important -} - -.dark .dark__text-danger-100,.dark .picmo__popupContainer.picmo__light .dark__text-danger-100 { - color: #ffe0db !important -} - -.dark .dark__bg-danger-200,.dark .picmo__popupContainer.picmo__light .dark__bg-danger-200 { - background-color: #fabcb3 !important -} - -.dark .dark__text-danger-200,.dark .picmo__popupContainer.picmo__light .dark__text-danger-200 { - color: #fabcb3 !important -} - -.dark .dark__bg-danger-500,.dark .picmo__popupContainer.picmo__light .dark__bg-danger-500 { - background-color: #cc1b00 !important -} - -.dark .dark__text-danger-500,.dark .picmo__popupContainer.picmo__light .dark__text-danger-500 { - color: #cc1b00 !important -} - -.dark .dark__bg-danger-600,.dark .picmo__popupContainer.picmo__light .dark__bg-danger-600 { - background-color: #b81800 !important -} - -.dark .dark__text-danger-600,.dark .picmo__popupContainer.picmo__light .dark__text-danger-600 { - color: #b81800 !important -} - -.dark .dark__bg-success-100,.dark .picmo__popupContainer.picmo__light .dark__bg-success-100 { - background-color: #d9fbd0 !important -} - -.dark .dark__text-success-100,.dark .picmo__popupContainer.picmo__light .dark__text-success-100 { - color: #d9fbd0 !important -} - -.dark .dark__bg-success-200,.dark .picmo__popupContainer.picmo__light .dark__bg-success-200 { - background-color: #bee8b4 !important -} - -.dark .dark__text-success-200,.dark .picmo__popupContainer.picmo__light .dark__text-success-200 { - color: #bee8b4 !important -} - -.dark .dark__bg-success-300,.dark .picmo__popupContainer.picmo__light .dark__bg-success-300 { - background-color: #90d67f !important -} - -.dark .dark__text-success-300,.dark .picmo__popupContainer.picmo__light .dark__text-success-300 { - color: #90d67f !important -} - -.dark .dark__bg-success-500,.dark .picmo__popupContainer.picmo__light .dark__bg-success-500 { - background-color: #23890b !important -} - -.dark .dark__text-success-500,.dark .picmo__popupContainer.picmo__light .dark__text-success-500 { - color: #23890b !important -} - -.dark .dark__bg-success-600,.dark .picmo__popupContainer.picmo__light .dark__bg-success-600 { - background-color: #1c6c09 !important -} - -.dark .dark__text-success-600,.dark .picmo__popupContainer.picmo__light .dark__text-success-600 { - color: #1c6c09 !important -} - -.dark .dark__bg-info-100,.dark .picmo__popupContainer.picmo__light .dark__bg-info-100 { - background-color: #c7ebff !important -} - -.dark .dark__text-info-100,.dark .picmo__popupContainer.picmo__light .dark__text-info-100 { - color: #c7ebff !important -} - -.dark .dark__bg-info-200,.dark .picmo__popupContainer.picmo__light .dark__bg-info-200 { - background-color: #96d9ff !important -} - -.dark .dark__text-info-200,.dark .picmo__popupContainer.picmo__light .dark__text-info-200 { - color: #96d9ff !important -} - -.dark .dark__bg-info-300,.dark .picmo__popupContainer.picmo__light .dark__bg-info-300 { - background-color: #60c6ff !important -} - -.dark .dark__text-info-300,.dark .picmo__popupContainer.picmo__light .dark__text-info-300 { - color: #60c6ff !important -} - -.dark .dark__bg-info-500,.dark .picmo__popupContainer.picmo__light .dark__bg-info-500 { - background-color: #0080c7 !important -} - -.dark .dark__text-info-500,.dark .picmo__popupContainer.picmo__light .dark__text-info-500 { - color: #0080c7 !important -} - -.dark .dark__bg-info-600,.dark .picmo__popupContainer.picmo__light .dark__bg-info-600 { - background-color: #005585 !important -} - -.dark .dark__text-info-600,.dark .picmo__popupContainer.picmo__light .dark__text-info-600 { - color: #005585 !important -} - -.dark .dark__bg-white,.dark .picmo__popupContainer.picmo__light .dark__bg-white { - background-color: #fff !important -} - -.dark .dark__text-white,.dark .picmo__popupContainer.picmo__light .dark__text-white { - color: #fff !important -} - -.dark .dark__bg-black,.dark .picmo__popupContainer.picmo__light .dark__bg-black { - background-color: #000 !important -} - -.dark .dark__text-black,.dark .picmo__popupContainer.picmo__light .dark__text-black { - color: #000 !important -} - -.dark .dark__bg-1200,.dark .picmo__popupContainer.picmo__light .dark__bg-1200 { - background-color: #0f111a !important -} - -.dark ::-moz-selection, .dark .picmo__popupContainer.picmo__light ::-moz-selection { - background-color: #e5780b -} - -.dark ::selection,.dark .picmo__popupContainer.picmo__light ::selection { - background-color: #e5780b -} - -.settings-panel .img-prototype.dark,.settings-panel .dark .img-prototype.picmo__popupContainer.picmo__light,.dark .settings-panel .img-prototype.picmo__popupContainer.picmo__light { - display: none -} - -.dark .settings-panel .img-prototype.light { - display: none -} - -.dark .settings-panel .img-prototype.dark,.dark .settings-panel .img-prototype.picmo__popupContainer.picmo__light { - display: block -} - -.settings-panel { - max-width: 28.62rem; - width: 100% !important -} - -.setting-panel-item { - border-radius: .5rem; - background-color: var(--phoenix-gray-soft); - margin-top: 1rem; - border: 1px solid var(--phoenix-border-color); - padding: 1rem 1rem 0 1rem -} - -@media(min-width: 768px) { - .setting-panel-item { - padding:1.5rem 1.5rem .25rem 1.5rem - } -} - -.setting-panel-item-title { - line-height: 1.2; - color: var(--phoenix-gray-900); - margin-bottom: .5rem -} - -.settings-panel-header { - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - padding: .5rem 1.25rem -} - -.settings-panel-header:before,.settings-panel-header:after { - border-radius: 50%; - height: 12.5rem; - width: 12.5rem -} - -.settings-panel-header:before { - left: 5.125rem; - top: 1.188rem -} - -.settings-panel-header:after { - right: -6.25rem; - top: -7.938rem -} - -.setting-panel-item .btn-check+.btn-navbar-style { - -webkit-box-shadow: none; - box-shadow: none; - padding: 0; - margin-bottom: 1rem; - text-align: left -} - -.setting-panel-item .btn-check+.btn-navbar-style .img-prototype { - border: 2px solid var(--phoenix-gray-200); - border-radius: .5rem; - -webkit-transition: border .2s ease; - -o-transition: border .2s ease; - transition: border .2s ease; - margin-bottom: .5rem; - background-color: var(--phoenix-gray-100) -} - -.setting-panel-item .btn-check+.btn-navbar-style .label-text { - position: relative; - padding-left: 1.5rem -} - -.setting-panel-item .btn-check+.btn-navbar-style .label-text:after { - position: absolute; - content: ""; - left: 0; - width: 1rem; - height: 1rem; - border: 1px solid var(--phoenix-gray-500); - border-radius: 50%; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); - -webkit-transition: border .2s ease; - -o-transition: border .2s ease; - transition: border .2s ease -} - -.setting-panel-item .btn-check:checked:not([disabled])+.btn-navbar-style .img-prototype { - border-color: var(--phoenix-primary) -} - -.setting-panel-item .btn-check:checked:not([disabled])+.btn-navbar-style .label-text::after { - border: 5px solid var(--phoenix-primary) -} - -.setting-panel-item .btn-check:disabled+.btn-navbar-style { - opacity: .5 -} - -.setting-panel-item .hover-overlay { - position: relative; - overflow: hidden -} - -.setting-panel-item .hover-overlay:after { - position: absolute; - content: ""; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0,0,0,0); - z-index: 1; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out -} - -.setting-panel-item .hover-overlay:hover:after,.setting-panel-item .hover-overlay:focus:after { - background: rgba(0,0,0,.2) -} - -.setting-toggle { - position: fixed; - top: 50%; - right: -3px; - text-decoration: none; - z-index: 1016; - -webkit-transform: rotate(-90deg) translate3d(-25px, 39px, 0); - transform: rotate(-90deg) translate3d(-25px, 39px, 0); - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - margin-top: -83px; - -webkit-box-shadow: var(--phoenix-setting-toggle-shadow); - box-shadow: var(--phoenix-setting-toggle-shadow) -} - -@media(max-width: 575.98px) { - .setting-toggle { - -webkit-transform:rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - outline: none - } - - .setting-toggle .bg-soft-primary { - background-color: rgba(0,0,0,0) !important - } - - .setting-toggle small,.setting-toggle .small { - display: none - } -} - -.setting-toggle:hover { - text-decoration: none !important -} - -.variant-container .img-container { - position: relative; - z-index: 0; - max-width: 549px; - -webkit-box-shadow: 0px 8px 24px -4px rgba(36,40,46,.08); - box-shadow: 0px 8px 24px -4px rgba(36,40,46,.08) -} - -.variant-container .img-container .side-panel-thumb { - position: absolute; - -webkit-transition: -webkit-transform 200ms ease-in-out; - transition: -webkit-transform 200ms ease-in-out; - -o-transition: transform 200ms ease-in-out; - transition: transform 200ms ease-in-out; - transition: transform 200ms ease-in-out, -webkit-transform 200ms ease-in-out; - z-index: 2; - left: 0; - -webkit-filter: drop-shadow(0 0 13px transparent); - filter: drop-shadow(0 0 13px transparent) -} - -.variant-container:hover { - background: #e5edff; - -webkit-transition: .2s; - -o-transition: .2s; - transition: .2s -} - -.variant-container:hover .img-container+h5,.variant-container:hover .img-container+.h5 { - color: #3874ff !important -} - -.variant-container:hover .side-panel-thumb { - -webkit-transform: scale(1.05); - -ms-transform: scale(1.05); - transform: scale(1.05); - -webkit-filter: drop-shadow(0 0 13px rgba(0, 0, 0, 0.12)); - filter: drop-shadow(0 0 13px rgba(0, 0, 0, 0.12)) -} - -.variant-container:hover .layout-thumb::after { - content: ""; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background: rgba(229,237,255,.6) -} - -.showcase-gallery img { - position: relative; - -webkit-filter: drop-shadow(0px 0px 75.44px rgba(0, 0, 0, 0.12)); - filter: drop-shadow(0px 0px 75.44px rgba(0, 0, 0, 0.12)); - border-radius: .5rem -} - -.showcase-gallery .layer-1 { - -webkit-transform: translateY(150px); - -ms-transform: translateY(150px); - transform: translateY(150px) -} - -.showcase-gallery .layer-2 { - -webkit-transform: translateY(180px); - -ms-transform: translateY(180px); - transform: translateY(180px) -} - -.showcase-gallery .layer-3 { - -webkit-transform: translateY(210px); - -ms-transform: translateY(210px); - transform: translateY(210px) -} - -.showcase-gallery .layer-4 { - -webkit-transform: translateY(240px); - -ms-transform: translateY(240px); - transform: translateY(240px) -} - -.showcase-gallery .layer-5 { - -webkit-transform: translateY(270px); - -ms-transform: translateY(270px); - transform: translateY(270px) -} - -.showcase-gallery .layer-6 { - -webkit-transform: translateY(300px); - -ms-transform: translateY(300px); - transform: translateY(300px) -} - -.page-container .img-container { - position: relative; - max-width: 549px; - -webkit-box-shadow: 0px 8px 24px -4px rgba(36,40,46,.08); - box-shadow: 0px 8px 24px -4px rgba(36,40,46,.08) -} - -.page-container .img-container .page-thumb { - -webkit-transition: -webkit-transform 200ms ease-in-out; - transition: -webkit-transform 200ms ease-in-out; - -o-transition: transform 200ms ease-in-out; - transition: transform 200ms ease-in-out; - transition: transform 200ms ease-in-out, -webkit-transform 200ms ease-in-out; - z-index: 2; - left: 0 -} - -.page-container .img-container:hover .page-thumb { - -webkit-transform: scale(1.05); - -ms-transform: scale(1.05); - transform: scale(1.05); - background: rgba(229,237,255,.6); - -webkit-filter: drop-shadow(0 0 13px transparent); - filter: drop-shadow(0 0 13px transparent) -} - -.page-container:hover { - background: #e5edff; - -webkit-transition: .2s; - -o-transition: .2s; - transition: .2s -} - -.page-container:hover .page-thumb { - -webkit-filter: drop-shadow(0 0 13px rgba(0, 0, 0, 0.12)); - filter: drop-shadow(0 0 13px rgba(0, 0, 0, 0.12)); - -webkit-transform: scale(1.05); - -ms-transform: scale(1.05); - transform: scale(1.05) -} - -.page-container:hover .img-container+h5,.page-container:hover .img-container+.h5 { - color: #3874ff !important -} - -.feature-figma-img { - position: absolute; - max-width: 250px; - left: 20%; - top: 15%; - mix-blend-mode: overlay; - opacity: .5 -} - -@media(min-width: 1200px) { - .feature-figma-img { - opacity:.75 - } -} - -.bg-gradient-figma { - position: absolute; - top: 0; - height: 1200%; - background: -o-linear-gradient(287.52deg, #f24e1e -2.09%, #ff7262 10.32%, #ab69ff 35.4%, #1a9efe 56.39%, #1abdf9 70.28%, #0acf83 89.37%); - background: linear-gradient(162.48deg, #f24e1e -2.09%, #ff7262 10.32%, #ab69ff 35.4%, #1a9efe 56.39%, #1abdf9 70.28%, #0acf83 89.37%); - background-repeat: no-repeat; - width: 100%; - background-size: cover -} - -.calendar-title { - min-width: 220px; - text-align: center -} - -.chat { - height: calc(100vh - (var(--phoenix-navbar-top-height) + 10rem)) -} - -.chat .chat-sidebar { - width: 100% -} - -@media(min-width: 576px) { - .chat .chat-sidebar { - width:auto; - background: rgba(0,0,0,0); - border: 0; - position: static; - -webkit-transform: none; - -ms-transform: none; - transform: none - } -} - -@media(min-width: 1200px) { - .chat .chat-sidebar { - width:360px; - min-width: 360px; - position: static; - -webkit-transform: none; - -ms-transform: none; - transform: none - } -} - -.chat .chat-thread-tab .nav-item .nav-link.active { - background: var(--phoenix-200); - border-radius: 6px -} - -.chat .chat-thread-tab .nav-item .nav-link.unread .name { - color: var(--phoenix-1100) !important; - font-weight: 700 !important -} - -.chat .chat-thread-tab .nav-item .nav-link.unread .message { - color: var(--phoenix-800) !important; - font-weight: 600 !important -} - -.chat .chat-message .actions { - -webkit-box-shadow: 0px 0px 32px rgba(0,0,0,.12),0px 8px 24px -4px rgba(36,40,46,.12); - box-shadow: 0px 0px 32px rgba(0,0,0,.12),0px 8px 24px -4px rgba(36,40,46,.12) -} - -.chat .chat-message .chat-message-content { - max-width: calc(100% - 4rem) -} - -.chat .chat-message .chat-message-content.received { - max-width: calc(100% - 6rem) -} - -@media(min-width: 576px) { - .chat .chat-message .chat-message-content { - max-width:calc(100% - 10rem) - } - - .chat .chat-message .chat-message-content.received { - max-width: calc(100% - 11rem) - } -} - -.chat .chat-message .received-message-content { - position: relative -} - -.chat .chat-message .received-message-content:not(.chat .chat-message .received-message-content.gallery):after { - content: " "; - position: absolute; - width: 0; - height: 0; - left: -10px; - right: auto; - top: 0px; - bottom: auto; - border: 10px solid; - border-color: var(--phoenix-white) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) -} - -.chat .chat-message .received-message-content:not(.chat .chat-message .received-message-content.gallery):before { - content: " "; - position: absolute; - width: 0; - height: 0; - left: -12px; - right: auto; - top: -1px; - bottom: auto; - border: 11px solid; - border-color: var(--phoenix-200) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) -} - -.chat .chat-message .sent-message-content { - position: relative -} - -.chat .chat-message .sent-message-content:not(.chat .chat-message .sent-message-content.gallery):after { - content: " "; - position: absolute; - width: 0; - height: 0; - left: auto; - right: -12px; - top: auto; - bottom: 0; - border: 12px solid; - border-color: rgba(0,0,0,0) rgba(0,0,0,0) var(--phoenix-primary) rgba(0,0,0,0) -} - -.chat .chat-textarea { - max-height: 6.25rem -} - -.chat .chat-textarea[contenteditable=true]:empty:before { - content: attr(placeholder); - pointer-events: none; - color: var(--phoenix-gray-500); - font-weight: 600 -} - -.chat-search-box { - -webkit-box-shadow: 0px 16px 80px -4px rgba(36,40,46,.3); - box-shadow: 0px 16px 80px -4px rgba(36,40,46,.3) -} - -.chat-search-box .form-icon { - top: 1.25rem !important -} - -#searchBoxModal .modal-content { - background-color: rgba(0,0,0,0) -} - -#searchBoxModal .modal-backdrop { - background-color: rgba(0,0,0,0) -} - -.firefox .chat-sidebar .scrollbar,.firefox .chat-sidebar .tox .tox-toolbar--scrolling,.tox .firefox .chat-sidebar .tox-toolbar--scrolling,.firefox .chat-sidebar .picmo__picker.picmo__picker .picmo__emojiArea,.picmo__picker.picmo__picker .firefox .chat-sidebar .picmo__emojiArea,.firefox .chat-sidebar html:not(.navbar-vertical-collapsed) .navbar-vertical .navbar-vertical-content,html:not(.navbar-vertical-collapsed) .navbar-vertical .firefox .chat-sidebar .navbar-vertical-content,.firefox .chat-sidebar .offcanvas.faq-sidebar { - min-width: 75px -} - -.dot-typing { - position: relative; - left: -9999px; - width: 5px; - height: 5px; - border-radius: 5px; - background-color: #9880ff; - color: #9880ff; - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - -webkit-animation: dot-typing 1.5s infinite linear; - animation: dot-typing 1.5s infinite linear -} - -@-webkit-keyframes dot-typing { - 0% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 16.667% { - -webkit-box-shadow: 9984px -10px 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px -10px 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 33.333% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 50% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px -10px 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px -10px 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 66.667% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 83.333% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px -10px 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px -10px 0 0 #9880ff - } - - 100% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } -} - -@keyframes dot-typing { - 0% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 16.667% { - -webkit-box-shadow: 9984px -10px 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px -10px 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 33.333% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 50% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px -10px 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px -10px 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 66.667% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } - - 83.333% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px -10px 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px -10px 0 0 #9880ff - } - - 100% { - -webkit-box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff; - box-shadow: 9984px 0 0 0 #9880ff,9999px 0 0 0 #9880ff,10014px 0 0 0 #9880ff - } -} - -.typing { - position: relative -} - -.typing span { - display: inline-block; - -webkit-animation: blink 1.5s infinite; - animation: blink 1.5s infinite; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - height: 10px; - width: 10px; - background: #3b5998; - border-radius: 50% -} - -.typing span:nth-child(2) { - -webkit-animation-delay: .2s; - animation-delay: .2s; - margin-left: 15px -} - -.typing span:nth-child(3) { - -webkit-animation-delay: .4s; - animation-delay: .4s; - margin-left: 30px -} - -@-webkit-keyframes blink { - 0% { - opacity: .1 - } - - 20% { - opacity: 1 - } - - 100% { - opacity: .1 - } -} - -@keyframes blink { - 0% { - opacity: .1 - } - - 20% { - opacity: 1 - } - - 100% { - opacity: .1 - } -} - -.lead-details-container .nav-underline-scrollspy { - z-index: 1014; - top: calc(var(--phoenix-navbar-top-height) + 1px) -} - -.deal-details .nav-link { - color: var(--phoenix-gray-1100); - font-weight: 600 -} - -.deal-details .nav-link .tab-icon-color { - color: var(--phoenix-gray-700) -} - -.deal-details .nav-link.active { - color: var(--phoenix-primary) -} - -.deal-details .nav-link.active .tab-icon-color { - color: var(--phoenix-primary) -} - -.sticky-leads-sidebar { - position: sticky; - z-index: 1015; - top: calc(var(--phoenix-navbar-top-height) + 21px) -} - -.leads-table th { - position: relative -} - -.leads-table th::after { - position: absolute; - top: 35% -} - -.lead-details-offcanvas { - max-width: 350px; - top: var(--phoenix-navbar-top-height) !important; - height: calc(100vh - var(--phoenix-navbar-top-height)); - padding: 1.5rem; - padding-top: 1rem -} - -@media(min-width: 768px) { - .lead-details-offcanvas { - position:static !important; - top: 1rem !important; - padding: 0 !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; - max-width: unset; - height: auto - } -} - -.icon-wrapper-sm { - position: relative; - display: inline-block -} - -.icon-wrapper-sm::before { - position: absolute; - content: ""; - height: 1.299rem; - width: 1.299rem; - border-radius: .243rem; - top: .5rem; - left: .2rem -} - -.shadow-primary-100:before { - background-color: rgba(var(--phoenix-primary-rgb), 0.3) -} - -.shadow-info-100:before { - background-color: rgba(var(--phoenix-info-rgb), 0.3) -} - -.list-group-item.list-group-crm { - padding: .3rem 0 -} - -.echart-contacts-width { - min-width: 19rem !important; - min-height: 320px; - overflow: hidden -} - -@media(min-width: 576px) { - .echart-contacts-width { - min-width:unset !important - } -} - -@media(min-width: 768px) { - .echart-contacts-width { - min-height:435px !important - } -} - -@media(min-width: 992px) { - .echart-contacts-width { - min-height:320px !important - } -} - -@media(min-width: 1200px)and (max-width: 1539.98px) { - .echart-contacts-width { - min-height:430px !important - } -} - -@media(min-width: 576px) { - .table-stats tr th:nth-child(1) { - width:45% - } - - .table-stats tr th:nth-child(1) { - width: 5% - } - - .table-stats tr th:nth-child(1) { - width: 50% - } -} - -.table-stats tr td { - display: table-row -} - -@media(min-width: 576px) { - .table-stats tr td { - display:table-cell - } -} - -.reports-details-chart-table tbody tr:last-child td { - border-bottom: 0; - padding-bottom: 0 !important -} - -.deals { - width: 146.06rem; - white-space: nowrap; - height: calc(100vh - var(--phoenix-navbar-top-height) - 15.625rem - 4rem) -} - -@media(min-width: 1200px) { - .deals { - height:calc(100vh - var(--phoenix-navbar-top-height) - 12.375rem - 4rem) - } -} - -.deals .deals-col { - width: 22.875rem; - display: inline-block; - vertical-align: top; - height: 100%; - white-space: nowrap -} - -.deals .deals-col .deals-items-container { - height: calc(100% - 5.18rem) -} - -.deals .deals-col .deals-items-container .sortable-ghost { - position: relative -} - -.deals .deals-col .deals-items-container .sortable-ghost::before { - content: ""; - height: 100%; - width: 100%; - background-color: var(--phoenix-ghost-bg); - position: absolute; - top: 0; - left: 0; - z-index: 1000; - border-radius: .375rem -} - -.dark .deals .deals-col .deals-items-container .sortable-ghost::before { - background-color: #141824 -} - -.deals .deals-col .deals-items-container .sortable-drag .card { - border: 0 !important; - -webkit-transform: rotate(-5deg) !important; - -ms-transform: rotate(-5deg) !important; - transform: rotate(-5deg) !important; - background-color: var(--phoenix-drag-bg); - top: 5px -} - -.deals .deals-col .deals-items-container .dropdown-indicator-icon { - right: 1.5rem; - top: 1.25rem -} - -.deals .deals-col .deals-items-container .dropdown-indicator-icon .fa-angle-down { - -webkit-transition: .5s ease transform; - -o-transition: .5s ease transform; - transition: .5s ease transform -} - -.deals .deals-col .deals-items-container [aria-expanded=true].dropdown-indicator-icon .fa-angle-down { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg) -} - -.deals .deals-col .deals-items-container [aria-expanded=true]~.deals-company-agent { - display: none !important -} - -.deals .deals-col .deals-items-container [aria-expanded=true]~.deals-items-head .deals-revenue { - display: none !important -} - -.deals .deals-col .deals-items-container [aria-expanded=true]~.deals-items-head .deals-category { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important -} - -.kanban-deals-content { - padding-left: 0 !important; - padding-right: 0 !important; - position: fixed; - left: 0; - right: 0 -} - -.crm-deals-breadcrumb { - padding-left: 1.5rem; - padding-right: 1.5rem -} - -@media(min-width: 992px) { - .crm-deals-breadcrumb { - padding-left:2.5rem; - padding-right: 2.5rem - } -} - -.bg-auth-card-overlay { - mix-blend-mode: overlay -} - -.auth-card { - background-color: #fff -} - -.dark .auth-card,.dark .picmo__popupContainer.picmo__light .auth-card { - background-color: #0f111a -} - -@media(min-width: 576px)and (max-width: 767.98px) { - .auth-card { - width:27rem; - margin: 0 auto - } -} - -.auth-card .auth-title-box { - width: 100% -} - -@media(min-width: 768px) { - .auth-card .auth-title-box { - width:16.875rem - } -} - -@media(min-width: 992px) { - .auth-card .auth-title-box { - width:23.4375rem - } -} - -.auth-card .auth-title-box .auth-title-box-img { - width: 9.5rem; - height: 7.56rem -} - -@media(min-width: 768px) { - .auth-card .auth-title-box .auth-title-box-img { - width:12.5rem; - height: 9.875rem - } -} - -@media(min-width: 992px) { - .auth-card .auth-title-box .auth-title-box-img { - width:17.93rem; - height: 14.18rem - } -} - -@media(min-width: 768px) { - .auth-card .auth-title-box .card-sign-up { - padding-bottom:10rem !important - } -} - -@media(min-width: 1200px) { - .auth-card .auth-title-box .card-sign-up { - padding-bottom:3rem !important - } -} - -.auth-card .auth-form-box { - margin: auto; - width: 100% -} - -@media(min-width: 768px) { - .auth-card .auth-form-box { - max-width:16.625rem - } -} - -@media(min-width: 992px) { - .auth-card .auth-form-box { - max-width:18.75rem - } -} - -@media(min-width: 1540px) { - .auth-card .auth-form-box { - max-width:25rem - } -} - -.verification-form { - max-width: 17.6875rem; - margin: 0 auto -} - -.verification-form .form-control { - -moz-appearance: textfield -} - -.verification-form .form-control::-webkit-outer-spin-button,.verification-form .form-control::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0 -} - -.support-chat-container { - display: none -} - -.support-chat-container.show { - display: block -} - -.support-chat { - position: fixed; - bottom: 3rem; - right: 0; - max-width: 27.87rem; - width: 100%; - -webkit-transform: scale(0); - -ms-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-transform-origin: bottom right; - -ms-transform-origin: bottom right; - transform-origin: bottom right; - z-index: 1045; - -webkit-transition: .3s ease-out; - -o-transition: .3s ease-out; - transition: .3s ease-out; - padding-bottom: 3rem -} - -.support-chat-start .support-chat { - right: auto; - left: 0; - -webkit-transform-origin: bottom left; - -ms-transform-origin: bottom left; - transform-origin: bottom left -} - -.support-chat-bottom-lg .support-chat { - bottom: 5rem -} - -@media(min-width: 576px) { - .support-chat { - right:1rem - } - - .support-chat-start .support-chat { - left: 1rem - } -} - -@media(min-width: 992px) { - .support-chat { - right:2rem - } - - .support-chat-start .support-chat { - left: 2rem - } -} - -.support-chat .card { - -webkit-box-shadow: 0px 0px 32px 0px rgba(36,40,46,.12); - box-shadow: 0px 0px 32px 0px rgba(36,40,46,.12) -} - -.dark .support-chat .card { - -webkit-box-shadow: 0px 0px 32px 10px rgba(0,0,0,.41); - box-shadow: 0px 0px 32px 10px rgba(0,0,0,.41) -} - -.support-chat .card-body { - height: 27rem -} - -.support-chat.show-chat { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - opacity: 1 -} - -.support-chat .send-btn { - width: 37.06px; - height: 37.06px; - border-radius: 50%; - color: var(--phoenix-primary) -} - -.support-chat .send-btn:hover { - background-color: var(--phoenix-gray-100); - color: var(--phoenix-primary-500) -} - -.support-chat .send-btn:active { - background-color: var(--phoenix-gray-200); - color: var(--phoenix-primary-500) -} - -.support-chat+.btn-support-chat { - position: fixed; - bottom: 2.5rem; - right: 1rem; - width: 9rem; - height: 3rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - overflow: hidden; - background-color: var(--phoenix-white) !important; - z-index: 1045; - border-radius: var(--phoenix-border-radius-pill); - -webkit-box-shadow: 0px 0px 32px 0px rgba(36,40,46,.12); - box-shadow: 0px 0px 32px 0px rgba(36,40,46,.12); - -webkit-transition: .3s ease; - -o-transition: .3s ease; - transition: .3s ease -} - -.dark .support-chat+.btn-support-chat,.dark .picmo__popupContainer.picmo__light .support-chat+.btn-support-chat { - -webkit-box-shadow: 0px 0px 32px 10px rgba(0,0,0,.41); - box-shadow: 0px 0px 32px 10px rgba(0,0,0,.41) -} - -.support-chat-start .support-chat+.btn-support-chat { - right: auto; - left: 1rem -} - -.support-chat-bottom-lg .support-chat+.btn-support-chat { - bottom: 4.5rem -} - -@media(min-width: 576px) { - .support-chat+.btn-support-chat { - right:2rem - } - - .support-chat-start .support-chat+.btn-support-chat { - left: 2rem - } -} - -@media(min-width: 992px) { - .support-chat+.btn-support-chat { - right:3rem - } - - .support-chat-start .support-chat+.btn-support-chat { - left: 3rem - } -} - -.support-chat+.btn-support-chat:hover { - background-color: var(--phoenix-gray-100) !important -} - -.support-chat+.btn-support-chat .fa-chevron-down { - display: none -} - -.support-chat+.btn-support-chat.btn-chat-close { - border-radius: 50%; - width: 3rem -} - -.support-chat+.btn-support-chat.btn-chat-close .btn-text,.support-chat+.btn-support-chat.btn-chat-close .fa-circle { - display: none -} - -.support-chat+.btn-support-chat.btn-chat-close .fa-chevron-down { - display: block -} - -.kanban-content { - position: fixed; - padding-top: var(--phoenix-navbar-top-height); - padding-left: 0 !important; - padding-right: 0 !important; - left: 0; - right: 0 -} - -.kanban-content .phoenix-offcanvas { - width: 100%; - top: var(--phoenix-navbar-top-height); - padding: 1rem 2rem; - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) -} - -.kanban-content .phoenix-offcanvas.show~.phoenix-offcanvas-backdrop { - top: var(--phoenix-navbar-top-height); - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem) -} - -@media(min-width: 1540px) { - .navbar.navbar-expand-xxl~.kanban-content .kanban-header,.navbar.navbar-expand-xxl~.kanban-deals-content .kanban-header { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-xxl~.kanban-content .kanban-container,.navbar.navbar-expand-xxl~.kanban-deals-content .kanban-container { - padding-left: 2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-xxl~.kanban-content .footer,.navbar.navbar-expand-xxl~.kanban-deals-content .footer { - padding-left: 2.5rem - } -} - -@media(min-width: 1200px) { - .navbar.navbar-expand-xl~.kanban-content .kanban-header,.navbar.navbar-expand-xl~.kanban-deals-content .kanban-header { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-xl~.kanban-content .kanban-container,.navbar.navbar-expand-xl~.kanban-deals-content .kanban-container { - padding-left: 2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-xl~.kanban-content .footer,.navbar.navbar-expand-xl~.kanban-deals-content .footer { - padding-left: 2.5rem - } -} - -@media(min-width: 992px) { - .navbar.navbar-expand-lg~.kanban-content .kanban-header,.navbar.navbar-expand-lg~.kanban-deals-content .kanban-header { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-lg~.kanban-content .kanban-container,.navbar.navbar-expand-lg~.kanban-deals-content .kanban-container { - padding-left: 2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-lg~.kanban-content .footer,.navbar.navbar-expand-lg~.kanban-deals-content .footer { - padding-left: 2.5rem - } -} - -@media(min-width: 768px) { - .navbar.navbar-expand-md~.kanban-content .kanban-header,.navbar.navbar-expand-md~.kanban-deals-content .kanban-header { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-md~.kanban-content .kanban-container,.navbar.navbar-expand-md~.kanban-deals-content .kanban-container { - padding-left: 2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-md~.kanban-content .footer,.navbar.navbar-expand-md~.kanban-deals-content .footer { - padding-left: 2.5rem - } -} - -@media(min-width: 576px) { - .navbar.navbar-expand-sm~.kanban-content .kanban-header,.navbar.navbar-expand-sm~.kanban-deals-content .kanban-header { - padding-left:2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-sm~.kanban-content .kanban-container,.navbar.navbar-expand-sm~.kanban-deals-content .kanban-container { - padding-left: 2.5rem; - padding-right: 2.5rem - } - - .navbar.navbar-expand-sm~.kanban-content .footer,.navbar.navbar-expand-sm~.kanban-deals-content .footer { - padding-left: 2.5rem - } -} - -.navbar.navbar-expand-xs~.kanban-content .kanban-header,.navbar.navbar-expand-xs~.kanban-deals-content .kanban-header { - padding-left: 2.5rem; - padding-right: 2.5rem -} - -.navbar.navbar-expand-xs~.kanban-content .kanban-container,.navbar.navbar-expand-xs~.kanban-deals-content .kanban-container { - padding-left: 2.5rem; - padding-right: 2.5rem -} - -.navbar.navbar-expand-xs~.kanban-content .footer,.navbar.navbar-expand-xs~.kanban-deals-content .footer { - padding-left: 2.5rem -} - -.kanban-header { - padding: .5rem 1.5rem; - border-bottom: 1px solid var(--phoenix-gray-300) -} - -.kanban-container { - white-space: nowrap; - padding: 0 1.5rem; - background-color: var(--phoenix-kanban-bg); - height: calc(100vh - var(--phoenix-navbar-top-height) - 4rem - 106px) -} - -@media(min-width: 768px) { - .kanban-container { - height:calc(100vh - var(--phoenix-navbar-top-height) - 4rem - 63px) - } -} - -.kanban-container .sortable-drag .sortable-item.card { - background-color: var(--phoenix-drag-bg) -} - -.kanban-container .sortable-item.card { - background-color: var(--phoenix-kanban-column-bg); - border-radius: .5rem; - border: 0 -} - -.kanban-container .sortable-item.card:hover { - background-color: var(--phoenix-kanban-column-hover-bg) -} - -.kanban-container .kanban-items-container { - opacity: 1; - -webkit-transition: opacity .4s ease-out; - -o-transition: opacity .4s ease-out; - transition: opacity .4s ease-out; - -webkit-transition-delay: .2s; - -o-transition-delay: .2s; - transition-delay: .2s; - min-height: 1rem -} - -.kanban-container .kanban-column { - display: inline-block !important; - width: 22rem; - white-space: normal; - vertical-align: top; - margin-right: 1rem; - background-color: var(--phoenix-kanban-column-bg); - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease; - height: 100%; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none -} - -.kanban-container .kanban-column-title { - font-weight: 700; - color: var(--phoenix-black) -} - -.kanban-container .kanban-title-badge { - border-radius: var(--phoenix-border-radius-pill); - background-color: var(--phoenix-gray-200); - font-size: .8rem; - font-weight: 600; - padding: 4px 9px; - margin-left: .5rem; - color: var(--phoenix-black); - line-height: 1; - display: inline -} - -.kanban-container .kanban-item-dropdown-btn { - padding: 0 .5rem; - position: absolute !important; - right: 0; - top: 0; - z-index: 2 !important -} - -.kanban-container .kanban-header-dropdown-btn { - position: absolute !important; - top: -15px; - z-index: 2 !important -} - -.kanban-container .kanban-collapse-icon { - cursor: pointer -} - -.kanban-container .kanban-collapse-icon.uil-arrow-from-right { - display: none -} - -.kanban-container .kanban-column.collapsed { - width: 3.5rem; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease; - overflow: hidden; - height: 100%; - position: relative -} - -.kanban-container .kanban-column.collapsed .kanban-header-dropdown-btn { - display: none !important -} - -.kanban-container .kanban-column.collapsed .kanban-column-header { - padding-left: 1rem !important; - padding-right: 1rem !important -} - -.kanban-container .kanban-column.collapsed .kanban-column-title { - margin: 0; - position: absolute; - top: 10rem; - left: 50%; - -webkit-transform: translate(-50%, -50%) rotate(-90deg); - -ms-transform: translate(-50%, -50%) rotate(-90deg); - transform: translate(-50%, -50%) rotate(-90deg); - white-space: nowrap; - min-width: 10rem; - text-align: end -} - -.kanban-container .kanban-column.collapsed .kanban-collapse-icon { - margin: 0 auto -} - -.kanban-container .kanban-column.collapsed .kanban-collapse-icon.uil-left-arrow-to-left { - display: none -} - -.kanban-container .kanban-column.collapsed .kanban-collapse-icon.uil-arrow-from-right { - display: inline -} - -.kanban-container .kanban-column.collapsed .kanban-add-task { - display: none -} - -.kanban-container .kanban-column.collapsed .kanban-items-container { - opacity: 0; - -webkit-transition: none; - -o-transition: none; - transition: none -} - -.kanban-container .kanban-column.collapsed .kanban-items-container .sortable-item { - display: none -} - -.kanban-add-task { - display: -webkit-box; - display: -ms-flexbox; - display: flex -} - -.kanban-add-task button { - width: 38px; - height: 38px; - -ms-flex-negative: 0; - flex-shrink: 0 -} - -.kanban-add-task button:hover { - background-color: var(--phoenix-gray-400) !important -} - -.kanban-action-item { - background-color: var(--phoenix-gray-soft); - margin-bottom: .5rem; - border-radius: .375rem; - position: relative -} - -.kanban-create-board .nav-underline .nav-item { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.kanban-create-board .nav-underline .nav-item .nav-link { - text-align: center -} - -.kanban-create-board .nav-underline .nav-item .nav-link::before { - display: none -} - -.kanban-column-input-container { - position: relative -} - -.kanban-column-input-container .kanban-column-icon { - position: absolute; - left: 1rem; - top: 50%; - -webkit-transform: translateY(-8px); - -ms-transform: translateY(-8px); - transform: translateY(-8px) -} - -.kanban-column-input-container .form-floating input { - padding-left: 2.25rem -} - -.kanban-column-input-container.flatpickr-input-sm .flatpickr-icon { - -webkit-transform: translateY(-13px); - -ms-transform: translateY(-13px); - transform: translateY(-13px) -} - -.kanban-color-picker { - min-width: 128px; - padding: 14px 48px 14px 16px; - background: var(--phoenix-white); - height: 100%; - width: 100%; - border: 1px solid var(--phoenix-input-border-color); - border-radius: var(--phoenix-border-radius); - position: relative; - background-image: var(--phoenix-form-select-indicator); - background-repeat: no-repeat; - background-position: right 1rem center; - background-size: 11px 12px -} - -.kanban-color-picker::-webkit-color-swatch { - border: none -} - -.kanban-column-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 2rem -} - -.kanban-swatch-label { - width: 50px; - height: 40px; - border: 1px solid var(--phoenix-border-color); - border-radius: var(--phoenix-border-radius-pill) -} - -.kanban-radio-bg-image { - border-radius: var(--phoenix-border-radius-lg) -} - -.kanban-swatch-radio:checked+.kanban-swatch-btn-shadow { - border-color: var(--phoenix-primary); - -webkit-box-shadow: 0 0 0 .2rem rgba(var(--phoenix-primary-rgb), 0.5); - box-shadow: 0 0 0 .2rem rgba(var(--phoenix-primary-rgb), 0.5); - outline: 0 -} - -.kanban-swatch-radio:checked+.kanban-radio-bg-image { - -webkit-box-shadow: 0 0 0 .2rem rgba(var(--phoenix-primary-rgb), 0.5); - box-shadow: 0 0 0 .2rem rgba(var(--phoenix-primary-rgb), 0.5) -} - -.kanban-tag .kanban-tag-badge { - width: 100%; - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease -} - -.kanban-tag .kanban-tag-action-icons { - padding: .66rem .66rem; - border-color: rgba(0,0,0,0); - opacity: 0; - -webkit-transition: opacity .2s ease; - -o-transition: opacity .2s ease; - transition: opacity .2s ease -} - -.kanban-tag .kanban-tag-action-icons:hover { - background-color: var(--phoenix-100) !important -} - -.kanban-tag:hover .kanban-tag-badge { - width: calc(100% - 80px); - -webkit-transition: width .2s ease; - -o-transition: width .2s ease; - transition: width .2s ease -} - -.kanban-tag:hover .kanban-tag-action-icons { - opacity: 1 -} - -.theme-wizard.theme-wizard-progress .nav-wizard .nav-item { - pointer-events: none; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.theme-wizard.theme-wizard-progress .nav-wizard .nav-item:first-child .nav-link::before { - border-top-left-radius: 5px; - border-bottom-left-radius: 5px -} - -.theme-wizard.theme-wizard-progress .nav-wizard .nav-item:last-child .nav-link::before { - border-top-right-radius: 5px; - border-bottom-right-radius: 5px -} - -.theme-wizard.theme-wizard-progress .nav-wizard .nav-item .nav-link:before { - content: "" !important; - height: 6px !important; - left: 0 !important; - top: 48% !important; - width: 100% !important; - position: absolute !important; - background-color: var(--phoenix-300) !important -} - -.theme-wizard.theme-wizard-progress .nav-wizard.nav-wizard-progress .nav-item .nav-link.active::before { - background-color: var(--phoenix-primary) !important -} - -.theme-wizard.theme-wizard-progress .nav-wizard.nav-wizard-progress .nav-item .nav-link.complete::before,.theme-wizard.theme-wizard-progress .nav-wizard.nav-wizard-progress .nav-item .nav-link.done::before { - background-color: var(--phoenix-primary) !important -} - -.kanban-column-underline-primary { - position: relative -} - -.kanban-column-underline-primary::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-primary) -} - -.kanban-column-underline-secondary { - position: relative -} - -.kanban-column-underline-secondary::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-secondary) -} - -.kanban-column-underline-success { - position: relative -} - -.kanban-column-underline-success::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-success) -} - -.kanban-column-underline-info { - position: relative -} - -.kanban-column-underline-info::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-info) -} - -.kanban-column-underline-warning { - position: relative -} - -.kanban-column-underline-warning::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-warning) -} - -.kanban-column-underline-danger { - position: relative -} - -.kanban-column-underline-danger::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-danger) -} - -.kanban-column-underline-light { - position: relative -} - -.kanban-column-underline-light::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-light) -} - -.kanban-column-underline-dark { - position: relative -} - -.kanban-column-underline-dark::after { - content: ""; - position: absolute; - top: 100%; - left: 0; - height: 4px; - width: 100%; - border-radius: 5px; - background-color: var(--phoenix-dark) -} - -.kanban-radio-collapse input[aria-expanded=true] { - pointer-events: none -} - -.kanban-radio-collapse input[aria-expanded=true]+label { - pointer-events: none -} - -.kanban-board-bg img { - max-width: 100%; - width: 450px -} - -@media(min-width: 1200px) { - .kanban-board-bg img { - width:600px - } -} - -.kanban-boards-content { - padding-left: 0 !important; - padding-right: 0 !important -} - -.sortable-drag { - opacity: 1 !important -} - -.sortable-drag .sortable-item { - -webkit-transform: rotate(-5deg); - -ms-transform: rotate(-5deg); - transform: rotate(-5deg); - top: 5px -} - -.sortable-ghost .sortable-item { - position: relative -} - -.sortable-ghost .sortable-item::before { - content: ""; - height: 100%; - width: 100%; - background-color: var(--phoenix-ghost-bg); - position: absolute; - top: 0; - left: 0; - z-index: 1000; - border-radius: .375rem -} - -.sortable-dragging * { - cursor: -webkit-grabbing !important; - cursor: grabbing !important -} - -.sortable-item { - cursor: pointer -} - -.sortable-item:active { - cursor: -webkit-grabbing; - cursor: grabbing -} diff --git a/dashboard/images/logo-non-bg-.png b/dashboard/images/logo-non-bg-.png deleted file mode 100644 index 7ead23cdbc..0000000000 Binary files a/dashboard/images/logo-non-bg-.png and /dev/null differ diff --git a/dashboard/images/logo-non-bg.png b/dashboard/images/logo-non-bg.png deleted file mode 100644 index 9a7f7f516d..0000000000 Binary files a/dashboard/images/logo-non-bg.png and /dev/null differ diff --git a/dashboard/images/logo.png b/dashboard/images/logo.png deleted file mode 100644 index 4c7287836e..0000000000 Binary files a/dashboard/images/logo.png and /dev/null differ diff --git a/dashboard/js/bootstrap.bundle.min.js b/dashboard/js/bootstrap.bundle.min.js deleted file mode 100644 index 3b46a66867..0000000000 --- a/dashboard/js/bootstrap.bundle.min.js +++ /dev/null @@ -1,3965 +0,0 @@ -/*! - * Bootstrap v5.3.2 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t, e) { - "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = e() -}(this, (function() { - "use strict"; - const t = new Map - , e = { - set(e, i, n) { - t.has(e) || t.set(e, new Map); - const s = t.get(e); - s.has(i) || 0 === s.size ? s.set(i, n) : console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`) - }, - get: (e,i)=>t.has(e) && t.get(e).get(i) || null, - remove(e, i) { - if (!t.has(e)) - return; - const n = t.get(e); - n.delete(i), - 0 === n.size && t.delete(e) - } - } - , i = "transitionend" - , n = t=>(t && window.CSS && window.CSS.escape && (t = t.replace(/#([^\s"#']+)/g, ((t,e)=>`#${CSS.escape(e)}`))), - t) - , s = t=>{ - t.dispatchEvent(new Event(i)) - } - , o = t=>!(!t || "object" != typeof t) && (void 0 !== t.jquery && (t = t[0]), - void 0 !== t.nodeType) - , r = t=>o(t) ? t.jquery ? t[0] : t : "string" == typeof t && t.length > 0 ? document.querySelector(n(t)) : null - , a = t=>{ - if (!o(t) || 0 === t.getClientRects().length) - return !1; - const e = "visible" === getComputedStyle(t).getPropertyValue("visibility") - , i = t.closest("details:not([open])"); - if (!i) - return e; - if (i !== t) { - const e = t.closest("summary"); - if (e && e.parentNode !== i) - return !1; - if (null === e) - return !1 - } - return e - } - , l = t=>!t || t.nodeType !== Node.ELEMENT_NODE || !!t.classList.contains("disabled") || (void 0 !== t.disabled ? t.disabled : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled")) - , c = t=>{ - if (!document.documentElement.attachShadow) - return null; - if ("function" == typeof t.getRootNode) { - const e = t.getRootNode(); - return e instanceof ShadowRoot ? e : null - } - return t instanceof ShadowRoot ? t : t.parentNode ? c(t.parentNode) : null - } - , h = ()=>{} - , d = t=>{ - t.offsetHeight - } - , u = ()=>window.jQuery && !document.body.hasAttribute("data-bs-no-jquery") ? window.jQuery : null - , f = [] - , p = ()=>"rtl" === document.documentElement.dir - , m = t=>{ - var e; - e = ()=>{ - const e = u(); - if (e) { - const i = t.NAME - , n = e.fn[i]; - e.fn[i] = t.jQueryInterface, - e.fn[i].Constructor = t, - e.fn[i].noConflict = ()=>(e.fn[i] = n, - t.jQueryInterface) - } - } - , - "loading" === document.readyState ? (f.length || document.addEventListener("DOMContentLoaded", (()=>{ - for (const t of f) - t() - } - )), - f.push(e)) : e() - } - , g = (t,e=[],i=t)=>"function" == typeof t ? t(...e) : i - , _ = (t,e,n=!0)=>{ - if (!n) - return void g(t); - const o = (t=>{ - if (!t) - return 0; - let {transitionDuration: e, transitionDelay: i} = window.getComputedStyle(t); - const n = Number.parseFloat(e) - , s = Number.parseFloat(i); - return n || s ? (e = e.split(",")[0], - i = i.split(",")[0], - 1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) : 0 - } - )(e) + 5; - let r = !1; - const a = ({target: n})=>{ - n === e && (r = !0, - e.removeEventListener(i, a), - g(t)) - } - ; - e.addEventListener(i, a), - setTimeout((()=>{ - r || s(e) - } - ), o) - } - , b = (t,e,i,n)=>{ - const s = t.length; - let o = t.indexOf(e); - return -1 === o ? !i && n ? t[s - 1] : t[0] : (o += i ? 1 : -1, - n && (o = (o + s) % s), - t[Math.max(0, Math.min(o, s - 1))]) - } - , v = /[^.]*(?=\..*)\.|.*/ - , y = /\..*/ - , w = /::\d+$/ - , A = {}; - let E = 1; - const T = { - mouseenter: "mouseover", - mouseleave: "mouseout" - } - , C = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]); - function O(t, e) { - return e && `${e}::${E++}` || t.uidEvent || E++ - } - function x(t) { - const e = O(t); - return t.uidEvent = e, - A[e] = A[e] || {}, - A[e] - } - function k(t, e, i=null) { - return Object.values(t).find((t=>t.callable === e && t.delegationSelector === i)) - } - function L(t, e, i) { - const n = "string" == typeof e - , s = n ? i : e || i; - let o = I(t); - return C.has(o) || (o = t), - [n, s, o] - } - function S(t, e, i, n, s) { - if ("string" != typeof e || !t) - return; - let[o,r,a] = L(e, i, n); - if (e in T) { - const t = t=>function(e) { - if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget && !e.delegateTarget.contains(e.relatedTarget)) - return t.call(this, e) - } - ; - r = t(r) - } - const l = x(t) - , c = l[a] || (l[a] = {}) - , h = k(c, r, o ? i : null); - if (h) - return void (h.oneOff = h.oneOff && s); - const d = O(r, e.replace(v, "")) - , u = o ? function(t, e, i) { - return function n(s) { - const o = t.querySelectorAll(e); - for (let {target: r} = s; r && r !== this; r = r.parentNode) - for (const a of o) - if (a === r) - return P(s, { - delegateTarget: r - }), - n.oneOff && N.off(t, s.type, e, i), - i.apply(r, [s]) - } - }(t, i, r) : function(t, e) { - return function i(n) { - return P(n, { - delegateTarget: t - }), - i.oneOff && N.off(t, n.type, e), - e.apply(t, [n]) - } - }(t, r); - u.delegationSelector = o ? i : null, - u.callable = r, - u.oneOff = s, - u.uidEvent = d, - c[d] = u, - t.addEventListener(a, u, o) - } - function D(t, e, i, n, s) { - const o = k(e[i], n, s); - o && (t.removeEventListener(i, o, Boolean(s)), - delete e[i][o.uidEvent]) - } - function $(t, e, i, n) { - const s = e[i] || {}; - for (const [o,r] of Object.entries(s)) - o.includes(n) && D(t, e, i, r.callable, r.delegationSelector) - } - function I(t) { - return t = t.replace(y, ""), - T[t] || t - } - const N = { - on(t, e, i, n) { - S(t, e, i, n, !1) - }, - one(t, e, i, n) { - S(t, e, i, n, !0) - }, - off(t, e, i, n) { - if ("string" != typeof e || !t) - return; - const [s,o,r] = L(e, i, n) - , a = r !== e - , l = x(t) - , c = l[r] || {} - , h = e.startsWith("."); - if (void 0 === o) { - if (h) - for (const i of Object.keys(l)) - $(t, l, i, e.slice(1)); - for (const [i,n] of Object.entries(c)) { - const s = i.replace(w, ""); - a && !e.includes(s) || D(t, l, r, n.callable, n.delegationSelector) - } - } else { - if (!Object.keys(c).length) - return; - D(t, l, r, o, s ? i : null) - } - }, - trigger(t, e, i) { - if ("string" != typeof e || !t) - return null; - const n = u(); - let s = null - , o = !0 - , r = !0 - , a = !1; - e !== I(e) && n && (s = n.Event(e, i), - n(t).trigger(s), - o = !s.isPropagationStopped(), - r = !s.isImmediatePropagationStopped(), - a = s.isDefaultPrevented()); - const l = P(new Event(e,{ - bubbles: o, - cancelable: !0 - }), i); - return a && l.preventDefault(), - r && t.dispatchEvent(l), - l.defaultPrevented && s && s.preventDefault(), - l - } - }; - function P(t, e={}) { - for (const [i,n] of Object.entries(e)) - try { - t[i] = n - } catch (e) { - Object.defineProperty(t, i, { - configurable: !0, - get: ()=>n - }) - } - return t - } - function M(t) { - if ("true" === t) - return !0; - if ("false" === t) - return !1; - if (t === Number(t).toString()) - return Number(t); - if ("" === t || "null" === t) - return null; - if ("string" != typeof t) - return t; - try { - return JSON.parse(decodeURIComponent(t)) - } catch (e) { - return t - } - } - function j(t) { - return t.replace(/[A-Z]/g, (t=>`-${t.toLowerCase()}`)) - } - const F = { - setDataAttribute(t, e, i) { - t.setAttribute(`data-bs-${j(e)}`, i) - }, - removeDataAttribute(t, e) { - t.removeAttribute(`data-bs-${j(e)}`) - }, - getDataAttributes(t) { - if (!t) - return {}; - const e = {} - , i = Object.keys(t.dataset).filter((t=>t.startsWith("bs") && !t.startsWith("bsConfig"))); - for (const n of i) { - let i = n.replace(/^bs/, ""); - i = i.charAt(0).toLowerCase() + i.slice(1, i.length), - e[i] = M(t.dataset[n]) - } - return e - }, - getDataAttribute: (t,e)=>M(t.getAttribute(`data-bs-${j(e)}`)) - }; - class H { - static get Default() { - return {} - } - static get DefaultType() { - return {} - } - static get NAME() { - throw new Error('You have to implement the static method "NAME", for each component!') - } - _getConfig(t) { - return t = this._mergeConfigObj(t), - t = this._configAfterMerge(t), - this._typeCheckConfig(t), - t - } - _configAfterMerge(t) { - return t - } - _mergeConfigObj(t, e) { - const i = o(e) ? F.getDataAttribute(e, "config") : {}; - return { - ...this.constructor.Default, - ..."object" == typeof i ? i : {}, - ...o(e) ? F.getDataAttributes(e) : {}, - ..."object" == typeof t ? t : {} - } - } - _typeCheckConfig(t, e=this.constructor.DefaultType) { - for (const [n,s] of Object.entries(e)) { - const e = t[n] - , r = o(e) ? "element" : null == (i = e) ? `${i}` : Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase(); - if (!new RegExp(s).test(r)) - throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`) - } - var i - } - } - class W extends H { - constructor(t, i) { - super(), - (t = r(t)) && (this._element = t, - this._config = this._getConfig(i), - e.set(this._element, this.constructor.DATA_KEY, this)) - } - dispose() { - e.remove(this._element, this.constructor.DATA_KEY), - N.off(this._element, this.constructor.EVENT_KEY); - for (const t of Object.getOwnPropertyNames(this)) - this[t] = null - } - _queueCallback(t, e, i=!0) { - _(t, e, i) - } - _getConfig(t) { - return t = this._mergeConfigObj(t, this._element), - t = this._configAfterMerge(t), - this._typeCheckConfig(t), - t - } - static getInstance(t) { - return e.get(r(t), this.DATA_KEY) - } - static getOrCreateInstance(t, e={}) { - return this.getInstance(t) || new this(t,"object" == typeof e ? e : null) - } - static get VERSION() { - return "5.3.2" - } - static get DATA_KEY() { - return `bs.${this.NAME}` - } - static get EVENT_KEY() { - return `.${this.DATA_KEY}` - } - static eventName(t) { - return `${t}${this.EVENT_KEY}` - } - } - const B = t=>{ - let e = t.getAttribute("data-bs-target"); - if (!e || "#" === e) { - let i = t.getAttribute("href"); - if (!i || !i.includes("#") && !i.startsWith(".")) - return null; - i.includes("#") && !i.startsWith("#") && (i = `#${i.split("#")[1]}`), - e = i && "#" !== i ? n(i.trim()) : null - } - return e - } - , z = { - find: (t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e, t)), - findOne: (t,e=document.documentElement)=>Element.prototype.querySelector.call(e, t), - children: (t,e)=>[].concat(...t.children).filter((t=>t.matches(e))), - parents(t, e) { - const i = []; - let n = t.parentNode.closest(e); - for (; n; ) - i.push(n), - n = n.parentNode.closest(e); - return i - }, - prev(t, e) { - let i = t.previousElementSibling; - for (; i; ) { - if (i.matches(e)) - return [i]; - i = i.previousElementSibling - } - return [] - }, - next(t, e) { - let i = t.nextElementSibling; - for (; i; ) { - if (i.matches(e)) - return [i]; - i = i.nextElementSibling - } - return [] - }, - focusableChildren(t) { - const e = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(","); - return this.find(e, t).filter((t=>!l(t) && a(t))) - }, - getSelectorFromElement(t) { - const e = B(t); - return e && z.findOne(e) ? e : null - }, - getElementFromSelector(t) { - const e = B(t); - return e ? z.findOne(e) : null - }, - getMultipleElementsFromSelector(t) { - const e = B(t); - return e ? z.find(e) : [] - } - } - , R = (t,e="hide")=>{ - const i = `click.dismiss ${t.EVENT_KEY}` - , n = t.NAME; - N.on(document, i, `[data-bs-dismiss="${n}"]`, (function(i) { - if (["A", "AREA"].includes(this.tagName) && i.preventDefault(), - l(this)) - return; - const s = z.getElementFromSelector(this) || this.closest(`.${n}`); - t.getOrCreateInstance(s)[e]() - } - )) - } - , q = ".bs.alert" - , V = `close ${q}` - , K = `closed ${q}`; - class Q extends W { - static get NAME() { - return "alert" - } - close() { - if (N.trigger(this._element, V).defaultPrevented) - return; - this._element.classList.remove("show"); - const t = this._element.classList.contains("fade"); - this._queueCallback((()=>this._destroyElement()), this._element, t) - } - _destroyElement() { - this._element.remove(), - N.trigger(this._element, K), - this.dispose() - } - static jQueryInterface(t) { - return this.each((function() { - const e = Q.getOrCreateInstance(this); - if ("string" == typeof t) { - if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) - throw new TypeError(`No method named "${t}"`); - e[t](this) - } - } - )) - } - } - R(Q, "close"), - m(Q); - const X = '[data-bs-toggle="button"]'; - class Y extends W { - static get NAME() { - return "button" - } - toggle() { - this._element.setAttribute("aria-pressed", this._element.classList.toggle("active")) - } - static jQueryInterface(t) { - return this.each((function() { - const e = Y.getOrCreateInstance(this); - "toggle" === t && e[t]() - } - )) - } - } - N.on(document, "click.bs.button.data-api", X, (t=>{ - t.preventDefault(); - const e = t.target.closest(X); - Y.getOrCreateInstance(e).toggle() - } - )), - m(Y); - const U = ".bs.swipe" - , G = `touchstart ${U}` - , J = `touchmove ${U}` - , Z = `touchend ${U}` - , tt = `pointerdown ${U}` - , et = `pointerup ${U}` - , it = { - endCallback: null, - leftCallback: null, - rightCallback: null - } - , nt = { - endCallback: "(function|null)", - leftCallback: "(function|null)", - rightCallback: "(function|null)" - }; - class st extends H { - constructor(t, e) { - super(), - this._element = t, - t && st.isSupported() && (this._config = this._getConfig(e), - this._deltaX = 0, - this._supportPointerEvents = Boolean(window.PointerEvent), - this._initEvents()) - } - static get Default() { - return it - } - static get DefaultType() { - return nt - } - static get NAME() { - return "swipe" - } - dispose() { - N.off(this._element, U) - } - _start(t) { - this._supportPointerEvents ? this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX) : this._deltaX = t.touches[0].clientX - } - _end(t) { - this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX - this._deltaX), - this._handleSwipe(), - g(this._config.endCallback) - } - _move(t) { - this._deltaX = t.touches && t.touches.length > 1 ? 0 : t.touches[0].clientX - this._deltaX - } - _handleSwipe() { - const t = Math.abs(this._deltaX); - if (t <= 40) - return; - const e = t / this._deltaX; - this._deltaX = 0, - e && g(e > 0 ? this._config.rightCallback : this._config.leftCallback) - } - _initEvents() { - this._supportPointerEvents ? (N.on(this._element, tt, (t=>this._start(t))), - N.on(this._element, et, (t=>this._end(t))), - this._element.classList.add("pointer-event")) : (N.on(this._element, G, (t=>this._start(t))), - N.on(this._element, J, (t=>this._move(t))), - N.on(this._element, Z, (t=>this._end(t)))) - } - _eventIsPointerPenTouch(t) { - return this._supportPointerEvents && ("pen" === t.pointerType || "touch" === t.pointerType) - } - static isSupported() { - return "ontouchstart"in document.documentElement || navigator.maxTouchPoints > 0 - } - } - const ot = ".bs.carousel" - , rt = ".data-api" - , at = "next" - , lt = "prev" - , ct = "left" - , ht = "right" - , dt = `slide ${ot}` - , ut = `slid ${ot}` - , ft = `keydown ${ot}` - , pt = `mouseenter ${ot}` - , mt = `mouseleave ${ot}` - , gt = `dragstart ${ot}` - , _t = `load ${ot}${rt}` - , bt = `click ${ot}${rt}` - , vt = "carousel" - , yt = "active" - , wt = ".active" - , At = ".carousel-item" - , Et = wt + At - , Tt = { - ArrowLeft: ht, - ArrowRight: ct - } - , Ct = { - interval: 5e3, - keyboard: !0, - pause: "hover", - ride: !1, - touch: !0, - wrap: !0 - } - , Ot = { - interval: "(number|boolean)", - keyboard: "boolean", - pause: "(string|boolean)", - ride: "(boolean|string)", - touch: "boolean", - wrap: "boolean" - }; - class xt extends W { - constructor(t, e) { - super(t, e), - this._interval = null, - this._activeElement = null, - this._isSliding = !1, - this.touchTimeout = null, - this._swipeHelper = null, - this._indicatorsElement = z.findOne(".carousel-indicators", this._element), - this._addEventListeners(), - this._config.ride === vt && this.cycle() - } - static get Default() { - return Ct - } - static get DefaultType() { - return Ot - } - static get NAME() { - return "carousel" - } - next() { - this._slide(at) - } - nextWhenVisible() { - !document.hidden && a(this._element) && this.next() - } - prev() { - this._slide(lt) - } - pause() { - this._isSliding && s(this._element), - this._clearInterval() - } - cycle() { - this._clearInterval(), - this._updateInterval(), - this._interval = setInterval((()=>this.nextWhenVisible()), this._config.interval) - } - _maybeEnableCycle() { - this._config.ride && (this._isSliding ? N.one(this._element, ut, (()=>this.cycle())) : this.cycle()) - } - to(t) { - const e = this._getItems(); - if (t > e.length - 1 || t < 0) - return; - if (this._isSliding) - return void N.one(this._element, ut, (()=>this.to(t))); - const i = this._getItemIndex(this._getActive()); - if (i === t) - return; - const n = t > i ? at : lt; - this._slide(n, e[t]) - } - dispose() { - this._swipeHelper && this._swipeHelper.dispose(), - super.dispose() - } - _configAfterMerge(t) { - return t.defaultInterval = t.interval, - t - } - _addEventListeners() { - this._config.keyboard && N.on(this._element, ft, (t=>this._keydown(t))), - "hover" === this._config.pause && (N.on(this._element, pt, (()=>this.pause())), - N.on(this._element, mt, (()=>this._maybeEnableCycle()))), - this._config.touch && st.isSupported() && this._addTouchEventListeners() - } - _addTouchEventListeners() { - for (const t of z.find(".carousel-item img", this._element)) - N.on(t, gt, (t=>t.preventDefault())); - const t = { - leftCallback: ()=>this._slide(this._directionToOrder(ct)), - rightCallback: ()=>this._slide(this._directionToOrder(ht)), - endCallback: ()=>{ - "hover" === this._config.pause && (this.pause(), - this.touchTimeout && clearTimeout(this.touchTimeout), - this.touchTimeout = setTimeout((()=>this._maybeEnableCycle()), 500 + this._config.interval)) - } - }; - this._swipeHelper = new st(this._element,t) - } - _keydown(t) { - if (/input|textarea/i.test(t.target.tagName)) - return; - const e = Tt[t.key]; - e && (t.preventDefault(), - this._slide(this._directionToOrder(e))) - } - _getItemIndex(t) { - return this._getItems().indexOf(t) - } - _setActiveIndicatorElement(t) { - if (!this._indicatorsElement) - return; - const e = z.findOne(wt, this._indicatorsElement); - e.classList.remove(yt), - e.removeAttribute("aria-current"); - const i = z.findOne(`[data-bs-slide-to="${t}"]`, this._indicatorsElement); - i && (i.classList.add(yt), - i.setAttribute("aria-current", "true")) - } - _updateInterval() { - const t = this._activeElement || this._getActive(); - if (!t) - return; - const e = Number.parseInt(t.getAttribute("data-bs-interval"), 10); - this._config.interval = e || this._config.defaultInterval - } - _slide(t, e=null) { - if (this._isSliding) - return; - const i = this._getActive() - , n = t === at - , s = e || b(this._getItems(), i, n, this._config.wrap); - if (s === i) - return; - const o = this._getItemIndex(s) - , r = e=>N.trigger(this._element, e, { - relatedTarget: s, - direction: this._orderToDirection(t), - from: this._getItemIndex(i), - to: o - }); - if (r(dt).defaultPrevented) - return; - if (!i || !s) - return; - const a = Boolean(this._interval); - this.pause(), - this._isSliding = !0, - this._setActiveIndicatorElement(o), - this._activeElement = s; - const l = n ? "carousel-item-start" : "carousel-item-end" - , c = n ? "carousel-item-next" : "carousel-item-prev"; - s.classList.add(c), - d(s), - i.classList.add(l), - s.classList.add(l), - this._queueCallback((()=>{ - s.classList.remove(l, c), - s.classList.add(yt), - i.classList.remove(yt, c, l), - this._isSliding = !1, - r(ut) - } - ), i, this._isAnimated()), - a && this.cycle() - } - _isAnimated() { - return this._element.classList.contains("slide") - } - _getActive() { - return z.findOne(Et, this._element) - } - _getItems() { - return z.find(At, this._element) - } - _clearInterval() { - this._interval && (clearInterval(this._interval), - this._interval = null) - } - _directionToOrder(t) { - return p() ? t === ct ? lt : at : t === ct ? at : lt - } - _orderToDirection(t) { - return p() ? t === lt ? ct : ht : t === lt ? ht : ct - } - static jQueryInterface(t) { - return this.each((function() { - const e = xt.getOrCreateInstance(this, t); - if ("number" != typeof t) { - if ("string" == typeof t) { - if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) - throw new TypeError(`No method named "${t}"`); - e[t]() - } - } else - e.to(t) - } - )) - } - } - N.on(document, bt, "[data-bs-slide], [data-bs-slide-to]", (function(t) { - const e = z.getElementFromSelector(this); - if (!e || !e.classList.contains(vt)) - return; - t.preventDefault(); - const i = xt.getOrCreateInstance(e) - , n = this.getAttribute("data-bs-slide-to"); - return n ? (i.to(n), - void i._maybeEnableCycle()) : "next" === F.getDataAttribute(this, "slide") ? (i.next(), - void i._maybeEnableCycle()) : (i.prev(), - void i._maybeEnableCycle()) - } - )), - N.on(window, _t, (()=>{ - const t = z.find('[data-bs-ride="carousel"]'); - for (const e of t) - xt.getOrCreateInstance(e) - } - )), - m(xt); - const kt = ".bs.collapse" - , Lt = `show ${kt}` - , St = `shown ${kt}` - , Dt = `hide ${kt}` - , $t = `hidden ${kt}` - , It = `click ${kt}.data-api` - , Nt = "show" - , Pt = "collapse" - , Mt = "collapsing" - , jt = `:scope .${Pt} .${Pt}` - , Ft = '[data-bs-toggle="collapse"]' - , Ht = { - parent: null, - toggle: !0 - } - , Wt = { - parent: "(null|element)", - toggle: "boolean" - }; - class Bt extends W { - constructor(t, e) { - super(t, e), - this._isTransitioning = !1, - this._triggerArray = []; - const i = z.find(Ft); - for (const t of i) { - const e = z.getSelectorFromElement(t) - , i = z.find(e).filter((t=>t === this._element)); - null !== e && i.length && this._triggerArray.push(t) - } - this._initializeChildren(), - this._config.parent || this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), - this._config.toggle && this.toggle() - } - static get Default() { - return Ht - } - static get DefaultType() { - return Wt - } - static get NAME() { - return "collapse" - } - toggle() { - this._isShown() ? this.hide() : this.show() - } - show() { - if (this._isTransitioning || this._isShown()) - return; - let t = []; - if (this._config.parent && (t = this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t !== this._element)).map((t=>Bt.getOrCreateInstance(t, { - toggle: !1 - })))), - t.length && t[0]._isTransitioning) - return; - if (N.trigger(this._element, Lt).defaultPrevented) - return; - for (const e of t) - e.hide(); - const e = this._getDimension(); - this._element.classList.remove(Pt), - this._element.classList.add(Mt), - this._element.style[e] = 0, - this._addAriaAndCollapsedClass(this._triggerArray, !0), - this._isTransitioning = !0; - const i = `scroll ${e[0].toUpperCase() + e.slice(1)}`; - this._queueCallback((()=>{ - this._isTransitioning = !1, - this._element.classList.remove(Mt), - this._element.classList.add(Pt, Nt), - this._element.style[e] = "", - N.trigger(this._element, St) - } - ), this._element, !0), - this._element.style[e] = `${this._element[i]}px` - } - hide() { - if (this._isTransitioning || !this._isShown()) - return; - if (N.trigger(this._element, Dt).defaultPrevented) - return; - const t = this._getDimension(); - this._element.style[t] = `${this._element.getBoundingClientRect()[t]}px`, - d(this._element), - this._element.classList.add(Mt), - this._element.classList.remove(Pt, Nt); - for (const t of this._triggerArray) { - const e = z.getElementFromSelector(t); - e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1) - } - this._isTransitioning = !0, - this._element.style[t] = "", - this._queueCallback((()=>{ - this._isTransitioning = !1, - this._element.classList.remove(Mt), - this._element.classList.add(Pt), - N.trigger(this._element, $t) - } - ), this._element, !0) - } - _isShown(t=this._element) { - return t.classList.contains(Nt) - } - _configAfterMerge(t) { - return t.toggle = Boolean(t.toggle), - t.parent = r(t.parent), - t - } - _getDimension() { - return this._element.classList.contains("collapse-horizontal") ? "width" : "height" - } - _initializeChildren() { - if (!this._config.parent) - return; - const t = this._getFirstLevelChildren(Ft); - for (const e of t) { - const t = z.getElementFromSelector(e); - t && this._addAriaAndCollapsedClass([e], this._isShown(t)) - } - } - _getFirstLevelChildren(t) { - const e = z.find(jt, this._config.parent); - return z.find(t, this._config.parent).filter((t=>!e.includes(t))) - } - _addAriaAndCollapsedClass(t, e) { - if (t.length) - for (const i of t) - i.classList.toggle("collapsed", !e), - i.setAttribute("aria-expanded", e) - } - static jQueryInterface(t) { - const e = {}; - return "string" == typeof t && /show|hide/.test(t) && (e.toggle = !1), - this.each((function() { - const i = Bt.getOrCreateInstance(this, e); - if ("string" == typeof t) { - if (void 0 === i[t]) - throw new TypeError(`No method named "${t}"`); - i[t]() - } - } - )) - } - } - N.on(document, It, Ft, (function(t) { - ("A" === t.target.tagName || t.delegateTarget && "A" === t.delegateTarget.tagName) && t.preventDefault(); - for (const t of z.getMultipleElementsFromSelector(this)) - Bt.getOrCreateInstance(t, { - toggle: !1 - }).toggle() - } - )), - m(Bt); - var zt = "top" - , Rt = "bottom" - , qt = "right" - , Vt = "left" - , Kt = "auto" - , Qt = [zt, Rt, qt, Vt] - , Xt = "start" - , Yt = "end" - , Ut = "clippingParents" - , Gt = "viewport" - , Jt = "popper" - , Zt = "reference" - , te = Qt.reduce((function(t, e) { - return t.concat([e + "-" + Xt, e + "-" + Yt]) - } - ), []) - , ee = [].concat(Qt, [Kt]).reduce((function(t, e) { - return t.concat([e, e + "-" + Xt, e + "-" + Yt]) - } - ), []) - , ie = "beforeRead" - , ne = "read" - , se = "afterRead" - , oe = "beforeMain" - , re = "main" - , ae = "afterMain" - , le = "beforeWrite" - , ce = "write" - , he = "afterWrite" - , de = [ie, ne, se, oe, re, ae, le, ce, he]; - function ue(t) { - return t ? (t.nodeName || "").toLowerCase() : null - } - function fe(t) { - if (null == t) - return window; - if ("[object Window]" !== t.toString()) { - var e = t.ownerDocument; - return e && e.defaultView || window - } - return t - } - function pe(t) { - return t instanceof fe(t).Element || t instanceof Element - } - function me(t) { - return t instanceof fe(t).HTMLElement || t instanceof HTMLElement - } - function ge(t) { - return "undefined" != typeof ShadowRoot && (t instanceof fe(t).ShadowRoot || t instanceof ShadowRoot) - } - const _e = { - name: "applyStyles", - enabled: !0, - phase: "write", - fn: function(t) { - var e = t.state; - Object.keys(e.elements).forEach((function(t) { - var i = e.styles[t] || {} - , n = e.attributes[t] || {} - , s = e.elements[t]; - me(s) && ue(s) && (Object.assign(s.style, i), - Object.keys(n).forEach((function(t) { - var e = n[t]; - !1 === e ? s.removeAttribute(t) : s.setAttribute(t, !0 === e ? "" : e) - } - ))) - } - )) - }, - effect: function(t) { - var e = t.state - , i = { - popper: { - position: e.options.strategy, - left: "0", - top: "0", - margin: "0" - }, - arrow: { - position: "absolute" - }, - reference: {} - }; - return Object.assign(e.elements.popper.style, i.popper), - e.styles = i, - e.elements.arrow && Object.assign(e.elements.arrow.style, i.arrow), - function() { - Object.keys(e.elements).forEach((function(t) { - var n = e.elements[t] - , s = e.attributes[t] || {} - , o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce((function(t, e) { - return t[e] = "", - t - } - ), {}); - me(n) && ue(n) && (Object.assign(n.style, o), - Object.keys(s).forEach((function(t) { - n.removeAttribute(t) - } - ))) - } - )) - } - }, - requires: ["computeStyles"] - }; - function be(t) { - return t.split("-")[0] - } - var ve = Math.max - , ye = Math.min - , we = Math.round; - function Ae() { - var t = navigator.userAgentData; - return null != t && t.brands && Array.isArray(t.brands) ? t.brands.map((function(t) { - return t.brand + "/" + t.version - } - )).join(" ") : navigator.userAgent - } - function Ee() { - return !/^((?!chrome|android).)*safari/i.test(Ae()) - } - function Te(t, e, i) { - void 0 === e && (e = !1), - void 0 === i && (i = !1); - var n = t.getBoundingClientRect() - , s = 1 - , o = 1; - e && me(t) && (s = t.offsetWidth > 0 && we(n.width) / t.offsetWidth || 1, - o = t.offsetHeight > 0 && we(n.height) / t.offsetHeight || 1); - var r = (pe(t) ? fe(t) : window).visualViewport - , a = !Ee() && i - , l = (n.left + (a && r ? r.offsetLeft : 0)) / s - , c = (n.top + (a && r ? r.offsetTop : 0)) / o - , h = n.width / s - , d = n.height / o; - return { - width: h, - height: d, - top: c, - right: l + h, - bottom: c + d, - left: l, - x: l, - y: c - } - } - function Ce(t) { - var e = Te(t) - , i = t.offsetWidth - , n = t.offsetHeight; - return Math.abs(e.width - i) <= 1 && (i = e.width), - Math.abs(e.height - n) <= 1 && (n = e.height), - { - x: t.offsetLeft, - y: t.offsetTop, - width: i, - height: n - } - } - function Oe(t, e) { - var i = e.getRootNode && e.getRootNode(); - if (t.contains(e)) - return !0; - if (i && ge(i)) { - var n = e; - do { - if (n && t.isSameNode(n)) - return !0; - n = n.parentNode || n.host - } while (n) - } - return !1 - } - function xe(t) { - return fe(t).getComputedStyle(t) - } - function ke(t) { - return ["table", "td", "th"].indexOf(ue(t)) >= 0 - } - function Le(t) { - return ((pe(t) ? t.ownerDocument : t.document) || window.document).documentElement - } - function Se(t) { - return "html" === ue(t) ? t : t.assignedSlot || t.parentNode || (ge(t) ? t.host : null) || Le(t) - } - function De(t) { - return me(t) && "fixed" !== xe(t).position ? t.offsetParent : null - } - function $e(t) { - for (var e = fe(t), i = De(t); i && ke(i) && "static" === xe(i).position; ) - i = De(i); - return i && ("html" === ue(i) || "body" === ue(i) && "static" === xe(i).position) ? e : i || function(t) { - var e = /firefox/i.test(Ae()); - if (/Trident/i.test(Ae()) && me(t) && "fixed" === xe(t).position) - return null; - var i = Se(t); - for (ge(i) && (i = i.host); me(i) && ["html", "body"].indexOf(ue(i)) < 0; ) { - var n = xe(i); - if ("none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || -1 !== ["transform", "perspective"].indexOf(n.willChange) || e && "filter" === n.willChange || e && n.filter && "none" !== n.filter) - return i; - i = i.parentNode - } - return null - }(t) || e - } - function Ie(t) { - return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y" - } - function Ne(t, e, i) { - return ve(t, ye(e, i)) - } - function Pe(t) { - return Object.assign({}, { - top: 0, - right: 0, - bottom: 0, - left: 0 - }, t) - } - function Me(t, e) { - return e.reduce((function(e, i) { - return e[i] = t, - e - } - ), {}) - } - const je = { - name: "arrow", - enabled: !0, - phase: "main", - fn: function(t) { - var e, i = t.state, n = t.name, s = t.options, o = i.elements.arrow, r = i.modifiersData.popperOffsets, a = be(i.placement), l = Ie(a), c = [Vt, qt].indexOf(a) >= 0 ? "height" : "width"; - if (o && r) { - var h = function(t, e) { - return Pe("number" != typeof (t = "function" == typeof t ? t(Object.assign({}, e.rects, { - placement: e.placement - })) : t) ? t : Me(t, Qt)) - }(s.padding, i) - , d = Ce(o) - , u = "y" === l ? zt : Vt - , f = "y" === l ? Rt : qt - , p = i.rects.reference[c] + i.rects.reference[l] - r[l] - i.rects.popper[c] - , m = r[l] - i.rects.reference[l] - , g = $e(o) - , _ = g ? "y" === l ? g.clientHeight || 0 : g.clientWidth || 0 : 0 - , b = p / 2 - m / 2 - , v = h[u] - , y = _ - d[c] - h[f] - , w = _ / 2 - d[c] / 2 + b - , A = Ne(v, w, y) - , E = l; - i.modifiersData[n] = ((e = {})[E] = A, - e.centerOffset = A - w, - e) - } - }, - effect: function(t) { - var e = t.state - , i = t.options.element - , n = void 0 === i ? "[data-popper-arrow]" : i; - null != n && ("string" != typeof n || (n = e.elements.popper.querySelector(n))) && Oe(e.elements.popper, n) && (e.elements.arrow = n) - }, - requires: ["popperOffsets"], - requiresIfExists: ["preventOverflow"] - }; - function Fe(t) { - return t.split("-")[1] - } - var He = { - top: "auto", - right: "auto", - bottom: "auto", - left: "auto" - }; - function We(t) { - var e, i = t.popper, n = t.popperRect, s = t.placement, o = t.variation, r = t.offsets, a = t.position, l = t.gpuAcceleration, c = t.adaptive, h = t.roundOffsets, d = t.isFixed, u = r.x, f = void 0 === u ? 0 : u, p = r.y, m = void 0 === p ? 0 : p, g = "function" == typeof h ? h({ - x: f, - y: m - }) : { - x: f, - y: m - }; - f = g.x, - m = g.y; - var _ = r.hasOwnProperty("x") - , b = r.hasOwnProperty("y") - , v = Vt - , y = zt - , w = window; - if (c) { - var A = $e(i) - , E = "clientHeight" - , T = "clientWidth"; - A === fe(i) && "static" !== xe(A = Le(i)).position && "absolute" === a && (E = "scrollHeight", - T = "scrollWidth"), - (s === zt || (s === Vt || s === qt) && o === Yt) && (y = Rt, - m -= (d && A === w && w.visualViewport ? w.visualViewport.height : A[E]) - n.height, - m *= l ? 1 : -1), - s !== Vt && (s !== zt && s !== Rt || o !== Yt) || (v = qt, - f -= (d && A === w && w.visualViewport ? w.visualViewport.width : A[T]) - n.width, - f *= l ? 1 : -1) - } - var C, O = Object.assign({ - position: a - }, c && He), x = !0 === h ? function(t, e) { - var i = t.x - , n = t.y - , s = e.devicePixelRatio || 1; - return { - x: we(i * s) / s || 0, - y: we(n * s) / s || 0 - } - }({ - x: f, - y: m - }, fe(i)) : { - x: f, - y: m - }; - return f = x.x, - m = x.y, - l ? Object.assign({}, O, ((C = {})[y] = b ? "0" : "", - C[v] = _ ? "0" : "", - C.transform = (w.devicePixelRatio || 1) <= 1 ? "translate(" + f + "px, " + m + "px)" : "translate3d(" + f + "px, " + m + "px, 0)", - C)) : Object.assign({}, O, ((e = {})[y] = b ? m + "px" : "", - e[v] = _ ? f + "px" : "", - e.transform = "", - e)) - } - const Be = { - name: "computeStyles", - enabled: !0, - phase: "beforeWrite", - fn: function(t) { - var e = t.state - , i = t.options - , n = i.gpuAcceleration - , s = void 0 === n || n - , o = i.adaptive - , r = void 0 === o || o - , a = i.roundOffsets - , l = void 0 === a || a - , c = { - placement: be(e.placement), - variation: Fe(e.placement), - popper: e.elements.popper, - popperRect: e.rects.popper, - gpuAcceleration: s, - isFixed: "fixed" === e.options.strategy - }; - null != e.modifiersData.popperOffsets && (e.styles.popper = Object.assign({}, e.styles.popper, We(Object.assign({}, c, { - offsets: e.modifiersData.popperOffsets, - position: e.options.strategy, - adaptive: r, - roundOffsets: l - })))), - null != e.modifiersData.arrow && (e.styles.arrow = Object.assign({}, e.styles.arrow, We(Object.assign({}, c, { - offsets: e.modifiersData.arrow, - position: "absolute", - adaptive: !1, - roundOffsets: l - })))), - e.attributes.popper = Object.assign({}, e.attributes.popper, { - "data-popper-placement": e.placement - }) - }, - data: {} - }; - var ze = { - passive: !0 - }; - const Re = { - name: "eventListeners", - enabled: !0, - phase: "write", - fn: function() {}, - effect: function(t) { - var e = t.state - , i = t.instance - , n = t.options - , s = n.scroll - , o = void 0 === s || s - , r = n.resize - , a = void 0 === r || r - , l = fe(e.elements.popper) - , c = [].concat(e.scrollParents.reference, e.scrollParents.popper); - return o && c.forEach((function(t) { - t.addEventListener("scroll", i.update, ze) - } - )), - a && l.addEventListener("resize", i.update, ze), - function() { - o && c.forEach((function(t) { - t.removeEventListener("scroll", i.update, ze) - } - )), - a && l.removeEventListener("resize", i.update, ze) - } - }, - data: {} - }; - var qe = { - left: "right", - right: "left", - bottom: "top", - top: "bottom" - }; - function Ve(t) { - return t.replace(/left|right|bottom|top/g, (function(t) { - return qe[t] - } - )) - } - var Ke = { - start: "end", - end: "start" - }; - function Qe(t) { - return t.replace(/start|end/g, (function(t) { - return Ke[t] - } - )) - } - function Xe(t) { - var e = fe(t); - return { - scrollLeft: e.pageXOffset, - scrollTop: e.pageYOffset - } - } - function Ye(t) { - return Te(Le(t)).left + Xe(t).scrollLeft - } - function Ue(t) { - var e = xe(t) - , i = e.overflow - , n = e.overflowX - , s = e.overflowY; - return /auto|scroll|overlay|hidden/.test(i + s + n) - } - function Ge(t) { - return ["html", "body", "#document"].indexOf(ue(t)) >= 0 ? t.ownerDocument.body : me(t) && Ue(t) ? t : Ge(Se(t)) - } - function Je(t, e) { - var i; - void 0 === e && (e = []); - var n = Ge(t) - , s = n === (null == (i = t.ownerDocument) ? void 0 : i.body) - , o = fe(n) - , r = s ? [o].concat(o.visualViewport || [], Ue(n) ? n : []) : n - , a = e.concat(r); - return s ? a : a.concat(Je(Se(r))) - } - function Ze(t) { - return Object.assign({}, t, { - left: t.x, - top: t.y, - right: t.x + t.width, - bottom: t.y + t.height - }) - } - function ti(t, e, i) { - return e === Gt ? Ze(function(t, e) { - var i = fe(t) - , n = Le(t) - , s = i.visualViewport - , o = n.clientWidth - , r = n.clientHeight - , a = 0 - , l = 0; - if (s) { - o = s.width, - r = s.height; - var c = Ee(); - (c || !c && "fixed" === e) && (a = s.offsetLeft, - l = s.offsetTop) - } - return { - width: o, - height: r, - x: a + Ye(t), - y: l - } - }(t, i)) : pe(e) ? function(t, e) { - var i = Te(t, !1, "fixed" === e); - return i.top = i.top + t.clientTop, - i.left = i.left + t.clientLeft, - i.bottom = i.top + t.clientHeight, - i.right = i.left + t.clientWidth, - i.width = t.clientWidth, - i.height = t.clientHeight, - i.x = i.left, - i.y = i.top, - i - }(e, i) : Ze(function(t) { - var e, i = Le(t), n = Xe(t), s = null == (e = t.ownerDocument) ? void 0 : e.body, o = ve(i.scrollWidth, i.clientWidth, s ? s.scrollWidth : 0, s ? s.clientWidth : 0), r = ve(i.scrollHeight, i.clientHeight, s ? s.scrollHeight : 0, s ? s.clientHeight : 0), a = -n.scrollLeft + Ye(t), l = -n.scrollTop; - return "rtl" === xe(s || i).direction && (a += ve(i.clientWidth, s ? s.clientWidth : 0) - o), - { - width: o, - height: r, - x: a, - y: l - } - }(Le(t))) - } - function ei(t) { - var e, i = t.reference, n = t.element, s = t.placement, o = s ? be(s) : null, r = s ? Fe(s) : null, a = i.x + i.width / 2 - n.width / 2, l = i.y + i.height / 2 - n.height / 2; - switch (o) { - case zt: - e = { - x: a, - y: i.y - n.height - }; - break; - case Rt: - e = { - x: a, - y: i.y + i.height - }; - break; - case qt: - e = { - x: i.x + i.width, - y: l - }; - break; - case Vt: - e = { - x: i.x - n.width, - y: l - }; - break; - default: - e = { - x: i.x, - y: i.y - } - } - var c = o ? Ie(o) : null; - if (null != c) { - var h = "y" === c ? "height" : "width"; - switch (r) { - case Xt: - e[c] = e[c] - (i[h] / 2 - n[h] / 2); - break; - case Yt: - e[c] = e[c] + (i[h] / 2 - n[h] / 2) - } - } - return e - } - function ii(t, e) { - void 0 === e && (e = {}); - var i = e - , n = i.placement - , s = void 0 === n ? t.placement : n - , o = i.strategy - , r = void 0 === o ? t.strategy : o - , a = i.boundary - , l = void 0 === a ? Ut : a - , c = i.rootBoundary - , h = void 0 === c ? Gt : c - , d = i.elementContext - , u = void 0 === d ? Jt : d - , f = i.altBoundary - , p = void 0 !== f && f - , m = i.padding - , g = void 0 === m ? 0 : m - , _ = Pe("number" != typeof g ? g : Me(g, Qt)) - , b = u === Jt ? Zt : Jt - , v = t.rects.popper - , y = t.elements[p ? b : u] - , w = function(t, e, i, n) { - var s = "clippingParents" === e ? function(t) { - var e = Je(Se(t)) - , i = ["absolute", "fixed"].indexOf(xe(t).position) >= 0 && me(t) ? $e(t) : t; - return pe(i) ? e.filter((function(t) { - return pe(t) && Oe(t, i) && "body" !== ue(t) - } - )) : [] - }(t) : [].concat(e) - , o = [].concat(s, [i]) - , r = o[0] - , a = o.reduce((function(e, i) { - var s = ti(t, i, n); - return e.top = ve(s.top, e.top), - e.right = ye(s.right, e.right), - e.bottom = ye(s.bottom, e.bottom), - e.left = ve(s.left, e.left), - e - } - ), ti(t, r, n)); - return a.width = a.right - a.left, - a.height = a.bottom - a.top, - a.x = a.left, - a.y = a.top, - a - }(pe(y) ? y : y.contextElement || Le(t.elements.popper), l, h, r) - , A = Te(t.elements.reference) - , E = ei({ - reference: A, - element: v, - strategy: "absolute", - placement: s - }) - , T = Ze(Object.assign({}, v, E)) - , C = u === Jt ? T : A - , O = { - top: w.top - C.top + _.top, - bottom: C.bottom - w.bottom + _.bottom, - left: w.left - C.left + _.left, - right: C.right - w.right + _.right - } - , x = t.modifiersData.offset; - if (u === Jt && x) { - var k = x[s]; - Object.keys(O).forEach((function(t) { - var e = [qt, Rt].indexOf(t) >= 0 ? 1 : -1 - , i = [zt, Rt].indexOf(t) >= 0 ? "y" : "x"; - O[t] += k[i] * e - } - )) - } - return O - } - function ni(t, e) { - void 0 === e && (e = {}); - var i = e - , n = i.placement - , s = i.boundary - , o = i.rootBoundary - , r = i.padding - , a = i.flipVariations - , l = i.allowedAutoPlacements - , c = void 0 === l ? ee : l - , h = Fe(n) - , d = h ? a ? te : te.filter((function(t) { - return Fe(t) === h - } - )) : Qt - , u = d.filter((function(t) { - return c.indexOf(t) >= 0 - } - )); - 0 === u.length && (u = d); - var f = u.reduce((function(e, i) { - return e[i] = ii(t, { - placement: i, - boundary: s, - rootBoundary: o, - padding: r - })[be(i)], - e - } - ), {}); - return Object.keys(f).sort((function(t, e) { - return f[t] - f[e] - } - )) - } - const si = { - name: "flip", - enabled: !0, - phase: "main", - fn: function(t) { - var e = t.state - , i = t.options - , n = t.name; - if (!e.modifiersData[n]._skip) { - for (var s = i.mainAxis, o = void 0 === s || s, r = i.altAxis, a = void 0 === r || r, l = i.fallbackPlacements, c = i.padding, h = i.boundary, d = i.rootBoundary, u = i.altBoundary, f = i.flipVariations, p = void 0 === f || f, m = i.allowedAutoPlacements, g = e.options.placement, _ = be(g), b = l || (_ !== g && p ? function(t) { - if (be(t) === Kt) - return []; - var e = Ve(t); - return [Qe(t), e, Qe(e)] - }(g) : [Ve(g)]), v = [g].concat(b).reduce((function(t, i) { - return t.concat(be(i) === Kt ? ni(e, { - placement: i, - boundary: h, - rootBoundary: d, - padding: c, - flipVariations: p, - allowedAutoPlacements: m - }) : i) - } - ), []), y = e.rects.reference, w = e.rects.popper, A = new Map, E = !0, T = v[0], C = 0; C < v.length; C++) { - var O = v[C] - , x = be(O) - , k = Fe(O) === Xt - , L = [zt, Rt].indexOf(x) >= 0 - , S = L ? "width" : "height" - , D = ii(e, { - placement: O, - boundary: h, - rootBoundary: d, - altBoundary: u, - padding: c - }) - , $ = L ? k ? qt : Vt : k ? Rt : zt; - y[S] > w[S] && ($ = Ve($)); - var I = Ve($) - , N = []; - if (o && N.push(D[x] <= 0), - a && N.push(D[$] <= 0, D[I] <= 0), - N.every((function(t) { - return t - } - ))) { - T = O, - E = !1; - break - } - A.set(O, N) - } - if (E) - for (var P = function(t) { - var e = v.find((function(e) { - var i = A.get(e); - if (i) - return i.slice(0, t).every((function(t) { - return t - } - )) - } - )); - if (e) - return T = e, - "break" - }, M = p ? 3 : 1; M > 0 && "break" !== P(M); M--) - ; - e.placement !== T && (e.modifiersData[n]._skip = !0, - e.placement = T, - e.reset = !0) - } - }, - requiresIfExists: ["offset"], - data: { - _skip: !1 - } - }; - function oi(t, e, i) { - return void 0 === i && (i = { - x: 0, - y: 0 - }), - { - top: t.top - e.height - i.y, - right: t.right - e.width + i.x, - bottom: t.bottom - e.height + i.y, - left: t.left - e.width - i.x - } - } - function ri(t) { - return [zt, qt, Rt, Vt].some((function(e) { - return t[e] >= 0 - } - )) - } - const ai = { - name: "hide", - enabled: !0, - phase: "main", - requiresIfExists: ["preventOverflow"], - fn: function(t) { - var e = t.state - , i = t.name - , n = e.rects.reference - , s = e.rects.popper - , o = e.modifiersData.preventOverflow - , r = ii(e, { - elementContext: "reference" - }) - , a = ii(e, { - altBoundary: !0 - }) - , l = oi(r, n) - , c = oi(a, s, o) - , h = ri(l) - , d = ri(c); - e.modifiersData[i] = { - referenceClippingOffsets: l, - popperEscapeOffsets: c, - isReferenceHidden: h, - hasPopperEscaped: d - }, - e.attributes.popper = Object.assign({}, e.attributes.popper, { - "data-popper-reference-hidden": h, - "data-popper-escaped": d - }) - } - } - , li = { - name: "offset", - enabled: !0, - phase: "main", - requires: ["popperOffsets"], - fn: function(t) { - var e = t.state - , i = t.options - , n = t.name - , s = i.offset - , o = void 0 === s ? [0, 0] : s - , r = ee.reduce((function(t, i) { - return t[i] = function(t, e, i) { - var n = be(t) - , s = [Vt, zt].indexOf(n) >= 0 ? -1 : 1 - , o = "function" == typeof i ? i(Object.assign({}, e, { - placement: t - })) : i - , r = o[0] - , a = o[1]; - return r = r || 0, - a = (a || 0) * s, - [Vt, qt].indexOf(n) >= 0 ? { - x: a, - y: r - } : { - x: r, - y: a - } - }(i, e.rects, o), - t - } - ), {}) - , a = r[e.placement] - , l = a.x - , c = a.y; - null != e.modifiersData.popperOffsets && (e.modifiersData.popperOffsets.x += l, - e.modifiersData.popperOffsets.y += c), - e.modifiersData[n] = r - } - } - , ci = { - name: "popperOffsets", - enabled: !0, - phase: "read", - fn: function(t) { - var e = t.state - , i = t.name; - e.modifiersData[i] = ei({ - reference: e.rects.reference, - element: e.rects.popper, - strategy: "absolute", - placement: e.placement - }) - }, - data: {} - } - , hi = { - name: "preventOverflow", - enabled: !0, - phase: "main", - fn: function(t) { - var e = t.state - , i = t.options - , n = t.name - , s = i.mainAxis - , o = void 0 === s || s - , r = i.altAxis - , a = void 0 !== r && r - , l = i.boundary - , c = i.rootBoundary - , h = i.altBoundary - , d = i.padding - , u = i.tether - , f = void 0 === u || u - , p = i.tetherOffset - , m = void 0 === p ? 0 : p - , g = ii(e, { - boundary: l, - rootBoundary: c, - padding: d, - altBoundary: h - }) - , _ = be(e.placement) - , b = Fe(e.placement) - , v = !b - , y = Ie(_) - , w = "x" === y ? "y" : "x" - , A = e.modifiersData.popperOffsets - , E = e.rects.reference - , T = e.rects.popper - , C = "function" == typeof m ? m(Object.assign({}, e.rects, { - placement: e.placement - })) : m - , O = "number" == typeof C ? { - mainAxis: C, - altAxis: C - } : Object.assign({ - mainAxis: 0, - altAxis: 0 - }, C) - , x = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null - , k = { - x: 0, - y: 0 - }; - if (A) { - if (o) { - var L, S = "y" === y ? zt : Vt, D = "y" === y ? Rt : qt, $ = "y" === y ? "height" : "width", I = A[y], N = I + g[S], P = I - g[D], M = f ? -T[$] / 2 : 0, j = b === Xt ? E[$] : T[$], F = b === Xt ? -T[$] : -E[$], H = e.elements.arrow, W = f && H ? Ce(H) : { - width: 0, - height: 0 - }, B = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : { - top: 0, - right: 0, - bottom: 0, - left: 0 - }, z = B[S], R = B[D], q = Ne(0, E[$], W[$]), V = v ? E[$] / 2 - M - q - z - O.mainAxis : j - q - z - O.mainAxis, K = v ? -E[$] / 2 + M + q + R + O.mainAxis : F + q + R + O.mainAxis, Q = e.elements.arrow && $e(e.elements.arrow), X = Q ? "y" === y ? Q.clientTop || 0 : Q.clientLeft || 0 : 0, Y = null != (L = null == x ? void 0 : x[y]) ? L : 0, U = I + K - Y, G = Ne(f ? ye(N, I + V - Y - X) : N, I, f ? ve(P, U) : P); - A[y] = G, - k[y] = G - I - } - if (a) { - var J, Z = "x" === y ? zt : Vt, tt = "x" === y ? Rt : qt, et = A[w], it = "y" === w ? "height" : "width", nt = et + g[Z], st = et - g[tt], ot = -1 !== [zt, Vt].indexOf(_), rt = null != (J = null == x ? void 0 : x[w]) ? J : 0, at = ot ? nt : et - E[it] - T[it] - rt + O.altAxis, lt = ot ? et + E[it] + T[it] - rt - O.altAxis : st, ct = f && ot ? function(t, e, i) { - var n = Ne(t, e, i); - return n > i ? i : n - }(at, et, lt) : Ne(f ? at : nt, et, f ? lt : st); - A[w] = ct, - k[w] = ct - et - } - e.modifiersData[n] = k - } - }, - requiresIfExists: ["offset"] - }; - function di(t, e, i) { - void 0 === i && (i = !1); - var n, s, o = me(e), r = me(e) && function(t) { - var e = t.getBoundingClientRect() - , i = we(e.width) / t.offsetWidth || 1 - , n = we(e.height) / t.offsetHeight || 1; - return 1 !== i || 1 !== n - }(e), a = Le(e), l = Te(t, r, i), c = { - scrollLeft: 0, - scrollTop: 0 - }, h = { - x: 0, - y: 0 - }; - return (o || !o && !i) && (("body" !== ue(e) || Ue(a)) && (c = (n = e) !== fe(n) && me(n) ? { - scrollLeft: (s = n).scrollLeft, - scrollTop: s.scrollTop - } : Xe(n)), - me(e) ? ((h = Te(e, !0)).x += e.clientLeft, - h.y += e.clientTop) : a && (h.x = Ye(a))), - { - x: l.left + c.scrollLeft - h.x, - y: l.top + c.scrollTop - h.y, - width: l.width, - height: l.height - } - } - function ui(t) { - var e = new Map - , i = new Set - , n = []; - function s(t) { - i.add(t.name), - [].concat(t.requires || [], t.requiresIfExists || []).forEach((function(t) { - if (!i.has(t)) { - var n = e.get(t); - n && s(n) - } - } - )), - n.push(t) - } - return t.forEach((function(t) { - e.set(t.name, t) - } - )), - t.forEach((function(t) { - i.has(t.name) || s(t) - } - )), - n - } - var fi = { - placement: "bottom", - modifiers: [], - strategy: "absolute" - }; - function pi() { - for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) - e[i] = arguments[i]; - return !e.some((function(t) { - return !(t && "function" == typeof t.getBoundingClientRect) - } - )) - } - function mi(t) { - void 0 === t && (t = {}); - var e = t - , i = e.defaultModifiers - , n = void 0 === i ? [] : i - , s = e.defaultOptions - , o = void 0 === s ? fi : s; - return function(t, e, i) { - void 0 === i && (i = o); - var s, r, a = { - placement: "bottom", - orderedModifiers: [], - options: Object.assign({}, fi, o), - modifiersData: {}, - elements: { - reference: t, - popper: e - }, - attributes: {}, - styles: {} - }, l = [], c = !1, h = { - state: a, - setOptions: function(i) { - var s = "function" == typeof i ? i(a.options) : i; - d(), - a.options = Object.assign({}, o, a.options, s), - a.scrollParents = { - reference: pe(t) ? Je(t) : t.contextElement ? Je(t.contextElement) : [], - popper: Je(e) - }; - var r, c, u = function(t) { - var e = ui(t); - return de.reduce((function(t, i) { - return t.concat(e.filter((function(t) { - return t.phase === i - } - ))) - } - ), []) - }((r = [].concat(n, a.options.modifiers), - c = r.reduce((function(t, e) { - var i = t[e.name]; - return t[e.name] = i ? Object.assign({}, i, e, { - options: Object.assign({}, i.options, e.options), - data: Object.assign({}, i.data, e.data) - }) : e, - t - } - ), {}), - Object.keys(c).map((function(t) { - return c[t] - } - )))); - return a.orderedModifiers = u.filter((function(t) { - return t.enabled - } - )), - a.orderedModifiers.forEach((function(t) { - var e = t.name - , i = t.options - , n = void 0 === i ? {} : i - , s = t.effect; - if ("function" == typeof s) { - var o = s({ - state: a, - name: e, - instance: h, - options: n - }); - l.push(o || function() {} - ) - } - } - )), - h.update() - }, - forceUpdate: function() { - if (!c) { - var t = a.elements - , e = t.reference - , i = t.popper; - if (pi(e, i)) { - a.rects = { - reference: di(e, $e(i), "fixed" === a.options.strategy), - popper: Ce(i) - }, - a.reset = !1, - a.placement = a.options.placement, - a.orderedModifiers.forEach((function(t) { - return a.modifiersData[t.name] = Object.assign({}, t.data) - } - )); - for (var n = 0; n < a.orderedModifiers.length; n++) - if (!0 !== a.reset) { - var s = a.orderedModifiers[n] - , o = s.fn - , r = s.options - , l = void 0 === r ? {} : r - , d = s.name; - "function" == typeof o && (a = o({ - state: a, - options: l, - name: d, - instance: h - }) || a) - } else - a.reset = !1, - n = -1 - } - } - }, - update: (s = function() { - return new Promise((function(t) { - h.forceUpdate(), - t(a) - } - )) - } - , - function() { - return r || (r = new Promise((function(t) { - Promise.resolve().then((function() { - r = void 0, - t(s()) - } - )) - } - ))), - r - } - ), - destroy: function() { - d(), - c = !0 - } - }; - if (!pi(t, e)) - return h; - function d() { - l.forEach((function(t) { - return t() - } - )), - l = [] - } - return h.setOptions(i).then((function(t) { - !c && i.onFirstUpdate && i.onFirstUpdate(t) - } - )), - h - } - } - var gi = mi() - , _i = mi({ - defaultModifiers: [Re, ci, Be, _e] - }) - , bi = mi({ - defaultModifiers: [Re, ci, Be, _e, li, si, hi, je, ai] - }); - const vi = Object.freeze(Object.defineProperty({ - __proto__: null, - afterMain: ae, - afterRead: se, - afterWrite: he, - applyStyles: _e, - arrow: je, - auto: Kt, - basePlacements: Qt, - beforeMain: oe, - beforeRead: ie, - beforeWrite: le, - bottom: Rt, - clippingParents: Ut, - computeStyles: Be, - createPopper: bi, - createPopperBase: gi, - createPopperLite: _i, - detectOverflow: ii, - end: Yt, - eventListeners: Re, - flip: si, - hide: ai, - left: Vt, - main: re, - modifierPhases: de, - offset: li, - placements: ee, - popper: Jt, - popperGenerator: mi, - popperOffsets: ci, - preventOverflow: hi, - read: ne, - reference: Zt, - right: qt, - start: Xt, - top: zt, - variationPlacements: te, - viewport: Gt, - write: ce - }, Symbol.toStringTag, { - value: "Module" - })) - , yi = "dropdown" - , wi = ".bs.dropdown" - , Ai = ".data-api" - , Ei = "ArrowUp" - , Ti = "ArrowDown" - , Ci = `hide ${wi}` - , Oi = `hidden ${wi}` - , xi = `show ${wi}` - , ki = `shown ${wi}` - , Li = `click ${wi}${Ai}` - , Si = `keydown ${wi}${Ai}` - , Di = `keyup ${wi}${Ai}` - , $i = "show" - , Ii = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)' - , Ni = `${Ii}.${$i}` - , Pi = ".dropdown-menu" - , Mi = p() ? "top-end" : "top-start" - , ji = p() ? "top-start" : "top-end" - , Fi = p() ? "bottom-end" : "bottom-start" - , Hi = p() ? "bottom-start" : "bottom-end" - , Wi = p() ? "left-start" : "right-start" - , Bi = p() ? "right-start" : "left-start" - , zi = { - autoClose: !0, - boundary: "clippingParents", - display: "dynamic", - offset: [0, 2], - popperConfig: null, - reference: "toggle" - } - , Ri = { - autoClose: "(boolean|string)", - boundary: "(string|element)", - display: "string", - offset: "(array|string|function)", - popperConfig: "(null|object|function)", - reference: "(string|element|object)" - }; - class qi extends W { - constructor(t, e) { - super(t, e), - this._popper = null, - this._parent = this._element.parentNode, - this._menu = z.next(this._element, Pi)[0] || z.prev(this._element, Pi)[0] || z.findOne(Pi, this._parent), - this._inNavbar = this._detectNavbar() - } - static get Default() { - return zi - } - static get DefaultType() { - return Ri - } - static get NAME() { - return yi - } - toggle() { - return this._isShown() ? this.hide() : this.show() - } - show() { - if (l(this._element) || this._isShown()) - return; - const t = { - relatedTarget: this._element - }; - if (!N.trigger(this._element, xi, t).defaultPrevented) { - if (this._createPopper(), - "ontouchstart"in document.documentElement && !this._parent.closest(".navbar-nav")) - for (const t of [].concat(...document.body.children)) - N.on(t, "mouseover", h); - this._element.focus(), - this._element.setAttribute("aria-expanded", !0), - this._menu.classList.add($i), - this._element.classList.add($i), - N.trigger(this._element, ki, t) - } - } - hide() { - if (l(this._element) || !this._isShown()) - return; - const t = { - relatedTarget: this._element - }; - this._completeHide(t) - } - dispose() { - this._popper && this._popper.destroy(), - super.dispose() - } - update() { - this._inNavbar = this._detectNavbar(), - this._popper && this._popper.update() - } - _completeHide(t) { - if (!N.trigger(this._element, Ci, t).defaultPrevented) { - if ("ontouchstart"in document.documentElement) - for (const t of [].concat(...document.body.children)) - N.off(t, "mouseover", h); - this._popper && this._popper.destroy(), - this._menu.classList.remove($i), - this._element.classList.remove($i), - this._element.setAttribute("aria-expanded", "false"), - F.removeDataAttribute(this._menu, "popper"), - N.trigger(this._element, Oi, t) - } - } - _getConfig(t) { - if ("object" == typeof (t = super._getConfig(t)).reference && !o(t.reference) && "function" != typeof t.reference.getBoundingClientRect) - throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); - return t - } - _createPopper() { - if (void 0 === vi) - throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)"); - let t = this._element; - "parent" === this._config.reference ? t = this._parent : o(this._config.reference) ? t = r(this._config.reference) : "object" == typeof this._config.reference && (t = this._config.reference); - const e = this._getPopperConfig(); - this._popper = bi(t, this._menu, e) - } - _isShown() { - return this._menu.classList.contains($i) - } - _getPlacement() { - const t = this._parent; - if (t.classList.contains("dropend")) - return Wi; - if (t.classList.contains("dropstart")) - return Bi; - if (t.classList.contains("dropup-center")) - return "top"; - if (t.classList.contains("dropdown-center")) - return "bottom"; - const e = "end" === getComputedStyle(this._menu).getPropertyValue("--bs-position").trim(); - return t.classList.contains("dropup") ? e ? ji : Mi : e ? Hi : Fi - } - _detectNavbar() { - return null !== this._element.closest(".navbar") - } - _getOffset() { - const {offset: t} = this._config; - return "string" == typeof t ? t.split(",").map((t=>Number.parseInt(t, 10))) : "function" == typeof t ? e=>t(e, this._element) : t - } - _getPopperConfig() { - const t = { - placement: this._getPlacement(), - modifiers: [{ - name: "preventOverflow", - options: { - boundary: this._config.boundary - } - }, { - name: "offset", - options: { - offset: this._getOffset() - } - }] - }; - return (this._inNavbar || "static" === this._config.display) && (F.setDataAttribute(this._menu, "popper", "static"), - t.modifiers = [{ - name: "applyStyles", - enabled: !1 - }]), - { - ...t, - ...g(this._config.popperConfig, [t]) - } - } - _selectMenuItem({key: t, target: e}) { - const i = z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", this._menu).filter((t=>a(t))); - i.length && b(i, e, t === Ti, !i.includes(e)).focus() - } - static jQueryInterface(t) { - return this.each((function() { - const e = qi.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === e[t]) - throw new TypeError(`No method named "${t}"`); - e[t]() - } - } - )) - } - static clearMenus(t) { - if (2 === t.button || "keyup" === t.type && "Tab" !== t.key) - return; - const e = z.find(Ni); - for (const i of e) { - const e = qi.getInstance(i); - if (!e || !1 === e._config.autoClose) - continue; - const n = t.composedPath() - , s = n.includes(e._menu); - if (n.includes(e._element) || "inside" === e._config.autoClose && !s || "outside" === e._config.autoClose && s) - continue; - if (e._menu.contains(t.target) && ("keyup" === t.type && "Tab" === t.key || /input|select|option|textarea|form/i.test(t.target.tagName))) - continue; - const o = { - relatedTarget: e._element - }; - "click" === t.type && (o.clickEvent = t), - e._completeHide(o) - } - } - static dataApiKeydownHandler(t) { - const e = /input|textarea/i.test(t.target.tagName) - , i = "Escape" === t.key - , n = [Ei, Ti].includes(t.key); - if (!n && !i) - return; - if (e && !i) - return; - t.preventDefault(); - const s = this.matches(Ii) ? this : z.prev(this, Ii)[0] || z.next(this, Ii)[0] || z.findOne(Ii, t.delegateTarget.parentNode) - , o = qi.getOrCreateInstance(s); - if (n) - return t.stopPropagation(), - o.show(), - void o._selectMenuItem(t); - o._isShown() && (t.stopPropagation(), - o.hide(), - s.focus()) - } - } - N.on(document, Si, Ii, qi.dataApiKeydownHandler), - N.on(document, Si, Pi, qi.dataApiKeydownHandler), - N.on(document, Li, qi.clearMenus), - N.on(document, Di, qi.clearMenus), - N.on(document, Li, Ii, (function(t) { - t.preventDefault(), - qi.getOrCreateInstance(this).toggle() - } - )), - m(qi); - const Vi = "backdrop" - , Ki = "show" - , Qi = `mousedown.bs.${Vi}` - , Xi = { - className: "modal-backdrop", - clickCallback: null, - isAnimated: !1, - isVisible: !0, - rootElement: "body" - } - , Yi = { - className: "string", - clickCallback: "(function|null)", - isAnimated: "boolean", - isVisible: "boolean", - rootElement: "(element|string)" - }; - class Ui extends H { - constructor(t) { - super(), - this._config = this._getConfig(t), - this._isAppended = !1, - this._element = null - } - static get Default() { - return Xi - } - static get DefaultType() { - return Yi - } - static get NAME() { - return Vi - } - show(t) { - if (!this._config.isVisible) - return void g(t); - this._append(); - const e = this._getElement(); - this._config.isAnimated && d(e), - e.classList.add(Ki), - this._emulateAnimation((()=>{ - g(t) - } - )) - } - hide(t) { - this._config.isVisible ? (this._getElement().classList.remove(Ki), - this._emulateAnimation((()=>{ - this.dispose(), - g(t) - } - ))) : g(t) - } - dispose() { - this._isAppended && (N.off(this._element, Qi), - this._element.remove(), - this._isAppended = !1) - } - _getElement() { - if (!this._element) { - const t = document.createElement("div"); - t.className = this._config.className, - this._config.isAnimated && t.classList.add("fade"), - this._element = t - } - return this._element - } - _configAfterMerge(t) { - return t.rootElement = r(t.rootElement), - t - } - _append() { - if (this._isAppended) - return; - const t = this._getElement(); - this._config.rootElement.append(t), - N.on(t, Qi, (()=>{ - g(this._config.clickCallback) - } - )), - this._isAppended = !0 - } - _emulateAnimation(t) { - _(t, this._getElement(), this._config.isAnimated) - } - } - const Gi = ".bs.focustrap" - , Ji = `focusin ${Gi}` - , Zi = `keydown.tab ${Gi}` - , tn = "backward" - , en = { - autofocus: !0, - trapElement: null - } - , nn = { - autofocus: "boolean", - trapElement: "element" - }; - class sn extends H { - constructor(t) { - super(), - this._config = this._getConfig(t), - this._isActive = !1, - this._lastTabNavDirection = null - } - static get Default() { - return en - } - static get DefaultType() { - return nn - } - static get NAME() { - return "focustrap" - } - activate() { - this._isActive || (this._config.autofocus && this._config.trapElement.focus(), - N.off(document, Gi), - N.on(document, Ji, (t=>this._handleFocusin(t))), - N.on(document, Zi, (t=>this._handleKeydown(t))), - this._isActive = !0) - } - deactivate() { - this._isActive && (this._isActive = !1, - N.off(document, Gi)) - } - _handleFocusin(t) { - const {trapElement: e} = this._config; - if (t.target === document || t.target === e || e.contains(t.target)) - return; - const i = z.focusableChildren(e); - 0 === i.length ? e.focus() : this._lastTabNavDirection === tn ? i[i.length - 1].focus() : i[0].focus() - } - _handleKeydown(t) { - "Tab" === t.key && (this._lastTabNavDirection = t.shiftKey ? tn : "forward") - } - } - const on = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top" - , rn = ".sticky-top" - , an = "padding-right" - , ln = "margin-right"; - class cn { - constructor() { - this._element = document.body - } - getWidth() { - const t = document.documentElement.clientWidth; - return Math.abs(window.innerWidth - t) - } - hide() { - const t = this.getWidth(); - this._disableOverFlow(), - this._setElementAttributes(this._element, an, (e=>e + t)), - this._setElementAttributes(on, an, (e=>e + t)), - this._setElementAttributes(rn, ln, (e=>e - t)) - } - reset() { - this._resetElementAttributes(this._element, "overflow"), - this._resetElementAttributes(this._element, an), - this._resetElementAttributes(on, an), - this._resetElementAttributes(rn, ln) - } - isOverflowing() { - return this.getWidth() > 0 - } - _disableOverFlow() { - this._saveInitialAttribute(this._element, "overflow"), - this._element.style.overflow = "hidden" - } - _setElementAttributes(t, e, i) { - const n = this.getWidth(); - this._applyManipulationCallback(t, (t=>{ - if (t !== this._element && window.innerWidth > t.clientWidth + n) - return; - this._saveInitialAttribute(t, e); - const s = window.getComputedStyle(t).getPropertyValue(e); - t.style.setProperty(e, `${i(Number.parseFloat(s))}px`) - } - )) - } - _saveInitialAttribute(t, e) { - const i = t.style.getPropertyValue(e); - i && F.setDataAttribute(t, e, i) - } - _resetElementAttributes(t, e) { - this._applyManipulationCallback(t, (t=>{ - const i = F.getDataAttribute(t, e); - null !== i ? (F.removeDataAttribute(t, e), - t.style.setProperty(e, i)) : t.style.removeProperty(e) - } - )) - } - _applyManipulationCallback(t, e) { - if (o(t)) - e(t); - else - for (const i of z.find(t, this._element)) - e(i) - } - } - const hn = ".bs.modal" - , dn = `hide ${hn}` - , un = `hidePrevented ${hn}` - , fn = `hidden ${hn}` - , pn = `show ${hn}` - , mn = `shown ${hn}` - , gn = `resize ${hn}` - , _n = `click.dismiss ${hn}` - , bn = `mousedown.dismiss ${hn}` - , vn = `keydown.dismiss ${hn}` - , yn = `click ${hn}.data-api` - , wn = "modal-open" - , An = "show" - , En = "modal-static" - , Tn = { - backdrop: !0, - focus: !0, - keyboard: !0 - } - , Cn = { - backdrop: "(boolean|string)", - focus: "boolean", - keyboard: "boolean" - }; - class On extends W { - constructor(t, e) { - super(t, e), - this._dialog = z.findOne(".modal-dialog", this._element), - this._backdrop = this._initializeBackDrop(), - this._focustrap = this._initializeFocusTrap(), - this._isShown = !1, - this._isTransitioning = !1, - this._scrollBar = new cn, - this._addEventListeners() - } - static get Default() { - return Tn - } - static get DefaultType() { - return Cn - } - static get NAME() { - return "modal" - } - toggle(t) { - return this._isShown ? this.hide() : this.show(t) - } - show(t) { - this._isShown || this._isTransitioning || N.trigger(this._element, pn, { - relatedTarget: t - }).defaultPrevented || (this._isShown = !0, - this._isTransitioning = !0, - this._scrollBar.hide(), - document.body.classList.add(wn), - this._adjustDialog(), - this._backdrop.show((()=>this._showElement(t)))) - } - hide() { - this._isShown && !this._isTransitioning && (N.trigger(this._element, dn).defaultPrevented || (this._isShown = !1, - this._isTransitioning = !0, - this._focustrap.deactivate(), - this._element.classList.remove(An), - this._queueCallback((()=>this._hideModal()), this._element, this._isAnimated()))) - } - dispose() { - N.off(window, hn), - N.off(this._dialog, hn), - this._backdrop.dispose(), - this._focustrap.deactivate(), - super.dispose() - } - handleUpdate() { - this._adjustDialog() - } - _initializeBackDrop() { - return new Ui({ - isVisible: Boolean(this._config.backdrop), - isAnimated: this._isAnimated() - }) - } - _initializeFocusTrap() { - return new sn({ - trapElement: this._element - }) - } - _showElement(t) { - document.body.contains(this._element) || document.body.append(this._element), - this._element.style.display = "block", - this._element.removeAttribute("aria-hidden"), - this._element.setAttribute("aria-modal", !0), - this._element.setAttribute("role", "dialog"), - this._element.scrollTop = 0; - const e = z.findOne(".modal-body", this._dialog); - e && (e.scrollTop = 0), - d(this._element), - this._element.classList.add(An), - this._queueCallback((()=>{ - this._config.focus && this._focustrap.activate(), - this._isTransitioning = !1, - N.trigger(this._element, mn, { - relatedTarget: t - }) - } - ), this._dialog, this._isAnimated()) - } - _addEventListeners() { - N.on(this._element, vn, (t=>{ - "Escape" === t.key && (this._config.keyboard ? this.hide() : this._triggerBackdropTransition()) - } - )), - N.on(window, gn, (()=>{ - this._isShown && !this._isTransitioning && this._adjustDialog() - } - )), - N.on(this._element, bn, (t=>{ - N.one(this._element, _n, (e=>{ - this._element === t.target && this._element === e.target && ("static" !== this._config.backdrop ? this._config.backdrop && this.hide() : this._triggerBackdropTransition()) - } - )) - } - )) - } - _hideModal() { - this._element.style.display = "none", - this._element.setAttribute("aria-hidden", !0), - this._element.removeAttribute("aria-modal"), - this._element.removeAttribute("role"), - this._isTransitioning = !1, - this._backdrop.hide((()=>{ - document.body.classList.remove(wn), - this._resetAdjustments(), - this._scrollBar.reset(), - N.trigger(this._element, fn) - } - )) - } - _isAnimated() { - return this._element.classList.contains("fade") - } - _triggerBackdropTransition() { - if (N.trigger(this._element, un).defaultPrevented) - return; - const t = this._element.scrollHeight > document.documentElement.clientHeight - , e = this._element.style.overflowY; - "hidden" === e || this._element.classList.contains(En) || (t || (this._element.style.overflowY = "hidden"), - this._element.classList.add(En), - this._queueCallback((()=>{ - this._element.classList.remove(En), - this._queueCallback((()=>{ - this._element.style.overflowY = e - } - ), this._dialog) - } - ), this._dialog), - this._element.focus()) - } - _adjustDialog() { - const t = this._element.scrollHeight > document.documentElement.clientHeight - , e = this._scrollBar.getWidth() - , i = e > 0; - if (i && !t) { - const t = p() ? "paddingLeft" : "paddingRight"; - this._element.style[t] = `${e}px` - } - if (!i && t) { - const t = p() ? "paddingRight" : "paddingLeft"; - this._element.style[t] = `${e}px` - } - } - _resetAdjustments() { - this._element.style.paddingLeft = "", - this._element.style.paddingRight = "" - } - static jQueryInterface(t, e) { - return this.each((function() { - const i = On.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === i[t]) - throw new TypeError(`No method named "${t}"`); - i[t](e) - } - } - )) - } - } - N.on(document, yn, '[data-bs-toggle="modal"]', (function(t) { - const e = z.getElementFromSelector(this); - ["A", "AREA"].includes(this.tagName) && t.preventDefault(), - N.one(e, pn, (t=>{ - t.defaultPrevented || N.one(e, fn, (()=>{ - a(this) && this.focus() - } - )) - } - )); - const i = z.findOne(".modal.show"); - i && On.getInstance(i).hide(), - On.getOrCreateInstance(e).toggle(this) - } - )), - R(On), - m(On); - const xn = ".bs.offcanvas" - , kn = ".data-api" - , Ln = `load ${xn}${kn}` - , Sn = "show" - , Dn = "showing" - , $n = "hiding" - , In = ".offcanvas.show" - , Nn = `show ${xn}` - , Pn = `shown ${xn}` - , Mn = `hide ${xn}` - , jn = `hidePrevented ${xn}` - , Fn = `hidden ${xn}` - , Hn = `resize ${xn}` - , Wn = `click ${xn}${kn}` - , Bn = `keydown.dismiss ${xn}` - , zn = { - backdrop: !0, - keyboard: !0, - scroll: !1 - } - , Rn = { - backdrop: "(boolean|string)", - keyboard: "boolean", - scroll: "boolean" - }; - class qn extends W { - constructor(t, e) { - super(t, e), - this._isShown = !1, - this._backdrop = this._initializeBackDrop(), - this._focustrap = this._initializeFocusTrap(), - this._addEventListeners() - } - static get Default() { - return zn - } - static get DefaultType() { - return Rn - } - static get NAME() { - return "offcanvas" - } - toggle(t) { - return this._isShown ? this.hide() : this.show(t) - } - show(t) { - this._isShown || N.trigger(this._element, Nn, { - relatedTarget: t - }).defaultPrevented || (this._isShown = !0, - this._backdrop.show(), - this._config.scroll || (new cn).hide(), - this._element.setAttribute("aria-modal", !0), - this._element.setAttribute("role", "dialog"), - this._element.classList.add(Dn), - this._queueCallback((()=>{ - this._config.scroll && !this._config.backdrop || this._focustrap.activate(), - this._element.classList.add(Sn), - this._element.classList.remove(Dn), - N.trigger(this._element, Pn, { - relatedTarget: t - }) - } - ), this._element, !0)) - } - hide() { - this._isShown && (N.trigger(this._element, Mn).defaultPrevented || (this._focustrap.deactivate(), - this._element.blur(), - this._isShown = !1, - this._element.classList.add($n), - this._backdrop.hide(), - this._queueCallback((()=>{ - this._element.classList.remove(Sn, $n), - this._element.removeAttribute("aria-modal"), - this._element.removeAttribute("role"), - this._config.scroll || (new cn).reset(), - N.trigger(this._element, Fn) - } - ), this._element, !0))) - } - dispose() { - this._backdrop.dispose(), - this._focustrap.deactivate(), - super.dispose() - } - _initializeBackDrop() { - const t = Boolean(this._config.backdrop); - return new Ui({ - className: "offcanvas-backdrop", - isVisible: t, - isAnimated: !0, - rootElement: this._element.parentNode, - clickCallback: t ? ()=>{ - "static" !== this._config.backdrop ? this.hide() : N.trigger(this._element, jn) - } - : null - }) - } - _initializeFocusTrap() { - return new sn({ - trapElement: this._element - }) - } - _addEventListeners() { - N.on(this._element, Bn, (t=>{ - "Escape" === t.key && (this._config.keyboard ? this.hide() : N.trigger(this._element, jn)) - } - )) - } - static jQueryInterface(t) { - return this.each((function() { - const e = qn.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) - throw new TypeError(`No method named "${t}"`); - e[t](this) - } - } - )) - } - } - N.on(document, Wn, '[data-bs-toggle="offcanvas"]', (function(t) { - const e = z.getElementFromSelector(this); - if (["A", "AREA"].includes(this.tagName) && t.preventDefault(), - l(this)) - return; - N.one(e, Fn, (()=>{ - a(this) && this.focus() - } - )); - const i = z.findOne(In); - i && i !== e && qn.getInstance(i).hide(), - qn.getOrCreateInstance(e).toggle(this) - } - )), - N.on(window, Ln, (()=>{ - for (const t of z.find(In)) - qn.getOrCreateInstance(t).show() - } - )), - N.on(window, Hn, (()=>{ - for (const t of z.find("[aria-modal][class*=show][class*=offcanvas-]")) - "fixed" !== getComputedStyle(t).position && qn.getOrCreateInstance(t).hide() - } - )), - R(qn), - m(qn); - const Vn = { - "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], - a: ["target", "href", "title", "rel"], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ["src", "srcset", "alt", "title", "width", "height"], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] - } - , Kn = new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]) - , Qn = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i - , Xn = (t,e)=>{ - const i = t.nodeName.toLowerCase(); - return e.includes(i) ? !Kn.has(i) || Boolean(Qn.test(t.nodeValue)) : e.filter((t=>t instanceof RegExp)).some((t=>t.test(i))) - } - , Yn = { - allowList: Vn, - content: {}, - extraClass: "", - html: !1, - sanitize: !0, - sanitizeFn: null, - template: "
" - } - , Un = { - allowList: "object", - content: "object", - extraClass: "(string|function)", - html: "boolean", - sanitize: "boolean", - sanitizeFn: "(null|function)", - template: "string" - } - , Gn = { - entry: "(string|element|function|null)", - selector: "(string|element)" - }; - class Jn extends H { - constructor(t) { - super(), - this._config = this._getConfig(t) - } - static get Default() { - return Yn - } - static get DefaultType() { - return Un - } - static get NAME() { - return "TemplateFactory" - } - getContent() { - return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean) - } - hasContent() { - return this.getContent().length > 0 - } - changeContent(t) { - return this._checkContent(t), - this._config.content = { - ...this._config.content, - ...t - }, - this - } - toHtml() { - const t = document.createElement("div"); - t.innerHTML = this._maybeSanitize(this._config.template); - for (const [e,i] of Object.entries(this._config.content)) - this._setContent(t, i, e); - const e = t.children[0] - , i = this._resolvePossibleFunction(this._config.extraClass); - return i && e.classList.add(...i.split(" ")), - e - } - _typeCheckConfig(t) { - super._typeCheckConfig(t), - this._checkContent(t.content) - } - _checkContent(t) { - for (const [e,i] of Object.entries(t)) - super._typeCheckConfig({ - selector: e, - entry: i - }, Gn) - } - _setContent(t, e, i) { - const n = z.findOne(i, t); - n && ((e = this._resolvePossibleFunction(e)) ? o(e) ? this._putElementInTemplate(r(e), n) : this._config.html ? n.innerHTML = this._maybeSanitize(e) : n.textContent = e : n.remove()) - } - _maybeSanitize(t) { - return this._config.sanitize ? function(t, e, i) { - if (!t.length) - return t; - if (i && "function" == typeof i) - return i(t); - const n = (new window.DOMParser).parseFromString(t, "text/html") - , s = [].concat(...n.body.querySelectorAll("*")); - for (const t of s) { - const i = t.nodeName.toLowerCase(); - if (!Object.keys(e).includes(i)) { - t.remove(); - continue - } - const n = [].concat(...t.attributes) - , s = [].concat(e["*"] || [], e[i] || []); - for (const e of n) - Xn(e, s) || t.removeAttribute(e.nodeName) - } - return n.body.innerHTML - }(t, this._config.allowList, this._config.sanitizeFn) : t - } - _resolvePossibleFunction(t) { - return g(t, [this]) - } - _putElementInTemplate(t, e) { - if (this._config.html) - return e.innerHTML = "", - void e.append(t); - e.textContent = t.textContent - } - } - const Zn = new Set(["sanitize", "allowList", "sanitizeFn"]) - , ts = "fade" - , es = "show" - , is = ".modal" - , ns = "hide.bs.modal" - , ss = "hover" - , os = "focus" - , rs = { - AUTO: "auto", - TOP: "top", - RIGHT: p() ? "left" : "right", - BOTTOM: "bottom", - LEFT: p() ? "right" : "left" - } - , as = { - allowList: Vn, - animation: !0, - boundary: "clippingParents", - container: !1, - customClass: "", - delay: 0, - fallbackPlacements: ["top", "right", "bottom", "left"], - html: !1, - offset: [0, 6], - placement: "top", - popperConfig: null, - sanitize: !0, - sanitizeFn: null, - selector: !1, - template: '', - title: "", - trigger: "hover focus" - } - , ls = { - allowList: "object", - animation: "boolean", - boundary: "(string|element)", - container: "(string|element|boolean)", - customClass: "(string|function)", - delay: "(number|object)", - fallbackPlacements: "array", - html: "boolean", - offset: "(array|string|function)", - placement: "(string|function)", - popperConfig: "(null|object|function)", - sanitize: "boolean", - sanitizeFn: "(null|function)", - selector: "(string|boolean)", - template: "string", - title: "(string|element|function)", - trigger: "string" - }; - class cs extends W { - constructor(t, e) { - if (void 0 === vi) - throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)"); - super(t, e), - this._isEnabled = !0, - this._timeout = 0, - this._isHovered = null, - this._activeTrigger = {}, - this._popper = null, - this._templateFactory = null, - this._newContent = null, - this.tip = null, - this._setListeners(), - this._config.selector || this._fixTitle() - } - static get Default() { - return as - } - static get DefaultType() { - return ls - } - static get NAME() { - return "tooltip" - } - enable() { - this._isEnabled = !0 - } - disable() { - this._isEnabled = !1 - } - toggleEnabled() { - this._isEnabled = !this._isEnabled - } - toggle() { - this._isEnabled && (this._activeTrigger.click = !this._activeTrigger.click, - this._isShown() ? this._leave() : this._enter()) - } - dispose() { - clearTimeout(this._timeout), - N.off(this._element.closest(is), ns, this._hideModalHandler), - this._element.getAttribute("data-bs-original-title") && this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")), - this._disposePopper(), - super.dispose() - } - show() { - if ("none" === this._element.style.display) - throw new Error("Please use show on visible elements"); - if (!this._isWithContent() || !this._isEnabled) - return; - const t = N.trigger(this._element, this.constructor.eventName("show")) - , e = (c(this._element) || this._element.ownerDocument.documentElement).contains(this._element); - if (t.defaultPrevented || !e) - return; - this._disposePopper(); - const i = this._getTipElement(); - this._element.setAttribute("aria-describedby", i.getAttribute("id")); - const {container: n} = this._config; - if (this._element.ownerDocument.documentElement.contains(this.tip) || (n.append(i), - N.trigger(this._element, this.constructor.eventName("inserted"))), - this._popper = this._createPopper(i), - i.classList.add(es), - "ontouchstart"in document.documentElement) - for (const t of [].concat(...document.body.children)) - N.on(t, "mouseover", h); - this._queueCallback((()=>{ - N.trigger(this._element, this.constructor.eventName("shown")), - !1 === this._isHovered && this._leave(), - this._isHovered = !1 - } - ), this.tip, this._isAnimated()) - } - hide() { - if (this._isShown() && !N.trigger(this._element, this.constructor.eventName("hide")).defaultPrevented) { - if (this._getTipElement().classList.remove(es), - "ontouchstart"in document.documentElement) - for (const t of [].concat(...document.body.children)) - N.off(t, "mouseover", h); - this._activeTrigger.click = !1, - this._activeTrigger[os] = !1, - this._activeTrigger[ss] = !1, - this._isHovered = null, - this._queueCallback((()=>{ - this._isWithActiveTrigger() || (this._isHovered || this._disposePopper(), - this._element.removeAttribute("aria-describedby"), - N.trigger(this._element, this.constructor.eventName("hidden"))) - } - ), this.tip, this._isAnimated()) - } - } - update() { - this._popper && this._popper.update() - } - _isWithContent() { - return Boolean(this._getTitle()) - } - _getTipElement() { - return this.tip || (this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())), - this.tip - } - _createTipElement(t) { - const e = this._getTemplateFactory(t).toHtml(); - if (!e) - return null; - e.classList.remove(ts, es), - e.classList.add(`bs-${this.constructor.NAME}-auto`); - const i = (t=>{ - do { - t += Math.floor(1e6 * Math.random()) - } while (document.getElementById(t)); - return t - } - )(this.constructor.NAME).toString(); - return e.setAttribute("id", i), - this._isAnimated() && e.classList.add(ts), - e - } - setContent(t) { - this._newContent = t, - this._isShown() && (this._disposePopper(), - this.show()) - } - _getTemplateFactory(t) { - return this._templateFactory ? this._templateFactory.changeContent(t) : this._templateFactory = new Jn({ - ...this._config, - content: t, - extraClass: this._resolvePossibleFunction(this._config.customClass) - }), - this._templateFactory - } - _getContentForTemplate() { - return { - ".tooltip-inner": this._getTitle() - } - } - _getTitle() { - return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title") - } - _initializeOnDelegatedTarget(t) { - return this.constructor.getOrCreateInstance(t.delegateTarget, this._getDelegateConfig()) - } - _isAnimated() { - return this._config.animation || this.tip && this.tip.classList.contains(ts) - } - _isShown() { - return this.tip && this.tip.classList.contains(es) - } - _createPopper(t) { - const e = g(this._config.placement, [this, t, this._element]) - , i = rs[e.toUpperCase()]; - return bi(this._element, t, this._getPopperConfig(i)) - } - _getOffset() { - const {offset: t} = this._config; - return "string" == typeof t ? t.split(",").map((t=>Number.parseInt(t, 10))) : "function" == typeof t ? e=>t(e, this._element) : t - } - _resolvePossibleFunction(t) { - return g(t, [this._element]) - } - _getPopperConfig(t) { - const e = { - placement: t, - modifiers: [{ - name: "flip", - options: { - fallbackPlacements: this._config.fallbackPlacements - } - }, { - name: "offset", - options: { - offset: this._getOffset() - } - }, { - name: "preventOverflow", - options: { - boundary: this._config.boundary - } - }, { - name: "arrow", - options: { - element: `.${this.constructor.NAME}-arrow` - } - }, { - name: "preSetPlacement", - enabled: !0, - phase: "beforeMain", - fn: t=>{ - this._getTipElement().setAttribute("data-popper-placement", t.state.placement) - } - }] - }; - return { - ...e, - ...g(this._config.popperConfig, [e]) - } - } - _setListeners() { - const t = this._config.trigger.split(" "); - for (const e of t) - if ("click" === e) - N.on(this._element, this.constructor.eventName("click"), this._config.selector, (t=>{ - this._initializeOnDelegatedTarget(t).toggle() - } - )); - else if ("manual" !== e) { - const t = e === ss ? this.constructor.eventName("mouseenter") : this.constructor.eventName("focusin") - , i = e === ss ? this.constructor.eventName("mouseleave") : this.constructor.eventName("focusout"); - N.on(this._element, t, this._config.selector, (t=>{ - const e = this._initializeOnDelegatedTarget(t); - e._activeTrigger["focusin" === t.type ? os : ss] = !0, - e._enter() - } - )), - N.on(this._element, i, this._config.selector, (t=>{ - const e = this._initializeOnDelegatedTarget(t); - e._activeTrigger["focusout" === t.type ? os : ss] = e._element.contains(t.relatedTarget), - e._leave() - } - )) - } - this._hideModalHandler = ()=>{ - this._element && this.hide() - } - , - N.on(this._element.closest(is), ns, this._hideModalHandler) - } - _fixTitle() { - const t = this._element.getAttribute("title"); - t && (this._element.getAttribute("aria-label") || this._element.textContent.trim() || this._element.setAttribute("aria-label", t), - this._element.setAttribute("data-bs-original-title", t), - this._element.removeAttribute("title")) - } - _enter() { - this._isShown() || this._isHovered ? this._isHovered = !0 : (this._isHovered = !0, - this._setTimeout((()=>{ - this._isHovered && this.show() - } - ), this._config.delay.show)) - } - _leave() { - this._isWithActiveTrigger() || (this._isHovered = !1, - this._setTimeout((()=>{ - this._isHovered || this.hide() - } - ), this._config.delay.hide)) - } - _setTimeout(t, e) { - clearTimeout(this._timeout), - this._timeout = setTimeout(t, e) - } - _isWithActiveTrigger() { - return Object.values(this._activeTrigger).includes(!0) - } - _getConfig(t) { - const e = F.getDataAttributes(this._element); - for (const t of Object.keys(e)) - Zn.has(t) && delete e[t]; - return t = { - ...e, - ..."object" == typeof t && t ? t : {} - }, - t = this._mergeConfigObj(t), - t = this._configAfterMerge(t), - this._typeCheckConfig(t), - t - } - _configAfterMerge(t) { - return t.container = !1 === t.container ? document.body : r(t.container), - "number" == typeof t.delay && (t.delay = { - show: t.delay, - hide: t.delay - }), - "number" == typeof t.title && (t.title = t.title.toString()), - "number" == typeof t.content && (t.content = t.content.toString()), - t - } - _getDelegateConfig() { - const t = {}; - for (const [e,i] of Object.entries(this._config)) - this.constructor.Default[e] !== i && (t[e] = i); - return t.selector = !1, - t.trigger = "manual", - t - } - _disposePopper() { - this._popper && (this._popper.destroy(), - this._popper = null), - this.tip && (this.tip.remove(), - this.tip = null) - } - static jQueryInterface(t) { - return this.each((function() { - const e = cs.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === e[t]) - throw new TypeError(`No method named "${t}"`); - e[t]() - } - } - )) - } - } - m(cs); - const hs = { - ...cs.Default, - content: "", - offset: [0, 8], - placement: "right", - template: '', - trigger: "click" - } - , ds = { - ...cs.DefaultType, - content: "(null|string|element|function)" - }; - class us extends cs { - static get Default() { - return hs - } - static get DefaultType() { - return ds - } - static get NAME() { - return "popover" - } - _isWithContent() { - return this._getTitle() || this._getContent() - } - _getContentForTemplate() { - return { - ".popover-header": this._getTitle(), - ".popover-body": this._getContent() - } - } - _getContent() { - return this._resolvePossibleFunction(this._config.content) - } - static jQueryInterface(t) { - return this.each((function() { - const e = us.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === e[t]) - throw new TypeError(`No method named "${t}"`); - e[t]() - } - } - )) - } - } - m(us); - const fs = ".bs.scrollspy" - , ps = `activate ${fs}` - , ms = `click ${fs}` - , gs = `load ${fs}.data-api` - , _s = "active" - , bs = "[href]" - , vs = ".nav-link" - , ys = `${vs}, .nav-item > ${vs}, .list-group-item` - , ws = { - offset: null, - rootMargin: "0px 0px -25%", - smoothScroll: !1, - target: null, - threshold: [.1, .5, 1] - } - , As = { - offset: "(number|null)", - rootMargin: "string", - smoothScroll: "boolean", - target: "element", - threshold: "array" - }; - class Es extends W { - constructor(t, e) { - super(t, e), - this._targetLinks = new Map, - this._observableSections = new Map, - this._rootElement = "visible" === getComputedStyle(this._element).overflowY ? null : this._element, - this._activeTarget = null, - this._observer = null, - this._previousScrollData = { - visibleEntryTop: 0, - parentScrollTop: 0 - }, - this.refresh() - } - static get Default() { - return ws - } - static get DefaultType() { - return As - } - static get NAME() { - return "scrollspy" - } - refresh() { - this._initializeTargetsAndObservables(), - this._maybeEnableSmoothScroll(), - this._observer ? this._observer.disconnect() : this._observer = this._getNewObserver(); - for (const t of this._observableSections.values()) - this._observer.observe(t) - } - dispose() { - this._observer.disconnect(), - super.dispose() - } - _configAfterMerge(t) { - return t.target = r(t.target) || document.body, - t.rootMargin = t.offset ? `${t.offset}px 0px -30%` : t.rootMargin, - "string" == typeof t.threshold && (t.threshold = t.threshold.split(",").map((t=>Number.parseFloat(t)))), - t - } - _maybeEnableSmoothScroll() { - this._config.smoothScroll && (N.off(this._config.target, ms), - N.on(this._config.target, ms, bs, (t=>{ - const e = this._observableSections.get(t.target.hash); - if (e) { - t.preventDefault(); - const i = this._rootElement || window - , n = e.offsetTop - this._element.offsetTop; - if (i.scrollTo) - return void i.scrollTo({ - top: n, - behavior: "smooth" - }); - i.scrollTop = n - } - } - ))) - } - _getNewObserver() { - const t = { - root: this._rootElement, - threshold: this._config.threshold, - rootMargin: this._config.rootMargin - }; - return new IntersectionObserver((t=>this._observerCallback(t)),t) - } - _observerCallback(t) { - const e = t=>this._targetLinks.get(`#${t.target.id}`) - , i = t=>{ - this._previousScrollData.visibleEntryTop = t.target.offsetTop, - this._process(e(t)) - } - , n = (this._rootElement || document.documentElement).scrollTop - , s = n >= this._previousScrollData.parentScrollTop; - this._previousScrollData.parentScrollTop = n; - for (const o of t) { - if (!o.isIntersecting) { - this._activeTarget = null, - this._clearActiveClass(e(o)); - continue - } - const t = o.target.offsetTop >= this._previousScrollData.visibleEntryTop; - if (s && t) { - if (i(o), - !n) - return - } else - s || t || i(o) - } - } - _initializeTargetsAndObservables() { - this._targetLinks = new Map, - this._observableSections = new Map; - const t = z.find(bs, this._config.target); - for (const e of t) { - if (!e.hash || l(e)) - continue; - const t = z.findOne(decodeURI(e.hash), this._element); - a(t) && (this._targetLinks.set(decodeURI(e.hash), e), - this._observableSections.set(e.hash, t)) - } - } - _process(t) { - this._activeTarget !== t && (this._clearActiveClass(this._config.target), - this._activeTarget = t, - t.classList.add(_s), - this._activateParents(t), - N.trigger(this._element, ps, { - relatedTarget: t - })) - } - _activateParents(t) { - if (t.classList.contains("dropdown-item")) - z.findOne(".dropdown-toggle", t.closest(".dropdown")).classList.add(_s); - else - for (const e of z.parents(t, ".nav, .list-group")) - for (const t of z.prev(e, ys)) - t.classList.add(_s) - } - _clearActiveClass(t) { - t.classList.remove(_s); - const e = z.find(`${bs}.${_s}`, t); - for (const t of e) - t.classList.remove(_s) - } - static jQueryInterface(t) { - return this.each((function() { - const e = Es.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) - throw new TypeError(`No method named "${t}"`); - e[t]() - } - } - )) - } - } - N.on(window, gs, (()=>{ - for (const t of z.find('[data-bs-spy="scroll"]')) - Es.getOrCreateInstance(t) - } - )), - m(Es); - const Ts = ".bs.tab" - , Cs = `hide ${Ts}` - , Os = `hidden ${Ts}` - , xs = `show ${Ts}` - , ks = `shown ${Ts}` - , Ls = `click ${Ts}` - , Ss = `keydown ${Ts}` - , Ds = `load ${Ts}` - , $s = "ArrowLeft" - , Is = "ArrowRight" - , Ns = "ArrowUp" - , Ps = "ArrowDown" - , Ms = "Home" - , js = "End" - , Fs = "active" - , Hs = "fade" - , Ws = "show" - , Bs = ".dropdown-toggle" - , zs = `:not(${Bs})` - , Rs = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]' - , qs = `.nav-link ${zs}, .list-group-item ${zs}, [role="tab"]${zs}, ${Rs}` - , Vs = `.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`; - class Ks extends W { - constructor(t) { - super(t), - this._parent = this._element.closest('.list-group, .nav, [role="tablist"]'), - this._parent && (this._setInitialAttributes(this._parent, this._getChildren()), - N.on(this._element, Ss, (t=>this._keydown(t)))) - } - static get NAME() { - return "tab" - } - show() { - const t = this._element; - if (this._elemIsActive(t)) - return; - const e = this._getActiveElem() - , i = e ? N.trigger(e, Cs, { - relatedTarget: t - }) : null; - N.trigger(t, xs, { - relatedTarget: e - }).defaultPrevented || i && i.defaultPrevented || (this._deactivate(e, t), - this._activate(t, e)) - } - _activate(t, e) { - t && (t.classList.add(Fs), - this._activate(z.getElementFromSelector(t)), - this._queueCallback((()=>{ - "tab" === t.getAttribute("role") ? (t.removeAttribute("tabindex"), - t.setAttribute("aria-selected", !0), - this._toggleDropDown(t, !0), - N.trigger(t, ks, { - relatedTarget: e - })) : t.classList.add(Ws) - } - ), t, t.classList.contains(Hs))) - } - _deactivate(t, e) { - t && (t.classList.remove(Fs), - t.blur(), - this._deactivate(z.getElementFromSelector(t)), - this._queueCallback((()=>{ - "tab" === t.getAttribute("role") ? (t.setAttribute("aria-selected", !1), - t.setAttribute("tabindex", "-1"), - this._toggleDropDown(t, !1), - N.trigger(t, Os, { - relatedTarget: e - })) : t.classList.remove(Ws) - } - ), t, t.classList.contains(Hs))) - } - _keydown(t) { - if (![$s, Is, Ns, Ps, Ms, js].includes(t.key)) - return; - t.stopPropagation(), - t.preventDefault(); - const e = this._getChildren().filter((t=>!l(t))); - let i; - if ([Ms, js].includes(t.key)) - i = e[t.key === Ms ? 0 : e.length - 1]; - else { - const n = [Is, Ps].includes(t.key); - i = b(e, t.target, n, !0) - } - i && (i.focus({ - preventScroll: !0 - }), - Ks.getOrCreateInstance(i).show()) - } - _getChildren() { - return z.find(qs, this._parent) - } - _getActiveElem() { - return this._getChildren().find((t=>this._elemIsActive(t))) || null - } - _setInitialAttributes(t, e) { - this._setAttributeIfNotExists(t, "role", "tablist"); - for (const t of e) - this._setInitialAttributesOnChild(t) - } - _setInitialAttributesOnChild(t) { - t = this._getInnerElement(t); - const e = this._elemIsActive(t) - , i = this._getOuterElement(t); - t.setAttribute("aria-selected", e), - i !== t && this._setAttributeIfNotExists(i, "role", "presentation"), - e || t.setAttribute("tabindex", "-1"), - this._setAttributeIfNotExists(t, "role", "tab"), - this._setInitialAttributesOnTargetPanel(t) - } - _setInitialAttributesOnTargetPanel(t) { - const e = z.getElementFromSelector(t); - e && (this._setAttributeIfNotExists(e, "role", "tabpanel"), - t.id && this._setAttributeIfNotExists(e, "aria-labelledby", `${t.id}`)) - } - _toggleDropDown(t, e) { - const i = this._getOuterElement(t); - if (!i.classList.contains("dropdown")) - return; - const n = (t,n)=>{ - const s = z.findOne(t, i); - s && s.classList.toggle(n, e) - } - ; - n(Bs, Fs), - n(".dropdown-menu", Ws), - i.setAttribute("aria-expanded", e) - } - _setAttributeIfNotExists(t, e, i) { - t.hasAttribute(e) || t.setAttribute(e, i) - } - _elemIsActive(t) { - return t.classList.contains(Fs) - } - _getInnerElement(t) { - return t.matches(qs) ? t : z.findOne(qs, t) - } - _getOuterElement(t) { - return t.closest(".nav-item, .list-group-item") || t - } - static jQueryInterface(t) { - return this.each((function() { - const e = Ks.getOrCreateInstance(this); - if ("string" == typeof t) { - if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) - throw new TypeError(`No method named "${t}"`); - e[t]() - } - } - )) - } - } - N.on(document, Ls, Rs, (function(t) { - ["A", "AREA"].includes(this.tagName) && t.preventDefault(), - l(this) || Ks.getOrCreateInstance(this).show() - } - )), - N.on(window, Ds, (()=>{ - for (const t of z.find(Vs)) - Ks.getOrCreateInstance(t) - } - )), - m(Ks); - const Qs = ".bs.toast" - , Xs = `mouseover ${Qs}` - , Ys = `mouseout ${Qs}` - , Us = `focusin ${Qs}` - , Gs = `focusout ${Qs}` - , Js = `hide ${Qs}` - , Zs = `hidden ${Qs}` - , to = `show ${Qs}` - , eo = `shown ${Qs}` - , io = "hide" - , no = "show" - , so = "showing" - , oo = { - animation: "boolean", - autohide: "boolean", - delay: "number" - } - , ro = { - animation: !0, - autohide: !0, - delay: 5e3 - }; - class ao extends W { - constructor(t, e) { - super(t, e), - this._timeout = null, - this._hasMouseInteraction = !1, - this._hasKeyboardInteraction = !1, - this._setListeners() - } - static get Default() { - return ro - } - static get DefaultType() { - return oo - } - static get NAME() { - return "toast" - } - show() { - N.trigger(this._element, to).defaultPrevented || (this._clearTimeout(), - this._config.animation && this._element.classList.add("fade"), - this._element.classList.remove(io), - d(this._element), - this._element.classList.add(no, so), - this._queueCallback((()=>{ - this._element.classList.remove(so), - N.trigger(this._element, eo), - this._maybeScheduleHide() - } - ), this._element, this._config.animation)) - } - hide() { - this.isShown() && (N.trigger(this._element, Js).defaultPrevented || (this._element.classList.add(so), - this._queueCallback((()=>{ - this._element.classList.add(io), - this._element.classList.remove(so, no), - N.trigger(this._element, Zs) - } - ), this._element, this._config.animation))) - } - dispose() { - this._clearTimeout(), - this.isShown() && this._element.classList.remove(no), - super.dispose() - } - isShown() { - return this._element.classList.contains(no) - } - _maybeScheduleHide() { - this._config.autohide && (this._hasMouseInteraction || this._hasKeyboardInteraction || (this._timeout = setTimeout((()=>{ - this.hide() - } - ), this._config.delay))) - } - _onInteraction(t, e) { - switch (t.type) { - case "mouseover": - case "mouseout": - this._hasMouseInteraction = e; - break; - case "focusin": - case "focusout": - this._hasKeyboardInteraction = e - } - if (e) - return void this._clearTimeout(); - const i = t.relatedTarget; - this._element === i || this._element.contains(i) || this._maybeScheduleHide() - } - _setListeners() { - N.on(this._element, Xs, (t=>this._onInteraction(t, !0))), - N.on(this._element, Ys, (t=>this._onInteraction(t, !1))), - N.on(this._element, Us, (t=>this._onInteraction(t, !0))), - N.on(this._element, Gs, (t=>this._onInteraction(t, !1))) - } - _clearTimeout() { - clearTimeout(this._timeout), - this._timeout = null - } - static jQueryInterface(t) { - return this.each((function() { - const e = ao.getOrCreateInstance(this, t); - if ("string" == typeof t) { - if (void 0 === e[t]) - throw new TypeError(`No method named "${t}"`); - e[t](this) - } - } - )) - } - } - return R(ao), - m(ao), - { - Alert: Q, - Button: Y, - Carousel: xt, - Collapse: Bt, - Dropdown: qi, - Modal: On, - Offcanvas: qn, - Popover: us, - ScrollSpy: Es, - Tab: Ks, - Toast: ao, - Tooltip: cs - } -} -)); -//# sourceMappingURL=bootstrap.bundle.min.js.map diff --git a/dashboard/js/bootstrap.min.js b/dashboard/js/bootstrap.min.js deleted file mode 100644 index 0317143e5a..0000000000 --- a/dashboard/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.2.3 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(t),s="transitionend",n=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},o=t=>{const e=n(t);return e&&document.querySelector(e)?e:null},r=t=>{const e=n(t);return e?document.querySelector(e):null},a=t=>{t.dispatchEvent(new Event(s))},l=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),c=t=>l(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,h=t=>{if(!l(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),u=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},_=()=>{},g=t=>{t.offsetHeight},f=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,p=[],m=()=>"rtl"===document.documentElement.dir,b=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,s=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=s,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of p)t()})),p.push(e)):e()},v=t=>{"function"==typeof t&&t()},y=(t,e,i=!0)=>{if(!i)return void v(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let o=!1;const r=({target:i})=>{i===e&&(o=!0,e.removeEventListener(s,r),v(t))};e.addEventListener(s,r),setTimeout((()=>{o||a(e)}),n)},w=(t,e,i,s)=>{const n=t.length;let o=t.indexOf(e);return-1===o?!i&&s?t[n-1]:t[0]:(o+=i?1:-1,s&&(o=(o+n)%n),t[Math.max(0,Math.min(o,n-1))])},A=/[^.]*(?=\..*)\.|.*/,E=/\..*/,C=/::\d+$/,T={};let k=1;const L={mouseenter:"mouseover",mouseleave:"mouseout"},O=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function I(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function S(t){const e=I(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function D(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function N(t,e,i){const s="string"==typeof e,n=s?i:e||i;let o=j(t);return O.has(o)||(o=t),[s,n,o]}function P(t,e,i,s,n){if("string"!=typeof e||!t)return;let[o,r,a]=N(e,i,s);if(e in L){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=S(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=I(r,e.replace(A,"")),u=o?function(t,e,i){return function s(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return F(n,{delegateTarget:r}),s.oneOff&&$.off(t,n.type,e,i),i.apply(r,[n])}}(t,i,r):function(t,e){return function i(s){return F(s,{delegateTarget:t}),i.oneOff&&$.off(t,s.type,e),e.apply(t,[s])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function x(t,e,i,s,n){const o=D(e[i],s,n);o&&(t.removeEventListener(i,o,Boolean(n)),delete e[i][o.uidEvent])}function M(t,e,i,s){const n=e[i]||{};for(const o of Object.keys(n))if(o.includes(s)){const s=n[o];x(t,e,i,s.callable,s.delegationSelector)}}function j(t){return t=t.replace(E,""),L[t]||t}const $={on(t,e,i,s){P(t,e,i,s,!1)},one(t,e,i,s){P(t,e,i,s,!0)},off(t,e,i,s){if("string"!=typeof e||!t)return;const[n,o,r]=N(e,i,s),a=r!==e,l=S(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))M(t,l,i,e.slice(1));for(const i of Object.keys(c)){const s=i.replace(C,"");if(!a||e.includes(s)){const e=c[i];x(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;x(t,l,r,o,n?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=f();let n=null,o=!0,r=!0,a=!1;e!==j(e)&&s&&(n=s.Event(e,i),s(t).trigger(n),o=!n.isPropagationStopped(),r=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=F(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function F(t,e){for(const[i,s]of Object.entries(e||{}))try{t[i]=s}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>s})}return t}const z=new Map,H={set(t,e,i){z.has(t)||z.set(t,new Map);const s=z.get(t);s.has(e)||0===s.size?s.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(t,e)=>z.has(t)&&z.get(t).get(e)||null,remove(t,e){if(!z.has(t))return;const i=z.get(t);i.delete(e),0===i.size&&z.delete(t)}};function q(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function B(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const W={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${B(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${B(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const s of i){let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=q(t.dataset[s])}return e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${B(e)}`))};class R{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=l(e)?W.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...l(e)?W.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const s of Object.keys(e)){const n=e[s],o=t[s],r=l(o)?"element":null==(i=o)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${r}" but expected type "${n}".`)}var i}}class V extends R{constructor(t,e){super(),(t=c(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),$.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){y(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(c(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const K=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;$.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),d(this))return;const n=r(this)||this.closest(`.${s}`);t.getOrCreateInstance(n)[e]()}))};class Q extends V{static get NAME(){return"alert"}close(){if($.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),$.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}K(Q,"close"),b(Q);const X='[data-bs-toggle="button"]';class Y extends V{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}$.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),b(Y);const U={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let s=t.parentNode.closest(e);for(;s;)i.push(s),s=s.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!d(t)&&h(t)))}},G={endCallback:null,leftCallback:null,rightCallback:null},J={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Z extends R{constructor(t,e){super(),this._element=t,t&&Z.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return G}static get DefaultType(){return J}static get NAME(){return"swipe"}dispose(){$.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),v(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&v(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?($.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),$.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):($.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),$.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),$.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const tt="next",et="prev",it="left",st="right",nt="slid.bs.carousel",ot="carousel",rt="active",at={ArrowLeft:st,ArrowRight:it},lt={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},ct={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class ht extends V{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=U.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===ot&&this.cycle()}static get Default(){return lt}static get DefaultType(){return ct}static get NAME(){return"carousel"}next(){this._slide(tt)}nextWhenVisible(){!document.hidden&&h(this._element)&&this.next()}prev(){this._slide(et)}pause(){this._isSliding&&a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?$.one(this._element,nt,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void $.one(this._element,nt,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const s=t>i?tt:et;this._slide(s,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&$.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&($.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),$.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&Z.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of U.find(".carousel-item img",this._element))$.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(it)),rightCallback:()=>this._slide(this._directionToOrder(st)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Z(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=at[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=U.findOne(".active",this._indicatorsElement);e.classList.remove(rt),e.removeAttribute("aria-current");const i=U.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(rt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),s=t===tt,n=e||w(this._getItems(),i,s,this._config.wrap);if(n===i)return;const o=this._getItemIndex(n),r=e=>$.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=n;const l=s?"carousel-item-start":"carousel-item-end",c=s?"carousel-item-next":"carousel-item-prev";n.classList.add(c),g(n),i.classList.add(l),n.classList.add(l),this._queueCallback((()=>{n.classList.remove(l,c),n.classList.add(rt),i.classList.remove(rt,c,l),this._isSliding=!1,r(nt)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return U.findOne(".active.carousel-item",this._element)}_getItems(){return U.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return m()?t===it?et:tt:t===it?tt:et}_orderToDirection(t){return m()?t===et?it:st:t===et?st:it}static jQueryInterface(t){return this.each((function(){const e=ht.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}$.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=r(this);if(!e||!e.classList.contains(ot))return;t.preventDefault();const i=ht.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===W.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),$.on(window,"load.bs.carousel.data-api",(()=>{const t=U.find('[data-bs-ride="carousel"]');for(const e of t)ht.getOrCreateInstance(e)})),b(ht);const dt="show",ut="collapse",_t="collapsing",gt='[data-bs-toggle="collapse"]',ft={parent:null,toggle:!0},pt={parent:"(null|element)",toggle:"boolean"};class mt extends V{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=U.find(gt);for(const t of i){const e=o(t),i=U.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ft}static get DefaultType(){return pt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>mt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if($.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ut),this._element.classList.add(_t),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_t),this._element.classList.add(ut,dt),this._element.style[e]="",$.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if($.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,g(this._element),this._element.classList.add(_t),this._element.classList.remove(ut,dt);for(const t of this._triggerArray){const e=r(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_t),this._element.classList.add(ut),$.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(dt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=c(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(gt);for(const e of t){const t=r(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=U.find(":scope .collapse .collapse",this._config.parent);return U.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=mt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}$.on(document,"click.bs.collapse.data-api",gt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=o(this),i=U.find(e);for(const t of i)mt.getOrCreateInstance(t,{toggle:!1}).toggle()})),b(mt);const bt="dropdown",vt="ArrowUp",yt="ArrowDown",wt="click.bs.dropdown.data-api",At="keydown.bs.dropdown.data-api",Et="show",Ct='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Tt=`${Ct}.show`,kt=".dropdown-menu",Lt=m()?"top-end":"top-start",Ot=m()?"top-start":"top-end",It=m()?"bottom-end":"bottom-start",St=m()?"bottom-start":"bottom-end",Dt=m()?"left-start":"right-start",Nt=m()?"right-start":"left-start",Pt={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},xt={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Mt extends V{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=U.next(this._element,kt)[0]||U.prev(this._element,kt)[0]||U.findOne(kt,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Pt}static get DefaultType(){return xt}static get NAME(){return bt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!$.trigger(this._element,"show.bs.dropdown",t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))$.on(t,"mouseover",_);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Et),this._element.classList.add(Et),$.trigger(this._element,"shown.bs.dropdown",t)}}hide(){if(d(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!$.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))$.off(t,"mouseover",_);this._popper&&this._popper.destroy(),this._menu.classList.remove(Et),this._element.classList.remove(Et),this._element.setAttribute("aria-expanded","false"),W.removeDataAttribute(this._menu,"popper"),$.trigger(this._element,"hidden.bs.dropdown",t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!l(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${bt.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:l(this._config.reference)?t=c(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=i.createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Et)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Dt;if(t.classList.contains("dropstart"))return Nt;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Ot:Lt:e?St:It}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(W.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=U.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>h(t)));i.length&&w(i,e,t===yt,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Mt.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=U.find(Tt);for(const i of e){const e=Mt.getInstance(i);if(!e||!1===e._config.autoClose)continue;const s=t.composedPath(),n=s.includes(e._menu);if(s.includes(e._element)||"inside"===e._config.autoClose&&!n||"outside"===e._config.autoClose&&n)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,s=[vt,yt].includes(t.key);if(!s&&!i)return;if(e&&!i)return;t.preventDefault();const n=this.matches(Ct)?this:U.prev(this,Ct)[0]||U.next(this,Ct)[0]||U.findOne(Ct,t.delegateTarget.parentNode),o=Mt.getOrCreateInstance(n);if(s)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),n.focus())}}$.on(document,At,Ct,Mt.dataApiKeydownHandler),$.on(document,At,kt,Mt.dataApiKeydownHandler),$.on(document,wt,Mt.clearMenus),$.on(document,"keyup.bs.dropdown.data-api",Mt.clearMenus),$.on(document,wt,Ct,(function(t){t.preventDefault(),Mt.getOrCreateInstance(this).toggle()})),b(Mt);const jt=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",$t=".sticky-top",Ft="padding-right",zt="margin-right";class Ht{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Ft,(e=>e+t)),this._setElementAttributes(jt,Ft,(e=>e+t)),this._setElementAttributes($t,zt,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Ft),this._resetElementAttributes(jt,Ft),this._resetElementAttributes($t,zt)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const s=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+s)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&W.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=W.getDataAttribute(t,e);null!==i?(W.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(l(t))e(t);else for(const i of U.find(t,this._element))e(i)}}const qt="show",Bt="mousedown.bs.backdrop",Wt={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Rt={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Vt extends R{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Wt}static get DefaultType(){return Rt}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void v(t);this._append();const e=this._getElement();this._config.isAnimated&&g(e),e.classList.add(qt),this._emulateAnimation((()=>{v(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(qt),this._emulateAnimation((()=>{this.dispose(),v(t)}))):v(t)}dispose(){this._isAppended&&($.off(this._element,Bt),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=c(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),$.on(t,Bt,(()=>{v(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const Kt=".bs.focustrap",Qt="backward",Xt={autofocus:!0,trapElement:null},Yt={autofocus:"boolean",trapElement:"element"};class Ut extends R{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Xt}static get DefaultType(){return Yt}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),$.off(document,Kt),$.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),$.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,$.off(document,Kt))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=U.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Qt?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Qt:"forward")}}const Gt="hidden.bs.modal",Jt="show.bs.modal",Zt="modal-open",te="show",ee="modal-static",ie={backdrop:!0,focus:!0,keyboard:!0},se={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class ne extends V{constructor(t,e){super(t,e),this._dialog=U.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ht,this._addEventListeners()}static get Default(){return ie}static get DefaultType(){return se}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||$.trigger(this._element,Jt,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Zt),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&($.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(te),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])$.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Vt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ut({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=U.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),g(this._element),this._element.classList.add(te),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,$.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){$.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),$.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),$.on(this._element,"mousedown.dismiss.bs.modal",(t=>{$.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Zt),this._resetAdjustments(),this._scrollBar.reset(),$.trigger(this._element,Gt)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if($.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(ee)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(ee),this._queueCallback((()=>{this._element.classList.remove(ee),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=m()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=m()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=ne.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}$.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=r(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),$.one(e,Jt,(t=>{t.defaultPrevented||$.one(e,Gt,(()=>{h(this)&&this.focus()}))}));const i=U.findOne(".modal.show");i&&ne.getInstance(i).hide(),ne.getOrCreateInstance(e).toggle(this)})),K(ne),b(ne);const oe="show",re="showing",ae="hiding",le=".offcanvas.show",ce="hidePrevented.bs.offcanvas",he="hidden.bs.offcanvas",de={backdrop:!0,keyboard:!0,scroll:!1},ue={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class _e extends V{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return de}static get DefaultType(){return ue}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||$.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ht).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(re),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(oe),this._element.classList.remove(re),$.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&($.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ae),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(oe,ae),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ht).reset(),$.trigger(this._element,he)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Vt({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():$.trigger(this._element,ce)}:null})}_initializeFocusTrap(){return new Ut({trapElement:this._element})}_addEventListeners(){$.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():$.trigger(this._element,ce))}))}static jQueryInterface(t){return this.each((function(){const e=_e.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}$.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=r(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;$.one(e,he,(()=>{h(this)&&this.focus()}));const i=U.findOne(le);i&&i!==e&&_e.getInstance(i).hide(),_e.getOrCreateInstance(e).toggle(this)})),$.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of U.find(le))_e.getOrCreateInstance(t).show()})),$.on(window,"resize.bs.offcanvas",(()=>{for(const t of U.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&_e.getOrCreateInstance(t).hide()})),K(_e),b(_e);const ge=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),fe=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,pe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,me=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!ge.has(i)||Boolean(fe.test(t.nodeValue)||pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},be={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},ve={allowList:be,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},ye={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},we={entry:"(string|element|function|null)",selector:"(string|element)"};class Ae extends R{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return ve}static get DefaultType(){return ye}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},we)}_setContent(t,e,i){const s=U.findOne(i,t);s&&((e=this._resolvePossibleFunction(e))?l(e)?this._putElementInTemplate(c(e),s):this._config.html?s.innerHTML=this._maybeSanitize(e):s.textContent=e:s.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const s=(new window.DOMParser).parseFromString(t,"text/html"),n=[].concat(...s.body.querySelectorAll("*"));for(const t of n){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const s=[].concat(...t.attributes),n=[].concat(e["*"]||[],e[i]||[]);for(const e of s)me(e,n)||t.removeAttribute(e.nodeName)}return s.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ee=new Set(["sanitize","allowList","sanitizeFn"]),Ce="fade",Te="show",ke=".modal",Le="hide.bs.modal",Oe="hover",Ie="focus",Se={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},De={allowList:be,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Ne={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Pe extends V{constructor(t,e){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return De}static get DefaultType(){return Ne}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),$.off(this._element.closest(ke),Le,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=$.trigger(this._element,this.constructor.eventName("show")),e=(u(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(i),$.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(Te),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))$.on(t,"mouseover",_);this._queueCallback((()=>{$.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!$.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(Te),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))$.off(t,"mouseover",_);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),$.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ce,Te),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Ce),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ae({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ce)}_isShown(){return this.tip&&this.tip.classList.contains(Te)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,s=Se[e.toUpperCase()];return i.createPopper(this._element,t,this._getPopperConfig(s))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)$.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Oe?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===Oe?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");$.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ie:Oe]=!0,e._enter()})),$.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ie:Oe]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},$.on(this._element.closest(ke),Le,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=W.getDataAttributes(this._element);for(const t of Object.keys(e))Ee.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:c(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Pe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Pe);const xe={...Pe.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},Me={...Pe.DefaultType,content:"(null|string|element|function)"};class je extends Pe{static get Default(){return xe}static get DefaultType(){return Me}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=je.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(je);const $e="click.bs.scrollspy",Fe="active",ze="[href]",He={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},qe={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Be extends V{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return He}static get DefaultType(){return qe}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=c(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&($.off(this._config.target,$e),$.on(this._config.target,$e,ze,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,s=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:s,behavior:"smooth"});i.scrollTop=s}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},s=(this._rootElement||document.documentElement).scrollTop,n=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&t){if(i(o),!s)return}else n||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=U.find(ze,this._config.target);for(const e of t){if(!e.hash||d(e))continue;const t=U.findOne(e.hash,this._element);h(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Fe),this._activateParents(t),$.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))U.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(Fe);else for(const e of U.parents(t,".nav, .list-group"))for(const t of U.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(Fe)}_clearActiveClass(t){t.classList.remove(Fe);const e=U.find("[href].active",t);for(const t of e)t.classList.remove(Fe)}static jQueryInterface(t){return this.each((function(){const e=Be.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}$.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of U.find('[data-bs-spy="scroll"]'))Be.getOrCreateInstance(t)})),b(Be);const We="ArrowLeft",Re="ArrowRight",Ve="ArrowUp",Ke="ArrowDown",Qe="active",Xe="fade",Ye="show",Ue='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ge=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${Ue}`;class Je extends V{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),$.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?$.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;$.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Qe),this._activate(r(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),$.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Ye)}),t,t.classList.contains(Xe)))}_deactivate(t,e){t&&(t.classList.remove(Qe),t.blur(),this._deactivate(r(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),$.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Ye)}),t,t.classList.contains(Xe)))}_keydown(t){if(![We,Re,Ve,Ke].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[Re,Ke].includes(t.key),i=w(this._getChildren().filter((t=>!d(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),Je.getOrCreateInstance(i).show())}_getChildren(){return U.find(Ge,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=r(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const s=(t,s)=>{const n=U.findOne(t,i);n&&n.classList.toggle(s,e)};s(".dropdown-toggle",Qe),s(".dropdown-menu",Ye),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Qe)}_getInnerElement(t){return t.matches(Ge)?t:U.findOne(Ge,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Je.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}$.on(document,"click.bs.tab",Ue,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this)||Je.getOrCreateInstance(this).show()})),$.on(window,"load.bs.tab",(()=>{for(const t of U.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))Je.getOrCreateInstance(t)})),b(Je);const Ze="hide",ti="show",ei="showing",ii={animation:"boolean",autohide:"boolean",delay:"number"},si={animation:!0,autohide:!0,delay:5e3};class ni extends V{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return si}static get DefaultType(){return ii}static get NAME(){return"toast"}show(){$.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ze),g(this._element),this._element.classList.add(ti,ei),this._queueCallback((()=>{this._element.classList.remove(ei),$.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&($.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(ei),this._queueCallback((()=>{this._element.classList.add(Ze),this._element.classList.remove(ei,ti),$.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(ti),super.dispose()}isShown(){return this._element.classList.contains(ti)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){$.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),$.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),$.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),$.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return K(ni),b(ni),{Alert:Q,Button:Y,Carousel:ht,Collapse:mt,Dropdown:Mt,Modal:ne,Offcanvas:_e,Popover:je,ScrollSpy:Be,Tab:Je,Toast:ni,Tooltip:Pe}})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/dashboard/js/copyToClipboard.js b/dashboard/js/copyToClipboard.js deleted file mode 100644 index ffafa7147f..0000000000 --- a/dashboard/js/copyToClipboard.js +++ /dev/null @@ -1,14 +0,0 @@ -$(document).ready(function () { - $(document).on('click', '.copyToClipboard', function () { - var copyText = $(this).attr('data-copy'); - var $temp = $(""); - $("body").append($temp); - $temp.val(copyText).select(); - document.execCommand("copy"); - $temp.remove(); - $.createToast({ - message: 'Copied to clipboard', - type: 'success' - }); - }); -}); \ No newline at end of file diff --git a/dashboard/js/hwt.js b/dashboard/js/hwt.js deleted file mode 100644 index 233da62910..0000000000 --- a/dashboard/js/hwt.js +++ /dev/null @@ -1,383 +0,0 @@ -/* - * highlight-within-textarea - * - * @author Will Boyd - * @github https://github.com/lonekorean/highlight-within-textarea - */ - -(function ($) { - let ID = 'hwt'; - - let HighlightWithinTextarea = function ($el, config) { - this.init($el, config); - }; - - HighlightWithinTextarea.prototype = { - init: function ($el, config) { - this.$el = $el; - - // backwards compatibility with v1 (deprecated) - if (this.getType(config) === 'function') { - config = { highlight: config }; - } - - if (this.getType(config) === 'custom') { - this.highlight = config; - this.generate(); - } else { - console.error('valid config object not provided'); - } - }, - - // returns identifier strings that aren't necessarily "real" JavaScript types - getType: function (instance) { - let type = typeof instance; - if (!instance) { - return 'falsey'; - } else if (Array.isArray(instance)) { - if (instance.length === 2 && typeof instance[0] === 'number' && typeof instance[1] === 'number') { - return 'range'; - } else { - return 'array'; - } - } else if (type === 'object') { - if (instance instanceof RegExp) { - return 'regexp'; - } else if (instance.hasOwnProperty('highlight')) { - return 'custom'; - } - } else if (type === 'function' || type === 'string') { - return type; - } - - return 'other'; - }, - - generate: function () { - this.$el - .addClass(ID + '-input ' + ID + '-content') - .on('input.' + ID, this.handleInput.bind(this)) - .on('scroll.' + ID, this.handleScroll.bind(this)); - - this.$highlights = $('
', { class: ID + '-highlights ' + ID + '-content' }); - - this.$backdrop = $('
', { class: ID + '-backdrop' }) - .append(this.$highlights); - - this.$container = $('
', { class: ID + '-container' }) - .insertAfter(this.$el) - .append(this.$backdrop, this.$el) // moves $el into $container - .on('scroll', this.blockContainerScroll.bind(this)); - - this.browser = this.detectBrowser(); - switch (this.browser) { - case 'firefox': - this.fixFirefox(); - break; - case 'ios': - this.fixIOS(); - break; - } - - // plugin function checks this for success - this.isGenerated = true; - - // trigger input event to highlight any existing input - this.handleInput(); - }, - - // browser sniffing sucks, but there are browser-specific quirks to handle - // that are not a matter of feature detection - detectBrowser: function () { - let ua = window.navigator.userAgent.toLowerCase(); - if (ua.indexOf('firefox') !== -1) { - return 'firefox'; - } - else if (!!ua.match(/msie|trident\/7|edge/)) { - return 'ie'; - } - else if (!!ua.match(/ipad|iphone|ipod/) && ua.indexOf('windows phone') === -1) { - // Windows Phone flags itself as "like iPhone", thus the extra check - return 'ios'; - } - else { - return 'other'; - } - }, - - // Firefox doesn't show text that scrolls into the padding of a textarea, so - // rearrange a couple box models to make highlights behave the same way - fixFirefox: function () { - // take padding and border pixels from highlights div - let padding = this.$highlights.css([ - 'padding-top', 'padding-right', 'padding-bottom', 'padding-left' - ]); - let border = this.$highlights.css([ - 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width' - ]); - this.$highlights.css({ - 'padding': '0', - 'border-width': '0' - }); - - this.$backdrop - .css({ - // give padding pixels to backdrop div - 'margin-top': '+=' + padding['padding-top'], - 'margin-right': '+=' + padding['padding-right'], - 'margin-bottom': '+=' + padding['padding-bottom'], - 'margin-left': '+=' + padding['padding-left'], - }) - .css({ - // give border pixels to backdrop div - 'margin-top': '+=' + border['border-top-width'], - 'margin-right': '+=' + border['border-right-width'], - 'margin-bottom': '+=' + border['border-bottom-width'], - 'margin-left': '+=' + border['border-left-width'], - }); - }, - - // iOS adds 3px of (unremovable) padding to the left and right of a textarea, - // so adjust highlights div to match - fixIOS: function () { - this.$highlights.css({ - 'padding-left': '+=3px', - 'padding-right': '+=3px' - }); - }, - - handleInput: function () { - let input = this.$el.val(); - let ranges = this.getRanges(input, this.highlight); - let unstaggeredRanges = this.removeStaggeredRanges(ranges); - let boundaries = this.getBoundaries(unstaggeredRanges); - this.renderMarks(boundaries); - }, - - getRanges: function (input, highlight) { - let type = this.getType(highlight); - switch (type) { - case 'array': - return this.getArrayRanges(input, highlight); - case 'function': - return this.getFunctionRanges(input, highlight); - case 'regexp': - return this.getRegExpRanges(input, highlight); - case 'string': - return this.getStringRanges(input, highlight); - case 'range': - return this.getRangeRanges(input, highlight); - case 'custom': - return this.getCustomRanges(input, highlight); - default: - if (!highlight) { - // do nothing for falsey values - return []; - } else { - console.error('unrecognized highlight type'); - } - } - }, - - getArrayRanges: function (input, arr) { - let ranges = arr.map(this.getRanges.bind(this, input)); - return Array.prototype.concat.apply([], ranges); - }, - - getFunctionRanges: function (input, func) { - return this.getRanges(input, func(input)); - }, - - getRegExpRanges: function (input, regex) { - let ranges = []; - let match; - while (match = regex.exec(input), match !== null) { - ranges.push([match.index, match.index + match[0].length]); - if (!regex.global) { - // non-global regexes do not increase lastIndex, causing an infinite loop, - // but we can just break manually after the first match - break; - } - } - return ranges; - }, - - getStringRanges: function (input, str) { - let ranges = []; - let inputLower = input.toLowerCase(); - let strLower = str.toLowerCase(); - let index = 0; - while (index = inputLower.indexOf(strLower, index), index !== -1) { - ranges.push([index, index + strLower.length]); - index += strLower.length; - } - return ranges; - }, - - getRangeRanges: function (input, range) { - return [range]; - }, - - getCustomRanges: function (input, custom) { - let ranges = this.getRanges(input, custom.highlight); - if (custom.className) { - ranges.forEach(function (range) { - // persist class name as a property of the array - if (range.className) { - range.className = custom.className + ' ' + range.className; - } else { - range.className = custom.className; - } - }); - } - return ranges; - }, - - // prevent staggered overlaps (clean nesting is fine) - removeStaggeredRanges: function (ranges) { - let unstaggeredRanges = []; - ranges.forEach(function (range) { - let isStaggered = unstaggeredRanges.some(function (unstaggeredRange) { - let isStartInside = range[0] > unstaggeredRange[0] && range[0] < unstaggeredRange[1]; - let isStopInside = range[1] > unstaggeredRange[0] && range[1] < unstaggeredRange[1]; - return isStartInside !== isStopInside; // xor - }); - if (!isStaggered) { - unstaggeredRanges.push(range); - } - }); - return unstaggeredRanges; - }, - - getBoundaries: function (ranges) { - let boundaries = []; - ranges.forEach(function (range) { - boundaries.push({ - type: 'start', - index: range[0], - className: range.className - }); - boundaries.push({ - type: 'stop', - index: range[1] - }); - }); - - this.sortBoundaries(boundaries); - return boundaries; - }, - - sortBoundaries: function (boundaries) { - // backwards sort (since marks are inserted right to left) - boundaries.sort(function (a, b) { - if (a.index !== b.index) { - return b.index - a.index; - } else if (a.type === 'stop' && b.type === 'start') { - return 1; - } else if (a.type === 'start' && b.type === 'stop') { - return -1; - } else { - return 0; - } - }); - }, - - renderMarks: function (boundaries) { - let input = this.$el.val(); - boundaries.forEach(function (boundary, index) { - let markup; - if (boundary.type === 'start') { - markup = '{{hwt-mark-start|' + index + '}}'; - } else { - markup = '{{hwt-mark-stop}}'; - } - input = input.slice(0, boundary.index) + markup + input.slice(boundary.index); - }); - - // this keeps scrolling aligned when input ends with a newline - input = input.replace(/\n(\{\{hwt-mark-stop\}\})?$/, '\n\n$1'); - - // encode HTML entities - input = input.replace(//g, '>'); - - if (this.browser === 'ie') { - // IE/Edge wraps whitespace differently in a div vs textarea, this fixes it - input = input.replace(/ /g, ' '); - } - - // replace start tokens with opening tags with class name - input = input.replace(/\{\{hwt-mark-start\|(\d+)\}\}/g, function (match, submatch) { - var className = boundaries[+submatch].className; - if (className) { - return ''; - } else { - return ''; - } - }); - - // replace stop tokens with closing tags - input = input.replace(/\{\{hwt-mark-stop\}\}/g, ''); - - this.$highlights.html(input); - }, - - handleScroll: function () { - let scrollTop = this.$el.scrollTop(); - this.$backdrop.scrollTop(scrollTop); - - // Chrome and Safari won't break long strings of spaces, which can cause - // horizontal scrolling, this compensates by shifting highlights by the - // horizontally scrolled amount to keep things aligned - let scrollLeft = this.$el.scrollLeft(); - this.$backdrop.css('transform', (scrollLeft > 0) ? 'translateX(' + -scrollLeft + 'px)' : ''); - }, - - // in Chrome, page up/down in the textarea will shift stuff within the - // container (despite the CSS), this immediately reverts the shift - blockContainerScroll: function () { - this.$container.scrollLeft(0); - }, - - destroy: function () { - this.$backdrop.remove(); - this.$el - .unwrap() - .removeClass(ID + '-text ' + ID + '-input') - .off(ID) - .removeData(ID); - }, - }; - - // register the jQuery plugin - $.fn.highlightWithinTextarea = function (options) { - return this.each(function () { - let $this = $(this); - let plugin = $this.data(ID); - - if (typeof options === 'string') { - if (plugin) { - switch (options) { - case 'update': - plugin.handleInput(); - break; - case 'destroy': - plugin.destroy(); - break; - default: - console.error('unrecognized method string'); - } - } else { - console.error('plugin must be instantiated first'); - } - } else { - if (plugin) { - plugin.destroy(); - } - plugin = new HighlightWithinTextarea($this, options); - if (plugin.isGenerated) { - $this.data(ID, plugin); - } - } - }); - }; -})(jQuery); \ No newline at end of file diff --git a/dashboard/js/jquery.highlight-within-textarea.js b/dashboard/js/jquery.highlight-within-textarea.js deleted file mode 100644 index 283a0402c7..0000000000 --- a/dashboard/js/jquery.highlight-within-textarea.js +++ /dev/null @@ -1,380 +0,0 @@ -/* - * highlight-within-textarea - * - * @author Will Boyd - * @github https://github.com/lonekorean/highlight-within-textarea - */ - -(function($) { - let ID = 'hwt'; - - let HighlightWithinTextarea = function($el, config) { - this.init($el, config); - }; - - HighlightWithinTextarea.prototype = { - init: function($el, config) { - this.$el = $el; - - // backwards compatibility with v1 (deprecated) - if (this.getType(config) === 'function') { - config = { highlight: config }; - } - - if (this.getType(config) === 'custom') { - this.highlight = config; - this.generate(); - } else { - console.error('valid config object not provided'); - } - }, - - // returns identifier strings that aren't necessarily "real" JavaScript types - getType: function(instance) { - let type = typeof instance; - if (!instance) { - return 'falsey'; - } else if (Array.isArray(instance)) { - if (instance.length === 2 && typeof instance[0] === 'number' && typeof instance[1] === 'number') { - return 'range'; - } else { - return 'array'; - } - } else if (type === 'object') { - if (instance instanceof RegExp) { - return 'regexp'; - } else if (instance.hasOwnProperty('highlight')) { - return 'custom'; - } - } else if (type === 'function' || type === 'string') { - return type; - } - - return 'other'; - }, - - generate: function() { - this.$el - .addClass(ID + '-input ' + ID + '-content') - .on('input.' + ID, this.handleInput.bind(this)) - .on('scroll.' + ID, this.handleScroll.bind(this)); - - this.$highlights = $('
', { class: ID + '-highlights ' + ID + '-content' }); - - this.$backdrop = $('
', { class: ID + '-backdrop' }) - .append(this.$highlights); - - this.$container = $('
', { class: ID + '-container' }) - .insertAfter(this.$el) - .append(this.$backdrop, this.$el) // moves $el into $container - .on('scroll', this.blockContainerScroll.bind(this)); - - this.browser = this.detectBrowser(); - switch (this.browser) { - case 'firefox': - this.fixFirefox(); - break; - case 'ios': - this.fixIOS(); - break; - } - - // plugin function checks this for success - this.isGenerated = true; - - // trigger input event to highlight any existing input - this.handleInput(); - }, - - // browser sniffing sucks, but there are browser-specific quirks to handle - // that are not a matter of feature detection - detectBrowser: function() { - let ua = window.navigator.userAgent.toLowerCase(); - if (ua.indexOf('firefox') !== -1) { - return 'firefox'; - } else if (!!ua.match(/msie|trident\/7|edge/)) { - return 'ie'; - } else if (!!ua.match(/ipad|iphone|ipod/) && ua.indexOf('windows phone') === -1) { - // Windows Phone flags itself as "like iPhone", thus the extra check - return 'ios'; - } else { - return 'other'; - } - }, - - // Firefox doesn't show text that scrolls into the padding of a textarea, so - // rearrange a couple box models to make highlights behave the same way - fixFirefox: function() { - // take padding and border pixels from highlights div - let padding = this.$highlights.css([ - 'padding-top', 'padding-right', 'padding-bottom', 'padding-left' - ]); - let border = this.$highlights.css([ - 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width' - ]); - this.$highlights.css({ - 'padding': '0', - 'border-width': '0' - }); - - this.$backdrop - .css({ - // give padding pixels to backdrop div - 'margin-top': '+=' + padding['padding-top'], - 'margin-right': '+=' + padding['padding-right'], - 'margin-bottom': '+=' + padding['padding-bottom'], - 'margin-left': '+=' + padding['padding-left'], - }) - .css({ - // give border pixels to backdrop div - 'margin-top': '+=' + border['border-top-width'], - 'margin-right': '+=' + border['border-right-width'], - 'margin-bottom': '+=' + border['border-bottom-width'], - 'margin-left': '+=' + border['border-left-width'], - }); - }, - - // iOS adds 3px of (unremovable) padding to the left and right of a textarea, - // so adjust highlights div to match - fixIOS: function() { - this.$highlights.css({ - 'padding-left': '+=3px', - 'padding-right': '+=3px' - }); - }, - - handleInput: function() { - let input = this.$el.val(); - let ranges = this.getRanges(input, this.highlight); - let unstaggeredRanges = this.removeStaggeredRanges(ranges); - let boundaries = this.getBoundaries(unstaggeredRanges); - this.renderMarks(boundaries); - }, - - getRanges: function(input, highlight) { - let type = this.getType(highlight); - switch (type) { - case 'array': - return this.getArrayRanges(input, highlight); - case 'function': - return this.getFunctionRanges(input, highlight); - case 'regexp': - return this.getRegExpRanges(input, highlight); - case 'string': - return this.getStringRanges(input, highlight); - case 'range': - return this.getRangeRanges(input, highlight); - case 'custom': - return this.getCustomRanges(input, highlight); - default: - if (!highlight) { - // do nothing for falsey values - return []; - } else { - console.error('unrecognized highlight type'); - } - } - }, - - getArrayRanges: function(input, arr) { - let ranges = arr.map(this.getRanges.bind(this, input)); - return Array.prototype.concat.apply([], ranges); - }, - - getFunctionRanges: function(input, func) { - return this.getRanges(input, func(input)); - }, - - getRegExpRanges: function(input, regex) { - let ranges = []; - let match; - while (match = regex.exec(input), match !== null) { - ranges.push([match.index, match.index + match[0].length]); - if (!regex.global) { - // non-global regexes do not increase lastIndex, causing an infinite loop, - // but we can just break manually after the first match - break; - } - } - return ranges; - }, - - getStringRanges: function(input, str) { - let ranges = []; - let inputLower = input.toLowerCase(); - let strLower = str.toLowerCase(); - let index = 0; - while (index = inputLower.indexOf(strLower, index), index !== -1) { - ranges.push([index, index + strLower.length]); - index += strLower.length; - } - return ranges; - }, - - getRangeRanges: function(input, range) { - return [range]; - }, - - getCustomRanges: function(input, custom) { - let ranges = this.getRanges(input, custom.highlight); - if (custom.className) { - ranges.forEach(function(range) { - // persist class name as a property of the array - if (range.className) { - range.className = custom.className + ' ' + range.className; - } else { - range.className = custom.className; - } - }); - } - return ranges; - }, - - // prevent staggered overlaps (clean nesting is fine) - removeStaggeredRanges: function(ranges) { - let unstaggeredRanges = []; - ranges.forEach(function(range) { - let isStaggered = unstaggeredRanges.some(function(unstaggeredRange) { - let isStartInside = range[0] > unstaggeredRange[0] && range[0] < unstaggeredRange[1]; - let isStopInside = range[1] > unstaggeredRange[0] && range[1] < unstaggeredRange[1]; - return isStartInside !== isStopInside; // xor - }); - if (!isStaggered) { - unstaggeredRanges.push(range); - } - }); - return unstaggeredRanges; - }, - - getBoundaries: function(ranges) { - let boundaries = []; - ranges.forEach(function(range) { - boundaries.push({ - type: 'start', - index: range[0], - className: range.className - }); - boundaries.push({ - type: 'stop', - index: range[1] - }); - }); - - this.sortBoundaries(boundaries); - return boundaries; - }, - - sortBoundaries: function(boundaries) { - // backwards sort (since marks are inserted right to left) - boundaries.sort(function(a, b) { - if (a.index !== b.index) { - return b.index - a.index; - } else if (a.type === 'stop' && b.type === 'start') { - return 1; - } else if (a.type === 'start' && b.type === 'stop') { - return -1; - } else { - return 0; - } - }); - }, - - renderMarks: function(boundaries) { - let input = this.$el.val(); - boundaries.forEach(function(boundary, index) { - let markup; - if (boundary.type === 'start') { - markup = '{{hwt-mark-start|' + index + '}}'; - } else { - markup = '{{hwt-mark-stop}}'; - } - input = input.slice(0, boundary.index) + markup + input.slice(boundary.index); - }); - - // this keeps scrolling aligned when input ends with a newline - input = input.replace(/\n(\{\{hwt-mark-stop\}\})?$/, '\n\n$1'); - - // encode HTML entities - input = input.replace(//g, '>'); - - if (this.browser === 'ie') { - // IE/Edge wraps whitespace differently in a div vs textarea, this fixes it - input = input.replace(/ /g, ' '); - } - - // replace start tokens with opening tags with class name - input = input.replace(/\{\{hwt-mark-start\|(\d+)\}\}/g, function(match, submatch) { - var className = boundaries[+submatch].className; - if (className) { - return ''; - } else { - return ''; - } - }); - - // replace stop tokens with closing tags - input = input.replace(/\{\{hwt-mark-stop\}\}/g, ''); - - this.$highlights.html(input); - }, - - handleScroll: function() { - let scrollTop = this.$el.scrollTop(); - this.$backdrop.scrollTop(scrollTop); - - // Chrome and Safari won't break long strings of spaces, which can cause - // horizontal scrolling, this compensates by shifting highlights by the - // horizontally scrolled amount to keep things aligned - let scrollLeft = this.$el.scrollLeft(); - this.$backdrop.css('transform', (scrollLeft > 0) ? 'translateX(' + -scrollLeft + 'px)' : ''); - }, - - // in Chrome, page up/down in the textarea will shift stuff within the - // container (despite the CSS), this immediately reverts the shift - blockContainerScroll: function() { - this.$container.scrollLeft(0); - }, - - destroy: function() { - this.$backdrop.remove(); - this.$el - .unwrap() - .removeClass(ID + '-text ' + ID + '-input') - .off(ID) - .removeData(ID); - }, - }; - - // register the jQuery plugin - $.fn.highlightWithinTextarea = function(options) { - return this.each(function() { - let $this = $(this); - let plugin = $this.data(ID); - - if (typeof options === 'string') { - if (plugin) { - switch (options) { - case 'update': - plugin.handleInput(); - break; - case 'destroy': - plugin.destroy(); - break; - default: - console.error('unrecognized method string'); - } - } else { - console.error('plugin must be instantiated first'); - } - } else { - if (plugin) { - plugin.destroy(); - } - plugin = new HighlightWithinTextarea($this, options); - if (plugin.isGenerated) { - $this.data(ID, plugin); - } - } - }); - }; -})(jQuery); \ No newline at end of file diff --git a/dashboard/js/list.min.js b/dashboard/js/list.min.js deleted file mode 100644 index 81318815c9..0000000000 --- a/dashboard/js/list.min.js +++ /dev/null @@ -1,2 +0,0 @@ -var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s{ - "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", e) : setTimeout(e, 1); - } - ; - const toggleColor = (e,t)=>"light" === window.config.config.phoenixTheme ? e : t; - const resize = e=>window.addEventListener("resize", e); - const isIterableArray = e=>Array.isArray(e) && !!e.length; - const camelize = e=>{ - const t = e.replace(/[-_\s.]+(.)?/g, ((e,t)=>t ? t.toUpperCase() : "")); - return `${t.substr(0, 1).toLowerCase()}${t.substr(1)}` - } - ; - const getData = (e,t)=>{ - try { - return JSON.parse(e.dataset[camelize(t)]) - } catch (o) { - return e.dataset[camelize(t)] - } - } - ; - const hexToRgb = e=>{ - let t; - t = 0 === e.indexOf("#") ? e.substring(1) : e; - const o = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, ((e,t,o,r)=>t + t + o + o + r + r))); - return o ? [parseInt(o[1], 16), parseInt(o[2], 16), parseInt(o[3], 16)] : null - } - ; - const rgbaColor = (e="#fff",t=.5)=>`rgba(${hexToRgb(e)}, ${t})`; - const getColor = (e,t=document.documentElement)=>getComputedStyle(t).getPropertyValue(`--phoenix-${e}`).trim(); - const hasClass = (e,t)=>e.classList.value.includes(t); - const addClass = (e,t)=>{ - e.classList.add(t); - } - ; - const getOffset = e=>{ - const t = e.getBoundingClientRect() - , o = window.pageXOffset || document.documentElement.scrollLeft - , r = window.pageYOffset || document.documentElement.scrollTop; - return { - top: t.top + r, - left: t.left + o - } - } - ; - const isScrolledIntoView = e=>{ - let t = e.offsetTop - , o = e.offsetLeft; - const r = e.offsetWidth - , s = e.offsetHeight; - for (; e.offsetParent; ) - t += (e = e.offsetParent).offsetTop, - o += e.offsetLeft; - return { - all: t >= window.pageYOffset && o >= window.pageXOffset && t + s <= window.pageYOffset + window.innerHeight && o + r <= window.pageXOffset + window.innerWidth, - partial: t < window.pageYOffset + window.innerHeight && o < window.pageXOffset + window.innerWidth && t + s > window.pageYOffset && o + r > window.pageXOffset - } - } - ; - const breakpoints = { - xs: 0, - sm: 576, - md: 768, - lg: 992, - xl: 1200, - xxl: 1540 - }; - const getBreakpoint = e=>{ - const t = e && e.classList.value; - let o; - return t && (o = breakpoints[t.split(" ").filter((e=>e.includes("navbar-expand-"))).pop().split("-").pop()]), - o - } - ; - const setCookie = (e,t,o)=>{ - const r = new Date; - r.setTime(r.getTime() + o), - document.cookie = e + "=" + t + ";expires=" + r.toUTCString(); - } - ; - const getCookie = e=>{ - var t = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)"); - return t ? t[2] : t - } - ; - const settings = { - tinymce: { - theme: "oxide" - }, - chart: { - borderColor: "rgba(255, 255, 255, 0.8)" - } - }; - const newChart = (e,t)=>{ - const o = e.getContext("2d"); - return new window.Chart(o,t) - } - ; - const getItemFromStore = (e,t,o=localStorage)=>{ - try { - return JSON.parse(o.getItem(e)) || t - } catch { - return o.getItem(e) || t - } - } - ; - const setItemToStore = (e,t,o=localStorage)=>o.setItem(e, t); - const getStoreSpace = (e=localStorage)=>parseFloat((escape(encodeURIComponent(JSON.stringify(e))).length / 1048576).toFixed(2)); - const getDates = (e,t,o=864e5)=>{ - const r = (t - e) / o; - return Array.from({ - length: r + 1 - }, ((t,r)=>new Date(e.valueOf() + o * r))) - } - ; - const getPastDates = e=>{ - let t; - switch (e) { - case "week": - t = 7; - break; - case "month": - t = 30; - break; - case "year": - t = 365; - break; - default: - t = e; - } - const o = new Date - , r = o - , s = new Date((new Date).setDate(o.getDate() - (t - 1))); - return getDates(s, r) - } - ; - const getRandomNumber = (e,t)=>Math.floor(Math.random() * (t - e) + e); - var utils = { - docReady: docReady, - toggleColor: toggleColor, - resize: resize, - isIterableArray: isIterableArray, - camelize: camelize, - getData: getData, - hasClass: hasClass, - addClass: addClass, - hexToRgb: hexToRgb, - rgbaColor: rgbaColor, - getColor: getColor, - breakpoints: breakpoints, - getOffset: getOffset, - isScrolledIntoView: isScrolledIntoView, - getBreakpoint: getBreakpoint, - setCookie: setCookie, - getCookie: getCookie, - newChart: newChart, - settings: settings, - getItemFromStore: getItemFromStore, - setItemToStore: setItemToStore, - getStoreSpace: getStoreSpace, - getDates: getDates, - getPastDates: getPastDates, - getRandomNumber: getRandomNumber - }; - - const docComponentInit = ()=>{ - const e = document.querySelectorAll("[data-component-card]") - , o = document.getElementById("icon-copied-toast") - , t = new bootstrap.Toast(o); - e.forEach((e=>{ - const c = e.querySelector(".copy-code-btn") - , n = e.querySelector(".code-to-copy") - , d = e.querySelector(".preview-btn") - , r = e.querySelector(".code-collapse") - , l = bootstrap.Collapse.getOrCreateInstance(r, { - toggle: !1 - }); - d?.addEventListener("click", (()=>{ - l.toggle(); - } - )), - c?.addEventListener("click", (()=>{ - const e = document.createElement("textarea"); - e.value = n.innerHTML, - document.body.appendChild(e), - e.select(), - document.execCommand("copy"), - document.body.removeChild(e), - o.querySelector(".toast-body").innerHTML = "Code has been copied to clipboard.", - t.show(); - } - )); - } - )); - } - ; - - const orders = [{ - id: 1, - dropdownId: "order-dropdown-1", - orderId: "#2181", - mailLink: "mailto:carry@example.com", - customer: "Carry Anna", - date: "10/03/2023", - address: "Carry Anna, 2392 Main Avenue, Penasauka, New Jersey 02149", - deliveryType: "Cash on Delivery", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$99" - }, { - id: 2, - dropdownId: "order-dropdown-2", - orderId: "#2182", - mailLink: "mailto:milind@example.com", - customer: "Milind Mikuja", - date: "10/03/2023", - address: "Milind Mikuja, 1 Hollywood Blvd,Beverly Hills, California 90210", - deliveryType: "Cash on Delivery", - status: "Processing", - badge: { - type: "primary", - icon: "fas fa-redo" - }, - amount: "$120" - }, { - id: 3, - dropdownId: "order-dropdown-3", - orderId: "#2183", - mailLink: "mailto:stanly@example.com", - customer: "Stanly Drinkwater", - date: "30/04/2023", - address: "Stanly Drinkwater, 1 Infinite Loop, Cupertino, California 90210", - deliveryType: "Local Delivery", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$70" - }, { - id: 4, - dropdownId: "order-dropdown-4", - orderId: "#2184", - mailLink: "mailto:bucky@example.com", - customer: "Bucky Robert", - date: "30/04/2023", - address: "Bucky Robert, 1 Infinite Loop, Cupertino, California 90210", - deliveryType: "Free Shipping", - status: "Pending", - badge: { - type: "warning", - icon: "fas fa-stream" - }, - amount: "$92" - }, { - id: 5, - dropdownId: "order-dropdown-5", - orderId: "#2185", - mailLink: "mailto:josef@example.com", - customer: "Josef Stravinsky", - date: "30/04/2023", - address: "Josef Stravinsky, 1 Infinite Loop, Cupertino, California 90210", - deliveryType: "Via Free Road", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$120" - }, { - id: 6, - dropdownId: "order-dropdown-6", - orderId: "#2186", - mailLink: "mailto:igor@example.com", - customer: "Igor Borvibson", - date: "30/04/2023", - address: "Igor Borvibson, 1 Infinite Loop, Cupertino, California 90210", - deliveryType: "Free Shipping", - status: "Processing", - badge: { - type: "primary", - icon: "fas fa-redo" - }, - amount: "$145" - }, { - id: 7, - dropdownId: "order-dropdown-7", - orderId: "#2187", - mailLink: "mailto:katerina@example.com", - customer: "Katerina Karenin", - date: "30/04/2023", - address: "Katerina Karenin, 1 Infinite Loop, Cupertino, California 90210", - deliveryType: "Flat Rate", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$55" - }, { - id: 8, - dropdownId: "order-dropdown-8", - orderId: "#2188", - mailLink: "mailto:roy@example.com", - customer: "Roy Anderson", - date: "29/04/2023", - address: "Roy Anderson, 1 Infinite Loop, Cupertino, California 90210", - deliveryType: "Local Delivery", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$90" - }, { - id: 9, - dropdownId: "order-dropdown-9", - orderId: "#2189", - mailLink: "mailto:Stephenson@example.com", - customer: "Thomas Stephenson", - date: "29/04/2023", - address: "Thomas Stephenson, 116 Ballifeary Road, Bamff", - deliveryType: "Flat Rate", - status: "Processing", - badge: { - type: "primary", - icon: "fas fa-redo" - }, - amount: "$52" - }, { - id: 10, - dropdownId: "order-dropdown-10", - orderId: "#2190", - mailLink: "mailto:eviewsing@example.com", - customer: "Evie Singh", - date: "29/04/2023", - address: "Evie Singh, 54 Castledore Road, Tunstead", - deliveryType: "Flat Rate", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$90" - }, { - id: 11, - dropdownId: "order-dropdown-11", - orderId: "#2191", - mailLink: "mailto:peter@example.com", - customer: "David Peters", - date: "29/04/2023", - address: "David Peters, Rhyd Y Groes, Rhosgoch, LL66 0AT", - deliveryType: "Local Delivery", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$69" - }, { - id: 12, - dropdownId: "order-dropdown-12", - orderId: "#2192", - mailLink: "mailto:jennifer@example.com", - customer: "Jennifer Johnson", - date: "28/04/2023", - address: "Jennifer Johnson, Rhyd Y Groes, Rhosgoch, LL66 0AT", - deliveryType: "Flat Rate", - status: "Processing", - badge: { - type: "primary", - icon: "fas fa-redo" - }, - amount: "$112" - }, { - id: 13, - dropdownId: "order-dropdown-13", - orderId: "#2193", - mailLink: "mailto:okuneva@example.com", - customer: "Demarcus Okuneva", - date: "28/04/2023", - address: "Demarcus Okuneva, 90555 Upton Drive Jeffreyview, UT 08771", - deliveryType: "Flat Rate", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$99" - }, { - id: 14, - dropdownId: "order-dropdown-14", - orderId: "#2194", - mailLink: "mailto:simeon@example.com", - customer: "Simeon Harber", - date: "27/04/2023", - address: "Simeon Harber, 702 Kunde Plain Apt. 634 East Bridgetview, HI 13134-1862", - deliveryType: "Free Shipping", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$129" - }, { - id: 15, - dropdownId: "order-dropdown-15", - orderId: "#2195", - mailLink: "mailto:lavon@example.com", - customer: "Lavon Haley", - date: "27/04/2023", - address: "Lavon Haley, 30998 Adonis Locks McGlynnside, ID 27241", - deliveryType: "Free Shipping", - status: "Pending", - badge: { - type: "warning", - icon: "fas fa-stream" - }, - amount: "$70" - }, { - id: 16, - dropdownId: "order-dropdown-16", - orderId: "#2196", - mailLink: "mailto:ashley@example.com", - customer: "Ashley Kirlin", - date: "26/04/2023", - address: "Ashley Kirlin, 43304 Prosacco Shore South Dejuanfurt, MO 18623-0505", - deliveryType: "Local Delivery", - status: "Processing", - badge: { - type: "primary", - icon: "fas fa-redo" - }, - amount: "$39" - }, { - id: 17, - dropdownId: "order-dropdown-17", - orderId: "#2197", - mailLink: "mailto:johnnie@example.com", - customer: "Johnnie Considine", - date: "26/04/2023", - address: "Johnnie Considine, 6008 Hermann Points Suite 294 Hansenville, TN 14210", - deliveryType: "Flat Rate", - status: "Pending", - badge: { - type: "warning", - icon: "fas fa-stream" - }, - amount: "$70" - }, { - id: 18, - dropdownId: "order-dropdown-18", - orderId: "#2198", - mailLink: "mailto:trace@example.com", - customer: "Trace Farrell", - date: "26/04/2023", - address: "Trace Farrell, 431 Steuber Mews Apt. 252 Germanland, AK 25882", - deliveryType: "Free Shipping", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$70" - }, { - id: 19, - dropdownId: "order-dropdown-19", - orderId: "#2199", - mailLink: "mailto:nienow@example.com", - customer: "Estell Nienow", - date: "26/04/2023", - address: "Estell Nienow, 4167 Laverna Manor Marysemouth, NV 74590", - deliveryType: "Free Shipping", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$59" - }, { - id: 20, - dropdownId: "order-dropdown-20", - orderId: "#2200", - mailLink: "mailto:howe@example.com", - customer: "Daisha Howe", - date: "25/04/2023", - address: "Daisha Howe, 829 Lavonne Valley Apt. 074 Stehrfort, RI 77914-0379", - deliveryType: "Free Shipping", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$39" - }, { - id: 21, - dropdownId: "order-dropdown-21", - orderId: "#2201", - mailLink: "mailto:haley@example.com", - customer: "Miles Haley", - date: "24/04/2023", - address: "Miles Haley, 53150 Thad Squares Apt. 263 Archibaldfort, MO 00837", - deliveryType: "Flat Rate", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$55" - }, { - id: 22, - dropdownId: "order-dropdown-22", - orderId: "#2202", - mailLink: "mailto:watsica@example.com", - customer: "Brenda Watsica", - date: "24/04/2023", - address: "Brenda Watsica, 9198 O'Kon Harbors Morarborough, IA 75409-7383", - deliveryType: "Free Shipping", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$89" - }, { - id: 23, - dropdownId: "order-dropdown-23", - orderId: "#2203", - mailLink: "mailto:ellie@example.com", - customer: "Ellie O'Reilly", - date: "24/04/2023", - address: "Ellie O'Reilly, 1478 Kaitlin Haven Apt. 061 Lake Muhammadmouth, SC 35848", - deliveryType: "Free Shipping", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$47" - }, { - id: 24, - dropdownId: "order-dropdown-24", - orderId: "#2204", - mailLink: "mailto:garry@example.com", - customer: "Garry Brainstrow", - date: "23/04/2023", - address: "Garry Brainstrow, 13572 Kurt Mews South Merritt, IA 52491", - deliveryType: "Free Shipping", - status: "Completed", - badge: { - type: "success", - icon: "fas fa-check" - }, - amount: "$139" - }, { - id: 25, - dropdownId: "order-dropdown-25", - orderId: "#2205", - mailLink: "mailto:estell@example.com", - customer: "Estell Pollich", - date: "23/04/2023", - address: "Estell Pollich, 13572 Kurt Mews South Merritt, IA 52491", - deliveryType: "Free Shipping", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$49" - }, { - id: 26, - dropdownId: "order-dropdown-26", - orderId: "#2206", - mailLink: "mailto:ara@example.com", - customer: "Ara Mueller", - date: "23/04/2023", - address: "Ara Mueller, 91979 Kohler Place Waelchiborough, CT 41291", - deliveryType: "Flat Rate", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$19" - }, { - id: 27, - dropdownId: "order-dropdown-27", - orderId: "#2207", - mailLink: "mailto:blick@example.com", - customer: "Lucienne Blick", - date: "23/04/2023", - address: "Lucienne Blick, 6757 Giuseppe Meadows Geraldinemouth, MO 48819-4970", - deliveryType: "Flat Rate", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$59" - }, { - id: 28, - dropdownId: "order-dropdown-28", - orderId: "#2208", - mailLink: "mailto:haag@example.com", - customer: "Laverne Haag", - date: "22/04/2023", - address: "Laverne Haag, 2327 Kaylee Mill East Citlalli, AZ 89582-3143", - deliveryType: "Flat Rate", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$49" - }, { - id: 29, - dropdownId: "order-dropdown-29", - orderId: "#2209", - mailLink: "mailto:bednar@example.com", - customer: "Brandon Bednar", - date: "22/04/2023", - address: "Brandon Bednar, 25156 Isaac Crossing Apt. 810 Lonborough, CO 83774-5999", - deliveryType: "Flat Rate", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$39" - }, { - id: 30, - dropdownId: "order-dropdown-30", - orderId: "#2210", - mailLink: "mailto:dimitri@example.com", - customer: "Dimitri Boehm", - date: "23/04/2023", - address: "Dimitri Boehm, 71603 Wolff Plains Apt. 885 Johnstonton, MI 01581", - deliveryType: "Flat Rate", - status: "On Hold", - badge: { - type: "secondary", - icon: "fas fa-ban" - }, - amount: "$111" - }] - , advanceAjaxTableInit = ()=>{ - const e = (e,a)=>{ - e.disabled = a, - e.classList[a ? "add" : "remove"]("disabled"); - } - , a = document.getElementById("advanceAjaxTable"); - if (a) { - const d = { - page: 10, - pagination: { - item: "
  • " - }, - item: e=>{ - const {orderId: a, id: d, customer: o, date: r, address: n, deliveryType: t, status: i, badge: s, amount: l} = e; - return `\n \n \n \n ${a}\n \n \n \n \n ${o}\n \n \n \n ${r}\n \n \n ${n}\n \n \n

    ${t}

    \n \n \n \n ${i}\n \n \n \n \n ${l}\n \n \n
    \n \n \n
    \n \n \n ` - } - } - , o = a.querySelector('[data-list-pagination="next"]') - , r = a.querySelector('[data-list-pagination="prev"]') - , n = a.querySelector('[data-list-view="*"]') - , t = a.querySelector('[data-list-view="less"]') - , i = a.querySelector("[data-list-info]") - , s = document.querySelector("[data-list-filter]") - , l = new window.List(a,d,orders); - l.on("updated", (e=>{ - const o = a.querySelector(".fallback") || document.getElementById(d.fallback); - o && (0 === e.matchingItems.length ? o.classList.remove("d-none") : o.classList.add("d-none")); - } - )); - const p = l.items.length - , c = l.page - , m = l.listContainer.querySelector(".btn-close"); - let u = Math.ceil(p / c) - , y = l.visibleItems.length - , f = 1; - m && m.addEventListener("search.close", (()=>l.fuzzySearch(""))); - const w = ()=>{ - i && (i.innerHTML = `${l.i} to ${y} of ${p}`), - r && e(r, 1 === f), - o && e(o, f === u), - f > 1 && f < u && (e(o, !1), - e(r, !1)); - } - ; - w(), - o && o.addEventListener("click", (e=>{ - e.preventDefault(), - f += 1; - const a = l.i + c; - a <= l.size() && l.show(a, c), - y += l.visibleItems.length, - w(); - } - )), - r && r.addEventListener("click", (e=>{ - e.preventDefault(), - f -= 1, - y -= l.visibleItems.length; - const a = l.i - c; - a > 0 && l.show(a, c), - w(); - } - )); - const g = ()=>{ - t.classList.toggle("d-none"), - n.classList.toggle("d-none"); - } - ; - if (n && n.addEventListener("click", (()=>{ - l.show(1, p), - u = 1, - f = 1, - y = p, - w(), - g(); - } - )), - t && t.addEventListener("click", (()=>{ - l.show(1, c), - u = Math.ceil(p / c), - f = 1, - y = l.visibleItems.length, - w(), - g(); - } - )), - d.pagination && a.querySelector(".pagination").addEventListener("click", (e=>{ - "page" === e.target.classList[0] && (f = Number(e.target.innerText), - w()); - } - )), - d.filter) { - const {key: e} = d.filter; - s.addEventListener("change", (a=>{ - l.filter((d=>"" === a.target.value || d.values()[e].toLowerCase().includes(a.target.value.toLowerCase()))); - } - )); - } - } - } - ; - - const anchorJSInit = ()=>{ - new window.AnchorJS({ - icon: "#" - }).add("[data-anchor]"); - } - ; - - const bigPictureInit = ()=>{ - const {getData: e} = window.phoenix.utils; - if (window.BigPicture) { - document.querySelectorAll("[data-bigpicture]").forEach((i=>{ - const t = e(i, "bigpicture") - , c = { - el: i, - noLoader: !0, - allowfullscreen: !0 - } - , n = window._.merge(c, t); - i.addEventListener("click", (()=>{ - window.BigPicture(n); - } - )); - } - )); - } - } - ; - - class DomNode { - constructor(s) { - this.node = s; - } - addClass(s) { - this.isValidNode() && this.node.classList.add(s); - } - removeClass(s) { - this.isValidNode() && this.node.classList.remove(s); - } - toggleClass(s) { - this.isValidNode() && this.node.classList.toggle(s); - } - hasClass(s) { - this.isValidNode() && this.node.classList.contains(s); - } - data(s) { - if (this.isValidNode()) - try { - return JSON.parse(this.node.dataset[this.camelize(s)]) - } catch (t) { - return this.node.dataset[this.camelize(s)] - } - return null - } - attr(s) { - return this.isValidNode() && this.node[s] - } - setAttribute(s, t) { - this.isValidNode() && this.node.setAttribute(s, t); - } - removeAttribute(s) { - this.isValidNode() && this.node.removeAttribute(s); - } - setProp(s, t) { - this.isValidNode() && (this.node[s] = t); - } - on(s, t) { - this.isValidNode() && this.node.addEventListener(s, t); - } - isValidNode() { - return !!this.node - } - camelize(s) { - const t = s.replace(/[-_\s.]+(.)?/g, ((s,t)=>t ? t.toUpperCase() : "")); - return `${t.substr(0, 1).toLowerCase()}${t.substr(1)}` - } - } - - const elementMap = new Map; - class BulkSelect { - constructor(e, t) { - this.element = e, - this.option = { - displayNoneClassName: "d-none", - ...t - }, - elementMap.set(this.element, this); - } - static getInstance(e) { - return elementMap.has(e) ? elementMap.get(e) : null - } - init() { - this.attachNodes(), - this.clickBulkCheckbox(), - this.clickRowCheckbox(); - } - getSelectedRows() { - return Array.from(this.bulkSelectRows).filter((e=>e.checked)).map((e=>getData(e, "bulk-select-row"))) - } - attachNodes() { - const {body: e, actions: t, replacedElement: s} = getData(this.element, "bulk-select"); - this.actions = new DomNode(document.getElementById(t)), - this.replacedElement = new DomNode(document.getElementById(s)), - this.bulkSelectRows = document.getElementById(e).querySelectorAll("[data-bulk-select-row]"); - } - attachRowNodes(e) { - this.bulkSelectRows = e; - } - clickBulkCheckbox() { - this.element.addEventListener("click", (()=>{ - if ("indeterminate" === this.element.indeterminate) - return this.actions.addClass(this.option.displayNoneClassName), - this.replacedElement.removeClass(this.option.displayNoneClassName), - this.removeBulkCheck(), - void this.bulkSelectRows.forEach((e=>{ - const t = new DomNode(e); - t.checked = !1, - t.setAttribute("checked", !1); - } - )); - this.toggleDisplay(), - this.bulkSelectRows.forEach((e=>{ - e.checked = this.element.checked; - } - )); - } - )); - } - clickRowCheckbox() { - this.bulkSelectRows.forEach((e=>{ - new DomNode(e).on("click", (()=>{ - "indeterminate" !== this.element.indeterminate && (this.element.indeterminate = !0, - this.element.setAttribute("indeterminate", "indeterminate"), - this.element.checked = !0, - this.element.setAttribute("checked", !0), - this.actions.removeClass(this.option.displayNoneClassName), - this.replacedElement.addClass(this.option.displayNoneClassName)), - [...this.bulkSelectRows].every((e=>e.checked)) && (this.element.indeterminate = !1, - this.element.setAttribute("indeterminate", !1)), - [...this.bulkSelectRows].every((e=>!e.checked)) && (this.removeBulkCheck(), - this.toggleDisplay()); - } - )); - } - )); - } - removeBulkCheck() { - this.element.indeterminate = !1, - this.element.removeAttribute("indeterminate"), - this.element.checked = !1, - this.element.setAttribute("checked", !1); - } - toggleDisplay() { - this.actions.toggleClass(this.option.displayNoneClassName), - this.replacedElement.toggleClass(this.option.displayNoneClassName); - } - } - const bulkSelectInit = ()=>{ - const e = document.querySelectorAll("[data-bulk-select"); - e.length && e.forEach((e=>{ - new BulkSelect(e).init(); - } - )); - } - ; - - const {merge: merge$2} = window._; - const echartSetOption = (e,t,o,n)=>{ - const {breakpoints: r, resize: a} = window.phoenix.utils - , s = t=>{ - Object.keys(t).forEach((o=>{ - window.innerWidth > r[o] && e.setOption(t[o]); - } - )); - } - , i = document.body; - e.setOption(merge$2(o(), t)); - const c = document.querySelector(".navbar-vertical-toggle"); - c && c.addEventListener("navbar.vertical.toggle", (()=>{ - e.resize(), - n && s(n); - } - )), - a((()=>{ - e.resize(), - n && s(n); - } - )), - n && s(n), - i.addEventListener("clickControl", (({detail: {control: n}})=>{ - "phoenixTheme" === n && e.setOption(window._.merge(o(), t)); - } - )); - } - ; - const echartTabs = document.querySelectorAll("[data-tab-has-echarts]"); - echartTabs && echartTabs.forEach((e=>{ - e.addEventListener("shown.bs.tab", (e=>{ - const t = e.target - , {hash: o} = t - , n = o || t.dataset.bsTarget - , r = document.getElementById(n.substring(1))?.querySelector("[data-echart-tab]"); - r && window.echarts.init(r).resize(); - } - )); - } - )); - - const basicEchartsInit = ()=>{ - const {getColor: t, getData: o, getDates: a} = window.phoenix.utils; - document.querySelectorAll("[data-echarts]").forEach((r=>{ - const e = o(r, "echarts") - , i = window.echarts.init(r); - echartSetOption(i, e, (()=>({ - color: t("primary"), - tooltip: { - trigger: "item", - padding: [7, 10], - backgroundColor: t("gray-100"), - borderColor: t("gray-300"), - textStyle: { - color: t("dark") - }, - borderWidth: 1, - transitionDuration: 0 - }, - xAxis: { - type: "category", - data: a(new Date("5/1/2022"), new Date("5/7/2022"), 864e5), - show: !0, - boundaryGap: !1, - axisLine: { - show: !0, - lineStyle: { - color: t("gray-200") - } - }, - axisTick: { - show: !1 - }, - axisLabel: { - formatter: t=>window.dayjs(t).format("DD MMM"), - interval: 6, - showMinLabel: !0, - showMaxLabel: !0, - color: t("gray-800") - } - }, - yAxis: { - show: !1, - type: "value", - boundaryGap: !1 - }, - series: [{ - type: "bar", - symbol: "none" - }], - grid: { - left: 22, - right: 22, - top: 0, - bottom: 20 - } - }))); - } - )); - } - ; - - const reportsDetailsChartInit = ()=>{ - const {getColor: t, getData: a, toggleColor: e} = window.phoenix.utils - , o = document.querySelector(".echart-reports-details") - , r = (t,a="MMM DD")=>{ - let e = ""; - return t.forEach((t=>{ - e += `
    \n
    \n ${t.seriesName} : ${"object" == typeof t.value ? t.value[1] : t.value}\n
    \n
    `; - } - )), - `
    \n

    \n ${window.dayjs(t[0].axisValue).isValid() ? window.dayjs(t[0].axisValue).format("DD MMM, YYYY") : t[0].axisValue}\n

    \n ${e}\n
    ` - } - , i = [64, 40, 45, 62, 82]; - if (o) { - const n = a(o, "echarts") - , l = window.echarts.init(o); - echartSetOption(l, n, (()=>({ - color: [t("primary-200"), t("info-300")], - tooltip: { - trigger: "axis", - padding: [7, 10], - backgroundColor: t("gray-100"), - borderColor: t("gray-300"), - textStyle: { - color: t("dark") - }, - borderWidth: 1, - transitionDuration: 0, - axisPointer: { - type: "none" - }, - formatter: r - }, - xAxis: { - type: "category", - data: ["Analysis", "Statement", "Action", "Offering", "Interlocution"], - axisLabel: { - color: t("gray-900"), - fontFamily: "Nunito Sans", - fontWeight: 600, - fontSize: 12.8, - rotate: 30, - formatter: t=>`${t.slice(0, 5)}...` - }, - axisLine: { - lineStyle: { - color: t("gray-200") - } - }, - axisTick: !1 - }, - yAxis: { - type: "value", - splitLine: { - lineStyle: { - color: t("gray-200") - } - }, - axisLabel: { - color: t("gray-900"), - fontFamily: "Nunito Sans", - fontWeight: 700, - fontSize: 12.8, - margin: 24, - formatter: t=>`${t}%` - } - }, - series: [{ - name: "Revenue", - type: "bar", - barWidth: "32px", - barGap: "48%", - showBackground: !0, - backgroundStyle: { - color: e(t("primary-soft"), t("gray-100")) - }, - label: { - show: !1 - }, - itemStyle: { - color: e(t("primary-300"), t("primary")) - }, - data: i - }], - grid: { - right: "0", - left: "0", - bottom: 0, - top: 10, - containLabel: !0 - }, - animation: !1 - }))); - } - } - ; - - const chatInit = ()=>{ - const {getData: e} = window.phoenix.utils - , t = ".chat-sidebar" - , a = ".chat-textarea" - , c = "[data-chat-thread]" - , r = "[data-chat-thread-tab]" - , o = "[data-chat-thread-tab-content]" - , s = document.querySelector(t) - , l = document.querySelector(a) - , n = document.querySelectorAll(c) - , d = document.querySelector(r) - , i = document.querySelector(o); - if (d) { - const t = d.querySelectorAll("[data-bs-toggle='tab']") - , a = new window.List(i,{ - valueNames: ["read", "unreadItem"] - }) - , c = document.querySelector(".chat .card-body"); - c.scrollTop = c.scrollHeight, - t.forEach((t=>t.addEventListener("shown.bs.tab", (()=>{ - const c = e(t, "chat-thread-list"); - a.filter((e=>"all" === c || e.elm.classList.contains(c))); - } - )))); - } - n.forEach((e=>{ - e.addEventListener("click", (()=>{ - if (s.classList.remove("show"), - e.classList.contains("unread")) { - e.classList.remove("unread"); - const t = e.querySelector(".unread-badge"); - t && t.remove(); - } - } - )); - } - )), - l && l.setAttribute("placeholder", "Type your message..."); - } - ; - - const choicesInit = ()=>{ - const {getData: e} = window.phoenix.utils; - if (window.Choices) { - document.querySelectorAll("[data-choices]").forEach((t=>{ - const i = e(t, "options") - , s = new window.Choices(t,{ - itemSelectText: "", - addItems: !0, - ...i - }); - return document.querySelectorAll(".needs-validation").forEach((e=>{ - const i = ()=>{ - e.querySelectorAll(".choices").forEach((e=>{ - const t = e.querySelector(".choices__list--single") - , i = e.querySelector(".choices__list--multiple"); - e.querySelector("[required]") && (t && ("" !== t.querySelector(".choices__item--selectable")?.getAttribute("data-value") ? (e.classList.remove("invalid"), - e.classList.add("valid")) : (e.classList.remove("valid"), - e.classList.add("invalid"))), - i && (e.getElementsByTagName("option").length ? (e.classList.remove("invalid"), - e.classList.add("valid")) : (e.classList.remove("valid"), - e.classList.add("invalid")))); - } - )); - } - ; - e.addEventListener("submit", (()=>{ - i(); - } - )), - t.addEventListener("change", (()=>{ - i(); - } - )); - } - )), - s - } - )); - } - } - ; - - const copyLink = ()=>{ - const {getData: t} = window.phoenix.utils; - document.querySelectorAll("[data-copy]").forEach((e=>{ - const o = new window.bootstrap.Tooltip(e); - e.addEventListener("mouseover", (()=>o.show())), - e.addEventListener("mouseleave", (()=>o.hide())), - e.addEventListener("click", (()=>{ - e.setAttribute("data-bs-original-title", "Copied"), - o.show(); - const i = t(e, "copy") - , a = document.querySelector(i); - a.select(), - navigator.clipboard.writeText(a.value), - e.setAttribute("data-bs-original-title", "click to copy"); - } - )); - } - )); - } - ; - - const countupInit = ()=>{ - const {getData: o} = window.phoenix.utils; - if (window.countUp) { - document.querySelectorAll("[data-countup]").forEach((t=>{ - const {endValue: n, ...u} = o(t, "countup") - , e = new window.countUp.CountUp(t,n,{ - duration: 4, - ...u - }); - e.error ? console.error(e.error) : e.start(); - } - )); - } - } - ; - - const createBoardInit = ()=>{ - const {getData: e} = window.phoenix.utils - , t = "[data-create-board]" - , r = "[data-wizard-step]" - , a = "[data-wizard-form]" - , o = "[data-kanban-step]" - , n = "[data-board-prev-btn]" - , c = "[data-custom-color-radio]" - , d = "submit" - , l = "show.bs.tab" - , s = "click" - , u = "change" - , i = document.querySelector(t); - if (i) { - const m = i.querySelectorAll(r) - , w = Array.from(m).map((e=>window.bootstrap.Tab.getOrCreateInstance(e))); - document.querySelector(n)?.addEventListener(s, (()=>{ - w[w.length - 2].show(); - } - )), - m.length && m.forEach((t=>{ - t.addEventListener(l, (()=>{ - const r = e(t, "wizard-step") - , a = document.querySelector(o); - a && (a.textContent = r); - } - )); - } - )); - const b = i.querySelectorAll(a); - b.forEach(((e,r)=>{ - e.addEventListener(d, (e=>{ - e.preventDefault(); - const a = new FormData(e.target); - Object.fromEntries(a.entries()); - return r + 1 === b.length && window.location.reload(), - null - } - )); - } - )); - document.querySelector("#customColorInput")?.addEventListener(u, (e=>{ - const t = e.target.value - , r = document.querySelector(c); - r.setAttribute("checked", "checked"), - r.value = t; - } - )); - } - } - ; - - const detectorInit = ()=>{ - const {addClass: e} = window.phoenix.utils - , {is: o} = window - , i = document.querySelector("html"); - o.opera() && e(i, "opera"), - o.mobile() && e(i, "mobile"), - o.firefox() && e(i, "firefox"), - o.safari() && e(i, "safari"), - o.ios() && e(i, "ios"), - o.iphone() && e(i, "iphone"), - o.ipad() && e(i, "ipad"), - o.ie() && e(i, "ie"), - o.edge() && e(i, "edge"), - o.chrome() && e(i, "chrome"), - o.mac() && e(i, "osx"), - o.windows() && e(i, "windows"), - navigator.userAgent.match("CriOS") && e(i, "chrome"); - } - ; - - const dropdownOnHover = ()=>{ - const e = document.querySelector("[data-dropdown-on-hover]"); - e && e.addEventListener("mouseover", (e=>{ - if (e.target?.className?.includes("dropdown-toggle") && !e.target.parentNode.className.includes("dropdown-inside") && window.innerWidth > 992) { - const o = new window.bootstrap.Dropdown(e.target); - o._element.classList.add("show"), - o._menu.classList.add("show"), - o._menu.setAttribute("data-bs-popper", "none"), - e.target.parentNode.addEventListener("mouseleave", (()=>{ - window.innerWidth > 992 && o.hide(); - } - )); - } - } - )); - } - ; - - const {merge: merge$1} = window._; - window.Dropzone && (window.Dropzone.autoDiscover = !1); - const dropzoneInit = ()=>{ - const {getData: e} = window.phoenix.utils - , o = "[data-dropzone]" - , r = ".dz-preview" - , t = ".dz-preview .dz-preview-cover" - , i = "dz-file-processing" - , l = "dz-file-complete" - , n = "dz-processing" - , s = "options" - , a = "addedfile" - , c = "removedfile" - , d = "complete" - , u = document.querySelectorAll(o); - u.length && u.forEach((o=>{ - let u = e(o, s); - u = u || {}; - const m = u.data ? u.data : {} - , p = merge$1({ - url: "/assets/php/", - addRemoveLinks: !1, - previewsContainer: o.querySelector(r), - previewTemplate: o.querySelector(r).innerHTML, - thumbnailWidth: null, - thumbnailHeight: null, - maxFilesize: 2, - autoProcessQueue: !1, - filesizeBase: 1e3, - init: function() { - const e = this; - m.length && m.forEach((o=>{ - const r = { - name: o.name, - size: o.size - }; - e.options.addedfile.call(e, r), - e.options.thumbnail.call(e, r, `${o.url}/${o.name}`); - } - )), - e.on(a, (function() { - "maxFiles"in u && (1 === u.maxFiles && o.querySelectorAll(t).length > 1 && o.querySelector(t).remove(), - 1 === u.maxFiles && this.files.length > 1 && this.removeFile(this.files[0])); - } - )); - }, - error(e, o) { - if (e.previewElement) { - e.previewElement.classList.add("dz-error"), - "string" != typeof o && o.error && (o = o.error); - for (let r of e.previewElement.querySelectorAll("[data-dz-errormessage]")) - r.textContent = o; - } - } - }, u); - o.querySelector(r).innerHTML = ""; - const w = new window.Dropzone(o,p); - w.on(a, (()=>{ - o.querySelector(t) && o.querySelector(t).classList.remove(l), - o.classList.add(i); - } - )), - w.on(c, (()=>{ - o.querySelector(t) && o.querySelector(t).classList.remove(n), - o.classList.add(l); - } - )), - w.on(d, (()=>{ - o.querySelector(t) && o.querySelector(t).classList.remove(n), - o.classList.add(l); - } - )); - } - )); - } - ; - - const featherIconsInit = ()=>{ - window.feather && window.feather.replace({ - width: "16px", - height: "16px" - }); - } - ; - - var HOOKS = ["onChange", "onClose", "onDayCreate", "onDestroy", "onKeyDown", "onMonthChange", "onOpen", "onParseConfig", "onReady", "onValueUpdate", "onYearChange", "onPreCalendarPosition"]; - var defaults = { - _disable: [], - allowInput: !1, - allowInvalidPreload: !1, - altFormat: "F j, Y", - altInput: !1, - altInputClass: "form-control input", - animate: "object" == typeof window && -1 === window.navigator.userAgent.indexOf("MSIE"), - ariaDateFormat: "F j, Y", - autoFillDefaultTime: !0, - clickOpens: !0, - closeOnSelect: !0, - conjunction: ", ", - dateFormat: "Y-m-d", - defaultHour: 12, - defaultMinute: 0, - defaultSeconds: 0, - disable: [], - disableMobile: !1, - enableSeconds: !1, - enableTime: !1, - errorHandler: function(e) { - return "undefined" != typeof console && console.warn(e) - }, - getWeek: function(e) { - var n = new Date(e.getTime()); - n.setHours(0, 0, 0, 0), - n.setDate(n.getDate() + 3 - (n.getDay() + 6) % 7); - var o = new Date(n.getFullYear(),0,4); - return 1 + Math.round(((n.getTime() - o.getTime()) / 864e5 - 3 + (o.getDay() + 6) % 7) / 7) - }, - hourIncrement: 1, - ignoredFocusElements: [], - inline: !1, - locale: "default", - minuteIncrement: 5, - mode: "single", - monthSelectorType: "dropdown", - nextArrow: "", - noCalendar: !1, - now: new Date, - onChange: [], - onClose: [], - onDayCreate: [], - onDestroy: [], - onKeyDown: [], - onMonthChange: [], - onOpen: [], - onParseConfig: [], - onReady: [], - onValueUpdate: [], - onYearChange: [], - onPreCalendarPosition: [], - plugins: [], - position: "auto", - positionElement: void 0, - prevArrow: "", - shorthandCurrentMonth: !1, - showMonths: 1, - static: !1, - time_24hr: !1, - weekNumbers: !1, - wrap: !1 - }; - - var english = { - weekdays: { - shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - longhand: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] - }, - months: { - shorthand: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - longhand: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] - }, - daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], - firstDayOfWeek: 0, - ordinal: function(e) { - var r = e % 100; - if (r > 3 && r < 21) - return "th"; - switch (r % 10) { - case 1: - return "st"; - case 2: - return "nd"; - case 3: - return "rd"; - default: - return "th" - } - }, - rangeSeparator: " to ", - weekAbbreviation: "Wk", - scrollTitle: "Scroll to increment", - toggleTitle: "Click to toggle", - amPM: ["AM", "PM"], - yearAriaLabel: "Year", - monthAriaLabel: "Month", - hourAriaLabel: "Hour", - minuteAriaLabel: "Minute", - time_24hr: !1 - }; - - var pad = function(r, n) { - return void 0 === n && (n = 2), - ("000" + r).slice(-1 * n) - }; - var int = function(r) { - return !0 === r ? 1 : 0 - }; - function debounce(r, n) { - var t; - return function() { - var e = this - , o = arguments; - clearTimeout(t), - t = setTimeout((function() { - return r.apply(e, o) - } - ), n); - } - } - var arrayify = function(r) { - return r instanceof Array ? r : [r] - }; - - function toggleClass(e, t, n) { - if (!0 === n) - return e.classList.add(t); - e.classList.remove(t); - } - function createElement(e, t, n) { - var r = window.document.createElement(e); - return t = t || "", - n = n || "", - r.className = t, - void 0 !== n && (r.textContent = n), - r - } - function clearNode(e) { - for (; e.firstChild; ) - e.removeChild(e.firstChild); - } - function findParent(e, t) { - return t(e) ? e : e.parentNode ? findParent(e.parentNode, t) : void 0 - } - function createNumberInput(e, t) { - var n = createElement("div", "numInputWrapper") - , r = createElement("input", "numInput " + e) - , a = createElement("span", "arrowUp") - , o = createElement("span", "arrowDown"); - if (-1 === navigator.userAgent.indexOf("MSIE 9.0") ? r.type = "number" : (r.type = "text", - r.pattern = "\\d*"), - void 0 !== t) - for (var i in t) - r.setAttribute(i, t[i]); - return n.appendChild(r), - n.appendChild(a), - n.appendChild(o), - n - } - function getEventTarget(e) { - try { - return "function" == typeof e.composedPath ? e.composedPath()[0] : e.target - } catch (t) { - return e.target - } - } - - var doNothing = function() {}; - var monthToStr = function(t, n, e) { - return e.months[n ? "shorthand" : "longhand"][t] - }; - var revFormat = { - D: doNothing, - F: function(t, n, e) { - t.setMonth(e.months.longhand.indexOf(n)); - }, - G: function(t, n) { - t.setHours((t.getHours() >= 12 ? 12 : 0) + parseFloat(n)); - }, - H: function(t, n) { - t.setHours(parseFloat(n)); - }, - J: function(t, n) { - t.setDate(parseFloat(n)); - }, - K: function(t, n, e) { - t.setHours(t.getHours() % 12 + 12 * int(new RegExp(e.amPM[1],"i").test(n))); - }, - M: function(t, n, e) { - t.setMonth(e.months.shorthand.indexOf(n)); - }, - S: function(t, n) { - t.setSeconds(parseFloat(n)); - }, - U: function(t, n) { - return new Date(1e3 * parseFloat(n)) - }, - W: function(t, n, e) { - var o = parseInt(n) - , r = new Date(t.getFullYear(),0,2 + 7 * (o - 1),0,0,0,0); - return r.setDate(r.getDate() - r.getDay() + e.firstDayOfWeek), - r - }, - Y: function(t, n) { - t.setFullYear(parseFloat(n)); - }, - Z: function(t, n) { - return new Date(n) - }, - d: function(t, n) { - t.setDate(parseFloat(n)); - }, - h: function(t, n) { - t.setHours((t.getHours() >= 12 ? 12 : 0) + parseFloat(n)); - }, - i: function(t, n) { - t.setMinutes(parseFloat(n)); - }, - j: function(t, n) { - t.setDate(parseFloat(n)); - }, - l: doNothing, - m: function(t, n) { - t.setMonth(parseFloat(n) - 1); - }, - n: function(t, n) { - t.setMonth(parseFloat(n) - 1); - }, - s: function(t, n) { - t.setSeconds(parseFloat(n)); - }, - u: function(t, n) { - return new Date(parseFloat(n)) - }, - w: doNothing, - y: function(t, n) { - t.setFullYear(2e3 + parseFloat(n)); - } - }; - var tokenRegex = { - D: "", - F: "", - G: "(\\d\\d|\\d)", - H: "(\\d\\d|\\d)", - J: "(\\d\\d|\\d)\\w+", - K: "", - M: "", - S: "(\\d\\d|\\d)", - U: "(.+)", - W: "(\\d\\d|\\d)", - Y: "(\\d{4})", - Z: "(.+)", - d: "(\\d\\d|\\d)", - h: "(\\d\\d|\\d)", - i: "(\\d\\d|\\d)", - j: "(\\d\\d|\\d)", - l: "", - m: "(\\d\\d|\\d)", - n: "(\\d\\d|\\d)", - s: "(\\d\\d|\\d)", - u: "(.+)", - w: "(\\d\\d|\\d)", - y: "(\\d{2})" - }; - var formats = { - Z: function(t) { - return t.toISOString() - }, - D: function(t, n, e) { - return n.weekdays.shorthand[formats.w(t, n, e)] - }, - F: function(t, n, e) { - return monthToStr(formats.n(t, n, e) - 1, !1, n) - }, - G: function(t, n, e) { - return pad(formats.h(t, n, e)) - }, - H: function(t) { - return pad(t.getHours()) - }, - J: function(t, n) { - return void 0 !== n.ordinal ? t.getDate() + n.ordinal(t.getDate()) : t.getDate() - }, - K: function(t, n) { - return n.amPM[int(t.getHours() > 11)] - }, - M: function(t, n) { - return monthToStr(t.getMonth(), !0, n) - }, - S: function(t) { - return pad(t.getSeconds()) - }, - U: function(t) { - return t.getTime() / 1e3 - }, - W: function(t, n, e) { - return e.getWeek(t) - }, - Y: function(t) { - return pad(t.getFullYear(), 4) - }, - d: function(t) { - return pad(t.getDate()) - }, - h: function(t) { - return t.getHours() % 12 ? t.getHours() % 12 : 12 - }, - i: function(t) { - return pad(t.getMinutes()) - }, - j: function(t) { - return t.getDate() - }, - l: function(t, n) { - return n.weekdays.longhand[t.getDay()] - }, - m: function(t) { - return pad(t.getMonth() + 1) - }, - n: function(t) { - return t.getMonth() + 1 - }, - s: function(t) { - return t.getSeconds() - }, - u: function(t) { - return t.getTime() - }, - w: function(t) { - return t.getDay() - }, - y: function(t) { - return String(t.getFullYear()).substring(2) - } - }; - - var createDateFormatter = function(e) { - var t = e.config - , r = void 0 === t ? defaults : t - , n = e.l10n - , a = void 0 === n ? english : n - , o = e.isMobile - , i = void 0 !== o && o; - return function(e, t, n) { - var o = n || a; - return void 0 === r.formatDate || i ? t.split("").map((function(t, n, a) { - return formats[t] && "\\" !== a[n - 1] ? formats[t](e, o, r) : "\\" !== t ? t : "" - } - )).join("") : r.formatDate(e, t, o) - } - }; - var createDateParser = function(e) { - var t = e.config - , r = void 0 === t ? defaults : t - , n = e.l10n - , a = void 0 === n ? english : n; - return function(e, t, n, o) { - if (0 === e || e) { - var i, s = o || a, u = e; - if (e instanceof Date) - i = new Date(e.getTime()); - else if ("string" != typeof e && void 0 !== e.toFixed) - i = new Date(e); - else if ("string" == typeof e) { - var f = t || (r || defaults).dateFormat - , m = String(e).trim(); - if ("today" === m) - i = new Date, - n = !0; - else if (r && r.parseDate) - i = r.parseDate(e, f); - else if (/Z$/.test(m) || /GMT$/.test(m)) - i = new Date(e); - else { - for (var d = void 0, v = [], g = 0, c = 0, l = ""; g < f.length; g++) { - var D = f[g] - , p = "\\" === D - , x = "\\" === f[g - 1] || p; - if (tokenRegex[D] && !x) { - l += tokenRegex[D]; - var h = new RegExp(l).exec(e); - h && (d = !0) && v["Y" !== D ? "push" : "unshift"]({ - fn: revFormat[D], - val: h[++c] - }); - } else - p || (l += "."); - } - i = r && r.noCalendar ? new Date((new Date).setHours(0, 0, 0, 0)) : new Date((new Date).getFullYear(),0,1,0,0,0,0), - v.forEach((function(e) { - var t = e.fn - , r = e.val; - return i = t(i, r, s) || i - } - )), - i = d ? i : void 0; - } - } - if (i instanceof Date && !isNaN(i.getTime())) - return !0 === n && i.setHours(0, 0, 0, 0), - i; - r.errorHandler(new Error("Invalid date provided: " + u)); - } - } - }; - function compareDates(e, t, r) { - return void 0 === r && (r = !0), - !1 !== r ? new Date(e.getTime()).setHours(0, 0, 0, 0) - new Date(t.getTime()).setHours(0, 0, 0, 0) : e.getTime() - t.getTime() - } - var isBetween = function(e, t, r) { - return e > Math.min(t, r) && e < Math.max(t, r) - }; - var calculateSecondsSinceMidnight = function(e, t, r) { - return 3600 * e + 60 * t + r - }; - var parseSeconds = function(e) { - var t = Math.floor(e / 3600) - , r = (e - 3600 * t) / 60; - return [t, r, e - 3600 * t - 60 * r] - }; - var duration = { - DAY: 864e5 - }; - function getDefaultHours(e) { - var t = e.defaultHour - , r = e.defaultMinute - , n = e.defaultSeconds; - if (void 0 !== e.minDate) { - var a = e.minDate.getHours() - , o = e.minDate.getMinutes() - , i = e.minDate.getSeconds(); - t < a && (t = a), - t === a && r < o && (r = o), - t === a && r === o && n < i && (n = e.minDate.getSeconds()); - } - if (void 0 !== e.maxDate) { - var s = e.maxDate.getHours() - , u = e.maxDate.getMinutes(); - (t = Math.min(t, s)) === s && (r = Math.min(u, r)), - t === s && r === u && (n = e.maxDate.getSeconds()); - } - return { - hours: t, - minutes: r, - seconds: n - } - } - - "function" != typeof Object.assign && (Object.assign = function(n) { - for (var t = [], r = 1; r < arguments.length; r++) - t[r - 1] = arguments[r]; - if (!n) - throw TypeError("Cannot convert undefined or null to object"); - for (var e = function(t) { - t && Object.keys(t).forEach((function(r) { - return n[r] = t[r] - } - )); - }, o = 0, c = t; o < c.length; o++) { - var f = c[o]; - e(f); - } - return n - } - ); - - var __assign = undefined && undefined.__assign || function() { - return __assign = Object.assign || function(e) { - for (var t, n = 1, a = arguments.length; n < a; n++) - for (var i in t = arguments[n]) - Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); - return e - } - , - __assign.apply(this, arguments) - } - , __spreadArrays = undefined && undefined.__spreadArrays || function() { - for (var e = 0, t = 0, n = arguments.length; t < n; t++) - e += arguments[t].length; - var a = Array(e) - , i = 0; - for (t = 0; t < n; t++) - for (var o = arguments[t], r = 0, l = o.length; r < l; r++, - i++) - a[i] = o[r]; - return a - } - ; - var DEBOUNCED_CHANGE_MS = 300; - function FlatpickrInstance(e, t) { - var n = { - config: __assign(__assign({}, defaults), flatpickr.defaultConfig), - l10n: english - }; - function a() { - var e; - return (null === (e = n.calendarContainer) || void 0 === e ? void 0 : e.getRootNode()).activeElement || document.activeElement - } - function i(e) { - return e.bind(n) - } - function o() { - var e = n.config; - !1 === e.weekNumbers && 1 === e.showMonths || !0 !== e.noCalendar && window.requestAnimationFrame((function() { - if (void 0 !== n.calendarContainer && (n.calendarContainer.style.visibility = "hidden", - n.calendarContainer.style.display = "block"), - void 0 !== n.daysContainer) { - var t = (n.days.offsetWidth + 1) * e.showMonths; - n.daysContainer.style.width = t + "px", - n.calendarContainer.style.width = t + (void 0 !== n.weekWrapper ? n.weekWrapper.offsetWidth : 0) + "px", - n.calendarContainer.style.removeProperty("visibility"), - n.calendarContainer.style.removeProperty("display"); - } - } - )); - } - function r(e) { - if (0 === n.selectedDates.length) { - var t = void 0 === n.config.minDate || compareDates(new Date, n.config.minDate) >= 0 ? new Date : new Date(n.config.minDate.getTime()) - , a = getDefaultHours(n.config); - t.setHours(a.hours, a.minutes, a.seconds, t.getMilliseconds()), - n.selectedDates = [t], - n.latestSelectedDateObj = t; - } - void 0 !== e && "blur" !== e.type && function(e) { - e.preventDefault(); - var t = "keydown" === e.type - , a = getEventTarget(e) - , i = a; - void 0 !== n.amPM && a === n.amPM && (n.amPM.textContent = n.l10n.amPM[int(n.amPM.textContent === n.l10n.amPM[0])]); - var o = parseFloat(i.getAttribute("min")) - , r = parseFloat(i.getAttribute("max")) - , l = parseFloat(i.getAttribute("step")) - , c = parseInt(i.value, 10) - , s = e.delta || (t ? 38 === e.which ? 1 : -1 : 0) - , d = c + l * s; - if (void 0 !== i.value && 2 === i.value.length) { - var f = i === n.hourElement - , u = i === n.minuteElement; - d < o ? (d = r + d + int(!f) + (int(f) && int(!n.amPM)), - u && p(void 0, -1, n.hourElement)) : d > r && (d = i === n.hourElement ? d - r - int(!n.amPM) : o, - u && p(void 0, 1, n.hourElement)), - n.amPM && f && (1 === l ? d + c === 23 : Math.abs(d - c) > l) && (n.amPM.textContent = n.l10n.amPM[int(n.amPM.textContent === n.l10n.amPM[0])]), - i.value = pad(d); - } - }(e); - var i = n._input.value; - l(), - Z(), - n._input.value !== i && n._debouncedChange(); - } - function l() { - if (void 0 !== n.hourElement && void 0 !== n.minuteElement) { - var e, t, a = (parseInt(n.hourElement.value.slice(-2), 10) || 0) % 24, i = (parseInt(n.minuteElement.value, 10) || 0) % 60, o = void 0 !== n.secondElement ? (parseInt(n.secondElement.value, 10) || 0) % 60 : 0; - void 0 !== n.amPM && (e = a, - t = n.amPM.textContent, - a = e % 12 + 12 * int(t === n.l10n.amPM[1])); - var r = void 0 !== n.config.minTime || n.config.minDate && n.minDateHasTime && n.latestSelectedDateObj && 0 === compareDates(n.latestSelectedDateObj, n.config.minDate, !0) - , l = void 0 !== n.config.maxTime || n.config.maxDate && n.maxDateHasTime && n.latestSelectedDateObj && 0 === compareDates(n.latestSelectedDateObj, n.config.maxDate, !0); - if (void 0 !== n.config.maxTime && void 0 !== n.config.minTime && n.config.minTime > n.config.maxTime) { - var c = calculateSecondsSinceMidnight(n.config.minTime.getHours(), n.config.minTime.getMinutes(), n.config.minTime.getSeconds()) - , d = calculateSecondsSinceMidnight(n.config.maxTime.getHours(), n.config.maxTime.getMinutes(), n.config.maxTime.getSeconds()) - , f = calculateSecondsSinceMidnight(a, i, o); - if (f > d && f < c) { - var u = parseSeconds(c); - a = u[0], - i = u[1], - o = u[2]; - } - } else { - if (l) { - var m = void 0 !== n.config.maxTime ? n.config.maxTime : n.config.maxDate; - (a = Math.min(a, m.getHours())) === m.getHours() && (i = Math.min(i, m.getMinutes())), - i === m.getMinutes() && (o = Math.min(o, m.getSeconds())); - } - if (r) { - var g = void 0 !== n.config.minTime ? n.config.minTime : n.config.minDate; - (a = Math.max(a, g.getHours())) === g.getHours() && i < g.getMinutes() && (i = g.getMinutes()), - i === g.getMinutes() && (o = Math.max(o, g.getSeconds())); - } - } - s(a, i, o); - } - } - function c(e) { - var t = e || n.latestSelectedDateObj; - t && t instanceof Date && s(t.getHours(), t.getMinutes(), t.getSeconds()); - } - function s(e, t, a) { - void 0 !== n.latestSelectedDateObj && n.latestSelectedDateObj.setHours(e % 24, t, a || 0, 0), - n.hourElement && n.minuteElement && !n.isMobile && (n.hourElement.value = pad(n.config.time_24hr ? e : (12 + e) % 12 + 12 * int(e % 12 == 0)), - n.minuteElement.value = pad(t), - void 0 !== n.amPM && (n.amPM.textContent = n.l10n.amPM[int(e >= 12)]), - void 0 !== n.secondElement && (n.secondElement.value = pad(a))); - } - function d(e) { - var t = getEventTarget(e) - , n = parseInt(t.value) + (e.delta || 0); - (n / 1e3 > 1 || "Enter" === e.key && !/[^\d]/.test(n.toString())) && O(n); - } - function f(e, t, a, i) { - return t instanceof Array ? t.forEach((function(t) { - return f(e, t, a, i) - } - )) : e instanceof Array ? e.forEach((function(e) { - return f(e, t, a, i) - } - )) : (e.addEventListener(t, a, i), - void n._handlers.push({ - remove: function() { - return e.removeEventListener(t, a, i) - } - })) - } - function u() { - Q("onChange"); - } - function m(e, t) { - var a = void 0 !== e ? n.parseDate(e) : n.latestSelectedDateObj || (n.config.minDate && n.config.minDate > n.now ? n.config.minDate : n.config.maxDate && n.config.maxDate < n.now ? n.config.maxDate : n.now) - , i = n.currentYear - , o = n.currentMonth; - try { - void 0 !== a && (n.currentYear = a.getFullYear(), - n.currentMonth = a.getMonth()); - } catch (e) { - e.message = "Invalid date supplied: " + a, - n.config.errorHandler(e); - } - t && n.currentYear !== i && (Q("onYearChange"), - y()), - !t || n.currentYear === i && n.currentMonth === o || Q("onMonthChange"), - n.redraw(); - } - function g(e) { - var t = getEventTarget(e); - ~t.className.indexOf("arrow") && p(e, t.classList.contains("arrowUp") ? 1 : -1); - } - function p(e, t, n) { - var a = e && getEventTarget(e) - , i = n || a && a.parentNode && a.parentNode.firstChild - , o = V("increment"); - o.delta = t, - i && i.dispatchEvent(o); - } - function h(e, t, a, i) { - var o = S(t, !0) - , r = createElement("span", e, t.getDate().toString()); - return r.dateObj = t, - r.$i = i, - r.setAttribute("aria-label", n.formatDate(t, n.config.ariaDateFormat)), - -1 === e.indexOf("hidden") && 0 === compareDates(t, n.now) && (n.todayDateElem = r, - r.classList.add("today"), - r.setAttribute("aria-current", "date")), - o ? (r.tabIndex = -1, - X(t) && (r.classList.add("selected"), - n.selectedDateElem = r, - "range" === n.config.mode && (toggleClass(r, "startRange", n.selectedDates[0] && 0 === compareDates(t, n.selectedDates[0], !0)), - toggleClass(r, "endRange", n.selectedDates[1] && 0 === compareDates(t, n.selectedDates[1], !0)), - "nextMonthDay" === e && r.classList.add("inRange")))) : r.classList.add("flatpickr-disabled"), - "range" === n.config.mode && function(e) { - return !("range" !== n.config.mode || n.selectedDates.length < 2) && (compareDates(e, n.selectedDates[0]) >= 0 && compareDates(e, n.selectedDates[1]) <= 0) - }(t) && !X(t) && r.classList.add("inRange"), - n.weekNumbers && 1 === n.config.showMonths && "prevMonthDay" !== e && i % 7 == 6 && n.weekNumbers.insertAdjacentHTML("beforeend", "" + n.config.getWeek(t) + ""), - Q("onDayCreate", r), - r - } - function v(e) { - e.focus(), - "range" === n.config.mode && Y(e); - } - function D(e) { - for (var t = e > 0 ? 0 : n.config.showMonths - 1, a = e > 0 ? n.config.showMonths : -1, i = t; i != a; i += e) - for (var o = n.daysContainer.children[i], r = e > 0 ? 0 : o.children.length - 1, l = e > 0 ? o.children.length : -1, c = r; c != l; c += e) { - var s = o.children[c]; - if (-1 === s.className.indexOf("hidden") && S(s.dateObj)) - return s - } - } - function C(e, t) { - var i = a() - , o = N(i || document.body) - , r = void 0 !== e ? e : o ? i : void 0 !== n.selectedDateElem && N(n.selectedDateElem) ? n.selectedDateElem : void 0 !== n.todayDateElem && N(n.todayDateElem) ? n.todayDateElem : D(t > 0 ? 1 : -1); - void 0 === r ? n._input.focus() : o ? function(e, t) { - for (var a = -1 === e.className.indexOf("Month") ? e.dateObj.getMonth() : n.currentMonth, i = t > 0 ? n.config.showMonths : -1, o = t > 0 ? 1 : -1, r = a - n.currentMonth; r != i; r += o) - for (var l = n.daysContainer.children[r], c = a - n.currentMonth === r ? e.$i + t : t < 0 ? l.children.length - 1 : 0, s = l.children.length, d = c; d >= 0 && d < s && d != (t > 0 ? s : -1); d += o) { - var f = l.children[d]; - if (-1 === f.className.indexOf("hidden") && S(f.dateObj) && Math.abs(e.$i - d) >= Math.abs(t)) - return v(f) - } - n.changeMonth(o), - C(D(o), 0); - }(r, t) : v(r); - } - function b(e, t) { - for (var a = (new Date(e,t,1).getDay() - n.l10n.firstDayOfWeek + 7) % 7, i = n.utils.getDaysInMonth((t - 1 + 12) % 12, e), o = n.utils.getDaysInMonth(t, e), r = window.document.createDocumentFragment(), l = n.config.showMonths > 1, c = l ? "prevMonthDay hidden" : "prevMonthDay", s = l ? "nextMonthDay hidden" : "nextMonthDay", d = i + 1 - a, f = 0; d <= i; d++, - f++) - r.appendChild(h("flatpickr-day " + c, new Date(e,t - 1,d), 0, f)); - for (d = 1; d <= o; d++, - f++) - r.appendChild(h("flatpickr-day", new Date(e,t,d), 0, f)); - for (var u = o + 1; u <= 42 - a && (1 === n.config.showMonths || f % 7 != 0); u++, - f++) - r.appendChild(h("flatpickr-day " + s, new Date(e,t + 1,u % o), 0, f)); - var m = createElement("div", "dayContainer"); - return m.appendChild(r), - m - } - function M() { - if (void 0 !== n.daysContainer) { - clearNode(n.daysContainer), - n.weekNumbers && clearNode(n.weekNumbers); - for (var e = document.createDocumentFragment(), t = 0; t < n.config.showMonths; t++) { - var a = new Date(n.currentYear,n.currentMonth,1); - a.setMonth(n.currentMonth + t), - e.appendChild(b(a.getFullYear(), a.getMonth())); - } - n.daysContainer.appendChild(e), - n.days = n.daysContainer.firstChild, - "range" === n.config.mode && 1 === n.selectedDates.length && Y(); - } - } - function y() { - if (!(n.config.showMonths > 1 || "dropdown" !== n.config.monthSelectorType)) { - var e = function(e) { - return !(void 0 !== n.config.minDate && n.currentYear === n.config.minDate.getFullYear() && e < n.config.minDate.getMonth()) && !(void 0 !== n.config.maxDate && n.currentYear === n.config.maxDate.getFullYear() && e > n.config.maxDate.getMonth()) - }; - n.monthsDropdownContainer.tabIndex = -1, - n.monthsDropdownContainer.innerHTML = ""; - for (var t = 0; t < 12; t++) - if (e(t)) { - var a = createElement("option", "flatpickr-monthDropdown-month"); - a.value = new Date(n.currentYear,t).getMonth().toString(), - a.textContent = monthToStr(t, n.config.shorthandCurrentMonth, n.l10n), - a.tabIndex = -1, - n.currentMonth === t && (a.selected = !0), - n.monthsDropdownContainer.appendChild(a); - } - } - } - function w() { - var e, t = createElement("div", "flatpickr-month"), a = window.document.createDocumentFragment(); - n.config.showMonths > 1 || "static" === n.config.monthSelectorType ? e = createElement("span", "cur-month") : (n.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months"), - n.monthsDropdownContainer.setAttribute("aria-label", n.l10n.monthAriaLabel), - f(n.monthsDropdownContainer, "change", (function(e) { - var t = getEventTarget(e) - , a = parseInt(t.value, 10); - n.changeMonth(a - n.currentMonth), - Q("onMonthChange"); - } - )), - y(), - e = n.monthsDropdownContainer); - var i = createNumberInput("cur-year", { - tabindex: "-1" - }) - , o = i.getElementsByTagName("input")[0]; - o.setAttribute("aria-label", n.l10n.yearAriaLabel), - n.config.minDate && o.setAttribute("min", n.config.minDate.getFullYear().toString()), - n.config.maxDate && (o.setAttribute("max", n.config.maxDate.getFullYear().toString()), - o.disabled = !!n.config.minDate && n.config.minDate.getFullYear() === n.config.maxDate.getFullYear()); - var r = createElement("div", "flatpickr-current-month"); - return r.appendChild(e), - r.appendChild(i), - a.appendChild(r), - t.appendChild(a), - { - container: t, - yearElement: o, - monthElement: e - } - } - function E() { - clearNode(n.monthNav), - n.monthNav.appendChild(n.prevMonthNav), - n.config.showMonths && (n.yearElements = [], - n.monthElements = []); - for (var e = n.config.showMonths; e--; ) { - var t = w(); - n.yearElements.push(t.yearElement), - n.monthElements.push(t.monthElement), - n.monthNav.appendChild(t.container); - } - n.monthNav.appendChild(n.nextMonthNav); - } - function k() { - n.weekdayContainer ? clearNode(n.weekdayContainer) : n.weekdayContainer = createElement("div", "flatpickr-weekdays"); - for (var e = n.config.showMonths; e--; ) { - var t = createElement("div", "flatpickr-weekdaycontainer"); - n.weekdayContainer.appendChild(t); - } - return _(), - n.weekdayContainer - } - function _() { - if (n.weekdayContainer) { - var e = n.l10n.firstDayOfWeek - , t = __spreadArrays(n.l10n.weekdays.shorthand); - e > 0 && e < t.length && (t = __spreadArrays(t.splice(e, t.length), t.splice(0, e))); - for (var a = n.config.showMonths; a--; ) - n.weekdayContainer.children[a].innerHTML = "\n \n " + t.join("") + "\n \n "; - } - } - function x(e, t) { - void 0 === t && (t = !0); - var a = t ? e : e - n.currentMonth; - a < 0 && !0 === n._hidePrevMonthArrow || a > 0 && !0 === n._hideNextMonthArrow || (n.currentMonth += a, - (n.currentMonth < 0 || n.currentMonth > 11) && (n.currentYear += n.currentMonth > 11 ? 1 : -1, - n.currentMonth = (n.currentMonth + 12) % 12, - Q("onYearChange"), - y()), - M(), - Q("onMonthChange"), - z()); - } - function T(e) { - return n.calendarContainer.contains(e) - } - function I(e) { - if (n.isOpen && !n.config.inline) { - var t = getEventTarget(e) - , a = T(t) - , i = !(t === n.input || t === n.altInput || n.element.contains(t) || e.path && e.path.indexOf && (~e.path.indexOf(n.input) || ~e.path.indexOf(n.altInput))) && !a && !T(e.relatedTarget) - , o = !n.config.ignoredFocusElements.some((function(e) { - return e.contains(t) - } - )); - i && o && (n.config.allowInput && n.setDate(n._input.value, !1, n.config.altInput ? n.config.altFormat : n.config.dateFormat), - void 0 !== n.timeContainer && void 0 !== n.minuteElement && void 0 !== n.hourElement && "" !== n.input.value && void 0 !== n.input.value && r(), - n.close(), - n.config && "range" === n.config.mode && 1 === n.selectedDates.length && n.clear(!1)); - } - } - function O(e) { - if (!(!e || n.config.minDate && e < n.config.minDate.getFullYear() || n.config.maxDate && e > n.config.maxDate.getFullYear())) { - var t = e - , a = n.currentYear !== t; - n.currentYear = t || n.currentYear, - n.config.maxDate && n.currentYear === n.config.maxDate.getFullYear() ? n.currentMonth = Math.min(n.config.maxDate.getMonth(), n.currentMonth) : n.config.minDate && n.currentYear === n.config.minDate.getFullYear() && (n.currentMonth = Math.max(n.config.minDate.getMonth(), n.currentMonth)), - a && (n.redraw(), - Q("onYearChange"), - y()); - } - } - function S(e, t) { - var a; - void 0 === t && (t = !0); - var i = n.parseDate(e, void 0, t); - if (n.config.minDate && i && compareDates(i, n.config.minDate, void 0 !== t ? t : !n.minDateHasTime) < 0 || n.config.maxDate && i && compareDates(i, n.config.maxDate, void 0 !== t ? t : !n.maxDateHasTime) > 0) - return !1; - if (!n.config.enable && 0 === n.config.disable.length) - return !0; - if (void 0 === i) - return !1; - for (var o = !!n.config.enable, r = null !== (a = n.config.enable) && void 0 !== a ? a : n.config.disable, l = 0, c = void 0; l < r.length; l++) { - if ("function" == typeof (c = r[l]) && c(i)) - return o; - if (c instanceof Date && void 0 !== i && c.getTime() === i.getTime()) - return o; - if ("string" == typeof c) { - var s = n.parseDate(c, void 0, !0); - return s && s.getTime() === i.getTime() ? o : !o - } - if ("object" == typeof c && void 0 !== i && c.from && c.to && i.getTime() >= c.from.getTime() && i.getTime() <= c.to.getTime()) - return o - } - return !o - } - function N(e) { - return void 0 !== n.daysContainer && (-1 === e.className.indexOf("hidden") && -1 === e.className.indexOf("flatpickr-disabled") && n.daysContainer.contains(e)) - } - function A(e) { - var t = e.target === n._input - , a = n._input.value.trimEnd() !== G(); - !t || !a || e.relatedTarget && T(e.relatedTarget) || n.setDate(n._input.value, !0, e.target === n.altInput ? n.config.altFormat : n.config.dateFormat); - } - function P(t) { - var i = getEventTarget(t) - , o = n.config.wrap ? e.contains(i) : i === n._input - , c = n.config.allowInput - , s = n.isOpen && (!c || !o) - , d = n.config.inline && o && !c; - if (13 === t.keyCode && o) { - if (c) - return n.setDate(n._input.value, !0, i === n.altInput ? n.config.altFormat : n.config.dateFormat), - n.close(), - i.blur(); - n.open(); - } else if (T(i) || s || d) { - var f = !!n.timeContainer && n.timeContainer.contains(i); - switch (t.keyCode) { - case 13: - f ? (t.preventDefault(), - r(), - W()) : K(t); - break; - case 27: - t.preventDefault(), - W(); - break; - case 8: - case 46: - o && !n.config.allowInput && (t.preventDefault(), - n.clear()); - break; - case 37: - case 39: - if (f || o) - n.hourElement && n.hourElement.focus(); - else { - t.preventDefault(); - var u = a(); - if (void 0 !== n.daysContainer && (!1 === c || u && N(u))) { - var m = 39 === t.keyCode ? 1 : -1; - t.ctrlKey ? (t.stopPropagation(), - x(m), - C(D(1), 0)) : C(void 0, m); - } - } - break; - case 38: - case 40: - t.preventDefault(); - var g = 40 === t.keyCode ? 1 : -1; - n.daysContainer && void 0 !== i.$i || i === n.input || i === n.altInput ? t.ctrlKey ? (t.stopPropagation(), - O(n.currentYear - g), - C(D(1), 0)) : f || C(void 0, 7 * g) : i === n.currentYearElement ? O(n.currentYear - g) : n.config.enableTime && (!f && n.hourElement && n.hourElement.focus(), - r(t), - n._debouncedChange()); - break; - case 9: - if (f) { - var p = [n.hourElement, n.minuteElement, n.secondElement, n.amPM].concat(n.pluginElements).filter((function(e) { - return e - } - )) - , h = p.indexOf(i); - if (-1 !== h) { - var v = p[h + (t.shiftKey ? -1 : 1)]; - t.preventDefault(), - (v || n._input).focus(); - } - } else - !n.config.noCalendar && n.daysContainer && n.daysContainer.contains(i) && t.shiftKey && (t.preventDefault(), - n._input.focus()); - } - } - if (void 0 !== n.amPM && i === n.amPM) - switch (t.key) { - case n.l10n.amPM[0].charAt(0): - case n.l10n.amPM[0].charAt(0).toLowerCase(): - n.amPM.textContent = n.l10n.amPM[0], - l(), - Z(); - break; - case n.l10n.amPM[1].charAt(0): - case n.l10n.amPM[1].charAt(0).toLowerCase(): - n.amPM.textContent = n.l10n.amPM[1], - l(), - Z(); - } - (o || T(i)) && Q("onKeyDown", t); - } - function Y(e, t) { - if (void 0 === t && (t = "flatpickr-day"), - 1 === n.selectedDates.length && (!e || e.classList.contains(t) && !e.classList.contains("flatpickr-disabled"))) { - for (var a = e ? e.dateObj.getTime() : n.days.firstElementChild.dateObj.getTime(), i = n.parseDate(n.selectedDates[0], void 0, !0).getTime(), o = Math.min(a, n.selectedDates[0].getTime()), r = Math.max(a, n.selectedDates[0].getTime()), l = !1, c = 0, s = 0, d = o; d < r; d += duration.DAY) - S(new Date(d), !0) || (l = l || d > o && d < r, - d < i && (!c || d > c) ? c = d : d > i && (!s || d < s) && (s = d)); - Array.from(n.rContainer.querySelectorAll("*:nth-child(-n+" + n.config.showMonths + ") > ." + t)).forEach((function(t) { - var o = t.dateObj.getTime() - , r = c > 0 && o < c || s > 0 && o > s; - if (r) - return t.classList.add("notAllowed"), - void ["inRange", "startRange", "endRange"].forEach((function(e) { - t.classList.remove(e); - } - )); - l && !r || (["startRange", "inRange", "endRange", "notAllowed"].forEach((function(e) { - t.classList.remove(e); - } - )), - void 0 !== e && (e.classList.add(a <= n.selectedDates[0].getTime() ? "startRange" : "endRange"), - i < a && o === i ? t.classList.add("startRange") : i > a && o === i && t.classList.add("endRange"), - o >= c && (0 === s || o <= s) && isBetween(o, i, a) && t.classList.add("inRange"))); - } - )); - } - } - function F() { - !n.isOpen || n.config.static || n.config.inline || R(); - } - function j(e) { - return function(t) { - var a = n.config["_" + e + "Date"] = n.parseDate(t, n.config.dateFormat) - , i = n.config["_" + ("min" === e ? "max" : "min") + "Date"]; - void 0 !== a && (n["min" === e ? "minDateHasTime" : "maxDateHasTime"] = a.getHours() > 0 || a.getMinutes() > 0 || a.getSeconds() > 0), - n.selectedDates && (n.selectedDates = n.selectedDates.filter((function(e) { - return S(e) - } - )), - n.selectedDates.length || "min" !== e || c(a), - Z()), - n.daysContainer && (B(), - void 0 !== a ? n.currentYearElement[e] = a.getFullYear().toString() : n.currentYearElement.removeAttribute(e), - n.currentYearElement.disabled = !!i && void 0 !== a && i.getFullYear() === a.getFullYear()); - } - } - function H() { - return n.config.wrap ? e.querySelector("[data-input]") : e - } - function L() { - "object" != typeof n.config.locale && void 0 === flatpickr.l10ns[n.config.locale] && n.config.errorHandler(new Error("flatpickr: invalid locale " + n.config.locale)), - n.l10n = __assign(__assign({}, flatpickr.l10ns.default), "object" == typeof n.config.locale ? n.config.locale : "default" !== n.config.locale ? flatpickr.l10ns[n.config.locale] : void 0), - tokenRegex.D = "(" + n.l10n.weekdays.shorthand.join("|") + ")", - tokenRegex.l = "(" + n.l10n.weekdays.longhand.join("|") + ")", - tokenRegex.M = "(" + n.l10n.months.shorthand.join("|") + ")", - tokenRegex.F = "(" + n.l10n.months.longhand.join("|") + ")", - tokenRegex.K = "(" + n.l10n.amPM[0] + "|" + n.l10n.amPM[1] + "|" + n.l10n.amPM[0].toLowerCase() + "|" + n.l10n.amPM[1].toLowerCase() + ")", - void 0 === __assign(__assign({}, t), JSON.parse(JSON.stringify(e.dataset || {}))).time_24hr && void 0 === flatpickr.defaultConfig.time_24hr && (n.config.time_24hr = n.l10n.time_24hr), - n.formatDate = createDateFormatter(n), - n.parseDate = createDateParser({ - config: n.config, - l10n: n.l10n - }); - } - function R(e) { - if ("function" != typeof n.config.position) { - if (void 0 !== n.calendarContainer) { - Q("onPreCalendarPosition"); - var t = e || n._positionElement - , a = Array.prototype.reduce.call(n.calendarContainer.children, (function(e, t) { - return e + t.offsetHeight - } - ), 0) - , i = n.calendarContainer.offsetWidth - , o = n.config.position.split(" ") - , r = o[0] - , l = o.length > 1 ? o[1] : null - , c = t.getBoundingClientRect() - , s = window.innerHeight - c.bottom - , d = "above" === r || "below" !== r && s < a && c.top > a - , f = window.pageYOffset + c.top + (d ? -a - 2 : t.offsetHeight + 2); - if (toggleClass(n.calendarContainer, "arrowTop", !d), - toggleClass(n.calendarContainer, "arrowBottom", d), - !n.config.inline) { - var u = window.pageXOffset + c.left - , m = !1 - , g = !1; - "center" === l ? (u -= (i - c.width) / 2, - m = !0) : "right" === l && (u -= i - c.width, - g = !0), - toggleClass(n.calendarContainer, "arrowLeft", !m && !g), - toggleClass(n.calendarContainer, "arrowCenter", m), - toggleClass(n.calendarContainer, "arrowRight", g); - var p = window.document.body.offsetWidth - (window.pageXOffset + c.right) - , h = u + i > window.document.body.offsetWidth - , v = p + i > window.document.body.offsetWidth; - if (toggleClass(n.calendarContainer, "rightMost", h), - !n.config.static) - if (n.calendarContainer.style.top = f + "px", - h) - if (v) { - var D = function() { - for (var e = null, t = 0; t < document.styleSheets.length; t++) { - var n = document.styleSheets[t]; - if (n.cssRules) { - try { - n.cssRules; - } catch (e) { - continue - } - e = n; - break - } - } - return null != e ? e : (a = document.createElement("style"), - document.head.appendChild(a), - a.sheet); - var a; - }(); - if (void 0 === D) - return; - var C = window.document.body.offsetWidth - , b = Math.max(0, C / 2 - i / 2) - , M = D.cssRules.length - , y = "{left:" + c.left + "px;right:auto;}"; - toggleClass(n.calendarContainer, "rightMost", !1), - toggleClass(n.calendarContainer, "centerMost", !0), - D.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after" + y, M), - n.calendarContainer.style.left = b + "px", - n.calendarContainer.style.right = "auto"; - } else - n.calendarContainer.style.left = "auto", - n.calendarContainer.style.right = p + "px"; - else - n.calendarContainer.style.left = u + "px", - n.calendarContainer.style.right = "auto"; - } - } - } else - n.config.position(n, e); - } - function B() { - n.config.noCalendar || n.isMobile || (y(), - z(), - M()); - } - function W() { - n._input.focus(), - -1 !== window.navigator.userAgent.indexOf("MSIE") || void 0 !== navigator.msMaxTouchPoints ? setTimeout(n.close, 0) : n.close(); - } - function K(e) { - e.preventDefault(), - e.stopPropagation(); - var t = findParent(getEventTarget(e), (function(e) { - return e.classList && e.classList.contains("flatpickr-day") && !e.classList.contains("flatpickr-disabled") && !e.classList.contains("notAllowed") - } - )); - if (void 0 !== t) { - var a = t - , i = n.latestSelectedDateObj = new Date(a.dateObj.getTime()) - , o = (i.getMonth() < n.currentMonth || i.getMonth() > n.currentMonth + n.config.showMonths - 1) && "range" !== n.config.mode; - if (n.selectedDateElem = a, - "single" === n.config.mode) - n.selectedDates = [i]; - else if ("multiple" === n.config.mode) { - var r = X(i); - r ? n.selectedDates.splice(parseInt(r), 1) : n.selectedDates.push(i); - } else - "range" === n.config.mode && (2 === n.selectedDates.length && n.clear(!1, !1), - n.latestSelectedDateObj = i, - n.selectedDates.push(i), - 0 !== compareDates(i, n.selectedDates[0], !0) && n.selectedDates.sort((function(e, t) { - return e.getTime() - t.getTime() - } - ))); - if (l(), - o) { - var c = n.currentYear !== i.getFullYear(); - n.currentYear = i.getFullYear(), - n.currentMonth = i.getMonth(), - c && (Q("onYearChange"), - y()), - Q("onMonthChange"); - } - if (z(), - M(), - Z(), - o || "range" === n.config.mode || 1 !== n.config.showMonths ? void 0 !== n.selectedDateElem && void 0 === n.hourElement && n.selectedDateElem && n.selectedDateElem.focus() : v(a), - void 0 !== n.hourElement && void 0 !== n.hourElement && n.hourElement.focus(), - n.config.closeOnSelect) { - var s = "single" === n.config.mode && !n.config.enableTime - , d = "range" === n.config.mode && 2 === n.selectedDates.length && !n.config.enableTime; - (s || d) && W(); - } - u(); - } - } - n.parseDate = createDateParser({ - config: n.config, - l10n: n.l10n - }), - n._handlers = [], - n.pluginElements = [], - n.loadedPlugins = [], - n._bind = f, - n._setHoursFromDate = c, - n._positionCalendar = R, - n.changeMonth = x, - n.changeYear = O, - n.clear = function(e, t) { - void 0 === e && (e = !0); - void 0 === t && (t = !0); - n.input.value = "", - void 0 !== n.altInput && (n.altInput.value = ""); - void 0 !== n.mobileInput && (n.mobileInput.value = ""); - n.selectedDates = [], - n.latestSelectedDateObj = void 0, - !0 === t && (n.currentYear = n._initialDate.getFullYear(), - n.currentMonth = n._initialDate.getMonth()); - if (!0 === n.config.enableTime) { - var a = getDefaultHours(n.config) - , i = a.hours - , o = a.minutes - , r = a.seconds; - s(i, o, r); - } - n.redraw(), - e && Q("onChange"); - } - , - n.close = function() { - n.isOpen = !1, - n.isMobile || (void 0 !== n.calendarContainer && n.calendarContainer.classList.remove("open"), - void 0 !== n._input && n._input.classList.remove("active")); - Q("onClose"); - } - , - n.onMouseOver = Y, - n._createElement = createElement, - n.createDay = h, - n.destroy = function() { - void 0 !== n.config && Q("onDestroy"); - for (var e = n._handlers.length; e--; ) - n._handlers[e].remove(); - if (n._handlers = [], - n.mobileInput) - n.mobileInput.parentNode && n.mobileInput.parentNode.removeChild(n.mobileInput), - n.mobileInput = void 0; - else if (n.calendarContainer && n.calendarContainer.parentNode) - if (n.config.static && n.calendarContainer.parentNode) { - var t = n.calendarContainer.parentNode; - if (t.lastChild && t.removeChild(t.lastChild), - t.parentNode) { - for (; t.firstChild; ) - t.parentNode.insertBefore(t.firstChild, t); - t.parentNode.removeChild(t); - } - } else - n.calendarContainer.parentNode.removeChild(n.calendarContainer); - n.altInput && (n.input.type = "text", - n.altInput.parentNode && n.altInput.parentNode.removeChild(n.altInput), - delete n.altInput); - n.input && (n.input.type = n.input._type, - n.input.classList.remove("flatpickr-input"), - n.input.removeAttribute("readonly")); - ["_showTimeInput", "latestSelectedDateObj", "_hideNextMonthArrow", "_hidePrevMonthArrow", "__hideNextMonthArrow", "__hidePrevMonthArrow", "isMobile", "isOpen", "selectedDateElem", "minDateHasTime", "maxDateHasTime", "days", "daysContainer", "_input", "_positionElement", "innerContainer", "rContainer", "monthNav", "todayDateElem", "calendarContainer", "weekdayContainer", "prevMonthNav", "nextMonthNav", "monthsDropdownContainer", "currentMonthElement", "currentYearElement", "navigationCurrentMonth", "selectedDateElem", "config"].forEach((function(e) { - try { - delete n[e]; - } catch (e) {} - } - )); - } - , - n.isEnabled = S, - n.jumpToDate = m, - n.updateValue = Z, - n.open = function(e, t) { - void 0 === t && (t = n._positionElement); - if (!0 === n.isMobile) { - if (e) { - e.preventDefault(); - var a = getEventTarget(e); - a && a.blur(); - } - return void 0 !== n.mobileInput && (n.mobileInput.focus(), - n.mobileInput.click()), - void Q("onOpen") - } - if (n._input.disabled || n.config.inline) - return; - var i = n.isOpen; - n.isOpen = !0, - i || (n.calendarContainer.classList.add("open"), - n._input.classList.add("active"), - Q("onOpen"), - R(t)); - !0 === n.config.enableTime && !0 === n.config.noCalendar && (!1 !== n.config.allowInput || void 0 !== e && n.timeContainer.contains(e.relatedTarget) || setTimeout((function() { - return n.hourElement.select() - } - ), 50)); - } - , - n.redraw = B, - n.set = function(e, t) { - if (null !== e && "object" == typeof e) - for (var a in Object.assign(n.config, e), - e) - void 0 !== q[a] && q[a].forEach((function(e) { - return e() - } - )); - else - n.config[e] = t, - void 0 !== q[e] ? q[e].forEach((function(e) { - return e() - } - )) : HOOKS.indexOf(e) > -1 && (n.config[e] = arrayify(t)); - n.redraw(), - Z(!0); - } - , - n.setDate = function(e, t, a) { - void 0 === t && (t = !1); - void 0 === a && (a = n.config.dateFormat); - if (0 !== e && !e || e instanceof Array && 0 === e.length) - return n.clear(t); - U(e, a), - n.latestSelectedDateObj = n.selectedDates[n.selectedDates.length - 1], - n.redraw(), - m(void 0, t), - c(), - 0 === n.selectedDates.length && n.clear(!1); - Z(t), - t && Q("onChange"); - } - , - n.toggle = function(e) { - if (!0 === n.isOpen) - return n.close(); - n.open(e); - } - ; - var q = { - locale: [L, _], - showMonths: [E, o, k], - minDate: [m], - maxDate: [m], - positionElement: [$], - clickOpens: [function() { - !0 === n.config.clickOpens ? (f(n._input, "focus", n.open), - f(n._input, "click", n.open)) : (n._input.removeEventListener("focus", n.open), - n._input.removeEventListener("click", n.open)); - } - ] - }; - function U(e, t) { - var a = []; - if (e instanceof Array) - a = e.map((function(e) { - return n.parseDate(e, t) - } - )); - else if (e instanceof Date || "number" == typeof e) - a = [n.parseDate(e, t)]; - else if ("string" == typeof e) - switch (n.config.mode) { - case "single": - case "time": - a = [n.parseDate(e, t)]; - break; - case "multiple": - a = e.split(n.config.conjunction).map((function(e) { - return n.parseDate(e, t) - } - )); - break; - case "range": - a = e.split(n.l10n.rangeSeparator).map((function(e) { - return n.parseDate(e, t) - } - )); - } - else - n.config.errorHandler(new Error("Invalid date supplied: " + JSON.stringify(e))); - n.selectedDates = n.config.allowInvalidPreload ? a : a.filter((function(e) { - return e instanceof Date && S(e, !1) - } - )), - "range" === n.config.mode && n.selectedDates.sort((function(e, t) { - return e.getTime() - t.getTime() - } - )); - } - function J(e) { - return e.slice().map((function(e) { - return "string" == typeof e || "number" == typeof e || e instanceof Date ? n.parseDate(e, void 0, !0) : e && "object" == typeof e && e.from && e.to ? { - from: n.parseDate(e.from, void 0), - to: n.parseDate(e.to, void 0) - } : e - } - )).filter((function(e) { - return e - } - )) - } - function $() { - n._positionElement = n.config.positionElement || n._input; - } - function Q(e, t) { - if (void 0 !== n.config) { - var a = n.config[e]; - if (void 0 !== a && a.length > 0) - for (var i = 0; a[i] && i < a.length; i++) - a[i](n.selectedDates, n.input.value, n, t); - "onChange" === e && (n.input.dispatchEvent(V("change")), - n.input.dispatchEvent(V("input"))); - } - } - function V(e) { - var t = document.createEvent("Event"); - return t.initEvent(e, !0, !0), - t - } - function X(e) { - for (var t = 0; t < n.selectedDates.length; t++) { - var a = n.selectedDates[t]; - if (a instanceof Date && 0 === compareDates(a, e)) - return "" + t - } - return !1 - } - function z() { - n.config.noCalendar || n.isMobile || !n.monthNav || (n.yearElements.forEach((function(e, t) { - var a = new Date(n.currentYear,n.currentMonth,1); - a.setMonth(n.currentMonth + t), - n.config.showMonths > 1 || "static" === n.config.monthSelectorType ? n.monthElements[t].textContent = monthToStr(a.getMonth(), n.config.shorthandCurrentMonth, n.l10n) + " " : n.monthsDropdownContainer.value = a.getMonth().toString(), - e.value = a.getFullYear().toString(); - } - )), - n._hidePrevMonthArrow = void 0 !== n.config.minDate && (n.currentYear === n.config.minDate.getFullYear() ? n.currentMonth <= n.config.minDate.getMonth() : n.currentYear < n.config.minDate.getFullYear()), - n._hideNextMonthArrow = void 0 !== n.config.maxDate && (n.currentYear === n.config.maxDate.getFullYear() ? n.currentMonth + 1 > n.config.maxDate.getMonth() : n.currentYear > n.config.maxDate.getFullYear())); - } - function G(e) { - var t = e || (n.config.altInput ? n.config.altFormat : n.config.dateFormat); - return n.selectedDates.map((function(e) { - return n.formatDate(e, t) - } - )).filter((function(e, t, a) { - return "range" !== n.config.mode || n.config.enableTime || a.indexOf(e) === t - } - )).join("range" !== n.config.mode ? n.config.conjunction : n.l10n.rangeSeparator) - } - function Z(e) { - void 0 === e && (e = !0), - void 0 !== n.mobileInput && n.mobileFormatStr && (n.mobileInput.value = void 0 !== n.latestSelectedDateObj ? n.formatDate(n.latestSelectedDateObj, n.mobileFormatStr) : ""), - n.input.value = G(n.config.dateFormat), - void 0 !== n.altInput && (n.altInput.value = G(n.config.altFormat)), - !1 !== e && Q("onValueUpdate"); - } - function ee(e) { - var t = getEventTarget(e) - , a = n.prevMonthNav.contains(t) - , i = n.nextMonthNav.contains(t); - a || i ? x(a ? -1 : 1) : n.yearElements.indexOf(t) >= 0 ? t.select() : t.classList.contains("arrowUp") ? n.changeYear(n.currentYear + 1) : t.classList.contains("arrowDown") && n.changeYear(n.currentYear - 1); - } - return function() { - n.element = n.input = e, - n.isOpen = !1, - function() { - var a = ["wrap", "weekNumbers", "allowInput", "allowInvalidPreload", "clickOpens", "time_24hr", "enableTime", "noCalendar", "altInput", "shorthandCurrentMonth", "inline", "static", "enableSeconds", "disableMobile"] - , o = __assign(__assign({}, JSON.parse(JSON.stringify(e.dataset || {}))), t) - , r = {}; - n.config.parseDate = o.parseDate, - n.config.formatDate = o.formatDate, - Object.defineProperty(n.config, "enable", { - get: function() { - return n.config._enable - }, - set: function(e) { - n.config._enable = J(e); - } - }), - Object.defineProperty(n.config, "disable", { - get: function() { - return n.config._disable - }, - set: function(e) { - n.config._disable = J(e); - } - }); - var l = "time" === o.mode; - if (!o.dateFormat && (o.enableTime || l)) { - var c = flatpickr.defaultConfig.dateFormat || defaults.dateFormat; - r.dateFormat = o.noCalendar || l ? "H:i" + (o.enableSeconds ? ":S" : "") : c + " H:i" + (o.enableSeconds ? ":S" : ""); - } - if (o.altInput && (o.enableTime || l) && !o.altFormat) { - var s = flatpickr.defaultConfig.altFormat || defaults.altFormat; - r.altFormat = o.noCalendar || l ? "h:i" + (o.enableSeconds ? ":S K" : " K") : s + " h:i" + (o.enableSeconds ? ":S" : "") + " K"; - } - Object.defineProperty(n.config, "minDate", { - get: function() { - return n.config._minDate - }, - set: j("min") - }), - Object.defineProperty(n.config, "maxDate", { - get: function() { - return n.config._maxDate - }, - set: j("max") - }); - var d = function(e) { - return function(t) { - n.config["min" === e ? "_minTime" : "_maxTime"] = n.parseDate(t, "H:i:S"); - } - }; - Object.defineProperty(n.config, "minTime", { - get: function() { - return n.config._minTime - }, - set: d("min") - }), - Object.defineProperty(n.config, "maxTime", { - get: function() { - return n.config._maxTime - }, - set: d("max") - }), - "time" === o.mode && (n.config.noCalendar = !0, - n.config.enableTime = !0); - Object.assign(n.config, r, o); - for (var f = 0; f < a.length; f++) - n.config[a[f]] = !0 === n.config[a[f]] || "true" === n.config[a[f]]; - HOOKS.filter((function(e) { - return void 0 !== n.config[e] - } - )).forEach((function(e) { - n.config[e] = arrayify(n.config[e] || []).map(i); - } - )), - n.isMobile = !n.config.disableMobile && !n.config.inline && "single" === n.config.mode && !n.config.disable.length && !n.config.enable && !n.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); - for (f = 0; f < n.config.plugins.length; f++) { - var u = n.config.plugins[f](n) || {}; - for (var m in u) - HOOKS.indexOf(m) > -1 ? n.config[m] = arrayify(u[m]).map(i).concat(n.config[m]) : void 0 === o[m] && (n.config[m] = u[m]); - } - o.altInputClass || (n.config.altInputClass = H().className + " " + n.config.altInputClass); - Q("onParseConfig"); - }(), - L(), - function() { - if (n.input = H(), - !n.input) - return void n.config.errorHandler(new Error("Invalid input element specified")); - n.input._type = n.input.type, - n.input.type = "text", - n.input.classList.add("flatpickr-input"), - n._input = n.input, - n.config.altInput && (n.altInput = createElement(n.input.nodeName, n.config.altInputClass), - n._input = n.altInput, - n.altInput.placeholder = n.input.placeholder, - n.altInput.disabled = n.input.disabled, - n.altInput.required = n.input.required, - n.altInput.tabIndex = n.input.tabIndex, - n.altInput.type = "text", - n.input.setAttribute("type", "hidden"), - !n.config.static && n.input.parentNode && n.input.parentNode.insertBefore(n.altInput, n.input.nextSibling)); - n.config.allowInput || n._input.setAttribute("readonly", "readonly"); - $(); - }(), - function() { - n.selectedDates = [], - n.now = n.parseDate(n.config.now) || new Date; - var e = n.config.defaultDate || ("INPUT" !== n.input.nodeName && "TEXTAREA" !== n.input.nodeName || !n.input.placeholder || n.input.value !== n.input.placeholder ? n.input.value : null); - e && U(e, n.config.dateFormat); - n._initialDate = n.selectedDates.length > 0 ? n.selectedDates[0] : n.config.minDate && n.config.minDate.getTime() > n.now.getTime() ? n.config.minDate : n.config.maxDate && n.config.maxDate.getTime() < n.now.getTime() ? n.config.maxDate : n.now, - n.currentYear = n._initialDate.getFullYear(), - n.currentMonth = n._initialDate.getMonth(), - n.selectedDates.length > 0 && (n.latestSelectedDateObj = n.selectedDates[0]); - void 0 !== n.config.minTime && (n.config.minTime = n.parseDate(n.config.minTime, "H:i")); - void 0 !== n.config.maxTime && (n.config.maxTime = n.parseDate(n.config.maxTime, "H:i")); - n.minDateHasTime = !!n.config.minDate && (n.config.minDate.getHours() > 0 || n.config.minDate.getMinutes() > 0 || n.config.minDate.getSeconds() > 0), - n.maxDateHasTime = !!n.config.maxDate && (n.config.maxDate.getHours() > 0 || n.config.maxDate.getMinutes() > 0 || n.config.maxDate.getSeconds() > 0); - }(), - n.utils = { - getDaysInMonth: function(e, t) { - return void 0 === e && (e = n.currentMonth), - void 0 === t && (t = n.currentYear), - 1 === e && (t % 4 == 0 && t % 100 != 0 || t % 400 == 0) ? 29 : n.l10n.daysInMonth[e] - } - }, - n.isMobile || function() { - var e = window.document.createDocumentFragment(); - if (n.calendarContainer = createElement("div", "flatpickr-calendar"), - n.calendarContainer.tabIndex = -1, - !n.config.noCalendar) { - if (e.appendChild((n.monthNav = createElement("div", "flatpickr-months"), - n.yearElements = [], - n.monthElements = [], - n.prevMonthNav = createElement("span", "flatpickr-prev-month"), - n.prevMonthNav.innerHTML = n.config.prevArrow, - n.nextMonthNav = createElement("span", "flatpickr-next-month"), - n.nextMonthNav.innerHTML = n.config.nextArrow, - E(), - Object.defineProperty(n, "_hidePrevMonthArrow", { - get: function() { - return n.__hidePrevMonthArrow - }, - set: function(e) { - n.__hidePrevMonthArrow !== e && (toggleClass(n.prevMonthNav, "flatpickr-disabled", e), - n.__hidePrevMonthArrow = e); - } - }), - Object.defineProperty(n, "_hideNextMonthArrow", { - get: function() { - return n.__hideNextMonthArrow - }, - set: function(e) { - n.__hideNextMonthArrow !== e && (toggleClass(n.nextMonthNav, "flatpickr-disabled", e), - n.__hideNextMonthArrow = e); - } - }), - n.currentYearElement = n.yearElements[0], - z(), - n.monthNav)), - n.innerContainer = createElement("div", "flatpickr-innerContainer"), - n.config.weekNumbers) { - var t = function() { - n.calendarContainer.classList.add("hasWeeks"); - var e = createElement("div", "flatpickr-weekwrapper"); - e.appendChild(createElement("span", "flatpickr-weekday", n.l10n.weekAbbreviation)); - var t = createElement("div", "flatpickr-weeks"); - return e.appendChild(t), - { - weekWrapper: e, - weekNumbers: t - } - }() - , a = t.weekWrapper - , i = t.weekNumbers; - n.innerContainer.appendChild(a), - n.weekNumbers = i, - n.weekWrapper = a; - } - n.rContainer = createElement("div", "flatpickr-rContainer"), - n.rContainer.appendChild(k()), - n.daysContainer || (n.daysContainer = createElement("div", "flatpickr-days"), - n.daysContainer.tabIndex = -1), - M(), - n.rContainer.appendChild(n.daysContainer), - n.innerContainer.appendChild(n.rContainer), - e.appendChild(n.innerContainer); - } - n.config.enableTime && e.appendChild(function() { - n.calendarContainer.classList.add("hasTime"), - n.config.noCalendar && n.calendarContainer.classList.add("noCalendar"); - var e = getDefaultHours(n.config); - n.timeContainer = createElement("div", "flatpickr-time"), - n.timeContainer.tabIndex = -1; - var t = createElement("span", "flatpickr-time-separator", ":") - , a = createNumberInput("flatpickr-hour", { - "aria-label": n.l10n.hourAriaLabel - }); - n.hourElement = a.getElementsByTagName("input")[0]; - var i = createNumberInput("flatpickr-minute", { - "aria-label": n.l10n.minuteAriaLabel - }); - n.minuteElement = i.getElementsByTagName("input")[0], - n.hourElement.tabIndex = n.minuteElement.tabIndex = -1, - n.hourElement.value = pad(n.latestSelectedDateObj ? n.latestSelectedDateObj.getHours() : n.config.time_24hr ? e.hours : function(e) { - switch (e % 24) { - case 0: - case 12: - return 12; - default: - return e % 12 - } - }(e.hours)), - n.minuteElement.value = pad(n.latestSelectedDateObj ? n.latestSelectedDateObj.getMinutes() : e.minutes), - n.hourElement.setAttribute("step", n.config.hourIncrement.toString()), - n.minuteElement.setAttribute("step", n.config.minuteIncrement.toString()), - n.hourElement.setAttribute("min", n.config.time_24hr ? "0" : "1"), - n.hourElement.setAttribute("max", n.config.time_24hr ? "23" : "12"), - n.hourElement.setAttribute("maxlength", "2"), - n.minuteElement.setAttribute("min", "0"), - n.minuteElement.setAttribute("max", "59"), - n.minuteElement.setAttribute("maxlength", "2"), - n.timeContainer.appendChild(a), - n.timeContainer.appendChild(t), - n.timeContainer.appendChild(i), - n.config.time_24hr && n.timeContainer.classList.add("time24hr"); - if (n.config.enableSeconds) { - n.timeContainer.classList.add("hasSeconds"); - var o = createNumberInput("flatpickr-second"); - n.secondElement = o.getElementsByTagName("input")[0], - n.secondElement.value = pad(n.latestSelectedDateObj ? n.latestSelectedDateObj.getSeconds() : e.seconds), - n.secondElement.setAttribute("step", n.minuteElement.getAttribute("step")), - n.secondElement.setAttribute("min", "0"), - n.secondElement.setAttribute("max", "59"), - n.secondElement.setAttribute("maxlength", "2"), - n.timeContainer.appendChild(createElement("span", "flatpickr-time-separator", ":")), - n.timeContainer.appendChild(o); - } - n.config.time_24hr || (n.amPM = createElement("span", "flatpickr-am-pm", n.l10n.amPM[int((n.latestSelectedDateObj ? n.hourElement.value : n.config.defaultHour) > 11)]), - n.amPM.title = n.l10n.toggleTitle, - n.amPM.tabIndex = -1, - n.timeContainer.appendChild(n.amPM)); - return n.timeContainer - }()); - toggleClass(n.calendarContainer, "rangeMode", "range" === n.config.mode), - toggleClass(n.calendarContainer, "animate", !0 === n.config.animate), - toggleClass(n.calendarContainer, "multiMonth", n.config.showMonths > 1), - n.calendarContainer.appendChild(e); - var o = void 0 !== n.config.appendTo && void 0 !== n.config.appendTo.nodeType; - if ((n.config.inline || n.config.static) && (n.calendarContainer.classList.add(n.config.inline ? "inline" : "static"), - n.config.inline && (!o && n.element.parentNode ? n.element.parentNode.insertBefore(n.calendarContainer, n._input.nextSibling) : void 0 !== n.config.appendTo && n.config.appendTo.appendChild(n.calendarContainer)), - n.config.static)) { - var r = createElement("div", "flatpickr-wrapper"); - n.element.parentNode && n.element.parentNode.insertBefore(r, n.element), - r.appendChild(n.element), - n.altInput && r.appendChild(n.altInput), - r.appendChild(n.calendarContainer); - } - n.config.static || n.config.inline || (void 0 !== n.config.appendTo ? n.config.appendTo : window.document.body).appendChild(n.calendarContainer); - }(), - function() { - n.config.wrap && ["open", "close", "toggle", "clear"].forEach((function(e) { - Array.prototype.forEach.call(n.element.querySelectorAll("[data-" + e + "]"), (function(t) { - return f(t, "click", n[e]) - } - )); - } - )); - if (n.isMobile) - return void function() { - var e = n.config.enableTime ? n.config.noCalendar ? "time" : "datetime-local" : "date"; - n.mobileInput = createElement("input", n.input.className + " flatpickr-mobile"), - n.mobileInput.tabIndex = 1, - n.mobileInput.type = e, - n.mobileInput.disabled = n.input.disabled, - n.mobileInput.required = n.input.required, - n.mobileInput.placeholder = n.input.placeholder, - n.mobileFormatStr = "datetime-local" === e ? "Y-m-d\\TH:i:S" : "date" === e ? "Y-m-d" : "H:i:S", - n.selectedDates.length > 0 && (n.mobileInput.defaultValue = n.mobileInput.value = n.formatDate(n.selectedDates[0], n.mobileFormatStr)); - n.config.minDate && (n.mobileInput.min = n.formatDate(n.config.minDate, "Y-m-d")); - n.config.maxDate && (n.mobileInput.max = n.formatDate(n.config.maxDate, "Y-m-d")); - n.input.getAttribute("step") && (n.mobileInput.step = String(n.input.getAttribute("step"))); - n.input.type = "hidden", - void 0 !== n.altInput && (n.altInput.type = "hidden"); - try { - n.input.parentNode && n.input.parentNode.insertBefore(n.mobileInput, n.input.nextSibling); - } catch (e) {} - f(n.mobileInput, "change", (function(e) { - n.setDate(getEventTarget(e).value, !1, n.mobileFormatStr), - Q("onChange"), - Q("onClose"); - } - )); - }(); - var e = debounce(F, 50); - n._debouncedChange = debounce(u, DEBOUNCED_CHANGE_MS), - n.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent) && f(n.daysContainer, "mouseover", (function(e) { - "range" === n.config.mode && Y(getEventTarget(e)); - } - )); - f(n._input, "keydown", P), - void 0 !== n.calendarContainer && f(n.calendarContainer, "keydown", P); - n.config.inline || n.config.static || f(window, "resize", e); - void 0 !== window.ontouchstart ? f(window.document, "touchstart", I) : f(window.document, "mousedown", I); - f(window.document, "focus", I, { - capture: !0 - }), - !0 === n.config.clickOpens && (f(n._input, "focus", n.open), - f(n._input, "click", n.open)); - void 0 !== n.daysContainer && (f(n.monthNav, "click", ee), - f(n.monthNav, ["keyup", "increment"], d), - f(n.daysContainer, "click", K)); - if (void 0 !== n.timeContainer && void 0 !== n.minuteElement && void 0 !== n.hourElement) { - var t = function(e) { - return getEventTarget(e).select() - }; - f(n.timeContainer, ["increment"], r), - f(n.timeContainer, "blur", r, { - capture: !0 - }), - f(n.timeContainer, "click", g), - f([n.hourElement, n.minuteElement], ["focus", "click"], t), - void 0 !== n.secondElement && f(n.secondElement, "focus", (function() { - return n.secondElement && n.secondElement.select() - } - )), - void 0 !== n.amPM && f(n.amPM, "click", (function(e) { - r(e); - } - )); - } - n.config.allowInput && f(n._input, "blur", A); - }(), - (n.selectedDates.length || n.config.noCalendar) && (n.config.enableTime && c(n.config.noCalendar ? n.latestSelectedDateObj : void 0), - Z(!1)), - o(); - var a = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - !n.isMobile && a && R(), - Q("onReady"); - }(), - n - } - function _flatpickr(e, t) { - for (var n = Array.prototype.slice.call(e).filter((function(e) { - return e instanceof HTMLElement - } - )), a = [], i = 0; i < n.length; i++) { - var o = n[i]; - try { - if (null !== o.getAttribute("data-fp-omit")) - continue; - void 0 !== o._flatpickr && (o._flatpickr.destroy(), - o._flatpickr = void 0), - o._flatpickr = FlatpickrInstance(o, t || {}), - a.push(o._flatpickr); - } catch (e) { - console.error(e); - } - } - return 1 === a.length ? a[0] : a - } - "undefined" != typeof HTMLElement && "undefined" != typeof HTMLCollection && "undefined" != typeof NodeList && (HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function(e) { - return _flatpickr(this, e) - } - , - HTMLElement.prototype.flatpickr = function(e) { - return _flatpickr([this], e) - } - ); - var flatpickr = function(e, t) { - return "string" == typeof e ? _flatpickr(window.document.querySelectorAll(e), t) : e instanceof Node ? _flatpickr([e], t) : _flatpickr(e, t) - }; - flatpickr.defaultConfig = {}, - flatpickr.l10ns = { - en: __assign({}, english), - default: __assign({}, english) - }, - flatpickr.localize = function(e) { - flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), e); - } - , - flatpickr.setDefaults = function(e) { - flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), e); - } - , - flatpickr.parseDate = createDateParser({}), - flatpickr.formatDate = createDateFormatter({}), - flatpickr.compareDates = compareDates, - "undefined" != typeof jQuery && void 0 !== jQuery.fn && (jQuery.fn.flatpickr = function(e) { - return _flatpickr(this, e) - } - ), - Date.prototype.fp_incr = function(e) { - return new Date(this.getFullYear(),this.getMonth(),this.getDate() + ("string" == typeof e ? parseInt(e, 10) : e)) - } - , - "undefined" != typeof window && (window.flatpickr = flatpickr); - - const flatpickrInit = ()=>{ - const {getData: e} = window.phoenix.utils; - document.querySelectorAll(".datetimepicker").forEach((t=>{ - const o = e(t, "options"); - flatpickr(t, { - nextArrow: '\x3c!--! Font Awesome Pro 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e', - prevArrow: '\x3c!--! Font Awesome Pro 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --\x3e', - locale: { - firstDayOfWeek: 0, - shorthand: ["S", "M", "T", "W", "T", "F", "S"] - }, - monthSelectorType: "static", - onDayCreate: (e,t,o,c)=>{ - 5 !== c.dateObj.getDay() && 6 !== c.dateObj.getDay() || (c.className += " weekend-days"); - } - , - ...o - }); - } - )); - } - ; - - const formValidationInit = ()=>{ - document.querySelectorAll(".needs-validation").forEach((t=>{ - t.addEventListener("submit", (a=>{ - t.checkValidity() || (a.preventDefault(), - a.stopPropagation()), - t.classList.add("was-validated"); - } - ), !1); - } - )); - } - ; - - const renderCalendar = (e,t)=>{ - const {merge: r} = window._ - , a = r({ - initialView: "dayGridMonth", - editable: !0, - direction: document.querySelector("html").getAttribute("dir"), - headerToolbar: { - left: "prev,next today", - center: "title", - right: "dayGridMonth,timeGridWeek,timeGridDay" - }, - buttonText: { - month: "Month", - week: "Week", - day: "Day" - } - }, t) - , n = new window.FullCalendar.Calendar(e,a); - return n.render(), - document.querySelector(".navbar-vertical-toggle")?.addEventListener("navbar.vertical.toggle", (()=>n.updateSize())), - n - } - ; - const fullCalendarInit = ()=>{ - const {getData: e} = window.phoenix.utils; - document.querySelectorAll("[data-calendar]").forEach((t=>{ - const r = e(t, "calendar"); - renderCalendar(t, r); - } - )); - } - ; - - const glightboxInit = ()=>{ - window.GLightbox && window.GLightbox({ - selector: "[data-gallery]" - }); - } - ; - - function initMap() { - const {getData: e} = window.phoenix.utils - , t = document.body - , l = document.querySelectorAll("[data-googlemap]"); - if (l.length && window.google) { - const i = (e,t)=>{ - const l = document.createElement("button"); - return l.classList.add(t), - l.innerHTML = "zoomIn" === t ? '' : '', - l.addEventListener("click", (()=>{ - const l = e.getZoom(); - "zoomIn" === t && e.setZoom(l + 1), - "zoomOut" === t && e.setZoom(l - 1); - } - )), - l - } - , s = { - SnazzyCustomLight: [{ - featureType: "administrative", - elementType: "all", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "administrative", - elementType: "labels", - stylers: [{ - visibility: "on" - }] - }, { - featureType: "administrative", - elementType: "labels.text.fill", - stylers: [{ - color: "#525b75" - }] - }, { - featureType: "administrative", - elementType: "labels.text.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "administrative", - elementType: "labels.icon", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "administrative.country", - elementType: "geometry.stroke", - stylers: [{ - visibility: "on" - }, { - color: "#ffffff" - }] - }, { - featureType: "administrative.province", - elementType: "geometry.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "landscape", - elementType: "geometry", - stylers: [{ - visibility: "on" - }, { - color: "#E3E6ED" - }] - }, { - featureType: "landscape.natural", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "poi", - elementType: "all", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "road", - elementType: "all", - stylers: [{ - color: "#eff2f6" - }] - }, { - featureType: "road", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "road.arterial", - elementType: "all", - stylers: [{ - visibility: "on" - }] - }, { - featureType: "road.arterial", - elementType: "geometry", - stylers: [{ - visibility: "on" - }, { - color: "#eff2f6" - }] - }, { - featureType: "road.arterial", - elementType: "labels.text.fill", - stylers: [{ - visibility: "on" - }, { - color: "#9fa6bc" - }] - }, { - featureType: "road.arterial", - elementType: "labels.text.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "road.local", - elementType: "geometry.fill", - stylers: [{ - visibility: "on" - }, { - color: "#eff2f6" - }] - }, { - featureType: "road.local", - elementType: "labels.text.fill", - stylers: [{ - visibility: "on" - }, { - color: "#9fa6bc" - }] - }, { - featureType: "road.local", - elementType: "labels.text.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit", - elementType: "labels.icon", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.line", - elementType: "geometry", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.line", - elementType: "labels.text", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.station.airport", - elementType: "geometry", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.station.airport", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "water", - elementType: "geometry", - stylers: [{ - color: "#F5F7FA" - }] - }, { - featureType: "water", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }], - SnazzyCustomDark: [{ - featureType: "administrative", - elementType: "all", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "administrative", - elementType: "labels", - stylers: [{ - visibility: "on" - }] - }, { - featureType: "administrative", - elementType: "labels.text.fill", - stylers: [{ - color: "#8a94ad" - }] - }, { - featureType: "administrative", - elementType: "labels.text.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "administrative", - elementType: "labels.icon", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "administrative.country", - elementType: "geometry.stroke", - stylers: [{ - visibility: "on" - }, { - color: "#000000" - }] - }, { - featureType: "administrative.province", - elementType: "geometry.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "landscape", - elementType: "geometry", - stylers: [{ - visibility: "on" - }, { - color: "#222834" - }] - }, { - featureType: "landscape.natural", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "poi", - elementType: "all", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "road", - elementType: "all", - stylers: [{ - color: "#141824" - }] - }, { - featureType: "road", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "road.arterial", - elementType: "all", - stylers: [{ - visibility: "on" - }] - }, { - featureType: "road.arterial", - elementType: "geometry", - stylers: [{ - visibility: "on" - }, { - color: "#141824" - }] - }, { - featureType: "road.arterial", - elementType: "labels.text.fill", - stylers: [{ - visibility: "on" - }, { - color: "#525b75" - }] - }, { - featureType: "road.arterial", - elementType: "labels.text.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "road.local", - elementType: "geometry.fill", - stylers: [{ - visibility: "on" - }, { - color: "#141824" - }] - }, { - featureType: "road.local", - elementType: "labels.text.fill", - stylers: [{ - visibility: "on" - }, { - color: "#67718A" - }] - }, { - featureType: "road.local", - elementType: "labels.text.stroke", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit", - elementType: "labels.icon", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.line", - elementType: "geometry", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.line", - elementType: "labels.text", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.station.airport", - elementType: "geometry", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "transit.station.airport", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }, { - featureType: "water", - elementType: "geometry", - stylers: [{ - color: "#0f111a" - }] - }, { - featureType: "water", - elementType: "labels", - stylers: [{ - visibility: "off" - }] - }] - }; - l.forEach((l=>{ - const o = e(l, "latlng").split(",") - , r = l.innerHTML - , a = e(l, "zoom") - , y = l - , n = e(l, "phoenixTheme"); - if ("streetview" === e(l, "phoenixTheme")) { - const t = e(l, "pov") - , i = { - position: { - lat: Number(o[0]), - lng: Number(o[1]) - }, - pov: t, - zoom: a, - gestureHandling: "none", - scrollwheel: !1 - }; - return new window.google.maps.StreetViewPanorama(y,i) - } - const p = { - zoom: a, - minZoom: 1.2, - clickableIcons: !1, - zoomControl: !1, - zoomControlOptions: { - position: window.google.maps.ControlPosition.LEFT - }, - scrollwheel: e(l, "scrollwheel"), - disableDefaultUI: !0, - center: new window.google.maps.LatLng(o[0],o[1]), - styles: "dark" === window.config.config.phoenixTheme ? s.SnazzyCustomDark : s[n || "SnazzyCustomLight"] - } - , f = new window.google.maps.Map(y,p) - , m = new window.google.maps.InfoWindow({ - content: r - }) - , T = document.createElement("div"); - T.classList.add("google-map-control-btn"); - const b = i(f, "zoomIn") - , u = i(f, "zoomOut"); - T.appendChild(b), - T.appendChild(u), - f.controls[window.google.maps.ControlPosition.LEFT].push(T); - const c = new window.google.maps.Marker({ - position: new window.google.maps.LatLng(o[0],o[1]), - map: f - }); - c.addListener("click", (()=>{ - m.open(f, c); - } - )), - t && t.addEventListener("clickControl", (({detail: {control: e, value: t}})=>{ - "phoenixTheme" === e && f.set("styles", "dark" === t ? s.SnazzyCustomDark : s.SnazzyCustomLight); - } - )); - } - )); - } - } - - const iconCopiedInit = ()=>{ - const e = document.getElementById("icon-list") - , t = document.getElementById("icon-copied-toast") - , o = new window.bootstrap.Toast(t); - e && e.addEventListener("click", (e=>{ - const n = e.target; - "INPUT" === n.tagName && (n.select(), - n.setSelectionRange(0, 99999), - document.execCommand("copy"), - t.querySelector(".toast-body").innerHTML = `Copied: ${n.value}`, - o.show()); - } - )); - } - ; - - const isotopeInit = ()=>{ - const {getData: e} = window.phoenix.utils - , t = ".isotope-item" - , o = "[data-sl-isotope]" - , i = "[data-filter]" - , a = "[data-filter-nav]" - , l = "sl-isotope" - , r = "active"; - if (window.Isotope) { - const s = document.querySelectorAll(o); - s.length && s.forEach((o=>{ - window.imagesLoaded(o, (()=>{ - o.querySelectorAll(t).forEach((e=>{ - e.style.visibility = "visible"; - } - )); - const s = e(o, l) - , n = { - itemSelector: t, - layoutMode: "packery" - } - , c = window._.merge(n, s) - , d = new window.Isotope(o,c); - return document.querySelector(a)?.addEventListener("click", (function(e) { - const t = e.target.dataset.filter; - d.arrange({ - filter: t - }), - document.querySelectorAll(i).forEach((e=>{ - e.classList.remove(r); - } - )), - e.target.classList.add(r); - } - )), - d - } - )); - } - )); - } - } - ; - - const togglePaginationButtonDisable = (e,t)=>{ - e.disabled = t, - e.classList[t ? "add" : "remove"]("disabled"); - } - , listInit = ()=>{ - const {getData: e} = window.phoenix.utils; - if (window.List) { - const t = document.querySelectorAll("[data-list]"); - t.length && t.forEach((t=>{ - const a = t.querySelector("[data-bulk-select]"); - let n = e(t, "list"); - n.pagination && (n = { - ...n, - pagination: { - item: "
  • ", - ...n.pagination - } - }); - const i = t.querySelector('[data-list-pagination="next"]') - , s = t.querySelector('[data-list-pagination="prev"]') - , l = t.querySelector('[data-list-view="*"]') - , o = t.querySelector('[data-list-view="less"]') - , c = t.querySelector("[data-list-info]") - , r = document.querySelector("[data-list-filter]") - , g = new List(t,n); - let d = g.items.length; - const h = g.page - , u = g.listContainer.querySelector(".btn-close"); - let m = Math.ceil(g.size() / g.page) - , p = 1 - , b = (p - 1) * Number(g.page) + g.visibleItems.length - , v = !1; - u && u.addEventListener("search.close", (()=>{ - g.fuzzySearch(""); - } - )); - const f = ()=>{ - c && (c.innerHTML = `${g.i} to ${b} Items of ${d}`), - s && togglePaginationButtonDisable(s, 1 === p || 0 === p), - i && togglePaginationButtonDisable(i, p === m || 0 === p), - p > 1 && p < m && (togglePaginationButtonDisable(i, !1), - togglePaginationButtonDisable(s, !1)); - } - ; - f(), - i && i.addEventListener("click", (e=>{ - e.preventDefault(), - p += 1; - const t = g.i + h; - t <= g.size() && g.show(t, h); - } - )), - s && s.addEventListener("click", (e=>{ - e.preventDefault(), - p -= 1; - const t = g.i - h; - t > 0 && g.show(t, h); - } - )); - const w = ()=>{ - o.classList.toggle("d-none"), - l.classList.toggle("d-none"); - } - ; - if (l && l.addEventListener("click", (()=>{ - g.show(1, d), - p = 1, - w(); - } - )), - o && o.addEventListener("click", (()=>{ - g.show(1, h), - p = 1, - w(); - } - )), - n.pagination && t.querySelector(".pagination").addEventListener("click", (e=>{ - if ("page" === e.target.classList[0]) { - const t = Number(e.target.getAttribute("data-i")); - t && (g.show(h * (t - 1) + 1, g.page), - p = t); - } - } - )), - n.filter) { - const {key: e} = n.filter; - r.addEventListener("change", (t=>{ - g.filter((a=>"" === t.target.value || (m = Math.ceil(g.matchingItems.length / g.page), - p = 1, - f(), - a.values()[e].toLowerCase().includes(t.target.value.toLowerCase())))); - } - )); - } - if (a) { - window.phoenix.BulkSelect.getInstance(a).attachRowNodes(g.items.map((e=>e.elm.querySelector("[data-bulk-select-row]")))), - a.addEventListener("change", (()=>{ - g && (a.checked ? g.items.forEach((e=>{ - e.elm.querySelector("[data-bulk-select-row]").checked = !0; - } - )) : g.items.forEach((e=>{ - e.elm.querySelector("[data-bulk-select-row]").checked = !1; - } - ))); - } - )); - } - g.on("searchStart", (()=>{ - v = !0; - } - )), - g.on("searchComplete", (()=>{ - v = !1; - } - )), - g.on("updated", (e=>{ - m = g.matchingItems.length ? Math.ceil(g.matchingItems.length / g.page) : Math.ceil(g.size() / g.page), - b = (p - 1) * Number(g.page) + g.visibleItems.length, - f(), - v && (p = 0 === g.matchingItems.length ? 0 : 1, - d = g.matchingItems.length, - b = (0 === p ? 1 : p - 1) * Number(g.page) + g.visibleItems.length, - f(), - c && (c.innerHTML = `${0 === g.matchingItems.length ? 0 : g.i} to ${0 === g.matchingItems.length ? 0 : b} Items of ${g.matchingItems.length}`)); - const a = t.querySelector(".fallback") || document.getElementById(n.fallback); - a && (0 === e.matchingItems.length ? a.classList.remove("d-none") : a.classList.add("d-none")); - } - )); - } - )); - } - } - ; - - const lottieInit = ()=>{ - const {getData: o} = window.phoenix.utils - , t = document.querySelectorAll(".lottie"); - t.length && t.forEach((t=>{ - const n = o(t, "options"); - window.bodymovin.loadAnimation({ - container: t, - path: "../img/animated-icons/warning-light.json", - renderer: "svg", - loop: !0, - autoplay: !0, - name: "Hello World", - ...n - }); - } - )); - } - ; - - const modalInit = ()=>{ - const o = document.querySelectorAll("[data-phoenix-modal]"); - o && o.forEach((o=>{ - o.addEventListener("shown.bs.modal", (()=>{ - o.querySelectorAll("[autofocus=autofocus]").forEach((o=>{ - o.focus(); - } - )); - } - )); - } - )); - } - ; - - const navbarComboInit = ()=>{ - const {getBreakpoint: e, getData: n, addClass: r, hasClass: t, resize: o} = window.phoenix.utils - , a = ".navbar-vertical" - , c = '[data-navbar-top="combo"]' - , i = ".collapse" - , l = "[data-move-container]" - , s = ".navbar-nav" - , d = ".navbar-vertical-divider" - , v = "flex-column" - , u = document.querySelector(a) - , m = document.querySelector(c) - , b = o=>{ - const a = e(u) - , c = e(m); - if (o < c) { - const e = m.querySelector(i) - , t = e.innerHTML; - if (t) { - const o = n(m, "move-target") - , i = document.querySelector(o); - if (e.innerHTML = "", - i.insertAdjacentHTML("afterend", `\n
    \n \n ${t}\n
    \n `), - a < c) { - const e = document.querySelector(l).querySelector(s); - r(e, v); - } - } - } else { - const e = document.querySelector(l); - if (e) { - const n = e.querySelector(s); - t(n, v) && n.classList.remove(v), - e.querySelector(d).remove(), - m.querySelector(i).innerHTML = e.innerHTML, - e.remove(); - } - } - } - ; - b(window.innerWidth), - o((()=>b(window.innerWidth))); - } - ; - - const navbarShadowOnScrollInit = ()=>{ - const a = document.querySelector("[data-navbar-shadow-on-scroll]"); - a && (window.onscroll = ()=>{ - window.scrollY > 300 ? a.classList.add("navbar-shadow") : a.classList.remove("navbar-shadow"); - } - ); - } - ; - - const navbarInit = ()=>{ - const n = document.querySelector("[data-navbar-soft-on-scroll]"); - if (n) { - const t = window.innerHeight - , e = ()=>{ - let e = window.pageYOffset / t * 2; - e >= 1 && (e = 1), - n.style.backgroundColor = `rgba(255, 255, 255, ${e})`; - } - ; - e(), - document.addEventListener("scroll", (()=>e())); - } - } - ; - - const handleNavbarVerticalCollapsed = ()=>{ - const {getItemFromStore: e, setItemToStore: t, resize: a} = window.phoenix.utils - , o = "body" - , n = ".navbar-vertical" - , l = ".navbar-vertical-toggle" - , r = ".navbar-vertical .navbar-collapse" - , c = ".navbar-vertical .nav-link.active" - , i = "click" - , s = "navbar.vertical.toggle" - , d = "navbar-vertical-collapsed" - , v = document.querySelector(l) - , m = document.querySelector(r) - , u = document.querySelector(c) - , b = e("phoenixIsNavbarVerticalCollapsed", !1); - v && v.addEventListener(i, (e=>{ - v.blur(), - document.documentElement.classList.toggle(d), - t("phoenixIsNavbarVerticalCollapsed", !b); - const a = new CustomEvent(s); - e.currentTarget?.dispatchEvent(a); - } - )), - m && u && !b && u.scrollIntoView({ - behavior: "smooth" - }); - const g = ()=>{ - const e = document.querySelector(o).offsetHeight - , t = document.querySelector(n)?.offsetHeight; - document.documentElement.classList.contains(d) && e < t ? document.documentElement.style.minHeight = `${t}px` : document.documentElement.removeAttribute("style"); - } - ; - g(), - a((()=>{ - g(); - } - )), - v && v.addEventListener("navbar.vertical.toggle", (()=>{ - g(); - } - )); - } - ; - - const phoenixOffcanvasInit = ()=>{ - const {getData: e} = window.phoenix.utils - , o = document.querySelectorAll("[data-phoenix-toggle='offcanvas']") - , t = document.querySelector("[data-phoenix-backdrop]") - , a = document.querySelector("[data-phoenix-scroll]") - , c = document.querySelector(".faq") - , n = document.querySelector(".faq-sidebar") - , s = e=>{ - e.classList.remove("show"), - document.body.style.removeProperty("overflow"); - } - ; - o && o.forEach((o=>{ - const c = e(o, "phoenix-target") - , n = document.querySelector(c) - , d = n.querySelectorAll("[data-phoenix-dismiss='offcanvas']"); - o.addEventListener("click", (()=>{ - n.classList.add("show"), - a || (document.body.style.overflow = "hidden"); - } - )), - d && d.forEach((e=>{ - e.addEventListener("click", (()=>{ - s(n); - } - )); - } - )), - t && t.addEventListener("click", (()=>{ - s(n); - } - )); - } - )), - c && n.classList.contains("show") && (c.classList.add = "newFaq"); - } - ; - - const picmoInit = ()=>{ - const {getData: e} = window.phoenix.utils - , t = document.querySelectorAll("[data-picmo]"); - t && Array.from(t).forEach((t=>{ - const o = e(t, "picmo") - , n = window.picmoPopup.createPopup({}, { - referenceElement: t, - triggerElement: t, - position: "bottom-start", - showCloseButton: !1 - }); - t.addEventListener("click", (()=>{ - n.toggle(); - } - )); - const i = document.querySelector(o.inputTarget); - n.addEventListener("emoji:select", (e=>{ - i && (i.innerHTML += e.emoji); - } - )); - } - )); - } - ; - - const popoverInit = ()=>{ - Array.from(document.querySelectorAll('[data-bs-toggle="popover"]')).map((o=>new bootstrap.Popover(o))); - } - ; - - const getThubmnailDirection = ()=>window.innerWidth < 768 || window.innerWidth >= 992 && window.innerWidth < 1200 ? "horizontal" : "vertical" - , productDetailsInit = ()=>{ - const {getData: e, resize: t} = window.phoenix.utils - , i = document.querySelector("[data-product-details]"); - if (i) { - const r = i.querySelector("[data-product-color]") - , n = (i.querySelector("[data-product-quantity]"), - i.querySelector('[data-quantity] input[type="number"]')) - , a = i.querySelector("[data-product-color-variants]") - , c = r=>{ - const n = i.querySelector("[data-products-swiper]") - , a = e(n, "swiper") - , c = e(n, "thumb-target") - , s = document.getElementById(c); - let o = ""; - r.forEach((e=>{ - o += `\n
    \n \n
    \n `; - } - )), - n.innerHTML = `
    ${o}
    `; - let d = ""; - r.forEach((e=>{ - d += `\n
    \n
    \n \n
    \n
    \n `; - } - )), - s.innerHTML = `
    ${d}
    `; - const l = new window.Swiper(s,{ - slidesPerView: 5, - spaceBetween: 16, - direction: getThubmnailDirection(), - breakpoints: { - 768: { - spaceBetween: 100 - }, - 992: { - spaceBetween: 16 - } - } - }) - , p = n.querySelector(".swiper-nav"); - t((()=>{ - l.changeDirection(getThubmnailDirection()); - } - )), - new Swiper(n,{ - ...a, - navigation: { - nextEl: p?.querySelector(".swiper-button-next"), - prevEl: p?.querySelector(".swiper-button-prev") - }, - thumbs: { - swiper: l - } - }); - } - , s = a.querySelectorAll("[data-variant]"); - s.forEach((t=>{ - t.classList.contains("active") && (c(e(t, "products-images")), - r.innerHTML = e(t, "variant")); - const i = e(t, "products-images"); - t.addEventListener("click", (()=>{ - c(i), - s.forEach((e=>{ - e.classList.remove("active"); - } - )), - t.classList.add("active"), - r.innerHTML = e(t, "variant"); - } - )); - } - )), - n.addEventListener("change", (e=>{ - "" == e.target.value && (e.target.value = 0); - } - )); - } - } - ; - - const quantityInit = ()=>{ - const {getData: t} = window.phoenix.utils - , e = "[data-quantity] [data-type]" - , a = "[data-quantity]" - , n = '[data-quantity] input[type="number"]' - , u = "click" - , i = "min" - , r = "type"; - document.querySelectorAll(e).forEach((e=>{ - e.addEventListener(u, (e=>{ - const u = e.currentTarget - , l = t(u, r) - , c = u.closest(a).querySelector(n) - , o = c.getAttribute(i); - let y = parseInt(c.value, 10); - "plus" === l ? y += 1 : y = y > o ? y -= 1 : y, - c.value = y; - } - )); - } - )); - } - ; - - const randomColorInit = ()=>{ - const {getData: o} = window.phoenix.utils - , t = document.querySelectorAll("[data-random-color]") - , r = ["#EFF2F6", "#E3E6ED", "#CBD0DD", "#85A9FF", "#60C6FF", "#90D67F", "#F48270", "#FFCC85", "#3874FF", "#0097EB", "#25B003", "#EC1F00", "#E5780B", "#004DFF", "#0080C7", "#23890B", "#CC1B00", "#D6700A", "#222834", "#3E465B", "#6E7891", "#9FA6BC"]; - t.forEach((t=>{ - const e = o(t, "random-color"); - let n; - n = Array.isArray(e) ? [...r, ...e] : [...r], - t.addEventListener("click", (o=>{ - const t = n[Math.floor(Math.random() * (n.length - 1))]; - o.target.value = t; - const r = o.target.nextElementSibling; - r.style.background = `${t}`, - r.style.borderColor = `${t}`, - r.style.color = "white"; - } - )); - } - )); - } - ; - - const ratingInit = ()=>{ - const {getData: t, getItemFromStore: e} = window.phoenix.utils; - document.querySelectorAll("[data-rater]").forEach((r=>{ - const a = { - reverse: e("phoenixIsRTL"), - starSize: 32, - step: .5, - element: r, - rateCallback(t, e) { - this.setRating(t), - e(); - }, - ...t(r, "rater") - }; - return window.raterJs(a) - } - )); - } - ; - - const responsiveNavItemsInit = ()=>{ - const {resize: e} = window.phoenix.utils - , t = "[data-nav-item]" - , l = "[data-navbar]" - , o = "[data-more-item]" - , i = "[data-category-list]" - , n = "[data-category-btn]" - , s = document.querySelector(l) - , a = ()=>{ - const e = s.clientWidth - , l = s.querySelector(o) - , i = l.clientWidth - , a = e - i - , r = s.querySelectorAll(t) - , c = s.querySelector(n).clientWidth; - let d = 0; - l.style.display = "none", - r.forEach((e=>{ - const t = e.clientWidth; - if (d += t, - d + c + i > a && !e.classList.contains("dropdown")) { - l.style.display = "block", - e.style.display = "none"; - const t = e.firstChild.cloneNode(!0); - s.querySelector(".category-list").appendChild(t); - } - } - )); - s.querySelectorAll(".dropdown-menu .nav-link").forEach((e=>{ - e.classList.remove("nav-link"), - e.classList.add("dropdown-item"); - } - )); - } - ; - if (s) { - window.addEventListener("load", (()=>{ - a(); - } - )), - e((()=>{ - const e = s.querySelectorAll(t) - , l = s.querySelectorAll(i); - e.forEach((e=>e.removeAttribute("style"))), - l.forEach((e=>e.innerHTML = "")), - a(); - } - )); - const l = s.querySelectorAll(".nav-link"); - s.addEventListener("click", (function(e) { - for (let e = 0; e < l.length; e++) - l[e].classList.remove("active"); - e.target.closest("li") && e.target.closest("li").classList.add("active"); - } - )); - } - } - ; - - const searchInit = ()=>{ - const e = '[data-bs-dismiss="search"]' - , t = '[data-bs-toggle="dropdown"]' - , s = ".dropdown-menu" - , r = ".search-box" - , c = ".search-input" - , o = '[data-bs-toggle="search"]' - , a = "show" - , n = "aria-expanded" - , d = "click" - , l = "focus" - , u = "show.bs.dropdown" - , i = "search.close" - , h = e=>{ - const t = e.querySelector(o) - , r = e.querySelector(s); - t && r && (t.setAttribute(n, "false"), - t.classList.remove(a), - r.classList.remove(a)); - } - , v = document.querySelectorAll(r) - , E = ()=>{ - v.forEach(h); - } - ; - v.forEach((t=>{ - const r = t.querySelector(c) - , u = t.querySelector(e) - , v = t.querySelector(s); - r && r.addEventListener(l, (()=>{ - E(); - const e = t.querySelector(o); - e && v && (e.setAttribute(n, "true"), - e.classList.add(a), - v.classList.add(a)); - } - )), - document.addEventListener(d, (({target: e})=>{ - !t.contains(e) && h(t); - } - )), - u && u.addEventListener(d, (e=>{ - h(t), - r.value = ""; - const s = new CustomEvent(i); - e.currentTarget.dispatchEvent(s); - } - )); - } - )), - document.querySelectorAll(t).forEach((e=>{ - e.addEventListener(u, (()=>{ - E(); - } - )); - } - )); - } - ; - - const simplebarInit = ()=>{ - Array.from(document.querySelectorAll(".scrollbar-overlay")).forEach((r=>new window.SimpleBar(r))); - } - ; - - const sortableInit = ()=>{ - const {getData: e} = window.phoenix.utils - , o = document.querySelectorAll("[data-sortable]") - , t = { - animation: 150, - group: { - name: "shared" - }, - delay: 100, - delayOnTouchOnly: !0, - forceFallback: !0, - onStart() { - document.body.classList.add("sortable-dragging"); - }, - onEnd() { - document.body.classList.remove("sortable-dragging"); - } - }; - o.forEach((o=>{ - const a = e(o, "sortable") - , n = window._.merge(t, a); - return window.Sortable.create(o, n) - } - )); - } - ; - - const supportChatInit = ()=>{ - const t = document.querySelector(".support-chat") - , o = document.querySelectorAll(".btn-support-chat") - , c = document.querySelector(".support-chat-container") - , {phoenixSupportChat: s} = window.config.config; - s && c?.classList.add("show"), - o && o.forEach((s=>{ - s.addEventListener("click", (()=>{ - t.classList.toggle("show-chat"), - o[o.length - 1].classList.toggle("btn-chat-close"), - c.classList.add("show"); - } - )); - } - )); - } - ; - - const swiperInit = ()=>{ - const {getData: e} = window.phoenix.utils - , t = document.querySelectorAll(".swiper-theme-container"); - t && t.forEach((t=>{ - const r = t.querySelector("[data-swiper]") - , n = e(r, "swiper") - , i = n.thumb; - let s; - if (i) { - const e = r.querySelectorAll("img"); - let t = ""; - e.forEach((e=>{ - t += `\n
    \n \n
    \n `; - } - )); - const n = document.createElement("div"); - if (n.setAttribute("class", "swiper-container thumb"), - n.innerHTML = `
    ${t}
    `, - i.parent) { - document.querySelector(i.parent).parentNode.appendChild(n); - } else - r.parentNode.appendChild(n); - s = new window.Swiper(n,i); - } - const o = t.querySelector(".swiper-nav"); - new window.Swiper(r,{ - ...n, - navigation: { - nextEl: o?.querySelector(".swiper-button-next"), - prevEl: o?.querySelector(".swiper-button-prev") - }, - thumbs: { - swiper: s - } - }); - } - )); - } - ; - - const {config: config} = window.config - , initialDomSetup = e=>{ - const {getData: t, getItemFromStore: o} = window.phoenix.utils; - e && e.querySelectorAll("[data-theme-control]").forEach((e=>{ - const a = t(e, "theme-control") - , r = o(a); - "phoenixNavbarTopShape" === a && "dual-nav" === o("phoenixNavbarPosition") && e.setAttribute("disabled", !0); - const n = o("phoenixNavbarPosition"); - if ("phoenixNavbarVerticalStyle" === a && ("horizontal" === n || "dual-nav" === n) && e.setAttribute("disabled", !0), - "checkbox" === e.type) - "phoenixTheme" === a ? "dark" === r && e.setAttribute("checked", !0) : r && e.setAttribute("checked", !0); - else if ("radio" === e.type && "phoenixNavbarVerticalStyle" === a) - "darker" === r && "darker" === e.value && e.setAttribute("checked", !0), - "default" === r && "default" === e.value && e.setAttribute("checked", !0); - else if ("radio" === e.type && "phoenixNavbarTopShape" === a) - "slim" === r && "slim" === e.value && e.setAttribute("checked", !0), - "default" === r && "default" === e.value && e.setAttribute("checked", !0); - else if ("radio" === e.type && "phoenixNavbarTopStyle" === a) - "darker" === r && "darker" === e.value && e.setAttribute("checked", !0), - "default" === r && "default" === e.value && e.setAttribute("checked", !0); - else { - r === e.value && e.setAttribute("checked", !0); - } - } - )); - } - , changeTheme = e=>{ - const {getData: t, getItemFromStore: o} = window.phoenix.utils; - e.querySelectorAll('[data-theme-control = "phoenixTheme"]').forEach((e=>{ - const a = t(e, "theme-control") - , r = o(a); - "checkbox" === e.type ? e.checked = "dark" === r : r === e.value ? e.checked = !0 : e.checked = !1; - } - )); - } - , themeControl = ()=>{ - const {getData: e, getItemFromStore: t} = window.phoenix.utils - , o = t=>{ - const o = e(t, "page-url"); - o ? window.location.replace(o) : window.location.reload(); - } - , a = new DomNode(document.body) - , r = document.querySelector(".navbar-vertical") - , n = document.querySelector(".navbar-top") - , i = document.querySelector(".support-chat-container"); - initialDomSetup(a.node), - a.on("click", (e=>{ - const c = new DomNode(e.target); - if (c.data("theme-control")) { - const l = c.data("theme-control"); - let d = e.target["radio" === e.target.type ? "value" : "checked"]; - switch ("phoenixTheme" === l && "boolean" == typeof d && (d = d ? "dark" : "light"), - config.hasOwnProperty(l) && window.config.set({ - [l]: d - }), - window.history.replaceState(null, null, window.location.pathname), - l) { - case "phoenixTheme": - { - document.documentElement.classList["dark" === d ? "add" : "remove"]("dark"); - const t = new CustomEvent("clickControl",{ - detail: { - control: l, - value: d - } - }); - e.currentTarget.dispatchEvent(t), - changeTheme(a.node); - break - } - case "phoenixNavbarVerticalStyle": - r.classList.remove("navbar-darker"), - "default" !== d && r.classList.add(`navbar-${d}`); - break; - case "phoenixNavbarTopStyle": - n.classList.remove("navbar-darker"), - "transparent" !== d && n.classList.add(`navbar-${d}`); - break; - case "phoenixNavbarTopShape": - "dual-nav" === t("phoenixNavbarPosition") ? el.setAttribute("disabled", !0) : o(c.node); - break; - case "phoenixNavbarPosition": - o(c.node); - break; - case "phoenixIsRTL": - window.config.set({ - phoenixIsRTL: c.node.checked - }), - window.location.reload(); - break; - case "phoenixSupportChat": - i?.classList.remove("show"), - d && i?.classList.add("show"); - break; - case "reset": - window.config.reset(), - window.location.reload(); - break; - default: - window.location.reload(); - } - } - } - )); - } - ; - - const {merge: merge} = window._ - , tinymceInit = ()=>{ - const {getColor: e, getData: t, getItemFromStore: n} = window.phoenix.utils - , o = document.querySelectorAll("[data-tinymce]"); - if (window.tinymce) { - document.querySelector(".tox-sidebar-wrap"); - o.forEach((o=>{ - const i = t(o, "tinymce") - , r = merge({ - selector: ".tinymce", - height: "50vh", - skin: "oxide", - menubar: !1, - content_style: `\n .mce-content-body { \n color: ${e("black")} \n }\n .mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {\n color: ${e("gray-400")};\n font-weight: 400;\n font-size: 12.8px;\n }\n `, - statusbar: !1, - plugins: "link,image,lists,table,media", - theme_advanced_toolbar_align: "center", - directionality: n("phoenixIsRTL") ? "rtl" : "ltr", - toolbar: [{ - name: "history", - items: ["undo", "redo"] - }, { - name: "formatting", - items: ["bold", "italic", "underline", "strikethrough"] - }, { - name: "alignment", - items: ["alignleft", "aligncenter", "alignright", "alignjustify"] - }, { - name: "list", - items: ["numlist", "bullist"] - }, { - name: "link", - items: ["link"] - }], - setup: e=>{ - e.on("focus", (()=>{ - document.querySelector(".tox-sidebar-wrap").classList.add("editor-focused"); - } - )), - e.on("blur", (()=>{ - document.querySelector(".tox-sidebar-wrap").classList.remove("editor-focused"); - } - )); - } - }, i); - window.tinymce.init(r); - } - )); - const i = document.body; - i && i.addEventListener("clickControl", (({detail: {control: t}})=>{ - "phoenixTheme" === t && o.forEach((t=>{ - window.tinymce.get(t.id).dom.addStyle(`.mce-content-body{color: ${e("black")} !important;}`); - } - )); - } - )); - } - } - ; - - const toastInit = ()=>{ - [].slice.call(document.querySelectorAll(".toast")).map((t=>new bootstrap.Toast(t))); - const t = document.getElementById("liveToastBtn"); - if (t) { - const e = new bootstrap.Toast(document.getElementById("liveToast")); - t.addEventListener("click", (()=>{ - e && e.show(); - } - )); - } - } - ; - - const todoOffcanvasInit = ()=>{ - const {getData: o} = window.phoenix.utils - , t = document.querySelectorAll("[data-event-propagation-prevent]"); - t && t.forEach((o=>{ - o.addEventListener("click", (o=>{ - o.stopPropagation(); - } - )); - } - )); - const e = document.querySelector(".todo-list"); - if (e) { - e.querySelectorAll("[data-todo-offcanvas-toogle]").forEach((t=>{ - const a = o(t, "todo-offcanvas-target") - , n = e.querySelector(`#${a}`) - , c = new window.bootstrap.Offcanvas(n,{ - backdrop: !0 - }); - t.addEventListener("click", (()=>{ - c.show(); - } - )); - } - )); - } - } - ; - - const tooltipInit = ()=>{ - [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((t=>new bootstrap.Tooltip(t,{ - trigger: "hover" - }))); - } - ; - - const wizardInit = ()=>{ - const {getData: e} = window.phoenix.utils - , t = "[data-theme-wizard]" - , a = "[data-wizard-step]" - , s = "[data-wizard-form]" - , r = "[data-wizard-password]" - , d = "[data-wizard-confirm-password]" - , l = "[data-wizard-next-btn]" - , n = "[data-wizard-prev-btn]" - , o = "[data-wizard-footer]" - , i = "theme-wizard-progress" - , c = "submit" - , u = "show.bs.tab" - , w = "shown.bs.tab" - , h = "click"; - document.querySelectorAll(t).forEach((t=>{ - const m = t.querySelectorAll(a) - , v = t.querySelectorAll(s) - , b = t.querySelector(r) - , p = t.querySelector(d) - , L = t.querySelector(l) - , f = t.querySelector(n) - , g = t.querySelector(o) - , y = new Event(c,{ - bubbles: !0, - cancelable: !0 - }) - , z = t.classList.contains(i) - , E = Array.from(m).map((e=>window.bootstrap.Tab.getOrCreateInstance(e))); - let q = 0 - , S = null; - v.forEach((e=>{ - e.addEventListener(c, (t=>(t.preventDefault(), - e.classList.contains("needs-validation") && (b && p && (b.value !== p.value ? p.setCustomValidity("Invalid field.") : p.setCustomValidity("")), - !e.checkValidity()) ? (S.preventDefault(), - !1) : (q += 1, - null)))); - } - )), - L.addEventListener(h, (()=>{ - q + 1 < E.length && E[q + 1].show(); - } - )), - f.addEventListener(h, (()=>{ - q -= 1, - E[q].show(); - } - )), - m.length && m.forEach(((t,a)=>{ - t.addEventListener(u, (a=>{ - const s = e(t, "wizard-step"); - S = a, - s > q && v[q].dispatchEvent(y); - } - )), - t.addEventListener(w, (()=>{ - q = a, - q !== m.length - 1 || z || m.forEach((e=>{ - e.setAttribute("data-bs-toggle", "modal"), - e.setAttribute("data-bs-target", "#error-modal"); - } - )); - for (let e = 0; e < q; e += 1) - m[e].classList.add("done"), - e > 0 && m[e - 1].classList.add("complete"); - for (let e = q; e < m.length; e += 1) - m[e].classList.remove("done"), - e > 0 && m[e - 1].classList.remove("complete"); - q > m.length - 2 ? g.classList.add("d-none") : g.classList.remove("d-none"), - q > 0 && q !== m.length - 1 ? f.classList.remove("d-none") : f.classList.add("d-none"); - } - )); - } - )); - } - )); - } - ; - - const faqTabInit = ()=>{ - const t = document.querySelectorAll("[data-vertical-category-tab]") - , a = document.querySelector("[data-vertical-category-offcanvas]") - , e = document.querySelectorAll("[data-category-filter]") - , c = document.querySelectorAll(".faq-subcategory-tab .nav-item"); - if (a) { - const e = window.bootstrap.Offcanvas?.getOrCreateInstance(a); - t.forEach((t=>{ - t.addEventListener("click", (()=>{ - e.hide(); - } - )); - } - )); - } - e && e.forEach((t=>{ - t.classList.contains("active") && c.forEach((a=>{ - a.classList.contains(t.getAttribute("data-category-filter")) || "all" === t.getAttribute("data-category-filter") || a.classList.add("d-none"); - } - )), - t.addEventListener("click", (()=>{ - c.forEach((a=>{ - "all" === t.getAttribute("data-category-filter") ? a.classList.remove("d-none") : a.classList.contains(t.getAttribute("data-category-filter")) || a.classList.add("d-none"); - } - )); - } - )); - } - )); - } - ; - - const kanbanInit = ()=>{ - const t = document.querySelector("[data-kanban-container]"); - if (t) { - t.addEventListener("click", (t=>{ - t.target.hasAttribute("data-kanban-collapse") && t.target.closest(".kanban-column").classList.toggle("collapsed"); - } - )); - t.querySelectorAll("[data-sortable]").forEach((t=>{ - window.Sortable.get(t).option("onStart", (t=>{ - document.body.classList.add("sortable-dragging"), - window.Sortable.ghost.querySelector(".dropdown-menu").classList.remove("show"); - const e = t.item.querySelector("[data-bs-toggle='dropdown']"); - window.bootstrap.Dropdown.getInstance(e)?.hide(); - } - )); - } - )); - } - } - ; - - const towFAVerificarionInit = ()=>{ - const t = document.querySelector("[data-2FA-varification]") - , e = document.querySelectorAll("[data-2FA-varification] input[type=number]"); - if (t) { - window.addEventListener("load", (()=>e[0].focus())), - t.addEventListener("keypress", (t=>{ - t.target.matches("input[type=number]") && (/\D/.test(t.key) || t.target.value) && t.preventDefault(); - } - )); - const a = [...e]; - t.addEventListener("input", (t=>{ - if (t.target.matches("input[type=number]")) { - const e = a.indexOf(t.target) - , i = a[e + 1]; - i && "" !== t.target.value && i.hasAttribute("disabled") && (i.removeAttribute("disabled"), - i.focus()); - } - } - )), - t.addEventListener("keydown", (t=>{ - if (t.target.matches("input[type=number]") && 8 === t.keyCode) { - const e = a.indexOf(t.target) - , i = a[e - 1]; - i && (i.focus(), - t.target.value = "", - t.target.setAttribute("disabled", !0)); - } - } - )), - t.addEventListener("submit", (()=>a.map((t=>t.value)).join(""))); - } - } - ; - - window.initMap = initMap, - docReady(detectorInit), - docReady(simplebarInit), - docReady(toastInit), - docReady(tooltipInit), - docReady(featherIconsInit), - docReady(basicEchartsInit), - docReady(bulkSelectInit), - docReady(listInit), - docReady(anchorJSInit), - docReady(popoverInit), - docReady(formValidationInit), - docReady(docComponentInit), - docReady(swiperInit), - docReady(productDetailsInit), - docReady(ratingInit), - docReady(quantityInit), - docReady(dropzoneInit), - docReady(choicesInit), - docReady(tinymceInit), - docReady(responsiveNavItemsInit), - docReady(flatpickrInit), - docReady(iconCopiedInit), - docReady(isotopeInit), - docReady(bigPictureInit), - docReady(countupInit), - docReady(phoenixOffcanvasInit), - docReady(todoOffcanvasInit), - docReady(wizardInit), - docReady(reportsDetailsChartInit), - docReady(glightboxInit), - docReady(themeControl), - docReady(searchInit), - docReady(handleNavbarVerticalCollapsed), - docReady(navbarInit), - docReady(themeControl), - docReady(navbarComboInit), - docReady(fullCalendarInit), - docReady(picmoInit), - docReady(chatInit), - docReady(modalInit), - docReady(lottieInit), - docReady(navbarShadowOnScrollInit), - docReady(dropdownOnHover), - docReady(supportChatInit), - docReady(sortableInit), - docReady(copyLink), - docReady(randomColorInit), - docReady(faqTabInit), - docReady(createBoardInit), - docReady(advanceAjaxTableInit), - docReady(kanbanInit), - docReady(towFAVerificarionInit), - docReady((()=>{ - const t = document.querySelector("[data-selected-rows]") - , o = document.getElementById("selectedRows"); - if (t) { - const e = document.getElementById("bulk-select-example") - , i = window.phoenix.BulkSelect.getInstance(e); - t.addEventListener("click", (()=>{ - o.innerHTML = JSON.stringify(i.getSelectedRows(), void 0, 2); - } - )); - } - } - )); - var phoenix = { - utils: utils, - BulkSelect: BulkSelect - }; - - return phoenix; - -} -)); -//# sourceMappingURL=phoenix.js.map diff --git a/dashboard/js/poper.js b/dashboard/js/poper.js deleted file mode 100644 index 1fb2256d62..0000000000 --- a/dashboard/js/poper.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @popperjs/core v2.11.6 - MIT License - */ - -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function w(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:w(b(e))}function x(e,n){var r;void 0===n&&(n=[]);var o=w(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(x(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=x(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,w=Y("number"!=typeof b?b:G(b,k)),x=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?x:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+w.top,bottom:B.bottom-E.bottom+w.bottom,left:E.left-B.left+w.left,right:B.right-E.right+w.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),w=t.rects.reference,x=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;w[S]>x[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),w=C(t.placement),x=U(t.placement),O=!x,j=z(w),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=x===W?B[_]:H[_],Q=x===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(w),we=null!=(ue=null==S?void 0:S[M])?ue:0,xe=be?ye:me-B[ve]-H[ve]-we+R.altAxis,Oe=be?me+B[ve]+H[ve]-we-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(xe,me,Oe):de(m?xe:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,w=p[l],x=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(w,O,x),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),we=[ee,te,oe,ie,ae,le,he,me,ge],xe=Z({defaultModifiers:we});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=xe,e.createPopperLite=be,e.defaultModifiers=we,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); -//# sourceMappingURL=popper.min.js.map diff --git a/dashboard/js/preview-modal.js b/dashboard/js/preview-modal.js deleted file mode 100644 index f39c33f184..0000000000 --- a/dashboard/js/preview-modal.js +++ /dev/null @@ -1,25 +0,0 @@ -$(document).on("click", ".preview-modal", function () { - const thisEl = $(this); - const divModal = document.createElement("div"); - divModal.innerHTML = ` - - `; - - document.body.appendChild(divModal); - $("#preview-with-modal").modal("show"); - $("#preview-with-modal").on("hidden.bs.modal", function (e) { - $("#preview-with-modal").remove(); - }); -}); \ No newline at end of file diff --git a/dashboard/js/toast.js b/dashboard/js/toast.js deleted file mode 100644 index 122a1bac89..0000000000 --- a/dashboard/js/toast.js +++ /dev/null @@ -1,73 +0,0 @@ -$.createToast = function ({ - title = "", - message = "", - type = "success", - duration = 3000 -}) { - const parentToast = document.getElementById("toast"); - const div = document.createElement("div"); - - const autoRemoveId = setTimeout(function () { - parentToast.removeChild(div); - }, duration + 1000); - - type == "danger" && (type = "error"); // "danger" is not a valid type, so we change it to "error - - const icons = { - success: { - icon: "fas fa-check-circle", - color: "#00d68f" - }, - info: { - icon: "fas fa-info-circle", - color: "#2770ff" - }, - warning: { - icon: "fas fa-exclamation-circle", - color: "#ff9f43" - }, - error: { - icon: "fas fa-exclamation-circle", - color: "#ff5b5b" - } - }; - - const getInfo = icons[type]; - const delay = (duration / 1000).toFixed(2); - - div.classList.add("toast"); - div.style.animation = `slideInLeft ease .3s, fadeOut linear 1s ${delay}s forwards`; - div.style.border = `1px solid ${getInfo.color}`; - - const className = 'progress_' + Date.now(); - div.innerHTML = ` -
    - -
    - ${title ? `${title}` : ''} - ${message} -
    -
    - - -
    - `; - const iClose = div.querySelector('.close'); - iClose.addEventListener("click", function () { - clearTimeout(autoRemoveId); - parentToast.removeChild(div); - }); - const styleTag = document.createElement("style"); - - styleTag.innerHTML = ` - .progress.${className}:before { - background: ${getInfo.color}; - animation: progress ${delay}s linear forwards; - } - .toast .progress .${className}:before { - background: ${getInfo.color}; - } - `; - div.appendChild(styleTag); - parentToast.appendChild(div); -}; \ No newline at end of file diff --git a/dashboard/middleware/index.js b/dashboard/middleware/index.js deleted file mode 100644 index 794acd18e3..0000000000 --- a/dashboard/middleware/index.js +++ /dev/null @@ -1,134 +0,0 @@ -const { threadsData } = global.db; - -function isPostMethod(req) { - return req.method == "POST"; -} - -module.exports = function (checkAuthConfigDashboardOfThread) { - return { - isAuthenticated(req, res, next) { - if (req.isAuthenticated()) - return next(); - - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Bạn chưa đăng nhập" - }); - - req.flash("errors", { msg: "You must be logged in" }); - res.redirect(`/login?redirect=${req.originalUrl}`); - }, - - unAuthenticated(req, res, next) { - if (!req.isAuthenticated()) - return next(); - - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Đã xảy ra lỗi" - }); - - res.redirect("/"); - }, - - isVeryfiUserIDFacebook(req, res, next) { - if (req.user.facebookUserID) - return next(); - - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Bạn chưa xác thực id Facebook" - }); - - req.flash("errors", { msg: "Bạn cần phải xác thực id facebook trước khi thực hiện hành động này" }); - res.redirect(`/verifyfbid?redirect=${req.originalUrl}`); - }, - - isWaitVerifyAccount(req, res, next) { - if (req.session.waitVerifyAccount) - return next(); - - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Đã xảy ra lỗi, vui lòng thử lại" - }); - - res.redirect("/register"); - }, - - async checkHasAndInThread(req, res, next) { - const userID = req.user.facebookUserID; - const threadID = isPostMethod(req) ? req.body.threadID : req.params.threadID; - const threadData = await threadsData.get(threadID); - - if (!threadData) { - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Không tìm thấy nhóm này" - }); - - req.flash("errors", { msg: "Thread not found" }); - return res.redirect("/dashboard"); - } - - const findMember = threadData.members.find(m => m.userID == userID && m.inGroup == true); - if (!findMember) { - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Bạn không phải là thành viên nhóm này" - }); - - req.flash("errors", { msg: "Bạn không ở trong nhóm chat này" }); - return res.redirect("/dashboard"); - } - req.threadData = threadData; - next(); - }, - - async middlewareCheckAuthConfigDashboardOfThread(req, res, next) { - const threadID = isPostMethod(req) ? req.body.threadID : req.params.threadID; - if (checkAuthConfigDashboardOfThread(threadID, req.user.facebookUserID)) - return next(); - - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Bạn không có quyền chinh sửa nhóm này" - }); - - req.flash("errors", { - msg: "[!] Chỉ quản trị viên của nhóm chat hoặc những thành viên được cho phép mới có thể chỉnh sửa dashboard" - }); - return res.redirect("/dashboard"); - }, - - async isAdmin(req, res, next) { - const userID = req.user.facebookUserID; - if (!global.GoatBot.config.adminBot.includes(userID)) { - if (isPostMethod(req)) - return res.status(401).send({ - status: "error", - error: "PERMISSION_DENIED", - message: "Bạn không phải là admin của bot" - }); - - req.flash("errors", { msg: "Bạn không phải là admin của bot" }); - return res.redirect("/dashboard"); - } - next(); - } - }; -}; \ No newline at end of file diff --git a/dashboard/passport-config.js b/dashboard/passport-config.js deleted file mode 100644 index a1fa2bd722..0000000000 --- a/dashboard/passport-config.js +++ /dev/null @@ -1,34 +0,0 @@ -const localStrategy = require('passport-local').Strategy; - -module.exports = function (Passport, db, bcrypt) { - Passport.serializeUser((user, done) => { - done(null, user.email); - }); - - Passport.deserializeUser(async (email, done) => { - const user = await db.get(email); - done(null, user); - }); - - Passport.use(new localStrategy({ - usernameField: "username", - passwordField: "password", - passReqToCallback: true - }, async function (req, email, password, done) { - const user = await db.get(email); - if (!user) - return done(null, false, { message: "Email không tồn tại" }); - - const isMatch = await bcrypt.compare(password, user.password); - if (!isMatch) - return done(null, false, { message: "Địa chỉ email hoặc mật khẩu không đúng" }); - - const remeber = req.body.remeber; - if (remeber) - req.session.cookie.maxAge = 30 * 24 * 60 * 60 * 1000; // 30 days - else - req.session.cookie.expires = false; - - return done(null, user); - })); -}; \ No newline at end of file diff --git a/dashboard/routes/api.js b/dashboard/routes/api.js deleted file mode 100644 index d81a798d88..0000000000 --- a/dashboard/routes/api.js +++ /dev/null @@ -1,360 +0,0 @@ -const stream = require("stream"); -const express = require("express"); -const path = require("path"); -const mimeDB = require("mime-db"); -const router = express.Router(); - -module.exports = function ({ isAuthenticated, isVeryfiUserIDFacebook, checkHasAndInThread, threadsData, drive, checkAuthConfigDashboardOfThread, usersData, createLimiter, middlewareCheckAuthConfigDashboardOfThread, isVideoFile }) { - const apiLimiter = createLimiter(1000 * 60 * 5, 10); - - router - .post("/delete/:slug", [isAuthenticated, isVeryfiUserIDFacebook, checkHasAndInThread, middlewareCheckAuthConfigDashboardOfThread, apiLimiter], async function (req, res) { - const { fileIDs, threadID, location } = req.body; - if (!fileIDs || !fileIDs.length) - return res.status(400).send({ - status: "error", - error: "FILE_ID_NOT_FOUND", - message: "Please provide file IDs" - }); - if (!threadID) - return res.status(400).send({ - status: "error", - error: "THREAD_ID_NOT_FOUND", - message: "Please provide thread ID" - }); - if (!location) - return res.status(400).send({ - status: "error", - error: "LOCATION_NOT_FOUND", - message: "Please provide location" - }); - if (!["data.welcomeAttachment", "data.leaveAttachment"].includes(location)) - return res.status(400).send({ - status: "error", - error: "LOCATION_NOT_FOUND", - message: "Location illegal" - }); - - const threadData = await threadsData.get(threadID); - if (!threadData) - return res.status(400).send({ - status: "error", - error: "COULD_NOT_FOUND_THREAD", - message: `Couldn\"t find thread data of thread ID ${threadID}` - }); - - let dataOfLocation = await threadsData.get(threadID, location); - const fileIDsDeleted = []; - - const pendingDelete = fileIDs.map(async fileID => { - try { - const index = dataOfLocation.indexOf(fileID); - if (index == -1) - throw ({ - error: "FILE_ID_NOT_FOUND", - message: `Couldn\"t find file ID ${fileID} in location ${location}` - }); - - await drive.deleteFile(fileID); - fileIDsDeleted.push(fileID); - return { - id: fileID, - status: "success" - }; - } - catch (err) { - throw ({ - id: fileID, - error: err.error, - message: err.message - }); - } - }); - - const successPromise = await Promise.allSettled(pendingDelete); - dataOfLocation = dataOfLocation.filter(fileID => !fileIDsDeleted.includes(fileID)); - - const success = successPromise - .filter(item => item.status == "fulfilled") - .map(({ value }) => value.id); - const failed = successPromise - .filter(item => item.status == "rejected") - .map(({ reason }) => ({ - id: reason.id, - error: reason.error, - message: reason.message - })); - - await threadsData.set(threadID, dataOfLocation, location); - - res.type("json").send(JSON.stringify({ - status: "success", - success, - failed - })); - }) - .post( - "/upload/:type", - [ - isAuthenticated, - isVeryfiUserIDFacebook, - checkHasAndInThread, - apiLimiter - ], - async function (req, res) { - const { threadID, commandName } = req.body; - const { type } = req.params; - const userID = req.user.facebookUserID; - - if (!threadID) - return res.status(400).json({ - status: "error", - error: "THREAD_ID_NOT_FOUND", - message: "Thread ID not found" - }); - - if (!commandName) - return res.status(400).json({ - status: "error", - error: "COMMAND_NAME_NOT_FOUND", - message: "Command name not found" - }); - - if (!["welcomeAttachment", "leaveAttachment"].includes(type)) - return res.status(400).send({ - status: "error", - error: "TYPE_ERROR", - message: "type illegal" - }); - - if (!checkAuthConfigDashboardOfThread(threadID, userID)) - return res.status(400).json({ - status: "error", - error: "PERMISSION_DENIED", - message: "You are not authorized to upload file in this thread" - }); - - let files = req.files; - if (!files) - return res.status(400).json({ - status: "error", - error: "FILE_NOT_FOUND", - message: "No files were uploaded." - }); - - let dataOfLocation = await threadsData.get(threadID, `data.${type}`, []); - files = Object.values(files); - if (files.length > 20) { - return res.status(400).json({ - status: "error", - error: "TOO_MANY_FILES", - message: "You can only upload 20 files at a time" - }); - } - - if (dataOfLocation.length + files.length > 20) { - return res.status(400).json({ - status: "error", - error: "TOO_MANY_FILES", - message: "You can only upload 20 files, current files in this location is " + dataOfLocation.length - }); - } - - let i = 0; - - const pendingUpload = files.reduce((arr, file) => { - if (isVideoFile(file.mimetype)) { - if (file.size > 83 * 1024 * 1024) { - arr.push({ - count: i++, - rootName: file.name, - file: Promise.reject({ - error: "FILE_TOO_LARGE", - message: "File too large, max size is 83MB" - }) - }); - return arr; - } - } - else { - if (file.size > 25 * 1024 * 1024) { - arr.push({ - count: i++, - rootName: file.name, - file: Promise.reject({ - error: "FILE_TOO_LARGE", - message: "File too large, max size is 25MB" - }) - }); - return arr; - } - } - - const bufferStream = new stream.PassThrough(); - bufferStream.end(file.data); - const newFileName = `${commandName}_${threadID}_${userID}_${global.utils.getTime()}.${path.extname(file.name).split(".")[1] || mimeDB[file.mimetype]?.extensions?.[0] || "unknow"}`; - arr.push({ - count: i++, - rootName: file.name, - file: drive.uploadFile(newFileName, bufferStream), - newFileName - }); - return arr; - }, []); - - const success = [], failed = []; - - for (const item of pendingUpload) { - try { - const file = await item.file; - success.push({ - // ...file, - id: file.id, - mimeType: file.mimeType, - webContentLink: file.webContentLink, - webViewLink: file.webViewLink, - iconLink: file.iconLink, - thumbnailLink: file.thumbnailLink, - createdTime: file.createdTime, - fileExtension: file.fileExtension, - size: file.size, - imageMediaMetadata: file.imageMediaMetadata || null, - fullFileExtension: file.fullFileExtension, - urlDownload: drive.getUrlDownload(file.id), - rootName: item.rootName, - count: item.count, - newFileName: item.newFileName - }); - } - catch (err) { - failed.push({ - error: err.error, - message: err.message, - rootName: item.rootName, - count: item.count - }); - } - } - - const fileIDs = success.map(file => file.id); - try { - dataOfLocation = [...dataOfLocation, ...fileIDs]; - await threadsData.set(threadID, dataOfLocation, `data.${type}`); - } - catch (err) { - } - - res.type("json").send(JSON.stringify({ - status: "success", - success, - failed - })); - } - ) - - .post("/thread/setData/:slug", [isAuthenticated, isVeryfiUserIDFacebook, checkHasAndInThread, apiLimiter], async function (req, res) { - const { slug } = req.params; - const { threadID, type } = req.body; - if (!checkAuthConfigDashboardOfThread(threadID, req.user.facebookUserID)) - return res.status(400).json({ - status: "error", - error: "PERMISSION_DENIED", - message: "Bạn không có quyền chỉnh sửa dữ liệu trong nhóm này" - }); - const threadData = await threadsData.get(threadID); - try { - switch (slug) { - case "welcomeAttachment": - case "leaveAttachment": { - const { attachmentIDs } = req.body; - if (!threadData.data[slug]) - threadData.data[slug] = []; - if (type === "add") - threadData.data[slug].push(...attachmentIDs); - else if (type === "delete") - threadData.data[slug] = threadData.data[slug].filter(item => !attachmentIDs.includes(item)); - break; - } - case "welcomeMessage": - case "leaveMessage": { - const { message } = req.body; - if (type === "update") - threadData.data[slug] = message; - else - delete threadData.data[slug]; - break; - } - case "settings": { - const { updateData } = req.body; - for (const key in updateData) - threadData.settings[key] = updateData[key] == "true"; - break; - } - } - } - catch (err) { - return res.status(400).send({ - status: "error", - error: "SERVER_ERROR", - message: "Đã có lỗi xảy ra, vui lòng thử lại sau" - }); - } - - try { - await threadsData.set(threadID, threadData); - res.json({ - status: "success" - }); - } - catch (e) { - res.status(500).json({ - status: "error", - error: "FAILED_TO_SAVE_DATA", - message: "Đã có lỗi xảy ra, vui lòng thử lại sau" - }); - } - }) - .get("/getUserData", [isAuthenticated, isVeryfiUserIDFacebook], async (req, res) => { - const uid = req.params.userID || req.user.facebookUserID; - if (req.params.userID) { - if (!req.user.isAdmin) { - return res.status(401).send({ - status: "error", - message: "Unauthorized" - }); - } - } - - let userData; - try { - userData = await usersData.get(uid); - return res.status(200).send({ - status: "success", - data: userData - }); - } - catch (e) { - return res.status(500).send({ - status: "error", - message: e.message - }); - } - }) - - // .get("/getThreadsData/:userID", [isAuthenticated, isVeryfiUserIDFacebook], async (req, res) => { - // if (!req.params.userID) { - // return res.status(400).send({ - // status: "error", - // message: "Bad request" - // }); - // } - // let allThread = await threadsData.getAll(); - // allThread = allThread.filter(t => t.members.some(m => m.userID == req.params.userID)); - // return res.status(200).send({ - // status: "success", - // data: allThread - // }); - // }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/routes/changePassword.js b/dashboard/routes/changePassword.js deleted file mode 100644 index a6c0963c17..0000000000 --- a/dashboard/routes/changePassword.js +++ /dev/null @@ -1,46 +0,0 @@ -const bcrypt = require("bcrypt"); -const express = require("express"); -const router = express.Router(); - -module.exports = function ({ isAuthenticated, isVerifyRecaptcha, dashBoardData }) { - router - .get("/", isAuthenticated, async (req, res) => { - res.render("change-password"); - }) - .post("/", isAuthenticated, async (req, res) => { - if (!await isVerifyRecaptcha(req.body["g-recaptcha-response"])) - return res.status(400).json({ - status: "error", - error: "CAPTCHA IS NOT VERIFIED", - message: "Captcha không hợp lệ" - }); - const { oldassword, password, password_confirmation } = req.body; - if (!await bcrypt.compare(oldassword, req.user.password)) - return res.status(400).json({ - status: "error", - error: "OLDASSWORD_IS_NOT_CORRECT", - message: "Mật khẩu cũ không đúng" - }); - if (password !== password_confirmation) - return res.status(400).json({ - status: "error", - error: "PASSWORD_IS_NOT_MATCH", - message: "Mật khẩu không khớp" - }); - if (password.length < 6) - return res.status(400).json({ - status: "error", - error: "PASSWORD_IS_NOT_ENOUGH", - message: "Mật khẩu phải có ít nhất 6 ký tự" - }); - - const hashPassword = bcrypt.hashSync(password, 10); - await dashBoardData.set(req.user.email, { password: hashPassword }); - req.flash("success", { - msg: "Đã thay đổi mật khẩu thành công" - }); - res.send(); - }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/routes/dashBoard.js b/dashboard/routes/dashBoard.js deleted file mode 100644 index 37e11c17ef..0000000000 --- a/dashboard/routes/dashBoard.js +++ /dev/null @@ -1,106 +0,0 @@ -const express = require("express"); -const router = express.Router(); - -module.exports = function ({ isAuthenticated, isVeryfiUserIDFacebook, checkHasAndInThread, threadsData, checkAuthConfigDashboardOfThread, imageExt, videoExt, audioExt, convertSize, drive, isVideoFile }) { - router - .get("/", [isAuthenticated, isVeryfiUserIDFacebook], async (req, res) => { - let allThread = await threadsData.getAll(); - allThread = allThread.filter(t => t.members.some(m => m.userID == req.user.facebookUserID && m.inGroup)/* && (api ? t.members.some(m => m.userID == api.getCurrentUserID()) : true)*/); - res.render("dashboard", { threads: allThread }); - }) - .get("/:threadID", [isAuthenticated, isVeryfiUserIDFacebook, checkHasAndInThread], async (req, res) => { - const { threadData } = req; - let authConfigDashboard = true; - const warnings = []; - if (!checkAuthConfigDashboardOfThread(threadData, req.user.facebookUserID)) { - warnings.push({ msg: "[!] Chỉ quản trị viên của nhóm chat hoặc những thành viên được cho phép mới có thể chỉnh sửa dashboard" }); - authConfigDashboard = false; - } - delete req.threadData; - res.render("dashboard-thread", { - threadData, - threadDataJSON: encodeURIComponent(JSON.stringify(threadData)), - authConfigDashboard, - warnings - }); - }) - .get("/:threadID/:command", [isAuthenticated, isVeryfiUserIDFacebook, checkHasAndInThread], async (req, res) => { - const command = req.params.command; - const threadData = req.threadData; - const threadDataJSON = encodeURIComponent(JSON.stringify(threadData)); // prevent xss attack - const variables = { - threadID: req.params.threadID, - threadData, - threadDataJSON, - command, - imageExt, - videoExt, - audioExt, - convertSize, - isVideoFile - }; - let renderFile; - - switch (command) { - case "welcome": { - renderFile = "dashboard-welcome"; - let pending = []; - (threadData.data.welcomeAttachment || []).forEach(fileId => { - pending.push(drive.default.files.get({ - fileId, - fields: "name,mimeType,size,id,createdTime,webContentLink,fileExtension" - })); - }); - - pending = (await Promise.allSettled(pending)) - .filter(item => item.status == "fulfilled") - .map(({ value }) => { - return { - ...value.data, - urlDownload: value.data.webContentLink - }; - }); - variables.defaultWelcomeMessage = global.GoatBot.configCommands.envEvents.welcome.defaultWelcomeMessage; - variables.welcomeAttachments = pending; - break; - } - case "leave": { - renderFile = "dashboard-leave"; - let pending = []; - (threadData.data.leaveAttachment || []).forEach(fileId => { - pending.push(drive.default.files.get({ - fileId, - fields: "name,mimeType,size,id,createdTime,webContentLink,fileExtension" - })); - }); - pending = (await Promise.allSettled(pending)) - .filter(item => item.status == "fulfilled") - .map(({ value }) => { - return { - ...value.data, - urlDownload: value.data.webContentLink - }; - }); - variables.defaultLeaveMessage = global.GoatBot.configCommands.envEvents.leave.defaultLeaveMessage; - variables.leaveAttachments = pending; - break; - } - case "rankup": { - renderFile = "dashboard-rankup"; - break; - } - case "custom-cmd": { - renderFile = "dashboard-custom-cmd"; - break; - } - default: { - req.flash("errors", { msg: "Command not found" }); - return res.redirect("/dashboard"); - } - } - - res.render(renderFile, variables); - }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/routes/forgotPassword.js b/dashboard/routes/forgotPassword.js deleted file mode 100644 index bf0d108003..0000000000 --- a/dashboard/routes/forgotPassword.js +++ /dev/null @@ -1,86 +0,0 @@ -const bcrypt = require("bcrypt"); -const expres = require("express"); -const router = expres.Router(); - -module.exports = function ({ unAuthenticated, validateEmail, randomNumberApikey, transporter, generateEmailVerificationCode, expireVerifyCode, dashBoardData }) { - router - .get("/", unAuthenticated, (req, res) => { - res.render("forgot-password"); - }) - .get("/submit-code", unAuthenticated, (req, res) => { - if (!req.session.resetPassword) - return res.redirect("/forgot-password"); - res.render("forgot-password-submit-code"); - }) - .get("/new-password", unAuthenticated, (req, res) => { - if (!req.session.resetPassword) - return res.redirect("/forgot-password"); - res.render("forgot-password-new-password"); - }) - - .post("/", unAuthenticated, async (req, res) => { - const { email } = req.body; - if (!validateEmail(email)) { - req.flash("errors", { msg: "Địa chỉ email không hợp lệ" }); - return res.redirect("/forgot-password"); - } - const user = await dashBoardData.get(email); - if (!user) { - req.flash("errors", { msg: "Không tìm thấy email này" }); - return res.redirect("/forgot-password"); - } - const code = randomNumberApikey(6); - try { - await transporter.sendMail({ - from: "Goat-Bot", - to: email, - subject: "Reset your password", - html: generateEmailVerificationCode(code, "Xin chào, bạn đã yêu cầu reset mật khẩu tại Goat-Bot. Bên dưới là mã xác nhận của bạn.") - }); - } - catch (e) { - req.flash("errors", { msg: "Không thể gửi email, vui lòng thử lại sau" }); - return res.redirect("/forgot-password"); - } - req.session.resetPassword = { - email, - code - }; - res.redirect("/forgot-password/submit-code"); - setTimeout((() => { - delete req.session.resetPassword.code; - }), expireVerifyCode); - }) - .post("/submit-code", unAuthenticated, async (req, res) => { - const { code } = req.body; - const { resetPassword } = req.session; - if (!resetPassword) - return res.redirect("/forgot-password"); - if (code !== resetPassword.code) { - req.flash("errors", { msg: "Mã xác nhận không chính xác" }); - return res.redirect("/forgot-password/submit-code"); - } - res.redirect("/forgot-password/new-password"); - }) - .post("/new-password", unAuthenticated, async (req, res) => { - if (!req.session.resetPassword) - return res.redirect("/forgot-password"); - const email = req.session.resetPassword.email; - const { password, password_confirmation } = req.body; - if (password !== password_confirmation) { - req.flash("errors", { msg: "Mật khẩu không khớp" }); - return res.redirect("/forgot-password/new-password"); - } - if (password.length < 6) { - req.flash("errors", { msg: "Mật khẩu phải có ít nhất 6 ký tự" }); - return res.redirect("/forgot-password/new-password"); - } - const hashPassword = bcrypt.hashSync(password, 10); - await dashBoardData.set(email, { password: hashPassword }); - delete req.session.resetPassword; - req.flash("success", { msg: "Đã thay đổi mật khẩu thành công" }); - res.redirect("/login"); - }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/routes/login.js b/dashboard/routes/login.js deleted file mode 100644 index d247086191..0000000000 --- a/dashboard/routes/login.js +++ /dev/null @@ -1,41 +0,0 @@ -const expres = require("express"); -const router = expres.Router(); - -module.exports = function ({ unAuthenticated, isVerifyRecaptcha, Passport }) { - router - .get("/", unAuthenticated, (req, res) => { - req.session.redirectTo = req.query.redirect || "/"; - res.render("login"); - }) - .post("/", unAuthenticated, async (req, res, next) => { - if (!await isVerifyRecaptcha(req.body["g-recaptcha-response"])) - return res.status(400).send({ - status: "error", - errors: [{ msg: "Captcha không hợp lệ" }] - }); - - Passport.authenticate("local", function (err, user, info) { - if (err) - return next(err); - - if (!user) { - return res.status(400).send({ - status: "error", - errors: [{ msg: info.message }] - }); - } - const redirectLink = req.session.redirectTo || "/"; - - req.login(user, function (err) { - if (err) - return next(err); - - res.send({ - redirectLink - }); - }); - })(req, res, next); - }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/routes/register.js b/dashboard/routes/register.js deleted file mode 100644 index bec41f1b94..0000000000 --- a/dashboard/routes/register.js +++ /dev/null @@ -1,125 +0,0 @@ -const bcrypt = require("bcrypt"); -const expres = require("express"); -const router = expres.Router(); - -module.exports = function ({ - unAuthenticated, isWaitVerifyAccount, isVerifyRecaptcha, - validateEmail, randomNumberApikey, transporter, - generateEmailVerificationCode, dashBoardData, expireVerifyCode -}) { - router - .get("/", unAuthenticated, (req, res) => { - res.render("register"); - }) - .get("/submit-code", [unAuthenticated, isWaitVerifyAccount], (req, res) => { - res.render("register-submit-code"); - }) - .get("/resend-code", [unAuthenticated, isWaitVerifyAccount], async (req, res) => { - res.render("register-resend-code"); - }) - - .post("/", unAuthenticated, async (req, res) => { - if (!await isVerifyRecaptcha(req.body["g-recaptcha-response"])) - return res.status(400).send({ - status: "error", - message: "Captcha không hợp lệ" - }); - const { name, email, password, password_confirmation } = req.body; - const errors = []; - if (!name || !email || !password || !password_confirmation) - errors.push({ msg: "Bạn chưa điền đủ thông tin" }); - if (!validateEmail(email)) - errors.push({ msg: "Địa chỉ email không hợp lệ" }); - if (email.length > 100 || email.length < 5) - errors.push({ msg: "Địa chỉ email phải có độ dài từ 5 đến 100 ký tự" }); - if (await dashBoardData.get(email)) - errors.push({ msg: `Địa chỉ email ${email} đã được sử dụng` }); - if (password !== password_confirmation) - errors.push({ msg: "Mật khẩu không khớp" }); - if (password.length < 6) - errors.push({ msg: "Mật khẩu phải có ít nhất 6 ký tự" }); - if (errors.length > 0) { - return res.status(400).send({ - status: "error", - errors - }); - } - - const code = randomNumberApikey(6); - await transporter.sendMail({ - from: "Goat-Bot", - to: email, - subject: "Verify your account", - html: generateEmailVerificationCode(code) - }); - - // if you want better security, you can use hash password before saving to database - const hashPassword = bcrypt.hashSync(password, 10); - const user = { - email, - name, - password: hashPassword, - code - }; - req.session.waitVerifyAccount = user; - res.redirect("/register/submit-code"); - setTimeout((() => { - delete req.session.waitVerifyAccount; - }), expireVerifyCode); - }) - .post("/resend-code", [unAuthenticated, isWaitVerifyAccount], async (req, res) => { - const email = req.body.email; - if (!validateEmail(email)) { - req.flash("errors", { msg: "Địa chỉ email không hợp lệ" }); - return res.status(400).send({ status: "error", message: "Địa chỉ email không hợp lệ" }); - } - - if (dashBoardData.get(email)) { - req.flash("errors", { msg: "Địa chỉ email này đã được sử dụng" }); - return res.redirect("/register/resend-code"); - } - - req.session.waitVerifyAccount.email = email; - const code = randomNumberApikey(6); - - try { - await transporter.sendMail({ - from: "Goat-Bot", - to: email, - subject: "Verify your account", - html: generateEmailVerificationCode(code) - }); - } - catch (err) { - req.flash("errors", { msg: "Có lỗi xảy ra, vui lòng thử lại sau" }); - return res.redirect("/register/resend-code"); - } - - req.session.waitVerifyAccount.code = code; - res.redirect("/register/submit-code"); - }) - .post("/submit-code", [unAuthenticated, isWaitVerifyAccount], async (req, res, next) => { - const { code } = req.body; - const { waitVerifyAccount } = req.session; - if (!waitVerifyAccount) - return res.redirect("/register"); - if (code !== waitVerifyAccount.code) { - req.flash("errors", { msg: "Code is not correct" }); - return res.redirect("/register/submit-code"); - } - delete waitVerifyAccount.code; - const user = await dashBoardData.create(waitVerifyAccount); - const redirectLink = req.session.redirectTo || "/"; - - req.logIn(user, (err) => { - if (err) { - return next(err); - } - delete req.session.redirectTo; - req.flash("success", { msg: "Bạn đã đăng ký thành công" }); - res.redirect(redirectLink); - }); - }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/routes/verifyfbid.js b/dashboard/routes/verifyfbid.js deleted file mode 100644 index 4a624c3095..0000000000 --- a/dashboard/routes/verifyfbid.js +++ /dev/null @@ -1,93 +0,0 @@ -const express = require("express"); -const router = express.Router(); -const { findUid, getText } = global.utils; - -module.exports = function ({ isAuthenticated, randomNumberApikey, expireVerifyCode, isVerifyRecaptcha, dashBoardData, api, createLimiter, config }) { - router - .get("/", isAuthenticated, (req, res) => { - req.session.redirectTo = req.query.redirect; - res.render("verifyfbid"); - }) - .get("/submit-code", [isAuthenticated, function (req, res, next) { - if (!req.session.waitVerify) - return res.redirect("/verifyfbid"); - next(); - }], (req, res) => { - res.render("verifyfbid-submit-code"); - }) - - .post("/", isAuthenticated, async (req, res) => { - if (!await isVerifyRecaptcha(req.body["g-recaptcha-response"])) - return res.status(400).json({ errors: [{ msg: "Recaptcha is not correct" }] }); - if (!api) - return res.status(400).send({ errors: [{ msg: "Hiện tại bot không hoạt động, vui lòng quay lại sau" }] }); - let { fbid } = req.body; - const code = randomNumberApikey(6); - if (!fbid) - return res.status(400).send({ errors: [{ msg: "Vui lòng nhập facebook id" }] }); - try { - if (isNaN(fbid)) - fbid = await findUid(fbid); - } - catch (e) { - return res.status(400).send({ errors: [{ msg: "Facebook id hoặc url profile không tồn tại" }] }); - } - req.session.waitVerify = { - fbid, - code, - email: req.user.email - }; - - setTimeout(() => { - delete req.session.waitVerify; - }, expireVerifyCode); - - try { - await api.sendMessage(getText("verifyfbid", "sendCode", code, config.dashBoard.expireVerifyCode / 60000, global.GoatBot.config.language), fbid); - } - catch (e) { - const errors = []; - if (e.blockedAction) - errors.push({ msg: "Hiện tại bot bị chặn tính năng và không thể gửi tin nhắn, vui lòng thử lại sau" }); - else - errors.push({ msg: `Không thể gửi mã xác nhận tới id facebook "${fbid}", bạn đã bật nhận tin nhắn chờ từ người lạ chưa?` }); - - req.flash("errors", errors); - return res.status(400).send({ - status: "error", - errors, - message: errors[0].msg - }); - } - req.flash("success", { msg: "Mã xác nhận đã được gửi tới id facebook của bạn, nếu không thấy hãy kiểm tra tin nhăn chờ" }); - res.send({ - status: "success", - message: "Mã xác nhận đã được gửi tới id facebook của bạn, nếu không thấy hãy kiểm tra tin nhăn chờ" - }); - }) - .post("/submit-code", [isAuthenticated, function (req, res, next) { - if (!req.session.waitVerify) - return res.redirect("/verifyfbid"); - next(); - }, createLimiter(1000 * 60 * 5, 20)], async (req, res) => { - const { code } = req.body; - const user = await dashBoardData.get(req.user.email); - if (code == req.session.waitVerify.code) { - const fbid = req.session.waitVerify.fbid; - console.log(`User ${user.email} verify fbid ${fbid}`); - delete req.session.waitVerify; - await dashBoardData.set(user.email, { facebookUserID: fbid }); - req.flash("success", { msg: "Đã xác nhận user id facebook thành công" }); - res.send({ - status: "success", - message: "Đã xác nhận user id facebook thành công", - redirectLink: req.session.redirectTo || "/dashboard" - }); - } - else { - return res.status(400).send({ msg: "Mã xác nhận không đúng" }); - } - }); - - return router; -}; \ No newline at end of file diff --git a/dashboard/scripts/generate-Email-Verification.js b/dashboard/scripts/generate-Email-Verification.js deleted file mode 100644 index fc1ec8afad..0000000000 --- a/dashboard/scripts/generate-Email-Verification.js +++ /dev/null @@ -1,66 +0,0 @@ -const { config } = global.GoatBot; - -module.exports = (code, text) => ` - - -
    -
    -
    -
    - -
    -
    - -
    -
    -

    Your Verification Code

    -

    Mã xác thực này có hiệu lực trong ${config.dashBoard.expireVerifyCode / 60000} phút

    -
    -
    - -
    -
    -

    - ${text || 'Enter this verification code in field:'}

    -
    -
    - -
    -
    - ${code} -
    -
    - -
    -
    -

    - Nếu bạn không thực hiện hành động trên hãy bỏ qua email này

    -
    -
    - -
    -
    -
    Facebook -
    -
    -
    - -
    -
    -
    -
    - - -`; \ No newline at end of file diff --git a/dashboard/views/404.eta b/dashboard/views/404.eta deleted file mode 100644 index ca3f434a62..0000000000 --- a/dashboard/views/404.eta +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - 404 - Page Not Found - - - - -
    -
    -
    - Error 404: Not Found - - - - - - - - - - - - - - - - -
    -
    - - - \ No newline at end of file diff --git a/dashboard/views/change-password.eta b/dashboard/views/change-password.eta deleted file mode 100644 index 69e71544af..0000000000 --- a/dashboard/views/change-password.eta +++ /dev/null @@ -1,96 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile('./partials/title.eta', { - icon: "fas fa-user-lock", - title: "Change Password" -}); %> - -
    -
    -
    -
    -
    -
    -

    Change Password

    -
    -
    - -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    -
    -
    - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/changeFbstate.eta b/dashboard/views/changeFbstate.eta deleted file mode 100644 index 3aa47f925a..0000000000 --- a/dashboard/views/changeFbstate.eta +++ /dev/null @@ -1,67 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Change Facebook state" -}); %> - -
    -

    Change the Facebook state of the bot

    - - -
    - - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard-custom-cmd.eta b/dashboard/views/dashboard-custom-cmd.eta deleted file mode 100644 index f42106aa28..0000000000 --- a/dashboard/views/dashboard-custom-cmd.eta +++ /dev/null @@ -1,32 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Custom command" -}); %> - -
    -
    -
    - -
    -
    -
    - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard-leave.eta b/dashboard/views/dashboard-leave.eta deleted file mode 100644 index 788b0268f9..0000000000 --- a/dashboard/views/dashboard-leave.eta +++ /dev/null @@ -1,711 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta") %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Dashboard" -}); %> -<% -const shortcuts = [{ - name: "{userName}", - desc: "tên thành viên rời khỏi nhóm" -}, { - name: "{userNameTag}", - desc: "tên thành viên rời khỏi nhóm (tag trong tin nhắn)" -}, { - name: "{threadName}", - desc: "tên nhóm chat của bạn" -}, { - name: "{boxName}", - desc: "tên nhóm chat của bạn" -}, { - name: "{session}", - desc: "buổi trong ngày" -}, { - name: "{multiple}", - desc: "bạn | các bạn" -}, { - name: "{type}", - desc: "tự rời | bị quản trị viên kick" -}]; -%> - - - - - - - -
    -
    -
    - Thread Name: <%=threadData.threadName || "null"%> -
    -
    - Thread ID: <%=threadID%> -
    - -

    Custom Leave Message 🤧

    - -
    -
    -
    -

    Danh sách các shortcut có sẵn:

    - (Click vào shortcut để copy) - - <% for (const item of shortcuts) { %> -
    - <%=item.name%> <%=item.desc%> -
    - <% } %> -
    -
    - -
    -

    Tin nhắn tạm biệt thành viên rời nhóm:

    - -
    - -
    - -
    - - -
    - -
    -

    Những tệp được gửi kèm tin nhắn tạm biệt trong nhóm bạn:

    - - -
    - - - - - - - - - - - - - <% for (const file of leaveAttachments) { %> - <% const timeUpload = new Date(file.createdTime); %> - <% const timestamp = timeUpload.getTime(); %> - <% const getExt = file.fileExtension; %> - - - - - - - - - <% } %> - -
    - - PreviewNameSizeSet AtAction
    - - -
    - <% if (imageExt.includes(getExt)) { %> - image - <% } else if (videoExt.includes(getExt)) { %> - - <% } else if (audioExt.includes(getExt)) {%> - - <% } else { %> - - <% } %> -
    -
    -

    <%=file.name%>

    -
    -

    <%=convertSize(file.size)%>

    -
    -

    <%=timestamp%>

    -
    - - - - -
    - -
      -
      - - -
      -
      - -
      -
      -
      - - - -
      -

      Drop files here or click to upload.

      - Max file size is 25MB and max number of files is 20. -
      -
      -
      -
      - - - - -
      -
      - Total: 0 files (0 MB) -
      - -
      - - -
      -
      -
      -
      -
      -
      -
      - -
      - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard-rankup.eta b/dashboard/views/dashboard-rankup.eta deleted file mode 100644 index 40c9b8aa06..0000000000 --- a/dashboard/views/dashboard-rankup.eta +++ /dev/null @@ -1,32 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-ranking-star", - title: "Rankup" -}); %> - -
      -
      -
      - -
      -
      -
      - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard-thread.eta b/dashboard/views/dashboard-thread.eta deleted file mode 100644 index 4c4d169124..0000000000 --- a/dashboard/views/dashboard-thread.eta +++ /dev/null @@ -1,144 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Dashboard" -}); %> -<% - const { threadID } = threadData; -%> - -
      -
      -
      -
      Box Name: <%= threadData.threadName %>
      -

      Box ID: <%= threadData.threadID %>

      -
      - -
      - -
      -
      -
      -

      👋 Welcome

      -
      -
      - -
      -
      -

      Gửi tin nhắn chào mừng thành viên mới!

      -
      - -
      -
      -
      -

      🤧 Leave

      -
      -
      - -
      -
      -

      Gửi tin nhắn tạm biệt thành viên rời khỏi nhóm!

      -
      - -
      -
      -
      -

      🏆 Rankup

      -
      -
      - -
      -
      -

      Gửi tin nhắn thông báo thăng cấp!

      -
      - -
      -
      -
      -

      ⚙️ Custom command

      -
      -
      - -
      -
      -

      Tùy chỉnh lệnh của bot!

      -
      - - - - -
      - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard-welcome copy.eta b/dashboard/views/dashboard-welcome copy.eta deleted file mode 100644 index 1aa7e27ae4..0000000000 --- a/dashboard/views/dashboard-welcome copy.eta +++ /dev/null @@ -1,418 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta") %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Dashboard" -}); %> - - -
      -
      -

      Box Name: <%=threadData.threadName || "null" %> -

      -

      Box ID: <%=threadID%> -

      - -
      -

      Welcome Message 👋

      - -
        -

        Danh sách các shortcut có sẵn:

        -
      - -

      Tin nhắn chào mừng thành viên mới:

      - - - -
      - - -
      - -
      - -
      - -

      Những tệp được gửi kèm tin nhắn chào mừng trong nhóm bạn:

      - -
      - -
      -
      - <% for (const file of welcomeAttachments) { %> - <% const getExt = file.name.split('.').pop() %> -
      -
      - <% if (imageExt.includes(getExt)) { %> - image - <% } else if (videoExt.includes(getExt)) { %> - - <% } else if (audioExt.includes(getExt)) {%> - - <% } else { %> - - <% } %> -
      -

      <%=file.name%>

      -

      <%=convertSize(file.size)%>

      - -
      - - -
      -
      -
      -
      - <% } %> -
      -
      - - - - -
      - - - - -
      -
      -
      -
      - -
      - - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard-welcome.eta b/dashboard/views/dashboard-welcome.eta deleted file mode 100644 index 2b69cde4d9..0000000000 --- a/dashboard/views/dashboard-welcome.eta +++ /dev/null @@ -1,705 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta") %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Dashboard" -}); %> -<% -const shortcuts = [{ - name: "{userName}", - desc: "tên thành viên mới vào nhóm" -}, { - name: "{userNameTag}", - desc: "tên thành viên mới vào nhóm (tag trong tin nhắn)" -}, { - name: "{threadName}", - desc: "tên nhóm chat của bạn" -}, { - name: "{boxName}", - desc: "tên nhóm chat của bạn" -}, { - name: "{session}", - desc: "buổi trong ngày" -}, { - name: "{multiple}", - desc: "bạn | các bạn" -}]; -%> - - - - - - - -
      -
      -
      - Thread Name: <%=threadData.threadName || "null"%> -
      -
      - Thread ID: <%=threadID%> -
      - -

      Custom Welcome Message 👋

      - -
      -
      -
      -

      Danh sách các shortcut có sẵn:

      - (Click vào shortcut để copy) - - <% for (const item of shortcuts) { %> -
      - <%=item.name%> <%=item.desc%> -
      - <% } %> -
      -
      - -
      -

      Tin nhắn chào mừng thành viên mới:

      - -
      - -
      - -
      - - -
      - -
      -

      Những tệp được gửi kèm tin nhắn chào mừng trong nhóm bạn:

      - - -
      - - - - - - - - - - - - - <% for (const file of welcomeAttachments) { %> - <% const timeUpload = new Date(file.createdTime); %> - <% const timestamp = timeUpload.getTime(); %> - <% const getExt = file.fileExtension; %> - - - - - - - - - <% } %> - -
      - - PreviewNameSizeSet AtAction
      - - -
      - <% if (imageExt.includes(getExt)) { %> - image - <% } else if (videoExt.includes(getExt)) { %> - - <% } else if (audioExt.includes(getExt)) {%> - - <% } else { %> - - <% } %> -
      -
      -

      <%=file.name%>

      -
      -

      <%=convertSize(file.size)%>

      -
      -

      <%=timestamp%>

      -
      - - - - -
      - -
        -
        - - -
        -
        - -
        -
        -
        - - - -
        -

        Drop files here or click to upload.

        - Max file size is 25MB and max number of files is 20. -
        -
        -
        -
        - - - - -
        -
        - Total: 0 files (0 MB) -
        - -
        - - -
        -
        -
        -
        -
        -
        -
        - -
        - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/dashboard.eta b/dashboard/views/dashboard.eta deleted file mode 100644 index f856deeab0..0000000000 --- a/dashboard/views/dashboard.eta +++ /dev/null @@ -1,104 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Dashboard" -}); %> - - - -
        - -

        Danh sách nhóm mà bạn quản lý

        - -
        - -
        - - -
        -
        - -
        - - - - - - - - - - - - - <% for (let i=0; i < threads.length; i++) { %> - - - - - - - - <% } %> - -
        Box IDBox NameMembersAction
        - <%= i + 1 %> - - <%= threads[i].threadID %> - - <%= threads[i].threadName || "null" %> - - <%= threads[i].members.filter(m=> m.inGroup).length %> - - - - -
        -
          -
          - - - - <%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/donate.eta b/dashboard/views/donate.eta deleted file mode 100644 index ae1b3edd3f..0000000000 --- a/dashboard/views/donate.eta +++ /dev/null @@ -1,32 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-hand-holding-dollar", - title: "Donate" -}); %> - -
          -<% /* Do not edit or replace this!! */ %> -<% /* Không chỉnh sửa hoặc thay thế cái này!! */ %> -
          -
          -
          -
          -
          MOMO
          -
          -
          -

          - 0789629831 -

          -

          - NGUYEN THANH KHANG -

          -
          -
          -
          -
          -
          - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/forgot-password-new-password.eta b/dashboard/views/forgot-password-new-password.eta deleted file mode 100644 index 35bd73c4b6..0000000000 --- a/dashboard/views/forgot-password-new-password.eta +++ /dev/null @@ -1,50 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-unlock", - title: "Reset Password" -}); - -
          -
          -
          -
          -
          -
          -

          Reset Password

          -
          -
          -
          -
          - - -
          -
          - - -
          - -
          -

          - Nhập mật khẩu mới. -

          - -
          -
          -
          -
          -
          -
          - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/forgot-password-submit-code.eta b/dashboard/views/forgot-password-submit-code.eta deleted file mode 100644 index 99dbb624cc..0000000000 --- a/dashboard/views/forgot-password-submit-code.eta +++ /dev/null @@ -1,38 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-user", - title: "Verify Code" -}); %> - -
          -
          -
          -
          -
          -
          -

          Verify Code

          -
          -
          -
          -
          - - -
          - -
          -

          - Nhập mã xác thực đã được gửi đến email - của bạn. -

          - -
          -
          -
          -
          -
          -
          -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/forgot-password.eta b/dashboard/views/forgot-password.eta deleted file mode 100644 index 62c41ead88..0000000000 --- a/dashboard/views/forgot-password.eta +++ /dev/null @@ -1,40 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-brain", - title: "Forgot Password" -}); %> - -
          -
          -
          -
          -
          -
          -

          Forgot Password

          -
          -
          -
          -
          - - -
          - -
          -

          - Chúng tôi sẽ gửi một email kèm mã xác - thực đến email của bạn. -

          -
          -
          -
          -
          -
          -
          -
          -
          - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/home.eta b/dashboard/views/home.eta deleted file mode 100644 index 718fa030eb..0000000000 --- a/dashboard/views/home.eta +++ /dev/null @@ -1,104 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}) %> -<%~ includeFile("partials/message.eta") %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-home", - title: "Home" -}); %> - -

          Welcome to Goat Bot!

          - -
            -
          • Moderation
          • -
          • Custom commands
          • -
          - -
          -<% if (global.botID) { %> - -<% } else { %> - -<% } %> -
          - -
          - - -
          -
          -
          -
          -

          Dễ dàng sử dụng

          -

          Tại đây bạn có thể tùy chỉnh lời chào thành viên mới, tạm biệt thành viên rời khỏi - box, v.v. và nhiều hơn nữa với bảng điều khiển dễ sử dụng và trực quan nhất!

          -
          -
          -
          -
          - -
          -
          -
          -
          -

          Gửi lời chào khi có người dùng mới tham gia vào nhóm chat

          -

          Tận dụng thông điệp chào mừng để thông báo cho những người mới đến về các quy tắc - nhóm chat, hoặc các sự kiện đang diễn ra của bạn. Bạn có thể thiết kế thiệp chào mừng của riêng - bạn hoặc giữ nó đơn giản.

          -
          -
          -
          -
          - -
          -
          -
          -
          -

          Dễ dàng tạo các lệnh tùy chỉnh của riêng bạn

          -

          Goat Bot cung cấp cho bạn toàn quyền kiểm soát để tạo ra lệnh của riêng bạn.

          -
          -
          -
          -
          - -
          -
          -
          -
          -

          Cấp độ và exp trong box chat của bạn

          -

          Sử dụng hệ thống chúng tôi để xác định và thưởng cho các thành viên tích cực nhất - trong nhóm chat của bạn.

          -
          -
          -
          -
          - -
          -
          -
          -
          -

          Người dùng

          -

          Hiện tại bot đã được thêm vào tổng cộng <%=global.db.allThreadData.length%> nhóm - chat và được sử dụng bởi <%=global.db.allUserData.length%> người dùng.

          -
          -
          -
          -
          - - - - -<%~ includeFile('partials/footer.eta') %> \ No newline at end of file diff --git a/dashboard/views/login.eta b/dashboard/views/login.eta deleted file mode 100644 index bf30715a98..0000000000 --- a/dashboard/views/login.eta +++ /dev/null @@ -1,99 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-right-to-bracket", - title: "Login" -}); %> - -
          -
          -
          -
          - - -
          - -
          - - -
          - -
          -
          - -
          -
          -
          - - -
          -
          - - -
          - -
          - -
          - -
          -

          No Account? Register

          -
          -
          -
          -
          - - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/partials/footer.eta b/dashboard/views/partials/footer.eta deleted file mode 100644 index 398650c44c..0000000000 --- a/dashboard/views/partials/footer.eta +++ /dev/null @@ -1,23 +0,0 @@ -<% /* */ %> -<% /* */ %> -
          - - - - - - - \ No newline at end of file diff --git a/dashboard/views/partials/header.eta b/dashboard/views/partials/header.eta deleted file mode 100644 index af5e63ef6b..0000000000 --- a/dashboard/views/partials/header.eta +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - - - - - - - Goat Bot - - - - - - - - - - - - - - - - -
          - <%~ includeFile("./nav.eta", { - user: user - }); %> -
          - - - - - - - -
          diff --git a/dashboard/views/partials/message.eta b/dashboard/views/partials/message.eta deleted file mode 100644 index d977227800..0000000000 --- a/dashboard/views/partials/message.eta +++ /dev/null @@ -1,35 +0,0 @@ -<% const { errors = [], success = [], warnings = [] } = E; %> - -
          - -<% for (const err of errors) { %> - -<% } %> - - -<% for (const succ of success) { %> - -<% } %> - - -<% for (const w of warnings) { %> - -<% } %> \ No newline at end of file diff --git a/dashboard/views/partials/nav.eta b/dashboard/views/partials/nav.eta deleted file mode 100644 index b33d99bb7e..0000000000 --- a/dashboard/views/partials/nav.eta +++ /dev/null @@ -1,126 +0,0 @@ - - - - - \ No newline at end of file diff --git a/dashboard/views/partials/title.eta b/dashboard/views/partials/title.eta deleted file mode 100644 index edd650483d..0000000000 --- a/dashboard/views/partials/title.eta +++ /dev/null @@ -1,10 +0,0 @@ -<% const title = it.title || 'Dashboard' %> -<% const icon = it.icon || 'fas fa-cog' %> - -
          -
          -

          - <%= title %> -

          -
          -
          \ No newline at end of file diff --git a/dashboard/views/profile.eta b/dashboard/views/profile.eta deleted file mode 100644 index f7ba48fa22..0000000000 --- a/dashboard/views/profile.eta +++ /dev/null @@ -1,78 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-address-card", - title: "User Profile" -}); %> - -
          -
          -
          -
          -

          Information

          -
          -
          -

          Email

          -

          - <%= user.email %> -

          -
          -
          -

          Name

          -

          - <%= user.name %> -

          -
          -
          -
          - -
          -

          Economy

          - <% if (!user.facebookUserID) { %> -
          -

          - Bạn chưa xác thực id facebook -

          -
          - <% } else { %> -
          -
          -

          Money

          -

          <%=userData.hasOwnProperty('money') ? userData.money : ''%>

          -
          -
          -

          Level

          -

          <%=userData.hasOwnProperty('exp') ? Math.floor((1 + Math.sqrt(1 + 8 * userData.exp / 5)) / 2) : ''%>

          -
          -
          - <% } %> -
          - -
          -

          Facebook Info

          - <% if (!user.facebookUserID) {%> -
          -

          - Bạn chưa xác thực id facebook -

          -
          - <% } else { %> -
          -
          -

          User ID

          -

          <%=user.facebookUserID%>

          -
          -
          -

          Name

          -

          <%=userData.name%>

          -
          -
          - <% } %> -
          -
          -
          -
          - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/register-resend-code.eta b/dashboard/views/register-resend-code.eta deleted file mode 100644 index 07e202a874..0000000000 --- a/dashboard/views/register-resend-code.eta +++ /dev/null @@ -1,60 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-envelope", - title: "Resend Email Verification" -}); %> - -
          -
          -
          -
          -
          -
          -

          Resend Email Verification

          -
          -
          -
          - - -
          - -
          -
          -
          -
          -
          -
          - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/register-submit-code.eta b/dashboard/views/register-submit-code.eta deleted file mode 100644 index 552f0dab5e..0000000000 --- a/dashboard/views/register-submit-code.eta +++ /dev/null @@ -1,60 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-user", - title: "Verify Your Account" -}); %> - - - -
          -
          -
          -
          -
          -
          -

          Verify Your Account

          -
          -
          -
          -
          - - -
          -
          -

          - Nhập mã xác thực đã được gửi về email của - bạn. -

          -
          - -
          -
          - - Can't get code? -
          -
          -
          -
          -
          -
          -
          -
          -
          - - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/register.eta b/dashboard/views/register.eta deleted file mode 100644 index cbc5cbfbeb..0000000000 --- a/dashboard/views/register.eta +++ /dev/null @@ -1,180 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fa-solid fa-user-plus", - title: "Register" -}); %> - - -
          -
          -
          -
          -
          -
          -

          Account Register

          -
          -
          -
          -
          - - -
          - -
          - - -
          - -
          - - -
          - -
          - - -
          - -
          -
          - -
          - -
          -
          -
          -
          -
          -
          -
          - - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/stats.eta b/dashboard/views/stats.eta deleted file mode 100644 index d4622b5e92..0000000000 --- a/dashboard/views/stats.eta +++ /dev/null @@ -1,71 +0,0 @@ -<%~ includeFile("partials/header", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-robot", - title: "Bot stats" -}); %> - -
          -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          Users - <%= totalUser %> -
          Threads - <%= totalThread %> -
          Prefix - <%= prefix %> -
          Uptime - <%= uptime %> -
          Node.js Version - <%= process.version %> -
          Memory - <%= (process.memoryUsage().rss / 1024 / 1024).toFixed(2) %> MB -
          CPU - <%= (process.cpuUsage().system / 1024 / 1024).toFixed(2) %>% -
          Node CPU - <%= (process.cpuUsage().user / 1024 / 1024).toFixed(2) %>% -
          -
          -
          - - - -<%~ includeFile("partials/footer") %> \ No newline at end of file diff --git a/dashboard/views/verifyfbid-submit-code.eta b/dashboard/views/verifyfbid-submit-code.eta deleted file mode 100644 index 9756d6b6af..0000000000 --- a/dashboard/views/verifyfbid-submit-code.eta +++ /dev/null @@ -1,74 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Verify Code" -}); %> - -
          -
          -
          -
          -
          -
          -

          - Verify Code -

          -
          -
          -
          -
          - - -
          -
          - -
          -
          -

          - Nhập mã xác minh đã được gửi đến facebook - của bạn -

          - -
          -
          -
          -
          -
          -
          - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/dashboard/views/verifyfbid.eta b/dashboard/views/verifyfbid.eta deleted file mode 100644 index 6d8ea787ab..0000000000 --- a/dashboard/views/verifyfbid.eta +++ /dev/null @@ -1,89 +0,0 @@ -<%~ includeFile("partials/header.eta", { - user: user -}); %> -<%~ includeFile("partials/message.eta"); %> -<%~ includeFile("partials/title.eta", { - icon: "fas fa-cog", - title: "Verify Facebook ID" -}); %> - -
          -
          -
          -
          -
          -
          -

          - Verify Facebook ID -

          -
          -
          -
          -
          - - -
          -
          -
          - -
          -
          -

          - Chúng tôi sẽ gửi một tin nhắn kèm mã xác minh đến id facebook bạn điền vào ở phía trên để xác minh bạn là chủ của tài khoản đó -

          -
          - <% if (global.statusAccountBot != 'good') {%> -
          -

          - Hiện tại bot đang offline, không thể thực hiện chức năng này -

          -
          - <% } %> -
          -
          -
          -
          -
          -
          -
          - - - -<%~ includeFile("partials/footer.eta") %> \ No newline at end of file diff --git a/fb-chat-api/README.MD b/fb-chat-api/README.MD deleted file mode 100644 index e7588d812d..0000000000 --- a/fb-chat-api/README.MD +++ /dev/null @@ -1,6 +0,0 @@ -This repo is a fork from main repo and will usually have new features bundled faster than main repo (and maybe bundle some bugs, too). -See main repo [here](https://github.com/Schmavery/facebook-chat-api). - -# Unofficial Facebook Chat API - -This is the folder that is detached from [this project](https://github.com/ntkhang03/fb-chat-api) \ No newline at end of file diff --git a/fb-chat-api/index.js b/fb-chat-api/index.js deleted file mode 100644 index 7475a8b101..0000000000 --- a/fb-chat-api/index.js +++ /dev/null @@ -1,608 +0,0 @@ -"use strict"; - -const utils = require("./utils"); -const cheerio = require("cheerio"); -const log = require("npmlog"); - -let checkVerified = null; - -const defaultLogRecordSize = 100; -log.maxRecordSize = defaultLogRecordSize; - -function setOptions(globalOptions, options) { - Object.keys(options).map(function (key) { - switch (key) { - case 'pauseLog': - if (options.pauseLog) log.pause(); - break; - case 'online': - globalOptions.online = Boolean(options.online); - break; - case 'logLevel': - log.level = options.logLevel; - globalOptions.logLevel = options.logLevel; - break; - case 'logRecordSize': - log.maxRecordSize = options.logRecordSize; - globalOptions.logRecordSize = options.logRecordSize; - break; - case 'selfListen': - globalOptions.selfListen = Boolean(options.selfListen); - break; - case 'listenEvents': - globalOptions.listenEvents = Boolean(options.listenEvents); - break; - case 'pageID': - globalOptions.pageID = options.pageID.toString(); - break; - case 'updatePresence': - globalOptions.updatePresence = Boolean(options.updatePresence); - break; - case 'forceLogin': - globalOptions.forceLogin = Boolean(options.forceLogin); - break; - case 'userAgent': - globalOptions.userAgent = options.userAgent; - break; - case 'autoMarkDelivery': - globalOptions.autoMarkDelivery = Boolean(options.autoMarkDelivery); - break; - case 'autoMarkRead': - globalOptions.autoMarkRead = Boolean(options.autoMarkRead); - break; - case 'listenTyping': - globalOptions.listenTyping = Boolean(options.listenTyping); - break; - case 'proxy': - if (typeof options.proxy != "string") { - delete globalOptions.proxy; - utils.setProxy(); - } else { - globalOptions.proxy = options.proxy; - utils.setProxy(globalOptions.proxy); - } - break; - case 'autoReconnect': - globalOptions.autoReconnect = Boolean(options.autoReconnect); - break; - case 'emitReady': - globalOptions.emitReady = Boolean(options.emitReady); - break; - default: - log.warn("setOptions", "Unrecognized option given to setOptions: " + key); - break; - } - }); -} - -function buildAPI(globalOptions, html, jar) { - const maybeCookie = jar.getCookies("https://www.facebook.com").filter(function (val) { - return val.cookieString().split("=")[0] === "c_user"; - }); - - const objCookie = jar.getCookies("https://www.facebook.com").reduce(function (obj, val) { - obj[val.cookieString().split("=")[0]] = val.cookieString().split("=")[1]; - return obj; - }, {}); - - if (maybeCookie.length === 0) { - throw { error: "Error retrieving userID. This can be caused by a lot of things, including getting blocked by Facebook for logging in from an unknown location. Try logging in with a browser to verify." }; - } - - if (html.indexOf("/checkpoint/block/?next") > -1) { - log.warn("login", "Checkpoint detected. Please log in with a browser to verify."); - } - - const userID = maybeCookie[0].cookieString().split("=")[1].toString(); - const i_userID = objCookie.i_user || null; - log.info("login", `Logged in as ${userID}`); - - try { - clearInterval(checkVerified); - } catch (_) { } - - const clientID = (Math.random() * 2147483648 | 0).toString(16); - - const oldFBMQTTMatch = html.match(/irisSeqID:"(.+?)",appID:219994525426954,endpoint:"(.+?)"/); - let mqttEndpoint = null; - let region = null; - let irisSeqID = null; - let noMqttData = null; - - if (oldFBMQTTMatch) { - irisSeqID = oldFBMQTTMatch[1]; - mqttEndpoint = oldFBMQTTMatch[2]; - region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase(); - - } else { - const newFBMQTTMatch = html.match(/{"app_id":"219994525426954","endpoint":"(.+?)","iris_seq_id":"(.+?)"}/); - if (newFBMQTTMatch) { - irisSeqID = newFBMQTTMatch[2]; - mqttEndpoint = newFBMQTTMatch[1].replace(/\\\//g, "/"); - region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase(); - - } else { - const legacyFBMQTTMatch = html.match(/(\["MqttWebConfig",\[\],{fbid:")(.+?)(",appID:219994525426954,endpoint:")(.+?)(",pollingEndpoint:")(.+?)(3790])/); - if (legacyFBMQTTMatch) { - mqttEndpoint = legacyFBMQTTMatch[4]; - region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase(); - log.warn("login", `Cannot get sequence ID with new RegExp. Fallback to old RegExp (without seqID)...`); - log.info("login", `Got this account's message region: ${region}`); - log.info("login", `[Unused] Polling endpoint: ${legacyFBMQTTMatch[6]}`); - - } else { - log.warn("login", "Cannot get MQTT region & sequence ID."); - noMqttData = html; - } - } - } - - // All data available to api functions - const ctx = { - userID: userID, - i_userID: i_userID, - jar: jar, - clientID: clientID, - globalOptions: globalOptions, - loggedIn: true, - access_token: 'NONE', - clientMutationId: 0, - mqttClient: undefined, - lastSeqId: irisSeqID, - syncToken: undefined, - wsReqNumber: 0, - wsTaskNumber: 0, - reqCallbacks: {}, - mqttEndpoint, - region, - firstListen: true - }; - - const api = { - setOptions: setOptions.bind(null, globalOptions), - getAppState: function getAppState() { - const appState = utils.getAppState(jar); - // filter duplicate - return appState.filter((item, index, self) => self.findIndex((t) => { return t.key === item.key; }) === index); - } - }; - - if (noMqttData) { - api["htmlData"] = noMqttData; - } - - const apiFuncNames = [ - 'addExternalModule', - 'addUserToGroup', - 'changeAdminStatus', - 'changeArchivedStatus', - 'changeAvatar', - 'changeBio', - 'changeBlockedStatus', - 'changeGroupImage', - 'changeNickname', - 'changeThreadColor', - 'changeThreadEmoji', - 'createNewGroup', - 'createPoll', - 'deleteMessage', - 'deleteThread', - 'forwardAttachment', - 'getCurrentUserID', - 'getEmojiUrl', - 'getFriendsList', - 'getMessage', - 'getThreadHistory', - 'getThreadInfo', - 'getThreadList', - 'getThreadPictures', - 'getUserID', - 'getUserInfo', - 'handleFriendRequest', - 'handleMessageRequest', - 'listenMqtt', - 'logout', - 'markAsDelivered', - 'markAsRead', - 'markAsReadAll', - 'markAsSeen', - 'muteThread', - 'refreshFb_dtsg', - 'removeUserFromGroup', - 'resolvePhotoUrl', - 'searchForThread', - 'sendMessage', - 'sendTypingIndicator', - 'setMessageReaction', - 'setPostReaction', - 'setTitle', - 'threadColors', - 'unsendMessage', - 'unfriend', - 'uploadAttachment', - 'editMessage', - - // HTTP - 'httpGet', - 'httpPost', - 'httpPostFormData' - ]; - - const defaultFuncs = utils.makeDefaults(html, userID, ctx); - - // Load all api functions in a loop - apiFuncNames.map(v => api[v] = require('./src/' + v)(defaultFuncs, api, ctx)); - - return [ctx, defaultFuncs, api]; -} - -function makeLogin(jar, email, password, loginOptions, callback, prCallback) { - return function (res) { - const html = res.body; - const $ = cheerio.load(html); - let arr = []; - - // This will be empty, but just to be sure we leave it - $("#login_form input").map((i, v) => arr.push({ val: $(v).val(), name: $(v).attr("name") })); - - arr = arr.filter(function (v) { - return v.val && v.val.length; - }); - - const form = utils.arrToForm(arr); - form.lsd = utils.getFrom(html, "[\"LSD\",[],{\"token\":\"", "\"}"); - form.lgndim = Buffer.from("{\"w\":1440,\"h\":900,\"aw\":1440,\"ah\":834,\"c\":24}").toString('base64'); - form.email = email; - form.pass = password; - form.default_persistent = '0'; - form.lgnrnd = utils.getFrom(html, "name=\"lgnrnd\" value=\"", "\""); - form.locale = 'en_US'; - form.timezone = '240'; - form.lgnjs = ~~(Date.now() / 1000); - - - // Getting cookies from the HTML page... (kill me now plz) - // we used to get a bunch of cookies in the headers of the response of the - // request, but FB changed and they now send those cookies inside the JS. - // They run the JS which then injects the cookies in the page. - // The "solution" is to parse through the html and find those cookies - // which happen to be conveniently indicated with a _js_ in front of their - // variable name. - // - // ---------- Very Hacky Part Starts ----------------- - const willBeCookies = html.split("\"_js_"); - willBeCookies.slice(1).map(function (val) { - const cookieData = JSON.parse("[\"" + utils.getFrom(val, "", "]") + "]"); - jar.setCookie(utils.formatCookie(cookieData, "facebook"), "https://www.facebook.com"); - }); - // ---------- Very Hacky Part Ends ----------------- - - - return utils - .post("https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110", jar, form, loginOptions) - .then(utils.saveCookies(jar)) - .then(function (res) { - const headers = res.headers; - if (!headers.location) throw { error: "Wrong username/password." }; - - // This means the account has login approvals turned on. - if (headers.location.indexOf('https://www.facebook.com/checkpoint/') > -1) { - log.info("login", "You have login approvals turned on."); - const nextURL = 'https://www.facebook.com/checkpoint/?next=https%3A%2F%2Fwww.facebook.com%2Fhome.php'; - - return utils - .get(headers.location, jar, null, loginOptions) - .then(utils.saveCookies(jar)) - .then(function (res) { - const html = res.body; - // Make the form in advance which will contain the fb_dtsg and nh - const $ = cheerio.load(html); - let arr = []; - $("form input").map((i, v) => arr.push({ val: $(v).val(), name: $(v).attr("name") })); - - arr = arr.filter(function (v) { - return v.val && v.val.length; - }); - - const form = utils.arrToForm(arr); - if (html.indexOf("checkpoint/?next") > -1) { - setTimeout(() => { - checkVerified = setInterval((_form) => { }, 5000, { - fb_dtsg: form.fb_dtsg, - jazoest: form.jazoest, - dpr: 1 - }); - }, 2500); - throw { - error: 'login-approval', - continue: function submit2FA(code) { - form.approvals_code = code; - form['submit[Continue]'] = $("#checkpointSubmitButton").html(); //'Continue'; - let prResolve = null; - let prReject = null; - const rtPromise = new Promise(function (resolve, reject) { - prResolve = resolve; - prReject = reject; - }); - if (typeof code == "string") { - utils - .post(nextURL, jar, form, loginOptions) - .then(utils.saveCookies(jar)) - .then(function (res) { - const $ = cheerio.load(res.body); - const error = $("#approvals_code").parent().attr("data-xui-error"); - if (error) { - throw { - error: 'login-approval', - errordesc: "Invalid 2FA code.", - lerror: error, - continue: submit2FA - }; - } - }) - .then(function () { - // Use the same form (safe I hope) - delete form.no_fido; - delete form.approvals_code; - form.name_action_selected = 'dont_save'; //'save_device'; - - return utils.post(nextURL, jar, form, loginOptions).then(utils.saveCookies(jar)); - }) - .then(function (res) { - const headers = res.headers; - if (!headers.location && res.body.indexOf('Review Recent Login') > -1) throw { error: "Something went wrong with login approvals." }; - - const appState = utils.getAppState(jar); - - if (callback === prCallback) { - callback = function (err, api) { - if (err) return prReject(err); - return prResolve(api); - }; - } - - // Simply call loginHelper because all it needs is the jar - // and will then complete the login process - return loginHelper(appState, email, password, loginOptions, callback); - }) - .catch(function (err) { - // Check if using Promise instead of callback - if (callback === prCallback) prReject(err); - else callback(err); - }); - } else { - utils - .post("https://www.facebook.com/checkpoint/?next=https%3A%2F%2Fwww.facebook.com%2Fhome.php", jar, form, loginOptions, null, { "Referer": "https://www.facebook.com/checkpoint/?next" }) - .then(utils.saveCookies(jar)) - .then(res => { - try { - JSON.parse(res.body.replace(/for\s*\(\s*;\s*;\s*\)\s*;\s*/, "")); - } catch (ex) { - clearInterval(checkVerified); - log.info("login", "Verified from browser. Logging in..."); - if (callback === prCallback) { - callback = function (err, api) { - if (err) return prReject(err); - return prResolve(api); - }; - } - return loginHelper(utils.getAppState(jar), email, password, loginOptions, callback); - } - }) - .catch(ex => { - log.error("login", ex); - if (callback === prCallback) prReject(ex); - else callback(ex); - }); - } - return rtPromise; - } - }; - } else { - if (!loginOptions.forceLogin) throw { error: "Couldn't login. Facebook might have blocked this account. Please login with a browser or enable the option 'forceLogin' and try again." }; - - if (html.indexOf("Suspicious Login Attempt") > -1) form['submit[This was me]'] = "This was me"; - else form['submit[This Is Okay]'] = "This Is Okay"; - - return utils - .post(nextURL, jar, form, loginOptions) - .then(utils.saveCookies(jar)) - .then(function () { - // Use the same form (safe I hope) - form.name_action_selected = 'save_device'; - - return utils.post(nextURL, jar, form, loginOptions).then(utils.saveCookies(jar)); - }) - .then(function (res) { - const headers = res.headers; - - if (!headers.location && res.body.indexOf('Review Recent Login') > -1) throw { error: "Something went wrong with review recent login." }; - - const appState = utils.getAppState(jar); - - // Simply call loginHelper because all it needs is the jar - // and will then complete the login process - return loginHelper(appState, email, password, loginOptions, callback); - }) - .catch(e => callback(e)); - } - }); - } - - return utils.get('https://www.facebook.com/', jar, null, loginOptions).then(utils.saveCookies(jar)); - }); - }; -} - -// Helps the login -function loginHelper(appState, email, password, globalOptions, callback, prCallback) { - let mainPromise = null; - const jar = utils.getJar(); - - // If we're given an appState we loop through it and save each cookie - // back into the jar. - if (appState) { - // check and convert cookie to appState - if (utils.getType(appState) === 'Array' && appState.some(c => c.name)) { - appState = appState.map(c => { - c.key = c.name; - delete c.name; - return c; - }); - } - else if (utils.getType(appState) === 'String') { - const arrayAppState = []; - appState.split(';').forEach(c => { - const [key, value] = c.split('='); - - arrayAppState.push({ - key: (key || "").trim(), - value: (value || "").trim(), - domain: "facebook.com", - path: "/", - expires: new Date().getTime() + 1000 * 60 * 60 * 24 * 365 - }); - }); - appState = arrayAppState; - } - - appState.map(function (c) { - const str = c.key + "=" + c.value + "; expires=" + c.expires + "; domain=" + c.domain + "; path=" + c.path + ";"; - jar.setCookie(str, "http://" + c.domain); - }); - - // Load the main page. - mainPromise = utils.get('https://www.facebook.com/', jar, null, globalOptions, { noRef: true }).then(utils.saveCookies(jar)); - } else { - // Open the main page, then we login with the given credentials and finally - // load the main page again (it'll give us some IDs that we need) - mainPromise = utils - .get("https://www.facebook.com/", null, null, globalOptions, { noRef: true }) - .then(utils.saveCookies(jar)) - .then(makeLogin(jar, email, password, globalOptions, callback, prCallback)) - .then(function () { - return utils.get('https://www.facebook.com/', jar, null, globalOptions).then(utils.saveCookies(jar)); - }); - } - - - let redirectArr = [1, "https://m.facebook.com/"]; - let ctx; - let api; - function checkAndFixErr(res) { - const reg_antierr = /This browser is not supported/gs; - if (reg_antierr.test(res.body)) { - const Data = JSON.stringify(res.body); - const Dt_Check = Data.split('2Fhome.php&gfid=')[1]; - if (Dt_Check == undefined) return res; - const fid = Dt_Check.split("\\\\")[0]; - if (Dt_Check == undefined || Dt_Check == "") return res; - const final_fid = fid.split(`\\`)[0]; - if (final_fid == undefined || final_fid == '') return res; - const redirectlink = redirectArr[1] + "a/preferences.php?basic_site_devices=m_basic&uri=" + encodeURIComponent("https://m.facebook.com/home.php") + "&gfid=" + final_fid; - return utils.get(redirectlink, jar, null, globalOptions).then(utils.saveCookies(jar)); - } - else return res; - } - - function redirect(res) { - const reg = /]+>/; - redirectArr = reg.exec(res.body); - if (redirectArr && redirectArr[1]) return utils.get(redirectArr[1], jar, null, globalOptions).then(utils.saveCookies(jar)); - return res; - } - - mainPromise = mainPromise - .then(res => redirect(res)) - .then(res => checkAndFixErr(res)) - //fix via login with defaut UA return WWW.facebook.com not m.facebook.com - .then(function (res) { - const Regex_Via = /MPageLoadClientMetrics/gs; //default for normal account, can easily get region, without this u can't get region in some case but u can run normal - if (!Regex_Via.test(res.body)) { - //www.facebook.com - globalOptions.userAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1"; - return utils.get('https://www.facebook.com/', jar, null, globalOptions, { noRef: true }).then(utils.saveCookies(jar)); - } - else return res; - }) - .then(res => redirect(res)) - .then(res => checkAndFixErr(res)) - .then(function (res) { - const html = res.body; - const stuff = buildAPI(globalOptions, html, jar); - ctx = stuff[0]; - api = stuff[2]; - return res; - }); - - // given a pageID we log in as a page - if (globalOptions.pageID) { - mainPromise = mainPromise - .then(function () { - return utils.get('https://www.facebook.com/' + ctx.globalOptions.pageID + '/messages/?section=messages&subsection=inbox', ctx.jar, null, globalOptions); - }) - .then(function (resData) { - let url = utils.getFrom(resData.body, 'window.location.replace("https:\\/\\/www.facebook.com\\', '");').split('\\').join(''); - url = url.substring(0, url.length - 1); - return utils.get('https://www.facebook.com' + url, ctx.jar, null, globalOptions); - }); - } - - // At the end we call the callback or catch an exception - mainPromise - .then(function () { - log.info("login", 'Done logging in.'); - return callback(null, api); - }) - .catch(function (e) { - log.error("login", e.error || e); - callback(e); - }); -} - -function login(loginData, options, callback) { - if (utils.getType(options) === 'Function' || utils.getType(options) === 'AsyncFunction') { - callback = options; - options = {}; - } - - const globalOptions = { - selfListen: false, - selfListenEvent: false, - listenEvents: false, - listenTyping: false, - updatePresence: false, - forceLogin: false, - autoMarkDelivery: true, - autoMarkRead: false, - autoReconnect: true, - logRecordSize: defaultLogRecordSize, - online: false, - emitReady: false, - userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18" - }; - - setOptions(globalOptions, options); - - let prCallback = null; - let returnPromise; - if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") { - let rejectFunc = null; - let resolveFunc = null; - returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - prCallback = function (error, api) { - if (error) { - return rejectFunc(error); - } - return resolveFunc(api); - }; - callback = prCallback; - } - loginHelper(loginData.appState, loginData.email, loginData.password, globalOptions, callback, prCallback); - return returnPromise; -} - -module.exports = login; \ No newline at end of file diff --git a/fb-chat-api/src/addExternalModule.js b/fb-chat-api/src/addExternalModule.js deleted file mode 100644 index 0ef0ada0d3..0000000000 --- a/fb-chat-api/src/addExternalModule.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function addExternalModule(moduleObj) { - if (utils.getType(moduleObj) == "Object") { - for (const apiName in moduleObj) { - if (utils.getType(moduleObj[apiName]) == "Function") { - api[apiName] = moduleObj[apiName](defaultFuncs, api, ctx, utils, log); - } else { - throw new Error(`Item "${apiName}" in moduleObj must be a function, not ${utils.getType(moduleObj[apiName])}!`); - } - } - } else { - throw new Error(`moduleObj must be an object, not ${utils.getType(moduleObj)}!`); - } - }; -}; - -// example usage: -// api.addExternalModule({ -// getCtx: (defaultFuncs, api, ctx, utils, log) => { -// return function getCtx() { -// return ctx; -// }; -// } -// }); diff --git a/fb-chat-api/src/addUserToGroup.js b/fb-chat-api/src/addUserToGroup.js deleted file mode 100644 index a13cf0a0c2..0000000000 --- a/fb-chat-api/src/addUserToGroup.js +++ /dev/null @@ -1,113 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function addUserToGroup(userID, threadID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if ( - !callback && - (utils.getType(threadID) === "Function" || - utils.getType(threadID) === "AsyncFunction") - ) { - throw new utils.CustomError({ error: "please pass a threadID as a second argument." }); - } - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - if ( - utils.getType(threadID) !== "Number" && - utils.getType(threadID) !== "String" - ) { - throw new utils.CustomError({ - error: - "ThreadID should be of type Number or String and not " + - utils.getType(threadID) + - "." - }); - } - - if (utils.getType(userID) !== "Array") { - userID = [userID]; - } - - const messageAndOTID = utils.generateOfflineThreadingID(); - const form = { - client: "mercury", - action_type: "ma-type:log-message", - author: "fbid:" + (ctx.i_userID || ctx.userID), - thread_id: "", - timestamp: Date.now(), - timestamp_absolute: "Today", - timestamp_relative: utils.generateTimestampRelative(), - timestamp_time_passed: "0", - is_unread: false, - is_cleared: false, - is_forward: false, - is_filtered_content: false, - is_filtered_content_bh: false, - is_filtered_content_account: false, - is_spoof_warning: false, - source: "source:chat:web", - "source_tags[0]": "source:chat", - log_message_type: "log:subscribe", - status: "0", - offline_threading_id: messageAndOTID, - message_id: messageAndOTID, - threading_id: utils.generateThreadingID(ctx.clientID), - manual_retry_cnt: "0", - thread_fbid: threadID - }; - - for (let i = 0; i < userID.length; i++) { - if ( - utils.getType(userID[i]) !== "Number" && - utils.getType(userID[i]) !== "String" - ) { - throw new utils.CustomError({ - error: - "Elements of userID should be of type Number or String and not " + - utils.getType(userID[i]) + - "." - }); - } - - form["log_message_data[added_participants][" + i + "]"] = - "fbid:" + userID[i]; - } - - defaultFuncs - .post("https://www.facebook.com/messaging/send/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (!resData) { - throw new utils.CustomError({ error: "Add to group failed." }); - } - if (resData.error) { - throw new utils.CustomError(resData); - } - - return callback(); - }) - .catch(function (err) { - log.error("addUserToGroup", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeAdminStatus.js b/fb-chat-api/src/changeAdminStatus.js deleted file mode 100644 index df84e64457..0000000000 --- a/fb-chat-api/src/changeAdminStatus.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeAdminStatus(threadID, adminIDs, adminStatus, callback) { - if (utils.getType(threadID) !== "String") { - throw new utils.CustomError({ error: "changeAdminStatus: threadID must be a string" }); - } - - if (utils.getType(adminIDs) === "String") { - adminIDs = [adminIDs]; - } - - if (utils.getType(adminIDs) !== "Array") { - throw new utils.CustomError({ error: "changeAdminStatus: adminIDs must be an array or string" }); - } - - if (utils.getType(adminStatus) !== "Boolean") { - throw new utils.CustomError({ error: "changeAdminStatus: adminStatus must be a string" }); - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") { - throw new utils.CustomError({ error: "changeAdminStatus: callback is not a function" }); - } - - const form = { - "thread_fbid": threadID - }; - - let i = 0; - for (const u of adminIDs) { - form[`admin_ids[${i++}]`] = u; - } - form["add"] = adminStatus; - - defaultFuncs - .post("https://www.facebook.com/messaging/save_admins/?dpr=1", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - switch (resData.error) { - case 1976004: - throw new utils.CustomError({ error: "Cannot alter admin status: you are not an admin.", rawResponse: resData }); - case 1357031: - throw new utils.CustomError({ error: "Cannot alter admin status: this thread is not a group chat.", rawResponse: resData }); - default: - throw new utils.CustomError({ error: "Cannot alter admin status: unknown error.", rawResponse: resData }); - } - } - - callback(); - }) - .catch(function (err) { - log.error("changeAdminStatus", err); - return callback(err); - }); - - return returnPromise; - }; -}; - diff --git a/fb-chat-api/src/changeArchivedStatus.js b/fb-chat-api/src/changeArchivedStatus.js deleted file mode 100644 index 057db1bbfc..0000000000 --- a/fb-chat-api/src/changeArchivedStatus.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeArchivedStatus(threadOrThreads, archive, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - const form = {}; - - if (utils.getType(threadOrThreads) === "Array") { - for (let i = 0; i < threadOrThreads.length; i++) { - form["ids[" + threadOrThreads[i] + "]"] = archive; - } - } else { - form["ids[" + threadOrThreads + "]"] = archive; - } - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/change_archived_status.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("changeArchivedStatus", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeAvatar.js b/fb-chat-api/src/changeAvatar.js deleted file mode 100644 index 52af747be8..0000000000 --- a/fb-chat-api/src/changeAvatar.js +++ /dev/null @@ -1,126 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - function handleUpload(image, callback) { - const uploads = []; - - const form = { - profile_id: ctx.i_userID || ctx.userID, - photo_source: 57, - av: ctx.i_userID || ctx.userID, - file: image - }; - - uploads.push( - defaultFuncs - .postFormData( - "https://www.facebook.com/profile/picture/upload/", - ctx.jar, - form, - {} - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - return resData; - }) - ); - - // resolve all promises - Promise - .all(uploads) - .then(function (resData) { - callback(null, resData); - }) - .catch(function (err) { - log.error("handleUpload", err); - return callback(err); - }); - } - - return function changeAvatar(image, caption = "", timestamp = null, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!timestamp && utils.getType(caption) === "Number") { - timestamp = caption; - caption = ""; - } - - if (!timestamp && !callback && (utils.getType(caption) == "Function" || utils.getType(caption) == "AsyncFunction")) { - callback = caption; - caption = ""; - timestamp = null; - } - - if (!callback) callback = function (err, data) { - if (err) { - return rejectFunc(err); - } - resolveFunc(data); - }; - - if (!utils.isReadableStream(image)) - return callback("Image is not a readable stream"); - - handleUpload(image, function (err, payload) { - if (err) { - return callback(err); - } - - const form = { - av: ctx.i_userID || ctx.userID, - fb_api_req_friendly_name: "ProfileCometProfilePictureSetMutation", - fb_api_caller_class: "RelayModern", - doc_id: "5066134240065849", - variables: JSON.stringify({ - input: { - caption, - existing_photo_id: payload[0].payload.fbid, - expiration_time: timestamp, - profile_id: ctx.i_userID || ctx.userID, - profile_pic_method: "EXISTING", - profile_pic_source: "TIMELINE", - scaled_crop_rect: { - height: 1, - width: 1, - x: 0, - y: 0 - }, - skip_cropping: true, - actor_id: ctx.i_userID || ctx.userID, - client_mutation_id: Math.round(Math.random() * 19).toString() - }, - isPage: false, - isProfile: true, - scale: 3 - }) - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphql/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.errors) { - throw resData; - } - return callback(null, resData[0].data.profile_picture_set); - }) - .catch(function (err) { - log.error("changeAvatar", err); - return callback(err); - }); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeBio.js b/fb-chat-api/src/changeBio.js deleted file mode 100644 index 6b683d0de0..0000000000 --- a/fb-chat-api/src/changeBio.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeBio(bio, publish, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - if (utils.getType(publish) == "Function" || utils.getType(publish) == "AsyncFunction") { - callback = publish; - } else { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - } - - if (utils.getType(publish) != "Boolean") { - publish = false; - } - - if (utils.getType(bio) != "String") { - bio = ""; - publish = false; - } - - const form = { - fb_api_caller_class: "RelayModern", - fb_api_req_friendly_name: "ProfileCometSetBioMutation", - // This doc_is is valid as of May 23, 2020 - doc_id: "2725043627607610", - variables: JSON.stringify({ - input: { - bio: bio, - publish_bio_feed_story: publish, - actor_id: ctx.i_userID || ctx.userID, - client_mutation_id: Math.round(Math.random() * 1024).toString() - }, - hasProfileTileViewID: false, - profileTileViewID: null, - scale: 1 - }), - av: ctx.i_userID || ctx.userID - }; - - defaultFuncs - .post( - "https://www.facebook.com/api/graphql/", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.errors) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("changeBio", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeBlockedStatus.js b/fb-chat-api/src/changeBlockedStatus.js deleted file mode 100644 index 0db02599a5..0000000000 --- a/fb-chat-api/src/changeBlockedStatus.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeBlockedStatus(userID, block, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - defaultFuncs - .post( - `https://www.facebook.com/messaging/${block ? "" : "un"}block_messages/`, - ctx.jar, - { - fbid: userID - } - ) - .then(utils.saveCookies(ctx.jar)) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("changeBlockedStatus", err); - return callback(err); - }); - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeGroupImage.js b/fb-chat-api/src/changeGroupImage.js deleted file mode 100644 index ef891cc928..0000000000 --- a/fb-chat-api/src/changeGroupImage.js +++ /dev/null @@ -1,132 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - function handleUpload(image, callback) { - const uploads = []; - - const form = { - images_only: "true", - "attachment[]": image - }; - - uploads.push( - defaultFuncs - .postFormData( - "https://upload.facebook.com/ajax/mercury/upload.php", - ctx.jar, - form, - {} - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return resData.payload.metadata[0]; - }) - ); - - // resolve all promises - Promise - .all(uploads) - .then(function (resData) { - callback(null, resData); - }) - .catch(function (err) { - log.error("handleUpload", err); - return callback(err); - }); - } - - return function changeGroupImage(image, threadID, callback) { - if ( - !callback && - (utils.getType(threadID) === "Function" || - utils.getType(threadID) === "AsyncFunction") - ) { - throw { error: "please pass a threadID as a second argument." }; - } - - if (!utils.isReadableStream(image)) { - throw { error: "please pass a readable stream as a first argument." }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - const messageAndOTID = utils.generateOfflineThreadingID(); - const form = { - client: "mercury", - action_type: "ma-type:log-message", - author: "fbid:" + (ctx.i_userID || ctx.userID), - author_email: "", - ephemeral_ttl_mode: "0", - is_filtered_content: false, - is_filtered_content_account: false, - is_filtered_content_bh: false, - is_filtered_content_invalid_app: false, - is_filtered_content_quasar: false, - is_forward: false, - is_spoof_warning: false, - is_unread: false, - log_message_type: "log:thread-image", - manual_retry_cnt: "0", - message_id: messageAndOTID, - offline_threading_id: messageAndOTID, - source: "source:chat:web", - "source_tags[0]": "source:chat", - status: "0", - thread_fbid: threadID, - thread_id: "", - timestamp: Date.now(), - timestamp_absolute: "Today", - timestamp_relative: utils.generateTimestampRelative(), - timestamp_time_passed: "0" - }; - - handleUpload(image, function (err, payload) { - if (err) { - return callback(err); - } - - form["thread_image_id"] = payload[0]["image_id"]; - form["thread_id"] = threadID; - - defaultFuncs - .post("https://www.facebook.com/messaging/set_thread_image/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - // check for errors here - - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("changeGroupImage", err); - return callback(err); - }); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeNickname.js b/fb-chat-api/src/changeNickname.js deleted file mode 100644 index 6b4a65fec7..0000000000 --- a/fb-chat-api/src/changeNickname.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeNickname(nickname, threadID, participantID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - const form = { - nickname: nickname, - participant_id: participantID, - thread_or_other_fbid: threadID - }; - - defaultFuncs - .post( - "https://www.facebook.com/messaging/save_thread_nickname/?source=thread_settings&dpr=1", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error === 1545014) { - throw { error: "Trying to change nickname of user isn't in thread" }; - } - if (resData.error === 1357031) { - throw { - error: - "Trying to change user nickname of a thread that doesn't exist. Have at least one message in the thread before trying to change the user nickname." - }; - } - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("changeNickname", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeThreadColor.js b/fb-chat-api/src/changeThreadColor.js deleted file mode 100644 index a68711ce7a..0000000000 --- a/fb-chat-api/src/changeThreadColor.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeThreadColor(color, threadID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(err); - }; - } - - if (!isNaN(color)) { - color = color.toString(); - } - const validatedColor = color !== null ? color.toLowerCase() : color; // API only accepts lowercase letters in hex string - - const form = { - dpr: 1, - queries: JSON.stringify({ - o0: { - //This doc_id is valid as of January 31, 2020 - doc_id: "1727493033983591", - query_params: { - data: { - actor_id: ctx.i_userID || ctx.userID, - client_mutation_id: "0", - source: "SETTINGS", - theme_id: validatedColor, - thread_id: threadID - } - } - } - }) - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData[resData.length - 1].error_results > 0) { - throw new utils.CustomError(resData[0].o0.errors); - } - - return callback(); - }) - .catch(function (err) { - log.error("changeThreadColor", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/changeThreadEmoji.js b/fb-chat-api/src/changeThreadEmoji.js deleted file mode 100644 index 587f4c0dd2..0000000000 --- a/fb-chat-api/src/changeThreadEmoji.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function changeThreadEmoji(emoji, threadID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - const form = { - emoji_choice: emoji, - thread_or_other_fbid: threadID - }; - - defaultFuncs - .post( - "https://www.facebook.com/messaging/save_thread_emoji/?source=thread_settings&__pc=EXP1%3Amessengerdotcom_pkg", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error === 1357031) { - throw { - error: - "Trying to change emoji of a chat that doesn't exist. Have at least one message in the thread before trying to change the emoji." - }; - } - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("changeThreadEmoji", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/createNewGroup.js b/fb-chat-api/src/createNewGroup.js deleted file mode 100644 index a76773dfbf..0000000000 --- a/fb-chat-api/src/createNewGroup.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function createNewGroup(participantIDs, groupTitle, callback) { - if (utils.getType(groupTitle) == "Function") { - callback = groupTitle; - groupTitle = null; - } - - if (utils.getType(participantIDs) !== "Array") { - throw { error: "createNewGroup: participantIDs should be an array." }; - } - - if (participantIDs.length < 2) { - throw { error: "createNewGroup: participantIDs should have at least 2 IDs." }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, threadID) { - if (err) { - return rejectFunc(err); - } - resolveFunc(threadID); - }; - } - - const pids = []; - for (const n in participantIDs) { - pids.push({ - fbid: participantIDs[n] - }); - } - pids.push({ fbid: ctx.i_userID || ctx.userID }); - - const form = { - fb_api_caller_class: "RelayModern", - fb_api_req_friendly_name: "MessengerGroupCreateMutation", - av: ctx.i_userID || ctx.userID, - //This doc_id is valid as of January 11th, 2020 - doc_id: "577041672419534", - variables: JSON.stringify({ - input: { - entry_point: "jewel_new_group", - actor_id: ctx.i_userID || ctx.userID, - participants: pids, - client_mutation_id: Math.round(Math.random() * 1024).toString(), - thread_settings: { - name: groupTitle, - joinable_mode: "PRIVATE", - thread_image_fbid: null - } - } - }) - }; - - defaultFuncs - .post( - "https://www.facebook.com/api/graphql/", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.errors) { - throw resData; - } - return callback(null, resData.data.messenger_group_thread_create.thread.thread_key.thread_fbid); - }) - .catch(function (err) { - log.error("createNewGroup", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/createPoll.js b/fb-chat-api/src/createPoll.js deleted file mode 100644 index ebc2cf1c34..0000000000 --- a/fb-chat-api/src/createPoll.js +++ /dev/null @@ -1,71 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function createPoll(title, threadID, options, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - if (utils.getType(options) == "Function") { - callback = options; - options = null; - } else { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - } - if (!options) { - options = {}; // Initial poll options are optional - } - - const form = { - target_id: threadID, - question_text: title - }; - - // Set fields for options (and whether they are selected initially by the posting user) - let ind = 0; - for (const opt in options) { - // eslint-disable-next-line no-prototype-builtins - if (options.hasOwnProperty(opt)) { - form["option_text_array[" + ind + "]"] = opt; - form["option_is_selected_array[" + ind + "]"] = options[opt] - ? "1" - : "0"; - ind++; - } - } - - defaultFuncs - .post( - "https://www.facebook.com/messaging/group_polling/create_poll/?dpr=1", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.payload.status != "success") { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("createPoll", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/deleteMessage.js b/fb-chat-api/src/deleteMessage.js deleted file mode 100644 index 8fd9860831..0000000000 --- a/fb-chat-api/src/deleteMessage.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function deleteMessage(messageOrMessages, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - const form = { - client: "mercury" - }; - - if (utils.getType(messageOrMessages) !== "Array") { - messageOrMessages = [messageOrMessages]; - } - - for (let i = 0; i < messageOrMessages.length; i++) { - form["message_ids[" + i + "]"] = messageOrMessages[i]; - } - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/delete_messages.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("deleteMessage", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/deleteThread.js b/fb-chat-api/src/deleteThread.js deleted file mode 100644 index adc8d57022..0000000000 --- a/fb-chat-api/src/deleteThread.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function deleteThread(threadOrThreads, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - const form = { - client: "mercury" - }; - - if (utils.getType(threadOrThreads) !== "Array") { - threadOrThreads = [threadOrThreads]; - } - - for (let i = 0; i < threadOrThreads.length; i++) { - form["ids[" + i + "]"] = threadOrThreads[i]; - } - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/delete_thread.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("deleteThread", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/editMessage.js b/fb-chat-api/src/editMessage.js deleted file mode 100644 index 322b4b3cba..0000000000 --- a/fb-chat-api/src/editMessage.js +++ /dev/null @@ -1,66 +0,0 @@ -"use_strict"; -/** - * @author RFS-ADRENO - * @rewrittenBy Isai Ivanov - */ -const generateOfflineThreadingId = require('../utils'); - -function canBeCalled(func) { - try { - Reflect.apply(func, null, []); - return true; - } catch (error) { - return false; - } -} - -/** - * A function for editing bot's messages. - * @param {string} text - The text with which the bot will edit its messages. - * @param {string} messageID - The message ID of the message the bot will edit. - * @param {Object} callback - Callback for the function. - */ - -module.exports = function (defaultFuncs, api, ctx) { - return function editMessage(text, messageID, callback) { - if (!ctx.mqttClient) { - throw new Error('Not connected to MQTT'); - } - - ctx.wsReqNumber += 1; - ctx.wsTaskNumber += 1; - - const queryPayload = { - message_id: messageID, - text: text - }; - - const query = { - failure_count: null, - label: '742', - payload: JSON.stringify(queryPayload), - queue_name: 'edit_message', - task_id: ctx.wsTaskNumber - }; - - const context = { - app_id: '2220391788200892', - payload: { - data_trace_id: null, - epoch_id: parseInt(generateOfflineThreadingId), - tasks: [query], - version_id: '6903494529735864' - }, - request_id: ctx.wsReqNumber, - type: 3 - }; - - context.payload = JSON.stringify(context.payload); - - // if (canBeCalled(callback)) { - // ctx.reqCallbacks[ctx.wsReqNumber] = callback; - // } - - ctx.mqttClient.publish('/ls_req', JSON.stringify(context), { qos: 1, retain: false }); - }; -}; diff --git a/fb-chat-api/src/forwardAttachment.js b/fb-chat-api/src/forwardAttachment.js deleted file mode 100644 index f2bed29e9a..0000000000 --- a/fb-chat-api/src/forwardAttachment.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function forwardAttachment(attachmentID, userOrUsers, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - if (!callback) { - callback = function (err) { - if (err) { - return rejectFunc(err); - } - resolveFunc(); - }; - } - - const form = { - attachment_id: attachmentID - }; - - if (utils.getType(userOrUsers) !== "Array") { - userOrUsers = [userOrUsers]; - } - - const timestamp = Math.floor(Date.now() / 1000); - - for (let i = 0; i < userOrUsers.length; i++) { - //That's good, the key of the array is really timestmap in seconds + index - //Probably time when the attachment will be sent? - form["recipient_map[" + (timestamp + i) + "]"] = userOrUsers[i]; - } - - defaultFuncs - .post( - "https://www.facebook.com/mercury/attachments/forward/", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("forwardAttachment", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getCurrentUserID.js b/fb-chat-api/src/getCurrentUserID.js deleted file mode 100644 index 0075bc9001..0000000000 --- a/fb-chat-api/src/getCurrentUserID.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -module.exports = function (defaultFuncs, api, ctx) { - return function getCurrentUserID() { - return ctx.i_userID || ctx.userID; - }; -}; diff --git a/fb-chat-api/src/getEmojiUrl.js b/fb-chat-api/src/getEmojiUrl.js deleted file mode 100644 index 7780de8e82..0000000000 --- a/fb-chat-api/src/getEmojiUrl.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; - -const util = require("util"); - -module.exports = function () { - return function getEmojiUrl(c, size, pixelRatio) { - /* - Resolves Facebook Messenger emoji image asset URL for an emoji character. - Supported sizes are 32, 64, and 128. - Supported pixel ratios are '1.0' and '1.5' (possibly more; haven't tested) - */ - const baseUrl = "https://static.xx.fbcdn.net/images/emoji.php/v8/z%s/%s"; - pixelRatio = pixelRatio || "1.0"; - - const ending = util.format( - "%s/%s/%s.png", - pixelRatio, - size, - c.codePointAt(0).toString(16) - ); - let base = 317426846; - for (let i = 0; i < ending.length; i++) { - base = (base << 5) - base + ending.charCodeAt(i); - } - - const hashed = (base & 255).toString(16); - return util.format(baseUrl, hashed, ending); - }; -}; diff --git a/fb-chat-api/src/getFriendsList.js b/fb-chat-api/src/getFriendsList.js deleted file mode 100644 index 0be7741e0e..0000000000 --- a/fb-chat-api/src/getFriendsList.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -// [almost] copy pasted from one of FB's minified file (GenderConst) -const GENDERS = { - 0: "unknown", - 1: "female_singular", - 2: "male_singular", - 3: "female_singular_guess", - 4: "male_singular_guess", - 5: "mixed", - 6: "neuter_singular", - 7: "unknown_singular", - 8: "female_plural", - 9: "male_plural", - 10: "neuter_plural", - 11: "unknown_plural" -}; - -function formatData(obj) { - return Object.keys(obj).map(function (key) { - const user = obj[key]; - return { - alternateName: user.alternateName, - firstName: user.firstName, - gender: GENDERS[user.gender], - userID: utils.formatID(user.id.toString()), - isFriend: user.is_friend != null && user.is_friend ? true : false, - fullName: user.name, - profilePicture: user.thumbSrc, - type: user.type, - profileUrl: user.uri, - vanity: user.vanity, - isBirthday: !!user.is_birthday - }; - }); -} - -module.exports = function (defaultFuncs, api, ctx) { - return function getFriendsList(callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - defaultFuncs - .postFormData( - "https://www.facebook.com/chat/user_info_all", - ctx.jar, - {}, - { viewer: ctx.i_userID || ctx.userID } - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (!resData) { - throw { error: "getFriendsList returned empty object." }; - } - if (resData.error) { - throw resData; - } - callback(null, formatData(resData.payload)); - }) - .catch(function (err) { - log.error("getFriendsList", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getMessage.js b/fb-chat-api/src/getMessage.js deleted file mode 100644 index e2f205fa92..0000000000 --- a/fb-chat-api/src/getMessage.js +++ /dev/null @@ -1,796 +0,0 @@ -"use strict"; - -// Original -/** - * @author https://github.com/Schmavery/facebook-chat-api/pull/865 - */ - -const utils = require("../utils"); -const log = require("npmlog"); - - -function formatMessage(threadID, data) { - switch (data.__typename) { - case "ThreadNameMessage": - return { - type: "event", - threadID: threadID, - messageID: data.message_id, - logMessageType: "log:thread-name", - logMessageData: { - name: data.thread_name - }, - logMessageBody: data.snippet, - timestamp: data.timestamp_precise, - author: data.message_sender.id - }; - case "ThreadImageMessage": - const metadata = data.image_with_metadata; - return { - type: "event", - threadID: threadID, - messageID: data.message_id, - logMessageType: "log:thread-image", - logMessageData: metadata ? { - attachmentID: metadata.legacy_attachment_id, - width: metadata.original_dimensions.x, - height: metadata.original_dimensions.y, - url: metadata.preview.uri - } : - { - attachmentID: null, - width: null, - height: null, - url: null - }, - logMessageBody: data.snippet, - timestamp: data.timestamp_precise, - author: data.message_sender.id - }; - case "GenericAdminTextMessage": - switch (data.extensible_message_admin_text_type) { - case "CHANGE_THREAD_THEME": - return { - type: "event", - threadID: threadID, - messageID: data.message_id, - logMessageType: "log:thread-color", - logMessageData: colors.find(color => color.theme_color === data.extensible_message_admin_text.theme_color) || { - theme_color: data.extensible_message_admin_text.theme_color, - theme_id: null, - theme_emoji: null, - gradient: null, - should_show_icon: null, - theme_name_with_subtitle: null - }, - logMessageBody: data.snippet, - timestamp: data.timestamp_precise, - author: data.message_sender.id - }; - case "CHANGE_THREAD_ICON": - const thread_icon = data.extensible_message_admin_text.thread_icon; - return { - type: "event", - threadID: threadID, - messageID: data.message_id, - logMessageType: "log:thread-icon", - logMessageData: { - thread_icon_url: `https://static.xx.fbcdn.net/images/emoji.php/v9/t3c/1/16/${thread_icon.codePointAt(0).toString(16)}.png`, - thread_icon: thread_icon - }, - logMessageBody: data.snippet, - timestamp: data.timestamp_precise, - author: data.message_sender.id - }; - case "CHANGE_THREAD_NICKNAME": - return { - type: "event", - threadID: threadID, - messageID: data.message_id, - logMessageType: "log:user-nickname", - logMessageData: { - nickname: data.extensible_message_admin_text.nickname, - participant_id: data.extensible_message_admin_text.participant_id - }, - logMessageBody: data.snippet, - timestamp: data.timestamp_precise, - author: data.message_sender.id - }; - case "GROUP_POLL": - const question = data.extensible_message_admin_text.question; - return { - type: "event", - threadID: threadID, - messageID: data.message_id, - logMessageType: "log:thread-poll", - logMessageData: { - question_json: JSON.stringify({ - id: question.id, - text: question.text, - total_count: data.extensible_message_admin_text.total_count, - viewer_has_voted: question.viewer_has_voted, - question_type: "", - creator_id: data.message_sender.id, - options: question.options.nodes.map(option => ({ - id: option.id, - text: option.text, - total_count: option.voters.nodes.length, - viewer_has_voted: option.viewer_has_voted, - voters: option.voters.nodes.map(voter => voter.id) - })) - }), - event_type: data.extensible_message_admin_text.event_type.toLowerCase(), - question_id: question.id - }, - logMessageBody: data.snippet, - timestamp: data.timestamp_precise, - author: data.message_sender.id - }; - default: - throw new Error(`Unknown admin text type: "${data.extensible_message_admin_text_type}", if this happens to you let me know when it happens. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.`); - } - case "UserMessage": - return { - senderID: data.message_sender.id, - body: data.message.text, - threadID: threadID, - messageID: data.message_id, - reactions: data.message_reactions.map(r => ({ - [r.user.id]: r.reaction - })), - attachments: data.blob_attachments && data.blob_attachments.length > 0 ? - data.blob_attachments.length.map(att => { - let x; - try { - x = utils._formatAttachment(att); - } catch (ex) { - x = att; - x.error = ex; - x.type = "unknown"; - } - return x; - }) : - data.extensible_attachment && Object.keys(data.extensible_attachment).length > 0 ? - [{ - type: "share", - ID: data.extensible_attachment.legacy_attachment_id, - url: data.extensible_attachment.story_attachment.url, - - title: data.extensible_attachment.story_attachment.title_with_entities.text, - description: data.extensible_attachment.story_attachment.description.text, - source: data.extensible_attachment.story_attachment.source, - - image: ((data.extensible_attachment.story_attachment.media || {}).image || {}).uri, - width: ((data.extensible_attachment.story_attachment.media || {}).image || {}).width, - height: ((data.extensible_attachment.story_attachment.media || {}).image || {}).height, - playable: (data.extensible_attachment.story_attachment.media || {}).is_playable || false, - duration: (data.extensible_attachment.story_attachment.media || {}).playable_duration_in_ms || 0, - - subattachments: data.extensible_attachment.subattachments, - properties: data.extensible_attachment.story_attachment.properties - }] : - [], - mentions: data.message.ranges.map(mention => ({ - [mention.entity.id]: data.message.text.substring(mention.offset, mention.offset + mention.length) - })), - timestamp: data.timestamp_precise - }; - default: - throw new Error(`Unknown message type: "${data.__typename}", if this happens to you let me know when it happens. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.`); - // If this happens to you let me know when it happens - // Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues. - // return Object.assign({ type: "unknown", data }); - } -} - - -function parseDelta(threadID, delta) { - if (delta.replied_to_message) { - return Object.assign({ - type: "message_reply" - }, formatMessage(threadID, delta), { - messageReply: formatMessage(threadID, delta.replied_to_message.message) - }); - } - else { - return formatMessage(threadID, delta); - } -} - - -module.exports = function (defaultFuncs, api, ctx) { - return function getMessage(threadID, messageID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, info) { - if (err) - return rejectFunc(err); - resolveFunc(info); - }; - } - - if (!threadID || !messageID) { - return callback({ error: "getMessage: need threadID and messageID" }); - } - - const form = { - "av": ctx.globalOptions.pageID, - "queries": JSON.stringify({ - "o0": { - //This doc_id is valid as of ? (prob January 18, 2020) - "doc_id": "1768656253222505", - "query_params": { - "thread_and_message_id": { - "thread_id": threadID, - "message_id": messageID - } - } - } - }) - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then((resData) => { - if (resData[resData.length - 1].error_results > 0) { - throw resData[0].o0.errors; - } - - if (resData[resData.length - 1].successful_results === 0) { - throw { error: "getMessage: there was no successful_results", res: resData }; - } - - const fetchData = resData[0].o0.data.message; - if (fetchData) { - callback(null, parseDelta(threadID, fetchData)); - } - else { - throw fetchData; - } - }) - .catch((err) => { - log.error("getMessage", err); - callback(err); - }); - - return returnPromise; - }; -}; - -const colors = [ - { - theme_color: 'FF000000', - theme_id: '788274591712841', - theme_emoji: '🖤', - gradient: '["FFF0F0F0"]', - should_show_icon: '', - theme_name_with_subtitle: 'Monochrome' - }, - { - theme_color: 'FFFF5CA1', - theme_id: '169463077092846', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Hot Pink' - }, - { - theme_color: 'FF2825B5', - theme_id: '271607034185782', - theme_emoji: null, - gradient: '["FF5E007E","FF331290","FF2825B5"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Shadow' - }, - { - theme_color: 'FFD9A900', - theme_id: '2533652183614000', - theme_emoji: null, - gradient: '["FF550029","FFAA3232","FFD9A900"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Maple' - }, - { - theme_color: 'FFFB45DE', - theme_id: '2873642949430623', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Tulip' - }, - { - theme_color: 'FF5E007E', - theme_id: '193497045377796', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Grape' - }, - { - theme_color: 'FF7AA286', - theme_id: '1455149831518874', - theme_emoji: '🌑', - gradient: '["FF25C0E1","FFCE832A"]', - should_show_icon: '', - theme_name_with_subtitle: 'Dune' - }, - { - theme_color: 'FFFAAF00', - theme_id: '672058580051520', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Honey' - }, - { - theme_color: 'FF0084FF', - theme_id: '196241301102133', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Default Blue' - }, - { - theme_color: 'FFFFC300', - theme_id: '174636906462322', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Yellow' - }, - { - theme_color: 'FF44BEC7', - theme_id: '1928399724138152', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Teal Blue' - }, - { - theme_color: 'FF7646FF', - theme_id: '234137870477637', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Bright Purple' - }, - { - theme_color: 'FFF25C54', - theme_id: '3022526817824329', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Peach' - }, - { - theme_color: 'FFF01D6A', - theme_id: '724096885023603', - theme_emoji: null, - gradient: '["FF005FFF","FF9200FF","FFFF2E19"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Berry' - }, - { - theme_color: 'FFFF7CA8', - theme_id: '624266884847972', - theme_emoji: null, - gradient: '["FFFF8FB2","FFA797FF","FF00E5FF"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Candy' - }, - { - theme_color: 'FF6E5B04', - theme_id: '365557122117011', - theme_emoji: '💛', - gradient: '["FFED9F9A","FFED9F9A","FFED9F9A"]', - should_show_icon: '', - theme_name_with_subtitle: 'Support' - }, - { - theme_color: 'FF0052CD', - theme_id: '230032715012014', - theme_emoji: '✌️', - gradient: '["FF0052CD","FF00A1E6","FF0052CD"]', - should_show_icon: '', - theme_name_with_subtitle: 'Tie-Dye' - }, - { - theme_color: 'FF601DDD', - theme_id: '1060619084701625', - theme_emoji: '☁️', - gradient: '["FFCA34FF","FF302CFF","FFBA009C"]', - should_show_icon: '', - theme_name_with_subtitle: 'Lo-Fi' - }, - { - theme_color: 'FF0099FF', - theme_id: '3273938616164733', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Classic' - }, - { - theme_color: 'FF1ADB5B', - theme_id: '370940413392601', - theme_emoji: null, - gradient: '["FFFFD200","FF6EDF00","FF00DFBB"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Citrus' - }, - { - theme_color: 'FFD696BB', - theme_id: '2058653964378557', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Lavender Purple' - }, - { - theme_color: 'FFC03232', - theme_id: '1059859811490132', - theme_emoji: '🙃', - gradient: '["FFDB4040","FFA32424"]', - should_show_icon: '', - theme_name_with_subtitle: 'Stranger Things' - }, - { - theme_color: 'FFFA3C4C', - theme_id: '2129984390566328', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Red' - }, - { - theme_color: 'FF13CF13', - theme_id: '2136751179887052', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Green' - }, - { - theme_color: 'FFFF7E29', - theme_id: '175615189761153', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Orange' - }, - { - theme_color: 'FFE68585', - theme_id: '980963458735625', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Coral Pink' - }, - { - theme_color: 'FF20CEF5', - theme_id: '2442142322678320', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Aqua Blue' - }, - { - theme_color: 'FF0EDCDE', - theme_id: '417639218648241', - theme_emoji: null, - gradient: '["FF19C9FF","FF00E6D2","FF0EE6B7"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Aqua' - }, - { - theme_color: 'FFFF9C19', - theme_id: '930060997172551', - theme_emoji: null, - gradient: '["FFFFDC2D","FFFF9616","FFFF4F00"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Mango' - }, - { - theme_color: 'FFF01D6A', - theme_id: '164535220883264', - theme_emoji: null, - gradient: '["FF005FFF","FF9200FF","FFFF2E19"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Berry' - }, - { - theme_color: 'FFFF7CA8', - theme_id: '205488546921017', - theme_emoji: null, - gradient: '["FFFF8FB2","FFA797FF","FF00E5FF"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Candy' - }, - { - theme_color: 'FFFF6F07', - theme_id: '1833559466821043', - theme_emoji: '🌎', - gradient: '["FFFF6F07"]', - should_show_icon: '', - theme_name_with_subtitle: 'Earth' - }, - { - theme_color: 'FF0B0085', - theme_id: '339021464972092', - theme_emoji: '🔈', - gradient: '["FF2FA9E4","FF648FEB","FF9B73F2"]', - should_show_icon: '', - theme_name_with_subtitle: 'Music' - }, - { - theme_color: 'FF8A39EF', - theme_id: '1652456634878319', - theme_emoji: '🏳️‍🌈', - gradient: '["FFFF0018","FFFF0417","FFFF310E","FFFF5D06","FFFF7A01","FFFF8701","FFFFB001","FFD9C507","FF79C718","FF01C92D","FF01BE69","FF01B3AA","FF0BA1DF","FF3F77E6","FF724CEC","FF8A39EF","FF8A39EF"]', - should_show_icon: '', - theme_name_with_subtitle: 'Pride' - }, - { - theme_color: 'FF004D7C', - theme_id: '538280997628317', - theme_emoji: '🌀', - gradient: '["FF931410","FF931410","FF931410"]', - should_show_icon: '', - theme_name_with_subtitle: 'Doctor Strange' - }, - { - theme_color: 'FF4F4DFF', - theme_id: '3190514984517598', - theme_emoji: '🌤', - gradient: '["FF0080FF","FF9F1AFF"]', - should_show_icon: '', - theme_name_with_subtitle: 'Sky' - }, - { - theme_color: 'FFE84B28', - theme_id: '357833546030778', - theme_emoji: '🐯', - gradient: '["FFF69500","FFDA0050"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Lunar New Year' - }, - { - theme_color: 'FFB24B77', - theme_id: '627144732056021', - theme_emoji: '🥳', - gradient: '["FFF1614E","FF660F84"]', - should_show_icon: '', - theme_name_with_subtitle: 'Celebration!' - }, - { - theme_color: 'FF66A9FF', - theme_id: '390127158985345', - theme_emoji: '🥶', - gradient: '["FF8CB3FF","FF409FFF"]', - should_show_icon: '', - theme_name_with_subtitle: 'Chill' - }, - { - theme_color: 'FF5797FC', - theme_id: '275041734441112', - theme_emoji: '😌', - gradient: '["FF4AC9E4","FF5890FF","FF8C91FF"]', - should_show_icon: '', - theme_name_with_subtitle: 'Care' - }, - { - theme_color: 'FFFF595C', - theme_id: '3082966625307060', - theme_emoji: '💫', - gradient: '["FFFF239A","FFFF8C21"]', - should_show_icon: '', - theme_name_with_subtitle: 'Astrology' - }, - { - theme_color: 'FF0171FF', - theme_id: '184305226956268', - theme_emoji: '☁️', - gradient: '["FF0026ee","FF00b2ff"]', - should_show_icon: '', - theme_name_with_subtitle: 'J Balvin' - }, - { - theme_color: 'FFA033FF', - theme_id: '621630955405500', - theme_emoji: '🎉', - gradient: '["FFFF7061","FFFF5280","FFA033FF","FF0099FF"]', - should_show_icon: '', - theme_name_with_subtitle: 'Birthday' - }, - { - theme_color: 'FF006528', - theme_id: '539927563794799', - theme_emoji: '🍄', - gradient: '["FF00d52f","FF006528"]', - should_show_icon: '', - theme_name_with_subtitle: 'Cottagecore' - }, - { - theme_color: 'FF4D3EC2', - theme_id: '736591620215564', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Ocean' - }, - { - theme_color: 'FF4e4bf5', - theme_id: '3259963564026002', - theme_emoji: null, - gradient: '["FFAA00FF","FF0080FF"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Default' - }, - { - theme_color: 'FF3A12FF', - theme_id: '582065306070020', - theme_emoji: null, - gradient: '["FFFAAF00","FFFF2E2E","FF3A12FF"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Rocket' - }, - { - theme_color: 'FF3A1D8A', - theme_id: '273728810607574', - theme_emoji: null, - gradient: '["FFFB45DE","FF841DD5","FF3A1D8A"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Unicorn' - }, - { - theme_color: 'FF9FD52D', - theme_id: '262191918210707', - theme_emoji: null, - gradient: '["FF2A7FE3","FF00BF91","FF9FD52D"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Tropical' - }, - { - theme_color: 'FFF7B267', - theme_id: '909695489504566', - theme_emoji: null, - gradient: '["FFF25C54","FFF4845F","FFF7B267"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Sushi' - }, - { - theme_color: 'FF1ADB5B', - theme_id: '557344741607350', - theme_emoji: null, - gradient: '["FFFFD200","FF6EDF00","FF00DFBB"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Citrus' - }, - { - theme_color: 'FF4D3EC2', - theme_id: '280333826736184', - theme_emoji: null, - gradient: '["FFFF625B","FFC532AD","FF4D3EC2"]', - should_show_icon: '1', - theme_name_with_subtitle: 'Lollipop' - }, - { - theme_color: 'FFFF311E', - theme_id: '1257453361255152', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Rose' - }, - { - theme_color: 'FFA797FF', - theme_id: '571193503540759', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Lavender' - }, - { - theme_color: 'FF6EDF00', - theme_id: '3151463484918004', - theme_emoji: null, - gradient: null, - should_show_icon: '1', - theme_name_with_subtitle: 'Kiwi' - }, - { - theme_color: 'FF9D59D2', - theme_id: '737761000603635', - theme_emoji: '💛', - gradient: '["FFFFD600","FFFCB37B","FF9D59D2","FF282828"]', - should_show_icon: '', - theme_name_with_subtitle: 'Non-Binary' - }, - { - theme_color: 'FF57C39C', - theme_id: '1288506208402340', - theme_emoji: '💐', - gradient: '["FF57C39C","FF57C39C","FF57C39C"]', - should_show_icon: '', - theme_name_with_subtitle: 'Mother\'s Day' - }, - { - theme_color: 'FFF65900', - theme_id: '121771470870245', - theme_emoji: '💥', - gradient: '["FFFF8328","FFFF7014","FFFF5C00"]', - should_show_icon: '', - theme_name_with_subtitle: 'APAHM' - }, - { - theme_color: 'FF978E21', - theme_id: '810978360551741', - theme_emoji: '🪺', - gradient: '["FF978E21","FF978E21","FF978E21"]', - should_show_icon: '', - theme_name_with_subtitle: 'Parenthood' - }, - { - theme_color: 'FFDD8800', - theme_id: '1438011086532622', - theme_emoji: '✨', - gradient: '["FFEDAB00","FFCD6300"]', - should_show_icon: '', - theme_name_with_subtitle: 'Star Wars' - }, - { - theme_color: 'FF7D09B9', - theme_id: '101275642962533', - theme_emoji: '🚀', - gradient: '["FF5C22D6","FF8F1EB5","FFC31B92"]', - should_show_icon: '', - theme_name_with_subtitle: 'Guardians of the Galaxy' - }, - { - theme_color: 'FF61C500', - theme_id: '158263147151440', - theme_emoji: '🐝', - gradient: '["FF61C500","FF61C500","FF61C500"]', - should_show_icon: '', - theme_name_with_subtitle: 'Bloom' - }, - { - theme_color: 'FF826044', - theme_id: '195296273246380', - theme_emoji: '🧋', - gradient: '["FF886546","FFA27F57","FFC6A26E"]', - should_show_icon: '', - theme_name_with_subtitle: 'Bubble Tea' - }, - { - theme_color: 'FFB02501', - theme_id: '6026716157422736', - theme_emoji: '⛹️', - gradient: '["FFAC2503","FFB02501","FFB42400"]', - should_show_icon: '', - theme_name_with_subtitle: 'Basketball' - }, - { - theme_color: 'FF574DC1', - theme_id: '693996545771691', - theme_emoji: '🖤', - gradient: '["FF4533FF","FF574AE0","FF6C64BE"]', - should_show_icon: '', - theme_name_with_subtitle: 'Elephants&Flowers' - }, - { - theme_color: 'FFA8B8DA', - theme_id: '504518465021637', - theme_emoji: '🏳️‍⚧️', - gradient: '["FF55D0FF","FF7597D7","FFFF9FB3","FFFF9FB3"]', - should_show_icon: '', - theme_name_with_subtitle: 'Transgender' - } -]; \ No newline at end of file diff --git a/fb-chat-api/src/getThreadHistory.js b/fb-chat-api/src/getThreadHistory.js deleted file mode 100644 index 05a26ede67..0000000000 --- a/fb-chat-api/src/getThreadHistory.js +++ /dev/null @@ -1,666 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - - -function getExtension(original_extension, filename = "") { - if (original_extension) { - return original_extension; - } - else { - const extension = filename.split(".").pop(); - if (extension === filename) { - return ""; - } - else { - return extension; - } - } -} - -function formatAttachmentsGraphQLResponse(attachment) { - switch (attachment.__typename) { - case "MessageImage": - return { - type: "photo", - ID: attachment.legacy_attachment_id, - filename: attachment.filename, - original_extension: getExtension(attachment.original_extension, attachment.filename), - thumbnailUrl: attachment.thumbnail.uri, - - previewUrl: attachment.preview.uri, - previewWidth: attachment.preview.width, - previewHeight: attachment.preview.height, - - largePreviewUrl: attachment.large_preview.uri, - largePreviewHeight: attachment.large_preview.height, - largePreviewWidth: attachment.large_preview.width, - - // You have to query for the real image. See below. - url: attachment.large_preview.uri, // @Legacy - width: attachment.large_preview.width, // @Legacy - height: attachment.large_preview.height, // @Legacy - name: attachment.filename, // @Legacy - - // @Undocumented - attributionApp: attachment.attribution_app - ? { - attributionAppID: attachment.attribution_app.id, - name: attachment.attribution_app.name, - logo: attachment.attribution_app.square_logo - } - : null - - // @TODO No idea what this is, should we expose it? - // Ben - July 15th 2017 - // renderAsSticker: attachment.render_as_sticker, - - // This is _not_ the real URI, this is still just a large preview. - // To get the URL we'll need to support a POST query to - // - // https://www.facebook.com/webgraphql/query/ - // - // With the following query params: - // - // query_id:728987990612546 - // variables:{"id":"100009069356507","photoID":"10213724771692996"} - // dpr:1 - // - // No special form though. - }; - case "MessageAnimatedImage": - return { - type: "animated_image", - ID: attachment.legacy_attachment_id, - filename: attachment.filename, - original_extension: getExtension(attachment.original_extension, attachment.filename), - - previewUrl: attachment.preview_image.uri, - previewWidth: attachment.preview_image.width, - previewHeight: attachment.preview_image.height, - - url: attachment.animated_image.uri, - width: attachment.animated_image.width, - height: attachment.animated_image.height, - - thumbnailUrl: attachment.preview_image.uri, // @Legacy - name: attachment.filename, // @Legacy - facebookUrl: attachment.animated_image.uri, // @Legacy - rawGifImage: attachment.animated_image.uri, // @Legacy - animatedGifUrl: attachment.animated_image.uri, // @Legacy - animatedGifPreviewUrl: attachment.preview_image.uri, // @Legacy - animatedWebpUrl: attachment.animated_image.uri, // @Legacy - animatedWebpPreviewUrl: attachment.preview_image.uri, // @Legacy - - // @Undocumented - attributionApp: attachment.attribution_app - ? { - attributionAppID: attachment.attribution_app.id, - name: attachment.attribution_app.name, - logo: attachment.attribution_app.square_logo - } - : null - }; - case "MessageVideo": - return { - type: "video", - ID: attachment.legacy_attachment_id, - filename: attachment.filename, - original_extension: getExtension(attachment.original_extension, attachment.filename), - duration: attachment.playable_duration_in_ms, - - thumbnailUrl: attachment.large_image.uri, // @Legacy - - previewUrl: attachment.large_image.uri, - previewWidth: attachment.large_image.width, - previewHeight: attachment.large_image.height, - - url: attachment.playable_url, - width: attachment.original_dimensions.x, - height: attachment.original_dimensions.y, - - videoType: attachment.video_type.toLowerCase() - }; - case "MessageFile": - return { - type: "file", - ID: attachment.message_file_fbid, - filename: attachment.filename, - original_extension: getExtension(attachment.original_extension, attachment.filename), - - url: attachment.url, - isMalicious: attachment.is_malicious, - contentType: attachment.content_type, - - name: attachment.filename, // @Legacy - mimeType: "", // @Legacy - fileSize: -1 // @Legacy - }; - case "MessageAudio": - return { - type: "audio", - ID: attachment.url_shimhash, // Not fowardable - filename: attachment.filename, - original_extension: getExtension(attachment.original_extension, attachment.filename), - - duration: attachment.playable_duration_in_ms, - audioType: attachment.audio_type, - url: attachment.playable_url, - - isVoiceMail: attachment.is_voicemail - }; - default: - return { - error: "Don't know about attachment type " + attachment.__typename - }; - } -} - -function formatExtensibleAttachment(attachment) { - if (attachment.story_attachment) { - return { - type: "share", - ID: attachment.legacy_attachment_id, - url: attachment.story_attachment.url, - - title: attachment.story_attachment.title_with_entities.text, - description: - attachment.story_attachment.description && - attachment.story_attachment.description.text, - source: - attachment.story_attachment.source == null - ? null - : attachment.story_attachment.source.text, - - image: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.animated_image == null && - attachment.story_attachment.media.image == null - ? null - : ( - attachment.story_attachment.media.animated_image || - attachment.story_attachment.media.image - ).uri, - width: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.animated_image == null && - attachment.story_attachment.media.image == null - ? null - : ( - attachment.story_attachment.media.animated_image || - attachment.story_attachment.media.image - ).width, - height: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.animated_image == null && - attachment.story_attachment.media.image == null - ? null - : ( - attachment.story_attachment.media.animated_image || - attachment.story_attachment.media.image - ).height, - playable: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.is_playable, - duration: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.playable_duration_in_ms, - playableUrl: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.playable_url, - - subattachments: attachment.story_attachment.subattachments, - - // Format example: - // - // [{ - // key: "width", - // value: { text: "1280" } - // }] - // - // That we turn into: - // - // { - // width: "1280" - // } - // - properties: attachment.story_attachment.properties.reduce(function ( - obj, - cur - ) { - obj[cur.key] = cur.value.text; - return obj; - }, - {}), - - // Deprecated fields - animatedImageSize: "", // @Legacy - facebookUrl: "", // @Legacy - styleList: "", // @Legacy - target: "", // @Legacy - thumbnailUrl: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.animated_image == null && - attachment.story_attachment.media.image == null - ? null - : ( - attachment.story_attachment.media.animated_image || - attachment.story_attachment.media.image - ).uri, // @Legacy - thumbnailWidth: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.animated_image == null && - attachment.story_attachment.media.image == null - ? null - : ( - attachment.story_attachment.media.animated_image || - attachment.story_attachment.media.image - ).width, // @Legacy - thumbnailHeight: - attachment.story_attachment.media == null - ? null - : attachment.story_attachment.media.animated_image == null && - attachment.story_attachment.media.image == null - ? null - : ( - attachment.story_attachment.media.animated_image || - attachment.story_attachment.media.image - ).height // @Legacy - }; - } else { - return { error: "Don't know what to do with extensible_attachment." }; - } -} - -function formatReactionsGraphQL(reaction) { - return { - reaction: reaction.reaction, - userID: reaction.user.id - }; -} - -function formatEventData(event) { - if (event == null) { - return {}; - } - - switch (event.__typename) { - case "ThemeColorExtensibleMessageAdminText": - return { - color: event.theme_color - }; - case "ThreadNicknameExtensibleMessageAdminText": - return { - nickname: event.nickname, - participantID: event.participant_id - }; - case "ThreadIconExtensibleMessageAdminText": - return { - threadIcon: event.thread_icon - }; - case "InstantGameUpdateExtensibleMessageAdminText": - return { - gameID: (event.game == null ? null : event.game.id), - update_type: event.update_type, - collapsed_text: event.collapsed_text, - expanded_text: event.expanded_text, - instant_game_update_data: event.instant_game_update_data - }; - case "GameScoreExtensibleMessageAdminText": - return { - game_type: event.game_type - }; - case "RtcCallLogExtensibleMessageAdminText": - return { - event: event.event, - is_video_call: event.is_video_call, - server_info_data: event.server_info_data - }; - case "GroupPollExtensibleMessageAdminText": - return { - event_type: event.event_type, - total_count: event.total_count, - question: event.question - }; - case "AcceptPendingThreadExtensibleMessageAdminText": - return { - accepter_id: event.accepter_id, - requester_id: event.requester_id - }; - case "ConfirmFriendRequestExtensibleMessageAdminText": - return { - friend_request_recipient: event.friend_request_recipient, - friend_request_sender: event.friend_request_sender - }; - case "AddContactExtensibleMessageAdminText": - return { - contact_added_id: event.contact_added_id, - contact_adder_id: event.contact_adder_id - }; - case "AdExtensibleMessageAdminText": - return { - ad_client_token: event.ad_client_token, - ad_id: event.ad_id, - ad_preferences_link: event.ad_preferences_link, - ad_properties: event.ad_properties - }; - // never data - case "ParticipantJoinedGroupCallExtensibleMessageAdminText": - case "ThreadEphemeralTtlModeExtensibleMessageAdminText": - case "StartedSharingVideoExtensibleMessageAdminText": - case "LightweightEventCreateExtensibleMessageAdminText": - case "LightweightEventNotifyExtensibleMessageAdminText": - case "LightweightEventNotifyBeforeEventExtensibleMessageAdminText": - case "LightweightEventUpdateTitleExtensibleMessageAdminText": - case "LightweightEventUpdateTimeExtensibleMessageAdminText": - case "LightweightEventUpdateLocationExtensibleMessageAdminText": - case "LightweightEventDeleteExtensibleMessageAdminText": - return {}; - default: - return { - error: "Don't know what to with event data type " + event.__typename - }; - } -} - -function formatMessagesGraphQLResponse(data) { - const messageThread = data.o0.data.message_thread; - const threadID = messageThread.thread_key.thread_fbid - ? messageThread.thread_key.thread_fbid - : messageThread.thread_key.other_user_id; - - const messages = messageThread.messages.nodes.map(function (d) { - switch (d.__typename) { - case "UserMessage": - // Give priority to stickers. They're seen as normal messages but we've - // been considering them as attachments. - var maybeStickerAttachment; - if (d.sticker) { - maybeStickerAttachment = [ - { - type: "sticker", - ID: d.sticker.id, - url: d.sticker.url, - - packID: d.sticker.pack ? d.sticker.pack.id : null, - spriteUrl: d.sticker.sprite_image, - spriteUrl2x: d.sticker.sprite_image_2x, - width: d.sticker.width, - height: d.sticker.height, - - caption: d.snippet, // Not sure what the heck caption was. - description: d.sticker.label, // Not sure about this one either. - - frameCount: d.sticker.frame_count, - frameRate: d.sticker.frame_rate, - framesPerRow: d.sticker.frames_per_row, - framesPerCol: d.sticker.frames_per_col, - - stickerID: d.sticker.id, // @Legacy - spriteURI: d.sticker.sprite_image, // @Legacy - spriteURI2x: d.sticker.sprite_image_2x // @Legacy - } - ]; - } - - var mentionsObj = {}; - if (d.message !== null) { - d.message.ranges.forEach(e => { - mentionsObj[e.entity.id] = d.message.text.substr(e.offset, e.length); - }); - } - - return { - type: "message", - attachments: maybeStickerAttachment - ? maybeStickerAttachment - : d.blob_attachments && d.blob_attachments.length > 0 - ? d.blob_attachments.map(formatAttachmentsGraphQLResponse) - : d.extensible_attachment - ? [formatExtensibleAttachment(d.extensible_attachment)] - : [], - body: d.message !== null ? d.message.text : '', - isGroup: messageThread.thread_type === "GROUP", - messageID: d.message_id, - senderID: d.message_sender.id, - threadID: threadID, - timestamp: d.timestamp_precise, - - mentions: mentionsObj, - isUnread: d.unread, - - // New - messageReactions: d.message_reactions - ? d.message_reactions.map(formatReactionsGraphQL) - : null, - isSponsored: d.is_sponsored, - snippet: d.snippet - }; - case "ThreadNameMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - eventType: "change_thread_name", - snippet: d.snippet, - eventData: { - threadName: d.thread_name - }, - - // @Legacy - author: d.message_sender.id, - logMessageType: "log:thread-name", - logMessageData: { name: d.thread_name } - }; - case "ThreadImageMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - eventType: "change_thread_image", - snippet: d.snippet, - eventData: - d.image_with_metadata == null - ? {} /* removed image */ - : { - /* image added */ - threadImage: { - attachmentID: d.image_with_metadata.legacy_attachment_id, - width: d.image_with_metadata.original_dimensions.x, - height: d.image_with_metadata.original_dimensions.y, - url: d.image_with_metadata.preview.uri - } - }, - - // @Legacy - logMessageType: "log:thread-icon", - logMessageData: { - thread_icon: d.image_with_metadata - ? d.image_with_metadata.preview.uri - : null - } - }; - case "ParticipantLeftMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - eventType: "remove_participants", - snippet: d.snippet, - eventData: { - // Array of IDs. - participantsRemoved: d.participants_removed.map(function (p) { - return p.id; - }) - }, - - // @Legacy - logMessageType: "log:unsubscribe", - logMessageData: { - leftParticipantFbId: d.participants_removed.map(function (p) { - return p.id; - }) - } - }; - case "ParticipantsAddedMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - eventType: "add_participants", - snippet: d.snippet, - eventData: { - // Array of IDs. - participantsAdded: d.participants_added.map(function (p) { - return p.id; - }) - }, - - // @Legacy - logMessageType: "log:subscribe", - logMessageData: { - addedParticipants: d.participants_added.map(function (p) { - return p.id; - }) - } - }; - case "VideoCallMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - eventType: "video_call", - snippet: d.snippet, - - // @Legacy - logMessageType: "other" - }; - case "VoiceCallMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - eventType: "voice_call", - snippet: d.snippet, - - // @Legacy - logMessageType: "other" - }; - case "GenericAdminTextMessage": - return { - type: "event", - messageID: d.message_id, - threadID: threadID, - isGroup: messageThread.thread_type === "GROUP", - senderID: d.message_sender.id, - timestamp: d.timestamp_precise, - snippet: d.snippet, - eventType: d.extensible_message_admin_text_type.toLowerCase(), - eventData: formatEventData(d.extensible_message_admin_text), - - // @Legacy - logMessageType: utils.getAdminTextMessageType( - d.extensible_message_admin_text_type - ), - logMessageData: d.extensible_message_admin_text // Maybe different? - }; - default: - return { error: "Don't know about message type " + d.__typename }; - } - }); - return messages; -} - -module.exports = function (defaultFuncs, api, ctx) { - return function getThreadHistoryGraphQL( - threadID, - amount, - timestamp, - callback - ) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, data) { - if (err) { - return rejectFunc(err); - } - resolveFunc(data); - }; - } - - // `queries` has to be a string. I couldn't tell from the dev console. This - // took me a really long time to figure out. I deserve a cookie for this. - const form = { - "av": ctx.globalOptions.pageID, - queries: JSON.stringify({ - o0: { - // This doc_id was valid on February 2nd 2017. - doc_id: "1498317363570230", - query_params: { - id: threadID, - message_limit: amount, - load_messages: 1, - load_read_receipts: false, - before: timestamp - } - } - }) - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - // This returns us an array of things. The last one is the success / - // failure one. - // @TODO What do we do in this case? - if (resData[resData.length - 1].error_results !== 0) { - throw new Error("There was an error_result."); - } - - callback(null, formatMessagesGraphQLResponse(resData[0])); - }) - .catch(function (err) { - log.error("getThreadHistoryGraphQL", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getThreadInfo.js b/fb-chat-api/src/getThreadInfo.js deleted file mode 100644 index 504f2cceaf..0000000000 --- a/fb-chat-api/src/getThreadInfo.js +++ /dev/null @@ -1,232 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -function formatEventReminders(reminder) { - return { - reminderID: reminder.id, - eventCreatorID: reminder.lightweight_event_creator.id, - time: reminder.time, - eventType: reminder.lightweight_event_type.toLowerCase(), - locationName: reminder.location_name, - // @TODO verify this - locationCoordinates: reminder.location_coordinates, - locationPage: reminder.location_page, - eventStatus: reminder.lightweight_event_status.toLowerCase(), - note: reminder.note, - repeatMode: reminder.repeat_mode.toLowerCase(), - eventTitle: reminder.event_title, - triggerMessage: reminder.trigger_message, - secondsToNotifyBefore: reminder.seconds_to_notify_before, - allowsRsvp: reminder.allows_rsvp, - relatedEvent: reminder.related_event, - members: reminder.event_reminder_members.edges.map(function (member) { - return { - memberID: member.node.id, - state: member.guest_list_state.toLowerCase() - }; - }) - }; -} - -function formatThreadGraphQLResponse(data) { - if (data.errors) - return data.errors; - const messageThread = data.message_thread; - if (!messageThread) - return null; - const threadID = messageThread.thread_key.thread_fbid - ? messageThread.thread_key.thread_fbid - : messageThread.thread_key.other_user_id; - - // Remove me - const lastM = messageThread.last_message; - const snippetID = - lastM && - lastM.nodes && - lastM.nodes[0] && - lastM.nodes[0].message_sender && - lastM.nodes[0].message_sender.messaging_actor - ? lastM.nodes[0].message_sender.messaging_actor.id - : null; - const snippetText = - lastM && lastM.nodes && lastM.nodes[0] ? lastM.nodes[0].snippet : null; - const lastR = messageThread.last_read_receipt; - const lastReadTimestamp = - lastR && lastR.nodes && lastR.nodes[0] && lastR.nodes[0].timestamp_precise - ? lastR.nodes[0].timestamp_precise - : null; - - return { - threadID: threadID, - threadName: messageThread.name, - participantIDs: messageThread.all_participants.edges.map(d => d.node.messaging_actor.id), - userInfo: messageThread.all_participants.edges.map(d => ({ - id: d.node.messaging_actor.id, - name: d.node.messaging_actor.name, - firstName: d.node.messaging_actor.short_name, - vanity: d.node.messaging_actor.username, - url: d.node.messaging_actor.url, - thumbSrc: d.node.messaging_actor.big_image_src.uri, - profileUrl: d.node.messaging_actor.big_image_src.uri, - gender: d.node.messaging_actor.gender, - type: d.node.messaging_actor.__typename, - isFriend: d.node.messaging_actor.is_viewer_friend, - isBirthday: !!d.node.messaging_actor.is_birthday //not sure? - })), - unreadCount: messageThread.unread_count, - messageCount: messageThread.messages_count, - timestamp: messageThread.updated_time_precise, - muteUntil: messageThread.mute_until, - isGroup: messageThread.thread_type == "GROUP", - isSubscribed: messageThread.is_viewer_subscribed, - isArchived: messageThread.has_viewer_archived, - folder: messageThread.folder, - cannotReplyReason: messageThread.cannot_reply_reason, - eventReminders: messageThread.event_reminders - ? messageThread.event_reminders.nodes.map(formatEventReminders) - : null, - emoji: messageThread.customization_info - ? messageThread.customization_info.emoji - : null, - color: - messageThread.customization_info && - messageThread.customization_info.outgoing_bubble_color - ? messageThread.customization_info.outgoing_bubble_color.slice(2) - : null, - threadTheme: messageThread.thread_theme, - nicknames: - messageThread.customization_info && - messageThread.customization_info.participant_customizations - ? messageThread.customization_info.participant_customizations.reduce( - function (res, val) { - if (val.nickname) res[val.participant_id] = val.nickname; - return res; - }, - {} - ) - : {}, - adminIDs: messageThread.thread_admins, - approvalMode: Boolean(messageThread.approval_mode), - approvalQueue: messageThread.group_approval_queue.nodes.map(a => ({ - inviterID: a.inviter.id, - requesterID: a.requester.id, - timestamp: a.request_timestamp, - request_source: a.request_source // @Undocumented - })), - - // @Undocumented - reactionsMuteMode: messageThread.reactions_mute_mode.toLowerCase(), - mentionsMuteMode: messageThread.mentions_mute_mode.toLowerCase(), - isPinProtected: messageThread.is_pin_protected, - relatedPageThread: messageThread.related_page_thread, - - // @Legacy - name: messageThread.name, - snippet: snippetText, - snippetSender: snippetID, - snippetAttachments: [], - serverTimestamp: messageThread.updated_time_precise, - imageSrc: messageThread.image ? messageThread.image.uri : null, - isCanonicalUser: messageThread.is_canonical_neo_user, - isCanonical: messageThread.thread_type != "GROUP", - recipientsLoadable: true, - hasEmailParticipant: false, - readOnly: false, - canReply: messageThread.cannot_reply_reason == null, - lastMessageTimestamp: messageThread.last_message - ? messageThread.last_message.timestamp_precise - : null, - lastMessageType: "message", - lastReadTimestamp: lastReadTimestamp, - threadType: messageThread.thread_type == "GROUP" ? 2 : 1, - - // update in Wed, 13 Jul 2022 19:41:12 +0700 - inviteLink: { - enable: messageThread.joinable_mode ? messageThread.joinable_mode.mode == 1 : false, - link: messageThread.joinable_mode ? messageThread.joinable_mode.link : null - } - }; -} - -module.exports = function (defaultFuncs, api, ctx) { - return function getThreadInfoGraphQL(threadID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (utils.getType(callback) != "Function" && utils.getType(callback) != "AsyncFunction") { - callback = function (err, data) { - if (err) { - return rejectFunc(err); - } - resolveFunc(data); - }; - } - - if (utils.getType(threadID) !== "Array") { - threadID = [threadID]; - } - - let form = {}; - // `queries` has to be a string. I couldn't tell from the dev console. This - // took me a really long time to figure out. I deserve a cookie for this. - threadID.map(function (t, i) { - form["o" + i] = { - doc_id: "3449967031715030", - query_params: { - id: t, - message_limit: 0, - load_messages: false, - load_read_receipts: false, - before: null - } - }; - }); - - form = { - queries: JSON.stringify(form), - batch_name: "MessengerGraphQLThreadFetcher" - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - - if (resData.error) { - throw resData; - } - // This returns us an array of things. The last one is the success / - // failure one. - // @TODO What do we do in this case? - // if (resData[resData.length - 1].error_results !== 0) { - // throw resData[0].o0.errors[0]; - // } - // if (!resData[0].o0.data.message_thread) { - // throw new Error("can't find this thread"); - // } - const threadInfos = {}; - for (let i = resData.length - 2; i >= 0; i--) { - const threadInfo = formatThreadGraphQLResponse(resData[i][Object.keys(resData[i])[0]].data); - threadInfos[threadInfo?.threadID || threadID[threadID.length - 1 - i]] = threadInfo; - } - if (Object.values(threadInfos).length == 1) { - callback(null, Object.values(threadInfos)[0]); - } - else { - callback(null, threadInfos); - } - }) - .catch(function (err) { - log.error("getThreadInfoGraphQL", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getThreadList.js b/fb-chat-api/src/getThreadList.js deleted file mode 100644 index 0855ec0137..0000000000 --- a/fb-chat-api/src/getThreadList.js +++ /dev/null @@ -1,241 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -function formatEventReminders(reminder) { - return { - reminderID: reminder.id, - eventCreatorID: reminder.lightweight_event_creator.id, - time: reminder.time, - eventType: reminder.lightweight_event_type.toLowerCase(), - locationName: reminder.location_name, - // @TODO verify this - locationCoordinates: reminder.location_coordinates, - locationPage: reminder.location_page, - eventStatus: reminder.lightweight_event_status.toLowerCase(), - note: reminder.note, - repeatMode: reminder.repeat_mode.toLowerCase(), - eventTitle: reminder.event_title, - triggerMessage: reminder.trigger_message, - secondsToNotifyBefore: reminder.seconds_to_notify_before, - allowsRsvp: reminder.allows_rsvp, - relatedEvent: reminder.related_event, - members: reminder.event_reminder_members.edges.map(function (member) { - return { - memberID: member.node.id, - state: member.guest_list_state.toLowerCase() - }; - }) - }; -} - -function formatThreadGraphQLResponse(messageThread) { - const threadID = messageThread.thread_key.thread_fbid - ? messageThread.thread_key.thread_fbid - : messageThread.thread_key.other_user_id; - - // Remove me - const lastM = messageThread.last_message; - const snippetID = - lastM && - lastM.nodes && - lastM.nodes[0] && - lastM.nodes[0].message_sender && - lastM.nodes[0].message_sender.messaging_actor - ? lastM.nodes[0].message_sender.messaging_actor.id - : null; - const snippetText = - lastM && lastM.nodes && lastM.nodes[0] ? lastM.nodes[0].snippet : null; - const lastR = messageThread.last_read_receipt; - const lastReadTimestamp = - lastR && lastR.nodes && lastR.nodes[0] && lastR.nodes[0].timestamp_precise - ? lastR.nodes[0].timestamp_precise - : null; - - return { - threadID: threadID, - threadName: messageThread.name, - participantIDs: messageThread.all_participants.edges.map(d => d.node.messaging_actor.id), - userInfo: messageThread.all_participants.edges.map(d => ({ - id: d.node.messaging_actor.id, - name: d.node.messaging_actor.name, - firstName: d.node.messaging_actor.short_name, - vanity: d.node.messaging_actor.username, - url: d.node.messaging_actor.url, - thumbSrc: d.node.messaging_actor.big_image_src.uri, - profileUrl: d.node.messaging_actor.big_image_src.uri, - gender: d.node.messaging_actor.gender, - type: d.node.messaging_actor.__typename, - isFriend: d.node.messaging_actor.is_viewer_friend, - isBirthday: !!d.node.messaging_actor.is_birthday //not sure? - })), - unreadCount: messageThread.unread_count, - messageCount: messageThread.messages_count, - timestamp: messageThread.updated_time_precise, - muteUntil: messageThread.mute_until, - isGroup: messageThread.thread_type == "GROUP", - isSubscribed: messageThread.is_viewer_subscribed, - isArchived: messageThread.has_viewer_archived, - folder: messageThread.folder, - cannotReplyReason: messageThread.cannot_reply_reason, - eventReminders: messageThread.event_reminders - ? messageThread.event_reminders.nodes.map(formatEventReminders) - : null, - emoji: messageThread.customization_info - ? messageThread.customization_info.emoji - : null, - color: - messageThread.customization_info && - messageThread.customization_info.outgoing_bubble_color - ? messageThread.customization_info.outgoing_bubble_color.slice(2) - : null, - threadTheme: messageThread.thread_theme, - nicknames: - messageThread.customization_info && - messageThread.customization_info.participant_customizations - ? messageThread.customization_info.participant_customizations.reduce( - function (res, val) { - if (val.nickname) res[val.participant_id] = val.nickname; - return res; - }, - {} - ) - : {}, - adminIDs: messageThread.thread_admins, - approvalMode: Boolean(messageThread.approval_mode), - approvalQueue: messageThread.group_approval_queue.nodes.map(a => ({ - inviterID: a.inviter.id, - requesterID: a.requester.id, - timestamp: a.request_timestamp, - request_source: a.request_source // @Undocumented - })), - - // @Undocumented - reactionsMuteMode: messageThread.reactions_mute_mode.toLowerCase(), - mentionsMuteMode: messageThread.mentions_mute_mode.toLowerCase(), - isPinProtected: messageThread.is_pin_protected, - relatedPageThread: messageThread.related_page_thread, - - // @Legacy - name: messageThread.name, - snippet: snippetText, - snippetSender: snippetID, - snippetAttachments: [], - serverTimestamp: messageThread.updated_time_precise, - imageSrc: messageThread.image ? messageThread.image.uri : null, - isCanonicalUser: messageThread.is_canonical_neo_user, - isCanonical: messageThread.thread_type != "GROUP", - recipientsLoadable: true, - hasEmailParticipant: false, - readOnly: false, - canReply: messageThread.cannot_reply_reason == null, - lastMessageTimestamp: messageThread.last_message - ? messageThread.last_message.timestamp_precise - : null, - lastMessageType: "message", - lastReadTimestamp: lastReadTimestamp, - threadType: messageThread.thread_type == "GROUP" ? 2 : 1, - - // update in Wed, 13 Jul 2022 19:41:12 +0700 - inviteLink: { - enable: messageThread.joinable_mode ? messageThread.joinable_mode.mode == 1 : false, - link: messageThread.joinable_mode ? messageThread.joinable_mode.link : null - } - }; -} - -function formatThreadList(data) { - // console.log(JSON.stringify(data.find(t => t.thread_key.thread_fbid === "5095817367161431"), null, 2)); - return data.map(t => formatThreadGraphQLResponse(t)); -} - -module.exports = function (defaultFuncs, api, ctx) { - return function getThreadList(limit, timestamp, tags, callback) { - if (!callback && (utils.getType(tags) === "Function" || utils.getType(tags) === "AsyncFunction")) { - callback = tags; - tags = [""]; - } - if (utils.getType(limit) !== "Number" || !Number.isInteger(limit) || limit <= 0) { - throw new utils.CustomError({ error: "getThreadList: limit must be a positive integer" }); - } - if (utils.getType(timestamp) !== "Null" && - (utils.getType(timestamp) !== "Number" || !Number.isInteger(timestamp))) { - throw new utils.CustomError({ error: "getThreadList: timestamp must be an integer or null" }); - } - if (utils.getType(tags) === "String") { - tags = [tags]; - } - if (utils.getType(tags) !== "Array") { - throw new utils.CustomError({ - error: "getThreadList: tags must be an array", - message: "getThreadList: tags must be an array" - }); - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") { - callback = function (err, data) { - if (err) { - return rejectFunc(err); - } - resolveFunc(data); - }; - } - - const form = { - "av": ctx.i_userID || ctx.userID, - "queries": JSON.stringify({ - "o0": { - // This doc_id was valid on 2020-07-20 - // "doc_id": "3336396659757871", - "doc_id": "3426149104143726", - "query_params": { - "limit": limit + (timestamp ? 1 : 0), - "before": timestamp, - "tags": tags, - "includeDeliveryReceipts": true, - "includeSeqID": false - } - } - }), - "batch_name": "MessengerGraphQLThreadlistFetcher" - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then((resData) => { - if (resData[resData.length - 1].error_results > 0) { - throw new utils.CustomError(resData[0].o0.errors); - } - - if (resData[resData.length - 1].successful_results === 0) { - throw new utils.CustomError({ error: "getThreadList: there was no successful_results", res: resData }); - } - - // When we ask for threads using timestamp from the previous request, - // we are getting the last thread repeated as the first thread in this response. - // .shift() gets rid of it - // It is also the reason for increasing limit by 1 when timestamp is set - // this way user asks for 10 threads, we are asking for 11, - // but after removing the duplicated one, it is again 10 - if (timestamp) { - resData[0].o0.data.viewer.message_threads.nodes.shift(); - } - callback(null, formatThreadList(resData[0].o0.data.viewer.message_threads.nodes)); - }) - .catch((err) => { - log.error("getThreadList", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getThreadPictures.js b/fb-chat-api/src/getThreadPictures.js deleted file mode 100644 index 6742eb6946..0000000000 --- a/fb-chat-api/src/getThreadPictures.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function getThreadPictures(threadID, offset, limit, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - let form = { - thread_id: threadID, - offset: offset, - limit: limit - }; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/messaging/attachments/sharedphotos.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - return Promise.all( - resData.payload.imagesData.map(function (image) { - form = { - thread_id: threadID, - image_id: image.fbid - }; - return defaultFuncs - .post( - "https://www.facebook.com/ajax/messaging/attachments/sharedphotos.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - // the response is pretty messy - const queryThreadID = - resData.jsmods.require[0][3][1].query_metadata.query_path[0] - .message_thread; - const imageData = - resData.jsmods.require[0][3][1].query_results[queryThreadID] - .message_images.edges[0].node.image2; - return imageData; - }); - }) - ); - }) - .then(function (resData) { - callback(null, resData); - }) - .catch(function (err) { - log.error("Error in getThreadPictures", err); - callback(err); - }); - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getUserID.js b/fb-chat-api/src/getUserID.js deleted file mode 100644 index 786d75f119..0000000000 --- a/fb-chat-api/src/getUserID.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -function formatData(data) { - return { - userID: utils.formatID(data.uid.toString()), - photoUrl: data.photo, - indexRank: data.index_rank, - name: data.text, - isVerified: data.is_verified, - profileUrl: data.path, - category: data.category, - score: data.score, - type: data.type - }; -} - -module.exports = function (defaultFuncs, api, ctx) { - return function getUserID(name, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - value: name.toLowerCase(), - viewer: ctx.i_userID || ctx.userID, - rsp: "search", - context: "search", - path: "/home.php", - request_id: utils.getGUID() - }; - - defaultFuncs - .get("https://www.facebook.com/ajax/typeahead/search.php", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - const data = resData.payload.entries; - - callback(null, data.map(formatData)); - }) - .catch(function (err) { - log.error("getUserID", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/getUserInfo.js b/fb-chat-api/src/getUserInfo.js deleted file mode 100644 index c37c30c628..0000000000 --- a/fb-chat-api/src/getUserInfo.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -function formatData(data) { - const retObj = {}; - - for (const prop in data) { - // eslint-disable-next-line no-prototype-builtins - if (data.hasOwnProperty(prop)) { - const innerObj = data[prop]; - retObj[prop] = { - name: innerObj.name, - firstName: innerObj.firstName, - vanity: innerObj.vanity, - thumbSrc: innerObj.thumbSrc, - profileUrl: innerObj.uri, - gender: innerObj.gender, - type: innerObj.type, - isFriend: innerObj.is_friend, - isBirthday: !!innerObj.is_birthday, - searchTokens: innerObj.searchTokens, - alternateName: innerObj.alternateName - }; - } - } - - return retObj; -} - -module.exports = function (defaultFuncs, api, ctx) { - return function getUserInfo(id, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - if (utils.getType(id) !== "Array") { - id = [id]; - } - - const form = {}; - id.map(function (v, i) { - form["ids[" + i + "]"] = v; - }); - defaultFuncs - .post("https://www.facebook.com/chat/user_info/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - return callback(null, formatData(resData.payload.profiles)); - }) - .catch(function (err) { - log.error("getUserInfo", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/handleFriendRequest.js b/fb-chat-api/src/handleFriendRequest.js deleted file mode 100644 index 80c892bc67..0000000000 --- a/fb-chat-api/src/handleFriendRequest.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function handleFriendRequest(userID, accept, callback) { - if (utils.getType(accept) !== "Boolean") { - throw { - error: "Please pass a boolean as a second argument." - }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - fb_api_caller_class: "RelayModern", - fb_api_req_friendly_name: "FriendingCometFriendRequestConfirmMutation", - doc_id: "7303313029748461", - variables: JSON.stringify({ - input: { - friend_requester_id: String(userID), - source: "friends_tab", - actor_id: ctx.i_userID || ctx.userID, - client_mutation_id: Math.round(Math.random() * 1024).toString() - }, - scale: 1, - refresh_num: 0 - }), - av: ctx.i_userID || ctx.userID - }; - - defaultFuncs - .post( - "https://www.facebook.com/api/graphql/", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error || resData.errors) { - throw { - err: resData.payload.err - }; - } - - return callback(null, resData); - }) - .catch(function (err) { - log.error("handleFriendRequest", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/handleMessageRequest.js b/fb-chat-api/src/handleMessageRequest.js deleted file mode 100644 index 43b20168b7..0000000000 --- a/fb-chat-api/src/handleMessageRequest.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function handleMessageRequest(threadID, accept, callback) { - if (utils.getType(accept) !== "Boolean") { - throw { - error: "Please pass a boolean as a second argument." - }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - client: "mercury" - }; - - if (utils.getType(threadID) !== "Array") { - threadID = [threadID]; - } - - const messageBox = accept ? "inbox" : "other"; - - for (let i = 0; i < threadID.length; i++) { - form[messageBox + "[" + i + "]"] = threadID[i]; - } - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/move_thread.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("handleMessageRequest", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/httpGet.js b/fb-chat-api/src/httpGet.js deleted file mode 100644 index 654a6046ff..0000000000 --- a/fb-chat-api/src/httpGet.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function httpGet(url, form, customHeader, callback, notAPI) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (utils.getType(form) == "Function" || utils.getType(form) == "AsyncFunction") { - callback = form; - form = {}; - } - - if (utils.getType(customHeader) == "Function" || utils.getType(customHeader) == "AsyncFunction") { - callback = customHeader; - customHeader = {}; - } - - customHeader = customHeader || {}; - - callback = callback || function (err, data) { - if (err) return rejectFunc(err); - resolveFunc(data); - }; - - if (notAPI) { - utils - .get(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader) - .then(function (resData) { - callback(null, resData.body.toString()); - }) - .catch(function (err) { - log.error("httpGet", err); - return callback(err); - }); - } else { - defaultFuncs - .get(url, ctx.jar, form, null, customHeader) - .then(function (resData) { - callback(null, resData.body.toString()); - }) - .catch(function (err) { - log.error("httpGet", err); - return callback(err); - }); - } - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/httpPost.js b/fb-chat-api/src/httpPost.js deleted file mode 100644 index d9185c44e0..0000000000 --- a/fb-chat-api/src/httpPost.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function httpPost(url, form, customHeader, callback, notAPI) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (utils.getType(form) == "Function" || utils.getType(form) == "AsyncFunction") { - callback = form; - form = {}; - } - - if (utils.getType(customHeader) == "Function" || utils.getType(customHeader) == "AsyncFunction") { - callback = customHeader; - customHeader = {}; - } - - customHeader = customHeader || {}; - - callback = callback || function (err, data) { - if (err) return rejectFunc(err); - resolveFunc(data); - }; - - if (notAPI) { - utils - .post(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader) - .then(function (resData) { - callback(null, resData.body.toString()); - }) - .catch(function (err) { - log.error("httpPost", err); - return callback(err); - }); - } else { - defaultFuncs - .post(url, ctx.jar, form, {}, customHeader) - .then(function (resData) { - callback(null, resData.body.toString()); - }) - .catch(function (err) { - log.error("httpPost", err); - return callback(err); - }); - } - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/httpPostFormData.js b/fb-chat-api/src/httpPostFormData.js deleted file mode 100644 index f5be5e2910..0000000000 --- a/fb-chat-api/src/httpPostFormData.js +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - - -module.exports = function (defaultFuncs, api, ctx) { - return function httpPostFormData(url, form, customHeader, callback, notAPI) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (utils.getType(form) == "Function" || utils.getType(form) == "AsyncFunction") { - callback = form; - form = {}; - } - - if (utils.getType(customHeader) == "Function" || utils.getType(customHeader) == "AsyncFunction") { - callback = customHeader; - customHeader = {}; - } - - customHeader = customHeader || {}; - - if (utils.getType(callback) == "Boolean") { - notAPI = callback; - callback = null; - } - - callback = callback || function (err, data) { - if (err) return rejectFunc(err); - resolveFunc(data); - }; - - if (notAPI) { - utils - .postFormData(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader) - .then(function (resData) { - callback(null, resData.body.toString()); - }) - .catch(function (err) { - log.error("httpPostFormData", err); - return callback(err); - }); - } else { - defaultFuncs - .postFormData(url, ctx.jar, form, null, customHeader) - .then(function (resData) { - callback(null, resData.body.toString()); - }) - .catch(function (err) { - log.error("httpPostFormData", err); - return callback(err); - }); - } - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/listenMqtt.js b/fb-chat-api/src/listenMqtt.js deleted file mode 100644 index 3d1543e0d1..0000000000 --- a/fb-chat-api/src/listenMqtt.js +++ /dev/null @@ -1,895 +0,0 @@ -/* eslint-disable no-redeclare */ -"use strict"; -const utils = require("../utils"); -const log = require("npmlog"); -const mqtt = require('mqtt'); -const websocket = require('websocket-stream'); -const HttpsProxyAgent = require('https-proxy-agent'); -const EventEmitter = require('events'); - -const identity = function () { }; -let form = {}; -let getSeqId = function () { }; - -const topics = [ - "/legacy_web", - "/webrtc", - "/rtc_multi", - "/onevc", - "/br_sr", //Notification - //Need to publish /br_sr right after this - "/sr_res", - "/t_ms", - "/thread_typing", - "/orca_typing_notifications", - "/notify_disconnect", - //Need to publish /messenger_sync_create_queue right after this - "/orca_presence", - //Will receive /sr_res right here. - - "/legacy_web_mtouch" - // "/inbox", - // "/mercury", - // "/messaging_events", - // "/orca_message_notifications", - // "/pp", - // "/webrtc_response", -]; - -function listenMqtt(defaultFuncs, api, ctx, globalCallback) { - //Don't really know what this does but I think it's for the active state? - //TODO: Move to ctx when implemented - const chatOn = ctx.globalOptions.online; - const foreground = false; - - const sessionID = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1; - const GUID = utils.getGUID(); - const username = { - u: ctx.i_userID || ctx.userID, - s: sessionID, - chat_on: chatOn, - fg: foreground, - d: GUID, - ct: "websocket", - //App id from facebook - aid: "219994525426954", - mqtt_sid: "", - cp: 3, - ecp: 10, - st: [], - pm: [], - dc: "", - no_auto_fg: true, - gas: null, - pack: [], - a: ctx.globalOptions.userAgent, - aids: null - }; - - const cookies = ctx.jar.getCookies('https://www.facebook.com').join('; '); - - let host; - if (ctx.mqttEndpoint) { - host = `${ctx.mqttEndpoint}&sid=${sessionID}&cid=${GUID}`; - } else if (ctx.region) { - host = `wss://edge-chat.facebook.com/chat?region=${ctx.region.toLowerCase()}&sid=${sessionID}&cid=${GUID}`; - } else { - host = `wss://edge-chat.facebook.com/chat?sid=${sessionID}&cid=${GUID}`; - } - - const options = { - clientId: 'mqttwsclient', - protocolId: 'MQIsdp', - protocolVersion: 3, - username: JSON.stringify(username), - clean: true, - wsOptions: { - headers: { - Cookie: cookies, - Origin: 'https://www.facebook.com', - 'User-Agent': ctx.globalOptions.userAgent || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36', - Referer: 'https://www.facebook.com/', - Host: new URL(host).hostname - }, - origin: 'https://www.facebook.com', - protocolVersion: 13, - binaryType: 'arraybuffer' - }, - keepalive: 60, - reschedulePings: true, - reconnectPeriod: 3 - }; - - if (typeof ctx.globalOptions.proxy != "undefined") { - const agent = new HttpsProxyAgent(ctx.globalOptions.proxy); - options.wsOptions.agent = agent; - } - - ctx.mqttClient = new mqtt.Client(_ => websocket(host, options.wsOptions), options); - - const mqttClient = ctx.mqttClient; - - mqttClient.on('error', function (err) { - log.error("listenMqtt", err); - mqttClient.end(); - if (ctx.globalOptions.autoReconnect) { - listenMqtt(defaultFuncs, api, ctx, globalCallback); - } else { - utils.checkLiveCookie(ctx, defaultFuncs) - .then(res => { - globalCallback({ - type: "stop_listen", - error: "Connection refused: Server unavailable" - }, null); - }) - .catch(err => { - globalCallback({ - type: "account_inactive", - error: "Maybe your account is blocked by facebook, please login and check at https://facebook.com" - }, null); - }); - } - }); - - mqttClient.on('close', function () { - - }); - - mqttClient.on('connect', function () { - topics.forEach(function (topicsub) { - mqttClient.subscribe(topicsub); - }); - - let topic; - const queue = { - sync_api_version: 10, - max_deltas_able_to_process: 1000, - delta_batch_size: 500, - encoding: "JSON", - entity_fbid: ctx.i_userID || ctx.userID - }; - - if (ctx.syncToken) { - topic = "/messenger_sync_get_diffs"; - queue.last_seq_id = ctx.lastSeqId; - queue.sync_token = ctx.syncToken; - } else { - topic = "/messenger_sync_create_queue"; - queue.initial_titan_sequence_id = ctx.lastSeqId; - queue.device_params = null; - } - - mqttClient.publish(topic, JSON.stringify(queue), { qos: 1, retain: false }); - // set status online - // fix by NTKhang - mqttClient.publish("/foreground_state", JSON.stringify({ foreground: chatOn }), { qos: 1 }); - mqttClient.publish("/set_client_settings", JSON.stringify({ make_user_available_when_in_foreground: true }), { qos: 1 }); - - const rTimeout = setTimeout(function () { - mqttClient.end(); - listenMqtt(defaultFuncs, api, ctx, globalCallback); - }, 5000); - - ctx.tmsWait = function () { - clearTimeout(rTimeout); - ctx.globalOptions.emitReady ? globalCallback({ - type: "ready", - error: null - }) : ""; - delete ctx.tmsWait; - }; - - }); - - mqttClient.on('message', function (topic, message, _packet) { - let jsonMessage = Buffer.isBuffer(message) ? Buffer.from(message).toString() : message; - try { - jsonMessage = JSON.parse(jsonMessage); - } - catch (e) { - jsonMessage = {}; - } - - if (jsonMessage.type === "jewel_requests_add") { - globalCallback(null, { - type: "friend_request_received", - actorFbId: jsonMessage.from.toString(), - timestamp: Date.now().toString() - }); - } - else if (jsonMessage.type === "jewel_requests_remove_old") { - globalCallback(null, { - type: "friend_request_cancel", - actorFbId: jsonMessage.from.toString(), - timestamp: Date.now().toString() - }); - } - else if (topic === "/t_ms") { - if (ctx.tmsWait && typeof ctx.tmsWait == "function") { - ctx.tmsWait(); - } - - if (jsonMessage.firstDeltaSeqId && jsonMessage.syncToken) { - ctx.lastSeqId = jsonMessage.firstDeltaSeqId; - ctx.syncToken = jsonMessage.syncToken; - } - - if (jsonMessage.lastIssuedSeqId) { - ctx.lastSeqId = parseInt(jsonMessage.lastIssuedSeqId); - } - - //If it contains more than 1 delta - for (const i in jsonMessage.deltas) { - const delta = jsonMessage.deltas[i]; - parseDelta(defaultFuncs, api, ctx, globalCallback, { "delta": delta }); - } - } else if (topic === "/thread_typing" || topic === "/orca_typing_notifications") { - const typ = { - type: "typ", - isTyping: !!jsonMessage.state, - from: jsonMessage.sender_fbid.toString(), - threadID: utils.formatID((jsonMessage.thread || jsonMessage.sender_fbid).toString()) - }; - (function () { globalCallback(null, typ); })(); - } else if (topic === "/orca_presence") { - if (!ctx.globalOptions.updatePresence) { - for (const i in jsonMessage.list) { - const data = jsonMessage.list[i]; - const userID = data["u"]; - - const presence = { - type: "presence", - userID: userID.toString(), - //Convert to ms - timestamp: data["l"] * 1000, - statuses: data["p"] - }; - (function () { globalCallback(null, presence); })(); - } - } - } - - }); - -} - -function parseDelta(defaultFuncs, api, ctx, globalCallback, v) { - if (v.delta.class == "NewMessage") { - //Not tested for pages - if (ctx.globalOptions.pageID && - ctx.globalOptions.pageID != v.queue - ) - return; - - (function resolveAttachmentUrl(i) { - if (i == (v.delta.attachments || []).length) { - let fmtMsg; - try { - fmtMsg = utils.formatDeltaMessage(v); - } catch (err) { - return globalCallback({ - error: "Problem parsing message object. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.", - detail: err, - res: v, - type: "parse_error" - }); - } - if (fmtMsg) { - if (ctx.globalOptions.autoMarkDelivery) { - markDelivery(ctx, api, fmtMsg.threadID, fmtMsg.messageID); - } - } - return !ctx.globalOptions.selfListen && - (fmtMsg.senderID === ctx.i_userID || fmtMsg.senderID === ctx.userID) ? - undefined : - (function () { globalCallback(null, fmtMsg); })(); - } else { - if (v.delta.attachments[i].mercury.attach_type == "photo") { - api.resolvePhotoUrl( - v.delta.attachments[i].fbid, - (err, url) => { - if (!err) - v.delta.attachments[ - i - ].mercury.metadata.url = url; - return resolveAttachmentUrl(i + 1); - } - ); - } else { - return resolveAttachmentUrl(i + 1); - } - } - })(0); - } - - if (v.delta.class == "ClientPayload") { - const clientPayload = utils.decodeClientPayload( - v.delta.payload - ); - - if (clientPayload && clientPayload.deltas) { - for (const i in clientPayload.deltas) { - const delta = clientPayload.deltas[i]; - if (delta.deltaMessageReaction && !!ctx.globalOptions.listenEvents) { - (function () { - globalCallback(null, { - type: "message_reaction", - threadID: (delta.deltaMessageReaction.threadKey - .threadFbId ? - delta.deltaMessageReaction.threadKey.threadFbId : delta.deltaMessageReaction.threadKey - .otherUserFbId).toString(), - messageID: delta.deltaMessageReaction.messageId, - reaction: delta.deltaMessageReaction.reaction, - senderID: delta.deltaMessageReaction.senderId == 0 ? delta.deltaMessageReaction.userId.toString() : delta.deltaMessageReaction.senderId.toString(), - userID: (delta.deltaMessageReaction.userId || delta.deltaMessageReaction.senderId).toString() - }); - })(); - } else if (delta.deltaRecallMessageData && !!ctx.globalOptions.listenEvents) { - (function () { - globalCallback(null, { - type: "message_unsend", - threadID: (delta.deltaRecallMessageData.threadKey.threadFbId ? - delta.deltaRecallMessageData.threadKey.threadFbId : delta.deltaRecallMessageData.threadKey - .otherUserFbId).toString(), - messageID: delta.deltaRecallMessageData.messageID, - senderID: delta.deltaRecallMessageData.senderID.toString(), - deletionTimestamp: delta.deltaRecallMessageData.deletionTimestamp, - timestamp: delta.deltaRecallMessageData.timestamp - }); - })(); - } else if (delta.deltaRemoveMessage && !!ctx.globalOptions.listenEvents) { - (function () { - globalCallback(null, { - type: "message_self_delete", - threadID: (delta.deltaRemoveMessage.threadKey.threadFbId ? - delta.deltaRemoveMessage.threadKey.threadFbId : delta.deltaRemoveMessage.threadKey - .otherUserFbId).toString(), - messageID: delta.deltaRemoveMessage.messageIds.length == 1 ? delta.deltaRemoveMessage.messageIds[0] : delta.deltaRemoveMessage.messageIds, - senderID: api.getCurrentUserID(), - deletionTimestamp: delta.deltaRemoveMessage.deletionTimestamp, - timestamp: delta.deltaRemoveMessage.timestamp - }); - })(); - } - else if (delta.deltaMessageReply) { - //Mention block - #1 - let mdata = - delta.deltaMessageReply.message === undefined ? [] : - delta.deltaMessageReply.message.data === undefined ? [] : - delta.deltaMessageReply.message.data.prng === undefined ? [] : - JSON.parse(delta.deltaMessageReply.message.data.prng); - let m_id = mdata.map(u => u.i); - let m_offset = mdata.map(u => u.o); - let m_length = mdata.map(u => u.l); - - const mentions = {}; - - for (let i = 0; i < m_id.length; i++) { - mentions[m_id[i]] = (delta.deltaMessageReply.message.body || "").substring( - m_offset[i], - m_offset[i] + m_length[i] - ); - } - //Mention block - 1# - const callbackToReturn = { - type: "message_reply", - threadID: (delta.deltaMessageReply.message.messageMetadata.threadKey.threadFbId ? - delta.deltaMessageReply.message.messageMetadata.threadKey.threadFbId : delta.deltaMessageReply.message.messageMetadata.threadKey - .otherUserFbId).toString(), - messageID: delta.deltaMessageReply.message.messageMetadata.messageId, - senderID: delta.deltaMessageReply.message.messageMetadata.actorFbId.toString(), - attachments: (delta.deltaMessageReply.message.attachments || []).map(function (att) { - const mercury = JSON.parse(att.mercuryJSON); - Object.assign(att, mercury); - return att; - }).map(att => { - let x; - try { - x = utils._formatAttachment(att); - } catch (ex) { - x = att; - x.error = ex; - x.type = "unknown"; - } - return x; - }), - body: delta.deltaMessageReply.message.body || "", - isGroup: !!delta.deltaMessageReply.message.messageMetadata.threadKey.threadFbId, - mentions: mentions, - timestamp: delta.deltaMessageReply.message.messageMetadata.timestamp, - participantIDs: (delta.deltaMessageReply.message.messageMetadata.cid.canonicalParticipantFbids || delta.deltaMessageReply.message.participants || []).map(e => e.toString()) - }; - - if (delta.deltaMessageReply.repliedToMessage) { - //Mention block - #2 - mdata = - delta.deltaMessageReply.repliedToMessage === undefined ? [] : - delta.deltaMessageReply.repliedToMessage.data === undefined ? [] : - delta.deltaMessageReply.repliedToMessage.data.prng === undefined ? [] : - JSON.parse(delta.deltaMessageReply.repliedToMessage.data.prng); - m_id = mdata.map(u => u.i); - m_offset = mdata.map(u => u.o); - m_length = mdata.map(u => u.l); - - const rmentions = {}; - - for (let i = 0; i < m_id.length; i++) { - rmentions[m_id[i]] = (delta.deltaMessageReply.repliedToMessage.body || "").substring( - m_offset[i], - m_offset[i] + m_length[i] - ); - } - //Mention block - 2# - callbackToReturn.messageReply = { - threadID: (delta.deltaMessageReply.repliedToMessage.messageMetadata.threadKey.threadFbId ? - delta.deltaMessageReply.repliedToMessage.messageMetadata.threadKey.threadFbId : delta.deltaMessageReply.repliedToMessage.messageMetadata.threadKey - .otherUserFbId).toString(), - messageID: delta.deltaMessageReply.repliedToMessage.messageMetadata.messageId, - senderID: delta.deltaMessageReply.repliedToMessage.messageMetadata.actorFbId.toString(), - attachments: delta.deltaMessageReply.repliedToMessage.attachments.map(function (att) { - const mercury = JSON.parse(att.mercuryJSON); - Object.assign(att, mercury); - return att; - }).map(att => { - let x; - try { - x = utils._formatAttachment(att); - } catch (ex) { - x = att; - x.error = ex; - x.type = "unknown"; - } - return x; - }), - body: delta.deltaMessageReply.repliedToMessage.body || "", - isGroup: !!delta.deltaMessageReply.repliedToMessage.messageMetadata.threadKey.threadFbId, - mentions: rmentions, - timestamp: delta.deltaMessageReply.repliedToMessage.messageMetadata.timestamp - }; - } else if (delta.deltaMessageReply.replyToMessageId) { - return defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, { - "av": ctx.globalOptions.pageID, - "queries": JSON.stringify({ - "o0": { - //Using the same doc_id as forcedFetch - "doc_id": "2848441488556444", - "query_params": { - "thread_and_message_id": { - "thread_id": callbackToReturn.threadID, - "message_id": delta.deltaMessageReply.replyToMessageId.id - } - } - } - }) - }) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then((resData) => { - if (resData[resData.length - 1].error_results > 0) { - throw resData[0].o0.errors; - } - - if (resData[resData.length - 1].successful_results === 0) { - throw { error: "forcedFetch: there was no successful_results", res: resData }; - } - - const fetchData = resData[0].o0.data.message; - - const mobj = {}; - for (const n in fetchData.message.ranges) { - mobj[fetchData.message.ranges[n].entity.id] = (fetchData.message.text || "").substr(fetchData.message.ranges[n].offset, fetchData.message.ranges[n].length); - } - - callbackToReturn.messageReply = { - threadID: callbackToReturn.threadID, - messageID: fetchData.message_id, - senderID: fetchData.message_sender.id.toString(), - attachments: fetchData.message.blob_attachment.map(att => { - let x; - try { - x = utils._formatAttachment({ - blob_attachment: att - }); - } catch (ex) { - x = att; - x.error = ex; - x.type = "unknown"; - } - return x; - }), - body: fetchData.message.text || "", - isGroup: callbackToReturn.isGroup, - mentions: mobj, - timestamp: parseInt(fetchData.timestamp_precise) - }; - }) - .catch((err) => { - log.error("forcedFetch", err); - }) - .finally(function () { - if (ctx.globalOptions.autoMarkDelivery) { - markDelivery(ctx, api, callbackToReturn.threadID, callbackToReturn.messageID); - } - !ctx.globalOptions.selfListen && - (callbackToReturn.senderID === ctx.i_userID || callbackToReturn.senderID === ctx.userID) ? - undefined : - (function () { globalCallback(null, callbackToReturn); })(); - }); - } else { - callbackToReturn.delta = delta; - } - - if (ctx.globalOptions.autoMarkDelivery) { - markDelivery(ctx, api, callbackToReturn.threadID, callbackToReturn.messageID); - } - - return !ctx.globalOptions.selfListen && - (callbackToReturn.senderID === ctx.i_userID || callbackToReturn.senderID === ctx.userID) ? - undefined : - (function () { globalCallback(null, callbackToReturn); })(); - } - } - return; - } - } - - if (v.delta.class !== "NewMessage" && - !ctx.globalOptions.listenEvents - ) - return; - - switch (v.delta.class) { - case "ReadReceipt": - var fmtMsg; - try { - fmtMsg = utils.formatDeltaReadReceipt(v.delta); - } - catch (err) { - return globalCallback({ - error: "Problem parsing message object. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.", - detail: err, - res: v.delta, - type: "parse_error" - }); - } - return (function () { globalCallback(null, fmtMsg); })(); - case "AdminTextMessage": - switch (v.delta.type) { - case "change_thread_theme": - case "change_thread_nickname": - case "change_thread_icon": - case "change_thread_quick_reaction": - case "change_thread_admins": - case "group_poll": - case "joinable_group_link_mode_change": - case "magic_words": - case "change_thread_approval_mode": - case "messenger_call_log": - case "participant_joined_group_call": - var fmtMsg; - try { - fmtMsg = utils.formatDeltaEvent(v.delta); - } - catch (err) { - return globalCallback({ - error: "Problem parsing message object. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.", - detail: err, - res: v.delta, - type: "parse_error" - }); - } - return (function () { globalCallback(null, fmtMsg); })(); - default: - return; - } - //For group images - case "ForcedFetch": - if (!v.delta.threadKey) return; - var mid = v.delta.messageId; - var tid = v.delta.threadKey.threadFbId; - if (mid && tid) { - const form = { - "av": ctx.globalOptions.pageID, - "queries": JSON.stringify({ - "o0": { - //This doc_id is valid as of March 25, 2020 - "doc_id": "2848441488556444", - "query_params": { - "thread_and_message_id": { - "thread_id": tid.toString(), - "message_id": mid - } - } - } - }) - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then((resData) => { - if (resData[resData.length - 1].error_results > 0) { - throw resData[0].o0.errors; - } - - if (resData[resData.length - 1].successful_results === 0) { - throw { error: "forcedFetch: there was no successful_results", res: resData }; - } - - const fetchData = resData[0].o0.data.message; - - if (utils.getType(fetchData) == "Object") { - log.info("forcedFetch", fetchData); - switch (fetchData.__typename) { - case "ThreadImageMessage": - (!ctx.globalOptions.selfListenEvent && (fetchData.message_sender.id.toString() === ctx.i_userID || fetchData.message_sender.id.toString() === ctx.userID)) || !ctx.loggedIn ? - undefined : - (function () { - globalCallback(null, { - type: "event", - threadID: utils.formatID(tid.toString()), - messageID: fetchData.message_id, - logMessageType: "log:thread-image", - logMessageData: { - attachmentID: fetchData.image_with_metadata && fetchData.image_with_metadata.legacy_attachment_id, - width: fetchData.image_with_metadata && fetchData.image_with_metadata.original_dimensions.x, - height: fetchData.image_with_metadata && fetchData.image_with_metadata.original_dimensions.y, - url: fetchData.image_with_metadata && fetchData.image_with_metadata.preview.uri - }, - logMessageBody: fetchData.snippet, - timestamp: fetchData.timestamp_precise, - author: fetchData.message_sender.id - }); - })(); - break; - case "UserMessage": - log.info("ff-Return", { - type: "message", - senderID: utils.formatID(fetchData.message_sender.id), - body: fetchData.message.text || "", - threadID: utils.formatID(tid.toString()), - messageID: fetchData.message_id, - attachments: [{ - type: "share", - ID: fetchData.extensible_attachment.legacy_attachment_id, - url: fetchData.extensible_attachment.story_attachment.url, - - title: fetchData.extensible_attachment.story_attachment.title_with_entities.text, - description: fetchData.extensible_attachment.story_attachment.description.text, - source: fetchData.extensible_attachment.story_attachment.source, - - image: ((fetchData.extensible_attachment.story_attachment.media || {}).image || {}).uri, - width: ((fetchData.extensible_attachment.story_attachment.media || {}).image || {}).width, - height: ((fetchData.extensible_attachment.story_attachment.media || {}).image || {}).height, - playable: (fetchData.extensible_attachment.story_attachment.media || {}).is_playable || false, - duration: (fetchData.extensible_attachment.story_attachment.media || {}).playable_duration_in_ms || 0, - - subattachments: fetchData.extensible_attachment.subattachments, - properties: fetchData.extensible_attachment.story_attachment.properties - }], - mentions: {}, - timestamp: parseInt(fetchData.timestamp_precise), - participantIDs: (fetchData.participants || (fetchData.messageMetadata ? fetchData.messageMetadata.cid ? fetchData.messageMetadata.cid.canonicalParticipantFbids : fetchData.messageMetadata.participantIds : []) || []), - isGroup: (fetchData.message_sender.id != tid.toString()) - }); - globalCallback(null, { - type: "message", - senderID: utils.formatID(fetchData.message_sender.id), - body: fetchData.message.text || "", - threadID: utils.formatID(tid.toString()), - messageID: fetchData.message_id, - attachments: [{ - type: "share", - ID: fetchData.extensible_attachment.legacy_attachment_id, - url: fetchData.extensible_attachment.story_attachment.url, - - title: fetchData.extensible_attachment.story_attachment.title_with_entities.text, - description: fetchData.extensible_attachment.story_attachment.description.text, - source: fetchData.extensible_attachment.story_attachment.source, - - image: ((fetchData.extensible_attachment.story_attachment.media || {}).image || {}).uri, - width: ((fetchData.extensible_attachment.story_attachment.media || {}).image || {}).width, - height: ((fetchData.extensible_attachment.story_attachment.media || {}).image || {}).height, - playable: (fetchData.extensible_attachment.story_attachment.media || {}).is_playable || false, - duration: (fetchData.extensible_attachment.story_attachment.media || {}).playable_duration_in_ms || 0, - - subattachments: fetchData.extensible_attachment.subattachments, - properties: fetchData.extensible_attachment.story_attachment.properties - }], - mentions: {}, - timestamp: parseInt(fetchData.timestamp_precise), - participantIDs: (fetchData.participants || (fetchData.messageMetadata ? fetchData.messageMetadata.cid ? fetchData.messageMetadata.cid.canonicalParticipantFbids : fetchData.messageMetadata.participantIds : []) || []), - isGroup: (fetchData.message_sender.id != tid.toString()) - }); - } - } else { - log.error("forcedFetch", fetchData); - } - }) - .catch((err) => { - log.error("forcedFetch", err); - }); - } - break; - case "ThreadName": - case "ParticipantsAddedToGroupThread": - case "ParticipantLeftGroupThread": - case "ApprovalQueue": - var formattedEvent; - try { - formattedEvent = utils.formatDeltaEvent(v.delta); - } catch (err) { - return globalCallback({ - error: "Problem parsing message object. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.", - detail: err, - res: v.delta, - type: "parse_error" - }); - } - return (!ctx.globalOptions.selfListenEvent && (formattedEvent.author.toString() === ctx.i_userID || formattedEvent.author.toString() === ctx.userID)) || !ctx.loggedIn ? - undefined : - (function () { globalCallback(null, formattedEvent); })(); - } -} - -function markDelivery(ctx, api, threadID, messageID) { - if (threadID && messageID) { - api.markAsDelivered(threadID, messageID, (err) => { - if (err) { - log.error("markAsDelivered", err); - } else { - if (ctx.globalOptions.autoMarkRead) { - api.markAsRead(threadID, (err) => { - if (err) { - log.error("markAsDelivered", err); - } - }); - } - } - }); - } -} - -// function getSeqId(defaultFuncs, api, ctx, globalCallback) { -// const jar = ctx.jar; -// utils -// .get('https://www.facebook.com/', jar, null, ctx.globalOptions, { noRef: true }) -// .then(utils.saveCookies(jar)) -// .then(function (resData) { -// const html = resData.body; -// const oldFBMQTTMatch = html.match(/irisSeqID:"(.+?)",appID:219994525426954,endpoint:"(.+?)"/); -// let mqttEndpoint = null; -// let region = null; -// let irisSeqID = null; -// let noMqttData = null; - -// if (oldFBMQTTMatch) { -// irisSeqID = oldFBMQTTMatch[1]; -// mqttEndpoint = oldFBMQTTMatch[2]; -// region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase(); -// log.info("login", `Got this account's message region: ${region}`); -// } else { -// const newFBMQTTMatch = html.match(/{"app_id":"219994525426954","endpoint":"(.+?)","iris_seq_id":"(.+?)"}/); -// if (newFBMQTTMatch) { -// irisSeqID = newFBMQTTMatch[2]; -// mqttEndpoint = newFBMQTTMatch[1].replace(/\\\//g, "/"); -// region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase(); -// log.info("login", `Got this account's message region: ${region}`); -// } else { -// const legacyFBMQTTMatch = html.match(/(\["MqttWebConfig",\[\],{fbid:")(.+?)(",appID:219994525426954,endpoint:")(.+?)(",pollingEndpoint:")(.+?)(3790])/); -// if (legacyFBMQTTMatch) { -// mqttEndpoint = legacyFBMQTTMatch[4]; -// region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase(); -// log.warn("login", `Cannot get sequence ID with new RegExp. Fallback to old RegExp (without seqID)...`); -// log.info("login", `Got this account's message region: ${region}`); -// log.info("login", `[Unused] Polling endpoint: ${legacyFBMQTTMatch[6]}`); -// } else { -// log.warn("login", "Cannot get MQTT region & sequence ID."); -// noMqttData = html; -// } -// } -// } - -// ctx.lastSeqId = irisSeqID; -// ctx.mqttEndpoint = mqttEndpoint; -// ctx.region = region; -// if (noMqttData) { -// api["htmlData"] = noMqttData; -// } - -// listenMqtt(defaultFuncs, api, ctx, globalCallback); -// }) -// .catch(function (err) { -// log.error("getSeqId", err); -// }); -// } - -module.exports = function (defaultFuncs, api, ctx) { - let globalCallback = identity; - getSeqId = function getSeqId() { - ctx.t_mqttCalled = false; - defaultFuncs - .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then((resData) => { - if (utils.getType(resData) != "Array") throw { error: "Not logged in", res: resData }; - if (resData && resData[resData.length - 1].error_results > 0) throw resData[0].o0.errors; - if (resData[resData.length - 1].successful_results === 0) throw { error: "getSeqId: there was no successful_results", res: resData }; - if (resData[0].o0.data.viewer.message_threads.sync_sequence_id) { - ctx.lastSeqId = resData[0].o0.data.viewer.message_threads.sync_sequence_id; - listenMqtt(defaultFuncs, api, ctx, globalCallback); - } else throw { error: "getSeqId: no sync_sequence_id found.", res: resData }; - }) - .catch((err) => { - log.error("getSeqId", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in") ctx.loggedIn = false; - return globalCallback(err); - }); - }; - - return function (callback) { - class MessageEmitter extends EventEmitter { - stopListening(callback) { - - callback = callback || (() => { }); - globalCallback = identity; - if (ctx.mqttClient) { - ctx.mqttClient.unsubscribe("/webrtc"); - ctx.mqttClient.unsubscribe("/rtc_multi"); - ctx.mqttClient.unsubscribe("/onevc"); - ctx.mqttClient.publish("/browser_close", "{}"); - ctx.mqttClient.end(false, function (...data) { - callback(data); - ctx.mqttClient = undefined; - }); - } - } - - async stopListeningAsync() { - return new Promise((resolve) => { - this.stopListening(resolve); - }); - } - } - - const msgEmitter = new MessageEmitter(); - globalCallback = (callback || function (error, message) { - if (error) { - return msgEmitter.emit("error", error); - } - msgEmitter.emit("message", message); - }); - - // Reset some stuff - if (!ctx.firstListen) - ctx.lastSeqId = null; - ctx.syncToken = undefined; - ctx.t_mqttCalled = false; - - form = { - "av": ctx.globalOptions.pageID, - "queries": JSON.stringify({ - "o0": { - "doc_id": "3336396659757871", - "query_params": { - "limit": 1, - "before": null, - "tags": ["INBOX"], - "includeDeliveryReceipts": false, - "includeSeqID": true - } - } - }) - }; - - if (!ctx.firstListen || !ctx.lastSeqId) { - getSeqId(defaultFuncs, api, ctx, globalCallback); - } else { - listenMqtt(defaultFuncs, api, ctx, globalCallback); - } - - api.stopListening = msgEmitter.stopListening; - api.stopListeningAsync = msgEmitter.stopListeningAsync; - return msgEmitter; - }; -}; diff --git a/fb-chat-api/src/logout.js b/fb-chat-api/src/logout.js deleted file mode 100644 index 4ee55d7712..0000000000 --- a/fb-chat-api/src/logout.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function logout(callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - pmid: "0" - }; - - defaultFuncs - .post( - "https://www.facebook.com/bluebar/modern_settings_menu/?help_type=364455653583099&show_contextual_help=1", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - const elem = resData.jsmods.instances[0][2][0].filter(function (v) { - return v.value === "logout"; - })[0]; - - const html = resData.jsmods.markup.filter(function (v) { - return v[0] === elem.markup.__m; - })[0][1].__html; - - const form = { - fb_dtsg: utils.getFrom(html, '"fb_dtsg" value="', '"'), - ref: utils.getFrom(html, '"ref" value="', '"'), - h: utils.getFrom(html, '"h" value="', '"') - }; - - return defaultFuncs - .post("https://www.facebook.com/logout.php", ctx.jar, form) - .then(utils.saveCookies(ctx.jar)); - }) - .then(function (res) { - if (!res.headers) { - throw { error: "An error occurred when logging out." }; - } - - return defaultFuncs - .get(res.headers.location, ctx.jar) - .then(utils.saveCookies(ctx.jar)); - }) - .then(function () { - ctx.loggedIn = false; - log.info("logout", "Logged out successfully."); - callback(); - }) - .catch(function (err) { - log.error("logout", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/markAsDelivered.js b/fb-chat-api/src/markAsDelivered.js deleted file mode 100644 index a4c295981b..0000000000 --- a/fb-chat-api/src/markAsDelivered.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function markAsDelivered(threadID, messageID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - if (!threadID || !messageID) { - return callback("Error: messageID or threadID is not defined"); - } - - const form = {}; - - form["message_ids[0]"] = messageID; - form["thread_ids[" + threadID + "][0]"] = messageID; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/delivery_receipts.php", - ctx.jar, - form - ) - .then(utils.saveCookies(ctx.jar)) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("markAsDelivered", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in.") { - ctx.loggedIn = false; - } - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/markAsRead.js b/fb-chat-api/src/markAsRead.js deleted file mode 100644 index cbd7f3c844..0000000000 --- a/fb-chat-api/src/markAsRead.js +++ /dev/null @@ -1,80 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return async function markAsRead(threadID, read, callback) { - if (utils.getType(read) === 'Function' || utils.getType(read) === 'AsyncFunction') { - callback = read; - read = true; - } - if (read == undefined) { - read = true; - } - - if (!callback) { - callback = () => { }; - } - - const form = {}; - - if (typeof ctx.globalOptions.pageID !== 'undefined') { - form["source"] = "PagesManagerMessagesInterface"; - form["request_user_id"] = ctx.globalOptions.pageID; - form["ids[" + threadID + "]"] = read; - form["watermarkTimestamp"] = new Date().getTime(); - form["shouldSendReadReceipt"] = true; - form["commerce_last_message_type"] = ""; - //form["titanOriginatedThreadId"] = utils.generateThreadingID(ctx.clientID); - - let resData; - try { - resData = await ( - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/change_read_status.php", - ctx.jar, - form - ) - .then(utils.saveCookies(ctx.jar)) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - ); - } catch (e) { - callback(e); - return e; - } - - if (resData.error) { - const err = resData.error; - log.error("markAsRead", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in.") { - ctx.loggedIn = false; - } - callback(err); - return err; - } - - callback(); - return null; - } else { - try { - if (ctx.mqttClient) { - const err = await new Promise(r => ctx.mqttClient.publish("/mark_thread", JSON.stringify({ - threadID, - mark: "read", - state: read - }), { qos: 1, retain: false }, r)); - if (err) throw err; - } else { - throw { - error: "You can only use this function after you start listening." - }; - } - } catch (e) { - callback(e); - return e; - } - } - }; -}; diff --git a/fb-chat-api/src/markAsReadAll.js b/fb-chat-api/src/markAsReadAll.js deleted file mode 100644 index 5714eb5eb6..0000000000 --- a/fb-chat-api/src/markAsReadAll.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function markAsReadAll(callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - folder: 'inbox' - }; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/mark_folder_as_read.php", - ctx.jar, - form - ) - .then(utils.saveCookies(ctx.jar)) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("markAsReadAll", err); - return callback(err); - }); - - return returnPromise; - }; -}; \ No newline at end of file diff --git a/fb-chat-api/src/markAsSeen.js b/fb-chat-api/src/markAsSeen.js deleted file mode 100644 index 2709493866..0000000000 --- a/fb-chat-api/src/markAsSeen.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function markAsRead(seen_timestamp, callback) { - if (utils.getType(seen_timestamp) == "Function" || - utils.getType(seen_timestamp) == "AsyncFunction") { - callback = seen_timestamp; - seen_timestamp = Date.now(); - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - seen_timestamp: seen_timestamp - }; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/mark_seen.php", - ctx.jar, - form - ) - .then(utils.saveCookies(ctx.jar)) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("markAsSeen", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in.") { - ctx.loggedIn = false; - } - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/muteThread.js b/fb-chat-api/src/muteThread.js deleted file mode 100644 index 3673d377a8..0000000000 --- a/fb-chat-api/src/muteThread.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - // muteSecond: -1=permanent mute, 0=unmute, 60=one minute, 3600=one hour, etc. - return function muteThread(threadID, muteSeconds, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - thread_fbid: threadID, - mute_settings: muteSeconds - }; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/change_mute_thread.php", - ctx.jar, - form - ) - .then(utils.saveCookies(ctx.jar)) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("muteThread", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/refreshFb_dtsg.js b/fb-chat-api/src/refreshFb_dtsg.js deleted file mode 100644 index 5a66b33b5f..0000000000 --- a/fb-chat-api/src/refreshFb_dtsg.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - /** - * Refreshes the fb_dtsg and jazoest values. - * @param {Function} callback - * @returns {Promise} - * @description if you don't update the value of fb_dtsg and jazoest for a long time an error "Please try closing and re-opening your browser window" will appear - * @description you should refresh it every 48h or less - */ - return function refreshFb_dtsg(obj, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (utils.getType(obj) === "Function" || utils.getType(obj) === "AsyncFunction") { - callback = obj; - obj = {}; - } - - if (!obj) { - obj = {}; - } - - if (utils.getType(obj) !== "Object") { - throw new utils.CustomError("the first parameter must be an object or a callback function"); - } - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - if (Object.keys(obj).length == 0) { - utils - .get('https://m.facebook.com/', ctx.jar, null, ctx.globalOptions, { noRef: true }) - .then(function (resData) { - const html = resData.body; - const fb_dtsg = utils.getFrom(html, 'name="fb_dtsg" value="', '"'); - const jazoest = utils.getFrom(html, 'name="jazoest" value="', '"'); - if (!fb_dtsg) { - throw new utils.CustomError("Could not find fb_dtsg in HTML after requesting https://www.facebook.com/"); - } - ctx.fb_dtsg = fb_dtsg; - ctx.jazoest = jazoest; - callback(null, { - data: { - fb_dtsg: fb_dtsg, - jazoest: jazoest - }, - message: "refreshed fb_dtsg and jazoest" - }); - }) - .catch(function (err) { - log.error("refreshFb_dtsg", err); - return callback(err); - }); - } - else { - Object.keys(obj).forEach(function (key) { - ctx[key] = obj[key]; - }); - callback(null, { - data: obj, - message: "refreshed " + Object.keys(obj).join(", ") - }); - } - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/removeUserFromGroup.js b/fb-chat-api/src/removeUserFromGroup.js deleted file mode 100644 index 1692e3c614..0000000000 --- a/fb-chat-api/src/removeUserFromGroup.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function removeUserFromGroup(userID, threadID, callback) { - if ( - !callback && - (utils.getType(threadID) === "Function" || - utils.getType(threadID) === "AsyncFunction") - ) { - throw { error: "please pass a threadID as a second argument." }; - } - if ( - utils.getType(threadID) !== "Number" && - utils.getType(threadID) !== "String" - ) { - throw { - error: - "threadID should be of type Number or String and not " + - utils.getType(threadID) + - "." - }; - } - if ( - utils.getType(userID) !== "Number" && - utils.getType(userID) !== "String" - ) { - throw { - error: - "userID should be of type Number or String and not " + - utils.getType(userID) + - "." - }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - uid: userID, - tid: threadID - }; - - defaultFuncs - .post("https://www.facebook.com/chat/remove_participants", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (!resData) { - throw { error: "Remove from group failed." }; - } - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("removeUserFromGroup", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/resolvePhotoUrl.js b/fb-chat-api/src/resolvePhotoUrl.js deleted file mode 100644 index 0cf2f3ade3..0000000000 --- a/fb-chat-api/src/resolvePhotoUrl.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function resolvePhotoUrl(photoID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - defaultFuncs - .get("https://www.facebook.com/mercury/attachments/photo", ctx.jar, { - photo_id: photoID - }) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(resData => { - if (resData.error) { - throw resData; - } - - const photoUrl = resData.jsmods.require[0][3][0]; - - return callback(null, photoUrl); - }) - .catch(err => { - log.error("resolvePhotoUrl", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/searchForThread.js b/fb-chat-api/src/searchForThread.js deleted file mode 100644 index 1702dfd5d7..0000000000 --- a/fb-chat-api/src/searchForThread.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -const utils = require("../utils"); - -module.exports = function (defaultFuncs, api, ctx) { - return function searchForThread(name, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const tmpForm = { - client: "web_messenger", - query: name, - offset: 0, - limit: 21, - index: "fbid" - }; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/mercury/search_threads.php", - ctx.jar, - tmpForm - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - if (!resData.payload.mercury_payload.threads) { - return callback({ error: "Could not find thread `" + name + "`." }); - } - return callback( - null, - resData.payload.mercury_payload.threads.map(utils.formatThread) - ); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/sendMessage.js b/fb-chat-api/src/sendMessage.js deleted file mode 100644 index 0376f17981..0000000000 --- a/fb-chat-api/src/sendMessage.js +++ /dev/null @@ -1,477 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -const allowedProperties = { - attachment: true, - url: true, - sticker: true, - emoji: true, - emojiSize: true, - body: true, - mentions: true, - location: true -}; - -function removeSpecialChar(inputString) { // remove char banned by facebook - if (typeof inputString !== "string") - return inputString; - // Convert string to Buffer - const buffer = Buffer.from(inputString, 'utf8'); - - // Filter buffer start with ef b8 8f - let filteredBuffer = Buffer.alloc(0); - for (let i = 0; i < buffer.length; i++) { - if (buffer[i] === 0xEF && buffer[i + 1] === 0xB8 && buffer[i + 2] === 0x8F) { - i += 2; // Skip 3 bytes of buffer starting with ef b8 8f - } else { - filteredBuffer = Buffer.concat([filteredBuffer, buffer.slice(i, i + 1)]); - } - } - - // Convert filtered buffer to string - const convertedString = filteredBuffer.toString('utf8'); - - return convertedString; -} - -module.exports = function (defaultFuncs, api, ctx) { - function uploadAttachment(attachments, callback) { - const uploads = []; - - // create an array of promises - for (let i = 0; i < attachments.length; i++) { - if (!utils.isReadableStream(attachments[i])) { - throw { - error: - "Attachment should be a readable stream and not " + - utils.getType(attachments[i]) + - "." - }; - } - - const form = { - upload_1024: attachments[i], - voice_clip: "true" - }; - - uploads.push( - defaultFuncs - .postFormData( - "https://upload.facebook.com/ajax/mercury/upload.php", - ctx.jar, - form, - {} - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - // We have to return the data unformatted unless we want to change it - // back in sendMessage. - return resData.payload.metadata[0]; - }) - ); - } - - // resolve all promises - Promise - .all(uploads) - .then(function (resData) { - callback(null, resData); - }) - .catch(function (err) { - log.error("uploadAttachment", err); - return callback(err); - }); - } - - function getUrl(url, callback) { - const form = { - image_height: 960, - image_width: 960, - uri: url - }; - - defaultFuncs - .post( - "https://www.facebook.com/message_share_attachment/fromURI/", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - return callback(resData); - } - - if (!resData.payload) { - return callback({ error: "Invalid url" }); - } - - callback(null, resData.payload.share_data.share_params); - }) - .catch(function (err) { - log.error("getUrl", err); - return callback(err); - }); - } - - function sendContent(form, threadID, isSingleUser, messageAndOTID, callback) { - // There are three cases here: - // 1. threadID is of type array, where we're starting a new group chat with users - // specified in the array. - // 2. User is sending a message to a specific user. - // 3. No additional form params and the message goes to an existing group chat. - if (utils.getType(threadID) === "Array") { - for (let i = 0; i < threadID.length; i++) { - form["specific_to_list[" + i + "]"] = "fbid:" + threadID[i]; - } - form["specific_to_list[" + threadID.length + "]"] = "fbid:" + (ctx.i_userID || ctx.userID); - form["client_thread_id"] = "root:" + messageAndOTID; - log.info("sendMessage", "Sending message to multiple users: " + threadID); - } else { - // This means that threadID is the id of a user, and the chat - // is a single person chat - if (isSingleUser) { - form["specific_to_list[0]"] = "fbid:" + threadID; - form["specific_to_list[1]"] = "fbid:" + (ctx.i_userID || ctx.userID); - form["other_user_fbid"] = threadID; - } else { - form["thread_fbid"] = threadID; - } - } - - if (ctx.globalOptions.pageID) { - form["author"] = "fbid:" + ctx.globalOptions.pageID; - form["specific_to_list[1]"] = "fbid:" + ctx.globalOptions.pageID; - form["creator_info[creatorID]"] = ctx.i_userID || ctx.userID; - form["creator_info[creatorType]"] = "direct_admin"; - form["creator_info[labelType]"] = "sent_message"; - form["creator_info[pageID]"] = ctx.globalOptions.pageID; - form["request_user_id"] = ctx.globalOptions.pageID; - form["creator_info[profileURI]"] = - "https://www.facebook.com/profile.php?id=" + (ctx.i_userID || ctx.userID); - } - - defaultFuncs - .post("https://www.facebook.com/messaging/send/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (!resData) { - return callback({ error: "Send message failed." }); - } - - if (resData.error) { - if (resData.error === 1545012) { - log.warn( - "sendMessage", - "Got error 1545012. This might mean that you're not part of the conversation " + - threadID - ); - } - else { - log.error("sendMessage", resData); - } - return callback(resData); - } - - const messageInfo = resData.payload.actions.reduce(function (p, v) { - return ( - { - threadID: v.thread_fbid, - messageID: v.message_id, - timestamp: v.timestamp - } || p - ); - }, null); - - return callback(null, messageInfo); - }) - .catch(function (err) { - log.error("sendMessage", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in.") { - ctx.loggedIn = false; - } - return callback(err); - }); - } - - function send(form, threadID, messageAndOTID, callback, isGroup) { - // We're doing a query to this to check if the given id is the id of - // a user or of a group chat. The form will be different depending - // on that. - if (utils.getType(threadID) === "Array") { - sendContent(form, threadID, false, messageAndOTID, callback); - } else { - if (utils.getType(isGroup) != "Boolean") { - // Removed the use of api.getUserInfo() in the old version to reduce account lockout - sendContent(form, threadID, threadID.toString().length < 16, messageAndOTID, callback); - } else { - sendContent(form, threadID, !isGroup, messageAndOTID, callback); - } - } - } - - function handleUrl(msg, form, callback, cb) { - if (msg.url) { - form["shareable_attachment[share_type]"] = "100"; - getUrl(msg.url, function (err, params) { - if (err) { - return callback(err); - } - - form["shareable_attachment[share_params]"] = params; - cb(); - }); - } else { - cb(); - } - } - - function handleLocation(msg, form, callback, cb) { - if (msg.location) { - if (msg.location.latitude == null || msg.location.longitude == null) { - return callback({ error: "location property needs both latitude and longitude" }); - } - - form["location_attachment[coordinates][latitude]"] = msg.location.latitude; - form["location_attachment[coordinates][longitude]"] = msg.location.longitude; - form["location_attachment[is_current_location]"] = !!msg.location.current; - } - - cb(); - } - - function handleSticker(msg, form, callback, cb) { - if (msg.sticker) { - form["sticker_id"] = msg.sticker; - } - cb(); - } - - function handleEmoji(msg, form, callback, cb) { - if (msg.emojiSize != null && msg.emoji == null) { - return callback({ error: "emoji property is empty" }); - } - if (msg.emoji) { - if (msg.emojiSize == null) { - msg.emojiSize = "medium"; - } - if ( - msg.emojiSize != "small" && - msg.emojiSize != "medium" && - msg.emojiSize != "large" - ) { - return callback({ error: "emojiSize property is invalid" }); - } - if (form["body"] != null && form["body"] != "") { - return callback({ error: "body is not empty" }); - } - form["body"] = msg.emoji; - form["tags[0]"] = "hot_emoji_size:" + msg.emojiSize; - } - cb(); - } - - function handleAttachment(msg, form, callback, cb) { - if (msg.attachment) { - form["image_ids"] = []; - form["gif_ids"] = []; - form["file_ids"] = []; - form["video_ids"] = []; - form["audio_ids"] = []; - - if (utils.getType(msg.attachment) !== "Array") { - msg.attachment = [msg.attachment]; - } - - uploadAttachment(msg.attachment, function (err, files) { - if (err) { - return callback(err); - } - - files.forEach(function (file) { - const key = Object.keys(file); - const type = key[0]; // image_id, file_id, etc - form["" + type + "s"].push(file[type]); // push the id - }); - cb(); - }); - } else { - cb(); - } - } - - function handleMention(msg, form, callback, cb) { - if (msg.mentions) { - for (let i = 0; i < msg.mentions.length; i++) { - const mention = msg.mentions[i]; - - const tag = mention.tag; - if (typeof tag !== "string") { - return callback({ error: "Mention tags must be strings." }); - } - - const offset = msg.body.indexOf(tag, mention.fromIndex || 0); - - if (offset < 0) { - log.warn( - "handleMention", - 'Mention for "' + tag + '" not found in message string.' - ); - } - - if (mention.id == null) { - log.warn("handleMention", "Mention id should be non-null."); - } - - const id = mention.id || 0; - form["profile_xmd[" + i + "][offset]"] = offset; - form["profile_xmd[" + i + "][length]"] = tag.length; - form["profile_xmd[" + i + "][id]"] = id; - form["profile_xmd[" + i + "][type]"] = "p"; - } - } - cb(); - } - - return function sendMessage(msg, threadID, callback, replyToMessage, isGroup) { - typeof isGroup == "undefined" ? isGroup = null : ""; - if ( - !callback && - (utils.getType(threadID) === "Function" || - utils.getType(threadID) === "AsyncFunction") - ) { - return threadID({ error: "Pass a threadID as a second argument." }); - } - if ( - !replyToMessage && - utils.getType(callback) === "String" - ) { - replyToMessage = callback; - callback = function () { }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const msgType = utils.getType(msg); - const threadIDType = utils.getType(threadID); - const messageIDType = utils.getType(replyToMessage); - - if (msgType !== "String" && msgType !== "Object") { - return callback({ - error: - "Message should be of type string or object and not " + msgType + "." - }); - } - - // Changing this to accomodate an array of users - if ( - threadIDType !== "Array" && - threadIDType !== "Number" && - threadIDType !== "String" - ) { - return callback({ - error: - "ThreadID should be of type number, string, or array and not " + - threadIDType + - "." - }); - } - - if (replyToMessage && messageIDType !== 'String') { - return callback({ - error: - "MessageID should be of type string and not " + - threadIDType + - "." - }); - } - - if (msgType === "String") { - msg = { body: msg }; - } - - if (utils.getType(msg.body) === "String") { - msg.body = removeSpecialChar(msg.body); - } - - const disallowedProperties = Object.keys(msg).filter( - prop => !allowedProperties[prop] - ); - if (disallowedProperties.length > 0) { - return callback({ - error: "Dissallowed props: `" + disallowedProperties.join(", ") + "`" - }); - } - - const messageAndOTID = utils.generateOfflineThreadingID(); - - const form = { - client: "mercury", - action_type: "ma-type:user-generated-message", - author: "fbid:" + (ctx.i_userID || ctx.userID), - timestamp: Date.now(), - timestamp_absolute: "Today", - timestamp_relative: utils.generateTimestampRelative(), - timestamp_time_passed: "0", - is_unread: false, - is_cleared: false, - is_forward: false, - is_filtered_content: false, - is_filtered_content_bh: false, - is_filtered_content_account: false, - is_filtered_content_quasar: false, - is_filtered_content_invalid_app: false, - is_spoof_warning: false, - source: "source:chat:web", - "source_tags[0]": "source:chat", - body: msg.body ? msg.body.toString() : "", - html_body: false, - ui_push_phase: "V3", - status: "0", - offline_threading_id: messageAndOTID, - message_id: messageAndOTID, - threading_id: utils.generateThreadingID(ctx.clientID), - "ephemeral_ttl_mode:": "0", - manual_retry_cnt: "0", - has_attachment: !!(msg.attachment || msg.url || msg.sticker), - signatureID: utils.getSignatureID(), - replied_to_message_id: replyToMessage - }; - - handleLocation(msg, form, callback, () => - handleSticker(msg, form, callback, () => - handleAttachment(msg, form, callback, () => - handleUrl(msg, form, callback, () => - handleEmoji(msg, form, callback, () => - handleMention(msg, form, callback, () => - send(form, threadID, messageAndOTID, callback, isGroup) - ) - ) - ) - ) - ) - ); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/sendTypingIndicator.js b/fb-chat-api/src/sendTypingIndicator.js deleted file mode 100644 index e89f3f49a3..0000000000 --- a/fb-chat-api/src/sendTypingIndicator.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - function makeTypingIndicator(typ, threadID, callback, isGroup) { - const form = { - typ: +typ, - to: "", - source: "mercury-chat", - thread: threadID - }; - - // Check if thread is a single person chat or a group chat - // More info on this is in api.sendMessage - if (utils.getType(isGroup) == "Boolean") { - if (!isGroup) { - form.to = threadID; - } - defaultFuncs - .post("https://www.facebook.com/ajax/messaging/typ.php", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("sendTypingIndicator", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in") { - ctx.loggedIn = false; - } - return callback(err); - }); - } else { - api.getUserInfo(threadID, function (err, res) { - if (err) { - return callback(err); - } - - // If id is single person chat - if (Object.keys(res).length > 0) { - form.to = threadID; - } - - defaultFuncs - .post("https://www.facebook.com/ajax/messaging/typ.php", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("sendTypingIndicator", err); - if (utils.getType(err) == "Object" && err.error === "Not logged in.") { - ctx.loggedIn = false; - } - return callback(err); - }); - }); - } - } - - return function sendTypingIndicator(threadID, callback, isGroup) { - if ( - utils.getType(callback) !== "Function" && - utils.getType(callback) !== "AsyncFunction" - ) { - if (callback) { - log.warn( - "sendTypingIndicator", - "callback is not a function - ignoring." - ); - } - callback = () => { }; - } - - makeTypingIndicator(true, threadID, callback, isGroup); - - return function end(cb) { - if ( - utils.getType(cb) !== "Function" && - utils.getType(cb) !== "AsyncFunction" - ) { - if (cb) { - log.warn( - "sendTypingIndicator", - "callback is not a function - ignoring." - ); - } - cb = () => { }; - } - - makeTypingIndicator(false, threadID, cb, isGroup); - }; - }; -}; diff --git a/fb-chat-api/src/setMessageReaction.js b/fb-chat-api/src/setMessageReaction.js deleted file mode 100644 index 4cfc4e6746..0000000000 --- a/fb-chat-api/src/setMessageReaction.js +++ /dev/null @@ -1,121 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function setMessageReaction(reaction, messageID, callback, forceCustomReaction) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - if (ctx.i_userID) { - throw { error: "Cannot set reaction as another profile." }; - } - - switch (reaction) { - case "\uD83D\uDE0D": //:heart_eyes: - case "\uD83D\uDE06": //:laughing: - case "\uD83D\uDE2E": //:open_mouth: - case "\uD83D\uDE22": //:cry: - case "\uD83D\uDE20": //:angry: - case "\uD83D\uDC4D": //:thumbsup: - case "\uD83D\uDC4E": //:thumbsdown: - case "\u2764": //:heart: - case "\uD83D\uDC97": //:glowingheart: - case "": - //valid - break; - case ":heart_eyes:": - case ":love:": - reaction = "\uD83D\uDE0D"; - break; - case ":laughing:": - case ":haha:": - reaction = "\uD83D\uDE06"; - break; - case ":open_mouth:": - case ":wow:": - reaction = "\uD83D\uDE2E"; - break; - case ":cry:": - case ":sad:": - reaction = "\uD83D\uDE22"; - break; - case ":angry:": - reaction = "\uD83D\uDE20"; - break; - case ":thumbsup:": - case ":like:": - reaction = "\uD83D\uDC4D"; - break; - case ":thumbsdown:": - case ":dislike:": - reaction = "\uD83D\uDC4E"; - break; - case ":heart:": - reaction = "\u2764"; - break; - case ":glowingheart:": - reaction = "\uD83D\uDC97"; - break; - default: - if (forceCustomReaction) { - break; - } - return callback({ error: "Reaction is not a valid emoji." }); - } - - const variables = { - data: { - client_mutation_id: ctx.clientMutationId++, - actor_id: ctx.i_userID || ctx.userID, - action: reaction == "" ? "REMOVE_REACTION" : "ADD_REACTION", - message_id: messageID, - reaction: reaction - } - }; - - const qs = { - doc_id: "1491398900900362", - variables: JSON.stringify(variables), - dpr: 1 - }; - - defaultFuncs - .postFormData( - "https://www.facebook.com/webgraphql/mutation/", - ctx.jar, - {}, - qs - ) - .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs)) - .then(function (resData) { - if (!resData) { - throw { error: "setReaction returned empty object." }; - } - if (resData.error || resData.errors) { - throw resData; - } - callback(null); - }) - .catch(function (err) { - log.error("setReaction", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/setPostReaction.js b/fb-chat-api/src/setPostReaction.js deleted file mode 100644 index ff939515d3..0000000000 --- a/fb-chat-api/src/setPostReaction.js +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @fix by NTKhang - * update as Thursday, 10 February 2022 - * do not remove the author name to get more updates - */ - -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -function formatData(resData) { - return { - viewer_feedback_reaction_info: resData.feedback_react.feedback.viewer_feedback_reaction_info, - supported_reactions: resData.feedback_react.feedback.supported_reactions, - top_reactions: resData.feedback_react.feedback.top_reactions.edges, - reaction_count: resData.feedback_react.feedback.reaction_count - }; -} - -module.exports = function (defaultFuncs, api, ctx) { - return function setPostReaction(postID, type, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - if (utils.getType(type) === "Function" || utils.getType(type) === "AsyncFunction") { - callback = type; - type = 0; - } - else { - callback = function (err, data) { - if (err) { - return rejectFunc(err); - } - resolveFunc(data); - }; - } - } - - const map = { - unlike: 0, - like: 1, - heart: 2, - love: 16, - haha: 4, - wow: 3, - sad: 7, - angry: 8 - }; - - if (utils.getType(type) !== "Number" && utils.getType(type) === "String") { - type = map[type.toLowerCase()]; - } - - if (utils.getType(type) !== "Number" && utils.getType(type) !== "String") { - throw { - error: "setPostReaction: Invalid reaction type" - }; - } - - if (type != 0 && !type) { - throw { - error: "setPostReaction: Invalid reaction type" - }; - } - - const form = { - av: ctx.i_userID || ctx.userID, - fb_api_caller_class: "RelayModern", - fb_api_req_friendly_name: "CometUFIFeedbackReactMutation", - doc_id: "4769042373179384", - variables: JSON.stringify({ - input: { - actor_id: ctx.i_userID || ctx.userID, - feedback_id: (new Buffer("feedback:" + postID)).toString("base64"), - feedback_reaction: type, - feedback_source: "OBJECT", - is_tracking_encrypted: true, - tracking: [], - session_id: "f7dd50dd-db6e-4598-8cd9-561d5002b423", - client_mutation_id: Math.round(Math.random() * 19).toString() - }, - useDefaultActor: false, - scale: 3 - }) - }; - - defaultFuncs - .post("https://www.facebook.com/api/graphql/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.errors) { - throw resData; - } - return callback(null, formatData(resData.data)); - }) - .catch(function (err) { - log.error("setPostReaction", err); - return callback(err); - }); - - return returnPromise; - }; -}; \ No newline at end of file diff --git a/fb-chat-api/src/setTitle.js b/fb-chat-api/src/setTitle.js deleted file mode 100644 index fb519b79bc..0000000000 --- a/fb-chat-api/src/setTitle.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function setTitle(newTitle, threadID, callback) { - if ( - !callback && - (utils.getType(threadID) === "Function" || - utils.getType(threadID) === "AsyncFunction") - ) { - throw { error: "please pass a threadID as a second argument." }; - } - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const messageAndOTID = utils.generateOfflineThreadingID(); - const form = { - client: "mercury", - action_type: "ma-type:log-message", - author: "fbid:" + (ctx.i_userID || ctx.userID), - author_email: "", - coordinates: "", - timestamp: Date.now(), - timestamp_absolute: "Today", - timestamp_relative: utils.generateTimestampRelative(), - timestamp_time_passed: "0", - is_unread: false, - is_cleared: false, - is_forward: false, - is_filtered_content: false, - is_spoof_warning: false, - source: "source:chat:web", - "source_tags[0]": "source:chat", - status: "0", - offline_threading_id: messageAndOTID, - message_id: messageAndOTID, - threading_id: utils.generateThreadingID(ctx.clientID), - manual_retry_cnt: "0", - thread_fbid: threadID, - thread_name: newTitle, - thread_id: threadID, - log_message_type: "log:thread-name" - }; - - defaultFuncs - .post("https://www.facebook.com/messaging/set_thread_name/", ctx.jar, form) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error && resData.error === 1545012) { - throw { error: "Cannot change chat title: Not member of chat." }; - } - - if (resData.error && resData.error === 1545003) { - throw { error: "Cannot set title of single-user chat." }; - } - - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("setTitle", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/threadColors.js b/fb-chat-api/src/threadColors.js deleted file mode 100644 index d0476df4e5..0000000000 --- a/fb-chat-api/src/threadColors.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict"; - -module.exports = function (_defaultFuncs, _api, _ctx) { - // Currently the only colors that can be passed to api.changeThreadColor(); may change if Facebook adds more - return { - //Old hex colors. - ////MessengerBlue: null, - ////Viking: "#44bec7", - ////GoldenPoppy: "#ffc300", - ////RadicalRed: "#fa3c4c", - ////Shocking: "#d696bb", - ////PictonBlue: "#6699cc", - ////FreeSpeechGreen: "#13cf13", - ////Pumpkin: "#ff7e29", - ////LightCoral: "#e68585", - ////MediumSlateBlue: "#7646ff", - ////DeepSkyBlue: "#20cef5", - ////Fern: "#67b868", - ////Cameo: "#d4a88c", - ////BrilliantRose: "#ff5ca1", - ////BilobaFlower: "#a695c7" - - //#region This part is for backward compatibly - //trying to match the color one-by-one. kill me plz - MessengerBlue: "196241301102133", //DefaultBlue - Viking: "1928399724138152", //TealBlue - GoldenPoppy: "174636906462322", //Yellow - RadicalRed: "2129984390566328", //Red - Shocking: "2058653964378557", //LavenderPurple - FreeSpeechGreen: "2136751179887052", //Green - Pumpkin: "175615189761153", //Orange - LightCoral: "980963458735625", //CoralPink - MediumSlateBlue: "234137870477637", //BrightPurple - DeepSkyBlue: "2442142322678320", //AquaBlue - BrilliantRose: "169463077092846", //HotPink - //i've tried my best, everything else can't be mapped. (or is it?) -UIRI 2020 - //#endregion - - DefaultBlue: "196241301102133", - HotPink: "169463077092846", - AquaBlue: "2442142322678320", - BrightPurple: "234137870477637", - CoralPink: "980963458735625", - Orange: "175615189761153", - Green: "2136751179887052", - LavenderPurple: "2058653964378557", - Red: "2129984390566328", - Yellow: "174636906462322", - TealBlue: "1928399724138152", - Aqua: "417639218648241", - Mango: "930060997172551", - Berry: "164535220883264", - Citrus: "370940413392601", - Candy: "205488546921017", - - /** - * July 06, 2022 - * added by @NTKhang - */ - Earth: "1833559466821043", - Support: "365557122117011", - Music: "339021464972092", - Pride: "1652456634878319", - DoctorStrange: "538280997628317", - LoFi: "1060619084701625", - Sky: "3190514984517598", - LunarNewYear: "357833546030778", - Celebration: "627144732056021", - Chill: "390127158985345", - StrangerThings: "1059859811490132", - Dune: "1455149831518874", - Care: "275041734441112", - Astrology: "3082966625307060", - JBalvin: "184305226956268", - Birthday: "621630955405500", - Cottagecore: "539927563794799", - Ocean: "736591620215564", - Love: "741311439775765", - TieDye: "230032715012014", - Monochrome: "788274591712841", - Default: "3259963564026002", - Rocket: "582065306070020", - Berry2: "724096885023603", - Candy2: "624266884847972", - Unicorn: "273728810607574", - Tropical: "262191918210707", - Maple: "2533652183614000", - Sushi: "909695489504566", - Citrus2: "557344741607350", - Lollipop: "280333826736184", - Shadow: "271607034185782", - Rose: "1257453361255152", - Lavender: "571193503540759", - Tulip: "2873642949430623", - Classic: "3273938616164733", - Peach: "3022526817824329", - Honey: "672058580051520", - Kiwi: "3151463484918004", - Grape: "193497045377796", - - /** - * July 15, 2022 - * added by @NTKhang - */ - NonBinary: "737761000603635", - - /** - * November 25, 2022 - * added by @NTKhang - */ - ThankfulForFriends: "1318983195536293", - Transgender: "504518465021637", - TaylorSwift: "769129927636836", - NationalComingOutDay: "788102625833584", - Autumn: "822549609168155", - Cyberpunk2077: "780962576430091", - - /** - * May 13, 2023 - */ - MothersDay: "1288506208402340", - APAHM: "121771470870245", - Parenthood: "810978360551741", - StarWars: "1438011086532622", - GuardianOfTheGalaxy: "101275642962533", - Bloom: "158263147151440", - BubbleTea: "195296273246380", - Basketball: "6026716157422736", - ElephantsAndFlowers: "693996545771691" - }; -}; diff --git a/fb-chat-api/src/unfriend.js b/fb-chat-api/src/unfriend.js deleted file mode 100644 index 92e27140dd..0000000000 --- a/fb-chat-api/src/unfriend.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function unfriend(userID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - uid: userID, - unref: "bd_friends_tab", - floc: "friends_tab", - "nctr[_mod]": "pagelet_timeline_app_collection_" + (ctx.i_userID || ctx.userID) + ":2356318349:2" - }; - - defaultFuncs - .post( - "https://www.facebook.com/ajax/profile/removefriendconfirm.php", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(null, true); - }) - .catch(function (err) { - log.error("unfriend", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/unsendMessage.js b/fb-chat-api/src/unsendMessage.js deleted file mode 100644 index c44aa0d7a0..0000000000 --- a/fb-chat-api/src/unsendMessage.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; - -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - return function unsendMessage(messageID, callback) { - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, friendList) { - if (err) { - return rejectFunc(err); - } - resolveFunc(friendList); - }; - } - - const form = { - message_id: messageID - }; - - defaultFuncs - .post( - "https://www.facebook.com/messaging/unsend_message/", - ctx.jar, - form - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - return callback(); - }) - .catch(function (err) { - log.error("unsendMessage", err); - return callback(err); - }); - - return returnPromise; - }; -}; diff --git a/fb-chat-api/src/uploadAttachment.js b/fb-chat-api/src/uploadAttachment.js deleted file mode 100644 index cd37986d73..0000000000 --- a/fb-chat-api/src/uploadAttachment.js +++ /dev/null @@ -1,95 +0,0 @@ -const utils = require("../utils"); -const log = require("npmlog"); - -module.exports = function (defaultFuncs, api, ctx) { - function upload(attachments, callback) { - callback = callback || function () { }; - const uploads = []; - - // create an array of promises - for (let i = 0; i < attachments.length; i++) { - if (!utils.isReadableStream(attachments[i])) { - throw { - error: - "Attachment should be a readable stream and not " + - utils.getType(attachments[i]) + - "." - }; - } - - const form = { - upload_1024: attachments[i], - voice_clip: "true" - }; - - uploads.push( - defaultFuncs - .postFormData( - "https://upload.facebook.com/ajax/mercury/upload.php", - ctx.jar, - form, - {} - ) - .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) - .then(function (resData) { - if (resData.error) { - throw resData; - } - - // We have to return the data unformatted unless we want to change it - // back in sendMessage. - return resData.payload.metadata[0]; - }) - ); - } - - // resolve all promises - Promise - .all(uploads) - .then(function (resData) { - callback(null, resData); - }) - .catch(function (err) { - log.error("uploadAttachment", err); - return callback(err); - }); - } - - return function uploadAttachment(attachments, callback) { - if ( - !attachments && - !utils.isReadableStream(attachments) && - !utils.getType(attachments) === "Array" && - (utils.getType(attachments) === "Array" && !attachments.length) - ) - throw { error: "Please pass an attachment or an array of attachments." }; - - let resolveFunc = function () { }; - let rejectFunc = function () { }; - const returnPromise = new Promise(function (resolve, reject) { - resolveFunc = resolve; - rejectFunc = reject; - }); - - if (!callback) { - callback = function (err, info) { - if (err) { - return rejectFunc(err); - } - resolveFunc(info); - }; - } - - if (utils.getType(attachments) !== "Array") - attachments = [attachments]; - - upload(attachments, (err, info) => { - if (err) { - return callback(err); - } - callback(null, info); - }); - - return returnPromise; - }; -}; \ No newline at end of file diff --git a/fb-chat-api/utils.js b/fb-chat-api/utils.js deleted file mode 100644 index 6a3d70ff7b..0000000000 --- a/fb-chat-api/utils.js +++ /dev/null @@ -1,1545 +0,0 @@ -/* eslint-disable no-prototype-builtins */ -"use strict"; - -let request = promisifyPromise(require("request").defaults({ jar: true, proxy: process.env.FB_PROXY })); -const stream = require("stream"); -const log = require("npmlog"); -const querystring = require("querystring"); -const url = require("url"); - -class CustomError extends Error { - constructor(obj) { - if (typeof obj === 'string') - obj = { message: obj }; - if (typeof obj !== 'object' || obj === null) - throw new TypeError('Object required'); - obj.message ? super(obj.message) : super(); - Object.assign(this, obj); - } -} - -function callbackToPromise(func) { - return function (...args) { - return new Promise((resolve, reject) => { - func(...args, (err, data) => { - if (err) - reject(err); - else - resolve(data); - }); - }); - }; -} - -function isHasCallback(func) { - if (typeof func !== "function") - return false; - return func.toString().split("\n")[0].match(/(callback|cb)\s*\)/) !== null; -} - -// replace for bluebird.promisify (but this only applies best to the `request` package) -function promisifyPromise(promise) { - const keys = Object.keys(promise); - let promise_; - if ( - typeof promise === "function" - && isHasCallback(promise) - ) - promise_ = callbackToPromise(promise); - else - promise_ = promise; - - for (const key of keys) { - if (!promise[key]?.toString) - continue; - - if ( - typeof promise[key] === "function" - && isHasCallback(promise[key]) - ) { - promise_[key] = callbackToPromise(promise[key]); - } - else { - promise_[key] = promise[key]; - } - } - - return promise_; -} - -// replace for bluebird.delay -function delay(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -// replace for bluebird.try -function tryPromise(tryFunc) { - return new Promise((resolve, reject) => { - try { - resolve(tryFunc()); - } catch (error) { - reject(error); - } - }); -} - -function setProxy(url) { - if (typeof url == "undefined") - return request = promisifyPromise(require("request").defaults({ - jar: true - })); - return request = promisifyPromise(require("request").defaults({ - jar: true, - proxy: url - })); -} - -function getHeaders(url, options, ctx, customHeader) { - const headers = { - "Content-Type": "application/x-www-form-urlencoded", - Referer: "https://www.facebook.com/", - Host: url.replace("https://", "").split("/")[0], - Origin: "https://www.facebook.com", - "User-Agent": options.userAgent, - Connection: "keep-alive", - "sec-fetch-site": "same-origin" - }; - if (customHeader) { - Object.assign(headers, customHeader); - } - if (ctx && ctx.region) { - headers["X-MSGR-Region"] = ctx.region; - } - - return headers; -} - -function isReadableStream(obj) { - return ( - obj instanceof stream.Stream && - (getType(obj._read) === "Function" || - getType(obj._read) === "AsyncFunction") && - getType(obj._readableState) === "Object" - ); -} - -function get(url, jar, qs, options, ctx) { - // I'm still confused about this - if (getType(qs) === "Object") { - for (const prop in qs) { - if (qs.hasOwnProperty(prop) && getType(qs[prop]) === "Object") { - qs[prop] = JSON.stringify(qs[prop]); - } - } - } - const op = { - headers: getHeaders(url, options, ctx), - timeout: 60000, - qs: qs, - url: url, - method: "GET", - jar: jar, - gzip: true - }; - - return request(op).then(function (res) { - return Array.isArray(res) ? res[0] : res; - }); -} - -function post(url, jar, form, options, ctx, customHeader) { - const op = { - headers: getHeaders(url, options, ctx, customHeader), - timeout: 60000, - url: url, - method: "POST", - form: form, - jar: jar, - gzip: true - }; - - return request(op).then(function (res) { - return Array.isArray(res) ? res[0] : res; - }); -} - -function postFormData(url, jar, form, qs, options, ctx) { - const headers = getHeaders(url, options, ctx); - headers["Content-Type"] = "multipart/form-data"; - const op = { - headers: headers, - timeout: 60000, - url: url, - method: "POST", - formData: form, - qs: qs, - jar: jar, - gzip: true - }; - - return request(op).then(function (res) { - return Array.isArray(res) ? res[0] : res; - }); -} - -function padZeros(val, len) { - val = String(val); - len = len || 2; - while (val.length < len) val = "0" + val; - return val; -} - -function generateThreadingID(clientID) { - const k = Date.now(); - const l = Math.floor(Math.random() * 4294967295); - const m = clientID; - return "<" + k + ":" + l + "-" + m + "@mail.projektitan.com>"; -} - -function binaryToDecimal(data) { - let ret = ""; - while (data !== "0") { - let end = 0; - let fullName = ""; - let i = 0; - for (; i < data.length; i++) { - end = 2 * end + parseInt(data[i], 10); - if (end >= 10) { - fullName += "1"; - end -= 10; - } - else { - fullName += "0"; - } - } - ret = end.toString() + ret; - data = fullName.slice(fullName.indexOf("1")); - } - return ret; -} - -function generateOfflineThreadingID() { - const ret = Date.now(); - const value = Math.floor(Math.random() * 4294967295); - const str = ("0000000000000000000000" + value.toString(2)).slice(-22); - const msgs = ret.toString(2) + str; - return binaryToDecimal(msgs); -} - -let h; -const i = {}; -const j = { - _: "%", - A: "%2", - B: "000", - C: "%7d", - D: "%7b%22", - E: "%2c%22", - F: "%22%3a", - G: "%2c%22ut%22%3a1", - H: "%2c%22bls%22%3a", - I: "%2c%22n%22%3a%22%", - J: "%22%3a%7b%22i%22%3a0%7d", - K: "%2c%22pt%22%3a0%2c%22vis%22%3a", - L: "%2c%22ch%22%3a%7b%22h%22%3a%22", - M: "%7b%22v%22%3a2%2c%22time%22%3a1", - N: ".channel%22%2c%22sub%22%3a%5b", - O: "%2c%22sb%22%3a1%2c%22t%22%3a%5b", - P: "%2c%22ud%22%3a100%2c%22lc%22%3a0", - Q: "%5d%2c%22f%22%3anull%2c%22uct%22%3a", - R: ".channel%22%2c%22sub%22%3a%5b1%5d", - S: "%22%2c%22m%22%3a0%7d%2c%7b%22i%22%3a", - T: "%2c%22blc%22%3a1%2c%22snd%22%3a1%2c%22ct%22%3a", - U: "%2c%22blc%22%3a0%2c%22snd%22%3a1%2c%22ct%22%3a", - V: "%2c%22blc%22%3a0%2c%22snd%22%3a0%2c%22ct%22%3a", - W: "%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a", - X: "%2c%22ri%22%3a0%7d%2c%22state%22%3a%7b%22p%22%3a0%2c%22ut%22%3a1", - Y: - "%2c%22pt%22%3a0%2c%22vis%22%3a1%2c%22bls%22%3a0%2c%22blc%22%3a0%2c%22snd%22%3a1%2c%22ct%22%3a", - Z: - "%2c%22sb%22%3a1%2c%22t%22%3a%5b%5d%2c%22f%22%3anull%2c%22uct%22%3a0%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a" -}; -(function () { - const l = []; - for (const m in j) { - i[j[m]] = m; - l.push(j[m]); - } - l.reverse(); - h = new RegExp(l.join("|"), "g"); -})(); - -function presenceEncode(str) { - return encodeURIComponent(str) - .replace(/([_A-Z])|%../g, function (m, n) { - return n ? "%" + n.charCodeAt(0).toString(16) : m; - }) - .toLowerCase() - .replace(h, function (m) { - return i[m]; - }); -} - -// eslint-disable-next-line no-unused-vars -function presenceDecode(str) { - return decodeURIComponent( - str.replace(/[_A-Z]/g, function (m) { - return j[m]; - }) - ); -} - -function generatePresence(userID) { - const time = Date.now(); - return ( - "E" + - presenceEncode( - JSON.stringify({ - v: 3, - time: parseInt(time / 1000, 10), - user: userID, - state: { - ut: 0, - t2: [], - lm2: null, - uct2: time, - tr: null, - tw: Math.floor(Math.random() * 4294967295) + 1, - at: time - }, - ch: { - ["p_" + userID]: 0 - } - }) - ) - ); -} - -function generateAccessiblityCookie() { - const time = Date.now(); - return encodeURIComponent( - JSON.stringify({ - sr: 0, - "sr-ts": time, - jk: 0, - "jk-ts": time, - kb: 0, - "kb-ts": time, - hcm: 0, - "hcm-ts": time - }) - ); -} - -function getGUID() { - /** @type {number} */ - let sectionLength = Date.now(); - /** @type {string} */ - const id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { - /** @type {number} */ - const r = Math.floor((sectionLength + Math.random() * 16) % 16); - /** @type {number} */ - sectionLength = Math.floor(sectionLength / 16); - /** @type {string} */ - const _guid = (c == "x" ? r : (r & 7) | 8).toString(16); - return _guid; - }); - return id; -} - -function getExtension(original_extension, fullFileName = "") { - if (original_extension) { - return original_extension; - } - else { - const extension = fullFileName.split(".").pop(); - if (extension === fullFileName) { - return ""; - } - else { - return extension; - } - } -} - -function _formatAttachment(attachment1, attachment2) { - // TODO: THIS IS REALLY BAD - // This is an attempt at fixing Facebook's inconsistencies. Sometimes they give us - // two attachment objects, but sometimes only one. They each contain part of the - // data that you'd want so we merge them for convenience. - // Instead of having a bunch of if statements guarding every access to image_data, - // we set it to empty object and use the fact that it'll return undefined. - const fullFileName = attachment1.filename; - const fileSize = Number(attachment1.fileSize || 0); - const durationVideo = attachment1.genericMetadata ? Number(attachment1.genericMetadata.videoLength) : undefined; - const durationAudio = attachment1.genericMetadata ? Number(attachment1.genericMetadata.duration) : undefined; - const mimeType = attachment1.mimeType; - - attachment2 = attachment2 || { id: "", image_data: {} }; - attachment1 = attachment1.mercury || attachment1; - let blob = attachment1.blob_attachment || attachment1.sticker_attachment; - let type = - blob && blob.__typename ? blob.__typename : attachment1.attach_type; - if (!type && attachment1.sticker_attachment) { - type = "StickerAttachment"; - blob = attachment1.sticker_attachment; - } - else if (!type && attachment1.extensible_attachment) { - if ( - attachment1.extensible_attachment.story_attachment && - attachment1.extensible_attachment.story_attachment.target && - attachment1.extensible_attachment.story_attachment.target.__typename && - attachment1.extensible_attachment.story_attachment.target.__typename === "MessageLocation" - ) { - type = "MessageLocation"; - } - else { - type = "ExtensibleAttachment"; - } - - blob = attachment1.extensible_attachment; - } - // TODO: Determine whether "sticker", "photo", "file" etc are still used - // KEEP IN SYNC WITH getThreadHistory - switch (type) { - case "sticker": - return { - type: "sticker", - ID: attachment1.metadata.stickerID.toString(), - url: attachment1.url, - - packID: attachment1.metadata.packID.toString(), - spriteUrl: attachment1.metadata.spriteURI, - spriteUrl2x: attachment1.metadata.spriteURI2x, - width: attachment1.metadata.width, - height: attachment1.metadata.height, - - caption: attachment2.caption, - description: attachment2.description, - - frameCount: attachment1.metadata.frameCount, - frameRate: attachment1.metadata.frameRate, - framesPerRow: attachment1.metadata.framesPerRow, - framesPerCol: attachment1.metadata.framesPerCol, - - stickerID: attachment1.metadata.stickerID.toString(), // @Legacy - spriteURI: attachment1.metadata.spriteURI, // @Legacy - spriteURI2x: attachment1.metadata.spriteURI2x // @Legacy - }; - case "file": - return { - type: "file", - ID: attachment2.id.toString(), - fullFileName: fullFileName, - filename: attachment1.name, - fileSize: fileSize, - original_extension: getExtension(attachment1.original_extension, fullFileName), - mimeType: mimeType, - url: attachment1.url, - - isMalicious: attachment2.is_malicious, - contentType: attachment2.mime_type, - - name: attachment1.name // @Legacy - }; - case "photo": - return { - type: "photo", - ID: attachment1.metadata.fbid.toString(), - filename: attachment1.fileName, - fullFileName: fullFileName, - fileSize: fileSize, - original_extension: getExtension(attachment1.original_extension, fullFileName), - mimeType: mimeType, - thumbnailUrl: attachment1.thumbnail_url, - - previewUrl: attachment1.preview_url, - previewWidth: attachment1.preview_width, - previewHeight: attachment1.preview_height, - - largePreviewUrl: attachment1.large_preview_url, - largePreviewWidth: attachment1.large_preview_width, - largePreviewHeight: attachment1.large_preview_height, - - url: attachment1.metadata.url, // @Legacy - width: attachment1.metadata.dimensions.split(",")[0], // @Legacy - height: attachment1.metadata.dimensions.split(",")[1], // @Legacy - name: fullFileName // @Legacy - }; - case "animated_image": - return { - type: "animated_image", - ID: attachment2.id.toString(), - filename: attachment2.filename, - fullFileName: fullFileName, - original_extension: getExtension(attachment2.original_extension, fullFileName), - mimeType: mimeType, - - previewUrl: attachment1.preview_url, - previewWidth: attachment1.preview_width, - previewHeight: attachment1.preview_height, - - url: attachment2.image_data.url, - width: attachment2.image_data.width, - height: attachment2.image_data.height, - - name: attachment1.name, // @Legacy - facebookUrl: attachment1.url, // @Legacy - thumbnailUrl: attachment1.thumbnail_url, // @Legacy - rawGifImage: attachment2.image_data.raw_gif_image, // @Legacy - rawWebpImage: attachment2.image_data.raw_webp_image, // @Legacy - animatedGifUrl: attachment2.image_data.animated_gif_url, // @Legacy - animatedGifPreviewUrl: attachment2.image_data.animated_gif_preview_url, // @Legacy - animatedWebpUrl: attachment2.image_data.animated_webp_url, // @Legacy - animatedWebpPreviewUrl: attachment2.image_data.animated_webp_preview_url // @Legacy - }; - case "share": - return { - type: "share", - ID: attachment1.share.share_id.toString(), - url: attachment2.href, - - title: attachment1.share.title, - description: attachment1.share.description, - source: attachment1.share.source, - - image: attachment1.share.media.image, - width: attachment1.share.media.image_size.width, - height: attachment1.share.media.image_size.height, - playable: attachment1.share.media.playable, - duration: attachment1.share.media.duration, - - subattachments: attachment1.share.subattachments, - properties: {}, - - animatedImageSize: attachment1.share.media.animated_image_size, // @Legacy - facebookUrl: attachment1.share.uri, // @Legacy - target: attachment1.share.target, // @Legacy - styleList: attachment1.share.style_list // @Legacy - }; - case "video": - return { - type: "video", - ID: attachment1.metadata.fbid.toString(), - filename: attachment1.name, - fullFileName: fullFileName, - original_extension: getExtension(attachment1.original_extension, fullFileName), - mimeType: mimeType, - duration: durationVideo, - - previewUrl: attachment1.preview_url, - previewWidth: attachment1.preview_width, - previewHeight: attachment1.preview_height, - - url: attachment1.url, - width: attachment1.metadata.dimensions.width, - height: attachment1.metadata.dimensions.height, - - videoType: "unknown", - - thumbnailUrl: attachment1.thumbnail_url // @Legacy - }; - case "error": - return { - type: "error", - - // Save error attachments because we're unsure of their format, - // and whether there are cases they contain something useful for debugging. - attachment1: attachment1, - attachment2: attachment2 - }; - case "MessageImage": - return { - type: "photo", - ID: blob.legacy_attachment_id, - filename: blob.filename, - fullFileName: fullFileName, - fileSize: fileSize, - original_extension: getExtension(blob.original_extension, fullFileName), - mimeType: mimeType, - thumbnailUrl: blob.thumbnail.uri, - - previewUrl: blob.preview.uri, - previewWidth: blob.preview.width, - previewHeight: blob.preview.height, - - largePreviewUrl: blob.large_preview.uri, - largePreviewWidth: blob.large_preview.width, - largePreviewHeight: blob.large_preview.height, - - url: blob.large_preview.uri, // @Legacy - width: blob.original_dimensions.x, // @Legacy - height: blob.original_dimensions.y, // @Legacy - name: blob.filename // @Legacy - }; - case "MessageAnimatedImage": - return { - type: "animated_image", - ID: blob.legacy_attachment_id, - filename: blob.filename, - fullFileName: fullFileName, - original_extension: getExtension(blob.original_extension, fullFileName), - mimeType: mimeType, - - previewUrl: blob.preview_image.uri, - previewWidth: blob.preview_image.width, - previewHeight: blob.preview_image.height, - - url: blob.animated_image.uri, - width: blob.animated_image.width, - height: blob.animated_image.height, - - thumbnailUrl: blob.preview_image.uri, // @Legacy - name: blob.filename, // @Legacy - facebookUrl: blob.animated_image.uri, // @Legacy - rawGifImage: blob.animated_image.uri, // @Legacy - animatedGifUrl: blob.animated_image.uri, // @Legacy - animatedGifPreviewUrl: blob.preview_image.uri, // @Legacy - animatedWebpUrl: blob.animated_image.uri, // @Legacy - animatedWebpPreviewUrl: blob.preview_image.uri // @Legacy - }; - case "MessageVideo": - return { - type: "video", - ID: blob.legacy_attachment_id, - filename: blob.filename, - fullFileName: fullFileName, - original_extension: getExtension(blob.original_extension, fullFileName), - fileSize: fileSize, - duration: durationVideo, - mimeType: mimeType, - - previewUrl: blob.large_image.uri, - previewWidth: blob.large_image.width, - previewHeight: blob.large_image.height, - - url: blob.playable_url, - width: blob.original_dimensions.x, - height: blob.original_dimensions.y, - - videoType: blob.video_type.toLowerCase(), - - thumbnailUrl: blob.large_image.uri // @Legacy - }; - case "MessageAudio": - return { - type: "audio", - ID: blob.url_shimhash, - filename: blob.filename, - fullFileName: fullFileName, - fileSize: fileSize, - duration: durationAudio, - original_extension: getExtension(blob.original_extension, fullFileName), - mimeType: mimeType, - - audioType: blob.audio_type, - url: blob.playable_url, - - isVoiceMail: blob.is_voicemail - }; - case "StickerAttachment": - case "Sticker": - return { - type: "sticker", - ID: blob.id, - url: blob.url, - - packID: blob.pack ? blob.pack.id : null, - spriteUrl: blob.sprite_image, - spriteUrl2x: blob.sprite_image_2x, - width: blob.width, - height: blob.height, - - caption: blob.label, - description: blob.label, - - frameCount: blob.frame_count, - frameRate: blob.frame_rate, - framesPerRow: blob.frames_per_row, - framesPerCol: blob.frames_per_column, - - stickerID: blob.id, // @Legacy - spriteURI: blob.sprite_image, // @Legacy - spriteURI2x: blob.sprite_image_2x // @Legacy - }; - case "MessageLocation": - var urlAttach = blob.story_attachment.url; - var mediaAttach = blob.story_attachment.media; - - var u = querystring.parse(url.parse(urlAttach).query).u; - var where1 = querystring.parse(url.parse(u).query).where1; - var address = where1.split(", "); - - var latitude; - var longitude; - - try { - latitude = Number.parseFloat(address[0]); - longitude = Number.parseFloat(address[1]); - } catch (err) { - /* empty */ - } - - var imageUrl; - var width; - var height; - - if (mediaAttach && mediaAttach.image) { - imageUrl = mediaAttach.image.uri; - width = mediaAttach.image.width; - height = mediaAttach.image.height; - } - - return { - type: "location", - ID: blob.legacy_attachment_id, - latitude: latitude, - longitude: longitude, - image: imageUrl, - width: width, - height: height, - url: u || urlAttach, - address: where1, - - facebookUrl: blob.story_attachment.url, // @Legacy - target: blob.story_attachment.target, // @Legacy - styleList: blob.story_attachment.style_list // @Legacy - }; - case "ExtensibleAttachment": - return { - type: "share", - ID: blob.legacy_attachment_id, - url: blob.story_attachment.url, - - title: blob.story_attachment.title_with_entities.text, - description: - blob.story_attachment.description && - blob.story_attachment.description.text, - source: blob.story_attachment.source - ? blob.story_attachment.source.text - : null, - - image: - blob.story_attachment.media && - blob.story_attachment.media.image && - blob.story_attachment.media.image.uri, - width: - blob.story_attachment.media && - blob.story_attachment.media.image && - blob.story_attachment.media.image.width, - height: - blob.story_attachment.media && - blob.story_attachment.media.image && - blob.story_attachment.media.image.height, - playable: - blob.story_attachment.media && - blob.story_attachment.media.is_playable, - duration: - blob.story_attachment.media && - blob.story_attachment.media.playable_duration_in_ms, - playableUrl: - blob.story_attachment.media == null - ? null - : blob.story_attachment.media.playable_url, - - subattachments: blob.story_attachment.subattachments, - properties: blob.story_attachment.properties.reduce(function (obj, cur) { - obj[cur.key] = cur.value.text; - return obj; - }, {}), - - facebookUrl: blob.story_attachment.url, // @Legacy - target: blob.story_attachment.target, // @Legacy - styleList: blob.story_attachment.style_list // @Legacy - }; - case "MessageFile": - return { - type: "file", - ID: blob.message_file_fbid, - fullFileName: fullFileName, - filename: blob.filename, - fileSize: fileSize, - mimeType: blob.mimetype, - original_extension: blob.original_extension || fullFileName.split(".").pop(), - - url: blob.url, - isMalicious: blob.is_malicious, - contentType: blob.content_type, - - name: blob.filename - }; - default: - throw new Error( - "unrecognized attach_file of type " + - type + - "`" + - JSON.stringify(attachment1, null, 4) + - " attachment2: " + - JSON.stringify(attachment2, null, 4) + - "`" - ); - } -} - -function formatAttachment(attachments, attachmentIds, attachmentMap, shareMap) { - attachmentMap = shareMap || attachmentMap; - return attachments - ? attachments.map(function (val, i) { - if ( - !attachmentMap || - !attachmentIds || - !attachmentMap[attachmentIds[i]] - ) { - return _formatAttachment(val); - } - return _formatAttachment(val, attachmentMap[attachmentIds[i]]); - }) - : []; -} - -function formatDeltaMessage(m) { - const md = m.delta.messageMetadata; - - const mdata = - m.delta.data === undefined - ? [] - : m.delta.data.prng === undefined - ? [] - : JSON.parse(m.delta.data.prng); - const m_id = mdata.map(u => u.i); - const m_offset = mdata.map(u => u.o); - const m_length = mdata.map(u => u.l); - const mentions = {}; - for (let i = 0; i < m_id.length; i++) { - mentions[m_id[i]] = m.delta.body.substring( - m_offset[i], - m_offset[i] + m_length[i] - ); - } - return { - type: "message", - senderID: formatID(md.actorFbId.toString()), - body: m.delta.body || "", - threadID: formatID( - (md.threadKey.threadFbId || md.threadKey.otherUserFbId).toString() - ), - messageID: md.messageId, - attachments: (m.delta.attachments || []).map(v => _formatAttachment(v)), - mentions: mentions, - timestamp: md.timestamp, - isGroup: !!md.threadKey.threadFbId, - participantIDs: m.delta.participants || (md.cid ? md.cid.canonicalParticipantFbids : []) || [] - }; -} - -function formatID(id) { - if (id != undefined && id != null) { - return id.replace(/(fb)?id[:.]/, ""); - } - else { - return id; - } -} - -function formatMessage(m) { - const originalMessage = m.message ? m.message : m; - const obj = { - type: "message", - senderName: originalMessage.sender_name, - senderID: formatID(originalMessage.sender_fbid.toString()), - participantNames: originalMessage.group_thread_info - ? originalMessage.group_thread_info.participant_names - : [originalMessage.sender_name.split(" ")[0]], - participantIDs: originalMessage.group_thread_info - ? originalMessage.group_thread_info.participant_ids.map(function (v) { - return formatID(v.toString()); - }) - : [formatID(originalMessage.sender_fbid)], - body: originalMessage.body || "", - threadID: formatID( - ( - originalMessage.thread_fbid || originalMessage.other_user_fbid - ).toString() - ), - threadName: originalMessage.group_thread_info - ? originalMessage.group_thread_info.name - : originalMessage.sender_name, - location: originalMessage.coordinates ? originalMessage.coordinates : null, - messageID: originalMessage.mid - ? originalMessage.mid.toString() - : originalMessage.message_id, - attachments: formatAttachment( - originalMessage.attachments, - originalMessage.attachmentIds, - originalMessage.attachment_map, - originalMessage.share_map - ), - timestamp: originalMessage.timestamp, - timestampAbsolute: originalMessage.timestamp_absolute, - timestampRelative: originalMessage.timestamp_relative, - timestampDatetime: originalMessage.timestamp_datetime, - tags: originalMessage.tags, - reactions: originalMessage.reactions ? originalMessage.reactions : [], - isUnread: originalMessage.is_unread - }; - - if (m.type === "pages_messaging") - obj.pageID = m.realtime_viewer_fbid.toString(); - obj.isGroup = obj.participantIDs.length > 2; - - return obj; -} - -function formatEvent(m) { - const originalMessage = m.message ? m.message : m; - let logMessageType = originalMessage.log_message_type; - let logMessageData; - if (logMessageType === "log:generic-admin-text") { - logMessageData = originalMessage.log_message_data.untypedData; - logMessageType = getAdminTextMessageType( - originalMessage.log_message_data.message_type - ); - } - else { - logMessageData = originalMessage.log_message_data; - } - - return Object.assign(formatMessage(originalMessage), { - type: "event", - logMessageType: logMessageType, - logMessageData: logMessageData, - logMessageBody: originalMessage.log_message_body - }); -} - -function formatHistoryMessage(m) { - switch (m.action_type) { - case "ma-type:log-message": - return formatEvent(m); - default: - return formatMessage(m); - } -} - -// Get a more readable message type for AdminTextMessages -function getAdminTextMessageType(type) { - switch (type) { - case "change_thread_theme": - return "log:thread-color"; - case "change_thread_icon": - case "change_thread_quick_reaction": - return "log:thread-icon"; - case "change_thread_nickname": - return "log:user-nickname"; - case "change_thread_admins": - return "log:thread-admins"; - case "group_poll": - return "log:thread-poll"; - case "change_thread_approval_mode": - return "log:thread-approval-mode"; - case "messenger_call_log": - case "participant_joined_group_call": - return "log:thread-call"; - default: - return type; - } -} - -function formatDeltaEvent(m) { - let logMessageType; - let logMessageData; - - // log:thread-color => {theme_color} - // log:user-nickname => {participant_id, nickname} - // log:thread-icon => {thread_icon} - // log:thread-name => {name} - // log:subscribe => {addedParticipants - [Array]} - // log:unsubscribe => {leftParticipantFbId} - - switch (m.class) { - case "AdminTextMessage": - logMessageData = m.untypedData; - logMessageType = getAdminTextMessageType(m.type); - break; - case "ThreadName": - logMessageType = "log:thread-name"; - logMessageData = { name: m.name }; - break; - case "ParticipantsAddedToGroupThread": - logMessageType = "log:subscribe"; - logMessageData = { addedParticipants: m.addedParticipants }; - break; - case "ParticipantLeftGroupThread": - logMessageType = "log:unsubscribe"; - logMessageData = { leftParticipantFbId: m.leftParticipantFbId }; - break; - case "ApprovalQueue": - logMessageType = "log:approval-queue"; - logMessageData = { - approvalQueue: { - action: m.action, - recipientFbId: m.recipientFbId, - requestSource: m.requestSource, - ...m.messageMetadata - } - }; - } - - return { - type: "event", - threadID: formatID( - ( - m.messageMetadata.threadKey.threadFbId || - m.messageMetadata.threadKey.otherUserFbId - ).toString() - ), - messageID: m.messageMetadata.messageId.toString(), - logMessageType: logMessageType, - logMessageData: logMessageData, - logMessageBody: m.messageMetadata.adminText, - timestamp: m.messageMetadata.timestamp, - author: m.messageMetadata.actorFbId, - participantIDs: (m.participants || []).map(p => p.toString()) - }; -} - -function formatTyp(event) { - return { - isTyping: !!event.st, - from: event.from.toString(), - threadID: formatID( - (event.to || event.thread_fbid || event.from).toString() - ), - // When receiving typ indication from mobile, `from_mobile` isn't set. - // If it is, we just use that value. - fromMobile: event.hasOwnProperty("from_mobile") ? event.from_mobile : true, - userID: (event.realtime_viewer_fbid || event.from).toString(), - type: "typ" - }; -} - -function formatDeltaReadReceipt(delta) { - // otherUserFbId seems to be used as both the readerID and the threadID in a 1-1 chat. - // In a group chat actorFbId is used for the reader and threadFbId for the thread. - return { - reader: (delta.threadKey.otherUserFbId || delta.actorFbId).toString(), - time: delta.actionTimestampMs, - threadID: formatID( - (delta.threadKey.otherUserFbId || delta.threadKey.threadFbId).toString() - ), - type: "read_receipt" - }; -} - -function formatReadReceipt(event) { - return { - reader: event.reader.toString(), - time: event.time, - threadID: formatID((event.thread_fbid || event.reader).toString()), - type: "read_receipt" - }; -} - -function formatRead(event) { - return { - threadID: formatID( - ( - (event.chat_ids && event.chat_ids[0]) || - (event.thread_fbids && event.thread_fbids[0]) - ).toString() - ), - time: event.timestamp, - type: "read" - }; -} - -function getFrom(str, startToken, endToken) { - const start = str.indexOf(startToken) + startToken.length; - if (start < startToken.length) return ""; - - const lastHalf = str.substring(start); - const end = lastHalf.indexOf(endToken); - if (end === -1) { - throw new Error( - "Could not find endTime `" + endToken + "` in the given string." - ); - } - return lastHalf.substring(0, end); -} - -function makeParsable(html) { - const withoutForLoop = html.replace(/for\s*\(\s*;\s*;\s*\)\s*;\s*/, ""); - - // (What the fuck FB, why windows style newlines?) - // So sometimes FB will send us base multiple objects in the same response. - // They're all valid JSON, one after the other, at the top level. We detect - // that and make it parse-able by JSON.parse. - // Ben - July 15th 2017 - // - // It turns out that Facebook may insert random number of spaces before - // next object begins (issue #616) - // rav_kr - 2018-03-19 - const maybeMultipleObjects = withoutForLoop.split(/\}\r\n *\{/); - if (maybeMultipleObjects.length === 1) return maybeMultipleObjects; - - return "[" + maybeMultipleObjects.join("},{") + "]"; -} - -function arrToForm(form) { - return arrayToObject( - form, - function (v) { - return v.name; - }, - function (v) { - return v.val; - } - ); -} - -function arrayToObject(arr, getKey, getValue) { - return arr.reduce(function (acc, val) { - acc[getKey(val)] = getValue(val); - return acc; - }, {}); -} - -function getSignatureID() { - return Math.floor(Math.random() * 2147483648).toString(16); -} - -function generateTimestampRelative() { - const d = new Date(); - return d.getHours() + ":" + padZeros(d.getMinutes()); -} - -function makeDefaults(html, userID, ctx) { - let reqCounter = 1; - const fb_dtsg = getFrom(html, 'name="fb_dtsg" value="', '"'); - - // @Hack Ok we've done hacky things, this is definitely on top 5. - // We totally assume the object is flat and try parsing until a }. - // If it works though it's cool because we get a bunch of extra data things. - // - // Update: we don't need this. Leaving it in in case we ever do. - // Ben - July 15th 2017 - - // var siteData = getFrom(html, "[\"SiteData\",[],", "},"); - // try { - // siteData = JSON.parse(siteData + "}"); - // } catch(e) { - // log.warn("makeDefaults", "Couldn't parse SiteData. Won't have access to some variables."); - // siteData = {}; - // } - - let ttstamp = "2"; - for (let i = 0; i < fb_dtsg.length; i++) { - ttstamp += fb_dtsg.charCodeAt(i); - } - const revision = getFrom(html, 'revision":', ","); - - function mergeWithDefaults(obj) { - // @TODO This is missing a key called __dyn. - // After some investigation it seems like __dyn is some sort of set that FB - // calls BitMap. It seems like certain responses have a "define" key in the - // res.jsmods arrays. I think the code iterates over those and calls `set` - // on the bitmap for each of those keys. Then it calls - // bitmap.toCompressedString() which returns what __dyn is. - // - // So far the API has been working without this. - // - // Ben - July 15th 2017 - const newObj = { - __user: userID, - __req: (reqCounter++).toString(36), - __rev: revision, - __a: 1, - // __af: siteData.features, - fb_dtsg: ctx.fb_dtsg ? ctx.fb_dtsg : fb_dtsg, - jazoest: ctx.ttstamp ? ctx.ttstamp : ttstamp - // __spin_r: siteData.__spin_r, - // __spin_b: siteData.__spin_b, - // __spin_t: siteData.__spin_t, - }; - - // @TODO this is probably not needed. - // Ben - July 15th 2017 - // if (siteData.be_key) { - // newObj[siteData.be_key] = siteData.be_mode; - // } - // if (siteData.pkg_cohort_key) { - // newObj[siteData.pkg_cohort_key] = siteData.pkg_cohort; - // } - - if (!obj) return newObj; - - for (const prop in obj) { - if (obj.hasOwnProperty(prop)) { - if (!newObj[prop]) { - newObj[prop] = obj[prop]; - } - } - } - - return newObj; - } - - function postWithDefaults(url, jar, form, ctxx, customHeader = {}) { - return post(url, jar, mergeWithDefaults(form), ctx.globalOptions, ctxx || ctx, customHeader); - } - - function getWithDefaults(url, jar, qs, ctxx, customHeader = {}) { - return get(url, jar, mergeWithDefaults(qs), ctx.globalOptions, ctxx || ctx, customHeader); - } - - function postFormDataWithDefault(url, jar, form, qs, ctxx) { - return postFormData( - url, - jar, - mergeWithDefaults(form), - mergeWithDefaults(qs), - ctx.globalOptions, - ctxx || ctx - ); - } - - return { - get: getWithDefaults, - post: postWithDefaults, - postFormData: postFormDataWithDefault - }; -} - -function parseAndCheckLogin(ctx, defaultFuncs, retryCount, sourceCall) { - if (retryCount == undefined) { - retryCount = 0; - } - if (sourceCall == undefined) { - try { - throw new Error(); - } - catch (e) { - sourceCall = e; - } - } - return function (data) { - return tryPromise(function () { - log.verbose("parseAndCheckLogin", data.body); - if (data.statusCode >= 500 && data.statusCode < 600) { - if (retryCount >= 5) { - throw new CustomError({ - message: "Request retry failed. Check the `res` and `statusCode` property on this error.", - statusCode: data.statusCode, - res: data.body, - error: "Request retry failed. Check the `res` and `statusCode` property on this error.", - sourceCall: sourceCall - }); - } - retryCount++; - const retryTime = Math.floor(Math.random() * 5000); - log.warn( - "parseAndCheckLogin", - "Got status code " + - data.statusCode + - " - " + - retryCount + - ". attempt to retry in " + - retryTime + - " milliseconds..." - ); - const url = - data.request.uri.protocol + - "//" + - data.request.uri.hostname + - data.request.uri.pathname; - if ( - data.request.headers["Content-Type"].split(";")[0] === - "multipart/form-data" - ) { - return delay(retryTime) - .then(function () { - return defaultFuncs.postFormData( - url, - ctx.jar, - data.request.formData, - {} - ); - }) - .then(parseAndCheckLogin(ctx, defaultFuncs, retryCount, sourceCall)); - } - else { - return delay(retryTime) - .then(function () { - return defaultFuncs.post(url, ctx.jar, data.request.formData); - }) - .then(parseAndCheckLogin(ctx, defaultFuncs, retryCount, sourceCall)); - } - } - if (data.statusCode !== 200) - throw new CustomError({ - message: "parseAndCheckLogin got status code: " + data.statusCode + ". Bailing out of trying to parse response.", - statusCode: data.statusCode, - res: data.body, - error: "parseAndCheckLogin got status code: " + data.statusCode + ". Bailing out of trying to parse response.", - sourceCall: sourceCall - }); - - let res = null; - try { - res = JSON.parse(makeParsable(data.body)); - } catch (e) { - throw new CustomError({ - message: "JSON.parse error. Check the `detail` property on this error.", - detail: e, - res: data.body, - error: "JSON.parse error. Check the `detail` property on this error.", - sourceCall: sourceCall - }); - } - - // In some cases the response contains only a redirect URL which should be followed - if (res.redirect && data.request.method === "GET") { - return defaultFuncs - .get(res.redirect, ctx.jar) - .then(parseAndCheckLogin(ctx, defaultFuncs, undefined, sourceCall)); - } - - // TODO: handle multiple cookies? - if ( - res.jsmods && - res.jsmods.require && - Array.isArray(res.jsmods.require[0]) && - res.jsmods.require[0][0] === "Cookie" - ) { - res.jsmods.require[0][3][0] = res.jsmods.require[0][3][0].replace( - "_js_", - "" - ); - const cookie = formatCookie(res.jsmods.require[0][3], "facebook"); - const cookie2 = formatCookie(res.jsmods.require[0][3], "messenger"); - ctx.jar.setCookie(cookie, "https://www.facebook.com"); - ctx.jar.setCookie(cookie2, "https://www.messenger.com"); - } - - // On every request we check if we got a DTSG and we mutate the context so that we use the latest - // one for the next requests. - if (res.jsmods && Array.isArray(res.jsmods.require)) { - const arr = res.jsmods.require; - for (const i in arr) { - if (arr[i][0] === "DTSG" && arr[i][1] === "setToken") { - ctx.fb_dtsg = arr[i][3][0]; - - // Update ttstamp since that depends on fb_dtsg - ctx.ttstamp = "2"; - for (let j = 0; j < ctx.fb_dtsg.length; j++) { - ctx.ttstamp += ctx.fb_dtsg.charCodeAt(j); - } - } - } - } - - if (res.error === 1357001) { - throw new CustomError({ - message: "Facebook blocked login. Please visit https://facebook.com and check your account.", - error: "Not logged in.", - res: res, - statusCode: data.statusCode, - sourceCall: sourceCall - }); - } - return res; - }); - }; -} - -function checkLiveCookie(ctx, defaultFuncs) { - return defaultFuncs - .get("https://m.facebook.com/me", ctx.jar) - .then(function (res) { - if (res.body.indexOf(ctx.i_userID || ctx.userID) === -1) { - throw new CustomError({ - message: "Not logged in.", - error: "Not logged in." - }); - } - return true; - }); -} - -function saveCookies(jar) { - return function (res) { - const cookies = res.headers["set-cookie"] || []; - cookies.forEach(function (c) { - if (c.indexOf(".facebook.com") > -1) { - jar.setCookie(c, "https://www.facebook.com"); - } - const c2 = c.replace(/domain=\.facebook\.com/, "domain=.messenger.com"); - jar.setCookie(c2, "https://www.messenger.com"); - }); - return res; - }; -} - -const NUM_TO_MONTH = [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" -]; -const NUM_TO_DAY = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; -function formatDate(date) { - let d = date.getUTCDate(); - d = d >= 10 ? d : "0" + d; - let h = date.getUTCHours(); - h = h >= 10 ? h : "0" + h; - let m = date.getUTCMinutes(); - m = m >= 10 ? m : "0" + m; - let s = date.getUTCSeconds(); - s = s >= 10 ? s : "0" + s; - return ( - NUM_TO_DAY[date.getUTCDay()] + - ", " + - d + - " " + - NUM_TO_MONTH[date.getUTCMonth()] + - " " + - date.getUTCFullYear() + - " " + - h + - ":" + - m + - ":" + - s + - " GMT" - ); -} - -function formatCookie(arr, url) { - return ( - arr[0] + "=" + arr[1] + "; Path=" + arr[3] + "; Domain=" + url + ".com" - ); -} - -function formatThread(data) { - return { - threadID: formatID(data.thread_fbid.toString()), - participants: data.participants.map(formatID), - participantIDs: data.participants.map(formatID), - name: data.name, - nicknames: data.custom_nickname, - snippet: data.snippet, - snippetAttachments: data.snippet_attachments, - snippetSender: formatID((data.snippet_sender || "").toString()), - unreadCount: data.unread_count, - messageCount: data.message_count, - imageSrc: data.image_src, - timestamp: data.timestamp, - serverTimestamp: data.server_timestamp, // what is this? - muteUntil: data.mute_until, - isCanonicalUser: data.is_canonical_user, - isCanonical: data.is_canonical, - isSubscribed: data.is_subscribed, - folder: data.folder, - isArchived: data.is_archived, - recipientsLoadable: data.recipients_loadable, - hasEmailParticipant: data.has_email_participant, - readOnly: data.read_only, - canReply: data.can_reply, - cannotReplyReason: data.cannot_reply_reason, - lastMessageTimestamp: data.last_message_timestamp, - lastReadTimestamp: data.last_read_timestamp, - lastMessageType: data.last_message_type, - emoji: data.custom_like_icon, - color: data.custom_color, - adminIDs: data.admin_ids, - threadType: data.thread_type - }; -} - -function getType(obj) { - return Object.prototype.toString.call(obj).slice(8, -1); -} - -function formatProxyPresence(presence, userID) { - if (presence.lat === undefined || presence.p === undefined) return null; - return { - type: "presence", - timestamp: presence.lat * 1000, - userID: userID, - statuses: presence.p - }; -} - -function formatPresence(presence, userID) { - return { - type: "presence", - timestamp: presence.la * 1000, - userID: userID, - statuses: presence.a - }; -} - -function decodeClientPayload(payload) { - /* - Special function which Client using to "encode" clients JSON payload - */ - return JSON.parse(String.fromCharCode.apply(null, payload)); -} - -function getAppState(jar) { - return jar - .getCookies("https://www.facebook.com") - .concat(jar.getCookies("https://facebook.com")) - .concat(jar.getCookies("https://www.messenger.com")); -} -module.exports = { - CustomError, - isReadableStream, - get, - post, - postFormData, - generateThreadingID, - generateOfflineThreadingID, - getGUID, - getFrom, - makeParsable, - arrToForm, - getSignatureID, - getJar: request.jar, - generateTimestampRelative, - makeDefaults, - parseAndCheckLogin, - saveCookies, - getType, - _formatAttachment, - formatHistoryMessage, - formatID, - formatMessage, - formatDeltaEvent, - formatDeltaMessage, - formatProxyPresence, - formatPresence, - formatTyp, - formatDeltaReadReceipt, - formatCookie, - formatThread, - formatReadReceipt, - formatRead, - generatePresence, - generateAccessiblityCookie, - formatDate, - decodeClientPayload, - getAppState, - getAdminTextMessageType, - setProxy, - checkLiveCookie -}; - diff --git a/fca-config.json b/fca-config.json new file mode 100644 index 0000000000..97f48ed41c --- /dev/null +++ b/fca-config.json @@ -0,0 +1,7 @@ +{ + "autoUpdate": true, + "mqtt": { + "enabled": true, + "reconnectInterval": 3600 + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9a860b9685..05ae207f5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,30 +1,25 @@ { "name": "goat-bot-v2", - "version": "1.5.32", + "version": "1.5.35", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "goat-bot-v2", - "version": "1.5.32", + "version": "1.5.35", "license": "MIT", "dependencies": { "@distube/ytdl-core": "^4.13.3", "axios": "^1.4.0", - "bcrypt": "^5.0.1", "canvas": "^2.9.1", "cheerio": "^1.0.0-rc.12", "child_process": "^1.0.2", - "connect-flash": "^0.1.1", - "cookie-parser": "^1.4.6", "eta": "^1.12.3", "express": "^4.18.1", - "express-fileupload": "^1.4.0", - "express-rate-limit": "^6.5.2", - "express-session": "^1.17.3", + "fluent-ffmpeg": "^2.1.3", "form-data": "^4.0.0", + "fs": "^0.0.1-security", "fs-extra": "^11.1.0", - "googleapis": "^100.0.0", "gradient-string": "^2.0.2", "graphql-query-to-json": "^2.0.1", "https": "^1.0.0", @@ -32,12 +27,10 @@ "moment-timezone": "^0.5.34", "mongoose": "^6.3.1", "mqtt": "^4.3.7", + "nexus-fca": "github:tas33n/nexus-fca", "node-cron": "^3.0.2", - "nodemailer": "^6.7.5", "npmlog": "^7.0.1", "ora": "^5.4.1", - "passport": "^0.6.0", - "passport-local": "^1.0.0", "path": "^0.12.7", "qrcode-reader": "^1.0.4", "qs": "^6.11.0", @@ -70,8 +63,7 @@ "terser": "^5.15.0" }, "engines": { - "node": "16.x", - "npm": ">=7.0.0" + "node": "20.x" } }, "node_modules/@aws-crypto/ie11-detection": { @@ -2118,11 +2110,35 @@ "debug": "^4.3.1" } }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -2138,6 +2154,18 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "node_modules/@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", @@ -2152,19 +2180,35 @@ } }, "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", "dependencies": { "@types/ms": "*" } }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -2172,24 +2216,35 @@ "dev": true }, "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" }, "node_modules/@types/node": { "version": "18.15.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/tinycolor2": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.3.tgz", "integrity": "sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==" }, "node_modules/@types/validator": { - "version": "13.7.15", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.15.tgz", - "integrity": "sha512-yeinDVQunb03AEP8luErFcyf/7Lf7AzKCD0NXfgVoGCCQDNpZET8Jgq74oBgqKld3hafLbfzt/3inUdQvaFeXQ==" + "version": "13.15.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz", + "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==", + "license": "MIT" }, "node_modules/@types/webidl-conversions": { "version": "7.0.0", @@ -2928,6 +2983,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, "engines": { "node": ">=8" } @@ -3060,12 +3116,13 @@ } }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -3149,19 +3206,6 @@ "node": ">=10.0.0" } }, - "node_modules/bcrypt": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", - "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.10", - "node-addon-api": "^5.0.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -3170,14 +3214,6 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -3187,6 +3223,15 @@ "node": ">=8" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -3222,6 +3267,12 @@ "node": ">= 0.8.0" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, "node_modules/bodec": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", @@ -3344,11 +3395,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -3414,6 +3460,33 @@ "node": ">=10" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -3426,6 +3499,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3721,6 +3807,27 @@ "node": ">=0.10.0" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-response/node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -3831,14 +3938,6 @@ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, - "node_modules/connect-flash": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", - "integrity": "sha512-2rcfELQt/ZMP+SM/pG8PyhJRaLKp+6Hk2IUBNkEit09X+vwn3QsAL3ZbYtxUn7NVPzbMTSLRDhqe0B/eh30RYA==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -3881,18 +3980,6 @@ "node": ">= 0.6" } }, - "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", - "dependencies": { - "cookie": "0.4.1", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -4072,6 +4159,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4089,6 +4185,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -4233,19 +4338,35 @@ } }, "node_modules/dottie": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.3.tgz", - "integrity": "sha512-4liA0PuRkZWQFQjwBypdxPfZaRWiv5tkhMXY2hzsa2pNf5s7U3m9cwUchfNKe8wZQxdGPQQzO6Rm2uGe0rvohQ==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "stream-shift": "^1.0.2" } }, "node_modules/duplexify/node_modules/readable-stream": { @@ -4270,14 +4391,6 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4487,6 +4600,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -4507,15 +4638,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -6166,6 +6310,15 @@ "node": ">=0.8.x" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -6207,67 +6360,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express-fileupload": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz", - "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/express-rate-limit": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz", - "integrity": "sha512-vhwIdRoqcYB/72TK3tRZI+0ttS8Ytrk24GfmsxDXK9o9IhHNO5bXRiXQSExPQ4GbaE5tvIS7j1SGrxsuWs+sGA==", - "engines": { - "node": ">= 12.9.0" - }, - "peerDependencies": { - "express": "^4 || ^5" - } - }, - "node_modules/express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", - "dependencies": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.1", - "uid-safe": "~2.1.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express-session/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express-session/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express-session/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/express/node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -6370,11 +6462,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" - }, "node_modules/fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -6442,6 +6529,12 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -6519,16 +6612,48 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/fluent-ffmpeg": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", + "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "async": "^0.2.9", + "which": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/fluent-ffmpeg/node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "node_modules/fluent-ffmpeg/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6577,12 +6702,15 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -6605,6 +6733,18 @@ "node": ">= 0.6" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", + "license": "ISC" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, "node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -6649,9 +6789,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -6704,44 +6848,56 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/gaxios": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", - "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "gaxios": "^4.0.0", - "json-bigint": "^1.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { @@ -6827,6 +6983,12 @@ "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", "dev": true }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -6888,77 +7050,68 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/google-auth-library": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", - "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==", - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^4.0.0", - "gcp-metadata": "^4.2.0", - "gtoken": "^5.0.4", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/google-p12-pem": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", - "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/googleapis": { - "version": "100.0.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-100.0.0.tgz", - "integrity": "sha512-RToFQGY54B756IDbjdyjb1vWFmn03bYpXHB2lIf0eq2UBYsIbYOLZ0kqSomfJnpclEukwEmMF7Jn6Wsev871ew==", + "node_modules/got/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { - "google-auth-library": "^7.0.2", - "googleapis-common": "^5.0.2" + "mimic-response": "^3.1.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/googleapis-common": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-5.1.0.tgz", - "integrity": "sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA==", - "dependencies": { - "extend": "^3.0.2", - "gaxios": "^4.0.0", - "google-auth-library": "^7.14.0", - "qs": "^6.7.0", - "url-template": "^2.0.8", - "uuid": "^8.0.0" }, - "engines": { - "node": ">=10.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "node_modules/got/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { @@ -7005,19 +7158,6 @@ "lodash.mapvalues": "^4.6.0" } }, - "node_modules/gtoken": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", - "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", - "dependencies": { - "gaxios": "^4.0.0", - "google-p12-pem": "^3.1.3", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -7043,6 +7183,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -7092,9 +7233,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7103,12 +7245,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7122,6 +7264,18 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/help-me": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", @@ -7165,8 +7319,7 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "optional": true + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-errors": { "version": "2.0.0", @@ -7211,6 +7364,19 @@ "npm": ">=1.3.7" } }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/httpreq": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.5.2.tgz", @@ -7358,8 +7524,7 @@ "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inquirer": { "version": "7.3.3", @@ -7790,17 +7955,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -7918,8 +8072,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", @@ -8076,13 +8229,11 @@ "node": ">=4" } }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dependencies": { - "bignumber.js": "^9.0.0" - } + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", @@ -8228,9 +8379,10 @@ } }, "node_modules/jssha": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.0.tgz", - "integrity": "sha512-w9OtT4ALL+fbbwG3gw7erAO0jvS5nfvrukGPMWIAoea359B26ALXGpzy4YJSp9yGnpUvuvOw1nSjSoHDfWSr1w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.1.tgz", + "integrity": "sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==", + "license": "BSD-3-Clause", "engines": { "node": "*" } @@ -8256,25 +8408,6 @@ "node": ">=4.0" } }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, "node_modules/kareem": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", @@ -8283,6 +8416,15 @@ "node": ">=12.0.0" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", @@ -8462,6 +8604,15 @@ "loose-envify": "cli.js" } }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -8546,6 +8697,15 @@ "node": ">=0.10.0" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -8785,6 +8945,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, "node_modules/module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", @@ -8871,9 +9037,10 @@ } }, "node_modules/mqtt": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz", - "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.8.tgz", + "integrity": "sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==", + "license": "MIT", "dependencies": { "commist": "^1.0.0", "concat-stream": "^2.0.0", @@ -8991,6 +9158,12 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -9040,16 +9213,118 @@ "node": ">= 0.4.0" } }, + "node_modules/nexus-fca": { + "version": "3.0.5", + "resolved": "git+ssh://git@github.com/tas33n/nexus-fca.git#5a506fa85da4e5fabb04dd18aa7393fadcbe3c15", + "license": "MIT", + "dependencies": { + "axios": "^1.8.4", + "bluebird": "^3.7.2", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.10", + "duplexify": "^4.1.3", + "got": "^11.8.6", + "gradient-string": "^2.0.2", + "https-proxy-agent": "^7.0.5", + "lodash": "^4.17.21", + "mqtt": "^4.3.8", + "node-cache": "^5.1.2", + "npmlog": "^7.0.1", + "request": "^2.88.2", + "semver": "^7.5.0", + "sequelize": "^6.37.6", + "sqlite": "^5.1.1", + "sqlite3": "^5.1.7", + "totp-generator": "^1.0.0", + "uuid": "^9.0.1", + "ws": "^8.18.1" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/nexus-fca/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/nexus-fca/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/nexus-fca/node_modules/totp-generator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/totp-generator/-/totp-generator-1.0.0.tgz", + "integrity": "sha512-Iu/1Lk60/MH8FE+5cDWPiGbwKK1hxzSq+KT9oSqhZ1BEczGIKGcN50bP0WMLiIZKRg7t29iWLxw6f81TICQdoA==", + "license": "MIT", + "dependencies": { + "jssha": "^3.3.1" + } + }, + "node_modules/nexus-fca/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + "node_modules/node-abi": { + "version": "3.77.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.77.0.tgz", + "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "license": "MIT", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/node-cache/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } }, "node_modules/node-cron": { "version": "3.0.2", @@ -9100,14 +9375,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-gyp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", @@ -9193,14 +9460,6 @@ "node": ">= 6" } }, - "node_modules/nodemailer": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", - "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -9224,6 +9483,18 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-size": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/npm-size/-/npm-size-1.3.0.tgz", @@ -9534,14 +9805,6 @@ "node": ">= 0.8" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -9627,6 +9890,15 @@ "node": ">=0.10.0" } }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -9806,42 +10078,6 @@ "node": ">= 0.8" } }, - "node_modules/passport": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", - "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", - "dependencies": { - "passport-strategy": "1.x.x", - "pause": "0.0.1", - "utils-merge": "^1.0.1" - }, - "engines": { - "node": ">= 0.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jaredhanson" - } - }, - "node_modules/passport-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "integrity": "sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==", - "dependencies": { - "passport-strategy": "1.x.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/passport-strategy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -9901,20 +10137,16 @@ "inherits": "2.0.3" } }, - "node_modules/pause": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" - }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", + "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", + "license": "MIT" }, "node_modules/picomatch": { "version": "2.3.1", @@ -10111,6 +10343,84 @@ "node": ">=4" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prebuild-install/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prebuild-install/node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10558,6 +10868,18 @@ } ] }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/radio-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/radio-symbol/-/radio-symbol-2.0.0.tgz", @@ -10572,14 +10894,6 @@ "node": ">=0.10.0" } }, - "node_modules/random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -10602,6 +10916,30 @@ "node": ">= 0.8" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -10929,6 +11267,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -10938,6 +11282,18 @@ "node": ">=4" } }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -11185,31 +11541,32 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/sequelize": { - "version": "6.31.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.31.0.tgz", - "integrity": "sha512-nCPVtv+QydBmb3Us2jCNAr1Dx3gST83VZxxrUQn/JAVFCOrmYOgUaPUz5bevummyNf30zfHsZhIKYAOD3ULfTA==", + "version": "6.37.7", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.7.tgz", + "integrity": "sha512-mCnh83zuz7kQxxJirtFD7q6Huy6liPanI67BSlbzSYgVNl5eXVdE2CN1FuAeZwG1SNpGsNRCV+bJAVVnykZAFA==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/sequelize" } ], + "license": "MIT", "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", "sequelize-pool": "^7.1.0", "toposort-class": "^1.0.1", "uuid": "^8.3.2", - "validator": "^13.7.0", + "validator": "^13.9.0", "wkx": "^0.5.0" }, "engines": { @@ -11253,6 +11610,18 @@ "node": ">= 10.0.0" } }, + "node_modules/sequelize/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -11591,14 +11960,22 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "node_modules/sqlite": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-5.1.1.tgz", + "integrity": "sha512-oBkezXa2hnkfuJwUo44Hl9hS3er+YFtueifoajrgidvqsJRQFpc5fKoAkAor1O5ZnLoa28GBScfHXs8j0K358Q==", + "license": "MIT" + }, "node_modules/sqlite3": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", - "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^4.2.0", + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", "tar": "^6.1.11" }, "optionalDependencies": { @@ -11614,9 +11991,10 @@ } }, "node_modules/sqlite3/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" }, "node_modules/sshpk": { "version": "1.17.0", @@ -11762,9 +12140,10 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" }, "node_modules/streamsearch": { "version": "1.1.0", @@ -12066,6 +12445,54 @@ "node": ">=10" } }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/tar/node_modules/minipass": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", @@ -12409,17 +12836,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, - "node_modules/uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "dependencies": { - "random-bytes": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -12507,11 +12923,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -12868,6 +13279,27 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -14584,11 +15016,24 @@ "debug": "^4.3.1" } }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, "@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -14601,6 +15046,17 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", @@ -14615,19 +15071,32 @@ } }, "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "requires": { "@types/ms": "*" } }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -14635,24 +15104,32 @@ "dev": true }, "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, "@types/node": { "version": "18.15.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" }, + "@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "requires": { + "@types/node": "*" + } + }, "@types/tinycolor2": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.3.tgz", "integrity": "sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==" }, "@types/validator": { - "version": "13.7.15", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.15.tgz", - "integrity": "sha512-yeinDVQunb03AEP8luErFcyf/7Lf7AzKCD0NXfgVoGCCQDNpZET8Jgq74oBgqKld3hafLbfzt/3inUdQvaFeXQ==" + "version": "13.15.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz", + "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==" }, "@types/webidl-conversions": { "version": "7.0.0", @@ -15217,7 +15694,8 @@ "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true }, "asn1": { "version": "0.2.6", @@ -15322,12 +15800,12 @@ "dev": true }, "axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -15383,15 +15861,6 @@ "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", "dev": true }, - "bcrypt": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", - "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==", - "requires": { - "@mapbox/node-pre-gyp": "^1.0.10", - "node-addon-api": "^5.0.0" - } - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -15400,17 +15869,20 @@ "tweetnacl": "^0.14.3" } }, - "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -15439,6 +15911,11 @@ "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", "dev": true }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "bodec": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", @@ -15533,11 +16010,6 @@ "ieee754": "^1.1.13" } }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -15590,6 +16062,25 @@ } } }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -15599,6 +16090,15 @@ "get-intrinsic": "^1.0.2" } }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -15825,6 +16325,21 @@ "shallow-clone": "^1.0.0" } }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + }, + "dependencies": { + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + } + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -15916,11 +16431,6 @@ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, - "connect-flash": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", - "integrity": "sha512-2rcfELQt/ZMP+SM/pG8PyhJRaLKp+6Hk2IUBNkEit09X+vwn3QsAL3ZbYtxUn7NVPzbMTSLRDhqe0B/eh30RYA==" - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -15954,15 +16464,6 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, - "cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", - "requires": { - "cookie": "0.4.1", - "cookie-signature": "1.0.6" - } - }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -16101,6 +16602,11 @@ "which-typed-array": "^1.1.9" } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -16115,6 +16621,11 @@ "clone": "^1.0.2" } }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, "define-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", @@ -16213,19 +16724,29 @@ } }, "dottie": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.3.tgz", - "integrity": "sha512-4liA0PuRkZWQFQjwBypdxPfZaRWiv5tkhMXY2hzsa2pNf5s7U3m9cwUchfNKe8wZQxdGPQQzO6Rm2uGe0rvohQ==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } }, "duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "requires": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "stream-shift": "^1.0.2" }, "dependencies": { "readable-stream": { @@ -16249,14 +16770,6 @@ "safer-buffer": "^2.1.0" } }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -16422,6 +16935,16 @@ "which-typed-array": "^1.1.9" } }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -16439,15 +16962,23 @@ "stop-iteration-iterator": "^1.0.0" } }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, "es-shim-unscopables": { @@ -17672,6 +18203,11 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -17732,58 +18268,9 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "express-fileupload": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.4.0.tgz", - "integrity": "sha512-RjzLCHxkv3umDeZKeFeMg8w7qe0V09w3B7oGZprr/oO2H/ISCgNzuqzn7gV3HRWb37GjRk429CCpSLS2KNTqMQ==", - "requires": { - "busboy": "^1.6.0" - } - }, - "express-rate-limit": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz", - "integrity": "sha512-vhwIdRoqcYB/72TK3tRZI+0ttS8Ytrk24GfmsxDXK9o9IhHNO5bXRiXQSExPQ4GbaE5tvIS7j1SGrxsuWs+sGA==", - "requires": {} - }, - "express-session": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", - "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", - "requires": { - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.1", - "uid-safe": "~2.1.5" - }, - "dependencies": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -17845,11 +18332,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" - }, "fast-xml-parser": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", @@ -17900,6 +18382,11 @@ "flat-cache": "^3.0.4" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -17964,10 +18451,34 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "fluent-ffmpeg": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", + "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==", + "requires": { + "async": "^0.2.9", + "which": "^1.1.1" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==" }, "for-each": { "version": "0.3.3", @@ -17999,12 +18510,14 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, @@ -18018,6 +18531,16 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -18049,9 +18572,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -18092,35 +18615,38 @@ "wide-align": "^1.1.5" } }, - "gaxios": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", - "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", - "requires": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - } - }, - "gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "requires": { - "gaxios": "^4.0.0", - "json-bigint": "^1.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" } }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "pump": "^3.0.0" } }, "get-symbol-description": { @@ -18193,6 +18719,11 @@ "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==", "dev": true }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -18233,59 +18764,42 @@ "define-properties": "^1.1.3" } }, - "google-auth-library": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", - "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==", - "requires": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^4.0.0", - "gcp-metadata": "^4.2.0", - "gtoken": "^5.0.4", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - } - }, - "google-p12-pem": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", - "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", - "requires": { - "node-forge": "^1.3.1" - } - }, - "googleapis": { - "version": "100.0.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-100.0.0.tgz", - "integrity": "sha512-RToFQGY54B756IDbjdyjb1vWFmn03bYpXHB2lIf0eq2UBYsIbYOLZ0kqSomfJnpclEukwEmMF7Jn6Wsev871ew==", - "requires": { - "google-auth-library": "^7.0.2", - "googleapis-common": "^5.0.2" - } - }, - "googleapis-common": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-5.1.0.tgz", - "integrity": "sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA==", - "requires": { - "extend": "^3.0.2", - "gaxios": "^4.0.0", - "google-auth-library": "^7.14.0", - "qs": "^6.7.0", - "url-template": "^2.0.8", - "uuid": "^8.0.0" - } - }, "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "dependencies": { + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } } }, "graceful-fs": { @@ -18326,16 +18840,6 @@ "lodash.mapvalues": "^4.6.0" } }, - "gtoken": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", - "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", - "requires": { - "gaxios": "^4.0.0", - "google-p12-pem": "^3.1.3", - "jws": "^4.0.0" - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -18354,6 +18858,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -18385,17 +18890,16 @@ "dev": true }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "has-unicode": { @@ -18403,6 +18907,14 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "help-me": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", @@ -18438,8 +18950,7 @@ "http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "optional": true + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "http-errors": { "version": "2.0.0", @@ -18474,6 +18985,15 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, "httpreq": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.5.2.tgz", @@ -18577,8 +19097,7 @@ "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { "version": "7.3.3", @@ -18891,11 +19410,6 @@ "call-bind": "^1.0.2" } }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -18977,8 +19491,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { "version": "3.0.1", @@ -19103,13 +19616,10 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "requires": { - "bignumber.js": "^9.0.0" - } + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "json-schema": { "version": "0.4.0", @@ -19228,9 +19738,9 @@ } }, "jssha": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.0.tgz", - "integrity": "sha512-w9OtT4ALL+fbbwG3gw7erAO0jvS5nfvrukGPMWIAoea359B26ALXGpzy4YJSp9yGnpUvuvOw1nSjSoHDfWSr1w==" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.1.tgz", + "integrity": "sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==" }, "JSV": { "version": "4.0.2", @@ -19247,30 +19757,19 @@ "object.assign": "^4.1.3" } }, - "jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "requires": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, "kareem": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", @@ -19408,6 +19907,11 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -19473,6 +19977,11 @@ "object-visit": "^1.0.0" } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -19640,6 +20149,11 @@ "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", "dev": true }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", @@ -19707,9 +20221,9 @@ "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" }, "mqtt": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz", - "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.8.tgz", + "integrity": "sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==", "requires": { "commist": "^1.0.0", "concat-stream": "^2.0.0", @@ -19795,6 +20309,11 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" }, + "napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -19834,16 +20353,89 @@ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true }, + "nexus-fca": { + "version": "git+ssh://git@github.com/tas33n/nexus-fca.git#5a506fa85da4e5fabb04dd18aa7393fadcbe3c15", + "from": "nexus-fca@github:tas33n/nexus-fca", + "requires": { + "axios": "^1.8.4", + "bluebird": "^3.7.2", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.10", + "duplexify": "^4.1.3", + "got": "^11.8.6", + "gradient-string": "^2.0.2", + "https-proxy-agent": "^7.0.5", + "lodash": "^4.17.21", + "mqtt": "^4.3.8", + "node-cache": "^5.1.2", + "npmlog": "^7.0.1", + "request": "^2.88.2", + "semver": "^7.5.0", + "sequelize": "^6.37.6", + "sqlite": "^5.1.1", + "sqlite3": "^5.1.7", + "totp-generator": "^1.0.0", + "uuid": "^9.0.1", + "ws": "^8.18.1" + }, + "dependencies": { + "agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==" + }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } + }, + "totp-generator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/totp-generator/-/totp-generator-1.0.0.tgz", + "integrity": "sha512-Iu/1Lk60/MH8FE+5cDWPiGbwKK1hxzSq+KT9oSqhZ1BEczGIKGcN50bP0WMLiIZKRg7t29iWLxw6f81TICQdoA==", + "requires": { + "jssha": "^3.3.1" + } + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + } + } + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + "node-abi": { + "version": "3.77.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.77.0.tgz", + "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==", + "requires": { + "semver": "^7.3.5" + } + }, + "node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "requires": { + "clone": "2.x" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + } + } }, "node-cron": { "version": "3.0.2", @@ -19882,11 +20474,6 @@ } } }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, "node-gyp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", @@ -19956,11 +20543,6 @@ } } }, - "nodemailer": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", - "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==" - }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -19975,6 +20557,11 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, "npm-size": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/npm-size/-/npm-size-1.3.0.tgz", @@ -20208,11 +20795,6 @@ "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -20277,6 +20859,11 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -20412,29 +20999,6 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "passport": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", - "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", - "requires": { - "passport-strategy": "1.x.x", - "pause": "0.0.1", - "utils-merge": "^1.0.1" - } - }, - "passport-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "integrity": "sha512-9wCE6qKznvf9mQYYbgJ3sVOHmCWoUNMVFoZzNoznmISbhnNNPhN9xfY3sLmScHMetEJeoY7CXwfhCe7argfQow==", - "requires": { - "passport-strategy": "1.x.x" - } - }, - "passport-strategy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" - }, "path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -20487,20 +21051,15 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, - "pause": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", + "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==" }, "picomatch": { "version": "2.3.1", @@ -20657,6 +21216,50 @@ "integrity": "sha512-pozTTFO3kG9HQWXCSTJkCgq4fBF8lUQf+5bLddTEW6v4zdjQhcBVfLmKzABEMJMA7s8jhzi0sgANIwdrf4kq+A==", "dev": true }, + "prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "dependencies": { + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + } + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -21021,6 +21624,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, "radio-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/radio-symbol/-/radio-symbol-2.0.0.tgz", @@ -21032,11 +21640,6 @@ "is-windows": "^1.0.1" } }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==" - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -21053,6 +21656,24 @@ "unpipe": "1.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -21306,12 +21927,25 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -21483,26 +22117,33 @@ } }, "sequelize": { - "version": "6.31.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.31.0.tgz", - "integrity": "sha512-nCPVtv+QydBmb3Us2jCNAr1Dx3gST83VZxxrUQn/JAVFCOrmYOgUaPUz5bevummyNf30zfHsZhIKYAOD3ULfTA==", + "version": "6.37.7", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.7.tgz", + "integrity": "sha512-mCnh83zuz7kQxxJirtFD7q6Huy6liPanI67BSlbzSYgVNl5eXVdE2CN1FuAeZwG1SNpGsNRCV+bJAVVnykZAFA==", "requires": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", "sequelize-pool": "^7.1.0", "toposort-class": "^1.0.1", "uuid": "^8.3.2", - "validator": "^13.7.0", + "validator": "^13.9.0", "wkx": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==" + } } }, "sequelize-pool": { @@ -21773,21 +22414,27 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "sqlite": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-5.1.1.tgz", + "integrity": "sha512-oBkezXa2hnkfuJwUo44Hl9hS3er+YFtueifoajrgidvqsJRQFpc5fKoAkAor1O5ZnLoa28GBScfHXs8j0K358Q==" + }, "sqlite3": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", - "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^4.2.0", + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", "node-gyp": "8.x", + "prebuild-install": "^7.1.1", "tar": "^6.1.11" }, "dependencies": { "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" } } }, @@ -21903,9 +22550,9 @@ } }, "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "streamsearch": { "version": "1.1.0", @@ -22137,6 +22784,48 @@ } } }, + "tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "terminal-paginator": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/terminal-paginator/-/terminal-paginator-2.0.2.tgz", @@ -22405,14 +23094,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "requires": { - "random-bytes": "~1.0.0" - } - }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -22488,11 +23169,6 @@ "requires-port": "^1.0.0" } }, - "url-template": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" - }, "util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -22791,6 +23467,12 @@ } } }, + "ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "requires": {} + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index ad305d4eef..60df2706dd 100644 --- a/package.json +++ b/package.json @@ -4,26 +4,20 @@ "description": "A simple Bot chat messenger using personal account. Made by NTKhang.", "main": "index.js", "engines": { - "node": "16.x", - "npm": ">=7.0.0" + "node": "20.x" }, "dependencies": { "@distube/ytdl-core": "^4.13.3", "axios": "^1.4.0", - "bcrypt": "^5.0.1", "canvas": "^2.9.1", "cheerio": "^1.0.0-rc.12", "child_process": "^1.0.2", - "connect-flash": "^0.1.1", - "cookie-parser": "^1.4.6", "eta": "^1.12.3", "express": "^4.18.1", - "express-fileupload": "^1.4.0", - "express-rate-limit": "^6.5.2", - "express-session": "^1.17.3", + "fluent-ffmpeg": "^2.1.3", "form-data": "^4.0.0", + "fs": "^0.0.1-security", "fs-extra": "^11.1.0", - "googleapis": "^100.0.0", "gradient-string": "^2.0.2", "graphql-query-to-json": "^2.0.1", "https": "^1.0.0", @@ -31,12 +25,10 @@ "moment-timezone": "^0.5.34", "mongoose": "^6.3.1", "mqtt": "^4.3.7", + "nexus-fca": "github:tas33n/nexus-fca", "node-cron": "^3.0.2", - "nodemailer": "^6.7.5", "npmlog": "^7.0.1", "ora": "^5.4.1", - "passport": "^0.6.0", - "passport-local": "^1.0.0", "path": "^0.12.7", "qrcode-reader": "^1.0.4", "qs": "^6.11.0", @@ -84,4 +76,4 @@ "prompt-checkbox": "^2.2.0", "terser": "^5.15.0" } -} \ No newline at end of file +} diff --git a/scripts/cmds/anydl.js b/scripts/cmds/anydl.js new file mode 100644 index 0000000000..bb813ff969 --- /dev/null +++ b/scripts/cmds/anydl.js @@ -0,0 +1,353 @@ +const { execFile } = require('child_process'); +const path = require('path'); +const ffmpeg = require('fluent-ffmpeg'); +const fs = require('fs'); +const axios = require('axios'); + +const binDir = path.join(process.cwd(), 'bin'); +const ytDlpBinaryPath = path.join(binDir, process.platform === 'win32' ? 'yt-dlp.exe' : 'yt-dlp'); +const cookieFilePath = path.join(binDir, 'cookies.txt'); + +// convert and save the fb cookie into netscape formate for yt-dlp +async function convertfbcookies() { + const fbcookiesFile = path.join(process.cwd(), 'bin', 'fb_cookies.txt'); + + const fbcookie = JSON.parse(fs.readFileSync(global.client.dirAccount, 'utf-8')); + const netscapeCookies = fbcookie.map(cookie => { + return `.${cookie.domain}\tTRUE\t${cookie.path}\t${cookie.hostOnly ? 'FALSE' : 'TRUE'}\t${Math.floor(Date.parse(cookie.lastAccessed) / 1000)}\t${cookie.key}\t${cookie.value}`; + }).join('\n'); + + const newContent = `\n${netscapeCookies}\n`; + + try { + fs.appendFileSync(cookieFilePath, newContent, 'utf8'); + console.log('Cookies appended to netscape cookie file successfully.'); + return fbcookiesFile + } catch (error) { + console.error('Error appending cookies to netscape file:', error.message); + } +} + +// download ytdlp if its not exist. +async function downloadYtDlp() { + if (!fs.existsSync(binDir)) fs.mkdirSync(binDir); + + const url = process.platform === 'win32' ? + 'https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe' : + 'https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp'; + + try { + const response = await axios.get(url, { responseType: 'stream' }); + const totalLength = response.headers['content-length']; + const writer = fs.createWriteStream(ytDlpBinaryPath); + + response.data.pipe(writer); + + let downloadedLength = 0; + response.data.on('data', (chunk) => { + downloadedLength += chunk.length; + process.stdout.write(`Downloading yt-dlp: ${((downloadedLength / totalLength) * 100).toFixed(2)}%\r`); + }); + + return new Promise((resolve, reject) => { + writer.on('finish', () => { + if (process.platform !== 'win32') fs.chmodSync(ytDlpBinaryPath, '755'); + console.log('\nDownload complete.'); + resolve(); + }); + writer.on('error', (err) => { + fs.unlink(ytDlpBinaryPath, () => { }); + reject(`Failed to download yt-dlp: ${err.message}`); + }); + }); + } catch (error) { + fs.unlink(ytDlpBinaryPath, () => { }); + throw new Error(`Failed to download yt-dlp: ${error.message}`); + } +} + +// chek if the ytdlp exist +async function ensureYtDlp() { + if (!fs.existsSync(ytDlpBinaryPath)) { + console.log('yt-dlp not found, downloading...'); + await downloadYtDlp(); + } +} + +// run ytdlp commands usiing ytdlp binary +async function executeYtDlp(args) { + await ensureYtDlp(); + return new Promise((resolve, reject) => { + execFile(ytDlpBinaryPath, args, (error, stdout, stderr) => { + if (error) return reject(`Error: ${error.message}`); + if (stderr) return reject(`Stderr: ${stderr}`); + try { + resolve(JSON.parse(stdout)); + } catch (parseError) { + reject(`Failed to parse JSON: ${parseError.message}`); + } + }); + }); +} + +// filter audio/video formats +function selectBestFormat(formats, isAudio = false) { + const conditions = isAudio ? + (f => f.abr && f.abr > 0 && (!f.video_ext || f.video_ext === 'none')) : + (f => f.ext === 'mp4' && f.filesize <= 80 * 1024 * 1024 && !f.url.endsWith('.m3u8')); + + const resolutions = isAudio ? [] : ['1920x1080', '1280x720', '854x480']; + + for (const resolution of resolutions) { + const format = formats.find(f => f.resolution === resolution && conditions(f)); + if (format) return format; + } + + return formats.find(conditions); +} + + +async function processMedia({ videoInfo, extractAudio, message, api, event, dlmsgID, urlmsgID }) { + try { + let format = extractAudio ? selectBestFormat(videoInfo.formats, true) : selectBestFormat(videoInfo.formats); + if (!format) { + await api.editMessage("No suitable format found.", dlmsgID); + message.reaction("❌", urlmsgID); + return; + } + + if (extractAudio) { + if (format.vcodec === 'none' && format.acodec !== 'none') { + return message.reply({ + body: videoInfo.title, + attachment: await global.utils.getStreamFromURL(format.url, `anydl_audio.${format.ext || "m4a"}`) + }) + } else { + await extractAndSendAudio(format, videoInfo.title, message, dlmsgID, urlmsgID); + } + } else { + await sendVideoOrMergedMedia(format, videoInfo, message, dlmsgID, urlmsgID); + } + } catch (err) { + console.error(err); + message.reaction("❌", urlmsgID); + await api.editMessage("An error occurred while processing your request.", dlmsgID); + } +} + +// if no audio url extrcat the audio from a video +async function extractAndSendAudio(format, title, message, dlmsgID, urlmsgID) { + const inputVideoPath = await global.utils.getStreamFromURL(format.url, `anydl_video.${format.ext || "mp4"}`, {}); + const outputAudioPath = path.join(__dirname, "tmp", 'output_audio.mp3'); + + ffmpeg(inputVideoPath) + .noVideo() + .audioCodec('libmp3lame') + .on('start', (commandLine) => console.log('FFmpeg command:', commandLine)) + .on('end', async () => { + console.log('Audio extraction finished!'); + const audioStream = fs.createReadStream(outputAudioPath); + await message.reply({ body: title, attachment: audioStream }); + cleanUpFiles([outputAudioPath]); + message.reaction("✅", urlmsgID); + message.unsend(dlmsgID); + }) + .on('error', (err) => { + console.error('Error during audio extraction:', err.message); + message.reaction("❌", urlmsgID); + }) + .save(outputAudioPath); +} + +// handle if mute or cute uwu +async function sendVideoOrMergedMedia(format, videoInfo, message, dlmsgID, urlmsgID) { + const isMute = !format.acodec || format.acodec === 'none'; + + if (isMute) { + const audioFormat = selectBestFormat(videoInfo.formats, true); + if (audioFormat) { + await mergeAndSendVideoAudio(format, audioFormat, videoInfo.title, message, dlmsgID, urlmsgID); + } else { + message.reaction("❌", urlmsgID); + await message.reply("No suitable audio found for merging."); + } + } else { + await sendVideo(format.url, videoInfo.title, message, dlmsgID, urlmsgID); + } +} + +// marge video audio if mute and send +async function mergeAndSendVideoAudio(videoFormat, audioFormat, title, message, dlmsgID, urlmsgID) { + + const randomNumber = Math.floor(Math.random() * 90000000) + 10000000; + const filename = randomNumber.toString(); + + const videoPath = await global.utils.downloadFile(videoFormat.url, path.join(__dirname, 'tmp', `video_${filename}.${videoFormat.ext || "mp4"}`)); + const audioPath = await global.utils.downloadFile(audioFormat.url, path.join(__dirname, 'tmp', `audio_${filename}.${audioFormat.ext || "m4a"}`)); + const outputPath = path.join(__dirname, "tmp", `merged_${filename}.mp4`); + if (!fs.existsSync(path.dirname(outputPath))) { + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); + } + + + ffmpeg(videoPath) + .input(audioPath) + .outputOptions('-c:v copy') + .outputOptions('-c:a aac') + .on('start', (commandLine) => { + console.log('FFmpeg command:', commandLine); + }) + .on('end', async () => { + console.log('Merging finished!'); + await sendVideo(outputPath, title, message, dlmsgID, urlmsgID); + cleanUpFiles([videoPath, audioPath, outputPath]); + }) + .on('error', (err) => { + console.error('Error during merging:', err.message); + message.reaction("❌", urlmsgID); + }) + .save(outputPath); +} + + +async function sendVideo(videoPath, title, message, dlmsgID, urlmsgID) { + const videoStream = fs.createReadStream(videoPath); + await message.reply({ body: title, attachment: videoStream }); + message.reaction("✅", urlmsgID); + message.unsend(dlmsgID); +} + +// Clean up +function cleanUpFiles(filePaths) { + filePaths.forEach((filePath) => { + if (fs.existsSync(filePath)) fs.unlinkSync(filePath); + }); +} + +// Handle media command +async function handleMedia({ url, extractAudio, message, getLang, api, event, dlmsgID, urlmsgID }) { + try { + let cookie = cookieFilePath; + if (url.includes('fb') || url.includes('facebook')) { + cookie = await convertfbcookies(cookieFilePath); + } + const videoInfo = await executeYtDlp(['--cookies', cookie, '--ignore-errors', '--dump-json', url]); + if (videoInfo) { + await processMedia({ videoInfo, extractAudio, message, api, event, dlmsgID, urlmsgID }); + } else { + message.reaction("❌", urlmsgID); + await api.editMessage(getLang("noVideoFound"), dlmsgID); + } + } catch (e) { + console.error(e); + message.reaction("❌", urlmsgID); + await api.editMessage(getLang("error"), dlmsgID); + } +} + +module.exports = { + config: { + name: "anydl", + aliases: ["alldl", "ytdl"], + version: "2.0", + author: "Tas33n", + countDown: 5, + role: 0, + description: { + en: "Download videos or extract audio from a wide range of online platforms, supporting over 1000+ websites. (powerd by YT-DLP)" + }, + category: "media", + guide: { + en: "{pn} : Download video from the specified URL" + + "\n{pn} -a : Extract and download audio from the specified URL" + } + }, + + langs: { + en: { + missingUrl: "Please enter a valid URL for the media you want to download.", + error: "❌ | An error occurred while processing your request. Please ensure the URL is valid and public.", + noVideoFound: "No suitable video found under 80MB in size." + } + }, + + onStart: async function ({ args, message, getLang, event, api }) { + let url; + let extractAudio = false; + + // Check for -a flag and extract URL + if (args[0] === '-a') { + extractAudio = true; + url = args.slice(1).join(" "); + } else if (args[0] === '-v') { + extractAudio = false; + url = args.slice(1).join(" "); + } else { + url = args.join(" "); + } + + if (!url) return message.reply(getLang("missingUrl")); + + let urlmsgID = event.messageID; + await message.reaction("⌛", urlmsgID); + let dlmsg = await message.reply(`⌛ Downloading...`); + await handleMedia({ url, extractAudio, message, getLang, api, event, dlmsgID: dlmsg.messageID, urlmsgID }); + }, + + onChat: async function ({ event, message, threadsData, commandName }) { + // const { settings } = await threadsData.get(event.threadID); + // const autoDl = settings.autoDownload || false; + + // if (!autoDl) return; + + try { + const urlRegx = /https:\/\/[^\s]+/; + if (event.body) { + const match = event.body.match(urlRegx); + + if (match) { + const prefix = await global.utils.getPrefix(event.threadID); + if (event.body.startsWith(prefix)) return; + + const url = match[0]; + + return message.reply({ + body: "🔗 Media link detected! React with 👍 to start the download!" + }, (err, info) => { + global.GoatBot.onReaction.set(info.messageID, { + commandName, + messageID: info.messageID, + urlmsgID: event.messageID, + author: event.senderID, + url + }); + setTimeout(() => { + try { + message.unsend(info.messageID); + } catch (e) { } + }, 60000); + }); + } + } + } catch (e) { + console.log(e) + } + }, + + onReaction: async ({ event, api, Reaction, message, getLang }) => { + const { author, url, messageID, urlmsgID } = Reaction; + const { userID, reaction } = event; + if (author != userID) return; + + try { + if (reaction == "👍") { + await api.editMessage(`⌛ Downloading...`, messageID); + message.reaction("⌛", urlmsgID); + await handleMedia({ url, extractAudio: false, message, getLang, api, event, dlmsgID: messageID, urlmsgID }); + } + } + catch (err) { + console.log("error" + err) + } + } +}; \ No newline at end of file diff --git a/scripts/cmds/ytb.js b/scripts/cmds/ytb.js index 63df97e80f..5426d5953b 100644 --- a/scripts/cmds/ytb.js +++ b/scripts/cmds/ytb.js @@ -2,384 +2,412 @@ const axios = require("axios"); const ytdl = require("@distube/ytdl-core"); const fs = require("fs-extra"); const { getStreamFromURL, downloadFile, formatNumber } = global.utils; +const agent = ytdl.createAgent( + JSON.parse(fs.readFileSync(process.cwd() + "/ytdl.json")) +); async function getStreamAndSize(url, path = "") { - const response = await axios({ - method: "GET", - url, - responseType: "stream", - headers: { - 'Range': 'bytes=0-' - } - }); - if (path) - response.data.path = path; - const totalLength = response.headers["content-length"]; - return { - stream: response.data, - size: totalLength - }; + const response = await axios({ + method: "GET", + url, + responseType: "stream", + headers: { + Range: "bytes=0-", + }, + }); + if (path) response.data.path = path; + const totalLength = response.headers["content-length"]; + return { + stream: response.data, + size: totalLength, + }; } module.exports = { - config: { - name: "ytb", - version: "1.16", - author: "NTKhang", - countDown: 5, - role: 0, - description: { - vi: "Tải video, audio hoặc xem thông tin video trên YouTube", - en: "Download video, audio or view video information on YouTube" - }, - category: "media", - guide: { - vi: " {pn} [video|-v] [|]: dùng để tải video từ youtube." - + "\n {pn} [audio|-a] [|]: dùng để tải audio từ youtube" - + "\n {pn} [info|-i] [|]: dùng để xem thông tin video từ youtube" - + "\n Ví dụ:" - + "\n {pn} -v Fallen Kingdom" - + "\n {pn} -a Fallen Kingdom" - + "\n {pn} -i Fallen Kingdom", - en: " {pn} [video|-v] [