diff --git a/public/ausbildung_quiz.html b/public/ausbildung_quiz.html
new file mode 100644
index 0000000..a9a8c02
--- /dev/null
+++ b/public/ausbildung_quiz.html
@@ -0,0 +1,418 @@
+
+
+
+
+
+
+ Quiz: Ausbildung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Als Ausbilder setzen Sie zur Anleitung der Auszubildenden auch die
+ Vier-Stufen-Methode ein.
+
+
ID 344
+
+
Welches der folgenden Merkmale trifft auf die erste Stufe zu?
+
Kategorie: 3
+
+
+
+
+
+
Die Auszubildenden sollen…
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/freigabe/Stundentafel-Abendform-2022.pdf b/public/freigabe/Stundentafel-Abendform-2022.pdf
new file mode 100644
index 0000000..3cd8237
Binary files /dev/null and b/public/freigabe/Stundentafel-Abendform-2022.pdf differ
diff --git a/public/index.html b/public/index.html
index cc18722..d1279f1 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,11 +1,264 @@
-
+
+
-
-
- WebSite
+
+
+ FSAE41.de
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- MOIN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
Termine
+
+
+
+
Sonder Funktionen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/index.js b/public/index.js
new file mode 100644
index 0000000..d764222
--- /dev/null
+++ b/public/index.js
@@ -0,0 +1,339 @@
+const PB = new PocketBase();
+
+// Modul-funktion
+function toggleForms() {
+ document.getElementById('loginForm').classList.toggle('hidden');
+ document.getElementById('signupForm').classList.toggle('hidden');
+}
+
+function openAuth() {
+ document.getElementById('auth-module').style.display = 'flex';
+}
+
+function closeAuth() {
+ document.getElementById('auth-module').style.display = 'none';
+}
+
+function shakeBox() {
+ const box = document.getElementById('auth-box');
+ box.classList.add('shake');
+ setTimeout(() => box.classList.remove('shake'), 300);
+}
+
+// Klick außerhalb des auth-box schließt das Modul
+document.getElementById('auth-module').addEventListener('click', function (e) {
+ if (e.target === this) {
+ closeAuth();
+ }
+});
+
+document.getElementById('loginForm').addEventListener('submit', async function (e) {
+ e.preventDefault();
+
+ let email = e.target[0].value
+ let passwort = e.target[1].value
+ let authData = null;
+ try {
+ authData = await PB.collection('users').authWithPassword(email, passwort);
+ } catch (error) {
+ shakeBox();
+ console.error(error);
+ return;
+ }
+
+ // after the above you can also access the auth data from the authStore
+ console.log(PB.authStore.isValid);
+ console.log(PB.authStore.token);
+ console.log(PB.authStore.record.id);
+
+ closeAuth();
+});
+
+document.getElementById('signupForm').addEventListener('submit', async function (e) {
+ e.preventDefault();
+
+ let r = null;
+ let authData = null;
+ const data = {
+ "name": e.target[0].value,
+ "email": e.target[1].value,
+ "password": e.target[2].value,
+ "passwordConfirm": e.target[3].value
+ };
+ try {
+ r = await PB.collection('users').create(data);
+ } catch (error) {
+ shakeBox();
+ console.log(error);
+ return
+ }
+
+ try {
+ authData = await PB.collection('users').authWithPassword(data.email, data.passwort);
+ } catch (error) {
+ shakeBox();
+ console.error(error);
+ return;
+ }
+
+ closeAuth();
+});
+
+
+// Clock funktion
+// TODO: getHtml from Server ??
+function formatDate(date) {
+ return `${padZero(date.getDate(), 2)}.${padZero(date.getMonth() + 1, 2)}.${date.getFullYear()} um ${padZero(date.getHours(), 2)}:${padZero(date.getMinutes(), 2)}:${padZero(date.getSeconds(), 2)}`;
+}
+
+function padZero(num, places) {
+ return num.toString().padStart(places, '0');
+}
+
+function pad(d) {
+ return (d < 10) ? '0' + d.toString() : d.toString();
+}
+
+async function get_moodle() {
+ let r = await fetch("/moodle/getClasses")
+ let d = await r.json()
+ return d
+}
+
+function getNextOrCurrentLesson(data, now = new Date()) {
+ let nextLesson = null;
+
+ for (const dateKey in data) {
+ for (const entry of data[dateKey]) {
+ const year = Number(dateKey.slice(0, 4));
+ const month = Number(dateKey.slice(4, 6)) - 1;
+ const day = Number(dateKey.slice(6, 8));
+
+ const startHour = Math.floor(entry.startTime / 100);
+ const startMin = entry.startTime % 100;
+ const endHour = Math.floor(entry.endTime / 100);
+ const endMin = entry.endTime % 100;
+
+ const start = new Date(year, month, day, startHour, startMin);
+ const end = new Date(year, month, day, endHour, endMin);
+
+ // 🟢 Stunde läuft gerade
+ if (now >= start && now < end) {
+ return { start, end, entry, status: "running" };
+ }
+
+ // 🔵 Stunde kommt noch
+ if (start > now) {
+ if (!nextLesson || start < nextLesson.start) {
+ nextLesson = { start, end, entry, status: "next" };
+ }
+ }
+ }
+ }
+
+ return nextLesson;
+}
+
+function render_countdow_v2(two = false) {
+ const now = new Date();
+ const day = now.getDay();
+ const time = pad(now.getHours().toString()) + ':' + pad(now.getMinutes().toString());
+ let target;
+
+ if (!nextClass) {
+ requestAnimationFrame(render_countdow_v2);
+ return;
+ }
+
+ if (nextClass.status === "running") {
+ target = nextClass.end;
+ } else if (nextClass.status === "next") {
+ target = nextClass.start;
+ }
+
+
+ const distance = Math.abs(target - now);
+ document.getElementById("target-info").innerHTML = `Bis zum ${formatDate(target)} Uhr sind es noch:`;
+
+ // Display Label
+ if (nextClass.status === "running") {
+ document.getElementById("main-heading").textContent = `"${nextClass.entry.su[0].longname}" in Raum ${nextClass.entry.ro[0].name} findet grade statt`;
+ } else if (nextClass.status === "next") {
+ document.getElementById("main-heading").textContent = `Nächstes Stunde: ${nextClass.entry.su[0].longname} in Raum ${nextClass.entry.ro[0].name}`;
+ }
+
+ const days = distance / (1000 * 60 * 60 * 24);
+ const hours = (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
+ const minutes = (distance % (1000 * 60 * 60)) / (1000 * 60);
+ const seconds = (distance % (1000 * 60)) / 1000;
+ const milliseconds = distance % 1000;
+
+ // Calculate total values
+ const totalDays = days;
+ const totalWeeks = Math.floor(totalDays / 7);
+ const totalHours = totalDays * 24;
+ const totalMinust = totalHours * 60;
+ const totalSeconds = totalMinust * 60;
+ const totalYears = (totalDays / 365).toFixed(2); // Calculate total years to 2 decimal places
+
+ // Display countdown/countup
+ document.getElementById("countdown").innerHTML = `${Math.floor(days)}d ${Math.floor(hours)}h ${Math.floor(minutes)}m ${Math.floor(seconds)}s ${padZero(milliseconds, 3)}ms`;
+
+ // Display totals with thousand separators
+ document.getElementById("totals").innerHTML = `Tage: ${totalDays.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 })} | Stunden: ${totalHours.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 })} | Minuten: ${totalMinust.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 })} | Sekunden: ${totalSeconds.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 })}`;
+
+ requestAnimationFrame(render_countdow_v2);
+}
+
+async function init_countdown() {
+ document.getElementById("main-heading").textContent = "Lade Stundenplan...";
+ nextClass = getNextOrCurrentLesson(await get_moodle());
+
+ // Update next class every second
+ setInterval(async () => { nextClass = getNextOrCurrentLesson(await get_moodle()); }, 1000);
+
+ // Start the render loop
+ render_countdow_v2();
+}
+
+let nextClass = null;
+
+init_countdown();
+
+// fotos hochladen
+async function addPic() {
+ const fileInput = document.createElement('input');
+ fileInput.type = 'file';
+ fileInput.multiple = false;
+ fileInput.accept = 'image/*';
+ fileInput.click();
+ // listen to file input changes and add the selected files to the form data
+ fileInput.addEventListener('change', async function () {
+ const formData = new FormData();
+ // set regular text field
+ formData.append('alt', "demo" || prompt("Bitte eine Bildbeschreibung eingeben:"));
+ formData.append('gewicht', 1);
+ formData.append('allowed', false);
+
+ for (let file of fileInput.files) {
+ formData.append('img', file);
+ }
+ const createdRecord = await PB.collection('images').create(formData);
+ alert("Bild erfolgreich hochgeladen!");
+ });
+}
+
+// Render event Data
+function render_event(data) {
+ const eventContainer = document.getElementById('events');
+
+ const eventDiv = document.createElement('div');
+ eventDiv.classList.add('event');
+
+ const dateDiv = document.createElement('div');
+ dateDiv.classList.add('date');
+ const eventDate = new Date(data.start);
+ const monthNames = ["JAN", "FEB", "MÄR", "APR", "MAI", "JUN", "JUL", "AUG", "SEP", "OKT", "NOV", "DEZ"];
+ dateDiv.innerHTML = `${monthNames[eventDate.getMonth()]}
${eventDate.getDate()}`;
+ if (eventDate.getDate() == new Date().getDate() && eventDate.getMonth() == new Date().getMonth() && eventDate.getFullYear() == new Date().getFullYear()) {
+ dateDiv.classList.add("today");
+
+ const duration = 15 * 1000,
+ animationEnd = Date.now() + duration,
+ defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0 };
+
+ function randomInRange(min, max) {
+ return Math.random() * (max - min) + min;
+ }
+
+ const interval = setInterval(function () {
+ const timeLeft = animationEnd - Date.now();
+
+ if (timeLeft <= 0) {
+ return clearInterval(interval);
+ }
+
+ const particleCount = 50 * (timeLeft / duration);
+
+ // since particles fall down, start a bit higher than random
+ confetti(
+ Object.assign({}, defaults, {
+ particleCount,
+ origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 },
+ })
+ );
+ confetti(
+ Object.assign({}, defaults, {
+ particleCount,
+ origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 },
+ })
+ );
+ }, 250);
+ }
+
+
+ const detailsDiv = document.createElement('div');
+ detailsDiv.classList.add("info")
+ const typeDiv = document.createElement('div');
+ typeDiv.classList.add('type');
+ typeDiv.textContent = data.type;
+
+ const titleStrong = document.createElement('strong');
+ titleStrong.textContent = data.title;
+
+ const info = document.createElement('p');
+ info.textContent = data.info;
+
+
+ const timeSmall = document.createElement('small');
+ time = eventDate.getHours().toString().padStart(2, '0') + ':' + eventDate.getMinutes().toString().padStart(2, '0');
+ timeSmall.textContent = `🕒 ${time} Uhr`;
+ if (data.type != "Klausur") {
+ titleStrong.classList.add('rainbow-text');
+ //typeDiv.classList.add('rainbow-text');
+ }
+
+ detailsDiv.appendChild(typeDiv);
+ detailsDiv.appendChild(titleStrong);
+ detailsDiv.appendChild(document.createElement('br'));
+ detailsDiv.appendChild(info);
+ if (data.type == "Klausur") {
+ detailsDiv.appendChild(timeSmall);
+ }
+
+ eventDiv.appendChild(dateDiv);
+ eventDiv.appendChild(detailsDiv);
+
+ eventContainer.appendChild(eventDiv);
+}
+
+async function add_event() {
+
+ const userDate = prompt("Bitte gib ein Datum im Format TT.MM.JJJJ ein (z. B. 05.11.2025):");
+ const userTime = prompt("Bitte gib eine Uhrzeit im Format HH:MM ein (z. B. 14:30):");
+
+ const [day, month, year] = userDate.split('.').map(Number);
+ const [hours, minutes] = userTime.split(':').map(Number);
+
+ // Date-Objekt erstellen (Monat ist 0-basiert!)
+ const userDateTime = new Date(year, month - 1, day, hours, minutes);
+
+ // example create data
+ const data = {
+ "date": userDateTime.toISOString(),
+ "title": prompt("Titel?"),
+ "info": prompt("Info?"),
+ "type": prompt("Typ?", "Klausur"),
+ };
+
+ const record = await PB.collection('termine').create(data);
+}
+
+(async () => {
+ const records = await PB.collection('termine').getList(1, 5, {
+ sort: '+start',
+ filter: `start >= "${new Date().getFullYear()}-${(new Date().getMonth() + 1).toString().padStart(2, '0')}-${(new Date().getDate()).toString().padStart(2, '0')} 00:00:00Z"`
+ });
+
+ records.items.forEach(record => render_event(record));
+})();
\ No newline at end of file
diff --git a/public/index.less b/public/index.less
new file mode 100644
index 0000000..403da4d
--- /dev/null
+++ b/public/index.less
@@ -0,0 +1,197 @@
+.mainbox {
+ padding: 8px 16px;
+ color: #000000;
+ background-color: #ffffff;
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
+}
+
+
+
+.events {
+
+
+ h3 {
+ color: #009688;
+ }
+
+ .event {
+ display: flex;
+ align-items: center;
+ margin-bottom: 16px;
+ border-bottom: 1px solid #ddd;
+ padding-bottom: 8px;
+
+ .date {
+ width: 60px;
+ text-align: center;
+ background: #707070;
+ color: #fff;
+ padding: 10px;
+ border-radius: 8px;
+ font-weight: 600;
+ line-height: 1.2;
+ margin-right: 12px;
+
+ &.today {
+ background-color: #222222;
+ }
+ }
+
+ .info {
+
+ .type {
+ color: #009688;
+ font-weight: bold;
+ font-size: 13px;
+ text-transform: uppercase
+ }
+
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ }
+ }
+}
+
+
+
+.modul {
+ @color_1: white;
+ @color_2: #4f46e5;
+
+
+ #auth-module {
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.5);
+ justify-content: center;
+ align-items: center;
+ z-index: 1000;
+
+
+ .close-btn {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: auto;
+ background: red;
+ color: @color_1;
+ border: none;
+ border-radius: 5px;
+ padding: 5px 10px;
+ cursor: pointer;
+ }
+
+
+ .auth-box {
+ background: #fff;
+ padding: 2rem;
+ width: 320px;
+ border-radius: 10px;
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
+ position: relative;
+
+ &.shake {
+ animation: shake 0.3s;
+ }
+
+
+ @keyframes shake {
+ 0% {
+ transform: translateX(0);
+ }
+
+ 25% {
+ transform: translateX(-10px) rotate(-2deg);
+ }
+
+ 50% {
+ transform: translateX(10px) rotate(2deg);
+ }
+
+ 75% {
+ transform: translateX(-10px) rotate(-2deg);
+ }
+
+ 100% {
+ transform: translateX(0);
+ }
+ }
+ }
+
+ h2 {
+ text-align: center;
+ margin-bottom: 1rem;
+ }
+
+ input {
+ width: 100%;
+ padding: 10px;
+ margin: 8px 0;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ }
+
+ button {
+ width: 100%;
+ padding: 10px;
+ background: #4f46e5;
+ color: @color_1;
+ border: none;
+ border-radius: 5px;
+ cursor: pointer;
+ margin-top: 10px;
+
+ &:hover {
+ background: #4338ca;
+ }
+ }
+
+ .switch {
+ text-align: center;
+ margin-top: 1rem;
+ font-size: 0.9rem;
+
+ span {
+ color: @color_2;
+ cursor: pointer;
+ font-weight: bold;
+ }
+ }
+
+ .hidden {
+ display: none;
+ }
+
+
+ }
+}
+
+
+@keyframes rainbow_animation {
+ 0% {
+ background-position: 0 0;
+ }
+
+ 50% {
+ background-position: 50% 0;
+ }
+
+ 100% {
+ background-position: 100% 0;
+ }
+}
+
+.rainbow-text {
+ background: linear-gradient(to right, #6666ff, #0099ff, #00ff00, #ff3399, #6666ff);
+ -webkit-background-clip: text;
+ background-clip: text;
+ color: transparent;
+ animation: rainbow_animation 6s infinite;
+ background-size: 400% 100%;
+}
\ No newline at end of file
diff --git a/public/led/index.html b/public/led/index.html
new file mode 100644
index 0000000..96c76ff
--- /dev/null
+++ b/public/led/index.html
@@ -0,0 +1,264 @@
+
+
+
+
+
+ Bild skalieren & anzeigen
+
+
+
+
+
+ Bild auswählen, skalieren und im Canvas anzeigen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/led/v.html b/public/led/v.html
new file mode 100644
index 0000000..0d8caa7
--- /dev/null
+++ b/public/led/v.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+ Video Frame-Stepping mit FPS-Erkennung
+
+
+
+
+ Video: Frame für Frame mit FPS-Erkennung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lade ein Video, warte auf Metadaten...
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/lib/confetti.js b/public/lib/confetti.js
new file mode 100644
index 0000000..34996c2
--- /dev/null
+++ b/public/lib/confetti.js
@@ -0,0 +1,8 @@
+/**
+ * Minified by jsDelivr using Terser v5.39.0.
+ * Original file: /npm/canvas-confetti@1.9.4/dist/confetti.browser.js
+ *
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
+ */
+!function (t, e) { !function t(e, a, n, r) { var o = !!(e.Worker && e.Blob && e.Promise && e.OffscreenCanvas && e.OffscreenCanvasRenderingContext2D && e.HTMLCanvasElement && e.HTMLCanvasElement.prototype.transferControlToOffscreen && e.URL && e.URL.createObjectURL), i = "function" == typeof Path2D && "function" == typeof DOMMatrix, l = function () { if (!e.OffscreenCanvas) return !1; try { var t = new OffscreenCanvas(1, 1), a = t.getContext("2d"); a.fillRect(0, 0, 1, 1); var n = t.transferToImageBitmap(); a.createPattern(n, "no-repeat") } catch (t) { return !1 } return !0 }(); function s() { } function c(t) { var n = a.exports.Promise, r = void 0 !== n ? n : e.Promise; return "function" == typeof r ? new r(t) : (t(s, s), null) } var h, f, u, d, m, g, p, b, M, v, y, w = (h = l, f = new Map, { transform: function (t) { if (h) return t; if (f.has(t)) return f.get(t); var e = new OffscreenCanvas(t.width, t.height); return e.getContext("2d").drawImage(t, 0, 0), f.set(t, e), e }, clear: function () { f.clear() } }), x = (m = Math.floor(1e3 / 60), g = {}, p = 0, "function" == typeof requestAnimationFrame && "function" == typeof cancelAnimationFrame ? (u = function (t) { var e = Math.random(); return g[e] = requestAnimationFrame((function a(n) { p === n || p + m - 1 < n ? (p = n, delete g[e], t()) : g[e] = requestAnimationFrame(a) })), e }, d = function (t) { g[t] && cancelAnimationFrame(g[t]) }) : (u = function (t) { return setTimeout(t, m) }, d = function (t) { return clearTimeout(t) }), { frame: u, cancel: d }), C = (v = {}, function () { if (b) return b; if (!n && o) { var e = ["var CONFETTI, SIZE = {}, module = {};", "(" + t.toString() + ")(this, module, true, SIZE);", "onmessage = function(msg) {", " if (msg.data.options) {", " CONFETTI(msg.data.options).then(function () {", " if (msg.data.callback) {", " postMessage({ callback: msg.data.callback });", " }", " });", " } else if (msg.data.reset) {", " CONFETTI && CONFETTI.reset();", " } else if (msg.data.resize) {", " SIZE.width = msg.data.resize.width;", " SIZE.height = msg.data.resize.height;", " } else if (msg.data.canvas) {", " SIZE.width = msg.data.canvas.width;", " SIZE.height = msg.data.canvas.height;", " CONFETTI = module.exports.create(msg.data.canvas);", " }", "}"].join("\n"); try { b = new Worker(URL.createObjectURL(new Blob([e]))) } catch (t) { return "undefined" != typeof console && "function" == typeof console.warn && console.warn("🎊 Could not load worker", t), null } !function (t) { function e(e, a) { t.postMessage({ options: e || {}, callback: a }) } t.init = function (e) { var a = e.transferControlToOffscreen(); t.postMessage({ canvas: a }, [a]) }, t.fire = function (a, n, r) { if (M) return e(a, null), M; var o = Math.random().toString(36).slice(2); return M = c((function (n) { function i(e) { e.data.callback === o && (delete v[o], t.removeEventListener("message", i), M = null, w.clear(), r(), n()) } t.addEventListener("message", i), e(a, o), v[o] = i.bind(null, { data: { callback: o } }) })) }, t.reset = function () { for (var e in t.postMessage({ reset: !0 }), v) v[e](), delete v[e] } }(b) } return b }), I = { particleCount: 50, angle: 90, spread: 45, startVelocity: 45, decay: .9, gravity: 1, drift: 0, ticks: 200, x: .5, y: .5, shapes: ["square", "circle"], zIndex: 100, colors: ["#26ccff", "#a25afd", "#ff5e7e", "#88ff5a", "#fcff42", "#ffa62d", "#ff36ff"], disableForReducedMotion: !1, scalar: 1 }; function T(t, e, a) { return function (t, e) { return e ? e(t) : t }(t && null != t[e] ? t[e] : I[e], a) } function E(t) { return t < 0 ? 0 : Math.floor(t) } function P(t) { return parseInt(t, 16) } function S(t) { return t.map(O) } function O(t) { var e = String(t).replace(/[^0-9a-f]/gi, ""); return e.length < 6 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), { r: P(e.substring(0, 2)), g: P(e.substring(2, 4)), b: P(e.substring(4, 6)) } } function k(t) { t.width = document.documentElement.clientWidth, t.height = document.documentElement.clientHeight } function B(t) { var e = t.getBoundingClientRect(); t.width = e.width, t.height = e.height } function F(t, e) { e.x += Math.cos(e.angle2D) * e.velocity + e.drift, e.y += Math.sin(e.angle2D) * e.velocity + e.gravity, e.velocity *= e.decay, e.flat ? (e.wobble = 0, e.wobbleX = e.x + 10 * e.scalar, e.wobbleY = e.y + 10 * e.scalar, e.tiltSin = 0, e.tiltCos = 0, e.random = 1) : (e.wobble += e.wobbleSpeed, e.wobbleX = e.x + 10 * e.scalar * Math.cos(e.wobble), e.wobbleY = e.y + 10 * e.scalar * Math.sin(e.wobble), e.tiltAngle += .1, e.tiltSin = Math.sin(e.tiltAngle), e.tiltCos = Math.cos(e.tiltAngle), e.random = Math.random() + 2); var a = e.tick++ / e.totalTicks, n = e.x + e.random * e.tiltCos, r = e.y + e.random * e.tiltSin, o = e.wobbleX + e.random * e.tiltCos, l = e.wobbleY + e.random * e.tiltSin; if (t.fillStyle = "rgba(" + e.color.r + ", " + e.color.g + ", " + e.color.b + ", " + (1 - a) + ")", t.beginPath(), i && "path" === e.shape.type && "string" == typeof e.shape.path && Array.isArray(e.shape.matrix)) t.fill(function (t, e, a, n, r, o, i) { var l = new Path2D(t), s = new Path2D; s.addPath(l, new DOMMatrix(e)); var c = new Path2D; return c.addPath(s, new DOMMatrix([Math.cos(i) * r, Math.sin(i) * r, -Math.sin(i) * o, Math.cos(i) * o, a, n])), c }(e.shape.path, e.shape.matrix, e.x, e.y, .1 * Math.abs(o - n), .1 * Math.abs(l - r), Math.PI / 10 * e.wobble)); else if ("bitmap" === e.shape.type) { var s = Math.PI / 10 * e.wobble, c = .1 * Math.abs(o - n), h = .1 * Math.abs(l - r), f = e.shape.bitmap.width * e.scalar, u = e.shape.bitmap.height * e.scalar, d = new DOMMatrix([Math.cos(s) * c, Math.sin(s) * c, -Math.sin(s) * h, Math.cos(s) * h, e.x, e.y]); d.multiplySelf(new DOMMatrix(e.shape.matrix)); var m = t.createPattern(w.transform(e.shape.bitmap), "no-repeat"); m.setTransform(d), t.globalAlpha = 1 - a, t.fillStyle = m, t.fillRect(e.x - f / 2, e.y - u / 2, f, u), t.globalAlpha = 1 } else if ("circle" === e.shape) t.ellipse ? t.ellipse(e.x, e.y, Math.abs(o - n) * e.ovalScalar, Math.abs(l - r) * e.ovalScalar, Math.PI / 10 * e.wobble, 0, 2 * Math.PI) : function (t, e, a, n, r, o, i, l, s) { t.save(), t.translate(e, a), t.rotate(o), t.scale(n, r), t.arc(0, 0, 1, i, l, s), t.restore() }(t, e.x, e.y, Math.abs(o - n) * e.ovalScalar, Math.abs(l - r) * e.ovalScalar, Math.PI / 10 * e.wobble, 0, 2 * Math.PI); else if ("star" === e.shape) for (var g = Math.PI / 2 * 3, p = 4 * e.scalar, b = 8 * e.scalar, M = e.x, v = e.y, y = 5, x = Math.PI / y; y--;)M = e.x + Math.cos(g) * b, v = e.y + Math.sin(g) * b, t.lineTo(M, v), g += x, M = e.x + Math.cos(g) * p, v = e.y + Math.sin(g) * p, t.lineTo(M, v), g += x; else t.moveTo(Math.floor(e.x), Math.floor(e.y)), t.lineTo(Math.floor(e.wobbleX), Math.floor(r)), t.lineTo(Math.floor(o), Math.floor(l)), t.lineTo(Math.floor(n), Math.floor(e.wobbleY)); return t.closePath(), t.fill(), e.tick < e.totalTicks } function A(t, a) { var i, l = !t, s = !!T(a || {}, "resize"), h = !1, f = T(a, "disableForReducedMotion", Boolean), u = o && !!T(a || {}, "useWorker") ? C() : null, d = l ? k : B, m = !(!t || !u) && !!t.__confetti_initialized, g = "function" == typeof matchMedia && matchMedia("(prefers-reduced-motion)").matches; function p(e, a, o) { for (var l, s, h, f, u, m = T(e, "particleCount", E), g = T(e, "angle", Number), p = T(e, "spread", Number), b = T(e, "startVelocity", Number), M = T(e, "decay", Number), v = T(e, "gravity", Number), y = T(e, "drift", Number), C = T(e, "colors", S), I = T(e, "ticks", Number), P = T(e, "shapes"), O = T(e, "scalar"), k = !!T(e, "flat"), B = function (t) { var e = T(t, "origin", Object); return e.x = T(e, "x", Number), e.y = T(e, "y", Number), e }(e), A = m, R = [], N = t.width * B.x, z = t.height * B.y; A--;)R.push((l = { x: N, y: z, angle: g, spread: p, startVelocity: b, color: C[A % C.length], shape: P[(f = 0, u = P.length, Math.floor(Math.random() * (u - f)) + f)], ticks: I, decay: M, gravity: v, drift: y, scalar: O, flat: k }, s = void 0, h = void 0, s = l.angle * (Math.PI / 180), h = l.spread * (Math.PI / 180), { x: l.x, y: l.y, wobble: 10 * Math.random(), wobbleSpeed: Math.min(.11, .1 * Math.random() + .05), velocity: .5 * l.startVelocity + Math.random() * l.startVelocity, angle2D: -s + (.5 * h - Math.random() * h), tiltAngle: (.5 * Math.random() + .25) * Math.PI, color: l.color, shape: l.shape, tick: 0, totalTicks: l.ticks, decay: l.decay, drift: l.drift, random: Math.random() + 2, tiltSin: 0, tiltCos: 0, wobbleX: 0, wobbleY: 0, gravity: 3 * l.gravity, ovalScalar: .6, scalar: l.scalar, flat: l.flat })); return i ? i.addFettis(R) : (i = function (t, e, a, o, i) { var l, s, h = e.slice(), f = t.getContext("2d"), u = c((function (e) { function c() { l = s = null, f.clearRect(0, 0, o.width, o.height), w.clear(), i(), e() } l = x.frame((function e() { !n || o.width === r.width && o.height === r.height || (o.width = t.width = r.width, o.height = t.height = r.height), o.width || o.height || (a(t), o.width = t.width, o.height = t.height), f.clearRect(0, 0, o.width, o.height), (h = h.filter((function (t) { return F(f, t) }))).length ? l = x.frame(e) : c() })), s = c })); return { addFettis: function (t) { return h = h.concat(t), u }, canvas: t, promise: u, reset: function () { l && x.cancel(l), s && s() } } }(t, R, d, a, o), i.promise) } function b(a) { var n = f || T(a, "disableForReducedMotion", Boolean), r = T(a, "zIndex", Number); if (n && g) return c((function (t) { t() })); l && i ? t = i.canvas : l && !t && (t = function (t) { var e = document.createElement("canvas"); return e.style.position = "fixed", e.style.top = "0px", e.style.left = "0px", e.style.pointerEvents = "none", e.style.zIndex = t, e }(r), document.body.appendChild(t)), s && !m && d(t); var o = { width: t.width, height: t.height }; function b() { if (u) { var e = { getBoundingClientRect: function () { if (!l) return t.getBoundingClientRect() } }; return d(e), void u.postMessage({ resize: { width: e.width, height: e.height } }) } o.width = o.height = null } function M() { i = null, s && (h = !1, e.removeEventListener("resize", b)), l && t && (document.body.contains(t) && document.body.removeChild(t), t = null, m = !1) } return u && !m && u.init(t), m = !0, u && (t.__confetti_initialized = !0), s && !h && (h = !0, e.addEventListener("resize", b, !1)), u ? u.fire(a, o, M) : p(a, o, M) } return b.reset = function () { u && u.reset(), i && i.reset() }, b } function R() { return y || (y = A(null, { useWorker: !0, resize: !0 })), y } a.exports = function () { return R().apply(this, arguments) }, a.exports.reset = function () { R().reset() }, a.exports.create = A, a.exports.shapeFromPath = function (t) { if (!i) throw new Error("path confetti are not supported in this browser"); var e, a; "string" == typeof t ? e = t : (e = t.path, a = t.matrix); var n = new Path2D(e), r = document.createElement("canvas").getContext("2d"); if (!a) { for (var o, l, s = 1e3, c = s, h = s, f = 0, u = 0, d = 0; d < s; d += 2)for (var m = 0; m < s; m += 2)r.isPointInPath(n, d, m, "nonzero") && (c = Math.min(c, d), h = Math.min(h, m), f = Math.max(f, d), u = Math.max(u, m)); o = f - c, l = u - h; var g = Math.min(10 / o, 10 / l); a = [g, 0, 0, g, -Math.round(o / 2 + c) * g, -Math.round(l / 2 + h) * g] } return { type: "path", path: e, matrix: a } }, a.exports.shapeFromText = function (t) { var e, a = 1, n = "#000000", r = '"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif'; "string" == typeof t ? e = t : (e = t.text, a = "scalar" in t ? t.scalar : a, r = "fontFamily" in t ? t.fontFamily : r, n = "color" in t ? t.color : n); var o = 10 * a, i = o + "px " + r, l = new OffscreenCanvas(o, o), s = l.getContext("2d"); s.font = i; var c = s.measureText(e), h = Math.ceil(c.actualBoundingBoxRight + c.actualBoundingBoxLeft), f = Math.ceil(c.actualBoundingBoxAscent + c.actualBoundingBoxDescent), u = c.actualBoundingBoxLeft + 2, d = c.actualBoundingBoxAscent + 2; h += 4, f += 4, (s = (l = new OffscreenCanvas(h, f)).getContext("2d")).font = i, s.fillStyle = n, s.fillText(e, u, d); var m = 1 / a; return { type: "bitmap", bitmap: l.transferToImageBitmap(), matrix: [m, 0, 0, m, -h * m / 2, -f * m / 2] } } }(function () { return void 0 !== t ? t : "undefined" != typeof self ? self : this || {} }(), e, !1), t.confetti = e.exports }(window, {});
+//# sourceMappingURL=/sm/cad7c3ca296fcad2eda2459178be2ed4967f4098c8e8e20900f845e89fca8f7d.map
\ No newline at end of file
diff --git a/public/lib/css/icons_mobiscroll.ttf b/public/lib/css/icons_mobiscroll.ttf
new file mode 100644
index 0000000..555f960
Binary files /dev/null and b/public/lib/css/icons_mobiscroll.ttf differ
diff --git a/public/lib/css/icons_mobiscroll.woff b/public/lib/css/icons_mobiscroll.woff
new file mode 100644
index 0000000..b1e4821
Binary files /dev/null and b/public/lib/css/icons_mobiscroll.woff differ
diff --git a/public/lib/css/mobiscroll.javascript.min.css b/public/lib/css/mobiscroll.javascript.min.css
new file mode 100644
index 0000000..3013a10
--- /dev/null
+++ b/public/lib/css/mobiscroll.javascript.min.css
@@ -0,0 +1,26800 @@
+.mbsc-icon {
+ -moz-box-flex: 0;
+ display: inline-block;
+ flex: 0 0 auto;
+ height: 1.5em;
+ line-height: 1.5em;
+ text-align: center;
+ vertical-align: middle;
+ width: 1.5em
+}
+
+.mbsc-icon>svg {
+ fill: currentColor;
+ display: block;
+ height: 100%;
+ margin: 0 auto;
+ width: 100%
+}
+
+:root {
+ --mbsc-safe-top: 0;
+ --mbsc-safe-right: 0;
+ --mbsc-safe-bottom: 0;
+ --mbsc-safe-left: 0
+}
+
+@supports (top:constant(safe-area-inset-top)) {
+ :root {
+ --mbsc-safe-top: constant(safe-area-inset-top);
+ --mbsc-safe-right: constant(safe-area-inset-right);
+ --mbsc-safe-bottom: constant(safe-area-inset-bottom);
+ --mbsc-safe-left: constant(safe-area-inset-left)
+ }
+}
+
+@supports (top:env(safe-area-inset-top)) {
+ :root {
+ --mbsc-safe-top: env(safe-area-inset-top);
+ --mbsc-safe-right: env(safe-area-inset-right);
+ --mbsc-safe-bottom: env(safe-area-inset-bottom);
+ --mbsc-safe-left: env(safe-area-inset-left)
+ }
+}
+
+.mbsc-font {
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-text-size-adjust: 100%;
+ font-family: -apple-system, Segoe UI, Roboto, sans-serif;
+ font-size: 16px;
+ font-weight: 400
+}
+
+.mbsc-reset {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background: none;
+ border: 0;
+ margin: 0;
+ padding: 0
+}
+
+.mbsc-resize {
+ bottom: 0;
+ overflow: hidden;
+ right: 0;
+ z-index: -1
+}
+
+.mbsc-resize,
+.mbsc-resize-i {
+ left: 0;
+ position: absolute;
+ top: 0
+}
+
+.mbsc-resize-y {
+ height: 200%;
+ width: 200%
+}
+
+.mbsc-hidden {
+ visibility: hidden
+}
+
+.mbsc-overflow-hidden {
+ overflow: hidden
+}
+
+.mbsc-hidden-content {
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ white-space: nowrap;
+ width: 1px
+}
+
+.mbsc-ltr {
+ direction: ltr
+}
+
+.mbsc-rtl {
+ direction: rtl
+}
+
+.mbsc-ripple {
+ background: currentColor;
+ border-radius: 1000em;
+ left: 0;
+ opacity: 0;
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ -webkit-transform: scale(0);
+ transform: scale(0)
+}
+
+.mbsc-flex,
+.mbsc-flex-col {
+ display: -moz-box;
+ display: flex
+}
+
+.mbsc-flex-col {
+ -moz-box-orient: vertical;
+ -moz-box-direction: normal;
+ flex-direction: column
+}
+
+.mbsc-flex-1-1 {
+ -moz-box-flex: 1;
+ flex: 1 1 auto
+}
+
+.mbsc-flex-1-0 {
+ -moz-box-flex: 1;
+ flex: 1 0 auto
+}
+
+.mbsc-flex-1-0-0 {
+ -moz-box-flex: 1;
+ flex: 1 0 0
+}
+
+@media (-ms-high-contrast:none) {
+ .mbsc-flex-1-0-0 {
+ -moz-box-flex: 1;
+ flex: 1 0 auto
+ }
+}
+
+.mbsc-flex-none {
+ -moz-box-flex: 0;
+ flex: none
+}
+
+@media (-webkit-min-device-pixel-ratio:2) {
+
+ .mbsc-hb,
+ .mbsc-hb:after,
+ .mbsc-hb:before {
+ border-style: none;
+ border-width: .5px !important
+ }
+}
+
+.mbsc-ios.mbsc-button {
+ border-radius: .25em;
+ line-height: 2.25em;
+ margin: .5em .25em;
+ padding: 0 .5em;
+ transition: opacity .1s ease-out, background-color .1s ease-out
+}
+
+.mbsc-ios.mbsc-icon-button {
+ border-radius: 4em;
+ line-height: normal;
+ padding: .5em
+}
+
+.mbsc-ios.mbsc-button.mbsc-hover {
+ opacity: .7
+}
+
+.mbsc-ios.mbsc-button.mbsc-active {
+ opacity: .5
+}
+
+.mbsc-ios.mbsc-button.mbsc-disabled,
+.mbsc-ios.mbsc-button:disabled {
+ opacity: .2
+}
+
+.mbsc-ios.mbsc-button-outline.mbsc-active {
+ opacity: 1
+}
+
+.mbsc-ios.mbsc-ltr.mbsc-button-icon-start {
+ padding-right: .375em
+}
+
+.mbsc-ios.mbsc-ltr.mbsc-button-icon-end,
+.mbsc-ios.mbsc-rtl.mbsc-button-icon-start {
+ padding-left: .375em
+}
+
+.mbsc-ios.mbsc-rtl.mbsc-button-icon-end {
+ padding-right: .375em
+}
+
+.mbsc-ios .mbsc-button-group,
+.mbsc-ios .mbsc-button-group-block,
+.mbsc-ios .mbsc-button-group-justified {
+ margin: .5em .75em
+}
+
+.mbsc-ios .mbsc-button-group-block {
+ margin: .5em 1em
+}
+
+.mbsc-ios.mbsc-button-standard {
+ background: #fff;
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-button-flat {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-button-outline {
+ border: 1px solid #1273de;
+ color: #1273de
+}
+
+.mbsc-ios.mbsc-button-outline.mbsc-active {
+ background: #1273de;
+ color: #f7f7f7
+}
+
+.mbsc-ios.mbsc-button.mbsc-focus {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-ios.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-ios.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-ios.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-ios.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-ios.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-ios.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-ios.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-ios.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-ios.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-ios.mbsc-button-primary.mbsc-button-outline.mbsc-active {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-ios.mbsc-button-secondary.mbsc-button-outline.mbsc-active {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-ios.mbsc-button-success.mbsc-button-outline.mbsc-active {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-ios.mbsc-button-danger.mbsc-button-outline.mbsc-active {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-ios.mbsc-button-warning.mbsc-button-outline.mbsc-active {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-ios.mbsc-button-info.mbsc-button-outline.mbsc-active {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-ios.mbsc-button-dark.mbsc-button-outline.mbsc-active {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-button-light.mbsc-button-outline {
+ border-color: #bfbfbf;
+ color: #bfbfbf
+}
+
+.mbsc-ios.mbsc-button-light.mbsc-button-outline.mbsc-active {
+ background: #bfbfbf;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-standard {
+ background: #3b3b3b;
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-button-flat {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-button-outline {
+ border: 1px solid #ffa519;
+ color: #ffa519
+}
+
+.mbsc-ios-dark.mbsc-button-outline.mbsc-active {
+ background: #ffa519;
+ color: #000
+}
+
+.mbsc-ios-dark.mbsc-button.mbsc-focus {
+ background: hsla(0, 0%, 100%, .05)
+}
+
+.mbsc-ios-dark.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-dark.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-ios-dark.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-ios-dark.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-ios-dark.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-ios-dark.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-ios-dark.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-ios-dark.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-ios-dark.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-ios-dark.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-ios-dark.mbsc-button-primary.mbsc-button-outline.mbsc-active {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-ios-dark.mbsc-button-secondary.mbsc-button-outline.mbsc-active {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-ios-dark.mbsc-button-success.mbsc-button-outline.mbsc-active {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-ios-dark.mbsc-button-danger.mbsc-button-outline.mbsc-active {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-ios-dark.mbsc-button-warning.mbsc-button-outline.mbsc-active {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-ios-dark.mbsc-button-info.mbsc-button-outline.mbsc-active {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-ios-dark.mbsc-button-dark.mbsc-button-outline.mbsc-active {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-button-light.mbsc-button-outline {
+ border-color: #bfbfbf;
+ color: #bfbfbf
+}
+
+.mbsc-ios-dark.mbsc-button-light.mbsc-button-outline.mbsc-active {
+ background: #bfbfbf;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button {
+ border-radius: .285715em;
+ font-size: .875em;
+ font-weight: 600;
+ line-height: 1.714286em;
+ margin: .5em;
+ min-width: 4.571429em;
+ padding: .428572em 1.142858em;
+ text-transform: uppercase;
+ transition: box-shadow .2s ease-out, background-color .2s ease-out
+}
+
+.mbsc-material.mbsc-button-outline {
+ border: 1px solid
+}
+
+.mbsc-material.mbsc-button .mbsc-icon {
+ font-size: 1.142858em
+}
+
+.mbsc-material.mbsc-icon-button {
+ border-radius: 2em;
+ font-size: 1em;
+ line-height: normal;
+ min-width: 0;
+ padding: .5em
+}
+
+.mbsc-material.mbsc-icon-button .mbsc-icon {
+ font-size: 1em;
+ height: 1.5em;
+ width: 1.5em
+}
+
+.mbsc-material.mbsc-button.mbsc-disabled,
+.mbsc-material.mbsc-button:disabled {
+ opacity: .3
+}
+
+.mbsc-material.mbsc-ltr.mbsc-button-icon-start {
+ margin-left: -.25em;
+ padding-right: .5em
+}
+
+.mbsc-material.mbsc-ltr.mbsc-button-icon-end,
+.mbsc-material.mbsc-rtl.mbsc-button-icon-start {
+ margin-right: -.25em;
+ padding-left: .5em
+}
+
+.mbsc-material.mbsc-rtl.mbsc-button-icon-end {
+ margin-left: -.25em;
+ padding-right: .5em
+}
+
+.mbsc-material .mbsc-button-group,
+.mbsc-material .mbsc-button-group-justified {
+ margin: .5em
+}
+
+.mbsc-material .mbsc-button-group-block {
+ margin: .5em 1em
+}
+
+.mbsc-material.mbsc-button-standard {
+ background: #cfcfcf;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
+ color: #000
+}
+
+.mbsc-material.mbsc-button-standard.mbsc-hover {
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material.mbsc-button-standard.mbsc-active,
+.mbsc-material.mbsc-button-standard.mbsc-focus {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12)
+}
+
+.mbsc-material.mbsc-button-flat,
+.mbsc-material.mbsc-button-outline {
+ color: #000
+}
+
+.mbsc-material.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-flat.mbsc-hover,
+.mbsc-material.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-outline.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material.mbsc-button-flat.mbsc-focus,
+.mbsc-material.mbsc-button-outline.mbsc-focus {
+ background: rgba(0, 0, 0, .3)
+}
+
+.mbsc-material.mbsc-button-outline {
+ border-color: #000
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #303030
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-primary.mbsc-button-flat.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-flat.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-secondary.mbsc-button-flat.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-flat.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-success.mbsc-button-flat.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-flat.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-danger.mbsc-button-flat.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-flat.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-warning.mbsc-button-flat.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-flat.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-info.mbsc-button-flat.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-flat.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-dark.mbsc-button-flat.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-flat.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-flat.mbsc-active,
+.mbsc-material.mbsc-button-light.mbsc-button-flat.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-flat.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-primary.mbsc-button-outline.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material.mbsc-button-primary.mbsc-button-outline.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-secondary.mbsc-button-outline.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material.mbsc-button-secondary.mbsc-button-outline.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-success.mbsc-button-outline.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material.mbsc-button-success.mbsc-button-outline.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-danger.mbsc-button-outline.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material.mbsc-button-danger.mbsc-button-outline.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-warning.mbsc-button-outline.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material.mbsc-button-warning.mbsc-button-outline.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-info.mbsc-button-outline.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material.mbsc-button-info.mbsc-button-outline.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-dark.mbsc-button-outline.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material.mbsc-button-dark.mbsc-button-outline.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-material.mbsc-button-light.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material.mbsc-button-light.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-dark.mbsc-button-standard {
+ background: #2b2b2b;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-button-standard.mbsc-hover {
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-dark.mbsc-button-standard.mbsc-active,
+.mbsc-material-dark.mbsc-button-standard.mbsc-focus {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-dark.mbsc-button-flat,
+.mbsc-material-dark.mbsc-button-outline {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-flat.mbsc-hover,
+.mbsc-material-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-dark.mbsc-button-flat.mbsc-focus,
+.mbsc-material-dark.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-dark.mbsc-button-outline {
+ border-color: #fff
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-flat.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-flat.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-flat.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-flat.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-success.mbsc-button-flat.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-flat.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-flat.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-flat.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-flat.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-flat.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-info.mbsc-button-flat.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-flat.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-flat.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-flat.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-flat.mbsc-active,
+.mbsc-material-dark.mbsc-button-light.mbsc-button-flat.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-flat.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-outline.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-dark.mbsc-button-primary.mbsc-button-outline.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-outline.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-dark.mbsc-button-secondary.mbsc-button-outline.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-success.mbsc-button-outline.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-dark.mbsc-button-success.mbsc-button-outline.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-outline.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-dark.mbsc-button-danger.mbsc-button-outline.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-outline.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-dark.mbsc-button-warning.mbsc-button-outline.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-info.mbsc-button-outline.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-dark.mbsc-button-info.mbsc-button-outline.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-outline.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-dark.mbsc-button-dark.mbsc-button-outline.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-material-dark.mbsc-button-light.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-dark.mbsc-button-light.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-windows.mbsc-button {
+ border: .125em solid transparent;
+ line-height: 1.75em;
+ margin: .5em .25em;
+ padding: 0 .5em;
+ transition: border-color .1s ease-out, background-color .1s ease-out
+}
+
+.mbsc-windows.mbsc-icon-button {
+ height: 2em;
+ width: 2.75em
+}
+
+.mbsc-windows.mbsc-button-flat {
+ transition: background-color .1s ease-out
+}
+
+.mbsc-windows.mbsc-button-flat.mbsc-hover {
+ opacity: .7
+}
+
+.mbsc-windows.mbsc-button-flat.mbsc-active {
+ opacity: 1
+}
+
+.mbsc-windows.mbsc-button.mbsc-disabled,
+.mbsc-windows.mbsc-button:disabled {
+ opacity: .3
+}
+
+.mbsc-windows.mbsc-ltr.mbsc-button-icon-start {
+ padding-right: .5em
+}
+
+.mbsc-windows.mbsc-ltr.mbsc-button-icon-end,
+.mbsc-windows.mbsc-rtl.mbsc-button-icon-start {
+ padding-left: .5em
+}
+
+.mbsc-windows.mbsc-rtl.mbsc-button-icon-end {
+ padding-right: .5em
+}
+
+.mbsc-windows .mbsc-button-group,
+.mbsc-windows .mbsc-button-group-justified {
+ margin: .5em .75em
+}
+
+.mbsc-windows .mbsc-button-group-block {
+ margin: .5em 1em
+}
+
+.mbsc-windows.mbsc-button-standard {
+ background: #ccc;
+ border-color: #ccc;
+ color: #333
+}
+
+.mbsc-windows.mbsc-button-standard.mbsc-hover {
+ border-color: #7a7a7a
+}
+
+.mbsc-windows.mbsc-button-standard.mbsc-active {
+ background: #7a7a7a;
+ border-color: #7a7a7a
+}
+
+.mbsc-windows.mbsc-button-flat {
+ color: #333
+}
+
+.mbsc-windows.mbsc-button-flat.mbsc-active {
+ background: #f2f2f2;
+ border-color: #f2f2f2;
+ color: #333
+}
+
+.mbsc-windows.mbsc-button-outline {
+ border: .125em solid #999;
+ color: #999
+}
+
+.mbsc-windows.mbsc-button-outline.mbsc-hover {
+ border-color: gray
+}
+
+.mbsc-windows.mbsc-button-outline.mbsc-active {
+ background: gray;
+ border-color: gray;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #333
+}
+
+.mbsc-windows.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ border-color: #3f97f6;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ border-color: #90979e;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ border-color: #43be5f;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ border-color: #f5504e;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ border-color: #f8b042;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ border-color: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ border-color: #47494a;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ border-color: #fff;
+ color: #000
+}
+
+.mbsc-windows.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-windows.mbsc-button-primary.mbsc-button-flat.mbsc-active {
+ background: #88bff9;
+ border-color: #88bff9
+}
+
+.mbsc-windows.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-windows.mbsc-button-secondary.mbsc-button-flat.mbsc-active {
+ background: #b9bdc2;
+ border-color: #b9bdc2
+}
+
+.mbsc-windows.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-windows.mbsc-button-success.mbsc-button-flat.mbsc-active {
+ background: #7cd28f;
+ border-color: #7cd28f
+}
+
+.mbsc-windows.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-windows.mbsc-button-danger.mbsc-button-flat.mbsc-active {
+ background: #f99896;
+ border-color: #f99896
+}
+
+.mbsc-windows.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-windows.mbsc-button-warning.mbsc-button-flat.mbsc-active {
+ background: #fbcf8c;
+ border-color: #fbcf8c
+}
+
+.mbsc-windows.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-button-info.mbsc-button-flat.mbsc-active {
+ background: #94d0d9;
+ border-color: #94d0d9
+}
+
+.mbsc-windows.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-windows.mbsc-button-dark.mbsc-button-flat.mbsc-active {
+ background: #6c7071;
+ border-color: #6c7071
+}
+
+.mbsc-windows.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-windows.mbsc-button-light.mbsc-button-flat.mbsc-active {
+ background: #fff;
+ border-color: #fff
+}
+
+.mbsc-windows.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-windows.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-windows.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-windows.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-windows.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-windows.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-windows.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-windows.mbsc-button-primary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-primary.mbsc-button-standard.mbsc-hover {
+ border-color: #0964c6
+}
+
+.mbsc-windows.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-primary.mbsc-button-standard.mbsc-active {
+ background: #0964c6;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-secondary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-secondary.mbsc-button-standard.mbsc-hover {
+ border-color: #5d646b
+}
+
+.mbsc-windows.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-secondary.mbsc-button-standard.mbsc-active {
+ background: #5d646b;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-success.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-success.mbsc-button-standard.mbsc-hover {
+ border-color: #287339
+}
+
+.mbsc-windows.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-success.mbsc-button-standard.mbsc-active {
+ background: #287339;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-danger.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-danger.mbsc-button-standard.mbsc-hover {
+ border-color: #d10e0c
+}
+
+.mbsc-windows.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-danger.mbsc-button-standard.mbsc-active {
+ background: #d10e0c;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-warning.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-warning.mbsc-button-standard.mbsc-hover {
+ border-color: #cc7f08
+}
+
+.mbsc-windows.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-warning.mbsc-button-standard.mbsc-active {
+ background: #cc7f08;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-info.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-info.mbsc-button-standard.mbsc-hover {
+ border-color: #317e89
+}
+
+.mbsc-windows.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-info.mbsc-button-standard.mbsc-active {
+ background: #317e89;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-dark.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-dark.mbsc-button-standard.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-dark.mbsc-button-standard.mbsc-active {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-button-light.mbsc-button-outline.mbsc-hover,
+.mbsc-windows.mbsc-button-light.mbsc-button-standard.mbsc-hover {
+ border-color: #999
+}
+
+.mbsc-windows.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-windows.mbsc-button-light.mbsc-button-standard.mbsc-active {
+ background: #999;
+ color: #47494a
+}
+
+.mbsc-windows-dark.mbsc-button-standard {
+ background: #404040;
+ border-color: #404040;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-standard.mbsc-hover {
+ border-color: #ababab
+}
+
+.mbsc-windows-dark.mbsc-button-standard.mbsc-active {
+ background: #ababab;
+ border-color: #ababab
+}
+
+.mbsc-windows-dark.mbsc-button-flat {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-flat.mbsc-active {
+ background: #676767;
+ border-color: #676767;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-outline {
+ border: .125em solid #737373;
+ color: #737373
+}
+
+.mbsc-windows-dark.mbsc-button-outline.mbsc-hover {
+ border-color: #8d8d8d
+}
+
+.mbsc-windows-dark.mbsc-button-outline.mbsc-active {
+ background: #8d8d8d;
+ border-color: #8d8d8d;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #fff
+}
+
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ border-color: #3f97f6;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ border-color: #90979e;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ border-color: #43be5f;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ border-color: #f5504e;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ border-color: #f8b042;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ border-color: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ border-color: #47494a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ border-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-flat.mbsc-active {
+ background: #88bff9;
+ border-color: #88bff9
+}
+
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-flat.mbsc-active {
+ background: #b9bdc2;
+ border-color: #b9bdc2
+}
+
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-flat.mbsc-active {
+ background: #7cd28f;
+ border-color: #7cd28f
+}
+
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-flat.mbsc-active {
+ background: #f99896;
+ border-color: #f99896
+}
+
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-flat.mbsc-active {
+ background: #fbcf8c;
+ border-color: #fbcf8c
+}
+
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-flat.mbsc-active {
+ background: #94d0d9;
+ border-color: #94d0d9
+}
+
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-flat.mbsc-active {
+ background: #6c7071;
+ border-color: #6c7071
+}
+
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-flat.mbsc-active {
+ background: #fff;
+ border-color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-standard.mbsc-hover {
+ border-color: #0964c6
+}
+
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-primary.mbsc-button-standard.mbsc-active {
+ background: #0964c6;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-standard.mbsc-hover {
+ border-color: #5d646b
+}
+
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-secondary.mbsc-button-standard.mbsc-active {
+ background: #5d646b;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-standard.mbsc-hover {
+ border-color: #287339
+}
+
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-success.mbsc-button-standard.mbsc-active {
+ background: #287339;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-standard.mbsc-hover {
+ border-color: #d10e0c
+}
+
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-danger.mbsc-button-standard.mbsc-active {
+ background: #d10e0c;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-standard.mbsc-hover {
+ border-color: #cc7f08
+}
+
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-warning.mbsc-button-standard.mbsc-active {
+ background: #cc7f08;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-standard.mbsc-hover {
+ border-color: #317e89
+}
+
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-info.mbsc-button-standard.mbsc-active {
+ background: #317e89;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-standard.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-dark.mbsc-button-standard.mbsc-active {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-standard.mbsc-hover {
+ border-color: #999
+}
+
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-windows-dark.mbsc-button-light.mbsc-button-standard.mbsc-active {
+ background: #999;
+ color: #47494a
+}
+
+.mbsc-button {
+ -moz-box-pack: center;
+ -moz-box-align: center;
+ align-items: center;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ cursor: pointer;
+ display: inline-block;
+ display: -moz-inline-box;
+ display: inline-flex;
+ font-size: 1em;
+ justify-content: center;
+ overflow: hidden;
+ position: relative;
+ text-align: center;
+ text-overflow: ellipsis;
+ touch-action: manipulation;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ vertical-align: middle;
+ white-space: nowrap;
+ z-index: 1
+}
+
+.mbsc-button.mbsc-disabled,
+.mbsc-button:disabled {
+ cursor: not-allowed
+}
+
+.mbsc-button:focus {
+ outline: 0
+}
+
+.mbsc-button::-moz-focus-inner {
+ border: 0
+}
+
+.mbsc-icon-button {
+ -moz-box-flex: 0;
+ flex: 0 0 auto;
+ height: 2.5em;
+ padding: .5em;
+ width: 2.5em
+}
+
+.mbsc-button-icon>*,
+.mbsc-button-icon>*>* {
+ height: 100%
+}
+
+.mbsc-button-icon-end {
+ -moz-box-ordinal-group: 2;
+ order: 1
+}
+
+.mbsc-button-group,
+.mbsc-button-group-block,
+.mbsc-button-group-justified {
+ border: 1px solid transparent
+}
+
+.mbsc-button-block,
+.mbsc-button-group-block .mbsc-button {
+ display: block;
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+ width: 100%
+}
+
+.mbsc-button-group-justified,
+.mbsc-button-group-justified mbsc-button {
+ display: -moz-box;
+ display: flex;
+ flex-wrap: wrap
+}
+
+.mbsc-button-group-justified .mbsc-button,
+.mbsc-button-group-justified mbsc-button {
+ -moz-box-flex: 1;
+ flex: 1 auto
+}
+
+.mbsc-ios.mbsc-popup-wrapper-bottom-full {
+ padding-top: 1em
+}
+
+.mbsc-ios.mbsc-popup-wrapper-top-full {
+ padding-bottom: 1em
+}
+
+.mbsc-ios.mbsc-popup-top {
+ border-bottom: 1px solid
+}
+
+.mbsc-ios.mbsc-popup-bottom {
+ border-top: 1px solid
+}
+
+.mbsc-ios.mbsc-popup-body-center {
+ border-radius: .9375em
+}
+
+.mbsc-ios.mbsc-popup-body-bottom-full {
+ border-radius: .75em .75em 0 0
+}
+
+.mbsc-ios.mbsc-popup-body-top-full {
+ border-radius: 0 0 .75em .75em
+}
+
+.mbsc-ios.mbsc-popup-body-anchored {
+ border-radius: .9375em
+}
+
+.mbsc-ios.mbsc-popup-arrow {
+ border-radius: 0 .375em
+}
+
+.mbsc-ios.mbsc-popup-header {
+ font-weight: 700;
+ left: 0;
+ line-height: 1.25em;
+ padding: .75em 4.375em;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ top: 0;
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-popup-header-center,
+.mbsc-ios.mbsc-popup-header-no-buttons {
+ border-bottom: 1px solid;
+ position: relative
+}
+
+.mbsc-ios.mbsc-popup-header-center {
+ padding: .75em .5em
+}
+
+.mbsc-ios.mbsc-popup-bottom-full .mbsc-popup-header,
+.mbsc-ios.mbsc-popup-top-full .mbsc-popup-header {
+ padding: 1.125em 4.375em
+}
+
+.mbsc-ios.mbsc-popup-buttons {
+ -moz-box-ordinal-group: 0;
+ border-bottom: 1px solid;
+ order: -1
+}
+
+.mbsc-ios.mbsc-popup-buttons.mbsc-ltr {
+ text-align: right
+}
+
+.mbsc-ios.mbsc-popup-buttons.mbsc-rtl {
+ text-align: left
+}
+
+.mbsc-ios.mbsc-popup-button.mbsc-font {
+ margin-bottom: .25em;
+ margin-top: .25em;
+ z-index: 2
+}
+
+.mbsc-ios.mbsc-popup-button-primary {
+ font-weight: 700
+}
+
+.mbsc-ios.mbsc-popup-button-close.mbsc-ltr {
+ float: left
+}
+
+.mbsc-ios.mbsc-popup-button-close.mbsc-rtl {
+ float: right
+}
+
+.mbsc-ios.mbsc-popup-buttons-anchored,
+.mbsc-ios.mbsc-popup-buttons-bottom,
+.mbsc-ios.mbsc-popup-buttons-top {
+ padding: 0 .25em
+}
+
+.mbsc-ios.mbsc-popup-buttons-bottom-full,
+.mbsc-ios.mbsc-popup-buttons-top-full {
+ padding: .375em .25em
+}
+
+.mbsc-ios.mbsc-popup-buttons.mbsc-flex {
+ -moz-box-ordinal-group: 1;
+ background: none;
+ border: 0;
+ order: 0;
+ padding: 0
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-font {
+ -moz-box-flex: 1;
+ display: block;
+ flex: 1 1 100%
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-icon-button {
+ padding: 0 .5em
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-font.mbsc-button {
+ margin-bottom: .5em;
+ margin-top: .5em;
+ opacity: 1
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-font.mbsc-button-flat {
+ background: none;
+ border-radius: 0;
+ border-top: 1px solid;
+ line-height: 2.75em;
+ margin: 0
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-button-flat.mbsc-ltr {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-button-flat.mbsc-rtl {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-button-flat:last-child {
+ border-left: 0;
+ border-right: 0
+}
+
+.mbsc-ios.mbsc-popup-body-round {
+ border-radius: .9375em
+}
+
+.mbsc-ios.mbsc-popup-pointer .mbsc-popup-body-round {
+ border-radius: .5em
+}
+
+.mbsc-ios.mbsc-popup-round .mbsc-popup {
+ border: 0
+}
+
+.mbsc-ios.mbsc-popup-round .mbsc-popup-body-bottom-full {
+ border-radius: .75em .75em 0 0
+}
+
+.mbsc-ios.mbsc-popup-round .mbsc-popup-body-top-full {
+ border-radius: 0 0 .75em .75em
+}
+
+.mbsc-ios.mbsc-popup-arrow {
+ background: #f2f2f7;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios.mbsc-popup-bottom,
+.mbsc-ios.mbsc-popup-top {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-popup-body {
+ background: #f2f2f7;
+ color: #000
+}
+
+.mbsc-ios.mbsc-popup-body-anchored,
+.mbsc-ios.mbsc-popup-body-center,
+.mbsc-ios.mbsc-popup-body-round {
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12)
+}
+
+.mbsc-ios.mbsc-popup-buttons,
+.mbsc-ios.mbsc-popup-header-center,
+.mbsc-ios.mbsc-popup-header-no-buttons {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-popup-buttons-bottom,
+.mbsc-ios.mbsc-popup-buttons-top {
+ background: #f7f7f7
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-button-flat.mbsc-font {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-font.mbsc-focus,
+.mbsc-ios.mbsc-popup-button-flex.mbsc-font.mbsc-hover {
+ background: #eaeaea
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-font.mbsc-active {
+ background: #ccc
+}
+
+.mbsc-ios.mbsc-popup-button-flex.mbsc-button.mbsc-disabled {
+ color: rgba(0, 122, 255, .2)
+}
+
+.mbsc-ios-dark.mbsc-popup-arrow {
+ background: #1c1c1c;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-dark.mbsc-popup-bottom,
+.mbsc-ios-dark.mbsc-popup-top {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-popup-body {
+ background: #1c1c1c;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-popup-body-anchored,
+.mbsc-ios-dark.mbsc-popup-body-center,
+.mbsc-ios-dark.mbsc-popup-body-round {
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12)
+}
+
+.mbsc-ios-dark.mbsc-popup-buttons,
+.mbsc-ios-dark.mbsc-popup-header-center,
+.mbsc-ios-dark.mbsc-popup-header-no-buttons {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-popup-buttons-anchored,
+.mbsc-ios-dark.mbsc-popup-buttons-bottom,
+.mbsc-ios-dark.mbsc-popup-buttons-top {
+ background: #292929
+}
+
+.mbsc-ios-dark.mbsc-popup-button-flex.mbsc-button-flat.mbsc-font {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-popup-button-flex.mbsc-font.mbsc-focus,
+.mbsc-ios-dark.mbsc-popup-button-flex.mbsc-font.mbsc-hover {
+ background: #242424
+}
+
+.mbsc-ios-dark.mbsc-popup-button-flex.mbsc-font.mbsc-active {
+ background: #333
+}
+
+.mbsc-ios-dark.mbsc-popup-button-flex.mbsc-button.mbsc-disabled {
+ color: rgba(255, 159, 10, .2)
+}
+
+.mbsc-material.mbsc-popup-body-anchored,
+.mbsc-material.mbsc-popup-body-center,
+.mbsc-material.mbsc-popup-body-round {
+ border-radius: .25em
+}
+
+.mbsc-material.mbsc-popup-header {
+ font-size: 1.25em;
+ font-weight: 500;
+ line-height: 1.4em;
+ padding: .8em .8em 0
+}
+
+.mbsc-material.mbsc-popup-buttons {
+ display: block;
+ padding: .5em
+}
+
+.mbsc-material.mbsc-popup-buttons.mbsc-ltr,
+.mbsc-material.mbsc-popup-buttons.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-material.mbsc-popup-button.mbsc-button-flat {
+ margin-left: 0;
+ margin-right: 0
+}
+
+.mbsc-material.mbsc-popup-button.mbsc-font {
+ font-size: .9375em;
+ font-weight: 500;
+ margin-bottom: 0;
+ margin-top: 0
+}
+
+.mbsc-material.mbsc-popup-round .mbsc-popup-body-bottom-full {
+ border-radius: .25em .25em 0 0
+}
+
+.mbsc-material.mbsc-popup-round .mbsc-popup-body-top-full {
+ border-radius: 0 0 .25em .25em
+}
+
+.mbsc-material.mbsc-popup-body {
+ background: #fff;
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12);
+ color: #303030
+}
+
+.mbsc-material.mbsc-popup-arrow {
+ background: #fff;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-material.mbsc-popup-button.mbsc-font {
+ color: #1a73e8
+}
+
+.mbsc-material-dark.mbsc-popup-body {
+ background: #303030;
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12);
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-popup-arrow {
+ background: #303030;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-dark.mbsc-popup-button.mbsc-font {
+ color: #87b0f3
+}
+
+.mbsc-windows.mbsc-popup {
+ border: 1px solid
+}
+
+.mbsc-windows.mbsc-popup-arrow {
+ border: 1px solid;
+ height: 1em;
+ width: 1em
+}
+
+.mbsc-windows.mbsc-popup-arrow-bottom,
+.mbsc-windows.mbsc-popup-arrow-top {
+ margin-left: -.5em
+}
+
+.mbsc-windows.mbsc-popup-arrow-left,
+.mbsc-windows.mbsc-popup-arrow-right {
+ margin-top: -.5em
+}
+
+.mbsc-windows.mbsc-popup-arrow-bottom {
+ top: 1.5em
+}
+
+.mbsc-windows.mbsc-popup-arrow-top {
+ bottom: 1.5em
+}
+
+.mbsc-windows.mbsc-popup-arrow-left {
+ right: 1.5em
+}
+
+.mbsc-windows.mbsc-popup-arrow-right {
+ left: 1.5em
+}
+
+.mbsc-windows.mbsc-popup-header {
+ border-bottom: 1px solid;
+ font-weight: 700;
+ padding: .5em;
+ text-align: center
+}
+
+.mbsc-windows.mbsc-popup-buttons {
+ -moz-box-orient: horizontal;
+ -moz-box-direction: reverse;
+ border-top: 1px solid;
+ display: -moz-box;
+ display: flex;
+ flex-direction: row-reverse
+}
+
+.mbsc-windows.mbsc-popup-button.mbsc-font {
+ -moz-box-flex: 1;
+ flex: 1 1;
+ padding-bottom: .25em;
+ padding-top: .25em
+}
+
+.mbsc-windows.mbsc-popup-button.mbsc-button-flat {
+ margin: 0
+}
+
+.mbsc-windows.mbsc-popup {
+ box-shadow: 0 6px 14px 0 rgba(0, 0, 0, .133), 0 1px 4px 0 rgba(0, 0, 0, .11);
+ color: #333
+}
+
+.mbsc-windows.mbsc-popup,
+.mbsc-windows.mbsc-popup-arrow {
+ background: #fff;
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-popup-buttons,
+.mbsc-windows.mbsc-popup-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-dark.mbsc-popup {
+ box-shadow: 0 6px 14px 0 rgba(0, 0, 0, .133), 0 1px 4px 0 rgba(0, 0, 0, .11);
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-popup,
+.mbsc-windows-dark.mbsc-popup-arrow {
+ background: #1a1a1a;
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-popup-buttons,
+.mbsc-windows-dark.mbsc-popup-header {
+ border-color: #343434
+}
+
+@-webkit-keyframes mbsc-fade-in {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes mbsc-fade-in {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes mbsc-fade-out {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes mbsc-fade-out {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes mbsc-pop-in {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.8);
+ transform: scale(.8)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@keyframes mbsc-pop-in {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.8);
+ transform: scale(.8)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@-webkit-keyframes mbsc-pop-out {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(.8);
+ transform: scale(.8)
+ }
+}
+
+@keyframes mbsc-pop-out {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(.8);
+ transform: scale(.8)
+ }
+}
+
+@-webkit-keyframes mbsc-slide-up-in {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%)
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+}
+
+@keyframes mbsc-slide-up-in {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%)
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+}
+
+@-webkit-keyframes mbsc-slide-up-out {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%)
+ }
+}
+
+@keyframes mbsc-slide-up-out {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%)
+ }
+}
+
+@-webkit-keyframes mbsc-slide-down-in {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%)
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+}
+
+@keyframes mbsc-slide-down-in {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%)
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+}
+
+@-webkit-keyframes mbsc-slide-down-out {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%)
+ }
+}
+
+@keyframes mbsc-slide-down-out {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0)
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%)
+ }
+}
+
+.mbsc-popup-open-ios {
+ bottom: 0;
+ height: auto;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-popup-ctx {
+ --mbsc-safe-top: 0;
+ --mbsc-safe-right: 0;
+ --mbsc-safe-bottom: 0;
+ --mbsc-safe-left: 0;
+ position: relative
+}
+
+.mbsc-popup-limits {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: -1
+}
+
+.mbsc-popup-limits-anchored,
+.mbsc-popup-limits-center {
+ margin: 1em
+}
+
+.mbsc-popup,
+.mbsc-popup-wrapper {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+.mbsc-popup-wrapper {
+ -moz-box-pack: center;
+ border: 0 solid transparent;
+ bottom: 0;
+ justify-content: center;
+ left: 0;
+ pointer-events: none;
+ position: fixed;
+ right: 0;
+ top: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 99998
+}
+
+.mbsc-popup-wrapper-ctx {
+ bottom: auto;
+ height: 100%;
+ overflow: hidden;
+ position: absolute;
+ right: auto;
+ width: 100%
+}
+
+.mbsc-popup-wrapper-center {
+ -moz-box-align: center;
+ align-items: center;
+ border-width: var(--mbsc-safe-top) var(--mbsc-safe-right) var(--mbsc-safe-bottom) var(--mbsc-safe-left);
+ padding: 1em
+}
+
+.mbsc-popup-wrapper-top {
+ -moz-box-align: start;
+ align-items: flex-start;
+ border-bottom: var(--mbsc-safe-bottom) solid transparent
+}
+
+.mbsc-popup-wrapper-bottom {
+ -moz-box-align: end;
+ align-items: flex-end;
+ border-top-width: var(--mbsc-safe-top)
+}
+
+.mbsc-popup-wrapper-anchored {
+ border-width: 0 var(--mbsc-safe-right) var(--mbsc-safe-bottom) var(--mbsc-safe-left)
+}
+
+.mbsc-popup-hidden {
+ opacity: 0
+}
+
+.mbsc-popup-overlay {
+ background: rgba(0, 0, 0, .5);
+ bottom: 0;
+ left: 0;
+ margin: -10em;
+ pointer-events: auto;
+ position: absolute;
+ right: 0;
+ top: 0;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ z-index: 1
+}
+
+.mbsc-popup-overlay-in {
+ -webkit-animation: mbsc-fade-in .15s cubic-bezier(0, 0, .2, 1);
+ animation: mbsc-fade-in .15s cubic-bezier(0, 0, .2, 1);
+ opacity: 1
+}
+
+.mbsc-popup-overlay-out {
+ -webkit-animation: mbsc-fade-out 75ms cubic-bezier(.4, 0, 1, 1);
+ animation: mbsc-fade-out 75ms cubic-bezier(.4, 0, 1, 1);
+ opacity: 0
+}
+
+.mbsc-popup {
+ max-height: 100%;
+ min-width: 12em;
+ pointer-events: auto;
+ position: relative;
+ text-shadow: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 2
+}
+
+.mbsc-popup-center {
+ min-width: 16em
+}
+
+.mbsc-popup-bottom {
+ bottom: 0;
+ width: 100%
+}
+
+.mbsc-popup-top {
+ top: 0;
+ width: 100%
+}
+
+.mbsc-popup-anchored {
+ position: absolute
+}
+
+.mbsc-popup-anchored-left {
+ margin-left: -1em
+}
+
+.mbsc-popup-anchored-right {
+ margin-left: 1em
+}
+
+.mbsc-popup-arrow-wrapper {
+ overflow: hidden;
+ pointer-events: none;
+ position: absolute;
+ z-index: 1
+}
+
+.mbsc-popup-arrow-wrapper-bottom,
+.mbsc-popup-arrow-wrapper-top {
+ height: 2em;
+ left: 0;
+ right: 0
+}
+
+.mbsc-popup-arrow-wrapper-left,
+.mbsc-popup-arrow-wrapper-right {
+ bottom: 0;
+ top: 0;
+ width: 2em
+}
+
+.mbsc-popup-arrow-wrapper-top {
+ top: 100%
+}
+
+.mbsc-popup-arrow-wrapper-bottom {
+ bottom: 100%
+}
+
+.mbsc-popup-arrow-wrapper-left {
+ left: 100%
+}
+
+.mbsc-popup-arrow-wrapper-right {
+ right: 100%
+}
+
+.mbsc-popup-arrow {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 1.5em;
+ pointer-events: auto;
+ position: absolute;
+ width: 1.5em
+}
+
+.mbsc-popup-arrow-top {
+ bottom: 1.25em
+}
+
+.mbsc-popup-arrow-bottom {
+ top: 1.25em
+}
+
+.mbsc-popup-arrow-bottom,
+.mbsc-popup-arrow-top {
+ left: 50%;
+ margin-left: -.75em;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg)
+}
+
+.mbsc-popup-arrow-left {
+ right: 1.25em
+}
+
+.mbsc-popup-arrow-right {
+ left: 1.25em
+}
+
+.mbsc-popup-arrow-left,
+.mbsc-popup-arrow-right {
+ margin-top: -.75em;
+ top: 50%;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg)
+}
+
+.mbsc-popup-focus {
+ outline: 0
+}
+
+.mbsc-popup-body {
+ overflow: hidden;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0)
+}
+
+.mbsc-popup-body-top {
+ padding-top: var(--mbsc-safe-top)
+}
+
+.mbsc-popup-body-bottom {
+ padding-bottom: var(--mbsc-safe-bottom)
+}
+
+.mbsc-popup-body-bottom,
+.mbsc-popup-body-top {
+ padding-left: var(--mbsc-safe-left);
+ padding-right: var(--mbsc-safe-right)
+}
+
+.mbsc-popup-body-round {
+ padding: 0
+}
+
+.mbsc-popup-header {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-popup-content {
+ -webkit-overflow-scrolling: touch;
+ overflow: auto
+}
+
+.mbsc-popup-padding {
+ padding: 1em
+}
+
+.mbsc-popup-button.mbsc-icon-button {
+ height: auto
+}
+
+.mbsc-popup-pop-in {
+ -webkit-animation: mbsc-pop-in .15s cubic-bezier(0, 0, .2, 1);
+ animation: mbsc-pop-in .15s cubic-bezier(0, 0, .2, 1);
+ opacity: 1
+}
+
+.mbsc-popup-pop-out {
+ -webkit-animation: mbsc-pop-out 75ms cubic-bezier(.4, 0, 1, 1) forwards;
+ animation: mbsc-pop-out 75ms cubic-bezier(.4, 0, 1, 1) forwards;
+ opacity: 0
+}
+
+.mbsc-popup-slide-up-in {
+ -webkit-animation: mbsc-slide-up-in .25s cubic-bezier(0, 0, .2, 1);
+ animation: mbsc-slide-up-in .25s cubic-bezier(0, 0, .2, 1)
+}
+
+.mbsc-popup-slide-up-out {
+ -webkit-animation: mbsc-slide-up-out .2s cubic-bezier(.4, 0, 1, 1) forwards;
+ animation: mbsc-slide-up-out .2s cubic-bezier(.4, 0, 1, 1) forwards
+}
+
+.mbsc-popup-slide-down-in {
+ -webkit-animation: mbsc-slide-down-in .25s cubic-bezier(0, 0, .2, 1);
+ animation: mbsc-slide-down-in .25s cubic-bezier(0, 0, .2, 1)
+}
+
+.mbsc-popup-slide-down-out {
+ -webkit-animation: mbsc-slide-down-out .2s cubic-bezier(.4, 0, 1, 1) forwards;
+ animation: mbsc-slide-down-out .2s cubic-bezier(.4, 0, 1, 1) forwards
+}
+
+.mbsc-popup-pointer .mbsc-popup-overlay-anchored,
+.mbsc-popup-pointer.mbsc-picker .mbsc-popup-overlay {
+ background: none
+}
+
+.mbsc-popup-round .mbsc-popup-slide-up-in {
+ -webkit-animation-name: mbsc-slide-up-in, mbsc-fade-in;
+ animation-name: mbsc-slide-up-in, mbsc-fade-in
+}
+
+.mbsc-popup-round .mbsc-popup-slide-up-out {
+ -webkit-animation-name: mbsc-slide-up-out, mbsc-fade-out;
+ animation-name: mbsc-slide-up-out, mbsc-fade-out
+}
+
+.mbsc-popup-round .mbsc-popup-slide-down-in {
+ -webkit-animation-name: mbsc-slide-down-in, mbsc-fade-in;
+ animation-name: mbsc-slide-down-in, mbsc-fade-in
+}
+
+.mbsc-popup-round .mbsc-popup-slide-down-out {
+ -webkit-animation-name: mbsc-slide-down-out, mbsc-fade-out;
+ animation-name: mbsc-slide-down-out, mbsc-fade-out
+}
+
+.mbsc-popup-round .mbsc-popup-bottom,
+.mbsc-popup-round .mbsc-popup-top {
+ margin-bottom: 3em;
+ margin-top: 3em;
+ width: auto
+}
+
+.mbsc-ios.mbsc-calendar-controls {
+ padding: 2px
+}
+
+.mbsc-ios.mbsc-calendar-cell {
+ border-top-style: solid;
+ border-top-width: 1px
+}
+
+.mbsc-ios.mbsc-calendar-cell-text {
+ border-radius: 2em;
+ height: 2em;
+ line-height: 2em;
+ padding: 0 .5em
+}
+
+.mbsc-ios.mbsc-calendar-week-day {
+ font-size: .625em;
+ height: 1.7em;
+ line-height: 1.7em
+}
+
+.mbsc-ios.mbsc-calendar-week-nr {
+ font-size: .75em;
+ font-weight: 700;
+ height: auto;
+ line-height: 3em;
+ width: 2em
+}
+
+.mbsc-ios.mbsc-calendar-day-text {
+ border: 2px solid transparent;
+ border-radius: 2em;
+ height: 1.625em;
+ line-height: 1.625em;
+ margin: .1875em;
+ padding: 0;
+ width: 1.625em
+}
+
+.mbsc-ios.mbsc-range-day .mbsc-calendar-cell-inner {
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-range-day:after,
+.mbsc-ios.mbsc-range-hover:before {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ content: "";
+ height: 1.875em;
+ left: -1px;
+ position: absolute;
+ right: -1px;
+ top: .25em;
+ z-index: 0
+}
+
+.mbsc-ios.mbsc-range-hover:before {
+ border-bottom: 2px dashed;
+ border-top: 2px dashed
+}
+
+.mbsc-ios.mbsc-range-day-end.mbsc-rtl:after,
+.mbsc-ios.mbsc-range-day-start.mbsc-ltr:after,
+.mbsc-ios.mbsc-range-hover-end.mbsc-rtl:before,
+.mbsc-ios.mbsc-range-hover-start.mbsc-ltr:before {
+ border-radius: 2em 0 0 2em;
+ left: 50%;
+ margin-left: -.9375em
+}
+
+.mbsc-ios.mbsc-range-day-end.mbsc-ltr:after,
+.mbsc-ios.mbsc-range-day-start.mbsc-rtl:after,
+.mbsc-ios.mbsc-range-hover-end.mbsc-ltr:before,
+.mbsc-ios.mbsc-range-hover-start.mbsc-rtl:before {
+ border-radius: 0 2em 2em 0;
+ margin-right: -.9375em;
+ right: 50%
+}
+
+.mbsc-ios.mbsc-range-day-start.mbsc-range-day-end:after,
+.mbsc-ios.mbsc-range-hover-start.mbsc-range-hover-end:before {
+ display: none
+}
+
+.mbsc-ios.mbsc-calendar-day-marked {
+ padding-bottom: .4375em
+}
+
+.mbsc-ios.mbsc-calendar-marks {
+ margin-top: -.0625em
+}
+
+.mbsc-ios.mbsc-calendar-mark {
+ border-radius: .375em;
+ height: .375em;
+ margin: 0 .0625em;
+ width: .375em
+}
+
+.mbsc-ios.mbsc-calendar-day-colors .mbsc-calendar-day-text {
+ background-clip: padding-box
+}
+
+.mbsc-ios.mbsc-calendar-day-colors.mbsc-hover .mbsc-calendar-cell-text {
+ background-clip: border-box
+}
+
+.mbsc-ios.mbsc-calendar-text:before {
+ border-radius: .4em
+}
+
+.mbsc-ios.mbsc-calendar-label {
+ font-weight: 600
+}
+
+.mbsc-ios.mbsc-calendar-label-background {
+ background: currentColor;
+ margin: 0 -.1em;
+ opacity: .3;
+ transition: opacity .15s ease-in-out
+}
+
+.mbsc-ios.mbsc-calendar-label-end.mbsc-rtl .mbsc-calendar-label-background,
+.mbsc-ios.mbsc-calendar-label-start.mbsc-ltr .mbsc-calendar-label-background {
+ border-bottom-left-radius: .4em;
+ border-top-left-radius: .4em;
+ margin-left: 0
+}
+
+.mbsc-ios.mbsc-calendar-label-end.mbsc-ltr .mbsc-calendar-label-background,
+.mbsc-ios.mbsc-calendar-label-start.mbsc-rtl .mbsc-calendar-label-background {
+ border-bottom-right-radius: .4em;
+ border-top-right-radius: .4em;
+ margin-right: 0
+}
+
+.mbsc-ios.mbsc-calendar-label-hover .mbsc-calendar-label-background {
+ opacity: .6
+}
+
+.mbsc-ios.mbsc-calendar-label.mbsc-calendar-label-hover:before {
+ background: none
+}
+
+.mbsc-ios.mbsc-calendar-label-active .mbsc-calendar-label-background,
+.mbsc-ios.mbsc-calendar-label-dragging .mbsc-calendar-label-background {
+ opacity: .9
+}
+
+.mbsc-ios.mbsc-calendar-height-md .mbsc-calendar-day:after {
+ border-left-style: solid;
+ border-left-width: 1px;
+ bottom: 0;
+ content: "";
+ margin-right: -1px;
+ position: absolute;
+ right: 100%;
+ top: 0;
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-title {
+ font-size: 1.5em;
+ line-height: 1.666667em;
+ padding: 0 .166667em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-week-day {
+ border-left: 1px solid transparent;
+ font-size: 1em;
+ height: 2.5em;
+ line-height: 2.5em;
+ padding: 0 .5em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-week-nr {
+ font-size: .75em;
+ padding: 0
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-day-inner {
+ min-height: 2.5em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-day-labels .mbsc-calendar-day-inner {
+ min-height: 4.75em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-marks {
+ padding: 0 .75em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-day-text {
+ height: 1.375em;
+ line-height: 1.375em;
+ width: 1.375em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-text {
+ height: 1.8em;
+ line-height: 1.8em;
+ margin: 0 .5em .2em .6em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-label {
+ padding: 0 .4em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-label-text {
+ font-size: 1.2em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-calendar-label-background {
+ margin: 0 -.4em
+}
+
+.mbsc-ios.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-ltr,
+.mbsc-ios.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-marks.mbsc-ltr,
+.mbsc-ios.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-week-day.mbsc-ltr {
+ text-align: right
+}
+
+.mbsc-ios.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-rtl,
+.mbsc-ios.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-marks.mbsc-rtl,
+.mbsc-ios.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-week-day.mbsc-rtl {
+ text-align: left
+}
+
+.mbsc-ios.mbsc-calendar-grid-view .mbsc-calendar-title {
+ font-size: 1.5em;
+ line-height: 1.666667em;
+ padding: 0 .166667em
+}
+
+.mbsc-ios.mbsc-calendar-grid {
+ border-top: 1px solid
+}
+
+.mbsc-ios.mbsc-calendar-grid .mbsc-calendar-grid-item .mbsc-calendar-week-days {
+ background: none
+}
+
+.mbsc-ios.mbsc-calendar-grid .mbsc-calendar-cell {
+ border: 0
+}
+
+.mbsc-ios.mbsc-calendar {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios.mbsc-calendar-header,
+.mbsc-ios.mbsc-calendar-wrapper {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-calendar-button.mbsc-button {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-calendar-cell {
+ background: #fff;
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-ios.mbsc-calendar-day:after {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-calendar-today,
+.mbsc-ios.mbsc-calendar-week-nr {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-hover .mbsc-calendar-cell-text {
+ background-color: rgba(0, 122, 255, .3)
+}
+
+.mbsc-ios.mbsc-range-day:after {
+ background-color: #cbe2fb
+}
+
+.mbsc-ios.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #000
+}
+
+.mbsc-ios.mbsc-range-hover:before {
+ border-color: #dedede
+}
+
+.mbsc-ios.mbsc-selected .mbsc-calendar-cell-text {
+ background: #007aff;
+ border-color: #007aff;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios.mbsc-focus .mbsc-calendar-day-text {
+ border-color: rgba(0, 0, 0, .5);
+ box-shadow: none
+}
+
+.mbsc-ios.mbsc-calendar-mark {
+ background: #ccc
+}
+
+.mbsc-ios.mbsc-calendar-label {
+ color: #5ac8fa
+}
+
+.mbsc-ios.mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-ios.mbsc-calendar-label-active .mbsc-calendar-label-inner,
+.mbsc-ios.mbsc-calendar-label-dragging .mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-ios.mbsc-calendar-label-active .mbsc-calendar-label-text,
+.mbsc-ios.mbsc-calendar-label-dragging .mbsc-calendar-label-text {
+ color: inherit
+}
+
+.mbsc-ios.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-ios.mbsc-calendar-popup .mbsc-calendar-cell,
+.mbsc-ios.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-ios.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-calendar-grid {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-calendar-month-title {
+ color: #007aff
+}
+
+.mbsc-ios-dark.mbsc-calendar {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-calendar-header,
+.mbsc-ios-dark.mbsc-calendar-wrapper {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-calendar-button.mbsc-button {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-calendar-cell {
+ background: #000;
+ border-color: #333;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-calendar-day:after {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-calendar-today,
+.mbsc-ios-dark.mbsc-calendar-week-nr {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-hover .mbsc-calendar-cell-text {
+ background-color: rgba(255, 159, 10, .3)
+}
+
+.mbsc-ios-dark.mbsc-range-day:after {
+ background-color: #3d2705
+}
+
+.mbsc-ios-dark.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-range-hover:before {
+ border-color: #2b2b2b
+}
+
+.mbsc-ios-dark.mbsc-selected .mbsc-calendar-cell-text {
+ background: #ff9f0a;
+ border-color: #ff9f0a;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-ios-dark.mbsc-focus .mbsc-calendar-day-text {
+ border-color: hsla(0, 0%, 100%, .5);
+ box-shadow: none
+}
+
+.mbsc-ios-dark.mbsc-calendar-mark {
+ background: #333
+}
+
+.mbsc-ios-dark.mbsc-calendar-label {
+ color: #5ac8fa
+}
+
+.mbsc-ios-dark.mbsc-calendar-label-active .mbsc-calendar-label-inner,
+.mbsc-ios-dark.mbsc-calendar-label-dragging .mbsc-calendar-label-inner,
+.mbsc-ios-dark.mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-calendar-label-active .mbsc-calendar-label-text,
+.mbsc-ios-dark.mbsc-calendar-label-dragging .mbsc-calendar-label-text {
+ color: inherit
+}
+
+.mbsc-ios-dark.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-ios-dark.mbsc-calendar-popup .mbsc-popup-body {
+ background: #292929
+}
+
+.mbsc-ios-dark.mbsc-calendar-popup .mbsc-calendar-cell {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-calendar-grid {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-calendar-month-title {
+ color: #ff9f0a
+}
+
+.mbsc-material.mbsc-calendar-wrapper-fixed:after {
+ bottom: -.5em;
+ content: "";
+ height: .5em;
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ z-index: 7
+}
+
+.mbsc-material.mbsc-calendar-controls {
+ padding: .5em
+}
+
+.mbsc-material.mbsc-calendar-week-day {
+ font-size: .75em;
+ font-weight: 700;
+ height: 2.5em;
+ line-height: 2.5em
+}
+
+.mbsc-material.mbsc-calendar-week-nr {
+ font-size: .6875em;
+ font-weight: 700;
+ height: auto;
+ line-height: 3.272728em;
+ width: 2.181819em
+}
+
+.mbsc-material.mbsc-calendar-button.mbsc-button {
+ padding: .428572em
+}
+
+.mbsc-material.mbsc-calendar-title {
+ font-size: 1.428572em;
+ font-weight: 400;
+ line-height: 1.4em;
+ text-transform: none
+}
+
+.mbsc-material.mbsc-calendar-cell-text {
+ border-radius: 2em;
+ height: 2em;
+ line-height: 2em;
+ padding: 0 .5em
+}
+
+.mbsc-material.mbsc-calendar-month-name {
+ font-size: .8125em
+}
+
+.mbsc-material.mbsc-calendar-month-name.mbsc-ltr {
+ padding-left: .461539em
+}
+
+.mbsc-material.mbsc-calendar-month-name.mbsc-rtl {
+ padding-right: .461539em
+}
+
+.mbsc-material.mbsc-calendar-day-text {
+ border: 2px solid transparent;
+ font-size: .8125em;
+ height: 1.846154em;
+ line-height: 1.846154em;
+ margin: .230769em auto;
+ padding: 0;
+ width: 1.846154em
+}
+
+.mbsc-material.mbsc-range-day:after,
+.mbsc-material.mbsc-range-hover:before {
+ content: "";
+ height: 1.75em;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: .25em;
+ z-index: -1
+}
+
+.mbsc-material.mbsc-range-hover:before {
+ border-bottom: 2px dashed;
+ border-top: 2px dashed;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 1.5em
+}
+
+.mbsc-material.mbsc-range-day-end.mbsc-rtl:after,
+.mbsc-material.mbsc-range-day-start.mbsc-ltr:after {
+ border-radius: 2em 0 0 2em;
+ left: 50%;
+ margin-left: -.875em;
+ right: 0
+}
+
+.mbsc-material.mbsc-range-day-end.mbsc-ltr:after,
+.mbsc-material.mbsc-range-day-start.mbsc-rtl:after {
+ border-radius: 0 2em 2em 0;
+ left: 0;
+ margin-right: -.875em;
+ right: 50%
+}
+
+.mbsc-material.mbsc-range-hover-end.mbsc-rtl:before,
+.mbsc-material.mbsc-range-hover-start.mbsc-ltr:before {
+ left: 50%;
+ right: 0
+}
+
+.mbsc-material.mbsc-range-hover-end.mbsc-ltr:before,
+.mbsc-material.mbsc-range-hover-start.mbsc-rtl:before {
+ left: 0;
+ right: 50%
+}
+
+.mbsc-material.mbsc-range-day-start.mbsc-range-day-end:after,
+.mbsc-material.mbsc-range-hover-start.mbsc-range-hover-end:before {
+ display: none
+}
+
+.mbsc-material.mbsc-calendar-marks {
+ margin-top: -.375em;
+ transition: -webkit-transform .1s ease-out;
+ transition: transform .1s ease-out;
+ transition: transform .1s ease-out, -webkit-transform .1s ease-out
+}
+
+.mbsc-material.mbsc-calendar-day-colors .mbsc-calendar-marks,
+.mbsc-material.mbsc-focus .mbsc-calendar-marks,
+.mbsc-material.mbsc-highlighted .mbsc-calendar-marks,
+.mbsc-material.mbsc-hover .mbsc-calendar-marks,
+.mbsc-material.mbsc-hover-highlighted .mbsc-calendar-marks,
+.mbsc-material.mbsc-selected .mbsc-calendar-marks {
+ -webkit-transform: translate3d(0, .25em, 0);
+ transform: translate3d(0, .25em, 0)
+}
+
+.mbsc-material.mbsc-calendar-label {
+ border-radius: .4em;
+ font-weight: 600
+}
+
+.mbsc-material.mbsc-calendar-label-background {
+ background: currentColor;
+ margin: 0 -.1em
+}
+
+.mbsc-material.mbsc-calendar-text:before {
+ border-radius: .4em
+}
+
+.mbsc-material.mbsc-calendar-label:before {
+ border-radius: 0;
+ margin: 0 -.1em
+}
+
+.mbsc-material.mbsc-calendar-label-end.mbsc-rtl .mbsc-calendar-label-background,
+.mbsc-material.mbsc-calendar-label-end.mbsc-rtl.mbsc-calendar-text:before,
+.mbsc-material.mbsc-calendar-label-start.mbsc-ltr .mbsc-calendar-label-background,
+.mbsc-material.mbsc-calendar-label-start.mbsc-ltr.mbsc-calendar-text:before {
+ border-bottom-left-radius: .4em;
+ border-top-left-radius: .4em;
+ margin-left: 0
+}
+
+.mbsc-material.mbsc-calendar-label-end.mbsc-ltr .mbsc-calendar-label-background,
+.mbsc-material.mbsc-calendar-label-end.mbsc-ltr.mbsc-calendar-text:before,
+.mbsc-material.mbsc-calendar-label-start.mbsc-rtl .mbsc-calendar-label-background,
+.mbsc-material.mbsc-calendar-label-start.mbsc-rtl.mbsc-calendar-text:before {
+ border-bottom-right-radius: .4em;
+ border-top-right-radius: .4em;
+ margin-right: 0
+}
+
+.mbsc-material.mbsc-calendar-height-md .mbsc-calendar-slide {
+ padding: 0
+}
+
+.mbsc-material.mbsc-calendar-height-md .mbsc-calendar-day {
+ border-bottom: 1px solid
+}
+
+.mbsc-material.mbsc-calendar-height-md .mbsc-calendar-day:after {
+ border-left-style: solid;
+ border-left-width: 1px;
+ bottom: 0;
+ content: "";
+ margin-right: -1px;
+ position: absolute;
+ right: 100%;
+ top: 0;
+ z-index: 1
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-week-day {
+ padding: 0 1em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-day-inner {
+ min-height: 4em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-day-labels .mbsc-calendar-day-inner {
+ min-height: 5.5em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-day-text {
+ margin: .461539em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-week-nr {
+ line-height: 3.818182em;
+ padding: 0
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-marks {
+ margin-left: -1px;
+ margin-right: -1px;
+ padding: 0 1.125em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-text {
+ height: 1.8em;
+ line-height: 1.8em;
+ margin: 0 .5em .2em .6em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-label {
+ padding: 0 .4em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-label-text {
+ font-size: 1.2em
+}
+
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-label-background,
+.mbsc-material.mbsc-calendar-width-md .mbsc-calendar-label:before {
+ margin: 0 -.4em
+}
+
+.mbsc-material.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-ltr,
+.mbsc-material.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-marks.mbsc-ltr,
+.mbsc-material.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-week-day.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-material.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-rtl,
+.mbsc-material.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-marks.mbsc-rtl,
+.mbsc-material.mbsc-calendar-height-md.mbsc-calendar-width-md .mbsc-calendar-week-day.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-material.mbsc-calendar-wrapper:after {
+ box-shadow: inset 0 .5em .25em -.5em rgba(48, 48, 48, .5)
+}
+
+.mbsc-material.mbsc-calendar-button.mbsc-button {
+ color: #303030
+}
+
+.mbsc-material.mbsc-calendar-picker-slide,
+.mbsc-material.mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material.mbsc-calendar-week-day {
+ color: rgba(48, 48, 48, .7)
+}
+
+.mbsc-material.mbsc-calendar-cell-text {
+ color: #303030
+}
+
+.mbsc-material.mbsc-calendar-today,
+.mbsc-material.mbsc-calendar-week-nr {
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(48, 48, 48, .7)
+}
+
+.mbsc-material.mbsc-hover .mbsc-calendar-cell-text {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material.mbsc-range-hover:before {
+ border-color: #e6e6e6
+}
+
+.mbsc-material.mbsc-range-day:after {
+ background-color: rgba(26, 115, 232, .25)
+}
+
+.mbsc-material.mbsc-selected .mbsc-calendar-cell-text {
+ background: #1a73e8;
+ border-color: #1a73e8;
+ color: #fff
+}
+
+.mbsc-material.mbsc-calendar-mark {
+ background: #1a73e8
+}
+
+.mbsc-material.mbsc-calendar-label {
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-material.mbsc-calendar-label.mbsc-calendar-label-active,
+.mbsc-material.mbsc-calendar-label.mbsc-calendar-label-dragging {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material .mbsc-calendar-label.mbsc-calendar-label-active .mbsc-calendar-label-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material.mbsc-calendar-text-more {
+ box-shadow: none
+}
+
+.mbsc-material.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #303030
+}
+
+.mbsc-material.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-material.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-material.mbsc-calendar-height-md .mbsc-calendar-day,
+.mbsc-material.mbsc-calendar-height-md .mbsc-calendar-day:after,
+.mbsc-material.mbsc-calendar-height-md .mbsc-calendar-week-day {
+ border-color: #cfcfcf
+}
+
+.mbsc-material.mbsc-calendar-month-title {
+ color: #1a73e8
+}
+
+.mbsc-material-dark.mbsc-calendar-wrapper:after {
+ box-shadow: inset 0 .5em .25em -.5em hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-dark.mbsc-calendar-button.mbsc-button {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-calendar-slide {
+ background: #000
+}
+
+.mbsc-material-dark.mbsc-calendar-picker-slide {
+ background: #303030
+}
+
+.mbsc-material-dark.mbsc-calendar-week-day {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-dark.mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-calendar-today,
+.mbsc-material-dark.mbsc-calendar-week-nr {
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-dark.mbsc-hover .mbsc-calendar-cell-text {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-material-dark.mbsc-range-hover:before {
+ border-color: #1a1a1a
+}
+
+.mbsc-material-dark.mbsc-range-day:after {
+ background-color: rgba(135, 176, 243, .25)
+}
+
+.mbsc-material-dark.mbsc-selected .mbsc-calendar-cell-text {
+ background: #87b0f3;
+ border-color: #87b0f3;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-calendar-mark {
+ background: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-calendar-label {
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-calendar-label-inner {
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-calendar-label.mbsc-calendar-label-active,
+.mbsc-material-dark.mbsc-calendar-label.mbsc-calendar-label-dragging {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-dark .mbsc-calendar-label.mbsc-calendar-label-active .mbsc-calendar-label-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-dark.mbsc-calendar-text-more {
+ box-shadow: none
+}
+
+.mbsc-material-dark.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-material-dark.mbsc-calendar-popup .mbsc-popup-body {
+ background: #303030
+}
+
+.mbsc-material-dark.mbsc-calendar-height-md .mbsc-calendar-day,
+.mbsc-material-dark.mbsc-calendar-height-md .mbsc-calendar-day:after,
+.mbsc-material-dark.mbsc-calendar-height-md .mbsc-calendar-week-day {
+ border-color: #2b2b2b
+}
+
+.mbsc-material-dark.mbsc-calendar-month-title {
+ color: #87b0f3
+}
+
+.mbsc-windows.mbsc-calendar-header {
+ margin-bottom: -1px
+}
+
+.mbsc-windows.mbsc-calendar-button.mbsc-button.mbsc-font {
+ margin: 1px
+}
+
+.mbsc-windows.mbsc-calendar-title-wrapper .mbsc-calendar-button {
+ padding: 0
+}
+
+.mbsc-windows.mbsc-calendar-controls {
+ min-height: 2.125em;
+ padding: .5em
+}
+
+.mbsc-windows.mbsc-calendar-week-day {
+ font-size: .75em;
+ height: 2.5em;
+ line-height: 2.5em
+}
+
+.mbsc-windows.mbsc-calendar-body .mbsc-calendar-week-day {
+ border: 0
+}
+
+.mbsc-windows.mbsc-calendar-week-nr {
+ font-size: .75em;
+ font-weight: 700;
+ line-height: 3em;
+ width: 2em
+}
+
+.mbsc-windows.mbsc-calendar-picker-slide {
+ padding: .25em
+}
+
+.mbsc-windows.mbsc-calendar-cell {
+ background-clip: padding-box;
+ border: solid transparent;
+ border-width: 1px 0 0;
+ padding: 0
+}
+
+.mbsc-windows.mbsc-calendar-cell:after {
+ bottom: 0;
+ content: "";
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-windows.mbsc-calendar-cell-inner {
+ border-color: transparent;
+ border-style: solid;
+ border-width: 2px 1px;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: table;
+ height: 100%;
+ position: relative;
+ width: 100%
+}
+
+.mbsc-windows.mbsc-calendar-cell-text {
+ display: table-cell;
+ min-width: 0;
+ vertical-align: middle
+}
+
+.mbsc-windows.mbsc-calendar-month-name {
+ font-size: .875em;
+ vertical-align: middle
+}
+
+.mbsc-windows.mbsc-calendar-month-name.mbsc-ltr {
+ margin-left: .5em
+}
+
+.mbsc-windows.mbsc-calendar-month-name.mbsc-rtl {
+ margin-right: .5em
+}
+
+.mbsc-windows.mbsc-calendar-day-inner {
+ display: block
+}
+
+.mbsc-windows.mbsc-calendar-day-empty:after {
+ display: none
+}
+
+.mbsc-windows.mbsc-calendar-day-text {
+ border-radius: 2em;
+ display: inline-block;
+ font-size: .875em;
+ line-height: 2.285715em;
+ margin: 0 .5em
+}
+
+.mbsc-windows.mbsc-calendar-marks {
+ bottom: .25em
+}
+
+.mbsc-windows.mbsc-calendar-label-background {
+ background: currentColor
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-title {
+ font-size: 1.625em;
+ font-weight: 300;
+ line-height: 1.461538em;
+ padding: 0 .307693em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-week-day {
+ font-size: .875em;
+ height: 2.142858em;
+ line-height: 2.142858em;
+ padding: 0 .5em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-week-nr {
+ font-size: .75em;
+ height: auto;
+ padding: 0
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day:after {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day-inner {
+ min-height: 4em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day-text {
+ text-align: center
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day-labels .mbsc-calendar-day-inner {
+ min-height: 4.75em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-marks {
+ bottom: .5em;
+ padding: 0 .625em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-text {
+ height: 1.8em;
+ line-height: 1.8em;
+ padding: 0 .6em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-label-text {
+ font-size: 1.2em
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-ltr,
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-marks.mbsc-ltr,
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-week-day.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-rtl,
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-marks.mbsc-rtl,
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-week-day.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day.mbsc-calendar-day-labels {
+ text-align: center
+}
+
+.mbsc-windows.mbsc-calendar-grid-view .mbsc-calendar-title {
+ font-size: 1.625em;
+ font-weight: 300;
+ line-height: 1.461538em;
+ padding: 0 .307693em
+}
+
+.mbsc-windows.mbsc-calendar,
+.mbsc-windows.mbsc-calendar-button.mbsc-button {
+ color: #333
+}
+
+.mbsc-windows.mbsc-calendar-button.mbsc-button.mbsc-active {
+ background: #f2f2f2;
+ border-color: #f2f2f2
+}
+
+.mbsc-windows.mbsc-calendar-button.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #333
+}
+
+.mbsc-windows.mbsc-calendar-wrapper-fixed {
+ border-bottom: 1px solid #e6e6e6
+}
+
+.mbsc-windows.mbsc-calendar-slide {
+ background: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-calendar-week-day {
+ color: #666
+}
+
+.mbsc-windows.mbsc-calendar-today,
+.mbsc-windows.mbsc-calendar-week-nr {
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-range-day {
+ border-left-color: rgba(0, 120, 215, .25)
+}
+
+.mbsc-windows.mbsc-range-day-end.mbsc-rtl,
+.mbsc-windows.mbsc-range-day-start.mbsc-ltr {
+ border-left-color: transparent
+}
+
+.mbsc-windows.mbsc-range-hover .mbsc-calendar-cell-inner {
+ border-bottom-color: rgba(51, 51, 51, .1);
+ border-style: dashed;
+ border-top-color: rgba(51, 51, 51, .1)
+}
+
+.mbsc-windows.mbsc-range-day .mbsc-calendar-cell-inner,
+.mbsc-windows.mbsc-selected .mbsc-calendar-cell-inner {
+ background: rgba(0, 120, 215, .25)
+}
+
+.mbsc-windows.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-inner {
+ background-color: #0078d7
+}
+
+.mbsc-windows.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-windows.mbsc-calendar-day-colors.mbsc-selected:after {
+ border: 2px solid #0078d7
+}
+
+.mbsc-windows.mbsc-calendar-cell.mbsc-focus:after {
+ border: 1px solid #333
+}
+
+.mbsc-windows.mbsc-calendar-cell.mbsc-hover:after {
+ background: rgba(51, 51, 51, .1)
+}
+
+.mbsc-windows.mbsc-calendar-mark {
+ background: rgba(51, 51, 51, .5)
+}
+
+.mbsc-windows.mbsc-calendar-label {
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-windows.mbsc-calendar-label.mbsc-calendar-label-active {
+ outline: 1px solid #333
+}
+
+.mbsc-windows.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #333
+}
+
+.mbsc-windows.mbsc-calendar-height-md .mbsc-calendar-week-day,
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day,
+.mbsc-windows.mbsc-calendar-width-md .mbsc-calendar-day:after {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-calendar-popup .mbsc-popup,
+.mbsc-windows.mbsc-calendar-popup .mbsc-popup-arrow {
+ background: #fff;
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-calendar-month-title {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-calendar,
+.mbsc-windows-dark.mbsc-calendar-button.mbsc-button {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-button.mbsc-button.mbsc-active {
+ background: #676767;
+ border-color: #676767
+}
+
+.mbsc-windows-dark.mbsc-calendar-button.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-wrapper-fixed {
+ border-bottom: 1px solid #343434
+}
+
+.mbsc-windows-dark.mbsc-calendar-slide {
+ background: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-week-day {
+ color: #ccc
+}
+
+.mbsc-windows-dark.mbsc-calendar-today,
+.mbsc-windows-dark.mbsc-calendar-week-nr {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-range-day {
+ border-left-color: rgba(0, 120, 215, .25)
+}
+
+.mbsc-windows-dark.mbsc-range-day-end.mbsc-rtl,
+.mbsc-windows-dark.mbsc-range-day-start.mbsc-ltr {
+ border-left-color: transparent
+}
+
+.mbsc-windows-dark.mbsc-range-hover .mbsc-calendar-cell-inner {
+ border-bottom-color: hsla(0, 0%, 100%, .22);
+ border-style: dashed;
+ border-top-color: hsla(0, 0%, 100%, .22)
+}
+
+.mbsc-windows-dark.mbsc-range-day .mbsc-calendar-cell-inner,
+.mbsc-windows-dark.mbsc-selected .mbsc-calendar-cell-inner {
+ background: rgba(0, 120, 215, .25)
+}
+
+.mbsc-windows-dark.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-inner {
+ background-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-day-colors.mbsc-selected:after {
+ border: 2px solid #0078d7
+}
+
+.mbsc-windows-dark.mbsc-calendar-cell.mbsc-focus:after {
+ border: 1px solid #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-cell.mbsc-hover:after {
+ background: hsla(0, 0%, 100%, .22)
+}
+
+.mbsc-windows-dark.mbsc-calendar-mark {
+ background: hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-windows-dark.mbsc-calendar-label {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-label.mbsc-calendar-label-active {
+ outline: 1px solid #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-calendar-height-md .mbsc-calendar-week-day,
+.mbsc-windows-dark.mbsc-calendar-width-md .mbsc-calendar-day,
+.mbsc-windows-dark.mbsc-calendar-width-md .mbsc-calendar-day:after {
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-calendar-popup .mbsc-popup,
+.mbsc-windows-dark.mbsc-calendar-popup .mbsc-popup-arrow {
+ background: #1a1a1a;
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-calendar-month-title {
+ color: #0078d7
+}
+
+@-webkit-keyframes mbsc-zoom-in-up {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(2);
+ transform: scale(2)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@keyframes mbsc-zoom-in-up {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(2);
+ transform: scale(2)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@-webkit-keyframes mbsc-zoom-in-down {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.5);
+ transform: scale(.5)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@keyframes mbsc-zoom-in-down {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.5);
+ transform: scale(.5)
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@-webkit-keyframes mbsc-zoom-out-up {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(2);
+ transform: scale(2)
+ }
+}
+
+@keyframes mbsc-zoom-out-up {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(2);
+ transform: scale(2)
+ }
+}
+
+@-webkit-keyframes mbsc-zoom-out-down {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(.5);
+ transform: scale(.5)
+ }
+}
+
+@keyframes mbsc-zoom-out-down {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ opacity: 0;
+ -webkit-transform: scale(.5);
+ transform: scale(.5)
+ }
+}
+
+.mbsc-calendar {
+ position: relative;
+ touch-action: manipulation;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.mbsc-calendar-wrapper {
+ height: 100%;
+ overflow: hidden;
+ position: relative;
+ z-index: 1
+}
+
+.mbsc-calendar-header {
+ position: relative;
+ will-change: opacity;
+ z-index: 1
+}
+
+.mbsc-calendar-header .mbsc-calendar-week-days {
+ margin-left: -1px
+}
+
+.mbsc-calendar-controls {
+ -moz-box-align: center;
+ align-items: center;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ min-height: 2.5em
+}
+
+.mbsc-calendar-button.mbsc-button.mbsc-reset {
+ margin: 0
+}
+
+.mbsc-calendar-button-prev-multi {
+ -moz-box-ordinal-group: 0;
+ order: -1
+}
+
+.mbsc-calendar-button-next-multi {
+ -moz-box-ordinal-group: 2;
+ order: 1
+}
+
+.mbsc-calendar-body {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden
+}
+
+.mbsc-calendar-body-inner {
+ margin-left: -1px;
+ overflow: hidden;
+ position: relative
+}
+
+.mbsc-calendar-wrapper-fixed {
+ height: auto;
+ overflow: visible
+}
+
+.mbsc-calendar-title-wrapper {
+ -moz-box-align: center;
+ align-items: center;
+ overflow: hidden
+}
+
+.mbsc-calendar-title {
+ display: inline-block;
+ font-size: 1.125em;
+ overflow: hidden;
+ padding: 0 .25em;
+ text-overflow: ellipsis;
+ vertical-align: middle
+}
+
+.mbsc-calendar-scroll-wrapper {
+ display: block;
+ height: 100%;
+ overflow: hidden;
+ position: relative
+}
+
+.mbsc-calendar-picker-wrapper {
+ height: 16em;
+ overflow: hidden;
+ position: relative;
+ width: 16em
+}
+
+.mbsc-calendar-picker {
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 1
+}
+
+.mbsc-calendar-picker-main {
+ position: relative;
+ z-index: 0
+}
+
+.mbsc-calendar-picker-in-up {
+ -webkit-animation: mbsc-zoom-in-up .2s cubic-bezier(0, 0, .2, 1) forwards;
+ animation: mbsc-zoom-in-up .2s cubic-bezier(0, 0, .2, 1) forwards;
+ opacity: 0
+}
+
+.mbsc-calendar-picker-in-down {
+ -webkit-animation: mbsc-zoom-in-down .2s cubic-bezier(0, 0, .2, 1) forwards;
+ animation: mbsc-zoom-in-down .2s cubic-bezier(0, 0, .2, 1) forwards;
+ opacity: 0
+}
+
+.mbsc-calendar-picker-out-up {
+ -webkit-animation: mbsc-zoom-out-up .2s cubic-bezier(.4, 0, 1, 1) forwards;
+ animation: mbsc-zoom-out-up .2s cubic-bezier(.4, 0, 1, 1) forwards;
+ opacity: 0
+}
+
+.mbsc-calendar-picker-out-down {
+ -webkit-animation: mbsc-zoom-out-down .2s cubic-bezier(0, 0, .2, 1) forwards;
+ animation: mbsc-zoom-out-down .2s cubic-bezier(0, 0, .2, 1) forwards;
+ opacity: 0
+}
+
+.mbsc-calendar-scroll-wrapper>div {
+ height: 100%
+}
+
+.mbsc-calendar-scroll-wrapper>div>div {
+ height: 100%;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0)
+}
+
+.mbsc-calendar-slide {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 0
+}
+
+.mbsc-calendar-slide.mbsc-calendar-picker {
+ position: relative
+}
+
+.mbsc-calendar-slide.mbsc-ltr {
+ left: 0
+}
+
+.mbsc-calendar-slide.mbsc-rtl {
+ right: 0
+}
+
+.mbsc-calendar-table {
+ height: 100%;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0)
+}
+
+.mbsc-calendar-cell {
+ cursor: pointer;
+ position: relative;
+ text-align: center;
+ white-space: nowrap
+}
+
+.mbsc-calendar-cell-text:focus {
+ outline: 0
+}
+
+.mbsc-calendar-cell-inner {
+ display: inline-block;
+ padding: 0 .25em;
+ vertical-align: middle
+}
+
+.mbsc-calendar-cell.mbsc-disabled {
+ cursor: not-allowed
+}
+
+.mbsc-calendar-week-day {
+ border-bottom: 1px solid transparent;
+ font-size: .6875em;
+ height: 2em;
+ line-height: 2em;
+ text-align: center
+}
+
+.mbsc-calendar-month,
+.mbsc-calendar-year {
+ vertical-align: middle
+}
+
+.mbsc-calendar-month-text,
+.mbsc-calendar-year-text {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: .875em 0;
+ min-width: 4.5em;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.mbsc-calendar-day {
+ min-width: 0;
+ text-align: center
+}
+
+.mbsc-calendar-day-empty {
+ cursor: default
+}
+
+.mbsc-calendar-day-text {
+ display: inline-block;
+ text-align: center
+}
+
+.mbsc-calendar-day-text.mbsc-calendar-cell-text {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box
+}
+
+.mbsc-calendar-day-inner {
+ border: 1px solid transparent;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 100%;
+ padding: 0;
+ position: relative;
+ width: 100%
+}
+
+.mbsc-calendar-day-hidden {
+ visibility: hidden
+}
+
+.mbsc-calendar-month-name {
+ display: none
+}
+
+.mbsc-calendar-width-md .mbsc-calendar-month-name {
+ display: inline-block;
+ font-weight: 700
+}
+
+.mbsc-calendar-popup .mbsc-calendar-month-name {
+ display: none
+}
+
+.mbsc-calendar-day-outer .mbsc-calendar-day-text,
+.mbsc-calendar-day-outer .mbsc-calendar-month-name {
+ opacity: .5
+}
+
+.mbsc-calendar-day-outer.mbsc-selected .mbsc-calendar-day-text,
+.mbsc-calendar-day-outer.mbsc-selected .mbsc-calendar-month-name {
+ opacity: 1
+}
+
+.mbsc-disabled .mbsc-calendar-cell-text,
+.mbsc-disabled .mbsc-calendar-month-name {
+ opacity: .2
+}
+
+.mbsc-calendar-day-highlight:before {
+ background: rgba(0, 0, 0, .1);
+ content: " ";
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%
+}
+
+.mbsc-calendar-day-marked {
+ padding-bottom: .25em
+}
+
+.mbsc-calendar-marks {
+ height: .375em;
+ left: 0;
+ margin-top: -.125em;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ white-space: nowrap
+}
+
+.mbsc-calendar-mark {
+ border-radius: .25em;
+ display: inline-block;
+ height: .25em;
+ margin: .0625em;
+ vertical-align: top;
+ width: .25em
+}
+
+.mbsc-calendar-labels {
+ left: -1px;
+ position: absolute;
+ right: -1px
+}
+
+.mbsc-calendar-labels-row {
+ position: relative
+}
+
+.mbsc-calendar-label-wrapper {
+ display: block;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 2
+}
+
+.mbsc-calendar-label-wrapper:first-child {
+ position: relative
+}
+
+.mbsc-calendar-label-wrapper:focus {
+ outline: 0
+}
+
+.mbsc-calendar-label {
+ padding: 0 .3em
+}
+
+.mbsc-calendar-label-text {
+ overflow: hidden;
+ position: relative;
+ text-overflow: ellipsis;
+ z-index: 2
+}
+
+.mbsc-calendar-label-background,
+.mbsc-calendar-text:before {
+ bottom: 0;
+ content: "";
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ transition: background-color .2s;
+ z-index: 0
+}
+
+.mbsc-calendar-label.mbsc-calendar-label-hover:before {
+ background-color: rgba(0, 0, 0, .2);
+ z-index: 1
+}
+
+.mbsc-calendar-text-more {
+ padding: 0 .3em
+}
+
+.mbsc-calendar-text-more.mbsc-calendar-label-active:before,
+.mbsc-calendar-text-more.mbsc-calendar-label-hover:before {
+ background-color: rgba(0, 0, 0, .1)
+}
+
+.mbsc-calendar-text {
+ display: block;
+ font-size: .625em;
+ height: 1.6em;
+ line-height: 1.6em;
+ margin: 0 .1em .2em .2em;
+ position: relative;
+ white-space: nowrap
+}
+
+.mbsc-calendar-text-placeholder {
+ z-index: -1
+}
+
+.mbsc-calendar-text.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-calendar-text.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-calendar-label-resize {
+ cursor: ew-resize;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ width: .5em;
+ z-index: 2
+}
+
+.mbsc-calendar-label-hide-resize-end.mbsc-calendar-text {
+ opacity: 0
+}
+
+.mbsc-calendar-label-resize:after {
+ background: #fff;
+ border: 1px solid;
+ border-radius: .8em;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ content: "";
+ display: none;
+ height: .8em;
+ margin-top: -.4em;
+ position: absolute;
+ top: 50%;
+ width: .8em
+}
+
+.mbsc-calendar-label-resize-end.mbsc-rtl,
+.mbsc-calendar-label-resize-start.mbsc-ltr {
+ left: 0
+}
+
+.mbsc-calendar-label-resize-end.mbsc-ltr,
+.mbsc-calendar-label-resize-start.mbsc-rtl {
+ right: 0
+}
+
+.mbsc-calendar-label-resize-end.mbsc-rtl:after,
+.mbsc-calendar-label-resize-start.mbsc-ltr:after {
+ left: -.4em
+}
+
+.mbsc-calendar-label-resize-end.mbsc-ltr:after,
+.mbsc-calendar-label-resize-start.mbsc-rtl:after {
+ right: -.4em
+}
+
+.mbsc-calendar-label-resize-end-touch:before,
+.mbsc-calendar-label-resize-start-touch:before {
+ content: "";
+ height: 2em;
+ margin-top: -1em;
+ position: absolute;
+ top: 50%;
+ width: 2em
+}
+
+.mbsc-calendar-label-resize-start-touch:before {
+ left: -1em
+}
+
+.mbsc-calendar-label-resize-end-touch:before {
+ right: -1em
+}
+
+.mbsc-calendar-label-dragging .mbsc-calendar-label-resize:after,
+.mbsc-calendar-label-hover .mbsc-calendar-label-resize:after {
+ display: block
+}
+
+.mbsc-calendar-label-inactive {
+ opacity: .4
+}
+
+.mbsc-calendar-label-hidden {
+ visibility: hidden
+}
+
+.mbsc-calendar-labels-dragging {
+ z-index: 3
+}
+
+.mbsc-calendar-grid {
+ overflow: auto;
+ padding: 0 2%
+}
+
+.mbsc-calendar-grid .mbsc-calendar-table {
+ margin: 0 5%;
+ width: 90%
+}
+
+.mbsc-calendar-grid-item {
+ margin: 1em 0;
+ padding-top: 2.5em
+}
+
+.mbsc-calendar-month-title {
+ font-size: 1.25em;
+ font-weight: 700;
+ line-height: 1.2em;
+ margin: -2em 10% 0;
+ padding-bottom: .8em
+}
+
+.mbsc-calendar-body-inner-variable {
+ overflow-y: auto
+}
+
+.mbsc-calendar-body-inner-variable .mbsc-calendar-table {
+ min-height: 20em
+}
+
+.mbsc-material.mbsc-scroller-wheel-wrapper {
+ margin: 0 .25em;
+ padding: .5em 0
+}
+
+.mbsc-material.mbsc-scroller-wheel-cont:after,
+.mbsc-material.mbsc-scroller-wheel-cont:before {
+ border-top-style: solid;
+ border-width: 2px;
+ content: "";
+ display: block;
+ position: absolute;
+ width: 100%;
+ z-index: 1
+}
+
+.mbsc-material.mbsc-scroller-wheel-cont:after {
+ bottom: -2px
+}
+
+.mbsc-material.mbsc-scroller-wheel-cont:before {
+ top: -2px
+}
+
+.mbsc-material.mbsc-scroller-wheel-group {
+ padding: 2em .25em
+}
+
+.mbsc-material.mbsc-scroller-wheel-item {
+ font-size: 1.375em;
+ padding: 0 .272727em;
+ text-align: center
+}
+
+.mbsc-material.mbsc-wheel-item-multi {
+ padding: 0 2em
+}
+
+.mbsc-material.mbsc-scroller-wheel-header {
+ font-size: 1.125em;
+ font-weight: 700
+}
+
+.mbsc-material.mbsc-wheel-checkmark {
+ border-radius: .1875em;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: none;
+ height: 1.3em;
+ margin-top: -.55em;
+ position: absolute;
+ top: 50%;
+ width: 1.3em
+}
+
+.mbsc-material.mbsc-wheel-checkmark:after {
+ border: .125em solid;
+ border-right: 0;
+ border-top: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ content: "";
+ display: block;
+ height: .4375em;
+ left: .27273em;
+ opacity: 0;
+ position: absolute;
+ top: .27273em;
+ -webkit-transform: scale(0) rotate(-45deg);
+ transform: scale(0) rotate(-45deg);
+ transition: -webkit-transform .1s ease-out;
+ transition: transform .1s ease-out;
+ transition: transform .1s ease-out, -webkit-transform .1s ease-out;
+ width: .8125em
+}
+
+.mbsc-material.mbsc-wheel-checkmark.mbsc-selected:after {
+ opacity: 1;
+ -webkit-transform: scale(1) rotate(-45deg);
+ transform: scale(1) rotate(-45deg)
+}
+
+.mbsc-material.mbsc-wheel-checkmark.mbsc-ltr {
+ left: .25em
+}
+
+.mbsc-material.mbsc-wheel-checkmark.mbsc-rtl {
+ right: .25em
+}
+
+.mbsc-material.mbsc-wheel-item-multi .mbsc-material.mbsc-wheel-checkmark {
+ display: block
+}
+
+.mbsc-material.mbsc-scroller-pointer .mbsc-scroller-wheel-group {
+ padding: 0
+}
+
+.mbsc-material.mbsc-scroller-pointer .mbsc-scroller-wheel-wrapper {
+ margin: 0;
+ padding: 0
+}
+
+.mbsc-material.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ font-size: 1em;
+ padding: 0 1.25em
+}
+
+.mbsc-material.mbsc-scroller-pointer .mbsc-wheel-item-multi {
+ padding: 0 2em
+}
+
+.mbsc-material.mbsc-scroller-pointer .mbsc-wheel-item-multi.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-material.mbsc-scroller-pointer .mbsc-wheel-item-multi.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-material.mbsc-scroller-wheel-cont:after,
+.mbsc-material.mbsc-scroller-wheel-cont:before {
+ border-color: #1a73e8
+}
+
+.mbsc-material.mbsc-scroller-wheel-multi:after,
+.mbsc-material.mbsc-scroller-wheel-multi:before {
+ border-color: transparent
+}
+
+.mbsc-material.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-material.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-material.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-material.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material.mbsc-wheel-checkmark:after {
+ border-color: #1a73e8
+}
+
+.mbsc-material-dark.mbsc-scroller-wheel-cont:after,
+.mbsc-material-dark.mbsc-scroller-wheel-cont:before {
+ border-color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-scroller-wheel-multi:after,
+.mbsc-material-dark.mbsc-scroller-wheel-multi:before {
+ border-color: transparent
+}
+
+.mbsc-material-dark.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-material-dark.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-material-dark.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-material-dark.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-dark.mbsc-wheel-checkmark:after {
+ border-color: #87b0f3
+}
+
+.mbsc-ios.mbsc-scroller-wheel-multi.mbsc-scroller-wheel-cont-3d {
+ visibility: hidden
+}
+
+.mbsc-ios.mbsc-scroller-wheel-group-cont {
+ padding: 0 .625em
+}
+
+.mbsc-ios.mbsc-scroller-wheel-group {
+ padding: .625em
+}
+
+.mbsc-ios.mbsc-wheel-group-checkmark {
+ padding: .625em 0
+}
+
+.mbsc-ios.mbsc-scroller-wheel-3d {
+ overflow: visible
+}
+
+.mbsc-ios.mbsc-scroller-wheel-line {
+ border-radius: .5em;
+ display: block;
+ margin: 0 .625em;
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-scroller-wheel-overlay {
+ display: block
+}
+
+.mbsc-ios.mbsc-scroller-wheel-item {
+ border-radius: .5em;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ font-size: 1.25em;
+ padding: 0 .5em;
+ text-align: center
+}
+
+.mbsc-ios.mbsc-scroller-wheel-item-3d {
+ font-size: 1.125em
+}
+
+.mbsc-ios.mbsc-wheel-item-checkmark {
+ padding-left: 1.75em;
+ padding-right: 1.75em
+}
+
+.mbsc-ios.mbsc-scroller-wheel-header {
+ font-size: .875em
+}
+
+.mbsc-ios.mbsc-wheel-checkmark {
+ display: none;
+ height: 1.75em;
+ margin-top: -.875em;
+ position: absolute;
+ top: 50%;
+ width: 1.75em
+}
+
+.mbsc-ios.mbsc-wheel-checkmark:after {
+ border: .125em solid;
+ border-right: 0;
+ border-top: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ content: "";
+ display: block;
+ height: .375em;
+ left: 26%;
+ opacity: 0;
+ position: absolute;
+ top: 32%;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ transition: opacity .2s ease-in-out;
+ width: .75em
+}
+
+.mbsc-ios.mbsc-wheel-checkmark.mbsc-selected:after {
+ opacity: 1
+}
+
+.mbsc-ios.mbsc-wheel-checkmark.mbsc-ltr {
+ left: 0
+}
+
+.mbsc-ios.mbsc-wheel-checkmark.mbsc-rtl {
+ right: 0
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-ios.mbsc-wheel-item-checkmark .mbsc-wheel-checkmark,
+.mbsc-ios.mbsc-wheel-item-multi .mbsc-ios.mbsc-wheel-checkmark {
+ display: block
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-group,
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-group-cont {
+ padding: 0
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-wrapper {
+ padding: .1875em 0
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-overlay {
+ display: none
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ font-size: 1em;
+ margin: 0 .1875em;
+ padding: 0 .75em
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-line {
+ margin: 0 .1875em
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-wheel-item-checkmark.mbsc-ltr {
+ padding-left: 1.75em;
+ text-align: left
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-wheel-item-checkmark.mbsc-rtl {
+ padding-right: 1.75em;
+ text-align: right
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-header {
+ font-size: .75em;
+ font-weight: 700
+}
+
+.mbsc-ios.mbsc-scroller {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-scroller-bottom,
+.mbsc-ios.mbsc-scroller-top {
+ background: #d1d5db
+}
+
+.mbsc-ios.mbsc-scroller-wheel-overlay {
+ background: linear-gradient(#fff, hsla(0, 0%, 100%, 0) 52%, hsla(0, 0%, 100%, 0) 0, #fff)
+}
+
+.mbsc-ios.mbsc-scroller-wheel-overlay-bottom,
+.mbsc-ios.mbsc-scroller-wheel-overlay-top {
+ background: linear-gradient(#d1d5db, rgba(209, 213, 219, 0) 52%, rgba(209, 213, 219, 0) 0, #d1d5db)
+}
+
+.mbsc-ios.mbsc-scroller-wheel-line {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-ios.mbsc-scroller-wheel-item {
+ color: #9e9e9e
+}
+
+.mbsc-ios.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-ios.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-ios.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-ios.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 122, 255, .15)
+}
+
+.mbsc-ios.mbsc-scroller-wheel-item-2d,
+.mbsc-ios.mbsc-scroller-wheel-item.mbsc-selected {
+ color: #000
+}
+
+.mbsc-ios.mbsc-scroller-wheel-cont-3d {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-scroller-wheel-item-3d {
+ color: #a3a3a3
+}
+
+.mbsc-ios.mbsc-scroller-wheel-header,
+.mbsc-ios.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi {
+ color: #000
+}
+
+.mbsc-ios.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi.mbsc-selected-3d {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-scroller-wheel-cont-bottom.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios.mbsc-scroller-wheel-cont-top.mbsc-scroller-wheel-cont-3d {
+ background: #d1d5db
+}
+
+.mbsc-ios.mbsc-scroller-pointer.mbsc-scroller,
+.mbsc-ios.mbsc-scroller-pointer.mbsc-scroller-inline,
+.mbsc-ios.mbsc-scroller-wheel-cont-inline.mbsc-scroller-wheel-cont-3d {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ color: #000
+}
+
+.mbsc-ios.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #007aff
+}
+
+.mbsc-ios-dark.mbsc-scroller,
+.mbsc-ios-dark.mbsc-scroller-bottom,
+.mbsc-ios-dark.mbsc-scroller-top {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-overlay,
+.mbsc-ios-dark.mbsc-scroller-wheel-overlay-bottom,
+.mbsc-ios-dark.mbsc-scroller-wheel-overlay-top {
+ background: linear-gradient(#1c1c1c, rgba(28, 28, 28, 0) 52%, rgba(28, 28, 28, 0) 0, #1c1c1c)
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-line {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-item {
+ color: #9e9e9e
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-ios-dark.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-ios-dark.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-ios-dark.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(255, 159, 10, .15)
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-item-2d,
+.mbsc-ios-dark.mbsc-scroller-wheel-item.mbsc-selected {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-cont-3d {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-item-3d {
+ color: #666
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-header,
+.mbsc-ios-dark.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi.mbsc-selected-3d {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-scroller-pointer.mbsc-scroller,
+.mbsc-ios-dark.mbsc-scroller-pointer.mbsc-scroller-inline,
+.mbsc-ios-dark.mbsc-scroller-wheel-cont-bottom.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios-dark.mbsc-scroller-wheel-cont-inline.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios-dark.mbsc-scroller-wheel-cont-top.mbsc-scroller-wheel-cont-3d {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #ff9f0a
+}
+
+.mbsc-windows.mbsc-scroller {
+ position: relative
+}
+
+.mbsc-windows.mbsc-scroller-wheel-wrapper.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-windows.mbsc-scroller-wheel-wrapper-0.mbsc-ltr {
+ border-left: 0
+}
+
+.mbsc-windows.mbsc-scroller-wheel-wrapper.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-windows.mbsc-scroller-wheel-wrapper-0.mbsc-rtl {
+ border-right: 0
+}
+
+.mbsc-windows.mbsc-scroller-wheel-item {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0 .5em;
+ text-align: center
+}
+
+.mbsc-windows.mbsc-wheel-item-multi {
+ padding: 0 2.0625em
+}
+
+.mbsc-windows.mbsc-wheel-item-multi.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-windows.mbsc-wheel-item-multi.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-windows.mbsc-scroller-wheel-line {
+ display: block;
+ z-index: 1
+}
+
+.mbsc-windows.mbsc-scroller-wheel-header {
+ font-size: 1.375em
+}
+
+.mbsc-windows.mbsc-wheel-checkmark {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: none;
+ height: 1.5625em;
+ margin-top: -.8125em;
+ position: absolute;
+ top: 50%;
+ width: 1.5625em
+}
+
+.mbsc-windows.mbsc-wheel-checkmark:after {
+ border: .125em solid;
+ border-right: 0;
+ border-top: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ content: "";
+ display: block;
+ height: .475em;
+ left: 21%;
+ opacity: 0;
+ position: absolute;
+ top: 28%;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ width: .875em
+}
+
+.mbsc-windows.mbsc-wheel-checkmark.mbsc-selected:after {
+ opacity: 1
+}
+
+.mbsc-windows.mbsc-wheel-checkmark.mbsc-ltr {
+ left: .25em
+}
+
+.mbsc-windows.mbsc-wheel-checkmark.mbsc-rtl {
+ right: .25em
+}
+
+.mbsc-windows.mbsc-wheel-item-multi .mbsc-windows.mbsc-wheel-checkmark {
+ display: block
+}
+
+.mbsc-windows.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ padding: 0 1.25em
+}
+
+.mbsc-windows.mbsc-scroller-pointer .mbsc-wheel-item-multi {
+ padding: 0 2.0625em
+}
+
+.mbsc-windows.mbsc-scroller-bar:after {
+ border-radius: 0
+}
+
+.mbsc-windows.mbsc-scroller-wheel-wrapper {
+ border-color: #e6e6e6;
+ color: #333
+}
+
+.mbsc-windows.mbsc-scroller-wheel-line {
+ background: rgba(0, 120, 215, .4)
+}
+
+.mbsc-windows.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-windows.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-windows.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-windows.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(51, 51, 51, .1)
+}
+
+.mbsc-windows.mbsc-wheel-checkmark:after {
+ border-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-scroller-wheel-wrapper {
+ border-color: #343434;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-scroller-wheel-line {
+ background: rgba(0, 120, 215, .4)
+}
+
+.mbsc-windows-dark.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-windows-dark.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-windows-dark.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-windows-dark.mbsc-scroller-wheel-item.mbsc-hover {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-windows-dark.mbsc-wheel-checkmark:after {
+ border-color: #0078d7
+}
+
+.mbsc-scroller {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ position: relative;
+ text-align: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ width: 100%
+}
+
+.mbsc-scroller-wheel-group-cont {
+ display: inline-block;
+ max-width: 100%;
+ overflow: hidden;
+ position: relative;
+ vertical-align: middle
+}
+
+.mbsc-scroller-wheel-group-cont:first-child:last-child {
+ display: block
+}
+
+.mbsc-scroller-wheel-group {
+ -moz-box-pack: center;
+ justify-content: center;
+ margin: 0 auto;
+ position: relative
+}
+
+.mbsc-scroller-wheel-group-3d {
+ -webkit-perspective: 100em;
+ perspective: 100em
+}
+
+.mbsc-scroller-wheel-wrapper {
+ display: block;
+ max-width: 100%;
+ min-width: 80px;
+ position: relative;
+ touch-action: none
+}
+
+.mbsc-scroller-pointer .mbsc-scroller-wheel-wrapper-0:last-child {
+ -moz-box-flex: 1;
+ flex: 1 1 auto
+}
+
+.mbsc-scroller-wheel-line {
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%)
+}
+
+.mbsc-scroller-wheel-line,
+.mbsc-scroller-wheel-overlay {
+ display: none;
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0
+}
+
+.mbsc-scroller-wheel-overlay {
+ bottom: 0;
+ top: 0;
+ z-index: 2
+}
+
+.mbsc-scroller-wheel {
+ display: block;
+ margin: -1px 0;
+ overflow: hidden
+}
+
+.mbsc-scroller-wheel,
+.mbsc-scroller-wheel-cont {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent
+}
+
+.mbsc-scroller-wheel-cont {
+ position: relative;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+ z-index: 1
+}
+
+.mbsc-scroller-wheel-cont-3d {
+ border: 0;
+ overflow: hidden
+}
+
+.mbsc-scroller-wheel-cont-3d>div {
+ position: relative;
+ top: -1px
+}
+
+.mbsc-scroller-items-3d,
+.mbsc-scroller-wheel-3d,
+.mbsc-scroller-wheel-wrapper-3d {
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d
+}
+
+.mbsc-scroller-items-3d {
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%)
+}
+
+.mbsc-scroller .mbsc-scroller-wheel,
+.mbsc-scroller .mbsc-scroller-wheel-cont {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box
+}
+
+.mbsc-scroller-wheel-item {
+ cursor: pointer;
+ display: block;
+ overflow: hidden;
+ position: relative;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-scroller-wheel-header:focus,
+.mbsc-scroller-wheel-item:focus {
+ outline: 0
+}
+
+.mbsc-scroller-wheel-item-3d {
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ cursor: pointer;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-scroller-wheel-item.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-scroller-wheel-header {
+ display: block;
+ padding: 0 .5em
+}
+
+.mbsc-scroller-wheel-header.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-scroller-wheel-header.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-scroller-bar-cont {
+ background: rgba(0, 0, 0, .05);
+ bottom: 0;
+ opacity: 0;
+ position: absolute;
+ top: 0;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ transition: opacity .2s;
+ width: 10px;
+ z-index: 4
+}
+
+.mbsc-scroller-bar-cont.mbsc-ltr {
+ right: 0
+}
+
+.mbsc-scroller-bar-cont.mbsc-rtl {
+ left: 0
+}
+
+.mbsc-scroller-bar-hidden {
+ display: none
+}
+
+.mbsc-scroller-bar-hover,
+.mbsc-scroller-bar-started {
+ opacity: 1
+}
+
+.mbsc-scroller-bar {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 10px
+}
+
+.mbsc-scroller-bar:after {
+ background: rgba(0, 0, 0, .5);
+ border-radius: 3px;
+ bottom: 2px;
+ content: "";
+ left: 2px;
+ position: absolute;
+ right: 2px;
+ top: 2px
+}
+
+.mbsc-ios.mbsc-datetime-year-wheel .mbsc-scroller-wheel-item {
+ min-width: 3.8em
+}
+
+.mbsc-ios.mbsc-datetime-month-wheel .mbsc-scroller-wheel-item {
+ text-align: left
+}
+
+.mbsc-ios.mbsc-datetime-date-wheel .mbsc-scroller-wheel-item,
+.mbsc-ios.mbsc-datetime-day-wheel .mbsc-scroller-wheel-item,
+.mbsc-ios.mbsc-datetime-hour-wheel .mbsc-scroller-wheel-item {
+ text-align: right
+}
+
+.mbsc-windows.mbsc-datetime-date-wheel.mbsc-scroller-wheel-wrapper {
+ min-width: 120px
+}
+
+.mbsc-windows.mbsc-datetime-date-wheel .mbsc-scroller-wheel-item,
+.mbsc-windows.mbsc-datetime-month-wheel .mbsc-scroller-wheel-item {
+ text-align: left
+}
+
+.mbsc-windows.mbsc-datetime-date-wheel.mbsc-rtl .mbsc-scroller-wheel-item,
+.mbsc-windows.mbsc-datetime-month-wheel.mbsc-rtl .mbsc-scroller-wheel-item {
+ text-align: right
+}
+
+.mbsc-ios.mbsc-segmented {
+ border-radius: .5625em;
+ margin: .75em;
+ padding: .0625em;
+ position: relative
+}
+
+.mbsc-ios.mbsc-segmented-item:before {
+ border-left: 1px solid;
+ bottom: .3125em;
+ content: "";
+ opacity: 1;
+ position: absolute;
+ top: .3125em;
+ transition: opacity .2s ease-in-out
+}
+
+.mbsc-ios.mbsc-segmented-item.mbsc-ltr:before {
+ left: 0
+}
+
+.mbsc-ios.mbsc-segmented-item.mbsc-rtl:before {
+ right: 0
+}
+
+.mbsc-ios.mbsc-segmented-item-selected+.mbsc-segmented-item:before,
+.mbsc-ios.mbsc-segmented-item-selected:before,
+.mbsc-ios.mbsc-segmented-item:first-child:before {
+ opacity: 0
+}
+
+.mbsc-ios.mbsc-segmented-selectbox {
+ border-radius: .4375em;
+ bottom: 0;
+ display: none;
+ left: 0;
+ padding: .0625em;
+ position: absolute;
+ right: 0;
+ top: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.mbsc-ios.mbsc-segmented-selectbox.mbsc-selected {
+ display: block
+}
+
+.mbsc-ios.mbsc-segmented-selectbox-animate {
+ transition: -webkit-transform .2s ease-in-out;
+ transition: transform .2s ease-in-out;
+ transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out
+}
+
+.mbsc-ios.mbsc-segmented-selectbox-inner {
+ border-radius: .4375em;
+ height: 100%;
+ transition: -webkit-transform .1s ease-in-out;
+ transition: transform .1s ease-in-out;
+ transition: transform .1s ease-in-out, -webkit-transform .1s ease-in-out;
+ visibility: hidden
+}
+
+.mbsc-ios.mbsc-segmented-selectbox-inner-visible {
+ visibility: visible
+}
+
+.mbsc-ios.mbsc-segmented-item:first-child .mbsc-segmented-selectbox-inner {
+ -webkit-transform-origin: left;
+ transform-origin: left
+}
+
+.mbsc-ios.mbsc-segmented-item:last-child .mbsc-segmented-selectbox-inner {
+ -webkit-transform-origin: right;
+ transform-origin: right
+}
+
+.mbsc-ios.mbsc-segmented-dragging {
+ cursor: pointer
+}
+
+.mbsc-ios.mbsc-segmented-dragging .mbsc-segmented-item-selected {
+ z-index: 2
+}
+
+.mbsc-ios.mbsc-segmented-dragging .mbsc-segmented-item-selected:after {
+ bottom: 0;
+ content: "";
+ cursor: pointer;
+ left: -4px;
+ position: absolute;
+ right: -4px;
+ top: 0
+}
+
+.mbsc-ios.mbsc-segmented-dragging .mbsc-segmented-selectbox-inner {
+ -webkit-transform: scale(.97, .95);
+ transform: scale(.97, .95)
+}
+
+.mbsc-ios.mbsc-segmented-dragging .mbsc-segmented-item:first-child .mbsc-segmented-selectbox-inner {
+ -webkit-transform: scale(.97, .95) translateX(.0625em);
+ transform: scale(.97, .95) translateX(.0625em)
+}
+
+.mbsc-ios.mbsc-segmented-dragging .mbsc-segmented-item:last-child .mbsc-segmented-selectbox-inner {
+ -webkit-transform: scale(.97, .95) translateX(-.0625em);
+ transform: scale(.97, .95) translateX(-.0625em)
+}
+
+.mbsc-ios.mbsc-segmented-button.mbsc-icon-button {
+ height: 2.307693em
+}
+
+.mbsc-ios.mbsc-segmented-button.mbsc-button {
+ -webkit-font-smoothing: subpixel-antialiased;
+ border-radius: 0;
+ font-size: .8125em;
+ line-height: 2.307693em;
+ margin: 0;
+ padding: 0 .615385em;
+ transition: opacity .1s ease-out, background-color .1s ease-out, -webkit-transform .1s ease-in-out;
+ transition: opacity .1s ease-out, background-color .1s ease-out, transform .1s ease-in-out;
+ transition: opacity .1s ease-out, background-color .1s ease-out, transform .1s ease-in-out, -webkit-transform .1s ease-in-out
+}
+
+.mbsc-ios.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-ios.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ opacity: 1
+}
+
+.mbsc-ios.mbsc-segmented-dragging .mbsc-segmented-item-selected .mbsc-segmented-button {
+ -webkit-transform: scale(.97, .95);
+ transform: scale(.97, .95)
+}
+
+.mbsc-ios.mbsc-segmented-item-selected:first-child .mbsc-segmented-button {
+ -webkit-transform-origin: left;
+ transform-origin: left
+}
+
+.mbsc-ios.mbsc-segmented-item-selected:last-child .mbsc-segmented-button {
+ -webkit-transform-origin: right;
+ transform-origin: right
+}
+
+.mbsc-ios.mbsc-segmented {
+ background: #dedede
+}
+
+.mbsc-ios.mbsc-segmented-item:before {
+ border-color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios.mbsc-segmented-item.mbsc-focus .mbsc-segmented-selectbox {
+ box-shadow: inset 0 0 0 .0625em rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios.mbsc-segmented-selectbox-inner {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-segmented-selectbox-inner.mbsc-selected {
+ box-shadow: 3px 3px 8px -4px #bababa
+}
+
+.mbsc-ios.mbsc-segmented-button.mbsc-button {
+ background: transparent;
+ color: #000
+}
+
+.mbsc-ios.mbsc-segmented-primary {
+ background: #3f97f6
+}
+
+.mbsc-ios.mbsc-segmented-secondary {
+ background: #90979e
+}
+
+.mbsc-ios.mbsc-segmented-success {
+ background: #43be5f
+}
+
+.mbsc-ios.mbsc-segmented-warning {
+ background: #f8b042
+}
+
+.mbsc-ios.mbsc-segmented-danger {
+ background: #f5504e
+}
+
+.mbsc-ios.mbsc-segmented-info {
+ background: #5bb7c5
+}
+
+.mbsc-ios.mbsc-segmented-light {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-segmented-dark {
+ background: #47494a
+}
+
+.mbsc-ios-dark.mbsc-segmented {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-segmented-item:before {
+ border-color: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-ios-dark.mbsc-segmented-item.mbsc-focus .mbsc-segmented-selectbox {
+ box-shadow: inset 0 0 0 .0625em hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-ios-dark.mbsc-segmented-selectbox-inner {
+ background: #5a5a5a
+}
+
+.mbsc-ios-dark.mbsc-segmented-selectbox-inner.mbsc-selected {
+ box-shadow: 3px 3px 8px -4px #000
+}
+
+.mbsc-ios-dark.mbsc-segmented-button.mbsc-button {
+ background: transparent;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-calendar-header .mbsc-ios-dark.mbsc-segmented,
+.mbsc-ios-dark.mbsc-datepicker .mbsc-segmented,
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-segmented {
+ background: #2b2b2b
+}
+
+.mbsc-ios-dark.mbsc-segmented-primary {
+ background: #3f97f6
+}
+
+.mbsc-ios-dark.mbsc-segmented-secondary {
+ background: #90979e
+}
+
+.mbsc-ios-dark.mbsc-segmented-success {
+ background: #43be5f
+}
+
+.mbsc-ios-dark.mbsc-segmented-warning {
+ background: #f8b042
+}
+
+.mbsc-ios-dark.mbsc-segmented-danger {
+ background: #f5504e
+}
+
+.mbsc-ios-dark.mbsc-segmented-info {
+ background: #5bb7c5
+}
+
+.mbsc-ios-dark.mbsc-segmented-light {
+ background: #fff
+}
+
+.mbsc-ios-dark.mbsc-segmented-dark {
+ background: #47494a
+}
+
+.mbsc-material.mbsc-segmented {
+ padding: .75em
+}
+
+.mbsc-material.mbsc-segmented-selectbox {
+ display: none
+}
+
+.mbsc-material.mbsc-segmented-item:first-child .mbsc-segmented-button {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em
+}
+
+.mbsc-material.mbsc-segmented-item:first-child .mbsc-segmented-button.mbsc-rtl {
+ border-radius: 0 .25em .25em 0;
+ border-right-width: .142858em
+}
+
+.mbsc-material.mbsc-segmented-item:last-child .mbsc-segmented-button {
+ border-bottom-right-radius: .25em;
+ border-right-width: .142858em;
+ border-top-right-radius: .25em
+}
+
+.mbsc-material.mbsc-segmented-item:last-child .mbsc-segmented-button.mbsc-rtl {
+ border-radius: .25em 0 0 .25em;
+ border-right-width: 0
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button {
+ background: none;
+ border: .142858em solid transparent;
+ border-radius: 0;
+ border-right-width: 0;
+ box-shadow: none;
+ font-size: .875em;
+ margin: 0;
+ min-width: auto;
+ padding: .285715em 1.142858em
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ box-shadow: none
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ bottom: 0;
+ content: "";
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-primary {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-primary.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-primary.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-primary.mbsc-selected {
+ background: #3f97f6
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-secondary {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-secondary.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-secondary.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-secondary.mbsc-selected {
+ background: #90979e
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-success {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-success.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-success.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-success.mbsc-selected {
+ background: #43be5f
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-danger {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-danger.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-danger.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-danger.mbsc-selected {
+ background: #f5504e
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-warning {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-warning.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-warning.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-warning.mbsc-selected {
+ background: #f8b042
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-info {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-info.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-info.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-button-info.mbsc-selected {
+ background: #5bb7c5
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button {
+ border-color: #1a73e8;
+ color: #000
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #1a73e8;
+ color: #fff
+}
+
+.mbsc-material.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-dark.mbsc-segmented-button.mbsc-button {
+ border-color: #87b0f3;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material-dark.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-dark.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #87b0f3;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-windows.mbsc-segmented {
+ padding: .75em
+}
+
+.mbsc-windows.mbsc-segmented-selectbox {
+ display: none
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button {
+ border-color: transparent;
+ margin: 0
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ border-color: transparent
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-focus {
+ z-index: 2
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-primary.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-primary.mbsc-selected {
+ background: #3f97f6
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-secondary.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-secondary.mbsc-selected {
+ background: #90979e
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-success.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-success.mbsc-selected {
+ background: #43be5f
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-danger.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-danger.mbsc-selected {
+ background: #f5504e
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-warning.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-warning.mbsc-selected {
+ background: #f8b042
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-info.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-button-info.mbsc-selected {
+ background: #5bb7c5
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button {
+ background: #ccc;
+ color: #333
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: #d4d4d4
+}
+
+.mbsc-windows.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #7a7a7a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-segmented-button.mbsc-button {
+ background: #404040;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-windows-dark.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: #454545
+}
+
+.mbsc-windows-dark.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #ababab;
+ color: #000
+}
+
+.mbsc-segmented {
+ overflow: hidden
+}
+
+.mbsc-segmented-item {
+ -moz-box-flex: 1;
+ flex: 1 1 0;
+ font-size: 1em;
+ margin: 0;
+ min-width: 0;
+ position: relative;
+ text-align: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.mbsc-segmented-label {
+ display: block;
+ margin: 0;
+ padding: 0
+}
+
+.mbsc-segmented-input {
+ height: 100%;
+ left: 0;
+ opacity: 0;
+ position: absolute;
+ top: 0;
+ width: 100%
+}
+
+.mbsc-segmented-button.mbsc-button {
+ width: 100%
+}
+
+.mbsc-ios.mbsc-timegrid-item {
+ border-radius: 2em;
+ font-size: .875em;
+ line-height: 2em;
+ margin: .5em .625em
+}
+
+.mbsc-ios.mbsc-timegrid-item.mbsc-selected,
+.mbsc-ios.mbsc-timegrid-item:focus,
+.mbsc-ios.mbsc-timegrid-item:hover {
+ font-size: 1em;
+ margin: 0 .25em;
+ outline: none
+}
+
+.mbsc-ios.mbsc-timegrid-item:focus,
+.mbsc-ios.mbsc-timegrid-item:hover {
+ background: rgba(0, 122, 255, .3)
+}
+
+.mbsc-ios.mbsc-timegrid-item.mbsc-selected {
+ background: #007aff;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-timegrid-item:focus,
+.mbsc-ios-dark.mbsc-timegrid-item:hover {
+ background: rgba(255, 159, 10, .3)
+}
+
+.mbsc-ios-dark.mbsc-timegrid-item.mbsc-selected {
+ background: #ff9f0a;
+ color: #fff
+}
+
+.mbsc-material.mbsc-timegrid-item {
+ border-radius: 2em;
+ font-size: .875em;
+ line-height: 2em;
+ margin: .5em .625em
+}
+
+.mbsc-material.mbsc-timegrid-item.mbsc-selected,
+.mbsc-material.mbsc-timegrid-item:focus,
+.mbsc-material.mbsc-timegrid-item:hover {
+ margin: 0 .25em;
+ outline: none
+}
+
+.mbsc-material.mbsc-timegrid-item:focus,
+.mbsc-material.mbsc-timegrid-item:hover {
+ background: rgba(48, 48, 48, .1)
+}
+
+.mbsc-material.mbsc-timegrid-item.mbsc-selected {
+ background: #1a73e8;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-timegrid-item:focus,
+.mbsc-material-dark.mbsc-timegrid-item:hover {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-material-dark.mbsc-timegrid-item.mbsc-selected {
+ background: #87b0f3;
+ color: #000
+}
+
+.mbsc-windows.mbsc-timegrid-item {
+ font-size: 14px;
+ margin: .0625em;
+ padding: 1.3125em 0
+}
+
+.mbsc-windows.mbsc-timegrid-item:focus {
+ outline: none
+}
+
+.mbsc-windows.mbsc-timegrid-item.mbsc-selected {
+ background: rgba(0, 120, 215, .25);
+ color: #333
+}
+
+.mbsc-windows.mbsc-timegrid-item:focus,
+.mbsc-windows.mbsc-timegrid-item:hover {
+ background: rgba(51, 51, 51, .1)
+}
+
+.mbsc-windows.mbsc-timegrid-item.mbsc-selected:focus,
+.mbsc-windows.mbsc-timegrid-item.mbsc-selected:hover {
+ background: rgba(18, 96, 158, .35)
+}
+
+.mbsc-windows-dark.mbsc-timegrid-item.mbsc-selected {
+ background: rgba(0, 120, 215, .25);
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-timegrid-item:focus,
+.mbsc-windows-dark.mbsc-timegrid-item:hover {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-windows-dark.mbsc-timegrid-item.mbsc-selected:focus,
+.mbsc-windows-dark.mbsc-timegrid-item.mbsc-selected:hover {
+ background: rgba(89, 167, 229, .35)
+}
+
+.mbsc-datepicker-control-calendar .mbsc-datepicker-tab-timegrid {
+ min-height: 10em
+}
+
+.mbsc-datepicker-tab-timegrid {
+ min-height: 19em
+}
+
+.mbsc-timegrid-item.mbsc-disabled {
+ opacity: .2;
+ pointer-events: none
+}
+
+.mbsc-datepicker-tab-timegrid.mbsc-datepicker-tab {
+ -moz-box-align: start;
+ align-items: flex-start;
+ overflow: auto;
+ position: relative;
+ width: 18.5em
+}
+
+.mbsc-timegrid-container {
+ bottom: 0;
+ display: table;
+ left: 0;
+ position: absolute;
+ right: 0;
+ table-layout: fixed;
+ top: 0;
+ width: 100%
+}
+
+.mbsc-timegrid-row {
+ display: table-row
+}
+
+.mbsc-timegrid-cell {
+ display: table-cell;
+ position: relative
+}
+
+.mbsc-timegrid-cell.mbsc-disabled {
+ cursor: not-allowed
+}
+
+.mbsc-timegrid-item {
+ cursor: pointer;
+ text-align: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ vertical-align: middle;
+ white-space: nowrap
+}
+
+.mbsc-ios.mbsc-form-control-wrapper {
+ margin-top: -1px
+}
+
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-error {
+ z-index: 2
+}
+
+.mbsc-ios.mbsc-form-control-wrapper:after,
+.mbsc-ios.mbsc-form-control-wrapper:before {
+ border-top: 1px solid transparent;
+ content: "";
+ position: absolute
+}
+
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-ltr:after,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-ltr:before {
+ left: 1em;
+ right: 0
+}
+
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-rtl:after,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-rtl:before {
+ left: 0;
+ right: 1em
+}
+
+.mbsc-ios.mbsc-form-control-wrapper:before {
+ top: 0
+}
+
+.mbsc-ios.mbsc-form-control-wrapper:after {
+ bottom: 0
+}
+
+.mbsc-block-title+.mbsc-ios.mbsc-form-control-wrapper.mbsc-ltr:before,
+.mbsc-form-group-title+.mbsc-ios.mbsc-form-control-wrapper.mbsc-ltr:before,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-ltr:first-child:before,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-ltr:last-child:after {
+ left: 0
+}
+
+.mbsc-block-title+.mbsc-ios.mbsc-form-control-wrapper.mbsc-rtl:before,
+.mbsc-form-group-title+.mbsc-ios.mbsc-form-control-wrapper.mbsc-rtl:before,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-rtl:first-child:before,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-rtl:last-child:after {
+ right: 0
+}
+
+.mbsc-ios.mbsc-description.mbsc-disabled,
+.mbsc-ios.mbsc-form-control-label.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-control-wrapper:first-child,
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-group-title+.mbsc-form-control-wrapper {
+ border-top-left-radius: .5em;
+ border-top-right-radius: .5em
+}
+
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-control-wrapper:last-child {
+ border-bottom-left-radius: .5em;
+ border-bottom-right-radius: .5em
+}
+
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-control-wrapper:first-child:before,
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-control-wrapper:last-child:after,
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-group-title,
+.mbsc-ios .mbsc-form-group-inset .mbsc-form-group-title+.mbsc-form-control-wrapper:before {
+ border-width: 0
+}
+
+.mbsc-ios.mbsc-form-control-wrapper {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-form-control-wrapper:after,
+.mbsc-ios.mbsc-form-control-wrapper:before {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-error+.mbsc-form-control-wrapper:before,
+.mbsc-ios.mbsc-form-control-wrapper.mbsc-error:after {
+ border-color: #d8332a
+}
+
+.mbsc-ios-dark.mbsc-form-control-wrapper {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-form-control-wrapper:after,
+.mbsc-ios-dark.mbsc-form-control-wrapper:before {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-form-control-wrapper.mbsc-error+.mbsc-form-control-wrapper:before,
+.mbsc-ios-dark.mbsc-form-control-wrapper.mbsc-error:after {
+ border-color: #d8332a
+}
+
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-form-control-wrapper {
+ background: #2b2b2b
+}
+
+.mbsc-material.mbsc-description.mbsc-disabled,
+.mbsc-material.mbsc-form-control-label.mbsc-disabled,
+.mbsc-windows.mbsc-description.mbsc-disabled,
+.mbsc-windows.mbsc-form-control-label.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-form-control-label {
+ display: block
+}
+
+.mbsc-form-control-input {
+ border: 0;
+ height: 100%;
+ left: 0;
+ margin: 0;
+ opacity: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 3
+}
+
+.mbsc-ios.mbsc-textfield-wrapper-has-icon-left.mbsc-ltr,
+.mbsc-ios.mbsc-textfield-wrapper-has-icon-right.mbsc-rtl {
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-textfield-wrapper-has-icon-left.mbsc-ltr:after,
+.mbsc-ios.mbsc-textfield-wrapper-has-icon-left.mbsc-ltr:before {
+ left: 3.375em
+}
+
+.mbsc-ios.mbsc-textfield-wrapper-has-icon-right.mbsc-rtl:after,
+.mbsc-ios.mbsc-textfield-wrapper-has-icon-right.mbsc-rtl:before {
+ right: 3.375em
+}
+
+.mbsc-ios.mbsc-textfield-inner {
+ -moz-box-flex: 1;
+ flex: 1 auto;
+ position: static;
+ z-index: -1
+}
+
+.mbsc-ios.mbsc-textfield-inner.mbsc-disabled {
+ opacity: .5
+}
+
+.mbsc-ios.mbsc-textfield {
+ background: transparent;
+ display: -moz-box;
+ display: flex;
+ height: 2.75em;
+ padding: 0 1em
+}
+
+.mbsc-ios.mbsc-textfield-has-icon-left {
+ padding-left: 3.375em
+}
+
+.mbsc-ios.mbsc-textfield-has-icon-right {
+ padding-right: 3.375em
+}
+
+.mbsc-ios.mbsc-textfield-floating,
+.mbsc-ios.mbsc-textfield-stacked {
+ height: 3.5em;
+ padding-top: 1.25em
+}
+
+.mbsc-ios.mbsc-textfield-icon {
+ top: .625em;
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-textfield-icon-left {
+ left: .9375em
+}
+
+.mbsc-ios.mbsc-textfield-icon-right {
+ right: .9375em
+}
+
+.mbsc-ios.mbsc-textfield-icon-floating,
+.mbsc-ios.mbsc-textfield-icon-stacked {
+ top: 1em
+}
+
+.mbsc-ios.mbsc-label-inline {
+ line-height: 2.75em
+}
+
+.mbsc-ios.mbsc-label-inline.mbsc-ltr {
+ padding-left: 1em
+}
+
+.mbsc-ios.mbsc-label-inline.mbsc-rtl {
+ padding-right: 1em
+}
+
+.mbsc-ios.mbsc-label-stacked {
+ font-size: .75em;
+ line-height: 1em;
+ top: .666667em
+}
+
+.mbsc-ios.mbsc-label-stacked.mbsc-ltr {
+ left: 1.333334em
+}
+
+.mbsc-ios.mbsc-label-stacked.mbsc-rtl {
+ right: 1.333334em
+}
+
+.mbsc-ios.mbsc-label-floating {
+ line-height: 2em;
+ top: .875em
+}
+
+.mbsc-ios.mbsc-label-floating.mbsc-ltr {
+ left: 1em
+}
+
+.mbsc-ios.mbsc-label-floating.mbsc-rtl {
+ right: 1em
+}
+
+.mbsc-ios.mbsc-label-floating-active.mbsc-label {
+ -webkit-transform: translateY(-.75em) scale(.75);
+ transform: translateY(-.75em) scale(.75)
+}
+
+.mbsc-ios.mbsc-label.mbsc-disabled {
+ opacity: .5
+}
+
+.mbsc-ios.mbsc-error-message {
+ display: block;
+ line-height: 1.666667em;
+ padding: 0 1.333334em
+}
+
+.mbsc-ios.mbsc-error-message-underline {
+ position: static
+}
+
+.mbsc-ios.mbsc-error-message-has-icon-left.mbsc-ltr {
+ padding-left: 4.5em
+}
+
+.mbsc-ios.mbsc-error-message-has-icon-right.mbsc-rtl {
+ padding-right: 4.5em
+}
+
+.mbsc-ios .mbsc-textfield-wrapper-underline {
+ overflow: hidden
+}
+
+.mbsc-ios.mbsc-textfield-underline-inline-has-icon-left.mbsc-ltr {
+ padding-left: 1em
+}
+
+.mbsc-ios.mbsc-textfield-underline-inline-has-icon-right.mbsc-rtl {
+ padding-right: 1em
+}
+
+.mbsc-ios.mbsc-label-underline {
+ margin: 0
+}
+
+.mbsc-ios.mbsc-label-underline-stacked-has-icon-left.mbsc-ltr {
+ left: 4.5em
+}
+
+.mbsc-ios.mbsc-label-underline-stacked-has-icon-right.mbsc-rtl {
+ right: 4.5em
+}
+
+.mbsc-ios.mbsc-label-underline-inline-has-icon-left.mbsc-ltr {
+ padding-left: 3.375em
+}
+
+.mbsc-ios.mbsc-label-underline-inline-has-icon-right.mbsc-rtl {
+ padding-right: 3.375em
+}
+
+.mbsc-ios.mbsc-label-underline-floating-has-icon-left.mbsc-ltr {
+ left: 3.375em
+}
+
+.mbsc-ios.mbsc-label-underline-floating-has-icon-right.mbsc-rtl {
+ right: 3.375em
+}
+
+.mbsc-ios.mbsc-error-message-underline.mbsc-error-message-inline.mbsc-ltr {
+ padding-left: 1.333334em
+}
+
+.mbsc-ios.mbsc-error-message-underline.mbsc-error-message-inline.mbsc-rtl {
+ padding-right: 1.333334em
+}
+
+.mbsc-ios.mbsc-textfield-wrapper-box,
+.mbsc-ios.mbsc-textfield-wrapper-outline {
+ margin: 1.5em 1em
+}
+
+.mbsc-ios.mbsc-textfield-wrapper-box.mbsc-font:after,
+.mbsc-ios.mbsc-textfield-wrapper-box.mbsc-font:before,
+.mbsc-ios.mbsc-textfield-wrapper-outline.mbsc-font:after,
+.mbsc-ios.mbsc-textfield-wrapper-outline.mbsc-font:before {
+ border: none
+}
+
+.mbsc-ios.mbsc-textfield-box,
+.mbsc-ios.mbsc-textfield-outline {
+ border: 1px solid transparent;
+ border-radius: .5em
+}
+
+.mbsc-ios.mbsc-textfield-inner-box,
+.mbsc-ios.mbsc-textfield-inner-outline {
+ position: relative
+}
+
+.mbsc-ios.mbsc-label-box-stacked-has-icon-left.mbsc-ltr,
+.mbsc-ios.mbsc-label-outline-stacked-has-icon-left.mbsc-ltr {
+ left: 4.5em
+}
+
+.mbsc-ios.mbsc-label-box-stacked-has-icon-right.mbsc-rtl,
+.mbsc-ios.mbsc-label-outline-stacked-has-icon-right.mbsc-rtl {
+ right: 4.5em
+}
+
+.mbsc-ios.mbsc-label-box-floating,
+.mbsc-ios.mbsc-label-box-stacked,
+.mbsc-ios.mbsc-label-outline-floating,
+.mbsc-ios.mbsc-label-outline-stacked {
+ margin: 0 1px
+}
+
+.mbsc-ios.mbsc-label-box-floating-has-icon-left.mbsc-ltr,
+.mbsc-ios.mbsc-label-outline-floating-has-icon-left.mbsc-ltr {
+ left: 3.375em
+}
+
+.mbsc-ios.mbsc-label-box-floating-has-icon-right.mbsc-rtl,
+.mbsc-ios.mbsc-label-outline-floating-has-icon-right.mbsc-rtl {
+ right: 3.375em
+}
+
+.mbsc-ios.mbsc-error-message-box,
+.mbsc-ios.mbsc-error-message-outline {
+ margin: 0 1px
+}
+
+.mbsc-ios.mbsc-select.mbsc-ltr {
+ padding-right: 3.375em
+}
+
+.mbsc-ios.mbsc-select.mbsc-rtl {
+ padding-left: 3.375em
+}
+
+.mbsc-ios.mbsc-select.mbsc-textfield-has-icon-right.mbsc-ltr {
+ padding-right: 4.875em
+}
+
+.mbsc-ios.mbsc-select.mbsc-textfield-has-icon-left.mbsc-rtl {
+ padding-left: 4.875em
+}
+
+.mbsc-ios.mbsc-select-icon {
+ top: .625em
+}
+
+.mbsc-ios.mbsc-select-icon-floating,
+.mbsc-ios.mbsc-select-icon-stacked {
+ top: 1em
+}
+
+.mbsc-ios.mbsc-select-icon.mbsc-ltr {
+ right: .9375em
+}
+
+.mbsc-ios.mbsc-select-icon.mbsc-rtl {
+ left: .9375em
+}
+
+.mbsc-ios.mbsc-select-icon-right.mbsc-ltr {
+ right: 3.375em
+}
+
+.mbsc-ios.mbsc-select-icon-left.mbsc-rtl {
+ left: 3.375em
+}
+
+.mbsc-ios.mbsc-textarea {
+ border: 0;
+ height: 3em
+}
+
+.mbsc-ios.mbsc-textarea.mbsc-textfield-floating,
+.mbsc-ios.mbsc-textarea.mbsc-textfield-stacked {
+ padding-top: 0
+}
+
+.mbsc-ios.mbsc-textarea-inner {
+ padding-bottom: .625em;
+ padding-top: .625em
+}
+
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ border: 1px solid transparent;
+ border-radius: .5em
+}
+
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-floating,
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-stacked {
+ padding-top: 1.375em
+}
+
+.mbsc-ios.mbsc-textfield-tags-inner {
+ padding-bottom: 0;
+ padding-top: 0
+}
+
+.mbsc-ios.mbsc-textfield.mbsc-textfield-tags {
+ min-height: 2.75em;
+ padding-bottom: .3125em;
+ padding-top: .3125em
+}
+
+.mbsc-ios.mbsc-textfield-tags.mbsc-textfield-floating,
+.mbsc-ios.mbsc-textfield-tags.mbsc-textfield-stacked {
+ min-height: 2.125em;
+ padding-bottom: 0;
+ padding-top: 0
+}
+
+.mbsc-ios.mbsc-textfield-tag {
+ border-radius: 1em
+}
+
+.mbsc-ios.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios.mbsc-textfield-wrapper-underline {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-label,
+.mbsc-ios.mbsc-textfield {
+ color: #000
+}
+
+.mbsc-ios.mbsc-textfield-box,
+.mbsc-ios.mbsc-textfield-outline {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-textfield-outline {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-select-icon,
+.mbsc-ios.mbsc-textfield-icon {
+ color: #8c8c8c
+}
+
+.mbsc-ios.mbsc-textfield-box.mbsc-error,
+.mbsc-ios.mbsc-textfield-outline.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios.mbsc-error-message {
+ color: #d8332a
+}
+
+.mbsc-ios.mbsc-select,
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-textarea-inner.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios.mbsc-textfield-tag {
+ background: #dedede
+}
+
+.mbsc-ios.mbsc-textfield-tag-clear {
+ color: #8c8c8c
+}
+
+.mbsc-ios-dark.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios-dark.mbsc-textfield-wrapper-underline {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-label,
+.mbsc-ios-dark.mbsc-textfield {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-textfield-box,
+.mbsc-ios-dark.mbsc-textfield-outline {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-textfield-outline {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-select-icon,
+.mbsc-ios-dark.mbsc-textfield-icon {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-textfield-box.mbsc-error,
+.mbsc-ios-dark.mbsc-textfield-outline.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-dark.mbsc-error-message {
+ color: #d8332a
+}
+
+.mbsc-ios-dark.mbsc-select,
+.mbsc-ios-dark.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios-dark.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-textarea-inner.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-select,
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-textarea-inner.mbsc-textfield-inner-outline,
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-textfield-box,
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-textfield-outline,
+.mbsc-ios-dark.mbsc-popup .mbsc-ios-dark.mbsc-textfield-wrapper-underline {
+ background: #2b2b2b
+}
+
+.mbsc-ios-dark.mbsc-textfield-tag {
+ background: #3b3b3b
+}
+
+.mbsc-ios-dark.mbsc-textfield-tag-clear {
+ color: #fff
+}
+
+.mbsc-material.mbsc-textfield-wrapper {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 1.5em 1em
+}
+
+.mbsc-material.mbsc-textfield-inner.mbsc-disabled {
+ opacity: .5
+}
+
+.mbsc-material.mbsc-textfield {
+ background-color: transparent;
+ border-bottom: 1px solid;
+ display: block;
+ font-size: 1em;
+ height: 2.25em;
+ transition: border-color .2s;
+ width: 100%
+}
+
+.mbsc-material.mbsc-textfield-has-icon-left {
+ padding-left: 2em
+}
+
+.mbsc-material.mbsc-textfield-has-icon-right {
+ padding-right: 2em
+}
+
+.mbsc-material.mbsc-textfield-icon {
+ top: .375em
+}
+
+.mbsc-material.mbsc-textfield-icon-floating,
+.mbsc-material.mbsc-textfield-icon-outline,
+.mbsc-material.mbsc-textfield-icon-stacked {
+ top: 1em
+}
+
+.mbsc-material .mbsc-textfield-ripple {
+ bottom: 0;
+ height: 2px;
+ left: 0;
+ position: absolute;
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+ transition: -webkit-transform .18s cubic-bezier(.4, 0, .2, 1);
+ transition: transform .18s cubic-bezier(.4, 0, .2, 1);
+ transition: transform .18s cubic-bezier(.4, 0, .2, 1), -webkit-transform .18s cubic-bezier(.4, 0, .2, 1);
+ width: 100%;
+ z-index: 2
+}
+
+.mbsc-material .mbsc-textfield-ripple-active {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1)
+}
+
+.mbsc-material.mbsc-label {
+ font-size: .75em
+}
+
+.mbsc-material.mbsc-label-inline {
+ font-size: 1em;
+ line-height: 2em
+}
+
+.mbsc-material.mbsc-label-inline.mbsc-ltr {
+ padding-right: .5em
+}
+
+.mbsc-material.mbsc-label-inline.mbsc-rtl {
+ padding-left: .5em
+}
+
+.mbsc-material.mbsc-label-floating {
+ font-size: 1em;
+ line-height: 1.5em;
+ top: 1.125em
+}
+
+.mbsc-material.mbsc-label-floating-active {
+ -webkit-transform: translateY(-1.125em) scale(.75);
+ transform: translateY(-1.125em) scale(.75)
+}
+
+.mbsc-material.mbsc-label.mbsc-disabled {
+ opacity: .5
+}
+
+.mbsc-material.mbsc-error-message.mbsc-ltr {
+ left: 0
+}
+
+.mbsc-material.mbsc-error-message.mbsc-rtl {
+ right: 0
+}
+
+.mbsc-material.mbsc-error-message-has-icon-left.mbsc-ltr {
+ left: 2.66667em
+}
+
+.mbsc-material.mbsc-error-message-has-icon-right.mbsc-rtl {
+ right: 2.66667em
+}
+
+.mbsc-material.mbsc-textfield-underline-floating,
+.mbsc-material.mbsc-textfield-underline-stacked {
+ height: 3em;
+ padding-top: .875em
+}
+
+.mbsc-material.mbsc-textfield-icon-underline {
+ top: .25em
+}
+
+.mbsc-material.mbsc-textfield-icon-underline.mbsc-textfield-icon-floating,
+.mbsc-material.mbsc-textfield-icon-underline.mbsc-textfield-icon-stacked {
+ top: 1.125em
+}
+
+.mbsc-material.mbsc-label-underline-inline {
+ padding-top: 1px
+}
+
+.mbsc-material.mbsc-label-underline-stacked-has-icon-left.mbsc-ltr {
+ left: 2.66667em
+}
+
+.mbsc-material.mbsc-label-underline-stacked-has-icon-right.mbsc-rtl {
+ right: 2.66667em
+}
+
+.mbsc-material.mbsc-label-underline-floating-has-icon-left.mbsc-ltr {
+ left: 2em
+}
+
+.mbsc-material.mbsc-label-underline-floating-has-icon-right.mbsc-rtl {
+ right: 2em
+}
+
+.mbsc-material.mbsc-textfield-box,
+.mbsc-material.mbsc-textfield-inner-box {
+ border-radius: .25em .25em 0 0
+}
+
+.mbsc-material.mbsc-textfield-box {
+ padding: 0 1em
+}
+
+.mbsc-material.mbsc-textfield-box-floating,
+.mbsc-material.mbsc-textfield-box-stacked {
+ height: 3.5em;
+ padding-top: 1.25em
+}
+
+.mbsc-material.mbsc-textfield-underline.mbsc-disabled {
+ border-style: dotted
+}
+
+.mbsc-material.mbsc-label-box-inline {
+ padding-top: 1px
+}
+
+.mbsc-material.mbsc-label-box-stacked {
+ top: .666667em
+}
+
+.mbsc-material.mbsc-label-box-floating {
+ top: 1em
+}
+
+.mbsc-material.mbsc-label-box-floating.mbsc-label-floating-active {
+ -webkit-transform: translateY(-.625em) scale(.75);
+ transform: translateY(-.625em) scale(.75)
+}
+
+.mbsc-material.mbsc-textfield-inner-outline {
+ padding: 0 2px
+}
+
+.mbsc-material.mbsc-textfield-outline {
+ border: 0;
+ border-radius: 4px;
+ height: 3.5em;
+ padding: 2px 1em
+}
+
+.mbsc-material.mbsc-textfield-fieldset {
+ border: 1px solid;
+ border-radius: 4px;
+ top: -.5em;
+ transition: border-color .2s
+}
+
+.mbsc-material.mbsc-textfield-fieldset-has-icon-left {
+ padding-left: 3em
+}
+
+.mbsc-material.mbsc-textfield-fieldset-has-icon-right {
+ padding-right: 3em
+}
+
+.mbsc-material.mbsc-textfield-fieldset.mbsc-focus {
+ border-width: 2px
+}
+
+.mbsc-material.mbsc-textfield-legend {
+ color: transparent;
+ font-size: .75em;
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+ width: .01px
+}
+
+.mbsc-material.mbsc-textfield-legend-active {
+ margin: 0 -.333334em;
+ padding: 0 .333334em;
+ width: auto
+}
+
+.mbsc-material.mbsc-label-outline-inline {
+ line-height: 3.375em
+}
+
+.mbsc-material.mbsc-label-outline-stacked {
+ margin: 0 2px;
+ top: -.5em
+}
+
+.mbsc-material.mbsc-label-outline-floating {
+ margin: 0 2px;
+ top: 1em
+}
+
+.mbsc-material.mbsc-label-outline-floating.mbsc-label-floating-active {
+ margin-top: -1px;
+ -webkit-transform: translateY(-1.5em) scale(.75);
+ transform: translateY(-1.5em) scale(.75)
+}
+
+.mbsc-material.mbsc-error-message-outline {
+ margin: 0 2px
+}
+
+.mbsc-material.mbsc-textfield-box-has-icon-left,
+.mbsc-material.mbsc-textfield-outline-has-icon-left {
+ padding-left: 3em
+}
+
+.mbsc-material.mbsc-textfield-box-has-icon-right,
+.mbsc-material.mbsc-textfield-outline-has-icon-right {
+ padding-right: 3em
+}
+
+.mbsc-material.mbsc-textfield-icon-box-left,
+.mbsc-material.mbsc-textfield-icon-outline-left {
+ left: .75em
+}
+
+.mbsc-material.mbsc-textfield-icon-box-right,
+.mbsc-material.mbsc-textfield-icon-outline-right {
+ right: .75em
+}
+
+.mbsc-material.mbsc-label-box-stacked.mbsc-ltr,
+.mbsc-material.mbsc-label-outline-stacked.mbsc-ltr {
+ left: 1.333334em
+}
+
+.mbsc-material.mbsc-label-box-stacked.mbsc-rtl,
+.mbsc-material.mbsc-label-outline-stacked.mbsc-rtl {
+ right: 1.333334em
+}
+
+.mbsc-material.mbsc-label-box-stacked-has-icon-left.mbsc-ltr,
+.mbsc-material.mbsc-label-outline-stacked-has-icon-left.mbsc-ltr {
+ left: 4em
+}
+
+.mbsc-material.mbsc-label-box-stacked-has-icon-right.mbsc-rtl,
+.mbsc-material.mbsc-label-outline-stacked-has-icon-right.mbsc-rtl {
+ right: 4em
+}
+
+.mbsc-material.mbsc-label-box-floating.mbsc-ltr,
+.mbsc-material.mbsc-label-outline-floating.mbsc-ltr {
+ left: 1em
+}
+
+.mbsc-material.mbsc-label-box-floating.mbsc-rtl,
+.mbsc-material.mbsc-label-outline-floating.mbsc-rtl {
+ right: 1em
+}
+
+.mbsc-material.mbsc-label-box-floating-has-icon-left.mbsc-ltr,
+.mbsc-material.mbsc-label-outline-floating-has-icon-left.mbsc-ltr {
+ left: 3em
+}
+
+.mbsc-material.mbsc-label-box-floating-has-icon-left.mbsc-rtl,
+.mbsc-material.mbsc-label-outline-floating-has-icon-left.mbsc-rtl {
+ right: 1em
+}
+
+.mbsc-material.mbsc-label-box-floating-has-icon-right.mbsc-rtl,
+.mbsc-material.mbsc-label-outline-floating-has-icon-right.mbsc-rtl {
+ right: 3em
+}
+
+.mbsc-material.mbsc-error-message-box.mbsc-ltr,
+.mbsc-material.mbsc-error-message-outline.mbsc-ltr {
+ left: 1.333334em
+}
+
+.mbsc-material.mbsc-error-message-box.mbsc-rtl,
+.mbsc-material.mbsc-error-message-outline.mbsc-rtl {
+ right: 1.333334em
+}
+
+.mbsc-material.mbsc-error-message-box.mbsc-error-message-has-icon-left.mbsc-ltr,
+.mbsc-material.mbsc-error-message-outline.mbsc-error-message-has-icon-left.mbsc-ltr {
+ left: 4em
+}
+
+.mbsc-material.mbsc-error-message-box.mbsc-error-message-has-icon-right.mbsc-rtl,
+.mbsc-material.mbsc-error-message-outline.mbsc-error-message-has-icon-right.mbsc-rtl {
+ right: 4em
+}
+
+.mbsc-material.mbsc-select.mbsc-ltr {
+ padding-right: 3em
+}
+
+.mbsc-material.mbsc-select.mbsc-rtl {
+ padding-left: 3em
+}
+
+.mbsc-material.mbsc-select.mbsc-textfield-has-icon-right.mbsc-ltr {
+ padding-right: 4.5em
+}
+
+.mbsc-material.mbsc-select.mbsc-textfield-has-icon-left.mbsc-rtl {
+ padding-left: 4.5em
+}
+
+.mbsc-material.mbsc-select.mbsc-textfield-underline-has-icon-right.mbsc-ltr {
+ padding-right: 3.75em
+}
+
+.mbsc-material.mbsc-select.mbsc-textfield-underline-has-icon-left.mbsc-rtl {
+ padding-left: 3.75em
+}
+
+.mbsc-material.mbsc-select-icon {
+ top: .375em
+}
+
+.mbsc-material.mbsc-select-icon.mbsc-ltr {
+ right: .75em
+}
+
+.mbsc-material.mbsc-select-icon.mbsc-rtl {
+ left: .75em
+}
+
+.mbsc-material.mbsc-select-icon-right.mbsc-ltr {
+ right: 3em
+}
+
+.mbsc-material.mbsc-select-icon-left.mbsc-rtl {
+ left: 3em
+}
+
+.mbsc-material.mbsc-select-icon-floating,
+.mbsc-material.mbsc-select-icon-outline,
+.mbsc-material.mbsc-select-icon-stacked {
+ top: 1em
+}
+
+.mbsc-material.mbsc-select-icon-underline {
+ top: .25em
+}
+
+.mbsc-material.mbsc-select-icon-underline.mbsc-ltr {
+ right: 0
+}
+
+.mbsc-material.mbsc-select-icon-underline.mbsc-rtl {
+ left: 0
+}
+
+.mbsc-material.mbsc-select-icon-underline.mbsc-select-icon-right.mbsc-ltr {
+ right: 2.25em
+}
+
+.mbsc-material.mbsc-select-icon-underline.mbsc-select-icon-left.mbsc-rtl {
+ left: 2.25em
+}
+
+.mbsc-material.mbsc-select-icon-underline.mbsc-select-icon-floating,
+.mbsc-material.mbsc-select-icon-underline.mbsc-select-icon-stacked {
+ top: 1.125em
+}
+
+.mbsc-material.mbsc-textarea {
+ height: 1.875em;
+ padding-bottom: .375em
+}
+
+.mbsc-material.mbsc-textarea.mbsc-textfield-floating,
+.mbsc-material.mbsc-textarea.mbsc-textfield-stacked {
+ padding-top: 0
+}
+
+.mbsc-material.mbsc-textarea.mbsc-textfield-outline {
+ height: 1.5em;
+ padding-bottom: 0;
+ padding-top: 0
+}
+
+.mbsc-material.mbsc-textarea.mbsc-textfield-underline {
+ padding-bottom: .3125em
+}
+
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-box {
+ padding-top: .375em
+}
+
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-floating,
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-stacked {
+ padding-top: 1.625em
+}
+
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ padding-bottom: 1em;
+ padding-top: 1em
+}
+
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-underline {
+ padding-top: .25em
+}
+
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-underline.mbsc-textfield-inner-floating,
+.mbsc-material.mbsc-textarea-inner.mbsc-textfield-inner-underline.mbsc-textfield-inner-stacked {
+ padding-top: 1.125em
+}
+
+.mbsc-material.mbsc-textfield-tags-inner.mbsc-textfield-inner-inline,
+.mbsc-material.mbsc-textfield-tags-inner.mbsc-textfield-inner-underline {
+ padding-top: 0
+}
+
+.mbsc-material.mbsc-textfield-tags-inner.mbsc-textfield-inner-outline {
+ padding-bottom: .625em;
+ padding-top: .625em
+}
+
+.mbsc-material.mbsc-textfield-tags.mbsc-textfield {
+ min-height: 2.25em;
+ padding-bottom: 0
+}
+
+.mbsc-material.mbsc-textfield-tags.mbsc-textfield-outline {
+ padding-bottom: 1px;
+ padding-top: 1px
+}
+
+.mbsc-material.mbsc-textfield-tag {
+ border-radius: 1em
+}
+
+.mbsc-material.mbsc-textfield {
+ border-bottom-color: rgba(0, 0, 0, .42);
+ color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material.mbsc-textfield.mbsc-hover {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material.mbsc-textfield.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material.mbsc-select-icon,
+.mbsc-material.mbsc-textfield-icon {
+ color: rgba(0, 0, 0, .54)
+}
+
+.mbsc-material.mbsc-textfield-ripple {
+ background-color: #1a73e8
+}
+
+.mbsc-material.mbsc-textfield-ripple.mbsc-error {
+ background-color: #de3226
+}
+
+.mbsc-material.mbsc-label {
+ color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-material.mbsc-label-floating.mbsc-focus,
+.mbsc-material.mbsc-label-stacked.mbsc-focus {
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-error-message,
+.mbsc-material.mbsc-label.mbsc-error {
+ color: #de3226
+}
+
+.mbsc-material.mbsc-select {
+ background: #fff
+}
+
+.mbsc-material.mbsc-textfield-box.mbsc-select,
+.mbsc-material.mbsc-textfield-inner-box {
+ background: #f5f5f5
+}
+
+.mbsc-material.mbsc-textfield-box.mbsc-select.mbsc-hover,
+.mbsc-material.mbsc-textfield-inner-box.mbsc-hover {
+ background: #ededed
+}
+
+.mbsc-material.mbsc-textfield-box.mbsc-select.mbsc-focus,
+.mbsc-material.mbsc-textfield-inner-box.mbsc-focus {
+ background: #e3e3e3
+}
+
+.mbsc-material.mbsc-textfield-fieldset {
+ border-color: rgba(0, 0, 0, .42)
+}
+
+.mbsc-material.mbsc-textfield-fieldset.mbsc-hover {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material.mbsc-textfield-fieldset.mbsc-focus {
+ border-color: #1a73e8
+}
+
+.mbsc-material.mbsc-textfield-fieldset.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material.mbsc-textfield-fieldset.disabled {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material.mbsc-textfield-tag {
+ background: #d4d4d4
+}
+
+.mbsc-material.mbsc-textfield-tag-clear {
+ color: rgba(0, 0, 0, .54)
+}
+
+.mbsc-material-dark.mbsc-textfield {
+ border-bottom-color: #fff;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-textfield.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-material-dark.mbsc-textfield.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-dark.mbsc-select-icon,
+.mbsc-material-dark.mbsc-textfield-icon {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-textfield-ripple {
+ background-color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-textfield-ripple.mbsc-error {
+ background-color: #de3226
+}
+
+.mbsc-material-dark.mbsc-label {
+ color: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-material-dark.mbsc-label-floating.mbsc-focus,
+.mbsc-material-dark.mbsc-label-stacked.mbsc-focus {
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-error-message,
+.mbsc-material-dark.mbsc-label.mbsc-error {
+ color: #de3226
+}
+
+.mbsc-material-dark.mbsc-select {
+ background: #000
+}
+
+.mbsc-material-dark.mbsc-textfield-box.mbsc-select,
+.mbsc-material-dark.mbsc-textfield-inner-box {
+ background: #0a0a0a
+}
+
+.mbsc-material-dark.mbsc-textfield-box.mbsc-select.mbsc-hover,
+.mbsc-material-dark.mbsc-textfield-inner-box.mbsc-hover {
+ background: #121212
+}
+
+.mbsc-material-dark.mbsc-textfield-box.mbsc-select.mbsc-focus,
+.mbsc-material-dark.mbsc-textfield-inner-box.mbsc-focus {
+ background: #1c1c1c
+}
+
+.mbsc-material-dark.mbsc-textfield-fieldset,
+.mbsc-material-dark.mbsc-textfield-fieldset.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-material-dark.mbsc-textfield-fieldset.mbsc-focus {
+ border-color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-textfield-fieldset.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-dark.mbsc-textfield-fieldset.disabled {
+ border-color: #fff
+}
+
+.mbsc-material-dark.mbsc-textfield-tag {
+ background: #454545
+}
+
+.mbsc-material-dark.mbsc-textfield-tag-clear {
+ color: #fff
+}
+
+.mbsc-windows.mbsc-textfield-wrapper {
+ margin: 1em
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-inline {
+ margin: 1.75em 1em
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-floating {
+ padding-top: 1.75em
+}
+
+.mbsc-windows.mbsc-textfield {
+ border: 1px solid;
+ border-radius: 2px;
+ height: 2em;
+ padding: 0 .5em
+}
+
+.mbsc-windows.mbsc-textfield-icon {
+ height: 1.125em;
+ line-height: 1.125em;
+ margin: 0 1px;
+ top: .4375em;
+ width: 1.125em
+}
+
+.mbsc-windows.mbsc-textfield-has-icon-right {
+ padding-right: 2em
+}
+
+.mbsc-windows.mbsc-textfield-has-icon-left {
+ padding-left: 2em
+}
+
+.mbsc-windows.mbsc-textfield-icon-left {
+ left: .4375em
+}
+
+.mbsc-windows.mbsc-textfield-icon-right {
+ right: .4375em
+}
+
+.mbsc-windows.mbsc-error-message {
+ font-size: .75em
+}
+
+.mbsc-windows.mbsc-label {
+ font-size: .875em;
+ font-weight: 600;
+ line-height: 2em
+}
+
+.mbsc-windows.mbsc-label-inline {
+ line-height: 2.285715em
+}
+
+.mbsc-windows.mbsc-label-floating {
+ top: 2.142858em
+}
+
+.mbsc-windows.mbsc-label-stacked {
+ position: static
+}
+
+.mbsc-windows.mbsc-label-floating.mbsc-ltr {
+ -webkit-transform: translateX(.571429em);
+ transform: translateX(.571429em)
+}
+
+.mbsc-windows.mbsc-label-floating.mbsc-rtl {
+ -webkit-transform: translateX(-.5em);
+ transform: translateX(-.5em)
+}
+
+.mbsc-windows.mbsc-label-box-floating-has-icon-left.mbsc-ltr,
+.mbsc-windows.mbsc-label-outline-floating-has-icon-left.mbsc-ltr,
+.mbsc-windows.mbsc-label-underline-floating-has-icon-left.mbsc-ltr {
+ -webkit-transform: translateX(2.285715em);
+ transform: translateX(2.285715em)
+}
+
+.mbsc-windows.mbsc-label-box-floating-has-icon-right.mbsc-rtl,
+.mbsc-windows.mbsc-label-outline-floating-has-icon-right.mbsc-rtl,
+.mbsc-windows.mbsc-label-underline-floating-has-icon-right.mbsc-rtl {
+ -webkit-transform: translateX(-2.285715em);
+ transform: translateX(-2.285715em)
+}
+
+.mbsc-windows.mbsc-label.mbsc-label-floating-active {
+ -webkit-transform: translateY(-2.142858em);
+ transform: translateY(-2.142858em)
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline {
+ border-bottom: 1px solid
+}
+
+.mbsc-windows.mbsc-textfield-underline {
+ border: 0;
+ border-radius: 0
+}
+
+.mbsc-windows.mbsc-select.mbsc-ltr {
+ padding-right: 2em
+}
+
+.mbsc-windows.mbsc-select.mbsc-rtl {
+ padding-left: 2em
+}
+
+.mbsc-windows.mbsc-select.mbsc-textfield-has-icon-right.mbsc-ltr {
+ padding-right: 3.125em
+}
+
+.mbsc-windows.mbsc-select.mbsc-textfield-has-icon-left.mbsc-rtl {
+ padding-left: 3.125em
+}
+
+.mbsc-windows.mbsc-select-icon {
+ height: 1.125em;
+ line-height: 1.125em;
+ margin: 0 1px;
+ top: .4375em;
+ width: 1.125em
+}
+
+.mbsc-windows.mbsc-select-icon.mbsc-ltr {
+ right: .4375em
+}
+
+.mbsc-windows.mbsc-select-icon.mbsc-rtl {
+ left: .4375em
+}
+
+.mbsc-windows.mbsc-select-icon-right.mbsc-ltr {
+ right: 2em
+}
+
+.mbsc-windows.mbsc-select-icon-left.mbsc-rtl {
+ left: 2em
+}
+
+.mbsc-windows.mbsc-textarea {
+ height: 3.5em;
+ padding-bottom: .1875em;
+ padding-top: .1875em
+}
+
+.mbsc-windows.mbsc-textfield.mbsc-textfield-tags {
+ min-height: 2em;
+ padding: .125em
+}
+
+.mbsc-windows.mbsc-textfield-tag {
+ margin: .125em
+}
+
+.mbsc-windows.mbsc-textfield-tag.mbsc-ltr {
+ margin-right: .125em
+}
+
+.mbsc-windows.mbsc-textfield-tag.mbsc-rtl {
+ margin-left: .125em
+}
+
+.mbsc-windows.mbsc-textfield-tag-text {
+ line-height: 1.571429em
+}
+
+.mbsc-windows.mbsc-textfield-tag-clear.mbsc-icon {
+ border-width: .125em;
+ height: 1.375em;
+ width: 1.375em
+}
+
+.mbsc-windows.mbsc-textfield-tags-placeholder {
+ line-height: 1.625em;
+ padding: 0 .375em
+}
+
+.mbsc-windows.mbsc-textfield-wrapper {
+ color: #333
+}
+
+.mbsc-windows.mbsc-textfield-wrapper.mbsc-disabled {
+ color: #9e9e9e
+}
+
+.mbsc-windows.mbsc-textfield {
+ background: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-textfield-box,
+.mbsc-windows.mbsc-textfield-outline {
+ border-color: #878787
+}
+
+.mbsc-windows.mbsc-textfield.mbsc-hover {
+ border-color: #333
+}
+
+.mbsc-windows.mbsc-textfield-box.mbsc-focus,
+.mbsc-windows.mbsc-textfield-outline.mbsc-focus {
+ border-color: #0078d7;
+ box-shadow: inset 0 0 0 1px #0078d7
+}
+
+.mbsc-windows.mbsc-textfield.mbsc-disabled {
+ background: #f2f2f2;
+ border-color: #f2f2f2
+}
+
+.mbsc-windows.mbsc-textfield.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows.mbsc-textfield-box.mbsc-error.mbsc-focus,
+.mbsc-windows.mbsc-textfield-outline.mbsc-error.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #a4262c
+}
+
+.mbsc-windows.mbsc-error-message {
+ color: #a4262c
+}
+
+.mbsc-windows.mbsc-label {
+ color: #333
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline {
+ border-color: #878787
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline.mbsc-hover {
+ border-color: #333
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline.mbsc-focus {
+ border-color: #0078d7;
+ box-shadow: 0 1px 0 0 #0078d7
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline.mbsc-disabled {
+ border-color: #f2f2f2
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows.mbsc-textfield-wrapper-underline.mbsc-error.mbsc-focus {
+ box-shadow: 0 1px 0 0 #a4262c
+}
+
+.mbsc-windows.mbsc-textfield-tag {
+ background: #e6e6e6
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper.mbsc-disabled {
+ color: #949494
+}
+
+.mbsc-windows-dark.mbsc-textfield {
+ background: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-textfield-box,
+.mbsc-windows-dark.mbsc-textfield-outline {
+ border-color: #ababab
+}
+
+.mbsc-windows-dark.mbsc-textfield.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-windows-dark.mbsc-textfield-box.mbsc-focus,
+.mbsc-windows-dark.mbsc-textfield-outline.mbsc-focus {
+ border-color: #0078d7;
+ box-shadow: inset 0 0 0 1px #0078d7
+}
+
+.mbsc-windows-dark.mbsc-textfield.mbsc-disabled {
+ background: #272727;
+ border-color: #272727
+}
+
+.mbsc-windows-dark.mbsc-textfield.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-dark.mbsc-textfield-box.mbsc-error.mbsc-focus,
+.mbsc-windows-dark.mbsc-textfield-outline.mbsc-error.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #a4262c
+}
+
+.mbsc-windows-dark.mbsc-error-message {
+ color: #a4262c
+}
+
+.mbsc-windows-dark.mbsc-label {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper-underline {
+ border-color: #ababab
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper-underline.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper-underline.mbsc-focus {
+ border-color: #0078d7;
+ box-shadow: 0 1px 0 0 #0078d7
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper-underline.mbsc-disabled {
+ border-color: #272727
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper-underline.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-dark.mbsc-textfield-wrapper-underline.mbsc-error.mbsc-focus {
+ box-shadow: 0 1px 0 0 #a4262c
+}
+
+.mbsc-windows-dark.mbsc-textfield-tag {
+ background: #5f5f5f
+}
+
+@-webkit-keyframes autofill {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes autofill {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+.mbsc-textfield-wrapper {
+ display: block;
+ margin: 0;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 0
+}
+
+.mbsc-textfield-wrapper-inline {
+ display: -moz-box;
+ display: flex
+}
+
+.mbsc-form-grid .mbsc-textfield-wrapper-box,
+.mbsc-form-grid .mbsc-textfield-wrapper-outline {
+ margin: .75em 1em
+}
+
+.mbsc-textfield-inner {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ position: relative
+}
+
+.mbsc-textfield-inner-inline {
+ -moz-box-flex: 1;
+ flex: 1 auto
+}
+
+.mbsc-textfield {
+ -moz-appearance: none;
+ appearance: none;
+ -webkit-appearance: none;
+ border: 0;
+ border-radius: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ font-family: inherit;
+ font-size: 1em;
+ margin: 0;
+ outline: 0;
+ padding: 0;
+ width: 100%
+}
+
+.mbsc-textfield:-webkit-autofill {
+ -webkit-animation-name: autofill;
+ animation-name: autofill
+}
+
+.mbsc-textfield::-webkit-inner-spin-button {
+ align-self: center;
+ height: 2em
+}
+
+.mbsc-textfield::-moz-placeholder {
+ color: inherit;
+ opacity: .5
+}
+
+.mbsc-textfield::-webkit-input-placeholder {
+ color: inherit;
+ opacity: .5
+}
+
+.mbsc-textfield-floating:-ms-input-placeholder {
+ color: transparent
+}
+
+.mbsc-textfield-floating::-moz-placeholder {
+ opacity: 0;
+ -moz-transition: opacity .2s;
+ transition: opacity .2s
+}
+
+.mbsc-textfield-floating::-webkit-input-placeholder {
+ opacity: 0;
+ -webkit-transition: opacity .2s;
+ transition: opacity .2s
+}
+
+.mbsc-textfield-floating::-webkit-datetime-edit {
+ color: transparent
+}
+
+.mbsc-textfield-floating-active:-ms-input-placeholder {
+ color: inherit
+}
+
+.mbsc-textfield-floating-active::-moz-placeholder {
+ opacity: .5
+}
+
+.mbsc-textfield-floating-active::-webkit-input-placeholder {
+ opacity: .5
+}
+
+.mbsc-textfield-floating-active::-webkit-datetime-edit {
+ color: inherit
+}
+
+.mbsc-textfield-floating .mbsc-textfield-tags-placeholder {
+ opacity: 0;
+ transition: opacity .2s
+}
+
+.mbsc-textfield-floating-active .mbsc-textfield-tags-placeholder {
+ opacity: .5
+}
+
+.mbsc-textfield-fieldset {
+ bottom: 0;
+ left: 0;
+ margin: 0;
+ padding: 0 1em;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-textfield-icon {
+ position: absolute;
+ text-align: center;
+ top: 0
+}
+
+.mbsc-textfield-icon-left {
+ left: 0
+}
+
+.mbsc-textfield-icon-right {
+ right: 0
+}
+
+.mbsc-label {
+ line-height: 1em;
+ pointer-events: none;
+ position: absolute;
+ text-overflow: ellipsis;
+ top: 0;
+ white-space: nowrap;
+ z-index: 1
+}
+
+.mbsc-label-inline {
+ -moz-box-flex: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ flex: 0 0 auto;
+ max-width: 12.5em;
+ overflow: hidden;
+ pointer-events: auto;
+ position: static;
+ width: 30%
+}
+
+.mbsc-label-floating-animate {
+ transition: -webkit-transform .2s;
+ transition: transform .2s;
+ transition: transform .2s, -webkit-transform .2s
+}
+
+.mbsc-label-floating.mbsc-ltr {
+ -webkit-transform-origin: top left;
+ transform-origin: top left
+}
+
+.mbsc-label-floating.mbsc-rtl {
+ -webkit-transform-origin: top right;
+ transform-origin: top right
+}
+
+.mbsc-error-message {
+ font-size: .75em;
+ line-height: 1.5em;
+ position: absolute;
+ top: 100%
+}
+
+.mbsc-textfield-file {
+ left: 0;
+ opacity: 0;
+ position: absolute
+}
+
+.mbsc-select {
+ cursor: pointer
+}
+
+.mbsc-select-icon {
+ pointer-events: none;
+ position: absolute;
+ text-align: center
+}
+
+.mbsc-textarea {
+ line-height: 1.5em;
+ overflow: hidden;
+ resize: none
+}
+
+.mbsc-toggle-icon:hover {
+ cursor: pointer
+}
+
+.mbsc-textfield.mbsc-textfield-hidden.mbsc-textarea {
+ border: 0;
+ height: 100%;
+ left: 0;
+ opacity: 0;
+ padding: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: -1
+}
+
+.mbsc-textfield.mbsc-textfield-tags.mbsc-textarea {
+ display: block;
+ height: auto;
+ max-height: 5.5em;
+ overflow: auto
+}
+
+.mbsc-textfield-tag {
+ display: inline-block;
+ line-height: normal;
+ margin: .25em 0
+}
+
+.mbsc-textfield-tag.mbsc-ltr {
+ margin-right: .5em;
+ padding-left: .75em
+}
+
+.mbsc-textfield-tag.mbsc-rtl {
+ margin-left: .5em;
+ padding-right: .75em
+}
+
+.mbsc-textfield-tag-text {
+ font-size: .875em;
+ line-height: 1.857143em
+}
+
+.mbsc-textfield-tag-clear.mbsc-icon {
+ border: .25em solid transparent;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ cursor: pointer;
+ height: 1.625em;
+ vertical-align: top;
+ width: 1.625em
+}
+
+.mbsc-textfield-tags-placeholder {
+ line-height: 2.125em;
+ opacity: .5
+}
+
+.mbsc-ios.mbsc-picker .mbsc-popup-overlay-bottom,
+.mbsc-ios.mbsc-picker .mbsc-popup-overlay-top {
+ background: none
+}
+
+.mbsc-ios.mbsc-datepicker-inline {
+ border-bottom: 1px solid;
+ border-top: 1px solid;
+ margin-bottom: -1px;
+ margin-top: -1px;
+ position: relative;
+ z-index: 2
+}
+
+.mbsc-ios.mbsc-datepicker .mbsc-calendar-cell,
+.mbsc-ios.mbsc-datepicker .mbsc-calendar-cell-inner,
+.mbsc-ios.mbsc-datepicker .mbsc-calendar-grid {
+ border-color: transparent
+}
+
+.mbsc-ios.mbsc-datepicker .mbsc-highlighted .mbsc-calendar-day-text,
+.mbsc-ios.mbsc-datepicker .mbsc-hover .mbsc-calendar-day-text,
+.mbsc-ios.mbsc-datepicker .mbsc-range-hover-end .mbsc-calendar-day-text,
+.mbsc-ios.mbsc-datepicker .mbsc-range-hover-start .mbsc-calendar-day-text,
+.mbsc-ios.mbsc-datepicker .mbsc-selected .mbsc-calendar-day-text {
+ font-size: 1.125em;
+ height: 1.444445em;
+ line-height: 1.444445em;
+ margin: .16667em;
+ width: 1.444445em
+}
+
+.mbsc-ios.mbsc-picker-header {
+ border-bottom: 1px solid;
+ font-weight: 700;
+ line-height: 1.25em;
+ padding: .75em 4.375em;
+ text-align: center
+}
+
+.mbsc-ios.mbsc-range-control-wrapper {
+ overflow: hidden;
+ padding: 0 .75em
+}
+
+.mbsc-ios.mbsc-range-control-wrapper .mbsc-segmented {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 100%;
+ width: 17em
+}
+
+.mbsc-ios.mbsc-datepicker-control-calendar.mbsc-datepicker-control-time .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-ios.mbsc-datepicker-control-calendar.mbsc-datepicker-control-timegrid .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-ios.mbsc-datepicker-control-date.mbsc-datepicker-control-time .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-ios.mbsc-datepicker-control-datetime .mbsc-range-control-wrapper .mbsc-segmented {
+ width: 25em
+}
+
+.mbsc-ios.mbsc-range-control-wrapper .mbsc-segmented-button {
+ display: block;
+ padding: 0 .5em
+}
+
+.mbsc-ios.mbsc-range-control-wrapper .mbsc-range-value-nonempty .mbsc-segmented-button {
+ padding: 0 2.0625em 0 .5em
+}
+
+.mbsc-ios.mbsc-range-control-wrapper .mbsc-range-value-nonempty .mbsc-segmented-button.mbsc-rtl {
+ padding: 0 .5em 0 2.0625em
+}
+
+.mbsc-ios.mbsc-range-control-label,
+.mbsc-ios.mbsc-range-control-value {
+ line-height: 1.538462em;
+ text-align: left
+}
+
+.mbsc-ios.mbsc-range-control-label.active,
+.mbsc-ios.mbsc-range-control-value.active {
+ font-weight: 600
+}
+
+.mbsc-ios.mbsc-range-control-label.mbsc-rtl,
+.mbsc-ios.mbsc-range-control-value.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-ios.mbsc-range-control-label {
+ padding: .615385em .615385em 0
+}
+
+.mbsc-ios.mbsc-range-control-value {
+ overflow: hidden;
+ padding: 0 .615385em .615385em;
+ text-overflow: ellipsis
+}
+
+.mbsc-ios.mbsc-range-control-value.active {
+ font-size: 1.076923em;
+ line-height: 1.428572em;
+ padding: 0 .571429em .571429em
+}
+
+.mbsc-ios.mbsc-range-label-clear {
+ height: 1.307693em;
+ margin-top: -.692308em;
+ width: 1.307693em
+}
+
+.mbsc-ios.mbsc-range-label-clear.mbsc-ltr {
+ right: 1em
+}
+
+.mbsc-ios.mbsc-range-label-clear.mbsc-rtl {
+ left: 1em
+}
+
+.mbsc-ios.mbsc-picker .mbsc-popup-arrow,
+.mbsc-ios.mbsc-picker .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-picker-header {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-datepicker .mbsc-calendar,
+.mbsc-ios.mbsc-datepicker .mbsc-calendar-cell,
+.mbsc-ios.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-datepicker-bottom.mbsc-datepicker-control-date,
+.mbsc-ios.mbsc-datepicker-top.mbsc-datepicker-control-date {
+ background: #d1d5db
+}
+
+.mbsc-ios.mbsc-datepicker-inline {
+ background: #fff;
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-ios.mbsc-range-control-value.active {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-range-control-text-empty,
+.mbsc-ios.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-ios.mbsc-range-label-clear {
+ color: #ccc
+}
+
+.mbsc-ios.mbsc-range-label-clear:hover {
+ color: #b2b2b2
+}
+
+.mbsc-ios-dark.mbsc-picker .mbsc-popup-arrow,
+.mbsc-ios-dark.mbsc-picker .mbsc-popup-body {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-picker-header {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-datepicker .mbsc-calendar,
+.mbsc-ios-dark.mbsc-datepicker .mbsc-calendar-cell,
+.mbsc-ios-dark.mbsc-datepicker .mbsc-calendar-slide,
+.mbsc-ios-dark.mbsc-datepicker-bottom.mbsc-datepicker-control-date,
+.mbsc-ios-dark.mbsc-datepicker-top.mbsc-datepicker-control-date {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-datepicker-inline {
+ background: #1c1c1c;
+ border-color: #333;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-range-control-value.active {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-range-control-text-empty,
+.mbsc-ios-dark.mbsc-range-control-text-empty.active {
+ color: hsla(0, 0%, 100%, .4)
+}
+
+.mbsc-ios-dark.mbsc-range-label-clear {
+ color: #333
+}
+
+.mbsc-ios-dark.mbsc-range-label-clear:hover {
+ color: #4d4d4d
+}
+
+.mbsc-material.mbsc-picker-header {
+ font-size: 1.25em;
+ font-weight: 500;
+ line-height: 1.4em;
+ padding: .8em .8em 0;
+ text-align: center
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-segmented {
+ max-width: 100%;
+ padding: 0;
+ width: 18.5em
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-segmented-button.mbsc-button.mbsc-font {
+ background: none;
+ border: 0;
+ border-bottom: 2px solid transparent;
+ border-radius: 0;
+ display: block;
+ padding: .8571422em 1.142857em
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-segmented-button.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-segmented-button.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-range-value-nonempty .mbsc-segmented-button.mbsc-ltr {
+ padding-right: 2.642857em
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-range-value-nonempty .mbsc-segmented-button.mbsc-rtl {
+ padding-left: 2.642857em
+}
+
+.mbsc-material.mbsc-datepicker-control-calendar.mbsc-datepicker-control-time .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-material.mbsc-datepicker-control-calendar.mbsc-datepicker-control-timegrid .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-material.mbsc-datepicker-control-date.mbsc-datepicker-control-time .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-material.mbsc-datepicker-control-datetime .mbsc-range-control-wrapper .mbsc-segmented {
+ width: 25em
+}
+
+.mbsc-material.mbsc-range-control-label {
+ text-transform: uppercase
+}
+
+.mbsc-material.mbsc-range-control-value {
+ font-weight: 700;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.mbsc-material.mbsc-range-label-clear {
+ height: 1.3125em;
+ margin-top: -.625em;
+ right: .75em;
+ width: 1.3125em
+}
+
+.mbsc-material.mbsc-range-label-clear.mbsc-ltr {
+ right: .75em
+}
+
+.mbsc-material.mbsc-range-label-clear.mbsc-rtl {
+ left: .75em
+}
+
+.mbsc-material.mbsc-datepicker .mbsc-calendar-title {
+ font-size: 1.142858em;
+ line-height: 1.75em
+}
+
+.mbsc-material.mbsc-calendar-grid .mbsc-calendar-title {
+ font-size: 1.428572em;
+ line-height: 1.4em
+}
+
+.mbsc-material.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material.mbsc-datepicker-inline {
+ background: #fff;
+ color: #303030
+}
+
+.mbsc-material.mbsc-datepicker-inline .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material.mbsc-range-control-wrapper {
+ border-bottom: 1px solid rgba(0, 0, 0, .2)
+}
+
+.mbsc-material.mbsc-range-control-wrapper .mbsc-material.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #1a73e8
+}
+
+.mbsc-material.mbsc-range-control-label.active,
+.mbsc-material.mbsc-range-control-value.active {
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-range-control-text-empty,
+.mbsc-material.mbsc-range-control-text-empty.active {
+ color: rgba(48, 48, 48, .4)
+}
+
+.mbsc-material.mbsc-range-label-clear {
+ color: #b0b0b0
+}
+
+.mbsc-material.mbsc-range-label-clear:hover {
+ color: #7d7d7d
+}
+
+.mbsc-material-dark.mbsc-datepicker .mbsc-calendar-slide {
+ background: #303030
+}
+
+.mbsc-material-dark.mbsc-datepicker-inline {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-datepicker-inline .mbsc-calendar-slide {
+ background: #000
+}
+
+.mbsc-material-dark.mbsc-range-control-wrapper {
+ border-bottom: 1px solid hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-dark.mbsc-range-control-wrapper .mbsc-material-dark.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-range-control-label.active,
+.mbsc-material-dark.mbsc-range-control-value.active {
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-range-control-text-empty,
+.mbsc-material-dark.mbsc-range-control-text-empty.active {
+ color: hsla(0, 0%, 100%, .4)
+}
+
+.mbsc-material-dark.mbsc-range-label-clear {
+ color: gray
+}
+
+.mbsc-material-dark.mbsc-range-label-clear:hover {
+ color: #b3b3b3
+}
+
+.mbsc-windows.mbsc-picker-header {
+ border-bottom: 1px solid;
+ font-weight: 700;
+ padding: .5em;
+ text-align: center
+}
+
+.mbsc-windows.mbsc-datepicker-tab {
+ border-top: 1px solid;
+ margin-top: -1px
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-segmented {
+ max-width: 100%;
+ padding: 0;
+ width: 18.5em
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-segmented-button.mbsc-button.mbsc-font {
+ background: none;
+ border: 0;
+ border-bottom: 2px solid transparent;
+ display: block;
+ line-height: 1.25em;
+ padding: .625em 1em;
+ text-align: left
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-segmented-button.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-range-value-nonempty .mbsc-segmented-button.mbsc-ltr {
+ padding-right: 1.875em
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-range-value-nonempty .mbsc-segmented-button.mbsc-rtl {
+ padding-left: 1.875em
+}
+
+.mbsc-windows.mbsc-datepicker-control-calendar.mbsc-datepicker-control-time .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-windows.mbsc-datepicker-control-calendar.mbsc-datepicker-control-timegrid .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-windows.mbsc-datepicker-control-date.mbsc-datepicker-control-time .mbsc-range-control-wrapper .mbsc-segmented,
+.mbsc-windows.mbsc-datepicker-control-datetime .mbsc-range-control-wrapper .mbsc-segmented {
+ width: 26.25em
+}
+
+.mbsc-windows.mbsc-range-control-label {
+ font-size: .9375em;
+ line-height: 1.6em
+}
+
+.mbsc-windows.mbsc-range-control-value {
+ font-size: 1.0625em;
+ overflow: hidden;
+ text-overflow: ellipsis
+}
+
+.mbsc-windows.mbsc-range-label-clear {
+ height: 1em;
+ margin-top: -.5em;
+ right: .4375em;
+ width: 1em
+}
+
+.mbsc-windows.mbsc-range-label-clear.mbsc-ltr {
+ right: .4375em
+}
+
+.mbsc-windows.mbsc-range-label-clear.mbsc-rtl {
+ left: .4375em
+}
+
+.mbsc-windows.mbsc-datepicker-inline {
+ background: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-datepicker-tab,
+.mbsc-windows.mbsc-picker-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-range-control-wrapper {
+ border-bottom: 1px solid #e6e6e6
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-windows.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #0078d7
+}
+
+.mbsc-windows.mbsc-range-control-wrapper .mbsc-windows.mbsc-segmented-button.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #333
+}
+
+.mbsc-windows.mbsc-range-control-label.active,
+.mbsc-windows.mbsc-range-control-value.active {
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-range-control-text-empty,
+.mbsc-windows.mbsc-range-control-text-empty.active {
+ color: rgba(51, 51, 51, .4)
+}
+
+.mbsc-windows.mbsc-range-label-clear {
+ color: rgba(51, 51, 51, .6)
+}
+
+.mbsc-windows.mbsc-range-label-clear:hover {
+ color: #333
+}
+
+.mbsc-windows-dark.mbsc-datepicker-inline {
+ background: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-datepicker-tab,
+.mbsc-windows-dark.mbsc-picker-header {
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-range-control-wrapper {
+ border-bottom: 1px solid #343434
+}
+
+.mbsc-windows-dark.mbsc-range-control-wrapper .mbsc-windows-dark.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-range-control-wrapper .mbsc-windows-dark.mbsc-segmented-button.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #fff
+}
+
+.mbsc-windows-dark.mbsc-range-control-label.active,
+.mbsc-windows-dark.mbsc-range-control-value.active {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-range-control-text-empty,
+.mbsc-windows-dark.mbsc-range-control-text-empty.active {
+ color: hsla(0, 0%, 100%, .4)
+}
+
+.mbsc-windows-dark.mbsc-range-label-clear {
+ color: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-windows-dark.mbsc-range-label-clear:hover {
+ color: #fff
+}
+
+mbsc-date,
+mbsc-datetime,
+mbsc-time {
+ display: block;
+ width: 100%
+}
+
+.mbsc-datepicker-inline {
+ height: 100%
+}
+
+.mbsc-datepicker .mbsc-calendar {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ height: 100%;
+ max-width: 100%;
+ padding-bottom: .5em
+}
+
+.mbsc-datepicker .mbsc-calendar-header .mbsc-calendar-week-days {
+ padding: 0 .5em
+}
+
+.mbsc-range-control-wrapper .mbsc-segmented-input {
+ width: 1px
+}
+
+.mbsc-range-label-clear {
+ position: absolute;
+ top: 50%
+}
+
+.mbsc-datepicker-tab-wrapper {
+ -moz-box-pack: center;
+ flex-wrap: wrap;
+ justify-content: center;
+ overflow: hidden;
+ position: relative
+}
+
+.mbsc-datepicker-tab {
+ -moz-box-align: center;
+ -moz-box-pack: center;
+ align-items: center;
+ justify-content: center;
+ max-width: 100%;
+ visibility: hidden
+}
+
+.mbsc-datepicker-tab-expand {
+ height: 100%
+}
+
+.mbsc-datepicker-tab-active {
+ visibility: visible
+}
+
+.mbsc-datepicker-time-modal {
+ height: 100%;
+ left: 0;
+ max-width: none;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1
+}
+
+.mbsc-datepicker .mbsc-calendar-slide {
+ padding: 0 .5em
+}
+
+.mbsc-ios.mbsc-list-item {
+ margin-top: -1px;
+ padding: 1em
+}
+
+.mbsc-ios.mbsc-list-item:after,
+.mbsc-ios.mbsc-list-item:before {
+ content: "";
+ left: 1em;
+ position: absolute;
+ right: 0
+}
+
+.mbsc-ios.mbsc-list-item.mbsc-rtl:after,
+.mbsc-ios.mbsc-list-item.mbsc-rtl:before {
+ left: 0;
+ right: 1em
+}
+
+.mbsc-ios.mbsc-list-item:before {
+ top: 0;
+ transition: none
+}
+
+.mbsc-ios.mbsc-list-item:after {
+ bottom: 0
+}
+
+.mbsc-ios.mbsc-list-item:first-child:before,
+.mbsc-ios.mbsc-list-item:last-child:after {
+ left: 0;
+ right: 0
+}
+
+.mbsc-ios.mbsc-list-item.mbsc-active,
+.mbsc-ios.mbsc-list-item.mbsc-hover {
+ z-index: 3
+}
+
+.mbsc-ios.mbsc-list-item.mbsc-focus,
+.mbsc-ios.mbsc-list-item.mbsc-selected {
+ z-index: 5
+}
+
+.mbsc-ios.mbsc-list-item.mbsc-active:after,
+.mbsc-ios.mbsc-list-item.mbsc-active:before,
+.mbsc-ios.mbsc-list-item.mbsc-focus:after,
+.mbsc-ios.mbsc-list-item.mbsc-focus:before,
+.mbsc-ios.mbsc-list-item.mbsc-hover:after,
+.mbsc-ios.mbsc-list-item.mbsc-hover:before,
+.mbsc-ios.mbsc-list-item.mbsc-selected:after,
+.mbsc-ios.mbsc-list-item.mbsc-selected:before {
+ left: 0;
+ right: 0
+}
+
+.mbsc-ios.mbsc-list-header {
+ border-bottom: 1px solid;
+ border-top: 1px solid;
+ font-size: .75em;
+ line-height: 1.5em;
+ margin-top: -1px;
+ padding: 2.333334em 1.333334em .5em;
+ text-transform: uppercase;
+ z-index: 4
+}
+
+.mbsc-ios.mbsc-list-header:first-child {
+ border-top: 0;
+ margin-top: 0
+}
+
+.mbsc-ios.mbsc-list-item-background {
+ border-radius: .5em;
+ bottom: 0;
+ left: 0;
+ margin: .25em;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ top: 0;
+ transition: background-color .15s ease-in-out
+}
+
+.mbsc-ios.mbsc-list-item {
+ background: #fff;
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-ios.mbsc-list-item:after,
+.mbsc-ios.mbsc-list-item:before {
+ border-top: 1px solid #ccc
+}
+
+.mbsc-ios.mbsc-list-header {
+ background: #efeff4;
+ border-color: #ccc;
+ color: #6e6e72
+}
+
+.mbsc-ios.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios-dark.mbsc-list-item {
+ background: #000;
+ border-color: #333;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-list-item:after,
+.mbsc-ios-dark.mbsc-list-item:before {
+ border-top: 1px solid #333
+}
+
+.mbsc-ios-dark.mbsc-list-header {
+ background: #1a1a1a;
+ border-color: #333;
+ color: #8f8f8f
+}
+
+.mbsc-ios-dark.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-material.mbsc-list-header {
+ background: #fff;
+ color: #1a73e8;
+ font-size: .875em;
+ font-weight: 600;
+ margin-top: -1px;
+ padding: .5714em 1.14285em
+}
+
+.mbsc-material.mbsc-list-item {
+ background: #fff;
+ color: #303030
+}
+
+.mbsc-material.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-dark.mbsc-list-header {
+ background: #000;
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-list-item {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-dark.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows.mbsc-list-header {
+ font-weight: 500;
+ line-height: 1.25em
+}
+
+.mbsc-windows.mbsc-list-item {
+ line-height: 1.25em;
+ padding: .5em
+}
+
+.mbsc-windows.mbsc-list-header,
+.mbsc-windows.mbsc-list-item {
+ background: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-list-item.mbsc-hover:before {
+ background: rgba(51, 51, 51, .1)
+}
+
+.mbsc-windows.mbsc-list-item.mbsc-active:before {
+ background: rgba(51, 51, 51, .2)
+}
+
+.mbsc-windows-dark.mbsc-list-header,
+.mbsc-windows-dark.mbsc-list-item {
+ background: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-list-item.mbsc-hover:before {
+ background: hsla(0, 0%, 100%, .22)
+}
+
+.mbsc-windows-dark.mbsc-list-item.mbsc-active:before {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-list {
+ display: block
+}
+
+.mbsc-list-header,
+.mbsc-list-item {
+ display: -moz-box;
+ display: flex
+}
+
+.mbsc-list-item {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ line-height: 1.25em;
+ list-style: none;
+ overflow: hidden;
+ position: relative;
+ z-index: 2
+}
+
+.mbsc-list-item-actionable {
+ cursor: pointer
+}
+
+.mbsc-list-item:before {
+ bottom: 0;
+ content: "";
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ top: 0;
+ transition: background-color .2s ease-out;
+ z-index: -1
+}
+
+.mbsc-list-item:focus {
+ outline: 0
+}
+
+.mbsc-list-item::-moz-focus-inner {
+ border: 0
+}
+
+.mbsc-schedule-grid-wrapper {
+ overflow: hidden;
+ position: relative
+}
+
+.mbsc-schedule-time-col,
+.mbsc-timeline-date-col,
+.mbsc-timeline-resource-col,
+.mbsc-timeline-sidebar-col {
+ -moz-box-flex: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ flex: none;
+ width: 4.25em
+}
+
+.mbsc-schedule-grid-scroll,
+.mbsc-timeline-grid-scroll {
+ -webkit-overflow-scrolling: touch;
+ overflow-x: auto;
+ overflow-y: scroll
+}
+
+.mbsc-schedule-all-day-item:after,
+.mbsc-timeline-day-border:after {
+ bottom: 0;
+ content: "";
+ position: absolute;
+ top: 0;
+ z-index: 1
+}
+
+.mbsc-schedule-all-day-item.mbsc-ltr:after,
+.mbsc-timeline-day-border.mbsc-ltr:after {
+ border-right-style: solid;
+ border-right-width: 1px;
+ left: 100%
+}
+
+.mbsc-schedule-all-day-item.mbsc-rtl:after,
+.mbsc-timeline-day-border.mbsc-rtl:after {
+ border-left-style: solid;
+ border-left-width: 1px;
+ right: 100%
+}
+
+.mbsc-schedule-column.mbsc-ltr,
+.mbsc-timeline-column.mbsc-rtl,
+.mbsc-timeline-footer-date.mbsc-rtl,
+.mbsc-timeline-header-column.mbsc-rtl,
+.mbsc-timeline-header-date.mbsc-rtl,
+.mbsc-timeline-resource-footer-cont.mbsc-rtl,
+.mbsc-timeline-resource-header-cont.mbsc-rtl,
+.mbsc-timeline-resource.mbsc-rtl,
+.mbsc-timeline-row-date.mbsc-rtl,
+.mbsc-timeline-sidebar-footer-cont.mbsc-ltr,
+.mbsc-timeline-sidebar-header-cont.mbsc-ltr,
+.mbsc-timeline-sidebar-resource.mbsc-ltr,
+.mbsc-timeline-slot-header.mbsc-rtl {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-schedule-column.mbsc-rtl,
+.mbsc-timeline-column.mbsc-ltr,
+.mbsc-timeline-footer-date.mbsc-ltr,
+.mbsc-timeline-header-column.mbsc-ltr,
+.mbsc-timeline-header-date.mbsc-ltr,
+.mbsc-timeline-resource-footer-cont.mbsc-ltr,
+.mbsc-timeline-resource-header-cont.mbsc-ltr,
+.mbsc-timeline-resource.mbsc-ltr,
+.mbsc-timeline-row-date.mbsc-ltr,
+.mbsc-timeline-sidebar-footer-cont.mbsc-rtl,
+.mbsc-timeline-sidebar-header-cont.mbsc-rtl,
+.mbsc-timeline-sidebar-resource.mbsc-rtl,
+.mbsc-timeline-slot-header.mbsc-ltr {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-schedule-event:focus {
+ outline: none
+}
+
+.mbsc-schedule-event {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 1px 0;
+ position: absolute;
+ z-index: 1
+}
+
+.mbsc-schedule-event.mbsc-ltr {
+ left: 0
+}
+
+.mbsc-schedule-event.mbsc-rtl {
+ right: 0
+}
+
+.mbsc-schedule-event-hover {
+ cursor: pointer
+}
+
+.mbsc-schedule-event-inner {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ font-size: .625em;
+ line-height: 1.5em;
+ margin: 0 .2em;
+ max-height: 100%;
+ overflow: hidden;
+ padding: .5em;
+ position: relative
+}
+
+.mbsc-schedule-event-more .mbsc-schedule-event-inner {
+ padding: .5em .2em;
+ text-align: center
+}
+
+.mbsc-schedule-event-small-height.mbsc-schedule-event-inner {
+ line-height: 1.2em;
+ margin-top: -1px;
+ padding-bottom: 0;
+ padding-top: 0
+}
+
+.mbsc-schedule-event-small-height.mbsc-schedule-event-inner .mbsc-schedule-event-title {
+ font-size: 1em
+}
+
+.mbsc-schedule-event-background {
+ background: currentColor;
+ bottom: -.5em;
+ left: 1px;
+ position: absolute;
+ right: 1px;
+ top: -.5em
+}
+
+.mbsc-schedule-event-start .mbsc-schedule-event-background {
+ top: 1px
+}
+
+.mbsc-schedule-event-end .mbsc-schedule-event-background {
+ bottom: 1px
+}
+
+.mbsc-schedule-event-range {
+ font-size: .8em
+}
+
+.mbsc-schedule-event-all-day {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ margin: .125em 0;
+ min-height: 0;
+ padding: 0 .25em;
+ position: relative;
+ z-index: 2
+}
+
+.mbsc-schedule-event-all-day-placeholder {
+ z-index: -1
+}
+
+.mbsc-schedule-event-all-day-inner {
+ font-size: .625em;
+ height: 1.6em;
+ line-height: 1.6em;
+ margin: 0;
+ overflow: hidden;
+ padding: 0 .3em;
+ position: relative;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-schedule-event-all-day-background.mbsc-schedule-event-background {
+ bottom: 0;
+ top: 0
+}
+
+.mbsc-schedule-event-dragging {
+ position: absolute;
+ top: 0;
+ z-index: 3
+}
+
+.mbsc-schedule-event-inactive {
+ opacity: .5
+}
+
+.mbsc-schedule-event-hidden {
+ visibility: hidden
+}
+
+.mbsc-schedule-event-resize {
+ cursor: ns-resize;
+ display: none;
+ height: .25em;
+ left: 0;
+ position: absolute;
+ right: 0;
+ z-index: 1
+}
+
+.mbsc-schedule-event-resize-start {
+ top: 0
+}
+
+.mbsc-schedule-event-resize-end {
+ bottom: 0
+}
+
+.mbsc-schedule-event-resize-start:after {
+ right: .5em;
+ top: -.25em
+}
+
+.mbsc-schedule-event-resize-end:after {
+ bottom: -.25em;
+ left: .5em
+}
+
+.mbsc-schedule-event-resize:after {
+ background: #fff;
+ border: 1px solid;
+ border-radius: 50%;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ content: "";
+ height: .5em;
+ margin: 1px 0;
+ position: absolute;
+ width: .5em
+}
+
+.mbsc-schedule-event-resize-end-touch:before,
+.mbsc-schedule-event-resize-start-touch:before {
+ content: "";
+ height: 1em;
+ margin: 1px 0;
+ position: absolute;
+ width: 1.5em
+}
+
+.mbsc-schedule-event-resize-start-touch:before {
+ right: 0;
+ top: -.5em
+}
+
+.mbsc-schedule-event-resize-end-touch:before {
+ bottom: -.5em;
+ left: 0
+}
+
+.mbsc-schedule-event-dragging .mbsc-schedule-event-resize,
+.mbsc-schedule-event-hover .mbsc-schedule-event-resize {
+ display: block
+}
+
+.mbsc-schedule-drag-clone {
+ max-height: 200px;
+ max-width: 200px;
+ opacity: 1
+}
+
+.mbsc-schedule-drag-clone .mbsc-schedule-event-resize {
+ display: none
+}
+
+.mbsc-schedule-event-buffer-background {
+ background: currentColor;
+ opacity: .3
+}
+
+.mbsc-schedule-color,
+.mbsc-schedule-invalid {
+ bottom: -.5em;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ top: -.5em;
+ z-index: 0
+}
+
+.mbsc-schedule-color-all-day,
+.mbsc-schedule-invalid-all-day {
+ bottom: 0;
+ top: 0;
+ z-index: -1
+}
+
+.mbsc-schedule-color-start,
+.mbsc-schedule-invalid-start {
+ margin-top: -.5em;
+ padding-top: .5em
+}
+
+.mbsc-schedule-color-end,
+.mbsc-schedule-invalid-end {
+ padding-bottom: .5em
+}
+
+.mbsc-schedule-color-text,
+.mbsc-schedule-invalid-text {
+ font-size: .75em;
+ padding: .375em
+}
+
+.mbsc-schedule-color-text {
+ opacity: .8
+}
+
+.mbsc-schedule-time-indicator {
+ pointer-events: none;
+ position: absolute;
+ z-index: 2
+}
+
+.mbsc-schedule-time-indicator-x {
+ border-bottom: 1px solid
+}
+
+.mbsc-schedule-time-indicator-x.mbsc-ltr {
+ left: 4.25em;
+ right: 0
+}
+
+.mbsc-schedule-time-indicator-x.mbsc-rtl {
+ left: 0;
+ right: 4.25em
+}
+
+.mbsc-schedule-time-indicator-y {
+ border-left: 1px solid;
+ bottom: 0;
+ margin-top: -.25em;
+ top: 2em
+}
+
+.mbsc-schedule-time-indicator-y.mbsc-ltr {
+ margin-left: -1px
+}
+
+.mbsc-schedule-time-indicator-y.mbsc-rtl {
+ margin-right: -1px
+}
+
+.mbsc-schedule-time-indicator-day {
+ position: absolute;
+ width: 14.285714%
+}
+
+.mbsc-schedule-time-indicator-day:before {
+ border-radius: 50%;
+ content: "";
+ height: .4375em;
+ margin-left: -.1875em;
+ margin-right: -.1875em;
+ margin-top: -.1875em;
+ position: absolute;
+ width: .4375em;
+ z-index: 1
+}
+
+.mbsc-schedule-time-indicator-day.mbsc-ltr:before {
+ left: 0
+}
+
+.mbsc-schedule-time-indicator-day.mbsc-rtl:before {
+ right: 0
+}
+
+.mbsc-schedule-time-indicator-time {
+ font-size: .625em;
+ line-height: 2em;
+ margin-top: 1px;
+ padding: 0 .8em;
+ position: absolute;
+ top: -1em;
+ white-space: nowrap
+}
+
+.mbsc-schedule-time-indicator-time-y {
+ line-height: 1.6em;
+ margin-left: -.5em;
+ margin-right: -.5em;
+ margin-top: 0;
+ padding: 0 .5em;
+ top: -1.8em
+}
+
+.mbsc-schedule-time-indicator-time-x.mbsc-ltr,
+.mbsc-schedule-time-indicator-time-y.mbsc-rtl {
+ right: 100%
+}
+
+.mbsc-schedule-time-indicator-time-x.mbsc-rtl,
+.mbsc-schedule-time-indicator-time-y.mbsc-ltr {
+ left: 100%
+}
+
+.mbsc-schedule-cursor-time {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ font-size: .625em;
+ line-height: 2em;
+ position: absolute;
+ white-space: nowrap;
+ z-index: 3
+}
+
+.mbsc-schedule-cursor-time-x {
+ margin-top: -1em
+}
+
+.mbsc-schedule-cursor-time-x.mbsc-ltr {
+ text-align: right
+}
+
+.mbsc-schedule-cursor-time-x.mbsc-rtl {
+ text-align: left
+}
+
+.mbsc-schedule-cursor-time-y {
+ padding: 0 .5em;
+ top: .8em
+}
+
+@supports (overflow:clip) {
+ .mbsc-schedule-event-inner {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0
+ }
+}
+
+.mbsc-schedule-wrapper {
+ overflow: auto
+}
+
+.mbsc-schedule-grid {
+ height: 100%
+}
+
+.mbsc-schedule-resource-group {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ flex-basis: 16em
+}
+
+.mbsc-schedule-resource-group:first-child:last-child {
+ flex-basis: 0
+}
+
+.mbsc-schedule-resource-group.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 2px
+}
+
+.mbsc-schedule-resource-group.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 2px
+}
+
+.mbsc-schedule-resource-group:first-child {
+ border: 0
+}
+
+.mbsc-schedule-date-header-text {
+ line-height: 1.5em;
+ text-align: center
+}
+
+.mbsc-schedule-header {
+ overflow: hidden
+}
+
+.mbsc-schedule-all-day-group-wrapper,
+.mbsc-schedule-header-wrapper {
+ min-width: 0;
+ overflow: hidden
+}
+
+.mbsc-schedule-header-item {
+ display: block;
+ line-height: 1.25em;
+ position: relative;
+ text-align: center
+}
+
+.mbsc-schedule-header-item.mbsc-hover {
+ cursor: pointer
+}
+
+.mbsc-schedule-header-dayname {
+ font-size: .75em
+}
+
+.mbsc-schedule-header-day {
+ font-size: 1.125em
+}
+
+.mbsc-schedule-col-width {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 2.5em
+}
+
+.mbsc-schedule-col-width-multi {
+ width: 6.25em
+}
+
+.mbsc-schedule-resource {
+ overflow: hidden
+}
+
+.mbsc-schedule-resource-title {
+ font-size: .875em;
+ font-weight: 600;
+ padding: .5em;
+ text-align: center
+}
+
+.mbsc-schedule-all-day-cont {
+ position: relative
+}
+
+.mbsc-schedule-all-day-wrapper {
+ max-height: 7.8125em;
+ overflow-x: hidden;
+ overflow-y: scroll;
+ position: relative
+}
+
+.mbsc-schedule-all-day-wrapper-shadow:after {
+ bottom: -4px;
+ box-shadow: inset 0 .5em .25em -.5em rgba(48, 48, 48, .5);
+ content: "";
+ height: 4px;
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ z-index: 4
+}
+
+.mbsc-schedule-all-day-item {
+ position: relative
+}
+
+.mbsc-schedule-all-day-item:first-child,
+.mbsc-schedule-column:first-child {
+ border: 0
+}
+
+.mbsc-schedule-timezone-labels {
+ bottom: 0;
+ font-weight: 700;
+ position: absolute;
+ z-index: 1
+}
+
+.mbsc-schedule-timezone-label {
+ font-size: .75em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-schedule-time-indicator-tz {
+ width: 5.666667em
+}
+
+.mbsc-schedule-time-indicator-tz.mbsc-ltr,
+.mbsc-schedule-timezone-label.mbsc-ltr {
+ text-align: right
+}
+
+.mbsc-schedule-time-indicator-tz.mbsc-rtl,
+.mbsc-schedule-timezone-label.mbsc-rtl {
+ text-align: left
+}
+
+.mbsc-schedule-time-wrapper {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 3.125em;
+ pointer-events: auto;
+ position: relative;
+ width: 4.25em
+}
+
+.mbsc-schedule-time {
+ font-size: .75em;
+ line-height: 2em;
+ position: relative;
+ top: -1em
+}
+
+.mbsc-schedule-time-end {
+ bottom: -1em;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: auto
+}
+
+.mbsc-schedule-time-col.mbsc-ltr {
+ text-align: right
+}
+
+.mbsc-schedule-time-col.mbsc-rtl {
+ text-align: left
+}
+
+.mbsc-schedule-time-cont-pos {
+ position: relative
+}
+
+.mbsc-schedule-time-cont-inner {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 100%;
+ padding: .5em 0;
+ pointer-events: none;
+ position: absolute;
+ width: 100%;
+ z-index: 2
+}
+
+.mbsc-schedule-column {
+ padding: .5em 0
+}
+
+.mbsc-schedule-column-inner {
+ position: relative
+}
+
+.mbsc-schedule-all-day-item,
+.mbsc-schedule-item {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+.mbsc-schedule-item {
+ border-top: 1px solid;
+ height: 3.125em;
+ position: relative
+}
+
+.mbsc-schedule-item-last {
+ border-bottom: 1px solid
+}
+
+.mbsc-schedule-events {
+ height: 100%;
+ position: absolute
+}
+
+.mbsc-schedule-events.mbsc-ltr {
+ left: 0;
+ right: .5em
+}
+
+.mbsc-schedule-events-more.mbsc-ltr {
+ right: 1.875em
+}
+
+.mbsc-schedule-events.mbsc-rtl {
+ left: .5em;
+ right: 0
+}
+
+.mbsc-schedule-events-more.mbsc-rtl {
+ left: 1.875em
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize {
+ cursor: ew-resize;
+ height: 100%;
+ width: .25em
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize:after {
+ left: auto;
+ margin-top: -.25em;
+ right: auto;
+ top: 50%
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-end.mbsc-rtl,
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-start.mbsc-ltr {
+ right: auto
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-end.mbsc-ltr,
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-start.mbsc-rtl {
+ left: auto
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-end.mbsc-rtl:after,
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-start.mbsc-ltr:after {
+ right: -.25em
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-end.mbsc-ltr:after,
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-start.mbsc-rtl:after {
+ left: -.25em
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-start-touch:before {
+ height: 1.5em;
+ left: -.75em;
+ margin-top: -.75em;
+ right: auto;
+ top: 50%
+}
+
+.mbsc-schedule-event-all-day .mbsc-schedule-event-resize-end-touch:before {
+ height: 1.5em;
+ left: auto;
+ margin-top: -.75em;
+ right: -.75em;
+ top: 50%
+}
+
+.mbsc-schedule-event-buffer {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ left: 1px;
+ position: absolute;
+ right: 1px;
+ z-index: -1
+}
+
+.mbsc-schedule-event-buffer-before {
+ border-top-left-radius: .25em;
+ border-top-right-radius: .25em;
+ bottom: 100%;
+ margin-bottom: -.25em;
+ padding-bottom: .25em
+}
+
+.mbsc-schedule-event-buffer-after {
+ border-bottom-left-radius: .25em;
+ border-bottom-right-radius: .25em;
+ margin-top: -.25em;
+ padding-top: .25em;
+ top: 100%
+}
+
+.mbsc-calendar-width-md .mbsc-schedule-event-title {
+ font-size: 1.2em
+}
+
+.mbsc-calendar-width-md .mbsc-schedule-event-all-day-title,
+.mbsc-calendar-width-md .mbsc-schedule-event-range {
+ font-size: 1em
+}
+
+.mbsc-calendar-width-md .mbsc-schedule-event-all-day-inner {
+ font-size: .75em;
+ height: 1.5em;
+ line-height: 1.5em;
+ padding: 0 .333334em
+}
+
+.mbsc-timeline {
+ overflow: hidden;
+ position: relative;
+ z-index: 0
+}
+
+.mbsc-timeline-empty-day {
+ width: 0
+}
+
+.mbsc-timeline-column-xxs {
+ width: 1.5em
+}
+
+.mbsc-timeline-column-xs {
+ width: 3em
+}
+
+.mbsc-timeline-column-s {
+ width: 4.5em
+}
+
+.mbsc-timeline-column-m {
+ width: 6em
+}
+
+.mbsc-timeline-column-l {
+ width: 7.5em
+}
+
+.mbsc-timeline-column-xl {
+ width: 9em
+}
+
+.mbsc-timeline-column-xxl {
+ width: 10.5em
+}
+
+.mbsc-timeline-column-xxxl,
+.mbsc-timeline-resource-col,
+.mbsc-timeline-sidebar-col {
+ width: 12em
+}
+
+.mbsc-timeline-resource-depth-step {
+ width: 1.75em
+}
+
+.mbsc-timeline-resources,
+.mbsc-timeline-sidebar {
+ bottom: 15px;
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ z-index: 5
+}
+
+.mbsc-timeline-resources.mbsc-ltr,
+.mbsc-timeline-sidebar.mbsc-rtl {
+ left: 0
+}
+
+.mbsc-timeline-resources.mbsc-rtl,
+.mbsc-timeline-sidebar.mbsc-ltr {
+ right: 0
+}
+
+.mbsc-timeline-resource-footer-cont,
+.mbsc-timeline-resource-header-cont,
+.mbsc-timeline-sidebar-footer-cont,
+.mbsc-timeline-sidebar-header-cont {
+ overflow: hidden;
+ pointer-events: auto;
+ position: relative;
+ z-index: 5
+}
+
+.mbsc-timeline-resource,
+.mbsc-timeline-sidebar-resource {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden
+}
+
+.mbsc-timeline-resource-icon {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ cursor: pointer;
+ font-size: .875em;
+ font-weight: 600;
+ margin: .357143em 0
+}
+
+.mbsc-timeline-resource-icon.mbsc-ltr {
+ margin-left: .5em
+}
+
+.mbsc-timeline-resource-icon.mbsc-rtl {
+ margin-right: .5em
+}
+
+.mbsc-timeline-resource-footer,
+.mbsc-timeline-resource-header,
+.mbsc-timeline-resource-title,
+.mbsc-timeline-sidebar-footer,
+.mbsc-timeline-sidebar-header,
+.mbsc-timeline-sidebar-resource-title {
+ font-size: .875em;
+ font-weight: 600;
+ padding: .5em
+}
+
+.mbsc-timeline-footer,
+.mbsc-timeline-header {
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ z-index: 5
+}
+
+.mbsc-timeline-header {
+ top: 0
+}
+
+.mbsc-timeline-footer {
+ bottom: 0;
+ margin-top: -1px
+}
+
+.mbsc-timeline-footer-ph {
+ margin-top: -1px
+}
+
+.mbsc-timeline-footer-bg,
+.mbsc-timeline-header-bg {
+ position: relative;
+ width: 0
+}
+
+.mbsc-timeline-day {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ min-width: 0;
+ position: relative
+}
+
+.mbsc-timeline-day:last-child .mbsc-flex:last-child .mbsc-timeline-column:last-child,
+.mbsc-timeline-day:last-child .mbsc-timeline-footer-column:last-child,
+.mbsc-timeline-day:last-child .mbsc-timeline-footer-date,
+.mbsc-timeline-day:last-child .mbsc-timeline-footer-week,
+.mbsc-timeline-day:last-child .mbsc-timeline-header-column:last-child,
+.mbsc-timeline-day:last-child .mbsc-timeline-header-date,
+.mbsc-timeline-day:last-child .mbsc-timeline-header-week,
+.mbsc-timeline-day:last-child .mbsc-timeline-slot-header:last-child,
+.mbsc-timeline-day:last-child.mbsc-timeline-column {
+ border-left-color: transparent;
+ border-right-color: transparent
+}
+
+.mbsc-timeline-column.mbsc-timeline-no-border,
+.mbsc-timeline-header-column.mbsc-timeline-no-border {
+ border-left: 0;
+ border-right: 0
+}
+
+.mbsc-timeline-month {
+ min-width: 0;
+ position: relative
+}
+
+.mbsc-timeline-footer-date,
+.mbsc-timeline-header-date,
+.mbsc-timeline-header-month,
+.mbsc-timeline-header-week {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ min-height: 1.625em
+}
+
+.mbsc-timeline-footer-date,
+.mbsc-timeline-header-date {
+ overflow: hidden
+}
+
+.mbsc-timeline-footer-week-last.mbsc-ltr,
+.mbsc-timeline-header-month-last.mbsc-ltr,
+.mbsc-timeline-header-week-last.mbsc-ltr {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-timeline-footer-week-last.mbsc-rtl,
+.mbsc-timeline-header-month-last.mbsc-rtl,
+.mbsc-timeline-header-week-last.mbsc-rtl {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-timeline-footer-month-text,
+.mbsc-timeline-footer-week-text,
+.mbsc-timeline-header-date-text,
+.mbsc-timeline-header-month-text,
+.mbsc-timeline-header-week-text {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ font-size: .875em;
+ line-height: 1.785715em;
+ padding: 0 .285714em;
+ text-overflow: ellipsis;
+ vertical-align: top;
+ white-space: nowrap
+}
+
+.mbsc-timeline-header-month-text {
+ font-weight: 700
+}
+
+.mbsc-timeline-header-date-cont,
+.mbsc-timeline-header-date-text,
+.mbsc-timeline-header-month-cont,
+.mbsc-timeline-header-month-text-last,
+.mbsc-timeline-header-week-cont,
+.mbsc-timeline-header-week-text-last,
+.mbsc-timeline-header-year-cont {
+ max-width: 100%;
+ overflow: hidden
+}
+
+.mbsc-timeline-header-month-cont,
+.mbsc-timeline-header-week-cont {
+ white-space: nowrap
+}
+
+.mbsc-timeline-header-active {
+ padding: 0 .714286em;
+ position: relative;
+ z-index: 0
+}
+
+.mbsc-timeline-header-active:after {
+ border-radius: .75em;
+ bottom: .142857em;
+ content: "";
+ left: .142857em;
+ position: absolute;
+ right: .142857em;
+ top: .142857em;
+ z-index: -1
+}
+
+.mbsc-timeline-footer-column,
+.mbsc-timeline-header-column {
+ min-height: 1.625em;
+ overflow: hidden
+}
+
+.mbsc-timeline-footer-time,
+.mbsc-timeline-header-time {
+ font-size: .625em;
+ line-height: 2.6em;
+ min-width: 0;
+ overflow: hidden;
+ padding: 0 .5em;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-timeline .mbsc-timeline-time-indicator-cont {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 100%;
+ margin-top: -2em;
+ overflow: hidden;
+ padding-top: 2em;
+ pointer-events: none;
+ position: absolute;
+ top: 100%;
+ width: 100%
+}
+
+.mbsc-timeline-header-sticky {
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 6
+}
+
+.mbsc-timeline-header-sticky .mbsc-timeline-header-date {
+ border-left: 0;
+ border-right: 0
+}
+
+.mbsc-timeline-footer-sticky {
+ bottom: 0;
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ z-index: 6
+}
+
+.mbsc-timeline-column,
+.mbsc-timeline-header-column {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ position: relative
+}
+
+.mbsc-timeline-grid-scroll {
+ -webkit-overflow-scrolling: auto;
+ overflow-y: auto
+}
+
+.mbsc-timeline-grid {
+ overflow: hidden;
+ position: relative
+}
+
+.mbsc-timeline-row {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 3.25em;
+ position: relative;
+ transition: background-color .15s ease-out
+}
+
+.mbsc-timeline-row-size {
+ position: absolute;
+ visibility: hidden
+}
+
+.mbsc-timeline-row-fixed {
+ position: -webkit-sticky;
+ position: sticky;
+ z-index: 3
+}
+
+.mbsc-timeline-hidden {
+ height: 0;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ top: 0;
+ visibility: hidden
+}
+
+.mbsc-timeline-row-group {
+ position: relative
+}
+
+.mbsc-timeline-row-group:after {
+ content: "";
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 100%;
+ z-index: 1
+}
+
+.mbsc-timeline-row-group:last-child:after {
+ display: none
+}
+
+.mbsc-timeline-row-date {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+.mbsc-timeline-row-date .mbsc-timeline-header-date-text {
+ line-height: 1.285715em;
+ padding-bottom: .285715em;
+ padding-top: .285715em;
+ white-space: normal
+}
+
+.mbsc-timeline-row-resource-col {
+ overflow: hidden
+}
+
+.mbsc-timeline-row-date-col {
+ width: 5.5em
+}
+
+.mbsc-timeline-date-col {
+ width: 8.75em
+}
+
+.mbsc-timeline-row-gutter {
+ height: 1em
+}
+
+.mbsc-timeline-header-column,
+.mbsc-timeline-header-date,
+.mbsc-timeline-header-month,
+.mbsc-timeline-header-week,
+.mbsc-timeline-resource,
+.mbsc-timeline-resource-header-cont,
+.mbsc-timeline-row,
+.mbsc-timeline-row-date,
+.mbsc-timeline-row-group:after,
+.mbsc-timeline-sidebar-header-cont,
+.mbsc-timeline-sidebar-resource {
+ border-bottom-style: solid;
+ border-bottom-width: 1px
+}
+
+.mbsc-timeline-footer-column,
+.mbsc-timeline-footer-date,
+.mbsc-timeline-footer-week,
+.mbsc-timeline-resource-footer-cont,
+.mbsc-timeline-sidebar-footer-cont {
+ border-top-style: solid;
+ border-top-width: 1px
+}
+
+.mbsc-timeline-resource-dragged {
+ box-shadow: 0 0 transparent, 0 0 transparent, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);
+ left: .625em;
+ opacity: .7;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ visibility: hidden;
+ z-index: 7
+}
+
+.mbsc-timeline-resource-dragged .mbsc-timeline-row {
+ border-top-style: solid;
+ border-top-width: 1px
+}
+
+.mbsc-timeline-resource-drop {
+ height: 2px;
+ left: 0;
+ margin-top: -1px;
+ pointer-events: none;
+ position: absolute;
+ right: 0;
+ visibility: hidden;
+ z-index: 6
+}
+
+.mbsc-timeline-resource-sort svg {
+ pointer-events: none
+}
+
+.mbsc-timeline-resource-drag-clone {
+ box-shadow: 0 0 transparent, 0 0 transparent, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);
+ cursor: move;
+ margin: 15px 0 0;
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ position: fixed;
+ z-index: 99998
+}
+
+.mbsc-timeline-resource-drag-clone .mbsc-timeline-resource-sort {
+ display: none
+}
+
+.mbsc-timeline-events {
+ bottom: 1em;
+ position: absolute;
+ top: 0;
+ width: 100%
+}
+
+.mbsc-timeline-events-variable .mbsc-timeline-events {
+ bottom: auto
+}
+
+.mbsc-timeline-events-variable .mbsc-timeline-events-track {
+ line-height: 0;
+ position: relative
+}
+
+.mbsc-timeline-events-variable .mbsc-timeline-event {
+ display: inline-block;
+ line-height: normal;
+ position: relative;
+ vertical-align: top
+}
+
+.mbsc-timeline-events-variable .mbsc-timeline-event-slot {
+ display: block
+}
+
+.mbsc-timeline-event {
+ padding: 6px 0 0;
+ z-index: 2
+}
+
+.mbsc-timeline-event.mbsc-timeline-event-dragging {
+ position: absolute
+}
+
+.mbsc-timeline-event.mbsc-schedule-event-all-day {
+ padding-left: .25em;
+ padding-right: .25em
+}
+
+.mbsc-timeline-event .mbsc-schedule-event-all-day-inner {
+ font-size: .75em;
+ height: 1.5em;
+ line-height: 1.5em;
+ padding: 0 .333334em
+}
+
+.mbsc-timeline-event .mbsc-schedule-event-range,
+.mbsc-timeline-event .mbsc-schedule-event-title {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-timeline-event-background {
+ bottom: 0;
+ margin-top: 6px;
+ top: 0
+}
+
+.mbsc-timeline-event-resize {
+ bottom: 0;
+ cursor: ew-resize;
+ left: auto;
+ right: auto;
+ top: 6px;
+ width: .25em
+}
+
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-end.mbsc-rtl,
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-start.mbsc-ltr {
+ height: auto;
+ left: 0
+}
+
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-end.mbsc-ltr,
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-start.mbsc-rtl {
+ height: auto;
+ right: 0
+}
+
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-end:after,
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-start:after {
+ margin-top: -.25em;
+ top: 50%
+}
+
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-end:after {
+ left: -.125em
+}
+
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-start:after {
+ right: -.125em
+}
+
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-end-touch:before,
+.mbsc-timeline-event-resize.mbsc-schedule-event-resize-start-touch:before {
+ height: 1.5em;
+ left: 50%;
+ margin: -.75em 0 0 -.75em;
+ top: 50%
+}
+
+.mbsc-timeline-event-listing {
+ margin: 0;
+ position: absolute
+}
+
+.mbsc-timeline-event-slot {
+ left: 0;
+ margin: 0 2px;
+ position: relative;
+ right: 0
+}
+
+.mbsc-timeline-event-buffer {
+ bottom: 0;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ margin-top: 6px;
+ position: absolute;
+ top: 0;
+ z-index: -1
+}
+
+.mbsc-timeline-event-buffer-after.mbsc-rtl,
+.mbsc-timeline-event-buffer-before.mbsc-ltr {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em;
+ margin-right: -.25em;
+ padding-right: .25em;
+ right: 100%
+}
+
+.mbsc-timeline-event-buffer-after.mbsc-ltr,
+.mbsc-timeline-event-buffer-before.mbsc-rtl {
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em;
+ left: 100%;
+ margin-left: -.25em;
+ padding-left: .25em
+}
+
+.mbsc-timeline-color,
+.mbsc-timeline-invalid {
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ top: 0
+}
+
+.mbsc-timeline-footer-column.mbsc-timeline-no-height,
+.mbsc-timeline-header-column.mbsc-timeline-no-height {
+ border: 0;
+ height: 0;
+ min-height: 0
+}
+
+.mbsc-connections {
+ display: block;
+ height: 100%;
+ left: 0;
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 0
+}
+
+.mbsc-connection {
+ stroke-width: 1.5px;
+ fill: none;
+ pointer-events: visibleStroke
+}
+
+.mbsc-timeline-slots {
+ border-bottom: 1px solid;
+ height: 1.625em
+}
+
+.mbsc-timeline-slot,
+.mbsc-timeline-slots {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+.mbsc-timeline-slot {
+ position: relative
+}
+
+.mbsc-timeline-slot-title {
+ font-size: .875em;
+ font-weight: 600;
+ line-height: 1.785715em;
+ overflow: hidden;
+ padding: 0 .285714em;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-has-sticky .mbsc-timeline-grid-scroll.mbsc-ltr {
+ position: relative
+}
+
+.mbsc-has-sticky .mbsc-timeline-footer,
+.mbsc-has-sticky .mbsc-timeline-header {
+ left: auto;
+ overflow: visible;
+ position: -webkit-sticky;
+ position: sticky;
+ right: auto
+}
+
+.mbsc-has-sticky .mbsc-timeline-resources.mbsc-ltr,
+.mbsc-has-sticky .mbsc-timeline-sidebar.mbsc-ltr {
+ bottom: auto;
+ overflow: visible;
+ position: -webkit-sticky;
+ position: sticky;
+ top: auto
+}
+
+@supports (overflow:clip) {
+ .mbsc-timeline-grid {
+ overflow: clip
+ }
+
+ .mbsc-timeline .mbsc-schedule-event-inner {
+ display: inline-block;
+ max-width: 100%;
+ vertical-align: top
+ }
+
+ .mbsc-timeline-event-slot .mbsc-schedule-event-inner {
+ display: block;
+ position: relative
+ }
+}
+
+.mbsc-ios.mbsc-eventcalendar .mbsc-calendar-header-vertical {
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ margin-bottom: -1px
+}
+
+.mbsc-ios.mbsc-eventcalendar .mbsc-calendar-wrapper {
+ border-bottom-style: solid;
+ border-bottom-width: 1px
+}
+
+.mbsc-ios.mbsc-popover-list .mbsc-event:last-child:after {
+ display: none
+}
+
+.mbsc-ios.mbsc-event-day.mbsc-list-header {
+ font-weight: 700;
+ line-height: 1.5em;
+ padding: .5em 1em;
+ text-transform: none
+}
+
+.mbsc-ios.mbsc-event-time {
+ font-size: .875em;
+ line-height: 1.428572em;
+ width: 6em
+}
+
+.mbsc-ios.mbsc-event-date {
+ width: 10.5em
+}
+
+.mbsc-ios.mbsc-event-color {
+ border-radius: .125em;
+ margin: 0 .5em 0 -.5em;
+ width: .25em
+}
+
+.mbsc-ios.mbsc-event-color.mbsc-rtl {
+ margin: 0 -.5em 0 .5em
+}
+
+.mbsc-ios.mbsc-event-time.mbsc-ltr {
+ text-align: right
+}
+
+.mbsc-ios.mbsc-event-time.mbsc-rtl {
+ text-align: left
+}
+
+.mbsc-ios.mbsc-event-end {
+ opacity: .7
+}
+
+.mbsc-ios.mbsc-event-text {
+ font-weight: 500
+}
+
+.mbsc-ios.mbsc-event-sep {
+ display: none
+}
+
+.mbsc-ios.mbsc-calendar-button-today {
+ font-weight: 500;
+ padding: 0
+}
+
+.mbsc-ios.mbsc-eventcalendar-schedule .mbsc-calendar-day,
+.mbsc-ios.mbsc-eventcalendar-schedule .mbsc-calendar-wrapper {
+ border: 0
+}
+
+.mbsc-ios.mbsc-schedule-wrapper {
+ margin-top: -1px;
+ position: relative;
+ z-index: 2
+}
+
+.mbsc-ios.mbsc-schedule-header {
+ border-bottom: 1px solid
+}
+
+.mbsc-ios.mbsc-schedule-header-item {
+ line-height: 1.75em;
+ padding: .4375em 0
+}
+
+.mbsc-ios.mbsc-schedule-header-item.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-ios.mbsc-schedule-header-item.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-ios.mbsc-schedule-header-item:first-child {
+ border: 0
+}
+
+.mbsc-ios.mbsc-schedule-header-dayname {
+ font-size: 1em;
+ font-weight: 400
+}
+
+.mbsc-ios.mbsc-schedule-header-day {
+ border-radius: 50%;
+ display: inline-block;
+ font-size: 1em;
+ font-weight: 400;
+ height: 1.625em;
+ line-height: 1.625em;
+ text-align: center;
+ width: 1.625em
+}
+
+.mbsc-ios.mbsc-schedule-header-item-large {
+ padding: .1875em 0
+}
+
+.mbsc-ios.mbsc-schedule-header-item-large.mbsc-schedule-header-item {
+ border-color: transparent
+}
+
+.mbsc-ios.mbsc-schedule-header-item-large .mbsc-schedule-header-dayname {
+ display: inline-block;
+ font-size: 1em;
+ font-weight: 400;
+ padding: 0 .375em
+}
+
+.mbsc-ios.mbsc-schedule-all-day-wrapper {
+ border-bottom: 1px solid;
+ max-height: 3.125em
+}
+
+.mbsc-ios.mbsc-schedule-all-day-text {
+ font-size: .75em;
+ padding: .5em .666667em;
+ text-transform: lowercase
+}
+
+.mbsc-ios.mbsc-schedule-timezone-label {
+ line-height: 2.5em;
+ padding: 0 .666667em
+}
+
+.mbsc-ios.mbsc-schedule-date-header {
+ border-bottom: 1px solid;
+ position: relative;
+ will-change: opacity;
+ z-index: 3
+}
+
+.mbsc-ios.mbsc-schedule-date-header-text {
+ font-size: .75em;
+ font-weight: 700;
+ padding: .5em
+}
+
+.mbsc-ios.mbsc-schedule-resource.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-ios.mbsc-schedule-resource.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-ios.mbsc-schedule-resource:first-child {
+ border: 0
+}
+
+.mbsc-ios.mbsc-schedule-all-day-item {
+ min-height: 1.875em;
+ padding: .25em 0
+}
+
+.mbsc-ios.mbsc-schedule-time {
+ font-size: .625em;
+ padding: 0 .8em
+}
+
+.mbsc-ios.mbsc-schedule-cursor-time-x {
+ padding: 0 .8em;
+ width: 6.8em
+}
+
+.mbsc-ios.mbsc-schedule-event:after {
+ bottom: -.5em;
+ content: "";
+ left: 1px;
+ position: absolute;
+ right: 1px;
+ top: -.5em;
+ z-index: -1
+}
+
+.mbsc-ios.mbsc-schedule-event-start:after {
+ top: 1px
+}
+
+.mbsc-ios.mbsc-schedule-event-end:after {
+ bottom: 1px
+}
+
+.mbsc-ios.mbsc-schedule-event-custom:after {
+ display: none
+}
+
+.mbsc-ios.mbsc-schedule-event-background {
+ opacity: .3;
+ transition: opacity .15s ease-in-out
+}
+
+.mbsc-ios.mbsc-schedule-event-start .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-schedule-event-start:after {
+ border-top-left-radius: .25em;
+ border-top-right-radius: .25em
+}
+
+.mbsc-ios.mbsc-schedule-event-end .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-schedule-event-end:after {
+ border-bottom-left-radius: .25em;
+ border-bottom-right-radius: .25em
+}
+
+.mbsc-ios.mbsc-timeline-event:after {
+ bottom: 0;
+ margin-top: 6px;
+ top: 0
+}
+
+.mbsc-ios.mbsc-timeline-event-end.mbsc-rtl .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-timeline-event-end.mbsc-rtl:after,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-ltr .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-ltr:after {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em
+}
+
+.mbsc-ios.mbsc-timeline-event-end.mbsc-ltr .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-timeline-event-end.mbsc-ltr:after,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-rtl .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-rtl:after {
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em
+}
+
+.mbsc-ios.mbsc-schedule-event-hover .mbsc-schedule-event-background {
+ opacity: .6
+}
+
+.mbsc-ios.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-ios.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ opacity: .9
+}
+
+.mbsc-ios.mbsc-schedule-event-dragging {
+ top: .25em
+}
+
+.mbsc-ios.mbsc-timeline-event-dragging {
+ top: 0
+}
+
+.mbsc-ios.mbsc-schedule-event-bar {
+ background: currentColor;
+ bottom: -.5em;
+ position: absolute;
+ top: -.5em;
+ width: .1875em
+}
+
+.mbsc-ios.mbsc-schedule-event-bar.mbsc-ltr {
+ left: 1px
+}
+
+.mbsc-ios.mbsc-schedule-event-bar.mbsc-rtl {
+ right: 1px
+}
+
+.mbsc-ios.mbsc-schedule-event-start .mbsc-schedule-event-bar {
+ top: 1px
+}
+
+.mbsc-ios.mbsc-schedule-event-start .mbsc-schedule-event-bar.mbsc-ltr,
+.mbsc-ios.mbsc-schedule-event-start .mbsc-schedule-event-bar.mbsc-rtl {
+ border-top-left-radius: .1875em
+}
+
+.mbsc-ios.mbsc-schedule-event-end .mbsc-schedule-event-bar {
+ bottom: 1px
+}
+
+.mbsc-ios.mbsc-schedule-event-end .mbsc-schedule-event-bar.mbsc-ltr,
+.mbsc-ios.mbsc-schedule-event-end .mbsc-schedule-event-bar.mbsc-rtl {
+ border-bottom-left-radius: .1875em
+}
+
+.mbsc-ios.mbsc-schedule-event-title {
+ font-weight: 600
+}
+
+.mbsc-ios.mbsc-schedule-event-buffer-background {
+ opacity: .15
+}
+
+.mbsc-ios.mbsc-schedule-event-all-day:after {
+ bottom: 0;
+ top: 0
+}
+
+.mbsc-ios.mbsc-schedule-event-all-day-background.mbsc-schedule-event-background {
+ border-radius: 0
+}
+
+.mbsc-ios.mbsc-schedule-event-end.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-schedule-event-end.mbsc-schedule-event-all-day.mbsc-rtl:after,
+.mbsc-ios.mbsc-schedule-event-start.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-schedule-event-start.mbsc-schedule-event-all-day.mbsc-ltr:after,
+.mbsc-ios.mbsc-timeline-event-end.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-timeline-event-end.mbsc-schedule-event-all-day.mbsc-rtl:after,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-schedule-event-all-day.mbsc-ltr:after {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em;
+ left: .25em
+}
+
+.mbsc-ios.mbsc-schedule-event-end.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-schedule-event-end.mbsc-schedule-event-all-day.mbsc-ltr:after,
+.mbsc-ios.mbsc-schedule-event-start.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-schedule-event-start.mbsc-schedule-event-all-day.mbsc-rtl:after,
+.mbsc-ios.mbsc-timeline-event-end.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-timeline-event-end.mbsc-schedule-event-all-day.mbsc-ltr:after,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-ios.mbsc-timeline-event-start.mbsc-schedule-event-all-day.mbsc-rtl:after {
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em;
+ right: .25em
+}
+
+.mbsc-ios.mbsc-timeline-resource-icon {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ padding: 0 .142858em;
+ width: 1.214286em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-schedule-all-day-wrapper {
+ max-height: 3.5em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-schedule-time,
+.mbsc-ios.mbsc-calendar-width-md .mbsc-schedule-time-indicator-time-x {
+ font-size: .75em;
+ padding: 0 .666667em
+}
+
+.mbsc-ios.mbsc-calendar-width-md .mbsc-schedule-cursor-time-x {
+ font-size: .75em;
+ padding: 0 .666667em;
+ width: 5.666667em
+}
+
+.mbsc-ios.mbsc-eventcalendar .mbsc-calendar-header,
+.mbsc-ios.mbsc-eventcalendar .mbsc-calendar-week-days {
+ background: #f7f7f7
+}
+
+.mbsc-ios.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #efefef
+}
+
+.mbsc-ios.mbsc-event-list-empty {
+ color: #6e6e72
+}
+
+.mbsc-ios.mbsc-event-day.mbsc-list-header {
+ background: #fff;
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-ios.mbsc-event.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios.mbsc-event.mbsc-list-item:after,
+.mbsc-ios.mbsc-event.mbsc-list-item:before {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-event.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-ios.mbsc-event.mbsc-list-item.mbsc-focus .mbsc-list-item-background,
+.mbsc-ios.mbsc-event.mbsc-list-item.mbsc-selected .mbsc-list-item-background {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios.mbsc-event-color {
+ background: #5ac8fa
+}
+
+.mbsc-ios.mbsc-eventcalendar-schedule .mbsc-calendar-day,
+.mbsc-ios.mbsc-schedule-wrapper {
+ background: #f7f7f7
+}
+
+.mbsc-ios.mbsc-schedule-header,
+.mbsc-ios.mbsc-schedule-header-item {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-schedule-header-day-today {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(0, 122, 255, .3)
+}
+
+.mbsc-ios.mbsc-schedule-header-day.mbsc-selected,
+.mbsc-ios.mbsc-schedule-header-dayname-curr {
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-schedule-header-day.mbsc-selected {
+ background: #007aff;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-schedule-header-dayname-curr {
+ color: #000
+}
+
+.mbsc-ios.mbsc-schedule-date-header {
+ background: #f7f7f7;
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-schedule-grid-wrapper {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-schedule-all-day-wrapper {
+ background: #fff;
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-schedule-all-day-text,
+.mbsc-ios.mbsc-schedule-timezone-label {
+ color: #8c8c8c
+}
+
+.mbsc-ios.mbsc-schedule-all-day-item:after,
+.mbsc-ios.mbsc-schedule-column,
+.mbsc-ios.mbsc-schedule-item,
+.mbsc-ios.mbsc-schedule-resource,
+.mbsc-ios.mbsc-schedule-resource-group,
+.mbsc-ios.mbsc-timeline-column,
+.mbsc-ios.mbsc-timeline-day:after,
+.mbsc-ios.mbsc-timeline-footer,
+.mbsc-ios.mbsc-timeline-footer-column,
+.mbsc-ios.mbsc-timeline-footer-date,
+.mbsc-ios.mbsc-timeline-footer-week,
+.mbsc-ios.mbsc-timeline-header,
+.mbsc-ios.mbsc-timeline-header-column,
+.mbsc-ios.mbsc-timeline-header-date,
+.mbsc-ios.mbsc-timeline-header-month,
+.mbsc-ios.mbsc-timeline-header-week,
+.mbsc-ios.mbsc-timeline-resource,
+.mbsc-ios.mbsc-timeline-resource-footer-cont,
+.mbsc-ios.mbsc-timeline-resource-header-cont,
+.mbsc-ios.mbsc-timeline-row,
+.mbsc-ios.mbsc-timeline-row-date,
+.mbsc-ios.mbsc-timeline-row-group:after,
+.mbsc-ios.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios.mbsc-timeline-sidebar-header-cont,
+.mbsc-ios.mbsc-timeline-sidebar-resource,
+.mbsc-ios.mbsc-timeline-slot-header,
+.mbsc-ios.mbsc-timeline-slots {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #ccc
+}
+
+.mbsc-ios.mbsc-schedule-cursor-time,
+.mbsc-ios.mbsc-schedule-time,
+.mbsc-ios.mbsc-timeline-header-column {
+ color: #8c8c8c
+}
+
+.mbsc-ios.mbsc-schedule-event {
+ color: #5ac8fa
+}
+
+.mbsc-ios.mbsc-schedule-event:after {
+ background: hsla(0, 0%, 100%, .9)
+}
+
+.mbsc-ios.mbsc-schedule-event-range,
+.mbsc-ios.mbsc-schedule-event-title {
+ color: #000
+}
+
+.mbsc-ios.mbsc-schedule-event-active .mbsc-schedule-event-inner,
+.mbsc-ios.mbsc-schedule-event-dragging .mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-ios.mbsc-schedule-event-active .mbsc-schedule-event-range,
+.mbsc-ios.mbsc-schedule-event-active .mbsc-schedule-event-title,
+.mbsc-ios.mbsc-schedule-event-dragging .mbsc-schedule-event-range,
+.mbsc-ios.mbsc-schedule-event-dragging .mbsc-schedule-event-title {
+ color: inherit
+}
+
+.mbsc-ios.mbsc-schedule-time-indicator {
+ border-color: #007aff
+}
+
+.mbsc-ios.mbsc-schedule-time-indicator-day:before {
+ background: #007aff
+}
+
+.mbsc-ios.mbsc-schedule-cursor-time,
+.mbsc-ios.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #007aff
+}
+
+.mbsc-ios.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #888
+}
+
+.mbsc-ios.mbsc-timeline-footer-bg,
+.mbsc-ios.mbsc-timeline-header-bg,
+.mbsc-ios.mbsc-timeline-header-text,
+.mbsc-ios.mbsc-timeline-resource-bg,
+.mbsc-ios.mbsc-timeline-resource-dragged,
+.mbsc-ios.mbsc-timeline-resource-footer-cont,
+.mbsc-ios.mbsc-timeline-resource-header-cont,
+.mbsc-ios.mbsc-timeline-row-fixed,
+.mbsc-ios.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-ios.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-ios.mbsc-timeline-header-active:after {
+ background-color: #007aff
+}
+
+.mbsc-ios.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-ios.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-ios.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-ios.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-ios.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-ios.mbsc-timeline-resource-drop-invalid {
+ background-color: #d8332a
+}
+
+.mbsc-ios-dark.mbsc-eventcalendar .mbsc-calendar-header,
+.mbsc-ios-dark.mbsc-eventcalendar .mbsc-calendar-week-days {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #1a1a1a
+}
+
+.mbsc-ios-dark.mbsc-event-list-empty {
+ color: #8f8f8f
+}
+
+.mbsc-ios-dark.mbsc-event-day.mbsc-list-header {
+ background: #000;
+ border-color: #333;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-event.mbsc-list-item {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-event.mbsc-list-item:after,
+.mbsc-ios-dark.mbsc-event.mbsc-list-item:before {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-event.mbsc-list-item.mbsc-hover:before {
+ background: hsla(0, 0%, 100%, .05)
+}
+
+.mbsc-ios-dark.mbsc-event.mbsc-list-item.mbsc-focus .mbsc-list-item-background,
+.mbsc-ios-dark.mbsc-event.mbsc-list-item.mbsc-selected .mbsc-list-item-background {
+ background: hsla(0, 0%, 100%, .15)
+}
+
+.mbsc-ios-dark.mbsc-event-color {
+ background: #5ac8fa
+}
+
+.mbsc-ios-dark.mbsc-popover-list .mbsc-ios-dark.mbsc-event {
+ background: #2b2b2b
+}
+
+.mbsc-ios-dark.mbsc-eventcalendar-schedule .mbsc-calendar-day,
+.mbsc-ios-dark.mbsc-schedule-wrapper {
+ background: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-schedule-header,
+.mbsc-ios-dark.mbsc-schedule-header-item {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-schedule-header-day-today {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(255, 159, 10, .3)
+}
+
+.mbsc-ios-dark.mbsc-schedule-header-day.mbsc-selected,
+.mbsc-ios-dark.mbsc-schedule-header-dayname-curr {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-schedule-header-day.mbsc-selected {
+ background: #ff9f0a;
+ color: #000
+}
+
+.mbsc-ios-dark.mbsc-schedule-header-dayname-curr {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-schedule-date-header {
+ background: #1c1c1c;
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-schedule-grid-wrapper {
+ background: #000
+}
+
+.mbsc-ios-dark.mbsc-schedule-all-day-wrapper {
+ background: #000;
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-schedule-all-day-text,
+.mbsc-ios-dark.mbsc-schedule-timezone-label {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-schedule-all-day-item:after,
+.mbsc-ios-dark.mbsc-schedule-column,
+.mbsc-ios-dark.mbsc-schedule-item,
+.mbsc-ios-dark.mbsc-schedule-resource,
+.mbsc-ios-dark.mbsc-schedule-resource-group,
+.mbsc-ios-dark.mbsc-timeline-column,
+.mbsc-ios-dark.mbsc-timeline-day:after,
+.mbsc-ios-dark.mbsc-timeline-footer,
+.mbsc-ios-dark.mbsc-timeline-footer-column,
+.mbsc-ios-dark.mbsc-timeline-footer-date,
+.mbsc-ios-dark.mbsc-timeline-footer-week,
+.mbsc-ios-dark.mbsc-timeline-header,
+.mbsc-ios-dark.mbsc-timeline-header-column,
+.mbsc-ios-dark.mbsc-timeline-header-date,
+.mbsc-ios-dark.mbsc-timeline-header-month,
+.mbsc-ios-dark.mbsc-timeline-header-week,
+.mbsc-ios-dark.mbsc-timeline-resource,
+.mbsc-ios-dark.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-dark.mbsc-timeline-resource-header-cont,
+.mbsc-ios-dark.mbsc-timeline-row,
+.mbsc-ios-dark.mbsc-timeline-row-date,
+.mbsc-ios-dark.mbsc-timeline-row-group:after,
+.mbsc-ios-dark.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-dark.mbsc-timeline-sidebar-header-cont,
+.mbsc-ios-dark.mbsc-timeline-sidebar-resource,
+.mbsc-ios-dark.mbsc-timeline-slot-header,
+.mbsc-ios-dark.mbsc-timeline-slots {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #333
+}
+
+.mbsc-ios-dark.mbsc-schedule-cursor-time,
+.mbsc-ios-dark.mbsc-schedule-time,
+.mbsc-ios-dark.mbsc-timeline-header-column {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-schedule-event {
+ color: #5ac8fa
+}
+
+.mbsc-ios-dark.mbsc-schedule-event:after {
+ background: rgba(0, 0, 0, .9)
+}
+
+.mbsc-ios-dark.mbsc-schedule-event-active .mbsc-schedule-event-inner,
+.mbsc-ios-dark.mbsc-schedule-event-dragging .mbsc-schedule-event-inner,
+.mbsc-ios-dark.mbsc-schedule-event-range,
+.mbsc-ios-dark.mbsc-schedule-event-title {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-schedule-event-active .mbsc-schedule-event-range,
+.mbsc-ios-dark.mbsc-schedule-event-active .mbsc-schedule-event-title,
+.mbsc-ios-dark.mbsc-schedule-event-dragging .mbsc-schedule-event-range,
+.mbsc-ios-dark.mbsc-schedule-event-dragging .mbsc-schedule-event-title {
+ color: inherit
+}
+
+.mbsc-ios-dark.mbsc-schedule-time-indicator {
+ border-color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-schedule-time-indicator-day:before {
+ background: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-schedule-cursor-time,
+.mbsc-ios-dark.mbsc-schedule-time-indicator-time {
+ background: rgba(0, 0, 0, .8);
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-schedule-invalid {
+ background: rgba(26, 26, 26, .75);
+ color: #787878
+}
+
+.mbsc-ios-dark.mbsc-timeline-footer-bg,
+.mbsc-ios-dark.mbsc-timeline-header-bg,
+.mbsc-ios-dark.mbsc-timeline-header-text,
+.mbsc-ios-dark.mbsc-timeline-resource-bg,
+.mbsc-ios-dark.mbsc-timeline-resource-dragged,
+.mbsc-ios-dark.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-dark.mbsc-timeline-resource-header-cont,
+.mbsc-ios-dark.mbsc-timeline-row-fixed,
+.mbsc-ios-dark.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-dark.mbsc-timeline-sidebar-header-cont {
+ background: #000
+}
+
+.mbsc-ios-dark.mbsc-timeline-resource {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-timeline-header-active:after {
+ background-color: #ff9f0a
+}
+
+.mbsc-ios-dark.mbsc-timeline-parent {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-ios-dark.mbsc-timeline-parent-hover {
+ background: hsla(0, 0%, 100%, .15)
+}
+
+.mbsc-ios-dark.mbsc-connection {
+ stroke: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-ios-dark.mbsc-connection-arrow {
+ fill: #fff
+}
+
+.mbsc-ios-dark.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-ios-dark.mbsc-timeline-resource-drop-invalid {
+ background-color: #d8332a
+}
+
+.mbsc-material.mbsc-eventcalendar-schedule .mbsc-calendar-wrapper:after {
+ display: none
+}
+
+.mbsc-material.mbsc-event.mbsc-list-item {
+ -moz-box-orient: vertical;
+ -moz-box-direction: normal;
+ border-radius: .25em;
+ flex-direction: column;
+ margin: .625em 1em;
+ padding: .5em .625em;
+ transition: box-shadow .2s ease-out
+}
+
+.mbsc-material.mbsc-event-text,
+.mbsc-material.mbsc-event-time {
+ font-size: .8125em;
+ line-height: 1.384616em
+}
+
+.mbsc-material.mbsc-event-time {
+ display: -moz-box;
+ display: flex;
+ font-weight: 300
+}
+
+.mbsc-material.mbsc-event-text {
+ font-weight: 600
+}
+
+.mbsc-material.mbsc-event-all-day {
+ display: none
+}
+
+.mbsc-material.mbsc-event-sep {
+ padding: 0 .25em
+}
+
+.mbsc-material.mbsc-event-until {
+ padding-right: .25em
+}
+
+.mbsc-material.mbsc-popover-list {
+ padding: .5em .125em;
+ width: 18em
+}
+
+.mbsc-material.mbsc-popover-list .mbsc-event {
+ margin: .125em .5em;
+ padding: .25em .5em
+}
+
+.mbsc-material.mbsc-popover-list .mbsc-event-text,
+.mbsc-material.mbsc-popover-list .mbsc-event-time {
+ font-size: .75em
+}
+
+.mbsc-material.mbsc-schedule-header-item {
+ padding-bottom: .25em
+}
+
+.mbsc-material.mbsc-schedule-header-dayname {
+ font-size: .625em;
+ font-weight: 500;
+ line-height: 2.8em;
+ position: relative;
+ text-transform: uppercase
+}
+
+.mbsc-material.mbsc-schedule-header-day {
+ border-radius: 50%;
+ font-size: 1.25em;
+ height: 1.8em;
+ line-height: 1.8em;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: -.3em;
+ width: 1.8em
+}
+
+.mbsc-material.mbsc-schedule-date-header-text {
+ font-size: .875em;
+ font-weight: 600;
+ padding: .5714em 1.14285em
+}
+
+.mbsc-material.mbsc-schedule-resource.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-material.mbsc-schedule-resource.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-material.mbsc-schedule-resource:first-child {
+ border: 0
+}
+
+.mbsc-material.mbsc-schedule-all-day-text {
+ font-size: .625em;
+ line-height: 1.6em;
+ padding: .4em;
+ text-transform: uppercase
+}
+
+.mbsc-material.mbsc-schedule-all-day-text.mbsc-ltr {
+ padding-right: 1.6em
+}
+
+.mbsc-material.mbsc-schedule-all-day-text.mbsc-rtl {
+ padding-left: 1.6em
+}
+
+.mbsc-material.mbsc-schedule-all-day-item {
+ min-height: 1.5em;
+ padding: 1px 0
+}
+
+.mbsc-material.mbsc-schedule-time-col.mbsc-ltr {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-material.mbsc-schedule-time-col.mbsc-rtl {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-material.mbsc-schedule-time-col.mbsc-schedule-time-col-empty {
+ border: 0
+}
+
+.mbsc-material.mbsc-schedule-time-wrapper.mbsc-ltr {
+ padding-right: 1em
+}
+
+.mbsc-material.mbsc-schedule-time-wrapper.mbsc-rtl {
+ padding-left: 1em
+}
+
+.mbsc-material.mbsc-schedule-time-col-last .mbsc-schedule-time-wrapper:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ width: 9px
+}
+
+.mbsc-material.mbsc-schedule-time-col-last .mbsc-schedule-time-wrapper-end:before {
+ bottom: 0;
+ content: "";
+ position: absolute;
+ width: 9px
+}
+
+.mbsc-material.mbsc-schedule-time-col-last .mbsc-schedule-time-wrapper-end.mbsc-ltr:before,
+.mbsc-material.mbsc-schedule-time-col-last .mbsc-schedule-time-wrapper.mbsc-ltr:after {
+ right: 0
+}
+
+.mbsc-material.mbsc-schedule-time-col-last .mbsc-schedule-time-wrapper-end.mbsc-rtl:before,
+.mbsc-material.mbsc-schedule-time-col-last .mbsc-schedule-time-wrapper.mbsc-rtl:after {
+ left: 0
+}
+
+.mbsc-material.mbsc-schedule-time {
+ font-size: .625em
+}
+
+.mbsc-material.mbsc-schedule-time-end.mbsc-ltr {
+ right: 1.6em
+}
+
+.mbsc-material.mbsc-schedule-time-end.mbsc-rtl {
+ left: 1.6em
+}
+
+.mbsc-material.mbsc-schedule-timezone-label {
+ font-size: .625em;
+ line-height: 2.4em
+}
+
+.mbsc-material.mbsc-schedule-timezone-label.mbsc-ltr {
+ padding-right: 1.6em
+}
+
+.mbsc-material.mbsc-schedule-timezone-label.mbsc-rtl {
+ padding-left: 1.6em
+}
+
+.mbsc-material.mbsc-schedule-time-indicator-tz {
+ width: 6.8em
+}
+
+.mbsc-material.mbsc-schedule-time-indicator-x:after {
+ border-bottom: 1px solid;
+ border-color: inherit;
+ content: "";
+ position: absolute;
+ top: 0;
+ width: .5625em
+}
+
+.mbsc-material.mbsc-schedule-time-indicator.mbsc-ltr:after {
+ left: -.5625em
+}
+
+.mbsc-material.mbsc-schedule-time-indicator.mbsc-rtl:after {
+ right: -.5625em
+}
+
+.mbsc-material.mbsc-schedule-time-indicator-time-x {
+ margin: 0 1px;
+ padding: 0 1.6em
+}
+
+.mbsc-material.mbsc-schedule-cursor-time-x {
+ width: 5.2em
+}
+
+.mbsc-material.mbsc-schedule-event-inner {
+ border-radius: .333334em
+}
+
+.mbsc-material.mbsc-schedule-event-start .mbsc-schedule-event-background {
+ border-top-left-radius: .25em;
+ border-top-right-radius: .25em
+}
+
+.mbsc-material.mbsc-schedule-event-end .mbsc-schedule-event-background {
+ border-bottom-left-radius: .25em;
+ border-bottom-right-radius: .25em
+}
+
+.mbsc-material.mbsc-timeline-event-end.mbsc-rtl .mbsc-schedule-event-background,
+.mbsc-material.mbsc-timeline-event-start.mbsc-ltr .mbsc-schedule-event-background {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em
+}
+
+.mbsc-material.mbsc-timeline-event-end.mbsc-ltr .mbsc-schedule-event-background,
+.mbsc-material.mbsc-timeline-event-start.mbsc-rtl .mbsc-schedule-event-background {
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em
+}
+
+.mbsc-material.mbsc-schedule-event-active .mbsc-schedule-event-background:after,
+.mbsc-material.mbsc-schedule-event-hover .mbsc-schedule-event-background:after {
+ background: rgba(0, 0, 0, .1);
+ content: "";
+ height: 100%;
+ position: absolute;
+ width: 100%
+}
+
+.mbsc-material.mbsc-schedule-event-title {
+ font-weight: 500
+}
+
+.mbsc-material.mbsc-schedule-event-all-day-background.mbsc-schedule-event-background {
+ border-radius: 0
+}
+
+.mbsc-material.mbsc-schedule-event-end.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-material.mbsc-schedule-event-start.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-material.mbsc-timeline-event-end.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-material.mbsc-timeline-event-start.mbsc-ltr .mbsc-schedule-event-all-day-background {
+ border-bottom-left-radius: .25em;
+ border-top-left-radius: .25em;
+ left: .25em
+}
+
+.mbsc-material.mbsc-schedule-event-end.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-material.mbsc-schedule-event-start.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-material.mbsc-timeline-event-end.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-material.mbsc-timeline-event-start.mbsc-rtl .mbsc-schedule-event-all-day-background {
+ border-bottom-right-radius: .25em;
+ border-top-right-radius: .25em;
+ right: .25em
+}
+
+.mbsc-material.mbsc-schedule-header-item-large .mbsc-schedule-header-dayname {
+ font-size: .6875em;
+ line-height: 2.909091em;
+ text-transform: uppercase
+}
+
+.mbsc-material.mbsc-schedule-header-item-large .mbsc-schedule-header-day {
+ font-size: 1.625em;
+ height: 1.769231em;
+ line-height: 1.769231em;
+ margin-top: -.307693em;
+ width: 1.769231em
+}
+
+.mbsc-material.mbsc-eventcalendar {
+ background: #fff;
+ color: #303030
+}
+
+.mbsc-material.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-material.mbsc-event-list-empty {
+ color: rgba(48, 48, 48, .7)
+}
+
+.mbsc-material.mbsc-event-day.mbsc-list-header,
+.mbsc-material.mbsc-schedule-date-header {
+ background: #fff;
+ color: rgba(48, 48, 48, .7)
+}
+
+.mbsc-material.mbsc-colored-event.mbsc-list-item {
+ background: #1a73e8;
+ color: #fff
+}
+
+.mbsc-material.mbsc-event.mbsc-list-item.mbsc-focus,
+.mbsc-material.mbsc-event.mbsc-list-item.mbsc-selected {
+ box-shadow: 0 .25em .5em 0 rgba(0, 0, 0, .4)
+}
+
+.mbsc-material.mbsc-event.mbsc-list-item.mbsc-focus:before,
+.mbsc-material.mbsc-event.mbsc-list-item.mbsc-selected:before {
+ border-radius: .25em;
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material.mbsc-event-color {
+ background: #1a73e8
+}
+
+.mbsc-material.mbsc-schedule-header-dayname {
+ color: #70757a
+}
+
+.mbsc-material.mbsc-schedule-header-day {
+ color: #303030
+}
+
+.mbsc-material.mbsc-schedule-header-day-today,
+.mbsc-material.mbsc-schedule-header-dayname-curr {
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(26, 115, 232, .3)
+}
+
+.mbsc-material.mbsc-schedule-header-day.mbsc-selected {
+ background-color: #1a73e8;
+ color: #fff
+}
+
+.mbsc-material.mbsc-schedule-all-day-item:after,
+.mbsc-material.mbsc-schedule-column,
+.mbsc-material.mbsc-schedule-item,
+.mbsc-material.mbsc-schedule-resource,
+.mbsc-material.mbsc-schedule-resource-group,
+.mbsc-material.mbsc-schedule-time-col,
+.mbsc-material.mbsc-timeline-column,
+.mbsc-material.mbsc-timeline-day:after,
+.mbsc-material.mbsc-timeline-footer,
+.mbsc-material.mbsc-timeline-footer-column,
+.mbsc-material.mbsc-timeline-footer-date,
+.mbsc-material.mbsc-timeline-footer-week,
+.mbsc-material.mbsc-timeline-header,
+.mbsc-material.mbsc-timeline-header-column,
+.mbsc-material.mbsc-timeline-header-date,
+.mbsc-material.mbsc-timeline-header-month,
+.mbsc-material.mbsc-timeline-header-week,
+.mbsc-material.mbsc-timeline-resource,
+.mbsc-material.mbsc-timeline-resource-footer-cont,
+.mbsc-material.mbsc-timeline-resource-header-cont,
+.mbsc-material.mbsc-timeline-row,
+.mbsc-material.mbsc-timeline-row-date,
+.mbsc-material.mbsc-timeline-row-group:after,
+.mbsc-material.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material.mbsc-timeline-sidebar-header-cont,
+.mbsc-material.mbsc-timeline-sidebar-resource,
+.mbsc-material.mbsc-timeline-slot-header,
+.mbsc-material.mbsc-timeline-slots {
+ border-color: #cfcfcf
+}
+
+.mbsc-material.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #cfcfcf
+}
+
+.mbsc-material.mbsc-schedule-time-wrapper-end:before,
+.mbsc-material.mbsc-schedule-time-wrapper:after {
+ border-bottom: 1px solid #cfcfcf
+}
+
+.mbsc-material.mbsc-schedule-all-day-text,
+.mbsc-material.mbsc-schedule-time,
+.mbsc-material.mbsc-schedule-timezone-label {
+ color: #70757a
+}
+
+.mbsc-material.mbsc-schedule-time-indicator {
+ border-color: #1a73e8
+}
+
+.mbsc-material.mbsc-schedule-time-indicator-day:before {
+ background: #1a73e8
+}
+
+.mbsc-material.mbsc-schedule-cursor-time,
+.mbsc-material.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-schedule-event {
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-material.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-material.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-material.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material.mbsc-schedule-event-active .mbsc-schedule-event-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material.mbsc-timeline-footer-bg,
+.mbsc-material.mbsc-timeline-header-bg,
+.mbsc-material.mbsc-timeline-header-text,
+.mbsc-material.mbsc-timeline-resource-bg,
+.mbsc-material.mbsc-timeline-resource-dragged,
+.mbsc-material.mbsc-timeline-resource-footer-cont,
+.mbsc-material.mbsc-timeline-resource-header-cont,
+.mbsc-material.mbsc-timeline-row-fixed,
+.mbsc-material.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-material.mbsc-timeline-resource {
+ background: #fff;
+ color: #303030
+}
+
+.mbsc-material.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-material.mbsc-timeline-header-active:after {
+ background-color: #1a73e8
+}
+
+.mbsc-material.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-material.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material.mbsc-connection {
+ stroke: rgba(48, 48, 48, .7)
+}
+
+.mbsc-material.mbsc-connection-arrow {
+ fill: #303030
+}
+
+.mbsc-material.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-material.mbsc-timeline-resource-drop-invalid {
+ background-color: #de3226
+}
+
+.mbsc-material-dark.mbsc-eventcalendar {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #1a1a1a
+}
+
+.mbsc-material-dark.mbsc-event-list-empty {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-dark.mbsc-event-day.mbsc-list-header,
+.mbsc-material-dark.mbsc-schedule-date-header {
+ background: #000;
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-dark.mbsc-colored-event.mbsc-list-item {
+ background: #87b0f3;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-event.mbsc-list-item.mbsc-focus,
+.mbsc-material-dark.mbsc-event.mbsc-list-item.mbsc-selected {
+ box-shadow: 0 .25em .5em 0 rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-dark.mbsc-event.mbsc-list-item.mbsc-focus:before,
+.mbsc-material-dark.mbsc-event.mbsc-list-item.mbsc-selected:before {
+ border-radius: .25em;
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-dark.mbsc-event-color {
+ background: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-schedule-header-dayname {
+ color: #dbdddf
+}
+
+.mbsc-material-dark.mbsc-schedule-header-day {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-schedule-header-day-today,
+.mbsc-material-dark.mbsc-schedule-header-dayname-curr {
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(135, 176, 243, .3)
+}
+
+.mbsc-material-dark.mbsc-schedule-header-day.mbsc-selected {
+ background-color: #87b0f3;
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-schedule-all-day-item:after,
+.mbsc-material-dark.mbsc-schedule-column,
+.mbsc-material-dark.mbsc-schedule-item,
+.mbsc-material-dark.mbsc-schedule-resource,
+.mbsc-material-dark.mbsc-schedule-resource-group,
+.mbsc-material-dark.mbsc-schedule-time-col,
+.mbsc-material-dark.mbsc-timeline-column,
+.mbsc-material-dark.mbsc-timeline-day:after,
+.mbsc-material-dark.mbsc-timeline-footer,
+.mbsc-material-dark.mbsc-timeline-footer-column,
+.mbsc-material-dark.mbsc-timeline-footer-date,
+.mbsc-material-dark.mbsc-timeline-footer-week,
+.mbsc-material-dark.mbsc-timeline-header,
+.mbsc-material-dark.mbsc-timeline-header-column,
+.mbsc-material-dark.mbsc-timeline-header-date,
+.mbsc-material-dark.mbsc-timeline-header-month,
+.mbsc-material-dark.mbsc-timeline-header-week,
+.mbsc-material-dark.mbsc-timeline-resource,
+.mbsc-material-dark.mbsc-timeline-resource-footer-cont,
+.mbsc-material-dark.mbsc-timeline-resource-header-cont,
+.mbsc-material-dark.mbsc-timeline-row,
+.mbsc-material-dark.mbsc-timeline-row-date,
+.mbsc-material-dark.mbsc-timeline-row-group:after,
+.mbsc-material-dark.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-dark.mbsc-timeline-sidebar-header-cont,
+.mbsc-material-dark.mbsc-timeline-sidebar-resource,
+.mbsc-material-dark.mbsc-timeline-slot-header,
+.mbsc-material-dark.mbsc-timeline-slots {
+ border-color: #2b2b2b
+}
+
+.mbsc-material-dark.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #2b2b2b
+}
+
+.mbsc-material-dark.mbsc-schedule-time-wrapper-end:before,
+.mbsc-material-dark.mbsc-schedule-time-wrapper:after {
+ border-bottom: 1px solid #2b2b2b
+}
+
+.mbsc-material-dark.mbsc-schedule-all-day-text,
+.mbsc-material-dark.mbsc-schedule-time,
+.mbsc-material-dark.mbsc-schedule-timezone-label {
+ color: #dbdddf
+}
+
+.mbsc-material-dark.mbsc-schedule-time-indicator {
+ border-color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-schedule-time-indicator-day:before {
+ background: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-schedule-cursor-time,
+.mbsc-material-dark.mbsc-schedule-time-indicator-time {
+ background: rgba(0, 0, 0, .8);
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-schedule-event {
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-schedule-event-inner {
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-schedule-invalid {
+ background: rgba(26, 26, 26, .75);
+ color: #787878
+}
+
+.mbsc-material-dark.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-material-dark.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ box-shadow: 0 4px 8px 0 hsla(0, 0%, 100%, .14), 0 1px 8px 0 hsla(0, 0%, 100%, .12), 0 1px 3px -1px hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-dark.mbsc-schedule-event-active .mbsc-schedule-event-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-dark.mbsc-timeline-footer-bg,
+.mbsc-material-dark.mbsc-timeline-header-bg,
+.mbsc-material-dark.mbsc-timeline-header-text,
+.mbsc-material-dark.mbsc-timeline-resource-bg,
+.mbsc-material-dark.mbsc-timeline-resource-dragged,
+.mbsc-material-dark.mbsc-timeline-resource-footer-cont,
+.mbsc-material-dark.mbsc-timeline-resource-header-cont,
+.mbsc-material-dark.mbsc-timeline-row-fixed,
+.mbsc-material-dark.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-dark.mbsc-timeline-sidebar-header-cont {
+ background: #000
+}
+
+.mbsc-material-dark.mbsc-timeline-resource {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-timeline-header-active {
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-timeline-header-active:after {
+ background-color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-timeline-parent {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-material-dark.mbsc-timeline-parent-hover {
+ background: hsla(0, 0%, 100%, .15)
+}
+
+.mbsc-material-dark.mbsc-connection {
+ stroke: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-dark.mbsc-connection-arrow {
+ fill: #fff
+}
+
+.mbsc-material-dark.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-material-dark.mbsc-timeline-resource-drop-invalid {
+ background-color: #de3226
+}
+
+.mbsc-windows.mbsc-popover-list {
+ margin: .25em 0
+}
+
+.mbsc-windows.mbsc-event-group {
+ border-bottom: 1px solid
+}
+
+.mbsc-windows.mbsc-event-group-empty {
+ border: 0
+}
+
+.mbsc-windows.mbsc-event-day.mbsc-list-header {
+ padding: 1em 1.5em .25em
+}
+
+.mbsc-windows.mbsc-event.mbsc-list-item {
+ -moz-box-align: center;
+ align-items: center;
+ margin-bottom: .25em
+}
+
+.mbsc-windows.mbsc-event-content {
+ -moz-box-ordinal-group: 2;
+ order: 1
+}
+
+.mbsc-windows.mbsc-event-time {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ font-size: .75em;
+ padding: 0 1.333334em;
+ width: 7em
+}
+
+.mbsc-windows.mbsc-event-date {
+ width: 13em
+}
+
+.mbsc-windows.mbsc-event-color {
+ align-self: stretch;
+ margin: -.5em 0 -.5em -.5em;
+ width: .5em
+}
+
+.mbsc-windows.mbsc-event-sep {
+ display: none
+}
+
+.mbsc-windows.mbsc-schedule-wrapper {
+ min-height: 1.5em;
+ position: relative;
+ z-index: 2
+}
+
+.mbsc-windows.mbsc-schedule-header-day {
+ border-top: 1px solid;
+ font-size: 1em;
+ padding: .5em .5em 1.5em;
+ text-align: left
+}
+
+.mbsc-windows.mbsc-schedule-header-day.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 1px;
+ margin-left: -1px
+}
+
+.mbsc-windows.mbsc-schedule-header-day.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 1px;
+ margin-right: -1px
+}
+
+.mbsc-windows.mbsc-schedule-header-item.mbsc-ltr {
+ border-left: 1px solid transparent
+}
+
+.mbsc-windows.mbsc-schedule-header-item.mbsc-rtl {
+ border-right: 1px solid transparent
+}
+
+.mbsc-windows.mbsc-schedule-header-item:first-child {
+ border: 0
+}
+
+.mbsc-windows.mbsc-schedule-header-item:first-child .mbsc-schedule-header-day {
+ border-left: 0;
+ border-right: 0;
+ margin: 0
+}
+
+.mbsc-windows.mbsc-schedule-header-dayname {
+ font-size: .875em;
+ padding: .571429em;
+ text-align: left
+}
+
+.mbsc-windows.mbsc-schedule-all-day-item {
+ min-height: 1.375em
+}
+
+.mbsc-windows.mbsc-schedule-all-day-text,
+.mbsc-windows.mbsc-schedule-timezone-label {
+ font-size: .75em;
+ line-height: 1.833334em;
+ padding: 0 .333334em
+}
+
+.mbsc-windows.mbsc-schedule-header-dayname {
+ position: relative
+}
+
+.mbsc-windows.mbsc-schedule-header-dayname.mbsc-selected:after {
+ bottom: 0;
+ content: "";
+ height: .285715em;
+ left: 0;
+ position: absolute;
+ width: 100%
+}
+
+.mbsc-windows.mbsc-schedule-date-header {
+ border-bottom: 1px solid
+}
+
+.mbsc-windows.mbsc-schedule-date-header-text {
+ font-weight: 500;
+ line-height: 1.25em;
+ padding: .5em 0
+}
+
+.mbsc-windows.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows.mbsc-schedule-resource {
+ border-top: 1px solid;
+ margin-top: -1px
+}
+
+.mbsc-windows.mbsc-schedule-resource.mbsc-ltr {
+ border-left-style: solid;
+ border-left-width: 1px;
+ text-align: left
+}
+
+.mbsc-windows.mbsc-schedule-resource.mbsc-rtl {
+ border-right-style: solid;
+ border-right-width: 1px;
+ text-align: right
+}
+
+.mbsc-windows.mbsc-schedule-resource:first-child {
+ border-left: 0;
+ border-right: 0
+}
+
+.mbsc-windows.mbsc-schedule-time-indicator-x {
+ border-bottom: 1px dashed
+}
+
+.mbsc-windows.mbsc-schedule-time-indicator-time-x {
+ font-size: .75em;
+ padding: 0 .333334em;
+ text-transform: lowercase
+}
+
+.mbsc-windows.mbsc-schedule-time-indicator-day {
+ border-bottom: 1px solid;
+ border-top: 1px solid
+}
+
+.mbsc-windows.mbsc-schedule-time-indicator-day:before {
+ display: none
+}
+
+.mbsc-windows.mbsc-schedule-cursor-time-x {
+ font-size: .75em;
+ padding: 0 .333334em;
+ width: 5.666667em
+}
+
+.mbsc-windows.mbsc-schedule-all-day-wrapper {
+ max-height: 4em
+}
+
+.mbsc-windows.mbsc-schedule-time-col.mbsc-ltr {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-windows.mbsc-schedule-time-col.mbsc-rtl {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-windows.mbsc-schedule-time {
+ padding: 0 .333334em;
+ text-transform: lowercase;
+ top: 0
+}
+
+.mbsc-windows.mbsc-schedule-time-end {
+ display: none
+}
+
+.mbsc-windows.mbsc-schedule-event-hover .mbsc-schedule-event-background:after {
+ background: rgba(0, 0, 0, .1);
+ content: "";
+ height: 100%;
+ position: absolute;
+ width: 100%
+}
+
+.mbsc-windows.mbsc-schedule-event-end.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-windows.mbsc-schedule-event-start.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-windows.mbsc-timeline-event-end.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-windows.mbsc-timeline-event-start.mbsc-ltr .mbsc-schedule-event-all-day-background {
+ left: .25em
+}
+
+.mbsc-windows.mbsc-schedule-event-end.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-windows.mbsc-schedule-event-start.mbsc-rtl .mbsc-schedule-event-all-day-background,
+.mbsc-windows.mbsc-timeline-event-end.mbsc-ltr .mbsc-schedule-event-all-day-background,
+.mbsc-windows.mbsc-timeline-event-start.mbsc-rtl .mbsc-schedule-event-all-day-background {
+ right: .25em
+}
+
+.mbsc-windows.mbsc-timeline-resource-icon {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ padding: 0 .214286em;
+ width: 1.071429em
+}
+
+.mbsc-windows.mbsc-timeline-header-sticky .mbsc-timeline-header-date-text {
+ position: relative
+}
+
+.mbsc-windows.mbsc-timeline-header-active {
+ position: static
+}
+
+.mbsc-windows.mbsc-timeline-header-active:after {
+ border-radius: 0;
+ height: .142857em;
+ left: 0;
+ right: 0;
+ top: 0;
+ z-index: 1
+}
+
+.mbsc-windows.mbsc-eventcalendar {
+ background: #fff
+}
+
+.mbsc-windows.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-windows.mbsc-event-list-empty {
+ color: rgba(51, 51, 51, .7)
+}
+
+.mbsc-windows.mbsc-event-group {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-event-day.mbsc-list-header,
+.mbsc-windows.mbsc-event.mbsc-list-item {
+ background: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-event.mbsc-focus,
+.mbsc-windows.mbsc-event.mbsc-selected {
+ background: rgba(0, 120, 215, .25)
+}
+
+.mbsc-windows.mbsc-event-color {
+ background: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-wrapper {
+ background: #fff
+}
+
+.mbsc-windows.mbsc-schedule-header-day {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-schedule-header-item {
+ color: #333
+}
+
+.mbsc-windows.mbsc-schedule-header-day-today {
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-header-dayname.mbsc-selected:after {
+ background: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-date-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-schedule-time-indicator,
+.mbsc-windows.mbsc-schedule-time-indicator-day {
+ border-color: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-cursor-time,
+.mbsc-windows.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-time-indicator-time {
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-all-day-item:after,
+.mbsc-windows.mbsc-schedule-column,
+.mbsc-windows.mbsc-schedule-item,
+.mbsc-windows.mbsc-schedule-resource,
+.mbsc-windows.mbsc-schedule-resource-group,
+.mbsc-windows.mbsc-schedule-time-col,
+.mbsc-windows.mbsc-timeline-column,
+.mbsc-windows.mbsc-timeline-day:after,
+.mbsc-windows.mbsc-timeline-footer,
+.mbsc-windows.mbsc-timeline-footer-column,
+.mbsc-windows.mbsc-timeline-footer-date,
+.mbsc-windows.mbsc-timeline-footer-week,
+.mbsc-windows.mbsc-timeline-header,
+.mbsc-windows.mbsc-timeline-header-column,
+.mbsc-windows.mbsc-timeline-header-date,
+.mbsc-windows.mbsc-timeline-header-month,
+.mbsc-windows.mbsc-timeline-header-week,
+.mbsc-windows.mbsc-timeline-resource,
+.mbsc-windows.mbsc-timeline-resource-footer-cont,
+.mbsc-windows.mbsc-timeline-resource-header-cont,
+.mbsc-windows.mbsc-timeline-row,
+.mbsc-windows.mbsc-timeline-row-date,
+.mbsc-windows.mbsc-timeline-row-group:after,
+.mbsc-windows.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows.mbsc-timeline-sidebar-header-cont,
+.mbsc-windows.mbsc-timeline-sidebar-resource,
+.mbsc-windows.mbsc-timeline-slot-header,
+.mbsc-windows.mbsc-timeline-slots {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #e6e6e6
+}
+
+.mbsc-windows.mbsc-schedule-time-wrapper {
+ border-top: 1px solid #e6e6e6;
+ color: #333
+}
+
+.mbsc-windows.mbsc-schedule-time-wrapper-end {
+ border-bottom: 1px solid #e6e6e6;
+ color: #333
+}
+
+.mbsc-windows.mbsc-schedule-all-day-text,
+.mbsc-windows.mbsc-schedule-time-cont,
+.mbsc-windows.mbsc-schedule-timezone-label {
+ color: #333
+}
+
+.mbsc-windows.mbsc-schedule-event {
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-windows.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-windows.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ outline: 1px solid #333
+}
+
+.mbsc-windows.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-windows.mbsc-timeline-footer-bg,
+.mbsc-windows.mbsc-timeline-header-bg,
+.mbsc-windows.mbsc-timeline-header-text,
+.mbsc-windows.mbsc-timeline-resource-bg,
+.mbsc-windows.mbsc-timeline-resource-dragged,
+.mbsc-windows.mbsc-timeline-resource-footer-cont,
+.mbsc-windows.mbsc-timeline-resource-header-cont,
+.mbsc-windows.mbsc-timeline-row-fixed,
+.mbsc-windows.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-windows.mbsc-timeline-resource {
+ background: #fff;
+ color: #333
+}
+
+.mbsc-windows .mbsc-timeline-header-active:after {
+ background-color: #0078d7
+}
+
+.mbsc-windows.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-windows.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .084)
+}
+
+.mbsc-windows.mbsc-connection {
+ stroke: rgba(51, 51, 51, .7)
+}
+
+.mbsc-windows.mbsc-connection-arrow {
+ fill: #333
+}
+
+.mbsc-windows.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-windows.mbsc-timeline-resource-drop-invalid {
+ background-color: #a4262c
+}
+
+.mbsc-windows-dark.mbsc-eventcalendar {
+ background: #1a1a1a
+}
+
+.mbsc-windows-dark.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #343434
+}
+
+.mbsc-windows-dark.mbsc-event-list-empty {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-windows-dark.mbsc-event-group {
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-event-day.mbsc-list-header,
+.mbsc-windows-dark.mbsc-event.mbsc-list-item {
+ background: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-event.mbsc-focus,
+.mbsc-windows-dark.mbsc-event.mbsc-selected {
+ background: rgba(0, 120, 215, .25)
+}
+
+.mbsc-windows-dark.mbsc-event-color {
+ background: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-wrapper {
+ background: #1a1a1a
+}
+
+.mbsc-windows-dark.mbsc-schedule-header-day {
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-schedule-header-item {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-schedule-header-day-today {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-header-dayname.mbsc-selected:after {
+ background: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-date-header {
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-schedule-time-indicator,
+.mbsc-windows-dark.mbsc-schedule-time-indicator-day {
+ border-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-cursor-time,
+.mbsc-windows-dark.mbsc-schedule-time-indicator-time {
+ background: rgba(26, 26, 26, .8);
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-time-indicator-time {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-all-day-item:after,
+.mbsc-windows-dark.mbsc-schedule-column,
+.mbsc-windows-dark.mbsc-schedule-item,
+.mbsc-windows-dark.mbsc-schedule-resource,
+.mbsc-windows-dark.mbsc-schedule-resource-group,
+.mbsc-windows-dark.mbsc-schedule-time-col,
+.mbsc-windows-dark.mbsc-timeline-column,
+.mbsc-windows-dark.mbsc-timeline-day:after,
+.mbsc-windows-dark.mbsc-timeline-footer,
+.mbsc-windows-dark.mbsc-timeline-footer-column,
+.mbsc-windows-dark.mbsc-timeline-footer-date,
+.mbsc-windows-dark.mbsc-timeline-footer-week,
+.mbsc-windows-dark.mbsc-timeline-header,
+.mbsc-windows-dark.mbsc-timeline-header-column,
+.mbsc-windows-dark.mbsc-timeline-header-date,
+.mbsc-windows-dark.mbsc-timeline-header-month,
+.mbsc-windows-dark.mbsc-timeline-header-week,
+.mbsc-windows-dark.mbsc-timeline-resource,
+.mbsc-windows-dark.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-dark.mbsc-timeline-resource-header-cont,
+.mbsc-windows-dark.mbsc-timeline-row,
+.mbsc-windows-dark.mbsc-timeline-row-date,
+.mbsc-windows-dark.mbsc-timeline-row-group:after,
+.mbsc-windows-dark.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-dark.mbsc-timeline-sidebar-header-cont,
+.mbsc-windows-dark.mbsc-timeline-sidebar-resource,
+.mbsc-windows-dark.mbsc-timeline-slot-header,
+.mbsc-windows-dark.mbsc-timeline-slots {
+ border-color: #343434
+}
+
+.mbsc-windows-dark.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #343434
+}
+
+.mbsc-windows-dark.mbsc-schedule-time-wrapper {
+ border-top: 1px solid #343434;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-schedule-time-wrapper-end {
+ border-bottom: 1px solid #343434;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-schedule-all-day-text,
+.mbsc-windows-dark.mbsc-schedule-time-cont,
+.mbsc-windows-dark.mbsc-schedule-timezone-label {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-schedule-event {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-windows-dark.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ outline: 1px solid #fff
+}
+
+.mbsc-windows-dark.mbsc-schedule-invalid {
+ background: rgba(52, 52, 52, .75);
+ color: #929292
+}
+
+.mbsc-windows-dark.mbsc-timeline-footer-bg,
+.mbsc-windows-dark.mbsc-timeline-header-bg,
+.mbsc-windows-dark.mbsc-timeline-header-text,
+.mbsc-windows-dark.mbsc-timeline-resource-bg,
+.mbsc-windows-dark.mbsc-timeline-resource-dragged,
+.mbsc-windows-dark.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-dark.mbsc-timeline-resource-header-cont,
+.mbsc-windows-dark.mbsc-timeline-row-fixed,
+.mbsc-windows-dark.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-dark.mbsc-timeline-sidebar-header-cont {
+ background: #1a1a1a
+}
+
+.mbsc-windows-dark.mbsc-timeline-resource {
+ background: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark .mbsc-timeline-header-active:after {
+ background-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-timeline-parent {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-windows-dark.mbsc-timeline-parent-hover {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-windows-dark.mbsc-connection {
+ stroke: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-windows-dark.mbsc-connection-arrow {
+ fill: #fff
+}
+
+.mbsc-windows-dark.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-windows-dark.mbsc-timeline-resource-drop-invalid {
+ background-color: #a4262c
+}
+
+.mbsc-eventcalendar {
+ height: 100%;
+ overflow: hidden
+}
+
+.mbsc-event-list {
+ margin-top: -1px;
+ position: relative;
+ z-index: 0
+}
+
+.mbsc-event-list-scroll {
+ -webkit-overflow-scrolling: touch;
+ overflow: auto
+}
+
+.mbsc-event-list-empty {
+ font-size: 1.5em;
+ margin: 3em;
+ text-align: center
+}
+
+.mbsc-event-day {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 3
+}
+
+.mbsc-event-color,
+.mbsc-event-time {
+ -moz-box-flex: 0;
+ flex: 0 0 auto
+}
+
+.mbsc-event-content {
+ overflow: hidden
+}
+
+.mbsc-event-text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-calendar-popup .mbsc-popup-content {
+ -ms-scroll-chaining: none;
+ overscroll-behavior: contain
+}
+
+.mbsc-popover-list {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ max-width: 100%;
+ overflow: hidden;
+ width: 24em
+}
+
+.mbsc-popover-hidden {
+ visibility: hidden
+}
+
+.mbsc-calendar-dragging {
+ bottom: 0;
+ cursor: move;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 3
+}
+
+.mbsc-draggable {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.mbsc-drag-clone {
+ box-shadow: 0 0 transparent, 0 0 transparent, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);
+ cursor: move;
+ display: table;
+ margin: 15px 0 0 !important;
+ pointer-events: none;
+ position: fixed;
+ z-index: 99998
+}
+
+.mbsc-drag-clone:after {
+ bottom: -50px;
+ content: "";
+ left: -50px;
+ position: absolute;
+ right: -50px;
+ top: -50px
+}
+
+.mbsc-drag-clone.mbsc-list-item {
+ display: -moz-box;
+ display: flex;
+ min-width: 200px
+}
+
+.mbsc-drag-clone .mbsc-calendar-text {
+ margin: 0
+}
+
+.mbsc-drag-clone .mbsc-calendar-label-resize {
+ display: none
+}
+
+.mbsc-schedule-fake-scroll-x,
+.mbsc-schedule-fake-scroll-y {
+ -moz-box-flex: 0;
+ flex: none;
+ visibility: hidden
+}
+
+.mbsc-schedule-fake-scroll-x {
+ overflow-x: scroll;
+ width: 0
+}
+
+.mbsc-schedule-fake-scroll-y {
+ max-height: 20px;
+ overflow-y: scroll
+}
+
+.mbsc-ios.mbsc-checkbox-right {
+ padding: .875em 3.75em .875em 1em
+}
+
+.mbsc-ios.mbsc-checkbox-left {
+ padding: .875em 1em .875em 3.75em
+}
+
+.mbsc-ios.mbsc-checkbox-box {
+ border: .125em solid;
+ border-radius: 2em;
+ height: 1.75em;
+ margin-top: -.875em;
+ width: 1.75em
+}
+
+.mbsc-ios.mbsc-checkbox-box-right {
+ right: 1em
+}
+
+.mbsc-ios.mbsc-checkbox-box-left {
+ left: 1em
+}
+
+.mbsc-ios.mbsc-checkbox-box:after {
+ border: .125em solid;
+ border-right: 0;
+ border-top: 0;
+ height: .375em;
+ left: 26%;
+ top: 32%;
+ transition: opacity .2s ease-in-out;
+ width: .75em
+}
+
+.mbsc-ios.mbsc-checkbox-box:before {
+ background: #ccc;
+ border-radius: 2.5em;
+ content: "";
+ height: 2.5em;
+ left: -.5em;
+ opacity: 0;
+ position: absolute;
+ top: -.5em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-focus:before {
+ opacity: .12
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-checkbox-box-primary {
+ color: #3f97f6
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-checkbox-box-secondary {
+ color: #90979e
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-checkbox-box-success {
+ color: #43be5f
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-checkbox-box-danger {
+ color: #f5504e
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-checkbox-box-warning {
+ color: #f8b042
+}
+
+.mbsc-ios.mbsc-checkbox-box.mbsc-checkbox-box-info {
+ color: #5bb7c5
+}
+
+.mbsc-ios.mbsc-checkbox-box {
+ color: #1273de
+}
+
+.mbsc-ios-dark.mbsc-checkbox-box {
+ color: #ffa519
+}
+
+.mbsc-material.mbsc-checkbox-right {
+ padding: .9375em 3.5em .9375em 1em
+}
+
+.mbsc-material.mbsc-checkbox-left {
+ padding: .9375em 1em .9375em 3.5em
+}
+
+.mbsc-material.mbsc-checkbox-box {
+ border: .125em solid;
+ border-radius: .1875em;
+ height: 1.125em;
+ margin-top: -.5625em;
+ transition: background-color .1s ease-out;
+ width: 1.125em
+}
+
+.mbsc-material.mbsc-checkbox-box-right {
+ right: 1.25em
+}
+
+.mbsc-material.mbsc-checkbox-box-left {
+ left: 1.25em
+}
+
+.mbsc-material.mbsc-checkbox-box:after {
+ border: .125em solid;
+ border-right: 0;
+ border-top: 0;
+ height: .4375em;
+ left: .0625em;
+ opacity: 1;
+ top: .125em;
+ -webkit-transform: scale(0) rotate(-45deg);
+ transform: scale(0) rotate(-45deg);
+ transition: -webkit-transform .1s ease-out;
+ transition: transform .1s ease-out;
+ transition: transform .1s ease-out, -webkit-transform .1s ease-out;
+ width: .8125em
+}
+
+.mbsc-material.mbsc-checkbox-box:before {
+ background: currentColor;
+ border-radius: 2.5em;
+ content: "";
+ height: 2.5em;
+ left: -.8125em;
+ opacity: 0;
+ position: absolute;
+ top: -.8125em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-focus:before {
+ opacity: .12
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-active:before {
+ opacity: .2
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checked {
+ background: currentColor;
+ border-color: currentColor
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checked:after {
+ -webkit-transform: scale(1) rotate(-45deg);
+ transform: scale(1) rotate(-45deg)
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checkbox-box-primary {
+ color: #3f97f6
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checkbox-box-secondary {
+ color: #90979e
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checkbox-box-success {
+ color: #43be5f
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checkbox-box-danger {
+ color: #f5504e
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checkbox-box-warning {
+ color: #f8b042
+}
+
+.mbsc-material.mbsc-checkbox-box.mbsc-checkbox-box-info {
+ color: #5bb7c5
+}
+
+.mbsc-material.mbsc-checkbox-box {
+ border-color: #303030;
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-checkbox-box:after {
+ border-color: #fff
+}
+
+.mbsc-material-dark.mbsc-checkbox-box {
+ border-color: #fff;
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-checkbox-box:after {
+ border-color: #000
+}
+
+.mbsc-windows.mbsc-checkbox-left {
+ padding: 1.125em 1em 1.125em 2.875em
+}
+
+.mbsc-windows.mbsc-checkbox-right {
+ padding: 1.125em 2.875em 1.125em 1em
+}
+
+.mbsc-windows.mbsc-checkbox-box {
+ border: .125em solid;
+ height: 1.3125em;
+ margin-top: -.6875em;
+ width: 1.3125em
+}
+
+.mbsc-windows.mbsc-checkbox-box-left {
+ left: 1em
+}
+
+.mbsc-windows.mbsc-checkbox-box-right {
+ right: 1em
+}
+
+.mbsc-windows.mbsc-checkbox-box:after {
+ border: .125em solid;
+ border-right: 0;
+ border-top: 0;
+ height: .475em;
+ left: 10%;
+ top: 16%;
+ width: .875em
+}
+
+.mbsc-windows.mbsc-checkbox-box:before {
+ border-radius: 2.5em;
+ content: "";
+ height: 2.5em;
+ left: -.75em;
+ opacity: 0;
+ position: absolute;
+ top: -.75em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-focus:before {
+ opacity: .12
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checked {
+ background: currentColor;
+ border-color: currentColor
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checkbox-box-primary {
+ color: #3f97f6
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checkbox-box-secondary {
+ color: #90979e
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checkbox-box-success {
+ color: #43be5f
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checkbox-box-danger {
+ color: #f5504e
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checkbox-box-warning {
+ color: #f8b042
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-checkbox-box-info {
+ color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-checkbox-box {
+ border-color: #333;
+ color: #0078d7
+}
+
+.mbsc-windows.mbsc-checkbox-box:after {
+ border-color: #e5f1fb
+}
+
+.mbsc-windows.mbsc-checkbox-box:before {
+ background: #737373
+}
+
+.mbsc-windows.mbsc-checkbox-box.mbsc-active {
+ background: #737373;
+ border-color: #737373
+}
+
+.mbsc-windows-dark.mbsc-checkbox-box {
+ border-color: #fff;
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-checkbox-box:after {
+ border-color: #000
+}
+
+.mbsc-windows-dark.mbsc-checkbox-box:before {
+ background: #a6a6a6
+}
+
+.mbsc-windows-dark.mbsc-checkbox-box.mbsc-active {
+ background: #a6a6a6;
+ border-color: #a6a6a6
+}
+
+.mbsc-checkbox {
+ display: block;
+ line-height: 1.25em;
+ margin: 0;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 0
+}
+
+.mbsc-checkbox-box {
+ height: 1.375em;
+ top: 50%;
+ width: 1.375em
+}
+
+.mbsc-checkbox-box,
+.mbsc-checkbox-box:after {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ position: absolute
+}
+
+.mbsc-checkbox-box:after {
+ content: "";
+ opacity: 0;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg)
+}
+
+.mbsc-checkbox-box.mbsc-checked:after {
+ opacity: 1
+}
+
+.mbsc-ios .mbsc-toast-message {
+ border-radius: 1.785715em;
+ line-height: 1.857143em
+}
+
+.mbsc-ios .mbsc-alert-title {
+ font-size: 1.125em;
+ margin: .277778em 0;
+ text-align: center
+}
+
+.mbsc-ios .mbsc-alert-message {
+ font-size: .875em;
+ margin: .357143em 0;
+ text-align: center
+}
+
+.mbsc-ios.mbsc-prompt-input.mbsc-font {
+ border-radius: .5em;
+ border-style: solid;
+ border-width: 1px;
+ margin-top: 1em
+}
+
+.mbsc-ios.mbsc-prompt-input:after,
+.mbsc-ios.mbsc-prompt-input:before {
+ display: none
+}
+
+.mbsc-ios.mbsc-prompt-input .mbsc-textfield {
+ height: 1.75em;
+ line-height: 1.75em;
+ padding: 0 .25em
+}
+
+.mbsc-ios.mbsc-prompt-input .mbsc-label {
+ height: 1.75em;
+ line-height: 1.75em;
+ padding-left: .25em
+}
+
+.mbsc-ios.mbsc-primary .mbsc-toast-background {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-secondary .mbsc-toast-background {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-success .mbsc-toast-background {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-danger .mbsc-toast-background {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-warning .mbsc-toast-background {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios.mbsc-info .mbsc-toast-background {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios .mbsc-toast-background {
+ background: rgba(0, 0, 0, .8);
+ color: #fff
+}
+
+.mbsc-ios.mbsc-prompt-input {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-color-none .mbsc-snackbar-button.mbsc-button {
+ color: #007aff
+}
+
+.mbsc-ios-dark .mbsc-toast-background {
+ background: hsla(0, 0%, 100%, .8);
+ color: #000
+}
+
+.mbsc-ios-dark.mbsc-prompt-input {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-color-none .mbsc-snackbar-button.mbsc-button {
+ color: #ff9f0a
+}
+
+.mbsc-material .mbsc-toast-message {
+ border-radius: 1.571429em
+}
+
+.mbsc-material .mbsc-toast-background {
+ background: #444;
+ color: #fff
+}
+
+.mbsc-material.mbsc-prompt-input.mbsc-font {
+ margin: 1.5em 0 0
+}
+
+.mbsc-material.mbsc-primary .mbsc-toast-background {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-material.mbsc-secondary .mbsc-toast-background {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-material.mbsc-success .mbsc-toast-background {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-material.mbsc-danger .mbsc-toast-background {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-material.mbsc-warning .mbsc-toast-background {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-material.mbsc-info .mbsc-toast-background {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-material.mbsc-color-none .mbsc-snackbar-button.mbsc-button {
+ color: #488fed
+}
+
+.mbsc-material-dark.mbsc-color-none .mbsc-snackbar-button.mbsc-button {
+ color: #b5cff8
+}
+
+.mbsc-windows.mbsc-prompt-input.mbsc-font {
+ margin: 1em 0 0
+}
+
+.mbsc-windows.mbsc-primary .mbsc-toast-background {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-secondary .mbsc-toast-background {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-success .mbsc-toast-background {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-danger .mbsc-toast-background {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-warning .mbsc-toast-background {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-info .mbsc-toast-background {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-windows .mbsc-toast-background {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows.mbsc-color-none .mbsc-snackbar-button.mbsc-button {
+ color: #0b93ff
+}
+
+.mbsc-windows-dark .mbsc-toast-background {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-dark.mbsc-color-none .mbsc-snackbar-button.mbsc-button {
+ color: #0b93ff
+}
+
+.mbsc-snackbar.mbsc-font .mbsc-popup,
+.mbsc-snackbar.mbsc-font .mbsc-popup-body,
+.mbsc-toast.mbsc-font .mbsc-popup,
+.mbsc-toast.mbsc-font .mbsc-popup-body {
+ background: none;
+ border: 0;
+ border-radius: 0;
+ box-shadow: none;
+ margin: 0;
+ pointer-events: none
+}
+
+.mbsc-toast.mbsc-font .mbsc-popup-content {
+ padding-bottom: 4em;
+ text-align: center
+}
+
+.mbsc-toast-message {
+ display: inline-block;
+ font-size: .875em;
+ line-height: 1.428572;
+ max-width: 50em;
+ min-width: 10em;
+ padding: .857143em 2em
+}
+
+.mbsc-snackbar-cont {
+ -moz-box-align: center;
+ align-items: center;
+ margin: 0 auto;
+ max-width: 36em;
+ min-width: 18em;
+ padding: .5em;
+ pointer-events: auto
+}
+
+.mbsc-snackbar-message {
+ font-size: .875em;
+ line-height: 1.571429em;
+ padding: .5em 1em
+}
+
+.mbsc-snackbar-button.mbsc-button.mbsc-font {
+ color: #fff;
+ margin: 0
+}
+
+.mbsc-alert-content {
+ max-width: 20em
+}
+
+.mbsc-alert-title {
+ font-size: 1.428572em;
+ font-weight: 700;
+ margin: 0 0 1em;
+ padding: 0
+}
+
+.mbsc-alert-message {
+ font-size: 1em;
+ margin: 1em 0;
+ padding: 0
+}
+
+.mbsc-ios .mbsc-block-title,
+.mbsc-ios .mbsc-form-group-title {
+ font-size: .75em;
+ line-height: 1.5em;
+ padding: .5em 1.333334em;
+ text-transform: uppercase
+}
+
+.mbsc-ios.mbsc-page {
+ background: #f2f2f7;
+ color: #000
+}
+
+.mbsc-ios.mbsc-page a {
+ color: #007aff
+}
+
+.mbsc-ios .mbsc-block-title,
+.mbsc-ios .mbsc-form-group-title {
+ color: #6e6e6e
+}
+
+.mbsc-ios-dark.mbsc-page {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-page a {
+ color: #ff9f0a
+}
+
+.mbsc-ios-dark .mbsc-block-title,
+.mbsc-ios-dark .mbsc-form-group-title {
+ color: #919191
+}
+
+.mbsc-material .mbsc-block-title,
+.mbsc-material .mbsc-form-group-title {
+ font-size: .75em;
+ padding: .666667em 1.333334em;
+ text-transform: uppercase
+}
+
+.mbsc-material.mbsc-page {
+ background-color: #fff;
+ color: #303030
+}
+
+.mbsc-material .mbsc-block-title,
+.mbsc-material .mbsc-form-group-title,
+.mbsc-material.mbsc-page a {
+ color: #1a73e8
+}
+
+.mbsc-material-dark.mbsc-page {
+ background-color: #000;
+ color: #fff
+}
+
+.mbsc-material-dark .mbsc-block-title,
+.mbsc-material-dark .mbsc-form-group-title,
+.mbsc-material-dark.mbsc-page a {
+ color: #87b0f3
+}
+
+.mbsc-windows .mbsc-block-title,
+.mbsc-windows .mbsc-form-group-title {
+ font-size: 1.5em;
+ line-height: 2em;
+ padding: 0 .666667em
+}
+
+.mbsc-windows.mbsc-page {
+ background-color: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-page a {
+ color: #0078d7
+}
+
+.mbsc-windows .mbsc-block-title,
+.mbsc-windows .mbsc-form-group-title {
+ color: #333
+}
+
+.mbsc-windows-dark.mbsc-page {
+ background-color: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-page a {
+ color: #0078d7
+}
+
+.mbsc-windows-dark .mbsc-block-title,
+.mbsc-windows-dark .mbsc-form-group-title {
+ color: #fff
+}
+
+.mbsc-page {
+ display: block;
+ min-height: 100%;
+ padding: var(--mbsc-safe-top) var(--mbsc-safe-right) var(--mbsc-safe-bottom) var(--mbsc-safe-left)
+}
+
+.mbsc-page:after,
+.mbsc-page:before {
+ content: "";
+ display: table
+}
+
+.mbsc-block,
+.mbsc-form-group {
+ margin: 1.5em 0
+}
+
+.mbsc-form-group-inset {
+ margin: 2em 1.5em
+}
+
+.mbsc-form-grid .mbsc-form-group-title {
+ margin-left: 0;
+ margin-right: 0;
+ padding-left: 0;
+ padding-right: 0
+}
+
+.mbsc-h1,
+.mbsc-h2,
+.mbsc-h3,
+.mbsc-h4,
+.mbsc-h5,
+.mbsc-h6,
+.mbsc-page h1,
+.mbsc-page h2,
+.mbsc-page h3,
+.mbsc-page h4,
+.mbsc-page h5,
+.mbsc-page h6 {
+ color: inherit;
+ font-family: inherit;
+ font-weight: 400;
+ margin: 0;
+ padding: 0
+}
+
+.mbsc-p,
+.mbsc-page p {
+ line-height: 1.5;
+ margin: 1em 0;
+ padding: 0
+}
+
+.mbsc-a,
+.mbsc-page a {
+ text-decoration: none
+}
+
+.mbsc-a:hover,
+.mbsc-page a:hover {
+ text-decoration: underline
+}
+
+.mbsc-a.mbsc-btn:hover,
+.mbsc-page a.mbsc-btn:hover {
+ text-decoration: none
+}
+
+.mbsc-h1,
+.mbsc-page h1 {
+ font-size: 2.875em;
+ margin: .347826em 0
+}
+
+.mbsc-h2,
+.mbsc-page h2 {
+ font-size: 2.125em;
+ margin: .470588em 0
+}
+
+.mbsc-h3,
+.mbsc-page h3 {
+ font-size: 1.5em;
+ margin: .666666em 0
+}
+
+.mbsc-h4,
+.mbsc-page h4 {
+ font-size: 1.25em;
+ margin: .8em 0
+}
+
+.mbsc-h5,
+.mbsc-page h5 {
+ font-size: .9375em;
+ margin: 1.066666em 0
+}
+
+.mbsc-h6,
+.mbsc-page h6 {
+ font-size: .75em;
+ margin: 1.333333em 0
+}
+
+.mbsc-padding {
+ padding: 1em
+}
+
+.mbsc-padding>p:first-child {
+ margin-top: 0
+}
+
+.mbsc-padding>p:last-child {
+ margin-bottom: 0
+}
+
+.mbsc-margin {
+ margin: 1em 0
+}
+
+.mbsc-margin:first-child {
+ margin-top: 0
+}
+
+.mbsc-margin:last-child {
+ margin-bottom: 0
+}
+
+.mbsc-ol,
+.mbsc-page ol,
+.mbsc-page ul,
+.mbsc-ul {
+ line-height: 1.5;
+ margin: 1em 0 1em 1.25em;
+ padding: 0
+}
+
+.mbsc-ol .mbsc-ol,
+.mbsc-page ol ol,
+.mbsc-page ul ul,
+.mbsc-ul .mbsc-ul {
+ margin: 0 0 0 1.25em
+}
+
+.mbsc-txt-xs {
+ font-size: .625em
+}
+
+.mbsc-txt-s {
+ font-size: .75em
+}
+
+.mbsc-txt-m {
+ font-size: 1.25em
+}
+
+.mbsc-txt-l {
+ font-size: 1.5em
+}
+
+.mbsc-txt-xl {
+ font-size: 2em
+}
+
+.mbsc-txt-muted {
+ opacity: .6
+}
+
+.mbsc-line-height-xs {
+ line-height: 1
+}
+
+.mbsc-line-height-s {
+ line-height: 1.25
+}
+
+.mbsc-line-height-m {
+ line-height: 1.5
+}
+
+.mbsc-line-height-l {
+ line-height: 1.75
+}
+
+.mbsc-line-height-xl {
+ line-height: 2
+}
+
+.mbsc-ultra-bold {
+ font-weight: 900
+}
+
+.mbsc-bold {
+ font-weight: 700
+}
+
+.mbsc-medium {
+ font-weight: 500
+}
+
+.mbsc-light {
+ font-weight: 300
+}
+
+.mbsc-thin {
+ font-weight: 100
+}
+
+.mbsc-italic {
+ font-style: italic
+}
+
+.mbsc-align-left {
+ text-align: left
+}
+
+.mbsc-align-right {
+ text-align: right
+}
+
+.mbsc-align-center {
+ text-align: center
+}
+
+.mbsc-align-justify {
+ text-align: justify
+}
+
+.mbsc-pull-right {
+ float: right
+}
+
+.mbsc-pull-left {
+ float: left
+}
+
+.mbsc-media-fluid {
+ display: block;
+ width: 100%
+}
+
+.mbsc-img-thumbnail {
+ height: 6em;
+ margin: 1em;
+ width: 6em
+}
+
+.mbsc-avatar {
+ border-radius: 1.25em;
+ height: 2.5em;
+ padding: 0;
+ width: 2.5em
+}
+
+.mbsc-note {
+ border: 1px solid transparent;
+ font-size: .875em;
+ margin: 1em;
+ padding: .75em 1.25em;
+ position: relative
+}
+
+@media (max-width:600px) {
+ .mbsc-note {
+ text-align: center
+ }
+}
+
+.mbsc-ios.mbsc-radio-left {
+ padding: .875em 1em .875em 3.75em
+}
+
+.mbsc-ios.mbsc-radio-right {
+ padding: .875em 3.75em .875em 1em
+}
+
+.mbsc-ios.mbsc-radio-box:after {
+ border: .125em solid;
+ border-radius: 0;
+ border-right: 0;
+ border-top: 0;
+ height: .375em;
+ left: 23%;
+ top: 44%;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ transition: opacity .2s ease-in-out;
+ width: .875em
+}
+
+.mbsc-ios.mbsc-radio-box:before {
+ background: #ccc;
+ border-radius: 2.5em;
+ content: "";
+ height: 2.5em;
+ left: -.75em;
+ opacity: 0;
+ position: absolute;
+ top: -.75em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-focus:before {
+ opacity: .12
+}
+
+.mbsc-ios.mbsc-radio-box-left {
+ left: 1.125em
+}
+
+.mbsc-ios.mbsc-radio-box-right {
+ right: 1.125em
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-radio-box-primary:after {
+ border-color: #3f97f6
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-radio-box-secondary:after {
+ border-color: #90979e
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-radio-box-success:after {
+ border-color: #43be5f
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-radio-box-danger:after {
+ border-color: #f5504e
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-radio-box-warning:after {
+ border-color: #f8b042
+}
+
+.mbsc-ios.mbsc-radio-box.mbsc-radio-box-info:after {
+ border-color: #5bb7c5
+}
+
+.mbsc-ios.mbsc-radio-box:after {
+ border-color: #1273de
+}
+
+.mbsc-ios.mbsc-radio-label.mbsc-disabled {
+ color: #c4c4c4
+}
+
+.mbsc-ios-dark.mbsc-radio-box:after {
+ border-color: #ffa519
+}
+
+.mbsc-ios-dark.mbsc-radio-label.mbsc-disabled {
+ color: #3b3b3b
+}
+
+.mbsc-material.mbsc-radio-left {
+ padding: .9375em 1em .9375em 3.5em
+}
+
+.mbsc-material.mbsc-radio-right {
+ padding: .9375em 3.5em .9375em 1em
+}
+
+.mbsc-material.mbsc-radio-box {
+ border: .125em solid;
+ transition: background-color .1s ease-out
+}
+
+.mbsc-material.mbsc-radio-box-left {
+ left: 1.125em
+}
+
+.mbsc-material.mbsc-radio-box-right {
+ right: 1.125em
+}
+
+.mbsc-material.mbsc-radio-box:before {
+ background: currentColor;
+ border-radius: 2.5em;
+ content: "";
+ height: 2.5em;
+ left: -.75em;
+ opacity: 0;
+ position: absolute;
+ top: -.75em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-focus:before {
+ opacity: .12
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-active:before {
+ opacity: .2
+}
+
+.mbsc-material.mbsc-radio-box:after {
+ background: currentColor;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ transition: -webkit-transform .1s ease-out;
+ transition: transform .1s ease-out;
+ transition: transform .1s ease-out, -webkit-transform .1s ease-out
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-checked {
+ border-color: currentColor
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-checked:after {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-radio-box-primary {
+ color: #3f97f6
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-radio-box-secondary {
+ color: #90979e
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-radio-box-success {
+ color: #43be5f
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-radio-box-danger {
+ color: #f5504e
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-radio-box-warning {
+ color: #f8b042
+}
+
+.mbsc-material.mbsc-radio-box.mbsc-radio-box-info {
+ color: #5bb7c5
+}
+
+.mbsc-material.mbsc-radio-box {
+ border-color: #303030;
+ color: #1a73e8
+}
+
+.mbsc-material-dark.mbsc-radio-box {
+ border-color: #fff;
+ color: #87b0f3
+}
+
+.mbsc-windows.mbsc-radio-left {
+ padding: 1.125em 1em 1.125em 3.25em
+}
+
+.mbsc-windows.mbsc-radio-right {
+ padding: 1.125em 3.25em 1.125em 1em
+}
+
+.mbsc-windows.mbsc-radio-box-left {
+ left: 1em
+}
+
+.mbsc-windows.mbsc-radio-box-right {
+ right: 1em
+}
+
+.mbsc-windows.mbsc-radio-box:before {
+ background: #ccc;
+ border-radius: 2.5em;
+ content: "";
+ height: 2.5em;
+ left: -.75em;
+ opacity: 0;
+ position: absolute;
+ top: -.75em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-focus:before {
+ opacity: .12
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-radio-box-primary.mbsc-checked {
+ border-color: #3f97f6
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-radio-box-secondary.mbsc-checked {
+ border-color: #90979e
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-radio-box-success.mbsc-checked {
+ border-color: #43be5f
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-radio-box-danger.mbsc-checked {
+ border-color: #f5504e
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-radio-box-warning.mbsc-checked {
+ border-color: #f8b042
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-radio-box-info.mbsc-checked {
+ border-color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-radio-box {
+ border: .125em solid #333
+}
+
+.mbsc-windows.mbsc-radio-box:after {
+ background: #333
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-checked {
+ border-color: #0078d7
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-active {
+ border-color: rgba(51, 51, 51, .6)
+}
+
+.mbsc-windows.mbsc-radio-box.mbsc-active:after {
+ background: rgba(51, 51, 51, .6)
+}
+
+.mbsc-windows-dark.mbsc-radio-box {
+ border: .125em solid #fff
+}
+
+.mbsc-windows-dark.mbsc-radio-box:after {
+ background: #fff
+}
+
+.mbsc-windows-dark.mbsc-radio-box.mbsc-checked {
+ border-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-radio-box.mbsc-active {
+ border-color: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-windows-dark.mbsc-radio-box.mbsc-active:after {
+ background: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-radio {
+ display: block;
+ line-height: 1.25em;
+ margin: 0;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 0
+}
+
+.mbsc-radio-box {
+ border-radius: 1.25em;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ height: 1.25em;
+ margin-top: -.625em;
+ position: absolute;
+ top: 50%;
+ width: 1.25em
+}
+
+.mbsc-radio-box:after {
+ border-radius: .625em;
+ content: "";
+ height: .625em;
+ left: 50%;
+ margin-left: -.3125em;
+ margin-top: -.3125em;
+ opacity: 0;
+ position: absolute;
+ top: 50%;
+ width: .625em
+}
+
+.mbsc-radio-box.mbsc-checked:after {
+ opacity: 1
+}
+
+.mbsc-ios.mbsc-stepper-input {
+ border: 1px solid;
+ margin-left: -1px;
+ margin-right: -1px;
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-stepper-button.mbsc-button {
+ line-height: 1.625em
+}
+
+.mbsc-ios.mbsc-stepper-button.mbsc-disabled {
+ opacity: 1
+}
+
+.mbsc-ios.mbsc-stepper-inner {
+ font-weight: 400
+}
+
+.mbsc-ios.mbsc-disabled .mbsc-stepper-inner {
+ opacity: .2
+}
+
+.mbsc-ios.mbsc-stepper-plus:before {
+ border-left: 1px solid;
+ bottom: .4125em;
+ content: "";
+ position: absolute;
+ top: .4125em
+}
+
+.mbsc-ios.mbsc-stepper-plus.mbsc-ltr:before {
+ left: 0
+}
+
+.mbsc-ios.mbsc-stepper-plus.mbsc-rtl:before {
+ right: 0
+}
+
+.mbsc-ios.mbsc-stepper-center .mbsc-stepper-plus:before {
+ display: none
+}
+
+.mbsc-ios.mbsc-primary .mbsc-stepper-button {
+ color: #3f97f6
+}
+
+.mbsc-ios.mbsc-secondary .mbsc-stepper-button {
+ color: #90979e
+}
+
+.mbsc-ios.mbsc-success .mbsc-stepper-button {
+ color: #43be5f
+}
+
+.mbsc-ios.mbsc-danger .mbsc-stepper-button {
+ color: #f5504e
+}
+
+.mbsc-ios.mbsc-warning .mbsc-stepper-button {
+ color: #f8b042
+}
+
+.mbsc-ios.mbsc-info .mbsc-stepper-button {
+ color: #5bb7c5
+}
+
+.mbsc-ios.mbsc-stepper-input {
+ border-color: #dedede;
+ color: #000
+}
+
+.mbsc-ios.mbsc-stepper-input.mbsc-disabled {
+ color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios.mbsc-stepper-button {
+ background: #dedede;
+ color: #000
+}
+
+.mbsc-ios.mbsc-stepper-plus:before {
+ border-color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-dark.mbsc-stepper-input {
+ border-color: #2b2b2b;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-stepper-input.mbsc-disabled {
+ color: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-ios-dark.mbsc-stepper-button {
+ background: #2b2b2b;
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-stepper-plus:before {
+ border-color: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material.mbsc-stepper-control {
+ height: 2.25em
+}
+
+.mbsc-material.mbsc-stepper-inner {
+ font-size: 2.142857em;
+ font-weight: 750
+}
+
+.mbsc-material.mbsc-stepper-button.mbsc-button {
+ border: 2px solid;
+ box-shadow: none;
+ line-height: 1em
+}
+
+.mbsc-material.mbsc-stepper-minus.mbsc-ltr,
+.mbsc-material.mbsc-stepper-plus.mbsc-rtl {
+ border-right: 0
+}
+
+.mbsc-material.mbsc-stepper-minus.mbsc-rtl,
+.mbsc-material.mbsc-stepper-plus.mbsc-ltr {
+ border-left: 0
+}
+
+.mbsc-material.mbsc-stepper-button.mbsc-disabled {
+ opacity: 1
+}
+
+.mbsc-material.mbsc-stepper-input {
+ border-bottom: 2px solid;
+ border-left: 0;
+ border-right: 0;
+ border-top: 2px solid;
+ width: 4em;
+ z-index: 1
+}
+
+.mbsc-material.mbsc-primary .mbsc-stepper-button {
+ background: #3f97f6;
+ border-color: #3f97f6
+}
+
+.mbsc-material.mbsc-secondary .mbsc-stepper-button {
+ background: #90979e;
+ border-color: #90979e
+}
+
+.mbsc-material.mbsc-success .mbsc-stepper-button {
+ background: #43be5f;
+ border-color: #43be5f
+}
+
+.mbsc-material.mbsc-danger .mbsc-stepper-button {
+ background: #f5504e;
+ border-color: #f5504e
+}
+
+.mbsc-material.mbsc-warning .mbsc-stepper-button {
+ background: #f8b042;
+ border-color: #f8b042
+}
+
+.mbsc-material.mbsc-info .mbsc-stepper-button {
+ background: #5bb7c5;
+ border-color: #5bb7c5
+}
+
+.mbsc-material.mbsc-primary .mbsc-stepper-input {
+ border-color: #3f97f6
+}
+
+.mbsc-material.mbsc-secondary .mbsc-stepper-input {
+ border-color: #90979e
+}
+
+.mbsc-material.mbsc-success .mbsc-stepper-input {
+ border-color: #43be5f
+}
+
+.mbsc-material.mbsc-danger .mbsc-stepper-input {
+ border-color: #f5504e
+}
+
+.mbsc-material.mbsc-warning .mbsc-stepper-input {
+ border-color: #f8b042
+}
+
+.mbsc-material.mbsc-info .mbsc-stepper-input {
+ border-color: #5bb7c5
+}
+
+.mbsc-material.mbsc-stepper-input {
+ border-color: #d6d6d6;
+ color: #5b5b5b
+}
+
+.mbsc-material.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-material.mbsc-stepper-button {
+ background: #d6d6d6;
+ color: #d6d6d6
+}
+
+.mbsc-material.mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-material.mbsc-color-none .mbsc-stepper-inner {
+ color: #303030
+}
+
+.mbsc-material.mbsc-stepper-button.mbsc-disabled {
+ background: #d6d6d6
+}
+
+.mbsc-material.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-material-dark.mbsc-stepper-input {
+ border-color: #595959;
+ color: #c2c2c2
+}
+
+.mbsc-material-dark.mbsc-stepper-input.mbsc-disabled {
+ color: #737373
+}
+
+.mbsc-material-dark.mbsc-stepper-button {
+ background: #595959;
+ color: #595959
+}
+
+.mbsc-material-dark.mbsc-stepper-inner {
+ color: #000
+}
+
+.mbsc-material-dark.mbsc-color-none .mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-stepper-button.mbsc-disabled {
+ background: #595959
+}
+
+.mbsc-material-dark.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #737373
+}
+
+.mbsc-windows.mbsc-stepper-button.mbsc-button {
+ border-color: currentColor;
+ line-height: 1.5em;
+ width: 3.625em
+}
+
+.mbsc-windows.mbsc-stepper-button.mbsc-hover:before {
+ bottom: 0;
+ content: "";
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-windows.mbsc-stepper-button.mbsc-disabled {
+ opacity: 1
+}
+
+.mbsc-windows.mbsc-stepper-minus.mbsc-ltr,
+.mbsc-windows.mbsc-stepper-plus.mbsc-rtl {
+ border-right: 0
+}
+
+.mbsc-windows.mbsc-stepper-minus.mbsc-rtl,
+.mbsc-windows.mbsc-stepper-plus.mbsc-ltr {
+ border-left: 0
+}
+
+.mbsc-windows.mbsc-stepper-inner {
+ font-size: 1.75em;
+ font-weight: 800
+}
+
+.mbsc-windows.mbsc-stepper-input {
+ border-bottom: 2px solid;
+ border-left: 0;
+ border-right: 0;
+ border-top: 2px solid;
+ width: 4em;
+ z-index: 1
+}
+
+.mbsc-windows.mbsc-primary .mbsc-stepper-button {
+ background: #3f97f6;
+ border-color: #3f97f6
+}
+
+.mbsc-windows.mbsc-secondary .mbsc-stepper-button {
+ background: #90979e;
+ border-color: #90979e
+}
+
+.mbsc-windows.mbsc-success .mbsc-stepper-button {
+ background: #43be5f;
+ border-color: #43be5f
+}
+
+.mbsc-windows.mbsc-danger .mbsc-stepper-button {
+ background: #f5504e;
+ border-color: #f5504e
+}
+
+.mbsc-windows.mbsc-warning .mbsc-stepper-button {
+ background: #f8b042;
+ border-color: #f8b042
+}
+
+.mbsc-windows.mbsc-info .mbsc-stepper-button {
+ background: #5bb7c5;
+ border-color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-primary .mbsc-stepper-input {
+ border-color: #3f97f6
+}
+
+.mbsc-windows.mbsc-secondary .mbsc-stepper-input {
+ border-color: #90979e
+}
+
+.mbsc-windows.mbsc-success .mbsc-stepper-input {
+ border-color: #43be5f
+}
+
+.mbsc-windows.mbsc-danger .mbsc-stepper-input {
+ border-color: #f5504e
+}
+
+.mbsc-windows.mbsc-warning .mbsc-stepper-input {
+ border-color: #f8b042
+}
+
+.mbsc-windows.mbsc-info .mbsc-stepper-input {
+ border-color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-stepper-input {
+ border-color: #ccc;
+ color: #333
+}
+
+.mbsc-windows.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-windows.mbsc-stepper-button {
+ color: #ccc
+}
+
+.mbsc-windows.mbsc-stepper-button.mbsc-hover:before {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-windows.mbsc-stepper-button.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-windows.mbsc-stepper-inner {
+ color: #333
+}
+
+.mbsc-windows.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-windows-dark.mbsc-stepper-input {
+ border-color: #404040;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-stepper-input.mbsc-disabled {
+ color: gray
+}
+
+.mbsc-windows-dark.mbsc-stepper-button {
+ color: #404040
+}
+
+.mbsc-windows-dark.mbsc-stepper-button.mbsc-hover:before {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-windows-dark.mbsc-stepper-button.mbsc-disabled {
+ background: #404040
+}
+
+.mbsc-windows-dark.mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: gray
+}
+
+.mbsc-stepper {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ line-height: 1.25em;
+ margin: 0;
+ padding: 1.5em 11.75em 1.5em 1em;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 0
+}
+
+.mbsc-stepper.mbsc-rtl {
+ padding: 1.5em 1em 1.5em 11.75em
+}
+
+.mbsc-stepper-label {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.mbsc-stepper-input {
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+ background: transparent;
+ border-radius: 0;
+ box-shadow: none;
+ font-size: .875em;
+ margin: 0;
+ opacity: 1;
+ padding: 0;
+ text-align: center;
+ width: 3.571429em;
+ z-index: 3
+}
+
+.mbsc-stepper-input::-webkit-inner-spin-button,
+.mbsc-stepper-input::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0
+}
+
+.mbsc-stepper-input:focus {
+ outline-width: 0
+}
+
+.mbsc-stepper-input.mbsc-disabled {
+ cursor: not-allowed
+}
+
+.mbsc-stepper-control {
+ height: 2em;
+ margin-top: -1em;
+ position: absolute;
+ top: 50%;
+ z-index: 2
+}
+
+.mbsc-stepper-control.mbsc-ltr {
+ right: 1em
+}
+
+.mbsc-stepper-control.mbsc-rtl {
+ left: 1em
+}
+
+.mbsc-stepper-start .mbsc-stepper-input {
+ -moz-box-ordinal-group: 0;
+ border: none;
+ order: -1
+}
+
+.mbsc-stepper-start.mbsc-ltr .mbsc-stepper-minus.mbsc-button {
+ margin-right: -1px
+}
+
+.mbsc-stepper-start.mbsc-rtl .mbsc-stepper-minus.mbsc-button {
+ margin-left: -1px
+}
+
+.mbsc-stepper-end .mbsc-stepper-input {
+ -moz-box-ordinal-group: 3;
+ border: none;
+ order: 2
+}
+
+.mbsc-stepper-end.mbsc-ltr .mbsc-stepper-minus.mbsc-button {
+ margin-right: -1px
+}
+
+.mbsc-stepper-end.mbsc-rtl .mbsc-stepper-minus.mbsc-button {
+ margin-left: -1px
+}
+
+.mbsc-stepper-button.mbsc-button.mbsc-font {
+ display: inline-block;
+ margin: 0;
+ width: 3.25em
+}
+
+.mbsc-stepper-inner {
+ font-size: 2em;
+ font-weight: 700
+}
+
+.mbsc-stepper-minus.mbsc-button.mbsc-ltr {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0
+}
+
+.mbsc-stepper-minus.mbsc-button.mbsc-rtl,
+.mbsc-stepper-plus.mbsc-button.mbsc-ltr {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0
+}
+
+.mbsc-stepper-plus.mbsc-button.mbsc-rtl {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0
+}
+
+.mbsc-ios.mbsc-switch-right {
+ padding: .875em 5em .875em 1em
+}
+
+.mbsc-ios.mbsc-switch-left {
+ padding: .875em 1em .875em 5em
+}
+
+.mbsc-ios.mbsc-switch-track {
+ border-radius: 1.25em;
+ height: 2em;
+ margin: -.96875em .875em 0;
+ padding: 0;
+ width: 1.25em
+}
+
+.mbsc-ios.mbsc-switch-track-right {
+ right: 1em
+}
+
+.mbsc-ios.mbsc-switch-track-left {
+ left: 1em
+}
+
+.mbsc-ios.mbsc-switch-track:after {
+ border-radius: 1.25em;
+ bottom: 0;
+ content: "";
+ left: -1em;
+ position: absolute;
+ right: -1em;
+ top: 0;
+ transition: background-color .2s ease-out;
+ z-index: 1
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-disabled {
+ opacity: .3
+}
+
+.mbsc-ios.mbsc-switch-handle {
+ background: #fff;
+ border-radius: 1.75em;
+ box-shadow: 0 .1875em .75em rgba(0, 0, 0, .16), 0 .1875em .0625em rgba(0, 0, 0, .1);
+ height: 1.75em;
+ left: 50%;
+ margin: -.875em 0 0 -.875em;
+ top: 50%;
+ width: 1.75em;
+ z-index: 2
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-switch-primary.mbsc-checked:after {
+ background: #3f97f6
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-switch-secondary.mbsc-checked:after {
+ background: #90979e
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-switch-success.mbsc-checked:after {
+ background: #43be5f
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-switch-danger.mbsc-checked:after {
+ background: #f5504e
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-switch-warning.mbsc-checked:after {
+ background: #f8b042
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-switch-info.mbsc-checked:after {
+ background: #5bb7c5
+}
+
+.mbsc-ios.mbsc-switch-track:after {
+ background: #e5e5e5
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-focus:after {
+ box-shadow: 0 0 0 .125em rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios.mbsc-switch-track.mbsc-checked:after {
+ background: #4cd764
+}
+
+.mbsc-ios-dark.mbsc-switch-track:after {
+ background: #383838
+}
+
+.mbsc-ios-dark.mbsc-switch-track.mbsc-focus:after {
+ box-shadow: 0 0 0 .125em hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-ios-dark.mbsc-switch-track.mbsc-checked:after {
+ background: #4cd764
+}
+
+.mbsc-material.mbsc-switch-right {
+ padding: .9375em 4em .9375em 1em
+}
+
+.mbsc-material.mbsc-switch-left {
+ padding: .9375em 1em .9375em 4em
+}
+
+.mbsc-material.mbsc-switch-track {
+ border-radius: 1.25em;
+ height: .875em;
+ margin-top: -.4375em;
+ padding: 0 .25em;
+ width: 1.75em
+}
+
+.mbsc-material.mbsc-switch-track-left {
+ left: 1.25em
+}
+
+.mbsc-material.mbsc-switch-track-right {
+ right: 1.25em
+}
+
+.mbsc-material.mbsc-switch-handle {
+ border-radius: 1.25em;
+ height: 1.25em;
+ margin-left: -.625em;
+ margin-top: -.625em;
+ top: 50%;
+ width: 1.25em
+}
+
+.mbsc-material.mbsc-switch-handle:before {
+ border-radius: 2.875em;
+ content: "";
+ display: block;
+ height: 2.5em;
+ left: -.625em;
+ opacity: 0;
+ position: absolute;
+ top: -.625em;
+ transition: opacity .2s ease-in-out;
+ width: 2.5em;
+ z-index: -1
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-focus:before {
+ opacity: .5
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-active:before {
+ opacity: 1
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-switch-primary.mbsc-checked {
+ background: #3f97f6
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-switch-primary.mbsc-checked {
+ background: #a0ccfb
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-switch-secondary.mbsc-checked {
+ background: #90979e
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-switch-secondary.mbsc-checked {
+ background: #c6cace
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-switch-success.mbsc-checked {
+ background: #43be5f
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-switch-success.mbsc-checked {
+ background: #8fd8a0
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-switch-danger.mbsc-checked {
+ background: #f5504e
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-switch-danger.mbsc-checked {
+ background: #faafaf
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-switch-warning.mbsc-checked {
+ background: #f8b042
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-switch-warning.mbsc-checked {
+ background: #fcd9a4
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-switch-info.mbsc-checked {
+ background: #5bb7c5
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-switch-info.mbsc-checked {
+ background: #a6d8e0
+}
+
+.mbsc-material.mbsc-switch-track {
+ background: #c4c4c4
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-checked {
+ background: rgba(26, 115, 232, .3)
+}
+
+.mbsc-material.mbsc-switch-track.mbsc-disabled {
+ background: #e8e8e8
+}
+
+.mbsc-material.mbsc-switch-handle {
+ background: #fff;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-checked {
+ background: #1a73e8
+}
+
+.mbsc-material.mbsc-switch-handle.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-material.mbsc-switch-handle:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-dark.mbsc-switch-track {
+ background: #2b2b2b
+}
+
+.mbsc-material-dark.mbsc-switch-track.mbsc-checked {
+ background: rgba(135, 176, 243, .3)
+}
+
+.mbsc-material-dark.mbsc-switch-track.mbsc-disabled {
+ background: #2b2b2b
+}
+
+.mbsc-material-dark.mbsc-switch-handle {
+ background: #878787;
+ box-shadow: 0 3px 1px -2px hsla(0, 0%, 100%, .2), 0 1px 5px 0 hsla(0, 0%, 100%, .12)
+}
+
+.mbsc-material-dark.mbsc-switch-handle.mbsc-checked {
+ background: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-switch-handle.mbsc-disabled {
+ background: #292929
+}
+
+.mbsc-material-dark.mbsc-switch-handle:before {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-windows.mbsc-switch-right {
+ padding: 1.125em 5.25em 1.125em 1em
+}
+
+.mbsc-windows.mbsc-switch-left {
+ padding: 1.125em 1em 1.125em 5.25em
+}
+
+.mbsc-windows.mbsc-switch-track {
+ height: 1em;
+ margin-top: -.5em;
+ width: 1.5em
+}
+
+.mbsc-windows.mbsc-switch-track-right {
+ right: 1.75em
+}
+
+.mbsc-windows.mbsc-switch-track-left {
+ left: 1.75em
+}
+
+.mbsc-windows.mbsc-switch-track:after,
+.mbsc-windows.mbsc-switch-track:before {
+ border: .125em solid transparent;
+ content: "";
+ position: absolute;
+ z-index: 1
+}
+
+.mbsc-windows.mbsc-switch-track:before {
+ border-radius: .625em;
+ bottom: -.125em;
+ left: -.625em;
+ right: -.625em;
+ top: -.125em;
+ transition: background-color .2s ease-in-out, border .2s ease-in-out
+}
+
+.mbsc-windows.mbsc-switch-track:after {
+ border-radius: .75em;
+ bottom: -.25em;
+ left: -.75em;
+ right: -.75em;
+ top: -.25em
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-disabled {
+ opacity: .2
+}
+
+.mbsc-windows.mbsc-switch-handle {
+ border-radius: 10px;
+ height: .625em;
+ left: 50%;
+ margin: -.3125em 0 0 -.3125em;
+ right: auto;
+ top: 50%;
+ width: .625em;
+ z-index: 2
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-switch-primary.mbsc-checked:before {
+ background: #3f97f6;
+ border-color: #3f97f6
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-switch-secondary.mbsc-checked:before {
+ background: #90979e;
+ border-color: #90979e
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-switch-success.mbsc-checked:before {
+ background: #43be5f;
+ border-color: #43be5f
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-switch-danger.mbsc-checked:before {
+ background: #f5504e;
+ border-color: #f5504e
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-switch-warning.mbsc-checked:before {
+ background: #f8b042;
+ border-color: #f8b042
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-switch-info.mbsc-checked:before {
+ background: #5bb7c5;
+ border-color: #5bb7c5
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-checked:before {
+ background: #0078d7;
+ border-color: #0078d7
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-disabled:before,
+.mbsc-windows.mbsc-switch-track:before {
+ background: none;
+ border-color: #333
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-active:before {
+ background: #737373;
+ border-color: #737373
+}
+
+.mbsc-windows.mbsc-switch-track.mbsc-focus:after {
+ border-color: #a6a6a6
+}
+
+.mbsc-windows.mbsc-switch-handle {
+ background: #333
+}
+
+.mbsc-windows.mbsc-switch-handle.mbsc-checked {
+ background: #fff
+}
+
+.mbsc-windows.mbsc-switch-handle.mbsc-disabled {
+ background: #333
+}
+
+.mbsc-windows-dark.mbsc-switch-track.mbsc-checked:before {
+ background: #0078d7;
+ border-color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-switch-track.mbsc-disabled:before,
+.mbsc-windows-dark.mbsc-switch-track:before {
+ background: none;
+ border-color: #fff
+}
+
+.mbsc-windows-dark.mbsc-switch-track.mbsc-active:before {
+ background: #a6a6a6;
+ border-color: #a6a6a6
+}
+
+.mbsc-windows-dark.mbsc-switch-track.mbsc-focus:after {
+ border-color: #8c8c8c
+}
+
+.mbsc-windows-dark.mbsc-switch-handle {
+ background: #fff
+}
+
+.mbsc-windows-dark.mbsc-switch-handle.mbsc-checked {
+ background: #1a1a1a
+}
+
+.mbsc-windows-dark.mbsc-switch-handle.mbsc-disabled {
+ background: #fff
+}
+
+.mbsc-switch {
+ display: block;
+ line-height: 1.25em;
+ margin: 0;
+ position: relative;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none
+}
+
+.mbsc-switch-track {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: block;
+ position: absolute;
+ top: 50%;
+ z-index: 4
+}
+
+.mbsc-switch-handle {
+ cursor: pointer;
+ display: block;
+ position: absolute
+}
+
+.mbsc-switch-handle.mbsc-disabled {
+ cursor: not-allowed
+}
+
+.mbsc-switch-handle-animate {
+ transition: left .1s ease-in-out
+}
+
+.mbsc-description {
+ display: block;
+ font-size: .75em;
+ opacity: .6
+}
+
+.mbsc-ios.mbsc-select-scroller-inline {
+ border-bottom: 1px solid;
+ border-top: 1px solid;
+ margin-bottom: -1px;
+ margin-top: -1px
+}
+
+.mbsc-ios.mbsc-select-group-wheel-multi .mbsc-scroller-wheel-cont-3d {
+ visibility: hidden
+}
+
+.mbsc-ios.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-select-group-wheel.mbsc-ltr {
+ border-right-style: solid;
+ border-right-width: 1px
+}
+
+.mbsc-ios.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-select-group-wheel.mbsc-rtl {
+ border-left-style: solid;
+ border-left-width: 1px
+}
+
+.mbsc-ios.mbsc-select-filter-cont {
+ padding: .5em
+}
+
+.mbsc-ios.mbsc-select-filter {
+ margin: 0
+}
+
+.mbsc-ios.mbsc-select-filter-input {
+ height: 2em
+}
+
+.mbsc-ios.mbsc-select-empty-text {
+ font-size: 1.25em
+}
+
+.mbsc-ios.mbsc-select-scroller-inline {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-select-filter-cont {
+ background-color: #f2f2f7
+}
+
+.mbsc-ios.mbsc-select-filter-clear {
+ color: #ccc
+}
+
+.mbsc-ios.mbsc-select-filter-clear:hover {
+ color: #b2b2b2
+}
+
+.mbsc-ios.mbsc-select-empty-text {
+ color: #9e9e9e
+}
+
+.mbsc-ios.mbsc-select-group-wheel {
+ border-color: #ccc
+}
+
+.mbsc-ios.mbsc-select-group-wheel-multi .mbsc-scroller-wheel-item-3d {
+ color: #000
+}
+
+.mbsc-ios.mbsc-select-group-wheel-multi .mbsc-selected-3d {
+ color: #007aff
+}
+
+.mbsc-ios-dark.mbsc-select-scroller-inline {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-select-filter-cont {
+ background-color: #1c1c1c
+}
+
+.mbsc-ios-dark.mbsc-select-filter-clear {
+ color: #404040
+}
+
+.mbsc-ios-dark.mbsc-select-filter-clear:hover {
+ color: #4d4d4d
+}
+
+.mbsc-ios-dark.mbsc-select-empty-text {
+ color: #9e9e9e
+}
+
+.mbsc-ios-dark.mbsc-select-group-wheel {
+ border-color: #333
+}
+
+.mbsc-ios-dark.mbsc-select-group-wheel-multi .mbsc-scroller-wheel-item-3d {
+ color: #fff
+}
+
+.mbsc-ios-dark.mbsc-select-group-wheel-multi .mbsc-selected-3d {
+ color: #ff9f0a
+}
+
+.mbsc-material.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-cont:after,
+.mbsc-material.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-cont:before {
+ display: none
+}
+
+.mbsc-material.mbsc-select-filter {
+ margin: 0
+}
+
+.mbsc-material.mbsc-select-empty-text {
+ font-size: 1.375em;
+ opacity: .5
+}
+
+.mbsc-material.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #303030
+}
+
+.mbsc-material.mbsc-select-filter-clear {
+ color: #b0b0b0
+}
+
+.mbsc-material.mbsc-select-filter-clear:hover {
+ color: #7d7d7d
+}
+
+.mbsc-material.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ background: rgba(0, 0, 0, .15);
+ color: #1a73e8
+}
+
+.mbsc-material.mbsc-select-group-wheel-multi .mbsc-selected {
+ color: #1a73e8
+}
+
+.mbsc-material-dark.mbsc-select-scroller-inline {
+ background-color: #000;
+ color: #fff
+}
+
+.mbsc-material-dark.mbsc-select-filter-clear {
+ color: gray
+}
+
+.mbsc-material-dark.mbsc-select-filter-clear:hover {
+ color: #b3b3b3
+}
+
+.mbsc-material-dark.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ background: rgba(0, 0, 0, .15);
+ color: #87b0f3
+}
+
+.mbsc-material-dark.mbsc-select-group-wheel-multi .mbsc-selected {
+ color: #87b0f3
+}
+
+.mbsc-windows.mbsc-select-filter {
+ margin: .5em
+}
+
+.mbsc-windows.mbsc-select-empty-text {
+ font-size: 1.5em;
+ opacity: .6
+}
+
+.mbsc-windows.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #333
+}
+
+.mbsc-windows.mbsc-select-group-wheel-multi .mbsc-selected,
+.mbsc-windows.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #0078d7
+}
+
+.mbsc-windows-dark.mbsc-select-scroller-inline {
+ background-color: #1a1a1a;
+ color: #fff
+}
+
+.mbsc-windows-dark.mbsc-select-group-wheel-multi .mbsc-selected,
+.mbsc-windows-dark.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #0078d7
+}
+
+.mbsc-select-scroller .mbsc-scroller-wheel-wrapper {
+ -moz-box-flex: 1;
+ flex: 1 1 auto
+}
+
+.mbsc-select-filter-cont {
+ position: relative
+}
+
+.mbsc-select-filter-clear {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ cursor: pointer;
+ height: 1em;
+ margin-top: -1em;
+ padding: .5em;
+ position: absolute;
+ top: 50%;
+ width: 1em
+}
+
+.mbsc-select-filter-clear.mbsc-rtl {
+ left: .5em;
+ right: auto
+}
+
+.mbsc-select-filter-clear.mbsc-ltr {
+ left: auto;
+ right: .5em
+}
+
+.mbsc-select-empty .mbsc-scroller-wheel-group-cont {
+ visibility: hidden
+}
+
+.mbsc-select-empty-text {
+ -moz-box-pack: center;
+ -moz-box-align: center;
+ align-items: center;
+ bottom: 0;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0
+}
+
+.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-ltr {
+ text-align: left
+}
+
+.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-rtl {
+ text-align: right
+}
+
+.mbsc-grid,
+.mbsc-grid-fixed,
+.mbsc-grid-unresp {
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 1em;
+ padding-right: 1em;
+ width: 100%
+}
+
+.mbsc-grid,
+.mbsc-grid *,
+.mbsc-grid-fixed,
+.mbsc-grid-fixed *,
+.mbsc-grid-unresp,
+.mbsc-grid-unresp * {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+.mbsc-form-grid {
+ margin-bottom: .75em;
+ margin-top: .75em
+}
+
+.mbsc-form-grid .mbsc-col,
+.mbsc-form-grid [class*=mbsc-col-],
+.mbsc-no-padding .mbsc-col,
+.mbsc-no-padding [class*=mbsc-col-] {
+ padding-left: 0;
+ padding-right: 0
+}
+
+.mbsc-row {
+ display: -moz-box;
+ display: flex;
+ flex-wrap: wrap;
+ margin-left: -1em;
+ margin-right: -1em
+}
+
+.mbsc-col {
+ -moz-box-flex: 1;
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%
+}
+
+.mbsc-col,
+.mbsc-col-1,
+.mbsc-col-10,
+.mbsc-col-11,
+.mbsc-col-12,
+.mbsc-col-2,
+.mbsc-col-3,
+.mbsc-col-4,
+.mbsc-col-5,
+.mbsc-col-6,
+.mbsc-col-7,
+.mbsc-col-8,
+.mbsc-col-9,
+.mbsc-col-auto,
+.mbsc-col-lg,
+.mbsc-col-lg-1,
+.mbsc-col-lg-10,
+.mbsc-col-lg-11,
+.mbsc-col-lg-12,
+.mbsc-col-lg-2,
+.mbsc-col-lg-3,
+.mbsc-col-lg-4,
+.mbsc-col-lg-5,
+.mbsc-col-lg-6,
+.mbsc-col-lg-7,
+.mbsc-col-lg-8,
+.mbsc-col-lg-9,
+.mbsc-col-lg-auto,
+.mbsc-col-md,
+.mbsc-col-md-1,
+.mbsc-col-md-10,
+.mbsc-col-md-11,
+.mbsc-col-md-12,
+.mbsc-col-md-2,
+.mbsc-col-md-3,
+.mbsc-col-md-4,
+.mbsc-col-md-5,
+.mbsc-col-md-6,
+.mbsc-col-md-7,
+.mbsc-col-md-8,
+.mbsc-col-md-9,
+.mbsc-col-md-auto,
+.mbsc-col-sm,
+.mbsc-col-sm-1,
+.mbsc-col-sm-10,
+.mbsc-col-sm-11,
+.mbsc-col-sm-12,
+.mbsc-col-sm-2,
+.mbsc-col-sm-3,
+.mbsc-col-sm-4,
+.mbsc-col-sm-5,
+.mbsc-col-sm-6,
+.mbsc-col-sm-7,
+.mbsc-col-sm-8,
+.mbsc-col-sm-9,
+.mbsc-col-sm-auto,
+.mbsc-col-xl,
+.mbsc-col-xl-1,
+.mbsc-col-xl-10,
+.mbsc-col-xl-11,
+.mbsc-col-xl-12,
+.mbsc-col-xl-2,
+.mbsc-col-xl-3,
+.mbsc-col-xl-4,
+.mbsc-col-xl-5,
+.mbsc-col-xl-6,
+.mbsc-col-xl-7,
+.mbsc-col-xl-8,
+.mbsc-col-xl-9,
+.mbsc-col-xl-auto {
+ min-height: 1px;
+ padding-left: 1em;
+ padding-right: 1em;
+ position: relative;
+ width: 100%
+}
+
+.mbsc-col-1 {
+ -moz-box-flex: 0;
+ flex: 0 0 8.333333%;
+ max-width: 8.333333%
+}
+
+.mbsc-col-2 {
+ -moz-box-flex: 0;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%
+}
+
+.mbsc-col-3 {
+ -moz-box-flex: 0;
+ flex: 0 0 25%;
+ max-width: 25%
+}
+
+.mbsc-col-4 {
+ -moz-box-flex: 0;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%
+}
+
+.mbsc-col-5 {
+ -moz-box-flex: 0;
+ flex: 0 0 41.666667%;
+ max-width: 41.666667%
+}
+
+.mbsc-col-6 {
+ -moz-box-flex: 0;
+ flex: 0 0 50%;
+ max-width: 50%
+}
+
+.mbsc-col-7 {
+ -moz-box-flex: 0;
+ flex: 0 0 58.333333%;
+ max-width: 58.333333%
+}
+
+.mbsc-col-8 {
+ -moz-box-flex: 0;
+ flex: 0 0 66.666667%;
+ max-width: 66.666667%
+}
+
+.mbsc-col-9 {
+ -moz-box-flex: 0;
+ flex: 0 0 75%;
+ max-width: 75%
+}
+
+.mbsc-col-10 {
+ -moz-box-flex: 0;
+ flex: 0 0 83.333333%;
+ max-width: 83.333333%
+}
+
+.mbsc-col-11 {
+ -moz-box-flex: 0;
+ flex: 0 0 91.666667%;
+ max-width: 91.666667%
+}
+
+.mbsc-col-12 {
+ -moz-box-flex: 0;
+ flex: 0 0 100%;
+ max-width: 100%
+}
+
+.mbsc-col-auto {
+ -moz-box-flex: 0;
+ flex: 0 0 auto;
+ max-width: none;
+ width: auto
+}
+
+.mbsc-offset-1 {
+ margin-left: 8.333333%
+}
+
+.mbsc-offset-2 {
+ margin-left: 16.666667%
+}
+
+.mbsc-offset-3 {
+ margin-left: 25%
+}
+
+.mbsc-offset-4 {
+ margin-left: 33.333333%
+}
+
+.mbsc-offset-5 {
+ margin-left: 41.666667%
+}
+
+.mbsc-offset-6 {
+ margin-left: 50%
+}
+
+.mbsc-offset-7 {
+ margin-left: 58.333333%
+}
+
+.mbsc-offset-8 {
+ margin-left: 66.666667%
+}
+
+.mbsc-offset-9 {
+ margin-left: 75%
+}
+
+.mbsc-offset-10 {
+ margin-left: 83.333333%
+}
+
+.mbsc-offset-11 {
+ margin-left: 91.666667%
+}
+
+@media (min-width:576px) {
+ .mbsc-grid.mbsc-grid-fixed {
+ max-width: 540px
+ }
+
+ .mbsc-grid .mbsc-col-sm {
+ -moz-box-flex: 1;
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-col-sm-auto {
+ -moz-box-flex: 0;
+ flex: 0 0 auto;
+ max-width: none;
+ width: auto
+ }
+
+ .mbsc-grid .mbsc-col-sm-1 {
+ -moz-box-flex: 0;
+ flex: 0 0 8.333333%;
+ max-width: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-col-sm-2 {
+ -moz-box-flex: 0;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-col-sm-3 {
+ -moz-box-flex: 0;
+ flex: 0 0 25%;
+ max-width: 25%
+ }
+
+ .mbsc-grid .mbsc-col-sm-4 {
+ -moz-box-flex: 0;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-col-sm-5 {
+ -moz-box-flex: 0;
+ flex: 0 0 41.666667%;
+ max-width: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-col-sm-6 {
+ -moz-box-flex: 0;
+ flex: 0 0 50%;
+ max-width: 50%
+ }
+
+ .mbsc-grid .mbsc-col-sm-7 {
+ -moz-box-flex: 0;
+ flex: 0 0 58.333333%;
+ max-width: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-col-sm-8 {
+ -moz-box-flex: 0;
+ flex: 0 0 66.666667%;
+ max-width: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-col-sm-9 {
+ -moz-box-flex: 0;
+ flex: 0 0 75%;
+ max-width: 75%
+ }
+
+ .mbsc-grid .mbsc-col-sm-10 {
+ -moz-box-flex: 0;
+ flex: 0 0 83.333333%;
+ max-width: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-col-sm-11 {
+ -moz-box-flex: 0;
+ flex: 0 0 91.666667%;
+ max-width: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-col-sm-12 {
+ -moz-box-flex: 0;
+ flex: 0 0 100%;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-0 {
+ margin-left: 0
+ }
+
+ .mbsc-grid .mbsc-offset-sm-1 {
+ margin-left: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-2 {
+ margin-left: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-3 {
+ margin-left: 25%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-4 {
+ margin-left: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-5 {
+ margin-left: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-6 {
+ margin-left: 50%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-7 {
+ margin-left: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-8 {
+ margin-left: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-9 {
+ margin-left: 75%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-10 {
+ margin-left: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-sm-11 {
+ margin-left: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-push-sm-0 {
+ left: auto
+ }
+
+ .mbsc-grid .mbsc-push-sm-1 {
+ left: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-sm-2 {
+ left: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-sm-3 {
+ left: 25%
+ }
+
+ .mbsc-grid .mbsc-push-sm-4 {
+ left: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-sm-5 {
+ left: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-sm-6 {
+ left: 50%
+ }
+
+ .mbsc-grid .mbsc-push-sm-7 {
+ left: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-sm-8 {
+ left: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-sm-9 {
+ left: 75%
+ }
+
+ .mbsc-grid .mbsc-push-sm-10 {
+ left: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-sm-11 {
+ left: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-sm-12 {
+ left: 100%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-0 {
+ right: auto
+ }
+
+ .mbsc-grid .mbsc-pull-sm-1 {
+ right: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-2 {
+ right: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-3 {
+ right: 25%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-4 {
+ right: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-5 {
+ right: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-6 {
+ right: 50%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-7 {
+ right: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-8 {
+ right: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-9 {
+ right: 75%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-10 {
+ right: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-11 {
+ right: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-sm-12 {
+ right: 100%
+ }
+}
+
+@media (min-width:768px) {
+ .mbsc-grid.mbsc-grid-fixed {
+ max-width: 720px
+ }
+
+ .mbsc-grid .mbsc-col-md {
+ -moz-box-flex: 1;
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-col-md-auto {
+ -moz-box-flex: 0;
+ flex: 0 0 auto;
+ max-width: none;
+ width: auto
+ }
+
+ .mbsc-grid .mbsc-col-md-1 {
+ -moz-box-flex: 0;
+ flex: 0 0 8.333333%;
+ max-width: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-col-md-2 {
+ -moz-box-flex: 0;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-col-md-3 {
+ -moz-box-flex: 0;
+ flex: 0 0 25%;
+ max-width: 25%
+ }
+
+ .mbsc-grid .mbsc-col-md-4 {
+ -moz-box-flex: 0;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-col-md-5 {
+ -moz-box-flex: 0;
+ flex: 0 0 41.666667%;
+ max-width: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-col-md-6 {
+ -moz-box-flex: 0;
+ flex: 0 0 50%;
+ max-width: 50%
+ }
+
+ .mbsc-grid .mbsc-col-md-7 {
+ -moz-box-flex: 0;
+ flex: 0 0 58.333333%;
+ max-width: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-col-md-8 {
+ -moz-box-flex: 0;
+ flex: 0 0 66.666667%;
+ max-width: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-col-md-9 {
+ -moz-box-flex: 0;
+ flex: 0 0 75%;
+ max-width: 75%
+ }
+
+ .mbsc-grid .mbsc-col-md-10 {
+ -moz-box-flex: 0;
+ flex: 0 0 83.333333%;
+ max-width: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-col-md-11 {
+ -moz-box-flex: 0;
+ flex: 0 0 91.666667%;
+ max-width: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-col-md-12 {
+ -moz-box-flex: 0;
+ flex: 0 0 100%;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-offset-md-0 {
+ margin-left: 0
+ }
+
+ .mbsc-grid .mbsc-offset-md-1 {
+ margin-left: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-md-2 {
+ margin-left: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-md-3 {
+ margin-left: 25%
+ }
+
+ .mbsc-grid .mbsc-offset-md-4 {
+ margin-left: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-md-5 {
+ margin-left: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-md-6 {
+ margin-left: 50%
+ }
+
+ .mbsc-grid .mbsc-offset-md-7 {
+ margin-left: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-md-8 {
+ margin-left: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-md-9 {
+ margin-left: 75%
+ }
+
+ .mbsc-grid .mbsc-offset-md-10 {
+ margin-left: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-md-11 {
+ margin-left: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-push-md-0 {
+ left: auto
+ }
+
+ .mbsc-grid .mbsc-push-md-1 {
+ left: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-md-2 {
+ left: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-md-3 {
+ left: 25%
+ }
+
+ .mbsc-grid .mbsc-push-md-4 {
+ left: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-md-5 {
+ left: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-md-6 {
+ left: 50%
+ }
+
+ .mbsc-grid .mbsc-push-md-7 {
+ left: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-md-8 {
+ left: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-md-9 {
+ left: 75%
+ }
+
+ .mbsc-grid .mbsc-push-md-10 {
+ left: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-md-11 {
+ left: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-md-12 {
+ left: 100%
+ }
+
+ .mbsc-grid .mbsc-pull-md-0 {
+ right: auto
+ }
+
+ .mbsc-grid .mbsc-pull-md-1 {
+ right: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-md-2 {
+ right: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-md-3 {
+ right: 25%
+ }
+
+ .mbsc-grid .mbsc-pull-md-4 {
+ right: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-md-5 {
+ right: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-md-6 {
+ right: 50%
+ }
+
+ .mbsc-grid .mbsc-pull-md-7 {
+ right: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-md-8 {
+ right: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-md-9 {
+ right: 75%
+ }
+
+ .mbsc-grid .mbsc-pull-md-10 {
+ right: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-md-11 {
+ right: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-md-12 {
+ right: 100%
+ }
+}
+
+@media (min-width:992px) {
+ .mbsc-grid.mbsc-grid-fixed {
+ max-width: 960px
+ }
+
+ .mbsc-grid .mbsc-col-lg {
+ -moz-box-flex: 1;
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-col-lg-auto {
+ -moz-box-flex: 0;
+ flex: 0 0 auto;
+ max-width: none;
+ width: auto
+ }
+
+ .mbsc-grid .mbsc-col-lg-1 {
+ -moz-box-flex: 0;
+ flex: 0 0 8.333333%;
+ max-width: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-col-lg-2 {
+ -moz-box-flex: 0;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-col-lg-3 {
+ -moz-box-flex: 0;
+ flex: 0 0 25%;
+ max-width: 25%
+ }
+
+ .mbsc-grid .mbsc-col-lg-4 {
+ -moz-box-flex: 0;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-col-lg-5 {
+ -moz-box-flex: 0;
+ flex: 0 0 41.666667%;
+ max-width: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-col-lg-6 {
+ -moz-box-flex: 0;
+ flex: 0 0 50%;
+ max-width: 50%
+ }
+
+ .mbsc-grid .mbsc-col-lg-7 {
+ -moz-box-flex: 0;
+ flex: 0 0 58.333333%;
+ max-width: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-col-lg-8 {
+ -moz-box-flex: 0;
+ flex: 0 0 66.666667%;
+ max-width: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-col-lg-9 {
+ -moz-box-flex: 0;
+ flex: 0 0 75%;
+ max-width: 75%
+ }
+
+ .mbsc-grid .mbsc-col-lg-10 {
+ -moz-box-flex: 0;
+ flex: 0 0 83.333333%;
+ max-width: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-col-lg-11 {
+ -moz-box-flex: 0;
+ flex: 0 0 91.666667%;
+ max-width: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-col-lg-12 {
+ -moz-box-flex: 0;
+ flex: 0 0 100%;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-0 {
+ margin-left: 0
+ }
+
+ .mbsc-grid .mbsc-offset-lg-1 {
+ margin-left: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-2 {
+ margin-left: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-3 {
+ margin-left: 25%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-4 {
+ margin-left: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-5 {
+ margin-left: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-6 {
+ margin-left: 50%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-7 {
+ margin-left: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-8 {
+ margin-left: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-9 {
+ margin-left: 75%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-10 {
+ margin-left: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-lg-11 {
+ margin-left: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-push-lg-0 {
+ left: auto
+ }
+
+ .mbsc-grid .mbsc-push-lg-1 {
+ left: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-lg-2 {
+ left: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-lg-3 {
+ left: 25%
+ }
+
+ .mbsc-grid .mbsc-push-lg-4 {
+ left: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-lg-5 {
+ left: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-lg-6 {
+ left: 50%
+ }
+
+ .mbsc-grid .mbsc-push-lg-7 {
+ left: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-lg-8 {
+ left: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-lg-9 {
+ left: 75%
+ }
+
+ .mbsc-grid .mbsc-push-lg-10 {
+ left: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-lg-11 {
+ left: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-lg-12 {
+ left: 100%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-0 {
+ right: auto
+ }
+
+ .mbsc-grid .mbsc-pull-lg-1 {
+ right: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-2 {
+ right: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-3 {
+ right: 25%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-4 {
+ right: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-5 {
+ right: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-6 {
+ right: 50%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-7 {
+ right: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-8 {
+ right: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-9 {
+ right: 75%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-10 {
+ right: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-11 {
+ right: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-lg-12 {
+ right: 100%
+ }
+}
+
+@media (min-width:1200px) {
+ .mbsc-grid.mbsc-grid-fixed {
+ max-width: 1140px
+ }
+
+ .mbsc-grid .mbsc-col-xl {
+ -moz-box-flex: 1;
+ flex-basis: 0;
+ flex-grow: 1;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-col-xl-auto {
+ -moz-box-flex: 0;
+ flex: 0 0 auto;
+ max-width: none;
+ width: auto
+ }
+
+ .mbsc-grid .mbsc-col-xl-1 {
+ -moz-box-flex: 0;
+ flex: 0 0 8.333333%;
+ max-width: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-col-xl-2 {
+ -moz-box-flex: 0;
+ flex: 0 0 16.666667%;
+ max-width: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-col-xl-3 {
+ -moz-box-flex: 0;
+ flex: 0 0 25%;
+ max-width: 25%
+ }
+
+ .mbsc-grid .mbsc-col-xl-4 {
+ -moz-box-flex: 0;
+ flex: 0 0 33.333333%;
+ max-width: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-col-xl-5 {
+ -moz-box-flex: 0;
+ flex: 0 0 41.666667%;
+ max-width: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-col-xl-6 {
+ -moz-box-flex: 0;
+ flex: 0 0 50%;
+ max-width: 50%
+ }
+
+ .mbsc-grid .mbsc-col-xl-7 {
+ -moz-box-flex: 0;
+ flex: 0 0 58.333333%;
+ max-width: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-col-xl-8 {
+ -moz-box-flex: 0;
+ flex: 0 0 66.666667%;
+ max-width: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-col-xl-9 {
+ -moz-box-flex: 0;
+ flex: 0 0 75%;
+ max-width: 75%
+ }
+
+ .mbsc-grid .mbsc-col-xl-10 {
+ -moz-box-flex: 0;
+ flex: 0 0 83.333333%;
+ max-width: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-col-xl-11 {
+ -moz-box-flex: 0;
+ flex: 0 0 91.666667%;
+ max-width: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-col-xl-12 {
+ -moz-box-flex: 0;
+ flex: 0 0 100%;
+ max-width: 100%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-0 {
+ margin-left: 0
+ }
+
+ .mbsc-grid .mbsc-offset-xl-1 {
+ margin-left: 8.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-2 {
+ margin-left: 16.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-3 {
+ margin-left: 25%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-4 {
+ margin-left: 33.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-5 {
+ margin-left: 41.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-6 {
+ margin-left: 50%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-7 {
+ margin-left: 58.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-8 {
+ margin-left: 66.666667%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-9 {
+ margin-left: 75%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-10 {
+ margin-left: 83.333333%
+ }
+
+ .mbsc-grid .mbsc-offset-xl-11 {
+ margin-left: 91.666667%
+ }
+
+ .mbsc-grid .mbsc-push-xl-0 {
+ left: auto
+ }
+
+ .mbsc-grid .mbsc-push-xl-1 {
+ left: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-xl-2 {
+ left: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-xl-3 {
+ left: 25%
+ }
+
+ .mbsc-grid .mbsc-push-xl-4 {
+ left: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-xl-5 {
+ left: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-xl-6 {
+ left: 50%
+ }
+
+ .mbsc-grid .mbsc-push-xl-7 {
+ left: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-xl-8 {
+ left: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-xl-9 {
+ left: 75%
+ }
+
+ .mbsc-grid .mbsc-push-xl-10 {
+ left: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-push-xl-11 {
+ left: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-push-xl-12 {
+ left: 100%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-0 {
+ right: auto
+ }
+
+ .mbsc-grid .mbsc-pull-xl-1 {
+ right: 8.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-2 {
+ right: 16.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-3 {
+ right: 25%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-4 {
+ right: 33.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-5 {
+ right: 41.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-6 {
+ right: 50%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-7 {
+ right: 58.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-8 {
+ right: 66.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-9 {
+ right: 75%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-10 {
+ right: 83.33333333%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-11 {
+ right: 91.66666667%
+ }
+
+ .mbsc-grid .mbsc-pull-xl-12 {
+ right: 100%
+ }
+}
+
+.mbsc-align-items-start {
+ -moz-box-align: start !important;
+ align-items: flex-start !important
+}
+
+.mbsc-align-items-center {
+ -moz-box-align: center !important;
+ align-items: center !important
+}
+
+.mbsc-align-items-end {
+ -moz-box-align: end !important;
+ align-items: flex-end !important
+}
+
+.mbsc-justify-content-start {
+ -moz-box-pack: start !important;
+ justify-content: flex-start !important
+}
+
+.mbsc-justify-content-center {
+ -moz-box-pack: center !important;
+ justify-content: center !important
+}
+
+.mbsc-justify-content-end {
+ -moz-box-pack: end !important;
+ justify-content: flex-end !important
+}
+
+.mbsc-justify-content-around {
+ justify-content: space-around !important
+}
+
+.mbsc-justify-content-between {
+ -moz-box-pack: justify !important;
+ justify-content: space-between !important
+}
+
+@font-face {
+ font-family: Mobiscroll;
+ font-style: normal;
+ font-weight: 400;
+ src: url(data:application/x-font-woff;base64,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) format("woff")
+}
+
+.mbsc-font-icon:before {
+ speak: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: Mobiscroll;
+ font-style: normal;
+ font-variant: normal;
+ font-weight: 400;
+ text-transform: none
+}
+
+.mbsc-icon-aid:before {
+ content: "\ea01"
+}
+
+.mbsc-icon-airplane:before {
+ content: "\ea02"
+}
+
+.mbsc-icon-alarm2:before {
+ content: "\ea03"
+}
+
+.mbsc-icon-arrow-down2:before {
+ content: "\ea04"
+}
+
+.mbsc-icon-arrow-down5:before {
+ content: "\ea05"
+}
+
+.mbsc-icon-arrow-left2:before {
+ content: "\ea06"
+}
+
+.mbsc-icon-arrow-left5:before {
+ content: "\ea07"
+}
+
+.mbsc-icon-arrow-right2:before {
+ content: "\ea08"
+}
+
+.mbsc-icon-arrow-right5:before {
+ content: "\ea09"
+}
+
+.mbsc-icon-arrow-up2:before {
+ content: "\ea0a"
+}
+
+.mbsc-icon-arrow-up5:before {
+ content: "\ea0b"
+}
+
+.mbsc-icon-attachment:before {
+ content: "\ea0c"
+}
+
+.mbsc-icon-bars:before {
+ content: "\ea0d"
+}
+
+.mbsc-icon-book:before {
+ content: "\ea0e"
+}
+
+.mbsc-icon-brightness-contrast:before {
+ content: "\ea0f"
+}
+
+.mbsc-icon-bubble:before {
+ content: "\ea10"
+}
+
+.mbsc-icon-bubbles:before {
+ content: "\ea11"
+}
+
+.mbsc-icon-bullhorn:before {
+ content: "\ea12"
+}
+
+.mbsc-icon-calendar:before {
+ content: "\ea13"
+}
+
+.mbsc-icon-camera:before {
+ content: "\ea14"
+}
+
+.mbsc-icon-cart:before {
+ content: "\ea15"
+}
+
+.mbsc-icon-checkmark:before {
+ content: "\ea16"
+}
+
+.mbsc-icon-clock:before {
+ content: "\ea17"
+}
+
+.mbsc-icon-close:before {
+ content: "\ea18"
+}
+
+.mbsc-icon-cloud:before {
+ content: "\ea19"
+}
+
+.mbsc-icon-cloud-download:before {
+ content: "\ea1a"
+}
+
+.mbsc-icon-cloud-upload:before {
+ content: "\ea1b"
+}
+
+.mbsc-icon-cogs:before {
+ content: "\ea1c"
+}
+
+.mbsc-icon-compass:before {
+ content: "\ea1d"
+}
+
+.mbsc-icon-connection:before {
+ content: "\ea1e"
+}
+
+.mbsc-icon-copy2:before {
+ content: "\ea1f"
+}
+
+.mbsc-icon-copy3:before {
+ content: "\ea20"
+}
+
+.mbsc-icon-credit:before {
+ content: "\ea21"
+}
+
+.mbsc-icon-disk:before {
+ content: "\ea22"
+}
+
+.mbsc-icon-download:before {
+ content: "\ea23"
+}
+
+.mbsc-icon-drawer:before {
+ content: "\ea24"
+}
+
+.mbsc-icon-droplet:before {
+ content: "\ea25"
+}
+
+.mbsc-icon-earth:before {
+ content: "\ea26"
+}
+
+.mbsc-icon-eye:before {
+ content: "\ea27"
+}
+
+.mbsc-icon-eye-blocked:before {
+ content: "\ea28"
+}
+
+.mbsc-icon-fa-dollar:before {
+ content: "\ea29"
+}
+
+.mbsc-icon-fa-ellipsis-h:before {
+ content: "\ea2a"
+}
+
+.mbsc-icon-fa-facebook:before {
+ content: "\ea2b"
+}
+
+.mbsc-icon-fa-globe:before {
+ content: "\ea2c"
+}
+
+.mbsc-icon-fa-google:before {
+ content: "\ea2d"
+}
+
+.mbsc-icon-fa-google-plus:before {
+ content: "\ea2e"
+}
+
+.mbsc-icon-fa-leaf:before {
+ content: "\ea2f"
+}
+
+.mbsc-icon-fa-mail-reply:before {
+ content: "\ea30"
+}
+
+.mbsc-icon-fa-retweet:before {
+ content: "\ea31"
+}
+
+.mbsc-icon-fa-rotate-left:before {
+ content: "\ea32"
+}
+
+.mbsc-icon-fa-twitter:before {
+ content: "\ea33"
+}
+
+.mbsc-icon-feed2:before {
+ content: "\ea34"
+}
+
+.mbsc-icon-file4:before {
+ content: "\ea35"
+}
+
+.mbsc-icon-film:before {
+ content: "\ea36"
+}
+
+.mbsc-icon-flag:before {
+ content: "\ea37"
+}
+
+.mbsc-icon-folder:before {
+ content: "\ea38"
+}
+
+.mbsc-icon-forward:before {
+ content: "\ea39"
+}
+
+.mbsc-icon-foundation-mail:before {
+ content: "\ea3a"
+}
+
+.mbsc-icon-foundation-minus-circle:before {
+ content: "\ea3b"
+}
+
+.mbsc-icon-gift:before {
+ content: "\ea3c"
+}
+
+.mbsc-icon-globe:before {
+ content: "\ea3d"
+}
+
+.mbsc-icon-heart:before {
+ content: "\ea3e"
+}
+
+.mbsc-icon-heart2:before {
+ content: "\ea3f"
+}
+
+.mbsc-icon-history:before {
+ content: "\ea40"
+}
+
+.mbsc-icon-home:before {
+ content: "\ea41"
+}
+
+.mbsc-icon-image2:before {
+ content: "\ea42"
+}
+
+.mbsc-icon-ion-android-social-user:before {
+ content: "\ea43"
+}
+
+.mbsc-icon-ion-android-system-windows:before {
+ content: "\ea44"
+}
+
+.mbsc-icon-ion-bluetooth:before {
+ content: "\ea45"
+}
+
+.mbsc-icon-ion-close-circled:before {
+ content: "\ea46"
+}
+
+.mbsc-icon-ion-email:before {
+ content: "\ea47"
+}
+
+.mbsc-icon-ion-ios7-arrow-back:before {
+ content: "\ea48"
+}
+
+.mbsc-icon-ion-ios7-arrow-forward:before {
+ content: "\ea49"
+}
+
+.mbsc-icon-ion-ios7-checkmark-empty:before {
+ content: "\ea4a"
+}
+
+.mbsc-icon-ion-ios7-close-empty:before {
+ content: "\ea4b"
+}
+
+.mbsc-icon-ion-ios7-close-outline:before {
+ content: "\ea4c"
+}
+
+.mbsc-icon-ion-ios7-email:before {
+ content: "\ea4d"
+}
+
+.mbsc-icon-ion-ios7-information-outline:before {
+ content: "\ea4e"
+}
+
+.mbsc-icon-ion-ios7-plus-empty:before {
+ content: "\ea4f"
+}
+
+.mbsc-icon-ion-iphone:before {
+ content: "\ea50"
+}
+
+.mbsc-icon-ion-navigate:before {
+ content: "\ea51"
+}
+
+.mbsc-icon-ion-social-facebook:before {
+ content: "\ea52"
+}
+
+.mbsc-icon-ion-usb:before {
+ content: "\ea53"
+}
+
+.mbsc-icon-key2:before {
+ content: "\ea54"
+}
+
+.mbsc-icon-library:before {
+ content: "\ea55"
+}
+
+.mbsc-icon-line-bubble:before {
+ content: "\ea56"
+}
+
+.mbsc-icon-line-calendar:before {
+ content: "\ea57"
+}
+
+.mbsc-icon-line-food:before {
+ content: "\ea58"
+}
+
+.mbsc-icon-line-heart:before {
+ content: "\ea59"
+}
+
+.mbsc-icon-line-key:before {
+ content: "\ea5a"
+}
+
+.mbsc-icon-line-mail:before {
+ content: "\ea5b"
+}
+
+.mbsc-icon-line-megaphone:before {
+ content: "\ea5c"
+}
+
+.mbsc-icon-line-music:before {
+ content: "\ea5d"
+}
+
+.mbsc-icon-line-note:before {
+ content: "\ea5e"
+}
+
+.mbsc-icon-line-paperplane:before {
+ content: "\ea5f"
+}
+
+.mbsc-icon-line-params:before {
+ content: "\ea60"
+}
+
+.mbsc-icon-line-phone:before {
+ content: "\ea61"
+}
+
+.mbsc-icon-line-settings:before {
+ content: "\ea62"
+}
+
+.mbsc-icon-line-star:before {
+ content: "\ea63"
+}
+
+.mbsc-icon-line-t-shirt:before {
+ content: "\ea64"
+}
+
+.mbsc-icon-line-tag:before {
+ content: "\ea65"
+}
+
+.mbsc-icon-line-user:before {
+ content: "\ea66"
+}
+
+.mbsc-icon-line-world:before {
+ content: "\ea67"
+}
+
+.mbsc-icon-link:before {
+ content: "\ea68"
+}
+
+.mbsc-icon-location:before {
+ content: "\ea69"
+}
+
+.mbsc-icon-lock:before {
+ content: "\ea6a"
+}
+
+.mbsc-icon-lock2:before {
+ content: "\ea6b"
+}
+
+.mbsc-icon-loop2:before {
+ content: "\ea6c"
+}
+
+.mbsc-icon-map:before {
+ content: "\ea6d"
+}
+
+.mbsc-icon-material-arrow-back:before {
+ content: "\ea6e"
+}
+
+.mbsc-icon-material-arrow-forward:before {
+ content: "\ea6f"
+}
+
+.mbsc-icon-material-backspace:before {
+ content: "\ea70"
+}
+
+.mbsc-icon-material-brightness-medium:before {
+ content: "\ea71"
+}
+
+.mbsc-icon-material-check:before {
+ content: "\ea72"
+}
+
+.mbsc-icon-material-check-box-outline-blank:before {
+ content: "\ea73"
+}
+
+.mbsc-icon-material-close:before {
+ content: "\ea74"
+}
+
+.mbsc-icon-material-crop:before {
+ content: "\ea75"
+}
+
+.mbsc-icon-material-date-range:before {
+ content: "\ea76"
+}
+
+.mbsc-icon-material-email:before {
+ content: "\ea77"
+}
+
+.mbsc-icon-material-equalizer:before {
+ content: "\ea78"
+}
+
+.mbsc-icon-material-event-note:before {
+ content: "\ea79"
+}
+
+.mbsc-icon-material-explore:before {
+ content: "\ea7a"
+}
+
+.mbsc-icon-material-filter:before {
+ content: "\ea7b"
+}
+
+.mbsc-icon-material-filter-list:before {
+ content: "\ea7c"
+}
+
+.mbsc-icon-material-format-bold:before {
+ content: "\ea7d"
+}
+
+.mbsc-icon-material-format-ital:before {
+ content: "\ea7e"
+}
+
+.mbsc-icon-material-format-list-numbered:before {
+ content: "\ea7f"
+}
+
+.mbsc-icon-material-format-paint:before {
+ content: "\ea80"
+}
+
+.mbsc-icon-material-format-underline:before {
+ content: "\ea81"
+}
+
+.mbsc-icon-material-inbox:before {
+ content: "\ea82"
+}
+
+.mbsc-icon-material-iso:before {
+ content: "\ea83"
+}
+
+.mbsc-icon-material-keyboard-arrow-down:before {
+ content: "\ea84"
+}
+
+.mbsc-icon-material-keyboard-arrow-left:before {
+ content: "\ea85"
+}
+
+.mbsc-icon-material-keyboard-arrow-right:before {
+ content: "\ea86"
+}
+
+.mbsc-icon-material-keyboard-arrow-up:before {
+ content: "\ea87"
+}
+
+.mbsc-icon-material-label:before {
+ content: "\ea88"
+}
+
+.mbsc-icon-material-language:before {
+ content: "\ea89"
+}
+
+.mbsc-icon-material-list:before {
+ content: "\ea8a"
+}
+
+.mbsc-icon-material-menu:before {
+ content: "\ea8b"
+}
+
+.mbsc-icon-material-message:before {
+ content: "\ea8c"
+}
+
+.mbsc-icon-material-more-horiz:before {
+ content: "\ea8d"
+}
+
+.mbsc-icon-material-music-note:before {
+ content: "\ea8e"
+}
+
+.mbsc-icon-material-notifications:before {
+ content: "\ea8f"
+}
+
+.mbsc-icon-material-palette:before {
+ content: "\ea90"
+}
+
+.mbsc-icon-material-pause:before {
+ content: "\ea91"
+}
+
+.mbsc-icon-material-people:before {
+ content: "\ea92"
+}
+
+.mbsc-icon-material-phone-iphone:before {
+ content: "\ea93"
+}
+
+.mbsc-icon-material-photo-size-select-large:before {
+ content: "\ea94"
+}
+
+.mbsc-icon-material-play-arrow:before {
+ content: "\ea95"
+}
+
+.mbsc-icon-material-repeat:before {
+ content: "\ea96"
+}
+
+.mbsc-icon-material-rotate-right:before {
+ content: "\ea97"
+}
+
+.mbsc-icon-material-search:before {
+ content: "\ea98"
+}
+
+.mbsc-icon-material-share:before {
+ content: "\ea99"
+}
+
+.mbsc-icon-material-shuffle:before {
+ content: "\ea9a"
+}
+
+.mbsc-icon-material-skip-next:before {
+ content: "\ea9b"
+}
+
+.mbsc-icon-material-skip-previous:before {
+ content: "\ea9c"
+}
+
+.mbsc-icon-material-star:before {
+ content: "\ea9d"
+}
+
+.mbsc-icon-material-star-outline:before {
+ content: "\ea9e"
+}
+
+.mbsc-icon-material-stop:before {
+ content: "\ea9f"
+}
+
+.mbsc-icon-material-system-update:before {
+ content: "\eaa0"
+}
+
+.mbsc-icon-material-texture:before {
+ content: "\eaa1"
+}
+
+.mbsc-icon-material-today:before {
+ content: "\eaa2"
+}
+
+.mbsc-icon-material-tune:before {
+ content: "\eaa3"
+}
+
+.mbsc-icon-material-tv:before {
+ content: "\eaa4"
+}
+
+.mbsc-icon-material-vertical-align-bottom:before {
+ content: "\eaa5"
+}
+
+.mbsc-icon-material-view-day:before {
+ content: "\eaa6"
+}
+
+.mbsc-icon-material-wb-auto:before {
+ content: "\eaa7"
+}
+
+.mbsc-icon-material-zoom-in:before {
+ content: "\eaa8"
+}
+
+.mbsc-icon-material-zoom-out:before {
+ content: "\eaa9"
+}
+
+.mbsc-icon-meteo-Celsius:before {
+ content: "\eaaa"
+}
+
+.mbsc-icon-meteo-Fahrenheit:before {
+ content: "\eaab"
+}
+
+.mbsc-icon-meteo-cloud:before {
+ content: "\eaac"
+}
+
+.mbsc-icon-meteo-cloud2:before {
+ content: "\eaad"
+}
+
+.mbsc-icon-meteo-cloud3:before {
+ content: "\eaae"
+}
+
+.mbsc-icon-meteo-cloud4:before {
+ content: "\eaaf"
+}
+
+.mbsc-icon-meteo-cloud5:before {
+ content: "\eab0"
+}
+
+.mbsc-icon-meteo-cloudy:before {
+ content: "\eab1"
+}
+
+.mbsc-icon-meteo-cloudy2:before {
+ content: "\eab2"
+}
+
+.mbsc-icon-meteo-cloudy3:before {
+ content: "\eab3"
+}
+
+.mbsc-icon-meteo-cloudy4:before {
+ content: "\eab4"
+}
+
+.mbsc-icon-meteo-compass:before {
+ content: "\eab5"
+}
+
+.mbsc-icon-meteo-lightning:before {
+ content: "\eab6"
+}
+
+.mbsc-icon-meteo-lightning2:before {
+ content: "\eab7"
+}
+
+.mbsc-icon-meteo-lightning3:before {
+ content: "\eab8"
+}
+
+.mbsc-icon-meteo-lightning4:before {
+ content: "\eab9"
+}
+
+.mbsc-icon-meteo-lightning5:before {
+ content: "\eaba"
+}
+
+.mbsc-icon-meteo-lines:before {
+ content: "\eabb"
+}
+
+.mbsc-icon-meteo-moon:before {
+ content: "\eabc"
+}
+
+.mbsc-icon-meteo-moon2:before {
+ content: "\eabd"
+}
+
+.mbsc-icon-meteo-none:before {
+ content: "\eabe"
+}
+
+.mbsc-icon-meteo-rainy:before {
+ content: "\eabf"
+}
+
+.mbsc-icon-meteo-rainy2:before {
+ content: "\eac0"
+}
+
+.mbsc-icon-meteo-rainy3:before {
+ content: "\eac1"
+}
+
+.mbsc-icon-meteo-rainy4:before {
+ content: "\eac2"
+}
+
+.mbsc-icon-meteo-snowflake:before {
+ content: "\eac3"
+}
+
+.mbsc-icon-meteo-snowy:before {
+ content: "\eac4"
+}
+
+.mbsc-icon-meteo-snowy2:before {
+ content: "\eac5"
+}
+
+.mbsc-icon-meteo-snowy3:before {
+ content: "\eac6"
+}
+
+.mbsc-icon-meteo-snowy4:before {
+ content: "\eac7"
+}
+
+.mbsc-icon-meteo-snowy5:before {
+ content: "\eac8"
+}
+
+.mbsc-icon-meteo-sun:before {
+ content: "\eac9"
+}
+
+.mbsc-icon-meteo-sun2:before {
+ content: "\eaca"
+}
+
+.mbsc-icon-meteo-sun3:before {
+ content: "\eacb"
+}
+
+.mbsc-icon-meteo-sunrise:before {
+ content: "\eacc"
+}
+
+.mbsc-icon-meteo-thermometer:before {
+ content: "\eacd"
+}
+
+.mbsc-icon-meteo-weather:before {
+ content: "\eace"
+}
+
+.mbsc-icon-meteo-weather2:before {
+ content: "\eacf"
+}
+
+.mbsc-icon-meteo-weather3:before {
+ content: "\ead0"
+}
+
+.mbsc-icon-meteo-weather4:before {
+ content: "\ead1"
+}
+
+.mbsc-icon-meteo-weather5:before {
+ content: "\ead2"
+}
+
+.mbsc-icon-meteo-wind:before {
+ content: "\ead3"
+}
+
+.mbsc-icon-meteo-windy:before {
+ content: "\ead4"
+}
+
+.mbsc-icon-meteo-windy2:before {
+ content: "\ead5"
+}
+
+.mbsc-icon-meteo-windy3:before {
+ content: "\ead6"
+}
+
+.mbsc-icon-meteo-windy4:before {
+ content: "\ead7"
+}
+
+.mbsc-icon-meteo-windy5:before {
+ content: "\ead8"
+}
+
+.mbsc-icon-minus:before {
+ content: "\ead9"
+}
+
+.mbsc-icon-mobile:before {
+ content: "\eada"
+}
+
+.mbsc-icon-music:before {
+ content: "\eadb"
+}
+
+.mbsc-icon-neutral:before {
+ content: "\eadc"
+}
+
+.mbsc-icon-newspaper:before {
+ content: "\eadd"
+}
+
+.mbsc-icon-office:before {
+ content: "\eade"
+}
+
+.mbsc-icon-pause2:before {
+ content: "\eadf"
+}
+
+.mbsc-icon-pencil:before {
+ content: "\eae0"
+}
+
+.mbsc-icon-phone:before {
+ content: "\eae1"
+}
+
+.mbsc-icon-play:before {
+ content: "\eae2"
+}
+
+.mbsc-icon-play3:before {
+ content: "\eae3"
+}
+
+.mbsc-icon-plus:before {
+ content: "\eae4"
+}
+
+.mbsc-icon-print:before {
+ content: "\eae5"
+}
+
+.mbsc-icon-redo2:before {
+ content: "\eae6"
+}
+
+.mbsc-icon-remove:before {
+ content: "\eae7"
+}
+
+.mbsc-icon-reply:before {
+ content: "\eae8"
+}
+
+.mbsc-icon-sad:before {
+ content: "\eae9"
+}
+
+.mbsc-icon-sad2:before {
+ content: "\eaea"
+}
+
+.mbsc-icon-share:before {
+ content: "\eaeb"
+}
+
+.mbsc-icon-smiley:before {
+ content: "\eaec"
+}
+
+.mbsc-icon-smiley2:before {
+ content: "\eaed"
+}
+
+.mbsc-icon-stack:before {
+ content: "\eaee"
+}
+
+.mbsc-icon-star:before {
+ content: "\eaef"
+}
+
+.mbsc-icon-star2:before {
+ content: "\eaf0"
+}
+
+.mbsc-icon-star3:before {
+ content: "\eaf1"
+}
+
+.mbsc-icon-stop2:before {
+ content: "\eaf2"
+}
+
+.mbsc-icon-stopwatch:before {
+ content: "\eaf3"
+}
+
+.mbsc-icon-stream-sync:before {
+ content: "\eaf4"
+}
+
+.mbsc-icon-support:before {
+ content: "\eaf5"
+}
+
+.mbsc-icon-tag:before {
+ content: "\eaf6"
+}
+
+.mbsc-icon-thumbs-up:before {
+ content: "\eaf7"
+}
+
+.mbsc-icon-thumbs-up2:before {
+ content: "\eaf8"
+}
+
+.mbsc-icon-undo2:before {
+ content: "\eaf9"
+}
+
+.mbsc-icon-unlocked:before {
+ content: "\eafa"
+}
+
+.mbsc-icon-upload:before {
+ content: "\eafb"
+}
+
+.mbsc-icon-user4:before {
+ content: "\eafc"
+}
+
+.mbsc-icon-volume-high:before {
+ content: "\eafd"
+}
+
+.mbsc-icon-volume-medium:before {
+ content: "\eafe"
+}
+
+.mbsc-icon-volume-mute2:before {
+ content: "\eaff"
+}
+
+.mbsc-ios-gray.mbsc-button-standard {
+ background: #5d5d5d;
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-button-flat {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-button-outline {
+ border: 1px solid #ff78d9;
+ color: #ff78d9
+}
+
+.mbsc-ios-gray.mbsc-button-outline.mbsc-active {
+ background: #ff78d9;
+ color: #222
+}
+
+.mbsc-ios-gray.mbsc-button.mbsc-focus {
+ background: hsla(0, 0%, 100%, .05)
+}
+
+.mbsc-ios-gray.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-gray.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-ios-gray.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-ios-gray.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-ios-gray.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-ios-gray.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-ios-gray.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-ios-gray.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-ios-gray.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-ios-gray.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-ios-gray.mbsc-button-primary.mbsc-button-outline.mbsc-active {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-ios-gray.mbsc-button-secondary.mbsc-button-outline.mbsc-active {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-ios-gray.mbsc-button-success.mbsc-button-outline.mbsc-active {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-ios-gray.mbsc-button-danger.mbsc-button-outline.mbsc-active {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-ios-gray.mbsc-button-warning.mbsc-button-outline.mbsc-active {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-ios-gray.mbsc-button-info.mbsc-button-outline.mbsc-active {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-ios-gray.mbsc-button-dark.mbsc-button-outline.mbsc-active {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-button-light.mbsc-button-outline {
+ border-color: #bfbfbf;
+ color: #bfbfbf
+}
+
+.mbsc-ios-gray.mbsc-button-light.mbsc-button-outline.mbsc-active {
+ background: #bfbfbf;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-calendar {
+ background: #222;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-calendar-header,
+.mbsc-ios-gray.mbsc-calendar-wrapper {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-calendar-button.mbsc-button {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-calendar-cell {
+ background: #222;
+ border-color: #555;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-calendar-day:after {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-calendar-today,
+.mbsc-ios-gray.mbsc-calendar-week-nr {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-hover .mbsc-calendar-cell-text {
+ background-color: rgba(245, 115, 208, .3)
+}
+
+.mbsc-ios-gray.mbsc-range-day:after {
+ background-color: #8b166a
+}
+
+.mbsc-ios-gray.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-range-hover:before {
+ border-color: #4d4d4d
+}
+
+.mbsc-ios-gray.mbsc-selected .mbsc-calendar-cell-text {
+ background: #f573d0;
+ border-color: #f573d0;
+ color: #000
+}
+
+.mbsc-ios-gray.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-ios-gray.mbsc-focus .mbsc-calendar-day-text {
+ border-color: hsla(0, 0%, 100%, .5);
+ box-shadow: none
+}
+
+.mbsc-ios-gray.mbsc-calendar-mark {
+ background: #555
+}
+
+.mbsc-ios-gray.mbsc-calendar-label {
+ color: #5ac8fa
+}
+
+.mbsc-ios-gray.mbsc-calendar-label-active .mbsc-calendar-label-inner,
+.mbsc-ios-gray.mbsc-calendar-label-dragging .mbsc-calendar-label-inner,
+.mbsc-ios-gray.mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-calendar-label-active .mbsc-calendar-label-text,
+.mbsc-ios-gray.mbsc-calendar-label-dragging .mbsc-calendar-label-text {
+ color: inherit
+}
+
+.mbsc-ios-gray.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-ios-gray.mbsc-calendar-popup .mbsc-popup-body {
+ background: #4b4b4b
+}
+
+.mbsc-ios-gray.mbsc-calendar-popup .mbsc-calendar-cell {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-calendar-grid {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-calendar-month-title {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-checkbox-box {
+ color: #ff78d9
+}
+
+.mbsc-ios-gray.mbsc-picker .mbsc-popup-arrow,
+.mbsc-ios-gray.mbsc-picker .mbsc-popup-body {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-picker-header {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-datepicker .mbsc-calendar,
+.mbsc-ios-gray.mbsc-datepicker .mbsc-calendar-cell,
+.mbsc-ios-gray.mbsc-datepicker .mbsc-calendar-slide,
+.mbsc-ios-gray.mbsc-datepicker-bottom.mbsc-datepicker-control-date,
+.mbsc-ios-gray.mbsc-datepicker-top.mbsc-datepicker-control-date {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-datepicker-inline {
+ background: #3e3e3e;
+ border-color: #555;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-range-control-value.active {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-range-control-text-empty,
+.mbsc-ios-gray.mbsc-range-control-text-empty.active {
+ color: hsla(0, 0%, 100%, .4)
+}
+
+.mbsc-ios-gray.mbsc-range-label-clear {
+ color: #555
+}
+
+.mbsc-ios-gray.mbsc-range-label-clear:hover {
+ color: #6f6f6f
+}
+
+.mbsc-ios-gray.mbsc-eventcalendar .mbsc-calendar-header,
+.mbsc-ios-gray.mbsc-eventcalendar .mbsc-calendar-week-days {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #3c3c3c
+}
+
+.mbsc-ios-gray.mbsc-event-list-empty {
+ color: #8f8f8f
+}
+
+.mbsc-ios-gray.mbsc-event-day.mbsc-list-header {
+ background: #222;
+ border-color: #555;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-event.mbsc-list-item {
+ background: #222;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-event.mbsc-list-item:after,
+.mbsc-ios-gray.mbsc-event.mbsc-list-item:before {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-event.mbsc-list-item.mbsc-hover:before {
+ background: hsla(0, 0%, 100%, .05)
+}
+
+.mbsc-ios-gray.mbsc-event.mbsc-list-item.mbsc-focus .mbsc-list-item-background,
+.mbsc-ios-gray.mbsc-event.mbsc-list-item.mbsc-selected .mbsc-list-item-background {
+ background: hsla(0, 0%, 100%, .15)
+}
+
+.mbsc-ios-gray.mbsc-event-color {
+ background: #5ac8fa
+}
+
+.mbsc-ios-gray.mbsc-popover-list .mbsc-ios-gray.mbsc-event {
+ background: #4d4d4d
+}
+
+.mbsc-ios-gray.mbsc-eventcalendar-schedule .mbsc-calendar-day,
+.mbsc-ios-gray.mbsc-schedule-wrapper {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-schedule-header,
+.mbsc-ios-gray.mbsc-schedule-header-item {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-schedule-header-day-today {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(245, 115, 208, .3)
+}
+
+.mbsc-ios-gray.mbsc-schedule-header-day.mbsc-selected,
+.mbsc-ios-gray.mbsc-schedule-header-dayname-curr {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-schedule-header-day.mbsc-selected {
+ background: #f573d0;
+ color: #222
+}
+
+.mbsc-ios-gray.mbsc-schedule-header-dayname-curr {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-schedule-date-header {
+ background: #3e3e3e;
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-schedule-grid-wrapper {
+ background: #222
+}
+
+.mbsc-ios-gray.mbsc-schedule-all-day-wrapper {
+ background: #222;
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-schedule-all-day-text,
+.mbsc-ios-gray.mbsc-schedule-timezone-label {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-schedule-all-day-item:after,
+.mbsc-ios-gray.mbsc-schedule-column,
+.mbsc-ios-gray.mbsc-schedule-item,
+.mbsc-ios-gray.mbsc-schedule-resource,
+.mbsc-ios-gray.mbsc-schedule-resource-group,
+.mbsc-ios-gray.mbsc-timeline-column,
+.mbsc-ios-gray.mbsc-timeline-day:after,
+.mbsc-ios-gray.mbsc-timeline-footer,
+.mbsc-ios-gray.mbsc-timeline-footer-column,
+.mbsc-ios-gray.mbsc-timeline-footer-date,
+.mbsc-ios-gray.mbsc-timeline-footer-week,
+.mbsc-ios-gray.mbsc-timeline-header,
+.mbsc-ios-gray.mbsc-timeline-header-column,
+.mbsc-ios-gray.mbsc-timeline-header-date,
+.mbsc-ios-gray.mbsc-timeline-header-month,
+.mbsc-ios-gray.mbsc-timeline-header-week,
+.mbsc-ios-gray.mbsc-timeline-resource,
+.mbsc-ios-gray.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-gray.mbsc-timeline-resource-header-cont,
+.mbsc-ios-gray.mbsc-timeline-row,
+.mbsc-ios-gray.mbsc-timeline-row-date,
+.mbsc-ios-gray.mbsc-timeline-row-group:after,
+.mbsc-ios-gray.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-gray.mbsc-timeline-sidebar-header-cont,
+.mbsc-ios-gray.mbsc-timeline-sidebar-resource,
+.mbsc-ios-gray.mbsc-timeline-slot-header,
+.mbsc-ios-gray.mbsc-timeline-slots {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #555
+}
+
+.mbsc-ios-gray.mbsc-schedule-cursor-time,
+.mbsc-ios-gray.mbsc-schedule-time,
+.mbsc-ios-gray.mbsc-timeline-header-column {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-schedule-event {
+ color: #5ac8fa
+}
+
+.mbsc-ios-gray.mbsc-schedule-event:after {
+ background: rgba(34, 34, 34, .9)
+}
+
+.mbsc-ios-gray.mbsc-schedule-event-active .mbsc-schedule-event-inner,
+.mbsc-ios-gray.mbsc-schedule-event-dragging .mbsc-schedule-event-inner,
+.mbsc-ios-gray.mbsc-schedule-event-range,
+.mbsc-ios-gray.mbsc-schedule-event-title {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-schedule-event-active .mbsc-schedule-event-range,
+.mbsc-ios-gray.mbsc-schedule-event-active .mbsc-schedule-event-title,
+.mbsc-ios-gray.mbsc-schedule-event-dragging .mbsc-schedule-event-range,
+.mbsc-ios-gray.mbsc-schedule-event-dragging .mbsc-schedule-event-title {
+ color: inherit
+}
+
+.mbsc-ios-gray.mbsc-schedule-time-indicator {
+ border-color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-schedule-time-indicator-day:before {
+ background: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-schedule-cursor-time,
+.mbsc-ios-gray.mbsc-schedule-time-indicator-time {
+ background: rgba(34, 34, 34, .8);
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-schedule-invalid {
+ background: rgba(60, 60, 60, .75);
+ color: #9a9a9a
+}
+
+.mbsc-ios-gray.mbsc-timeline-footer-bg,
+.mbsc-ios-gray.mbsc-timeline-header-bg,
+.mbsc-ios-gray.mbsc-timeline-header-text,
+.mbsc-ios-gray.mbsc-timeline-resource-bg,
+.mbsc-ios-gray.mbsc-timeline-resource-dragged,
+.mbsc-ios-gray.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-gray.mbsc-timeline-resource-header-cont,
+.mbsc-ios-gray.mbsc-timeline-row-fixed,
+.mbsc-ios-gray.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-gray.mbsc-timeline-sidebar-header-cont {
+ background: #222
+}
+
+.mbsc-ios-gray.mbsc-timeline-resource {
+ background: #222;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-timeline-header-active {
+ color: #000
+}
+
+.mbsc-ios-gray.mbsc-timeline-header-active:after {
+ background-color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-timeline-parent {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-ios-gray.mbsc-timeline-parent-hover {
+ background: hsla(0, 0%, 100%, .15)
+}
+
+.mbsc-ios-gray.mbsc-connection {
+ stroke: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-ios-gray.mbsc-connection-arrow {
+ fill: #fff
+}
+
+.mbsc-ios-gray.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-ios-gray.mbsc-timeline-resource-drop-invalid {
+ background-color: #d8332a
+}
+
+.mbsc-ios-gray.mbsc-form-control-wrapper {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-form-control-wrapper:after,
+.mbsc-ios-gray.mbsc-form-control-wrapper:before {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-form-control-wrapper.mbsc-error+.mbsc-form-control-wrapper:before,
+.mbsc-ios-gray.mbsc-form-control-wrapper.mbsc-error:after {
+ border-color: #d8332a
+}
+
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-form-control-wrapper {
+ background: #4d4d4d
+}
+
+.mbsc-ios-gray.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios-gray.mbsc-textfield-wrapper-underline {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-label,
+.mbsc-ios-gray.mbsc-textfield {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-textfield-box,
+.mbsc-ios-gray.mbsc-textfield-outline {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-textfield-outline {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-select-icon,
+.mbsc-ios-gray.mbsc-textfield-icon {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-textfield-box.mbsc-error,
+.mbsc-ios-gray.mbsc-textfield-outline.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-gray.mbsc-error-message {
+ color: #d8332a
+}
+
+.mbsc-ios-gray.mbsc-select,
+.mbsc-ios-gray.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios-gray.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-textarea-inner.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-select,
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-textarea-inner.mbsc-textfield-inner-outline,
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-textfield-box,
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-textfield-outline,
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-textfield-wrapper-underline {
+ background: #4d4d4d
+}
+
+.mbsc-ios-gray.mbsc-textfield-tag {
+ background: #5d5d5d
+}
+
+.mbsc-ios-gray.mbsc-textfield-tag-clear {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-list-item {
+ background: #222;
+ border-color: #555;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-list-item:after,
+.mbsc-ios-gray.mbsc-list-item:before {
+ border-top: 1px solid #555
+}
+
+.mbsc-ios-gray.mbsc-list-header {
+ background: #3c3c3c;
+ border-color: #555;
+ color: #8f8f8f
+}
+
+.mbsc-ios-gray.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios-gray.mbsc-page {
+ background: #222;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-page a {
+ color: #f573d0
+}
+
+.mbsc-ios-gray .mbsc-block-title,
+.mbsc-ios-gray .mbsc-form-group-title {
+ color: #919191
+}
+
+.mbsc-ios-gray.mbsc-popup-arrow {
+ background: #3e3e3e;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-gray.mbsc-popup-bottom,
+.mbsc-ios-gray.mbsc-popup-top {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-popup-body {
+ background: #3e3e3e;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-popup-body-anchored,
+.mbsc-ios-gray.mbsc-popup-body-center,
+.mbsc-ios-gray.mbsc-popup-body-round {
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12)
+}
+
+.mbsc-ios-gray.mbsc-popup-buttons,
+.mbsc-ios-gray.mbsc-popup-header-center,
+.mbsc-ios-gray.mbsc-popup-header-no-buttons {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-popup-buttons-anchored,
+.mbsc-ios-gray.mbsc-popup-buttons-bottom,
+.mbsc-ios-gray.mbsc-popup-buttons-top {
+ background: #4b4b4b
+}
+
+.mbsc-ios-gray.mbsc-popup-button-flex.mbsc-button-flat.mbsc-font {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-popup-button-flex.mbsc-font.mbsc-focus,
+.mbsc-ios-gray.mbsc-popup-button-flex.mbsc-font.mbsc-hover {
+ background: #464646
+}
+
+.mbsc-ios-gray.mbsc-popup-button-flex.mbsc-font.mbsc-active {
+ background: #555
+}
+
+.mbsc-ios-gray.mbsc-popup-button-flex.mbsc-button.mbsc-disabled {
+ color: rgba(245, 115, 208, .2)
+}
+
+.mbsc-ios-gray.mbsc-radio-box:after {
+ border-color: #ff78d9
+}
+
+.mbsc-ios-gray.mbsc-radio-label.mbsc-disabled {
+ color: #5d5d5d
+}
+
+.mbsc-ios-gray.mbsc-scroller,
+.mbsc-ios-gray.mbsc-scroller-bottom,
+.mbsc-ios-gray.mbsc-scroller-top {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-overlay,
+.mbsc-ios-gray.mbsc-scroller-wheel-overlay-bottom,
+.mbsc-ios-gray.mbsc-scroller-wheel-overlay-top {
+ background: linear-gradient(#3e3e3e, rgba(62, 62, 62, 0) 52%, rgba(62, 62, 62, 0) 0, #3e3e3e)
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-line {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-item {
+ color: #9e9e9e
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-ios-gray.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-ios-gray.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-ios-gray.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(245, 115, 208, .15)
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-item-2d,
+.mbsc-ios-gray.mbsc-scroller-wheel-item.mbsc-selected {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-cont-3d {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-item-3d {
+ color: #888
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-header,
+.mbsc-ios-gray.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi.mbsc-selected-3d {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-scroller-pointer.mbsc-scroller,
+.mbsc-ios-gray.mbsc-scroller-pointer.mbsc-scroller-inline,
+.mbsc-ios-gray.mbsc-scroller-wheel-cont-bottom.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios-gray.mbsc-scroller-wheel-cont-inline.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios-gray.mbsc-scroller-wheel-cont-top.mbsc-scroller-wheel-cont-3d {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-segmented {
+ background: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-segmented-item:before {
+ border-color: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-ios-gray.mbsc-segmented-item.mbsc-focus .mbsc-segmented-selectbox {
+ box-shadow: inset 0 0 0 .0625em hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-ios-gray.mbsc-segmented-selectbox-inner {
+ background: #5a5a5a
+}
+
+.mbsc-ios-gray.mbsc-segmented-selectbox-inner.mbsc-selected {
+ box-shadow: 3px 3px 8px -4px #222
+}
+
+.mbsc-ios-gray.mbsc-segmented-button.mbsc-button {
+ background: transparent;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-calendar-header .mbsc-ios-gray.mbsc-segmented,
+.mbsc-ios-gray.mbsc-datepicker .mbsc-segmented,
+.mbsc-ios-gray.mbsc-popup .mbsc-ios-gray.mbsc-segmented {
+ background: #4d4d4d
+}
+
+.mbsc-ios-gray.mbsc-segmented-primary {
+ background: #3f97f6
+}
+
+.mbsc-ios-gray.mbsc-segmented-secondary {
+ background: #90979e
+}
+
+.mbsc-ios-gray.mbsc-segmented-success {
+ background: #43be5f
+}
+
+.mbsc-ios-gray.mbsc-segmented-warning {
+ background: #f8b042
+}
+
+.mbsc-ios-gray.mbsc-segmented-danger {
+ background: #f5504e
+}
+
+.mbsc-ios-gray.mbsc-segmented-info {
+ background: #5bb7c5
+}
+
+.mbsc-ios-gray.mbsc-segmented-light {
+ background: #fff
+}
+
+.mbsc-ios-gray.mbsc-segmented-dark {
+ background: #47494a
+}
+
+.mbsc-ios-gray.mbsc-select-scroller-inline {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-select-filter-cont {
+ background-color: #3e3e3e
+}
+
+.mbsc-ios-gray.mbsc-select-filter-clear {
+ color: #626262
+}
+
+.mbsc-ios-gray.mbsc-select-filter-clear:hover {
+ color: #6f6f6f
+}
+
+.mbsc-ios-gray.mbsc-select-empty-text {
+ color: #9e9e9e
+}
+
+.mbsc-ios-gray.mbsc-select-group-wheel {
+ border-color: #555
+}
+
+.mbsc-ios-gray.mbsc-select-group-wheel-multi .mbsc-scroller-wheel-item-3d {
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-select-group-wheel-multi .mbsc-selected-3d {
+ color: #f573d0
+}
+
+.mbsc-ios-gray.mbsc-stepper-input {
+ border-color: #4d4d4d;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-stepper-input.mbsc-disabled {
+ color: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-ios-gray.mbsc-stepper-button {
+ background: #4d4d4d;
+ color: #fff
+}
+
+.mbsc-ios-gray.mbsc-stepper-plus:before {
+ border-color: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-ios-gray.mbsc-switch-track:after {
+ background: #5a5a5a
+}
+
+.mbsc-ios-gray.mbsc-switch-track.mbsc-focus:after {
+ box-shadow: 0 0 0 .125em hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-ios-gray.mbsc-switch-track.mbsc-checked:after {
+ background: #4cd764
+}
+
+.mbsc-material-blue.mbsc-button-standard {
+ background: #cfcfcf;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
+ color: #000
+}
+
+.mbsc-material-blue.mbsc-button-standard.mbsc-hover {
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-blue.mbsc-button-standard.mbsc-active,
+.mbsc-material-blue.mbsc-button-standard.mbsc-focus {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-blue.mbsc-button-flat,
+.mbsc-material-blue.mbsc-button-outline {
+ color: #000
+}
+
+.mbsc-material-blue.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-flat.mbsc-hover,
+.mbsc-material-blue.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-outline.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue.mbsc-button-flat.mbsc-focus,
+.mbsc-material-blue.mbsc-button-outline.mbsc-focus {
+ background: rgba(0, 0, 0, .3)
+}
+
+.mbsc-material-blue.mbsc-button-outline {
+ border-color: #000
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-flat.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-flat.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-flat.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-flat.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-success.mbsc-button-flat.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-flat.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-flat.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-flat.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-flat.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-flat.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-info.mbsc-button-flat.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-flat.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-flat.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-flat.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-flat.mbsc-active,
+.mbsc-material-blue.mbsc-button-light.mbsc-button-flat.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-flat.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-outline.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-blue.mbsc-button-primary.mbsc-button-outline.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-outline.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-blue.mbsc-button-secondary.mbsc-button-outline.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-success.mbsc-button-outline.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-blue.mbsc-button-success.mbsc-button-outline.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-outline.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-blue.mbsc-button-danger.mbsc-button-outline.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-outline.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-blue.mbsc-button-warning.mbsc-button-outline.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-info.mbsc-button-outline.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-blue.mbsc-button-info.mbsc-button-outline.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-outline.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-blue.mbsc-button-dark.mbsc-button-outline.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-material-blue.mbsc-button-light.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-blue.mbsc-button-light.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-blue.mbsc-calendar-wrapper:after {
+ box-shadow: inset 0 .5em .25em -.5em rgba(69, 69, 69, .5)
+}
+
+.mbsc-material-blue.mbsc-calendar-button.mbsc-button {
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-calendar-picker-slide,
+.mbsc-material-blue.mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-blue.mbsc-calendar-week-day {
+ color: rgba(69, 69, 69, .7)
+}
+
+.mbsc-material-blue.mbsc-calendar-cell-text {
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-calendar-today,
+.mbsc-material-blue.mbsc-calendar-week-nr {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(69, 69, 69, .7)
+}
+
+.mbsc-material-blue.mbsc-hover .mbsc-calendar-cell-text {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-blue.mbsc-range-hover:before {
+ border-color: #e6e6e6
+}
+
+.mbsc-material-blue.mbsc-range-day:after {
+ background-color: rgba(44, 146, 230, .25)
+}
+
+.mbsc-material-blue.mbsc-selected .mbsc-calendar-cell-text {
+ background: #2c92e6;
+ border-color: #2c92e6;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-calendar-mark {
+ background: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-calendar-label {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-calendar-label.mbsc-calendar-label-active,
+.mbsc-material-blue.mbsc-calendar-label.mbsc-calendar-label-dragging {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue .mbsc-calendar-label.mbsc-calendar-label-active .mbsc-calendar-label-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-blue.mbsc-calendar-text-more {
+ box-shadow: none
+}
+
+.mbsc-material-blue.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-material-blue.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-material-blue.mbsc-calendar-height-md .mbsc-calendar-day,
+.mbsc-material-blue.mbsc-calendar-height-md .mbsc-calendar-day:after,
+.mbsc-material-blue.mbsc-calendar-height-md .mbsc-calendar-week-day {
+ border-color: #cfcfcf
+}
+
+.mbsc-material-blue.mbsc-calendar-month-title {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-checkbox-box {
+ border-color: #454545;
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-checkbox-box:after {
+ border-color: #fff
+}
+
+.mbsc-material-blue.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-blue.mbsc-datepicker-inline {
+ background: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-datepicker-inline .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-blue.mbsc-range-control-wrapper {
+ border-bottom: 1px solid rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue.mbsc-range-control-wrapper .mbsc-material-blue.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-range-control-label.active,
+.mbsc-material-blue.mbsc-range-control-value.active {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-range-control-text-empty,
+.mbsc-material-blue.mbsc-range-control-text-empty.active {
+ color: rgba(69, 69, 69, .4)
+}
+
+.mbsc-material-blue.mbsc-range-label-clear {
+ color: #c5c5c5
+}
+
+.mbsc-material-blue.mbsc-range-label-clear:hover {
+ color: #929292
+}
+
+.mbsc-material-blue.mbsc-eventcalendar {
+ background: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-material-blue.mbsc-event-list-empty {
+ color: rgba(69, 69, 69, .7)
+}
+
+.mbsc-material-blue.mbsc-event-day.mbsc-list-header,
+.mbsc-material-blue.mbsc-schedule-date-header {
+ background: #fff;
+ color: rgba(69, 69, 69, .7)
+}
+
+.mbsc-material-blue.mbsc-colored-event.mbsc-list-item {
+ background: #2c92e6;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-event.mbsc-list-item.mbsc-focus,
+.mbsc-material-blue.mbsc-event.mbsc-list-item.mbsc-selected {
+ box-shadow: 0 .25em .5em 0 rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-blue.mbsc-event.mbsc-list-item.mbsc-focus:before,
+.mbsc-material-blue.mbsc-event.mbsc-list-item.mbsc-selected:before {
+ border-radius: .25em;
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-blue.mbsc-event-color {
+ background: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-schedule-header-dayname {
+ color: #858a8f
+}
+
+.mbsc-material-blue.mbsc-schedule-header-day {
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-schedule-header-day-today,
+.mbsc-material-blue.mbsc-schedule-header-dayname-curr {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(44, 146, 230, .3)
+}
+
+.mbsc-material-blue.mbsc-schedule-header-day.mbsc-selected {
+ background-color: #2c92e6;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-schedule-all-day-item:after,
+.mbsc-material-blue.mbsc-schedule-column,
+.mbsc-material-blue.mbsc-schedule-item,
+.mbsc-material-blue.mbsc-schedule-resource,
+.mbsc-material-blue.mbsc-schedule-resource-group,
+.mbsc-material-blue.mbsc-schedule-time-col,
+.mbsc-material-blue.mbsc-timeline-column,
+.mbsc-material-blue.mbsc-timeline-day:after,
+.mbsc-material-blue.mbsc-timeline-footer,
+.mbsc-material-blue.mbsc-timeline-footer-column,
+.mbsc-material-blue.mbsc-timeline-footer-date,
+.mbsc-material-blue.mbsc-timeline-footer-week,
+.mbsc-material-blue.mbsc-timeline-header,
+.mbsc-material-blue.mbsc-timeline-header-column,
+.mbsc-material-blue.mbsc-timeline-header-date,
+.mbsc-material-blue.mbsc-timeline-header-month,
+.mbsc-material-blue.mbsc-timeline-header-week,
+.mbsc-material-blue.mbsc-timeline-resource,
+.mbsc-material-blue.mbsc-timeline-resource-footer-cont,
+.mbsc-material-blue.mbsc-timeline-resource-header-cont,
+.mbsc-material-blue.mbsc-timeline-row,
+.mbsc-material-blue.mbsc-timeline-row-date,
+.mbsc-material-blue.mbsc-timeline-row-group:after,
+.mbsc-material-blue.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-blue.mbsc-timeline-sidebar-header-cont,
+.mbsc-material-blue.mbsc-timeline-sidebar-resource,
+.mbsc-material-blue.mbsc-timeline-slot-header,
+.mbsc-material-blue.mbsc-timeline-slots {
+ border-color: #cfcfcf
+}
+
+.mbsc-material-blue.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #cfcfcf
+}
+
+.mbsc-material-blue.mbsc-schedule-time-wrapper-end:before,
+.mbsc-material-blue.mbsc-schedule-time-wrapper:after {
+ border-bottom: 1px solid #cfcfcf
+}
+
+.mbsc-material-blue.mbsc-schedule-all-day-text,
+.mbsc-material-blue.mbsc-schedule-time,
+.mbsc-material-blue.mbsc-schedule-timezone-label {
+ color: #858a8f
+}
+
+.mbsc-material-blue.mbsc-schedule-time-indicator {
+ border-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-schedule-time-indicator-day:before {
+ background: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-schedule-cursor-time,
+.mbsc-material-blue.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-schedule-event {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-material-blue.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-material-blue.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue.mbsc-schedule-event-active .mbsc-schedule-event-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-blue.mbsc-timeline-footer-bg,
+.mbsc-material-blue.mbsc-timeline-header-bg,
+.mbsc-material-blue.mbsc-timeline-header-text,
+.mbsc-material-blue.mbsc-timeline-resource-bg,
+.mbsc-material-blue.mbsc-timeline-resource-dragged,
+.mbsc-material-blue.mbsc-timeline-resource-footer-cont,
+.mbsc-material-blue.mbsc-timeline-resource-header-cont,
+.mbsc-material-blue.mbsc-timeline-row-fixed,
+.mbsc-material-blue.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-blue.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-material-blue.mbsc-timeline-resource {
+ background: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-timeline-header-active:after {
+ background-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-material-blue.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-blue.mbsc-connection {
+ stroke: rgba(69, 69, 69, .7)
+}
+
+.mbsc-material-blue.mbsc-connection-arrow {
+ fill: #454545
+}
+
+.mbsc-material-blue.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-material-blue.mbsc-timeline-resource-drop-invalid {
+ background-color: #de3226
+}
+
+.mbsc-material-blue.mbsc-textfield {
+ border-bottom-color: hsla(0, 0%, 8%, .42);
+ color: hsla(0, 0%, 8%, .87)
+}
+
+.mbsc-material-blue.mbsc-textfield.mbsc-hover {
+ border-color: hsla(0, 0%, 8%, .87)
+}
+
+.mbsc-material-blue.mbsc-textfield.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-blue.mbsc-select-icon,
+.mbsc-material-blue.mbsc-textfield-icon {
+ color: hsla(0, 0%, 8%, .54)
+}
+
+.mbsc-material-blue.mbsc-textfield-ripple {
+ background-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-textfield-ripple.mbsc-error {
+ background-color: #de3226
+}
+
+.mbsc-material-blue.mbsc-label {
+ color: hsla(0, 0%, 8%, .6)
+}
+
+.mbsc-material-blue.mbsc-label-floating.mbsc-focus,
+.mbsc-material-blue.mbsc-label-stacked.mbsc-focus {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-error-message,
+.mbsc-material-blue.mbsc-label.mbsc-error {
+ color: #de3226
+}
+
+.mbsc-material-blue.mbsc-select {
+ background: #fff
+}
+
+.mbsc-material-blue.mbsc-textfield-box.mbsc-select,
+.mbsc-material-blue.mbsc-textfield-inner-box {
+ background: #f5f5f5
+}
+
+.mbsc-material-blue.mbsc-textfield-box.mbsc-select.mbsc-hover,
+.mbsc-material-blue.mbsc-textfield-inner-box.mbsc-hover {
+ background: #ededed
+}
+
+.mbsc-material-blue.mbsc-textfield-box.mbsc-select.mbsc-focus,
+.mbsc-material-blue.mbsc-textfield-inner-box.mbsc-focus {
+ background: #e3e3e3
+}
+
+.mbsc-material-blue.mbsc-textfield-fieldset {
+ border-color: hsla(0, 0%, 8%, .42)
+}
+
+.mbsc-material-blue.mbsc-textfield-fieldset.mbsc-hover {
+ border-color: hsla(0, 0%, 8%, .87)
+}
+
+.mbsc-material-blue.mbsc-textfield-fieldset.mbsc-focus {
+ border-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-textfield-fieldset.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-blue.mbsc-textfield-fieldset.disabled {
+ border-color: hsla(0, 0%, 8%, .87)
+}
+
+.mbsc-material-blue.mbsc-textfield-tag {
+ background: #d4d4d4
+}
+
+.mbsc-material-blue.mbsc-textfield-tag-clear {
+ color: hsla(0, 0%, 8%, .54)
+}
+
+.mbsc-material-blue.mbsc-list-header {
+ background: #fff;
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-list-item {
+ background: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-blue.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-blue.mbsc-page {
+ background-color: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue .mbsc-block-title,
+.mbsc-material-blue .mbsc-form-group-title,
+.mbsc-material-blue.mbsc-page a {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-popup-body {
+ background: #fff;
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12);
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-popup-arrow {
+ background: #fff;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue.mbsc-popup-button.mbsc-font {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-radio-box {
+ border-color: #454545;
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-scroller-wheel-cont:after,
+.mbsc-material-blue.mbsc-scroller-wheel-cont:before {
+ border-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-scroller-wheel-multi:after,
+.mbsc-material-blue.mbsc-scroller-wheel-multi:before {
+ border-color: transparent
+}
+
+.mbsc-material-blue.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-material-blue.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-material-blue.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-material-blue.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-blue.mbsc-wheel-checkmark:after {
+ border-color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-segmented-button.mbsc-button {
+ border-color: #2c92e6;
+ color: #000
+}
+
+.mbsc-material-blue.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material-blue.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #2c92e6;
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-blue.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-select-filter-clear {
+ color: #c5c5c5
+}
+
+.mbsc-material-blue.mbsc-select-filter-clear:hover {
+ color: #929292
+}
+
+.mbsc-material-blue.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ background: rgba(0, 0, 0, .15);
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-select-group-wheel-multi .mbsc-selected {
+ color: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-stepper-input {
+ border-color: #d6d6d6;
+ color: #707070
+}
+
+.mbsc-material-blue.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-material-blue.mbsc-stepper-button {
+ background: #d6d6d6;
+ color: #d6d6d6
+}
+
+.mbsc-material-blue.mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-material-blue.mbsc-color-none .mbsc-stepper-inner {
+ color: #454545
+}
+
+.mbsc-material-blue.mbsc-stepper-button.mbsc-disabled {
+ background: #d6d6d6
+}
+
+.mbsc-material-blue.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-material-blue.mbsc-switch-track {
+ background: #c4c4c4
+}
+
+.mbsc-material-blue.mbsc-switch-track.mbsc-checked {
+ background: rgba(44, 146, 230, .3)
+}
+
+.mbsc-material-blue.mbsc-switch-track.mbsc-disabled {
+ background: #e8e8e8
+}
+
+.mbsc-material-blue.mbsc-switch-handle {
+ background: #fff;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-blue.mbsc-switch-handle.mbsc-checked {
+ background: #2c92e6
+}
+
+.mbsc-material-blue.mbsc-switch-handle.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-material-blue.mbsc-switch-handle:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-indigo.mbsc-button-standard {
+ background: #5969cd;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-button-standard.mbsc-hover {
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-indigo.mbsc-button-standard.mbsc-active,
+.mbsc-material-indigo.mbsc-button-standard.mbsc-focus {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-indigo.mbsc-button-flat,
+.mbsc-material-indigo.mbsc-button-outline {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-flat.mbsc-hover,
+.mbsc-material-indigo.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-flat.mbsc-focus,
+.mbsc-material-indigo.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-outline {
+ border-color: #fff
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-flat.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-flat.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-flat.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-flat.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-flat.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-flat.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-flat.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-flat.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-flat.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-flat.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-flat.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-flat.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-flat.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-flat.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-flat.mbsc-active,
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-flat.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-flat.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-outline.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-primary.mbsc-button-outline.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-outline.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-secondary.mbsc-button-outline.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-outline.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-success.mbsc-button-outline.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-outline.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-danger.mbsc-button-outline.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-outline.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-warning.mbsc-button-outline.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-outline.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-info.mbsc-button-outline.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-outline.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-dark.mbsc-button-outline.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-button-light.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-indigo.mbsc-calendar-wrapper:after {
+ box-shadow: inset 0 .5em .25em -.5em hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-indigo.mbsc-calendar-button.mbsc-button {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-calendar-slide {
+ background: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-calendar-picker-slide {
+ background: #6170cf
+}
+
+.mbsc-material-indigo.mbsc-calendar-week-day {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-indigo.mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-calendar-today,
+.mbsc-material-indigo.mbsc-calendar-week-nr {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-indigo.mbsc-hover .mbsc-calendar-cell-text {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-material-indigo.mbsc-range-hover:before {
+ border-color: #3d50c5
+}
+
+.mbsc-material-indigo.mbsc-range-day:after {
+ background-color: rgba(255, 64, 128, .25)
+}
+
+.mbsc-material-indigo.mbsc-selected .mbsc-calendar-cell-text {
+ background: #ff4080;
+ border-color: #ff4080;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-calendar-mark {
+ background: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-calendar-label {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-calendar-label.mbsc-calendar-label-active,
+.mbsc-material-indigo.mbsc-calendar-label.mbsc-calendar-label-dragging {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-indigo .mbsc-calendar-label.mbsc-calendar-label-active .mbsc-calendar-label-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-indigo.mbsc-calendar-text-more {
+ box-shadow: none
+}
+
+.mbsc-material-indigo.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-material-indigo.mbsc-calendar-popup .mbsc-popup-body {
+ background: #6170cf
+}
+
+.mbsc-material-indigo.mbsc-calendar-height-md .mbsc-calendar-day,
+.mbsc-material-indigo.mbsc-calendar-height-md .mbsc-calendar-day:after,
+.mbsc-material-indigo.mbsc-calendar-height-md .mbsc-calendar-week-day {
+ border-color: #5969cd
+}
+
+.mbsc-material-indigo.mbsc-calendar-month-title {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-checkbox-box {
+ border-color: #fff;
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-checkbox-box:after {
+ border-color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-datepicker .mbsc-calendar-slide {
+ background: #6170cf
+}
+
+.mbsc-material-indigo.mbsc-datepicker-inline {
+ background: #303f9f;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-datepicker-inline .mbsc-calendar-slide {
+ background: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-range-control-wrapper {
+ border-bottom: 1px solid hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-range-control-wrapper .mbsc-material-indigo.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-range-control-label.active,
+.mbsc-material-indigo.mbsc-range-control-value.active {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-range-control-text-empty,
+.mbsc-material-indigo.mbsc-range-control-text-empty.active {
+ color: hsla(0, 0%, 100%, .4)
+}
+
+.mbsc-material-indigo.mbsc-range-label-clear {
+ color: gray
+}
+
+.mbsc-material-indigo.mbsc-range-label-clear:hover {
+ color: #b3b3b3
+}
+
+.mbsc-material-indigo.mbsc-eventcalendar {
+ background: #303f9f;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #3d50c5
+}
+
+.mbsc-material-indigo.mbsc-event-list-empty {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-indigo.mbsc-event-day.mbsc-list-header,
+.mbsc-material-indigo.mbsc-schedule-date-header {
+ background: #303f9f;
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-indigo.mbsc-colored-event.mbsc-list-item {
+ background: #ff4080;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-event.mbsc-list-item.mbsc-focus,
+.mbsc-material-indigo.mbsc-event.mbsc-list-item.mbsc-selected {
+ box-shadow: 0 .25em .5em 0 rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-indigo.mbsc-event.mbsc-list-item.mbsc-focus:before,
+.mbsc-material-indigo.mbsc-event.mbsc-list-item.mbsc-selected:before {
+ border-radius: .25em;
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-indigo.mbsc-event-color {
+ background: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-schedule-header-dayname {
+ color: #dbdddf
+}
+
+.mbsc-material-indigo.mbsc-schedule-header-day {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-schedule-header-day-today,
+.mbsc-material-indigo.mbsc-schedule-header-dayname-curr {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(255, 64, 128, .3)
+}
+
+.mbsc-material-indigo.mbsc-schedule-header-day.mbsc-selected {
+ background-color: #ff4080;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-schedule-all-day-item:after,
+.mbsc-material-indigo.mbsc-schedule-column,
+.mbsc-material-indigo.mbsc-schedule-item,
+.mbsc-material-indigo.mbsc-schedule-resource,
+.mbsc-material-indigo.mbsc-schedule-resource-group,
+.mbsc-material-indigo.mbsc-schedule-time-col,
+.mbsc-material-indigo.mbsc-timeline-column,
+.mbsc-material-indigo.mbsc-timeline-day:after,
+.mbsc-material-indigo.mbsc-timeline-footer,
+.mbsc-material-indigo.mbsc-timeline-footer-column,
+.mbsc-material-indigo.mbsc-timeline-footer-date,
+.mbsc-material-indigo.mbsc-timeline-footer-week,
+.mbsc-material-indigo.mbsc-timeline-header,
+.mbsc-material-indigo.mbsc-timeline-header-column,
+.mbsc-material-indigo.mbsc-timeline-header-date,
+.mbsc-material-indigo.mbsc-timeline-header-month,
+.mbsc-material-indigo.mbsc-timeline-header-week,
+.mbsc-material-indigo.mbsc-timeline-resource,
+.mbsc-material-indigo.mbsc-timeline-resource-footer-cont,
+.mbsc-material-indigo.mbsc-timeline-resource-header-cont,
+.mbsc-material-indigo.mbsc-timeline-row,
+.mbsc-material-indigo.mbsc-timeline-row-date,
+.mbsc-material-indigo.mbsc-timeline-row-group:after,
+.mbsc-material-indigo.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-indigo.mbsc-timeline-sidebar-header-cont,
+.mbsc-material-indigo.mbsc-timeline-sidebar-resource,
+.mbsc-material-indigo.mbsc-timeline-slot-header,
+.mbsc-material-indigo.mbsc-timeline-slots {
+ border-color: #5969cd
+}
+
+.mbsc-material-indigo.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #5969cd
+}
+
+.mbsc-material-indigo.mbsc-schedule-time-wrapper-end:before,
+.mbsc-material-indigo.mbsc-schedule-time-wrapper:after {
+ border-bottom: 1px solid #5969cd
+}
+
+.mbsc-material-indigo.mbsc-schedule-all-day-text,
+.mbsc-material-indigo.mbsc-schedule-time,
+.mbsc-material-indigo.mbsc-schedule-timezone-label {
+ color: #dbdddf
+}
+
+.mbsc-material-indigo.mbsc-schedule-time-indicator {
+ border-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-schedule-time-indicator-day:before {
+ background: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-schedule-cursor-time,
+.mbsc-material-indigo.mbsc-schedule-time-indicator-time {
+ background: rgba(48, 63, 159, .8);
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-schedule-event {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-schedule-invalid {
+ background: rgba(61, 80, 197, .75);
+ color: #ced3f0
+}
+
+.mbsc-material-indigo.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-material-indigo.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ box-shadow: 0 4px 8px 0 hsla(0, 0%, 100%, .14), 0 1px 8px 0 hsla(0, 0%, 100%, .12), 0 1px 3px -1px hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-schedule-event-active .mbsc-schedule-event-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-indigo.mbsc-timeline-footer-bg,
+.mbsc-material-indigo.mbsc-timeline-header-bg,
+.mbsc-material-indigo.mbsc-timeline-header-text,
+.mbsc-material-indigo.mbsc-timeline-resource-bg,
+.mbsc-material-indigo.mbsc-timeline-resource-dragged,
+.mbsc-material-indigo.mbsc-timeline-resource-footer-cont,
+.mbsc-material-indigo.mbsc-timeline-resource-header-cont,
+.mbsc-material-indigo.mbsc-timeline-row-fixed,
+.mbsc-material-indigo.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-indigo.mbsc-timeline-sidebar-header-cont {
+ background: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-timeline-resource {
+ background: #303f9f;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-timeline-header-active:after {
+ background-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-timeline-parent {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-material-indigo.mbsc-timeline-parent-hover {
+ background: hsla(0, 0%, 100%, .15)
+}
+
+.mbsc-material-indigo.mbsc-connection {
+ stroke: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-material-indigo.mbsc-connection-arrow {
+ fill: #fff
+}
+
+.mbsc-material-indigo.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-material-indigo.mbsc-timeline-resource-drop-invalid {
+ background-color: #de3226
+}
+
+.mbsc-material-indigo.mbsc-textfield {
+ border-bottom-color: #fff;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-textfield.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-material-indigo.mbsc-textfield.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-indigo.mbsc-select-icon,
+.mbsc-material-indigo.mbsc-textfield-icon {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-textfield-ripple {
+ background-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-textfield-ripple.mbsc-error {
+ background-color: #de3226
+}
+
+.mbsc-material-indigo.mbsc-label {
+ color: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-material-indigo.mbsc-label-floating.mbsc-focus,
+.mbsc-material-indigo.mbsc-label-stacked.mbsc-focus {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-error-message,
+.mbsc-material-indigo.mbsc-label.mbsc-error {
+ color: #de3226
+}
+
+.mbsc-material-indigo.mbsc-select {
+ background: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-textfield-box.mbsc-select,
+.mbsc-material-indigo.mbsc-textfield-inner-box {
+ background: #3545af
+}
+
+.mbsc-material-indigo.mbsc-textfield-box.mbsc-select.mbsc-hover,
+.mbsc-material-indigo.mbsc-textfield-inner-box.mbsc-hover {
+ background: #384aba
+}
+
+.mbsc-material-indigo.mbsc-textfield-box.mbsc-select.mbsc-focus,
+.mbsc-material-indigo.mbsc-textfield-inner-box.mbsc-focus {
+ background: #4153c6
+}
+
+.mbsc-material-indigo.mbsc-textfield-fieldset,
+.mbsc-material-indigo.mbsc-textfield-fieldset.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-material-indigo.mbsc-textfield-fieldset.mbsc-focus {
+ border-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-textfield-fieldset.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-indigo.mbsc-textfield-fieldset.disabled {
+ border-color: #fff
+}
+
+.mbsc-material-indigo.mbsc-textfield-tag {
+ background: #808cd9
+}
+
+.mbsc-material-indigo.mbsc-textfield-tag-clear {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-list-header {
+ background: #303f9f;
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-list-item {
+ background: #303f9f;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-indigo.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-indigo.mbsc-page {
+ background-color: #303f9f;
+ color: #fff
+}
+
+.mbsc-material-indigo .mbsc-block-title,
+.mbsc-material-indigo .mbsc-form-group-title,
+.mbsc-material-indigo.mbsc-page a {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-popup-body {
+ background: #6170cf;
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12);
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-popup-arrow {
+ background: #6170cf;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-indigo.mbsc-popup-button.mbsc-font {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-radio-box {
+ border-color: #fff;
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-scroller-wheel-cont:after,
+.mbsc-material-indigo.mbsc-scroller-wheel-cont:before {
+ border-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-scroller-wheel-multi:after,
+.mbsc-material-indigo.mbsc-scroller-wheel-multi:before {
+ border-color: transparent
+}
+
+.mbsc-material-indigo.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-material-indigo.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-material-indigo.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-material-indigo.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-indigo.mbsc-wheel-checkmark:after {
+ border-color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-segmented-button.mbsc-button {
+ border-color: #ff4080;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material-indigo.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #ff4080;
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-indigo.mbsc-select-scroller-inline {
+ background-color: #303f9f;
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-select-filter-clear {
+ color: gray
+}
+
+.mbsc-material-indigo.mbsc-select-filter-clear:hover {
+ color: #b3b3b3
+}
+
+.mbsc-material-indigo.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ background: rgba(0, 0, 0, .15);
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-select-group-wheel-multi .mbsc-selected {
+ color: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-stepper-input {
+ border-color: #9fa8e2;
+ color: #c2c2c2
+}
+
+.mbsc-material-indigo.mbsc-stepper-input.mbsc-disabled {
+ color: #c7ccee
+}
+
+.mbsc-material-indigo.mbsc-stepper-button {
+ background: #9fa8e2;
+ color: #9fa8e2
+}
+
+.mbsc-material-indigo.mbsc-stepper-inner {
+ color: #303f9f
+}
+
+.mbsc-material-indigo.mbsc-color-none .mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-material-indigo.mbsc-stepper-button.mbsc-disabled {
+ background: #9fa8e2
+}
+
+.mbsc-material-indigo.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #c7ccee
+}
+
+.mbsc-material-indigo.mbsc-switch-track {
+ background: #5969cd
+}
+
+.mbsc-material-indigo.mbsc-switch-track.mbsc-checked {
+ background: rgba(255, 64, 128, .3)
+}
+
+.mbsc-material-indigo.mbsc-switch-track.mbsc-disabled {
+ background: #5969cd
+}
+
+.mbsc-material-indigo.mbsc-switch-handle {
+ background: #e6e8f7;
+ box-shadow: 0 3px 1px -2px hsla(0, 0%, 100%, .2), 0 1px 5px 0 hsla(0, 0%, 100%, .12)
+}
+
+.mbsc-material-indigo.mbsc-switch-handle.mbsc-checked {
+ background: #ff4080
+}
+
+.mbsc-material-indigo.mbsc-switch-handle.mbsc-disabled {
+ background: #5565cc
+}
+
+.mbsc-material-indigo.mbsc-switch-handle:before {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-windows-yellow.mbsc-button-standard {
+ background: #595959;
+ border-color: #595959;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-standard.mbsc-hover {
+ border-color: #ababab
+}
+
+.mbsc-windows-yellow.mbsc-button-standard.mbsc-active {
+ background: #ababab;
+ border-color: #ababab
+}
+
+.mbsc-windows-yellow.mbsc-button-flat {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-flat.mbsc-active {
+ background: gray;
+ border-color: gray;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-outline {
+ border: .125em solid #8c8c8c;
+ color: #8c8c8c
+}
+
+.mbsc-windows-yellow.mbsc-button-outline.mbsc-hover {
+ border-color: #a6a6a6
+}
+
+.mbsc-windows-yellow.mbsc-button-outline.mbsc-active {
+ background: #a6a6a6;
+ border-color: #a6a6a6;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ border-color: #3f97f6;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ border-color: #90979e;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ border-color: #43be5f;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ border-color: #f5504e;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ border-color: #f8b042;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ border-color: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ border-color: #47494a;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ border-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-flat.mbsc-active {
+ background: #88bff9;
+ border-color: #88bff9
+}
+
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-flat.mbsc-active {
+ background: #b9bdc2;
+ border-color: #b9bdc2
+}
+
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-flat.mbsc-active {
+ background: #7cd28f;
+ border-color: #7cd28f
+}
+
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-flat.mbsc-active {
+ background: #f99896;
+ border-color: #f99896
+}
+
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-flat.mbsc-active {
+ background: #fbcf8c;
+ border-color: #fbcf8c
+}
+
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-flat.mbsc-active {
+ background: #94d0d9;
+ border-color: #94d0d9
+}
+
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-flat.mbsc-active {
+ background: #6c7071;
+ border-color: #6c7071
+}
+
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-flat.mbsc-active {
+ background: #fff;
+ border-color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-standard.mbsc-hover {
+ border-color: #0964c6
+}
+
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-primary.mbsc-button-standard.mbsc-active {
+ background: #0964c6;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-standard.mbsc-hover {
+ border-color: #5d646b
+}
+
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-secondary.mbsc-button-standard.mbsc-active {
+ background: #5d646b;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-standard.mbsc-hover {
+ border-color: #287339
+}
+
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-success.mbsc-button-standard.mbsc-active {
+ background: #287339;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-standard.mbsc-hover {
+ border-color: #d10e0c
+}
+
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-danger.mbsc-button-standard.mbsc-active {
+ background: #d10e0c;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-standard.mbsc-hover {
+ border-color: #cc7f08
+}
+
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-warning.mbsc-button-standard.mbsc-active {
+ background: #cc7f08;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-standard.mbsc-hover {
+ border-color: #317e89
+}
+
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-info.mbsc-button-standard.mbsc-active {
+ background: #317e89;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-standard.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-dark.mbsc-button-standard.mbsc-active {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-standard.mbsc-hover {
+ border-color: #999
+}
+
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-windows-yellow.mbsc-button-light.mbsc-button-standard.mbsc-active {
+ background: #999;
+ color: #47494a
+}
+
+.mbsc-windows-yellow.mbsc-calendar,
+.mbsc-windows-yellow.mbsc-calendar-button.mbsc-button {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-button.mbsc-button.mbsc-active {
+ background: gray;
+ border-color: gray
+}
+
+.mbsc-windows-yellow.mbsc-calendar-button.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-wrapper-fixed {
+ border-bottom: 1px solid #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-calendar-slide {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-week-day {
+ color: #ccc
+}
+
+.mbsc-windows-yellow.mbsc-calendar-today,
+.mbsc-windows-yellow.mbsc-calendar-week-nr {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-range-day {
+ border-left-color: rgba(251, 193, 45, .25)
+}
+
+.mbsc-windows-yellow.mbsc-range-day-end.mbsc-rtl,
+.mbsc-windows-yellow.mbsc-range-day-start.mbsc-ltr {
+ border-left-color: transparent
+}
+
+.mbsc-windows-yellow.mbsc-range-hover .mbsc-calendar-cell-inner {
+ border-bottom-color: hsla(0, 0%, 100%, .22);
+ border-style: dashed;
+ border-top-color: hsla(0, 0%, 100%, .22)
+}
+
+.mbsc-windows-yellow.mbsc-range-day .mbsc-calendar-cell-inner,
+.mbsc-windows-yellow.mbsc-selected .mbsc-calendar-cell-inner {
+ background: rgba(251, 193, 45, .25)
+}
+
+.mbsc-windows-yellow.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-inner {
+ background-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-day-colors.mbsc-selected:after {
+ border: 2px solid #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-calendar-cell.mbsc-focus:after {
+ border: 1px solid #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-cell.mbsc-hover:after {
+ background: hsla(0, 0%, 100%, .22)
+}
+
+.mbsc-windows-yellow.mbsc-calendar-mark {
+ background: hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-windows-yellow.mbsc-calendar-label {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-label.mbsc-calendar-label-active {
+ outline: 1px solid #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-calendar-height-md .mbsc-calendar-week-day,
+.mbsc-windows-yellow.mbsc-calendar-width-md .mbsc-calendar-day,
+.mbsc-windows-yellow.mbsc-calendar-width-md .mbsc-calendar-day:after {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-calendar-popup .mbsc-popup,
+.mbsc-windows-yellow.mbsc-calendar-popup .mbsc-popup-arrow {
+ background: #333;
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-calendar-month-title {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-checkbox-box {
+ border-color: #fff;
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-checkbox-box:after {
+ border-color: #1f1600
+}
+
+.mbsc-windows-yellow.mbsc-checkbox-box:before {
+ background: #bfbfbf
+}
+
+.mbsc-windows-yellow.mbsc-checkbox-box.mbsc-active {
+ background: #bfbfbf;
+ border-color: #bfbfbf
+}
+
+.mbsc-windows-yellow.mbsc-datepicker-inline {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-datepicker-tab,
+.mbsc-windows-yellow.mbsc-picker-header {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-range-control-wrapper {
+ border-bottom: 1px solid #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-range-control-wrapper .mbsc-windows-yellow.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-range-control-wrapper .mbsc-windows-yellow.mbsc-segmented-button.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #fff
+}
+
+.mbsc-windows-yellow.mbsc-range-control-label.active,
+.mbsc-windows-yellow.mbsc-range-control-value.active {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-range-control-text-empty,
+.mbsc-windows-yellow.mbsc-range-control-text-empty.active {
+ color: hsla(0, 0%, 100%, .4)
+}
+
+.mbsc-windows-yellow.mbsc-range-label-clear {
+ color: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-windows-yellow.mbsc-range-label-clear:hover {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-eventcalendar {
+ background: #333
+}
+
+.mbsc-windows-yellow.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-event-list-empty {
+ color: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-windows-yellow.mbsc-event-group {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-event-day.mbsc-list-header,
+.mbsc-windows-yellow.mbsc-event.mbsc-list-item {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-event.mbsc-focus,
+.mbsc-windows-yellow.mbsc-event.mbsc-selected {
+ background: rgba(251, 193, 45, .25)
+}
+
+.mbsc-windows-yellow.mbsc-event-color {
+ background: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-wrapper {
+ background: #333
+}
+
+.mbsc-windows-yellow.mbsc-schedule-header-day {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-header-item {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-schedule-header-day-today {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-header-dayname.mbsc-selected:after {
+ background: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-date-header {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-time-indicator,
+.mbsc-windows-yellow.mbsc-schedule-time-indicator-day {
+ border-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-cursor-time,
+.mbsc-windows-yellow.mbsc-schedule-time-indicator-time {
+ background: rgba(51, 51, 51, .8);
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-time-indicator-time {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-all-day-item:after,
+.mbsc-windows-yellow.mbsc-schedule-column,
+.mbsc-windows-yellow.mbsc-schedule-item,
+.mbsc-windows-yellow.mbsc-schedule-resource,
+.mbsc-windows-yellow.mbsc-schedule-resource-group,
+.mbsc-windows-yellow.mbsc-schedule-time-col,
+.mbsc-windows-yellow.mbsc-timeline-column,
+.mbsc-windows-yellow.mbsc-timeline-day:after,
+.mbsc-windows-yellow.mbsc-timeline-footer,
+.mbsc-windows-yellow.mbsc-timeline-footer-column,
+.mbsc-windows-yellow.mbsc-timeline-footer-date,
+.mbsc-windows-yellow.mbsc-timeline-footer-week,
+.mbsc-windows-yellow.mbsc-timeline-header,
+.mbsc-windows-yellow.mbsc-timeline-header-column,
+.mbsc-windows-yellow.mbsc-timeline-header-date,
+.mbsc-windows-yellow.mbsc-timeline-header-month,
+.mbsc-windows-yellow.mbsc-timeline-header-week,
+.mbsc-windows-yellow.mbsc-timeline-resource,
+.mbsc-windows-yellow.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-yellow.mbsc-timeline-resource-header-cont,
+.mbsc-windows-yellow.mbsc-timeline-row,
+.mbsc-windows-yellow.mbsc-timeline-row-date,
+.mbsc-windows-yellow.mbsc-timeline-row-group:after,
+.mbsc-windows-yellow.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-yellow.mbsc-timeline-sidebar-header-cont,
+.mbsc-windows-yellow.mbsc-timeline-sidebar-resource,
+.mbsc-windows-yellow.mbsc-timeline-slot-header,
+.mbsc-windows-yellow.mbsc-timeline-slots {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-time-wrapper {
+ border-top: 1px solid #4d4d4d;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-schedule-time-wrapper-end {
+ border-bottom: 1px solid #4d4d4d;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-schedule-all-day-text,
+.mbsc-windows-yellow.mbsc-schedule-time-cont,
+.mbsc-windows-yellow.mbsc-schedule-timezone-label {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-schedule-event {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-windows-yellow.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ outline: 1px solid #fff
+}
+
+.mbsc-windows-yellow.mbsc-schedule-invalid {
+ background: rgba(77, 77, 77, .75);
+ color: #ababab
+}
+
+.mbsc-windows-yellow.mbsc-timeline-footer-bg,
+.mbsc-windows-yellow.mbsc-timeline-header-bg,
+.mbsc-windows-yellow.mbsc-timeline-header-text,
+.mbsc-windows-yellow.mbsc-timeline-resource-bg,
+.mbsc-windows-yellow.mbsc-timeline-resource-dragged,
+.mbsc-windows-yellow.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-yellow.mbsc-timeline-resource-header-cont,
+.mbsc-windows-yellow.mbsc-timeline-row-fixed,
+.mbsc-windows-yellow.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-yellow.mbsc-timeline-sidebar-header-cont {
+ background: #333
+}
+
+.mbsc-windows-yellow.mbsc-timeline-resource {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow .mbsc-timeline-header-active:after {
+ background-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-timeline-parent {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-windows-yellow.mbsc-timeline-parent-hover {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-windows-yellow.mbsc-connection {
+ stroke: hsla(0, 0%, 100%, .7)
+}
+
+.mbsc-windows-yellow.mbsc-connection-arrow {
+ fill: #fff
+}
+
+.mbsc-windows-yellow.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-windows-yellow.mbsc-timeline-resource-drop-invalid {
+ background-color: #a4262c
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper.mbsc-disabled {
+ color: #949494
+}
+
+.mbsc-windows-yellow.mbsc-textfield {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-textfield-box,
+.mbsc-windows-yellow.mbsc-textfield-outline {
+ border-color: #ababab
+}
+
+.mbsc-windows-yellow.mbsc-textfield.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-textfield-box.mbsc-focus,
+.mbsc-windows-yellow.mbsc-textfield-outline.mbsc-focus {
+ border-color: #fbc12d;
+ box-shadow: inset 0 0 0 1px #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-textfield.mbsc-disabled {
+ background: #404040;
+ border-color: #404040
+}
+
+.mbsc-windows-yellow.mbsc-textfield.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-yellow.mbsc-textfield-box.mbsc-error.mbsc-focus,
+.mbsc-windows-yellow.mbsc-textfield-outline.mbsc-error.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #a4262c
+}
+
+.mbsc-windows-yellow.mbsc-error-message {
+ color: #a4262c
+}
+
+.mbsc-windows-yellow.mbsc-label {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper-underline {
+ border-color: #ababab
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper-underline.mbsc-hover {
+ border-color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper-underline.mbsc-focus {
+ border-color: #fbc12d;
+ box-shadow: 0 1px 0 0 #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper-underline.mbsc-disabled {
+ border-color: #404040
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper-underline.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-yellow.mbsc-textfield-wrapper-underline.mbsc-error.mbsc-focus {
+ box-shadow: 0 1px 0 0 #a4262c
+}
+
+.mbsc-windows-yellow.mbsc-textfield-tag {
+ background: #787878
+}
+
+.mbsc-windows-yellow.mbsc-list-header,
+.mbsc-windows-yellow.mbsc-list-item {
+ background: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-list-item.mbsc-hover:before {
+ background: hsla(0, 0%, 100%, .22)
+}
+
+.mbsc-windows-yellow.mbsc-list-item.mbsc-active:before {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-windows-yellow.mbsc-page {
+ background-color: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-page a {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow .mbsc-block-title,
+.mbsc-windows-yellow .mbsc-form-group-title {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-popup {
+ box-shadow: 0 6px 14px 0 rgba(0, 0, 0, .133), 0 1px 4px 0 rgba(0, 0, 0, .11);
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-popup,
+.mbsc-windows-yellow.mbsc-popup-arrow {
+ background: #333;
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-popup-buttons,
+.mbsc-windows-yellow.mbsc-popup-header {
+ border-color: #4d4d4d
+}
+
+.mbsc-windows-yellow.mbsc-radio-box {
+ border: .125em solid #fff
+}
+
+.mbsc-windows-yellow.mbsc-radio-box:after {
+ background: #fff
+}
+
+.mbsc-windows-yellow.mbsc-radio-box.mbsc-checked {
+ border-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-radio-box.mbsc-active {
+ border-color: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-windows-yellow.mbsc-radio-box.mbsc-active:after {
+ background: hsla(0, 0%, 100%, .6)
+}
+
+.mbsc-windows-yellow.mbsc-scroller-wheel-wrapper {
+ border-color: #4d4d4d;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-scroller-wheel-line {
+ background: rgba(251, 193, 45, .4)
+}
+
+.mbsc-windows-yellow.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-windows-yellow.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-windows-yellow.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-windows-yellow.mbsc-scroller-wheel-item.mbsc-hover {
+ background: hsla(0, 0%, 100%, .1)
+}
+
+.mbsc-windows-yellow.mbsc-wheel-checkmark:after {
+ border-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-segmented-button.mbsc-button {
+ background: #595959;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-windows-yellow.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: #5e5e5e
+}
+
+.mbsc-windows-yellow.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #ababab;
+ color: #141414
+}
+
+.mbsc-windows-yellow.mbsc-select-scroller-inline {
+ background-color: #333;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-select-group-wheel-multi .mbsc-selected,
+.mbsc-windows-yellow.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-stepper-input {
+ border-color: #595959;
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-stepper-input.mbsc-disabled {
+ color: #999
+}
+
+.mbsc-windows-yellow.mbsc-stepper-button {
+ color: #595959
+}
+
+.mbsc-windows-yellow.mbsc-stepper-button.mbsc-hover:before {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-windows-yellow.mbsc-stepper-button.mbsc-disabled {
+ background: #595959
+}
+
+.mbsc-windows-yellow.mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #999
+}
+
+.mbsc-windows-yellow.mbsc-switch-track.mbsc-checked:before {
+ background: #fbc12d;
+ border-color: #fbc12d
+}
+
+.mbsc-windows-yellow.mbsc-switch-track.mbsc-disabled:before,
+.mbsc-windows-yellow.mbsc-switch-track:before {
+ background: none;
+ border-color: #fff
+}
+
+.mbsc-windows-yellow.mbsc-switch-track.mbsc-active:before {
+ background: #bfbfbf;
+ border-color: #bfbfbf
+}
+
+.mbsc-windows-yellow.mbsc-switch-track.mbsc-focus:after {
+ border-color: #8c8c8c
+}
+
+.mbsc-windows-yellow.mbsc-switch-handle {
+ background: #fff
+}
+
+.mbsc-windows-yellow.mbsc-switch-handle.mbsc-checked {
+ background: #333
+}
+
+.mbsc-windows-yellow.mbsc-switch-handle.mbsc-disabled {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-standard {
+ background: #fff;
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-button-flat {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-button-outline {
+ border: 1px solid #ff6331;
+ color: #ff6331
+}
+
+.mbsc-ios-orange.mbsc-button-outline.mbsc-active {
+ background: #ff6331;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button.mbsc-focus {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-ios-orange.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-ios-orange.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-ios-orange.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-ios-orange.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-ios-orange.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-ios-orange.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-ios-orange.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-ios-orange.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-ios-orange.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-ios-orange.mbsc-button-primary.mbsc-button-outline.mbsc-active {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-ios-orange.mbsc-button-secondary.mbsc-button-outline.mbsc-active {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-ios-orange.mbsc-button-success.mbsc-button-outline.mbsc-active {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-ios-orange.mbsc-button-danger.mbsc-button-outline.mbsc-active {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-ios-orange.mbsc-button-warning.mbsc-button-outline.mbsc-active {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-ios-orange.mbsc-button-info.mbsc-button-outline.mbsc-active {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-ios-orange.mbsc-button-dark.mbsc-button-outline.mbsc-active {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-button-light.mbsc-button-outline {
+ border-color: #bfbfbf;
+ color: #bfbfbf
+}
+
+.mbsc-ios-orange.mbsc-button-light.mbsc-button-outline.mbsc-active {
+ background: #bfbfbf;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-calendar {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-calendar-header,
+.mbsc-ios-orange.mbsc-calendar-wrapper {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-calendar-button.mbsc-button {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-calendar-cell {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-calendar-day:after {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-calendar-today,
+.mbsc-ios-orange.mbsc-calendar-week-nr {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-hover .mbsc-calendar-cell-text {
+ background-color: rgba(255, 87, 34, .3)
+}
+
+.mbsc-ios-orange.mbsc-range-day:after {
+ background-color: #fdefea
+}
+
+.mbsc-ios-orange.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-range-hover:before {
+ border-color: #e6e6e6
+}
+
+.mbsc-ios-orange.mbsc-selected .mbsc-calendar-cell-text {
+ background: #ff5722;
+ border-color: #ff5722;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios-orange.mbsc-focus .mbsc-calendar-day-text {
+ border-color: rgba(0, 0, 0, .5);
+ box-shadow: none
+}
+
+.mbsc-ios-orange.mbsc-calendar-mark {
+ background: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-calendar-label {
+ color: #5ac8fa
+}
+
+.mbsc-ios-orange.mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-calendar-label-active .mbsc-calendar-label-inner,
+.mbsc-ios-orange.mbsc-calendar-label-dragging .mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-calendar-label-active .mbsc-calendar-label-text,
+.mbsc-ios-orange.mbsc-calendar-label-dragging .mbsc-calendar-label-text {
+ color: inherit
+}
+
+.mbsc-ios-orange.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-calendar-popup .mbsc-calendar-cell,
+.mbsc-ios-orange.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-ios-orange.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-calendar-grid {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-calendar-month-title {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-checkbox-box {
+ color: #ff6331
+}
+
+.mbsc-ios-orange.mbsc-picker .mbsc-popup-arrow,
+.mbsc-ios-orange.mbsc-picker .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-picker-header {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-datepicker .mbsc-calendar,
+.mbsc-ios-orange.mbsc-datepicker .mbsc-calendar-cell,
+.mbsc-ios-orange.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-datepicker-bottom.mbsc-datepicker-control-date,
+.mbsc-ios-orange.mbsc-datepicker-top.mbsc-datepicker-control-date {
+ background: #dadde2
+}
+
+.mbsc-ios-orange.mbsc-datepicker-inline {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-range-control-value.active {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-range-control-text-empty,
+.mbsc-ios-orange.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-ios-orange.mbsc-range-label-clear {
+ color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-range-label-clear:hover {
+ color: #bababa
+}
+
+.mbsc-ios-orange.mbsc-eventcalendar .mbsc-calendar-header,
+.mbsc-ios-orange.mbsc-eventcalendar .mbsc-calendar-week-days {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #efefef
+}
+
+.mbsc-ios-orange.mbsc-event-list-empty {
+ color: #6e6e72
+}
+
+.mbsc-ios-orange.mbsc-event-day.mbsc-list-header {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-event.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-event.mbsc-list-item:after,
+.mbsc-ios-orange.mbsc-event.mbsc-list-item:before {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-event.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-ios-orange.mbsc-event.mbsc-list-item.mbsc-focus .mbsc-list-item-background,
+.mbsc-ios-orange.mbsc-event.mbsc-list-item.mbsc-selected .mbsc-list-item-background {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios-orange.mbsc-event-color {
+ background: #5ac8fa
+}
+
+.mbsc-ios-orange.mbsc-eventcalendar-schedule .mbsc-calendar-day,
+.mbsc-ios-orange.mbsc-schedule-wrapper {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-schedule-header,
+.mbsc-ios-orange.mbsc-schedule-header-item {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-schedule-header-day-today {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(255, 87, 34, .3)
+}
+
+.mbsc-ios-orange.mbsc-schedule-header-day.mbsc-selected,
+.mbsc-ios-orange.mbsc-schedule-header-dayname-curr {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-schedule-header-day.mbsc-selected {
+ background: #ff5722;
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-schedule-header-dayname-curr {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-schedule-date-header {
+ background: #fff;
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-schedule-grid-wrapper {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-schedule-all-day-wrapper {
+ background: #fff;
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-schedule-all-day-text,
+.mbsc-ios-orange.mbsc-schedule-timezone-label {
+ color: #8c8c8c
+}
+
+.mbsc-ios-orange.mbsc-schedule-all-day-item:after,
+.mbsc-ios-orange.mbsc-schedule-column,
+.mbsc-ios-orange.mbsc-schedule-item,
+.mbsc-ios-orange.mbsc-schedule-resource,
+.mbsc-ios-orange.mbsc-schedule-resource-group,
+.mbsc-ios-orange.mbsc-timeline-column,
+.mbsc-ios-orange.mbsc-timeline-day:after,
+.mbsc-ios-orange.mbsc-timeline-footer,
+.mbsc-ios-orange.mbsc-timeline-footer-column,
+.mbsc-ios-orange.mbsc-timeline-footer-date,
+.mbsc-ios-orange.mbsc-timeline-footer-week,
+.mbsc-ios-orange.mbsc-timeline-header,
+.mbsc-ios-orange.mbsc-timeline-header-column,
+.mbsc-ios-orange.mbsc-timeline-header-date,
+.mbsc-ios-orange.mbsc-timeline-header-month,
+.mbsc-ios-orange.mbsc-timeline-header-week,
+.mbsc-ios-orange.mbsc-timeline-resource,
+.mbsc-ios-orange.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-orange.mbsc-timeline-resource-header-cont,
+.mbsc-ios-orange.mbsc-timeline-row,
+.mbsc-ios-orange.mbsc-timeline-row-date,
+.mbsc-ios-orange.mbsc-timeline-row-group:after,
+.mbsc-ios-orange.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-orange.mbsc-timeline-sidebar-header-cont,
+.mbsc-ios-orange.mbsc-timeline-sidebar-resource,
+.mbsc-ios-orange.mbsc-timeline-slot-header,
+.mbsc-ios-orange.mbsc-timeline-slots {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-schedule-cursor-time,
+.mbsc-ios-orange.mbsc-schedule-time,
+.mbsc-ios-orange.mbsc-timeline-header-column {
+ color: #8c8c8c
+}
+
+.mbsc-ios-orange.mbsc-schedule-event {
+ color: #5ac8fa
+}
+
+.mbsc-ios-orange.mbsc-schedule-event:after {
+ background: hsla(0, 0%, 100%, .9)
+}
+
+.mbsc-ios-orange.mbsc-schedule-event-range,
+.mbsc-ios-orange.mbsc-schedule-event-title {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-schedule-event-active .mbsc-schedule-event-inner,
+.mbsc-ios-orange.mbsc-schedule-event-dragging .mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-schedule-event-active .mbsc-schedule-event-range,
+.mbsc-ios-orange.mbsc-schedule-event-active .mbsc-schedule-event-title,
+.mbsc-ios-orange.mbsc-schedule-event-dragging .mbsc-schedule-event-range,
+.mbsc-ios-orange.mbsc-schedule-event-dragging .mbsc-schedule-event-title {
+ color: inherit
+}
+
+.mbsc-ios-orange.mbsc-schedule-time-indicator {
+ border-color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-schedule-time-indicator-day:before {
+ background: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-schedule-cursor-time,
+.mbsc-ios-orange.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #888
+}
+
+.mbsc-ios-orange.mbsc-timeline-footer-bg,
+.mbsc-ios-orange.mbsc-timeline-header-bg,
+.mbsc-ios-orange.mbsc-timeline-header-text,
+.mbsc-ios-orange.mbsc-timeline-resource-bg,
+.mbsc-ios-orange.mbsc-timeline-resource-dragged,
+.mbsc-ios-orange.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-orange.mbsc-timeline-resource-header-cont,
+.mbsc-ios-orange.mbsc-timeline-row-fixed,
+.mbsc-ios-orange.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-orange.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-ios-orange.mbsc-timeline-header-active:after {
+ background-color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-ios-orange.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-ios-orange.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-ios-orange.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-ios-orange.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-ios-orange.mbsc-timeline-resource-drop-invalid {
+ background-color: #d8332a
+}
+
+.mbsc-ios-orange.mbsc-form-control-wrapper {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-form-control-wrapper:after,
+.mbsc-ios-orange.mbsc-form-control-wrapper:before {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-form-control-wrapper.mbsc-error+.mbsc-form-control-wrapper:before,
+.mbsc-ios-orange.mbsc-form-control-wrapper.mbsc-error:after {
+ border-color: #d8332a
+}
+
+.mbsc-ios-orange.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios-orange.mbsc-textfield-wrapper-underline {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-label,
+.mbsc-ios-orange.mbsc-textfield {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-textfield-box,
+.mbsc-ios-orange.mbsc-textfield-outline {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-textfield-outline {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-select-icon,
+.mbsc-ios-orange.mbsc-textfield-icon {
+ color: #8c8c8c
+}
+
+.mbsc-ios-orange.mbsc-textfield-box.mbsc-error,
+.mbsc-ios-orange.mbsc-textfield-outline.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-orange.mbsc-error-message {
+ color: #d8332a
+}
+
+.mbsc-ios-orange.mbsc-select,
+.mbsc-ios-orange.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios-orange.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-textarea-inner.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-orange.mbsc-textfield-tag {
+ background: #e6e6e6
+}
+
+.mbsc-ios-orange.mbsc-textfield-tag-clear {
+ color: #8c8c8c
+}
+
+.mbsc-ios-orange.mbsc-list-item {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-list-item:after,
+.mbsc-ios-orange.mbsc-list-item:before {
+ border-top: 1px solid #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-list-header {
+ background: #f9f9fb;
+ border-color: #d4d4d4;
+ color: #6e6e72
+}
+
+.mbsc-ios-orange.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios-orange.mbsc-page {
+ background: #fcfcfd;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-page a {
+ color: #ff5722
+}
+
+.mbsc-ios-orange .mbsc-block-title,
+.mbsc-ios-orange .mbsc-form-group-title {
+ color: #6e6e6e
+}
+
+.mbsc-ios-orange.mbsc-popup-arrow {
+ background: #fcfcfd;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-orange.mbsc-popup-bottom,
+.mbsc-ios-orange.mbsc-popup-top {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-popup-body {
+ background: #fcfcfd;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-popup-body-anchored,
+.mbsc-ios-orange.mbsc-popup-body-center,
+.mbsc-ios-orange.mbsc-popup-body-round {
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12)
+}
+
+.mbsc-ios-orange.mbsc-popup-buttons,
+.mbsc-ios-orange.mbsc-popup-header-center,
+.mbsc-ios-orange.mbsc-popup-header-no-buttons {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-popup-buttons-bottom,
+.mbsc-ios-orange.mbsc-popup-buttons-top {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-popup-button-flex.mbsc-button-flat.mbsc-font {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-popup-button-flex.mbsc-font.mbsc-focus,
+.mbsc-ios-orange.mbsc-popup-button-flex.mbsc-font.mbsc-hover {
+ background: #f2f2f2
+}
+
+.mbsc-ios-orange.mbsc-popup-button-flex.mbsc-font.mbsc-active {
+ background: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-popup-button-flex.mbsc-button.mbsc-disabled {
+ color: rgba(255, 87, 34, .2)
+}
+
+.mbsc-ios-orange.mbsc-radio-box:after {
+ border-color: #ff6331
+}
+
+.mbsc-ios-orange.mbsc-radio-label.mbsc-disabled {
+ color: #ccc
+}
+
+.mbsc-ios-orange.mbsc-scroller {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-scroller-bottom,
+.mbsc-ios-orange.mbsc-scroller-top {
+ background: #dadde2
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-overlay {
+ background: linear-gradient(#fff, hsla(0, 0%, 100%, 0) 52%, hsla(0, 0%, 100%, 0) 0, #fff)
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-overlay-bottom,
+.mbsc-ios-orange.mbsc-scroller-wheel-overlay-top {
+ background: linear-gradient(#dadde2, rgba(218, 221, 226, 0) 52%, rgba(218, 221, 226, 0) 0, #dadde2)
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-line {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-item {
+ color: #9e9e9e
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-ios-orange.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-ios-orange.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-ios-orange.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(255, 87, 34, .15)
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-item-2d,
+.mbsc-ios-orange.mbsc-scroller-wheel-item.mbsc-selected {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-cont-3d {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-item-3d {
+ color: #ababab
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-header,
+.mbsc-ios-orange.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi.mbsc-selected-3d {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-scroller-wheel-cont-bottom.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios-orange.mbsc-scroller-wheel-cont-top.mbsc-scroller-wheel-cont-3d {
+ background: #dadde2
+}
+
+.mbsc-ios-orange.mbsc-scroller-pointer.mbsc-scroller,
+.mbsc-ios-orange.mbsc-scroller-pointer.mbsc-scroller-inline,
+.mbsc-ios-orange.mbsc-scroller-wheel-cont-inline.mbsc-scroller-wheel-cont-3d {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-segmented {
+ background: #e6e6e6
+}
+
+.mbsc-ios-orange.mbsc-segmented-item:before {
+ border-color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-orange.mbsc-segmented-item.mbsc-focus .mbsc-segmented-selectbox {
+ box-shadow: inset 0 0 0 .0625em rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios-orange.mbsc-segmented-selectbox-inner {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-segmented-selectbox-inner.mbsc-selected {
+ box-shadow: 3px 3px 8px -4px #c2c2c2
+}
+
+.mbsc-ios-orange.mbsc-segmented-button.mbsc-button {
+ background: transparent;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-segmented-primary {
+ background: #3f97f6
+}
+
+.mbsc-ios-orange.mbsc-segmented-secondary {
+ background: #90979e
+}
+
+.mbsc-ios-orange.mbsc-segmented-success {
+ background: #43be5f
+}
+
+.mbsc-ios-orange.mbsc-segmented-warning {
+ background: #f8b042
+}
+
+.mbsc-ios-orange.mbsc-segmented-danger {
+ background: #f5504e
+}
+
+.mbsc-ios-orange.mbsc-segmented-info {
+ background: #5bb7c5
+}
+
+.mbsc-ios-orange.mbsc-segmented-light {
+ background: #fff
+}
+
+.mbsc-ios-orange.mbsc-segmented-dark {
+ background: #47494a
+}
+
+.mbsc-ios-orange.mbsc-select-scroller-inline {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-select-filter-cont {
+ background-color: #fcfcfd
+}
+
+.mbsc-ios-orange.mbsc-select-filter-clear {
+ color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-select-filter-clear:hover {
+ color: #bababa
+}
+
+.mbsc-ios-orange.mbsc-select-empty-text {
+ color: #9e9e9e
+}
+
+.mbsc-ios-orange.mbsc-select-group-wheel {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-orange.mbsc-select-group-wheel-multi .mbsc-scroller-wheel-item-3d {
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-select-group-wheel-multi .mbsc-selected-3d {
+ color: #ff5722
+}
+
+.mbsc-ios-orange.mbsc-stepper-input {
+ border-color: #e6e6e6;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-stepper-input.mbsc-disabled {
+ color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-orange.mbsc-stepper-button {
+ background: #e6e6e6;
+ color: #000
+}
+
+.mbsc-ios-orange.mbsc-stepper-plus:before {
+ border-color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-orange.mbsc-switch-track:after {
+ background: #ededed
+}
+
+.mbsc-ios-orange.mbsc-switch-track.mbsc-focus:after {
+ box-shadow: 0 0 0 .125em rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios-orange.mbsc-switch-track.mbsc-checked:after {
+ background: #4cd764
+}
+
+.mbsc-material-orange.mbsc-button-standard {
+ background: #cfcfcf;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-button-standard.mbsc-hover {
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-orange.mbsc-button-standard.mbsc-active,
+.mbsc-material-orange.mbsc-button-standard.mbsc-focus {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-orange.mbsc-button-flat,
+.mbsc-material-orange.mbsc-button-outline {
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-flat.mbsc-hover,
+.mbsc-material-orange.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-outline.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange.mbsc-button-flat.mbsc-focus,
+.mbsc-material-orange.mbsc-button-outline.mbsc-focus {
+ background: rgba(0, 0, 0, .3)
+}
+
+.mbsc-material-orange.mbsc-button-outline {
+ border-color: #000
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-flat.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-flat.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-flat.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-flat.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-success.mbsc-button-flat.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-flat.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-flat.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-flat.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-flat.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-flat.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-info.mbsc-button-flat.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-flat.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-flat.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-flat.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-flat.mbsc-active,
+.mbsc-material-orange.mbsc-button-light.mbsc-button-flat.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-flat.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-outline.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-orange.mbsc-button-primary.mbsc-button-outline.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-outline.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-orange.mbsc-button-secondary.mbsc-button-outline.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-success.mbsc-button-outline.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-orange.mbsc-button-success.mbsc-button-outline.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-outline.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-orange.mbsc-button-danger.mbsc-button-outline.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-outline.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-orange.mbsc-button-warning.mbsc-button-outline.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-info.mbsc-button-outline.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-orange.mbsc-button-info.mbsc-button-outline.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-outline.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-orange.mbsc-button-dark.mbsc-button-outline.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-material-orange.mbsc-button-light.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-orange.mbsc-button-light.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-orange.mbsc-calendar-wrapper:after {
+ box-shadow: inset 0 .5em .25em -.5em rgba(0, 0, 0, .5)
+}
+
+.mbsc-material-orange.mbsc-calendar-button.mbsc-button {
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-calendar-picker-slide,
+.mbsc-material-orange.mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-orange.mbsc-calendar-week-day {
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-orange.mbsc-calendar-cell-text {
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-calendar-today,
+.mbsc-material-orange.mbsc-calendar-week-nr {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-orange.mbsc-hover .mbsc-calendar-cell-text {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-orange.mbsc-range-hover:before {
+ border-color: #e6e6e6
+}
+
+.mbsc-material-orange.mbsc-range-day:after {
+ background-color: rgba(255, 87, 34, .25)
+}
+
+.mbsc-material-orange.mbsc-selected .mbsc-calendar-cell-text {
+ background: #ff5722;
+ border-color: #ff5722;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-calendar-mark {
+ background: #ff5722
+}
+
+.mbsc-material-orange.mbsc-calendar-label {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-calendar-label.mbsc-calendar-label-active,
+.mbsc-material-orange.mbsc-calendar-label.mbsc-calendar-label-dragging {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange .mbsc-calendar-label.mbsc-calendar-label-active .mbsc-calendar-label-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-orange.mbsc-calendar-text-more {
+ box-shadow: none
+}
+
+.mbsc-material-orange.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-material-orange.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-material-orange.mbsc-calendar-height-md .mbsc-calendar-day,
+.mbsc-material-orange.mbsc-calendar-height-md .mbsc-calendar-day:after,
+.mbsc-material-orange.mbsc-calendar-height-md .mbsc-calendar-week-day {
+ border-color: #cfcfcf
+}
+
+.mbsc-material-orange.mbsc-calendar-month-title {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-checkbox-box {
+ border-color: #000;
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-checkbox-box:after {
+ border-color: #fff
+}
+
+.mbsc-material-orange.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-orange.mbsc-datepicker-inline {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-datepicker-inline .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-orange.mbsc-range-control-wrapper {
+ border-bottom: 1px solid rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange.mbsc-range-control-wrapper .mbsc-material-orange.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-range-control-label.active,
+.mbsc-material-orange.mbsc-range-control-value.active {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-range-control-text-empty,
+.mbsc-material-orange.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-orange.mbsc-range-label-clear {
+ color: gray
+}
+
+.mbsc-material-orange.mbsc-range-label-clear:hover {
+ color: #4d4d4d
+}
+
+.mbsc-material-orange.mbsc-eventcalendar {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-material-orange.mbsc-event-list-empty {
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-orange.mbsc-event-day.mbsc-list-header,
+.mbsc-material-orange.mbsc-schedule-date-header {
+ background: #fff;
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-orange.mbsc-colored-event.mbsc-list-item {
+ background: #ff5722;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-event.mbsc-list-item.mbsc-focus,
+.mbsc-material-orange.mbsc-event.mbsc-list-item.mbsc-selected {
+ box-shadow: 0 .25em .5em 0 rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-orange.mbsc-event.mbsc-list-item.mbsc-focus:before,
+.mbsc-material-orange.mbsc-event.mbsc-list-item.mbsc-selected:before {
+ border-radius: .25em;
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-orange.mbsc-event-color {
+ background: #ff5722
+}
+
+.mbsc-material-orange.mbsc-schedule-header-dayname {
+ color: #424548
+}
+
+.mbsc-material-orange.mbsc-schedule-header-day {
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-schedule-header-day-today,
+.mbsc-material-orange.mbsc-schedule-header-dayname-curr {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(255, 87, 34, .3)
+}
+
+.mbsc-material-orange.mbsc-schedule-header-day.mbsc-selected {
+ background-color: #ff5722;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-schedule-all-day-item:after,
+.mbsc-material-orange.mbsc-schedule-column,
+.mbsc-material-orange.mbsc-schedule-item,
+.mbsc-material-orange.mbsc-schedule-resource,
+.mbsc-material-orange.mbsc-schedule-resource-group,
+.mbsc-material-orange.mbsc-schedule-time-col,
+.mbsc-material-orange.mbsc-timeline-column,
+.mbsc-material-orange.mbsc-timeline-day:after,
+.mbsc-material-orange.mbsc-timeline-footer,
+.mbsc-material-orange.mbsc-timeline-footer-column,
+.mbsc-material-orange.mbsc-timeline-footer-date,
+.mbsc-material-orange.mbsc-timeline-footer-week,
+.mbsc-material-orange.mbsc-timeline-header,
+.mbsc-material-orange.mbsc-timeline-header-column,
+.mbsc-material-orange.mbsc-timeline-header-date,
+.mbsc-material-orange.mbsc-timeline-header-month,
+.mbsc-material-orange.mbsc-timeline-header-week,
+.mbsc-material-orange.mbsc-timeline-resource,
+.mbsc-material-orange.mbsc-timeline-resource-footer-cont,
+.mbsc-material-orange.mbsc-timeline-resource-header-cont,
+.mbsc-material-orange.mbsc-timeline-row,
+.mbsc-material-orange.mbsc-timeline-row-date,
+.mbsc-material-orange.mbsc-timeline-row-group:after,
+.mbsc-material-orange.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-orange.mbsc-timeline-sidebar-header-cont,
+.mbsc-material-orange.mbsc-timeline-sidebar-resource,
+.mbsc-material-orange.mbsc-timeline-slot-header,
+.mbsc-material-orange.mbsc-timeline-slots {
+ border-color: #cfcfcf
+}
+
+.mbsc-material-orange.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #cfcfcf
+}
+
+.mbsc-material-orange.mbsc-schedule-time-wrapper-end:before,
+.mbsc-material-orange.mbsc-schedule-time-wrapper:after {
+ border-bottom: 1px solid #cfcfcf
+}
+
+.mbsc-material-orange.mbsc-schedule-all-day-text,
+.mbsc-material-orange.mbsc-schedule-time,
+.mbsc-material-orange.mbsc-schedule-timezone-label {
+ color: #424548
+}
+
+.mbsc-material-orange.mbsc-schedule-time-indicator {
+ border-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-schedule-time-indicator-day:before {
+ background: #ff5722
+}
+
+.mbsc-material-orange.mbsc-schedule-cursor-time,
+.mbsc-material-orange.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-schedule-event {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-material-orange.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-material-orange.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange.mbsc-schedule-event-active .mbsc-schedule-event-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-orange.mbsc-timeline-footer-bg,
+.mbsc-material-orange.mbsc-timeline-header-bg,
+.mbsc-material-orange.mbsc-timeline-header-text,
+.mbsc-material-orange.mbsc-timeline-resource-bg,
+.mbsc-material-orange.mbsc-timeline-resource-dragged,
+.mbsc-material-orange.mbsc-timeline-resource-footer-cont,
+.mbsc-material-orange.mbsc-timeline-resource-header-cont,
+.mbsc-material-orange.mbsc-timeline-row-fixed,
+.mbsc-material-orange.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-orange.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-material-orange.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-timeline-header-active {
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-timeline-header-active:after {
+ background-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-material-orange.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-orange.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-orange.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-material-orange.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-material-orange.mbsc-timeline-resource-drop-invalid {
+ background-color: #de3226
+}
+
+.mbsc-material-orange.mbsc-textfield {
+ border-bottom-color: rgba(0, 0, 0, .42);
+ color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-orange.mbsc-textfield.mbsc-hover {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-orange.mbsc-textfield.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-orange.mbsc-select-icon,
+.mbsc-material-orange.mbsc-textfield-icon {
+ color: rgba(0, 0, 0, .54)
+}
+
+.mbsc-material-orange.mbsc-textfield-ripple {
+ background-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-textfield-ripple.mbsc-error {
+ background-color: #de3226
+}
+
+.mbsc-material-orange.mbsc-label {
+ color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-material-orange.mbsc-label-floating.mbsc-focus,
+.mbsc-material-orange.mbsc-label-stacked.mbsc-focus {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-error-message,
+.mbsc-material-orange.mbsc-label.mbsc-error {
+ color: #de3226
+}
+
+.mbsc-material-orange.mbsc-select {
+ background: #fff
+}
+
+.mbsc-material-orange.mbsc-textfield-box.mbsc-select,
+.mbsc-material-orange.mbsc-textfield-inner-box {
+ background: #f5f5f5
+}
+
+.mbsc-material-orange.mbsc-textfield-box.mbsc-select.mbsc-hover,
+.mbsc-material-orange.mbsc-textfield-inner-box.mbsc-hover {
+ background: #ededed
+}
+
+.mbsc-material-orange.mbsc-textfield-box.mbsc-select.mbsc-focus,
+.mbsc-material-orange.mbsc-textfield-inner-box.mbsc-focus {
+ background: #e3e3e3
+}
+
+.mbsc-material-orange.mbsc-textfield-fieldset {
+ border-color: rgba(0, 0, 0, .42)
+}
+
+.mbsc-material-orange.mbsc-textfield-fieldset.mbsc-hover {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-orange.mbsc-textfield-fieldset.mbsc-focus {
+ border-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-textfield-fieldset.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-orange.mbsc-textfield-fieldset.disabled {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-orange.mbsc-textfield-tag {
+ background: #d4d4d4
+}
+
+.mbsc-material-orange.mbsc-textfield-tag-clear {
+ color: rgba(0, 0, 0, .54)
+}
+
+.mbsc-material-orange.mbsc-list-header {
+ background: #fff;
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-orange.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-orange.mbsc-page {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-material-orange .mbsc-block-title,
+.mbsc-material-orange .mbsc-form-group-title,
+.mbsc-material-orange.mbsc-page a {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-popup-body {
+ background: #fff;
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12);
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-popup-arrow {
+ background: #fff;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange.mbsc-popup-button.mbsc-font {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-radio-box {
+ border-color: #000;
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-scroller-wheel-cont:after,
+.mbsc-material-orange.mbsc-scroller-wheel-cont:before {
+ border-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-scroller-wheel-multi:after,
+.mbsc-material-orange.mbsc-scroller-wheel-multi:before {
+ border-color: transparent
+}
+
+.mbsc-material-orange.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-material-orange.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-material-orange.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-material-orange.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-orange.mbsc-wheel-checkmark:after {
+ border-color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-segmented-button.mbsc-button {
+ border-color: #ff5722;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material-orange.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #ff5722;
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-orange.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-select-filter-clear {
+ color: gray
+}
+
+.mbsc-material-orange.mbsc-select-filter-clear:hover {
+ color: #4d4d4d
+}
+
+.mbsc-material-orange.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ background: rgba(0, 0, 0, .15);
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-select-group-wheel-multi .mbsc-selected {
+ color: #ff5722
+}
+
+.mbsc-material-orange.mbsc-stepper-input {
+ border-color: #d6d6d6;
+ color: #2b2b2b
+}
+
+.mbsc-material-orange.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-material-orange.mbsc-stepper-button {
+ background: #d6d6d6;
+ color: #d6d6d6
+}
+
+.mbsc-material-orange.mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-material-orange.mbsc-color-none .mbsc-stepper-inner {
+ color: #000
+}
+
+.mbsc-material-orange.mbsc-stepper-button.mbsc-disabled {
+ background: #d6d6d6
+}
+
+.mbsc-material-orange.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-material-orange.mbsc-switch-track {
+ background: #c4c4c4
+}
+
+.mbsc-material-orange.mbsc-switch-track.mbsc-checked {
+ background: rgba(255, 87, 34, .3)
+}
+
+.mbsc-material-orange.mbsc-switch-track.mbsc-disabled {
+ background: #e8e8e8
+}
+
+.mbsc-material-orange.mbsc-switch-handle {
+ background: #fff;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-orange.mbsc-switch-handle.mbsc-checked {
+ background: #ff5722
+}
+
+.mbsc-material-orange.mbsc-switch-handle.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-material-orange.mbsc-switch-handle:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-orange.mbsc-button-standard {
+ background: #ccc;
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-button-standard.mbsc-hover {
+ border-color: #474747
+}
+
+.mbsc-windows-orange.mbsc-button-standard.mbsc-active {
+ background: #474747;
+ border-color: #474747
+}
+
+.mbsc-windows-orange.mbsc-button-flat {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-button-flat.mbsc-active {
+ background: #f2f2f2;
+ border-color: #f2f2f2;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-button-outline {
+ border: .125em solid #999;
+ color: #999
+}
+
+.mbsc-windows-orange.mbsc-button-outline.mbsc-hover {
+ border-color: gray
+}
+
+.mbsc-windows-orange.mbsc-button-outline.mbsc-active {
+ background: gray;
+ border-color: gray;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #000
+}
+
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ border-color: #3f97f6;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ border-color: #90979e;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ border-color: #43be5f;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ border-color: #f5504e;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ border-color: #f8b042;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ border-color: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ border-color: #47494a;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ border-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-flat.mbsc-active {
+ background: #88bff9;
+ border-color: #88bff9
+}
+
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-flat.mbsc-active {
+ background: #b9bdc2;
+ border-color: #b9bdc2
+}
+
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-flat.mbsc-active {
+ background: #7cd28f;
+ border-color: #7cd28f
+}
+
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-flat.mbsc-active {
+ background: #f99896;
+ border-color: #f99896
+}
+
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-flat.mbsc-active {
+ background: #fbcf8c;
+ border-color: #fbcf8c
+}
+
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-flat.mbsc-active {
+ background: #94d0d9;
+ border-color: #94d0d9
+}
+
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-flat.mbsc-active {
+ background: #6c7071;
+ border-color: #6c7071
+}
+
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-flat.mbsc-active {
+ background: #fff;
+ border-color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-standard.mbsc-hover {
+ border-color: #0964c6
+}
+
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-primary.mbsc-button-standard.mbsc-active {
+ background: #0964c6;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-standard.mbsc-hover {
+ border-color: #5d646b
+}
+
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-secondary.mbsc-button-standard.mbsc-active {
+ background: #5d646b;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-standard.mbsc-hover {
+ border-color: #287339
+}
+
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-success.mbsc-button-standard.mbsc-active {
+ background: #287339;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-standard.mbsc-hover {
+ border-color: #d10e0c
+}
+
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-danger.mbsc-button-standard.mbsc-active {
+ background: #d10e0c;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-standard.mbsc-hover {
+ border-color: #cc7f08
+}
+
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-warning.mbsc-button-standard.mbsc-active {
+ background: #cc7f08;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-standard.mbsc-hover {
+ border-color: #317e89
+}
+
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-info.mbsc-button-standard.mbsc-active {
+ background: #317e89;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-standard.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-dark.mbsc-button-standard.mbsc-active {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-standard.mbsc-hover {
+ border-color: #999
+}
+
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-windows-orange.mbsc-button-light.mbsc-button-standard.mbsc-active {
+ background: #999;
+ color: #47494a
+}
+
+.mbsc-windows-orange.mbsc-calendar,
+.mbsc-windows-orange.mbsc-calendar-button.mbsc-button {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-calendar-button.mbsc-button.mbsc-active {
+ background: #f2f2f2;
+ border-color: #f2f2f2
+}
+
+.mbsc-windows-orange.mbsc-calendar-button.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #000
+}
+
+.mbsc-windows-orange.mbsc-calendar-wrapper-fixed {
+ border-bottom: 1px solid #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-calendar-slide {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-calendar-week-day {
+ color: #333
+}
+
+.mbsc-windows-orange.mbsc-calendar-today,
+.mbsc-windows-orange.mbsc-calendar-week-nr {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-range-day {
+ border-left-color: rgba(255, 87, 34, .25)
+}
+
+.mbsc-windows-orange.mbsc-range-day-end.mbsc-rtl,
+.mbsc-windows-orange.mbsc-range-day-start.mbsc-ltr {
+ border-left-color: transparent
+}
+
+.mbsc-windows-orange.mbsc-range-hover .mbsc-calendar-cell-inner {
+ border-bottom-color: rgba(0, 0, 0, .1);
+ border-style: dashed;
+ border-top-color: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-orange.mbsc-range-day .mbsc-calendar-cell-inner,
+.mbsc-windows-orange.mbsc-selected .mbsc-calendar-cell-inner {
+ background: rgba(255, 87, 34, .25)
+}
+
+.mbsc-windows-orange.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-inner {
+ background-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-calendar-day-colors.mbsc-selected:after {
+ border: 2px solid #ff5722
+}
+
+.mbsc-windows-orange.mbsc-calendar-cell.mbsc-focus:after {
+ border: 1px solid #000
+}
+
+.mbsc-windows-orange.mbsc-calendar-cell.mbsc-hover:after {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-orange.mbsc-calendar-mark {
+ background: rgba(0, 0, 0, .5)
+}
+
+.mbsc-windows-orange.mbsc-calendar-label {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-calendar-label.mbsc-calendar-label-active {
+ outline: 1px solid #000
+}
+
+.mbsc-windows-orange.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-calendar-height-md .mbsc-calendar-week-day,
+.mbsc-windows-orange.mbsc-calendar-width-md .mbsc-calendar-day,
+.mbsc-windows-orange.mbsc-calendar-width-md .mbsc-calendar-day:after {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-calendar-popup .mbsc-popup,
+.mbsc-windows-orange.mbsc-calendar-popup .mbsc-popup-arrow {
+ background: #fff;
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-calendar-month-title {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-checkbox-box {
+ border-color: #000;
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-checkbox-box:after {
+ border-color: #fff
+}
+
+.mbsc-windows-orange.mbsc-checkbox-box:before {
+ background: #737373
+}
+
+.mbsc-windows-orange.mbsc-checkbox-box.mbsc-active {
+ background: #737373;
+ border-color: #737373
+}
+
+.mbsc-windows-orange.mbsc-datepicker-inline {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-datepicker-tab,
+.mbsc-windows-orange.mbsc-picker-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-range-control-wrapper {
+ border-bottom: 1px solid #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-range-control-wrapper .mbsc-windows-orange.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-range-control-wrapper .mbsc-windows-orange.mbsc-segmented-button.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #000
+}
+
+.mbsc-windows-orange.mbsc-range-control-label.active,
+.mbsc-windows-orange.mbsc-range-control-value.active {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-range-control-text-empty,
+.mbsc-windows-orange.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-windows-orange.mbsc-range-label-clear {
+ color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-windows-orange.mbsc-range-label-clear:hover {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-eventcalendar {
+ background: #fff
+}
+
+.mbsc-windows-orange.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-windows-orange.mbsc-event-list-empty {
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-windows-orange.mbsc-event-group {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-event-day.mbsc-list-header,
+.mbsc-windows-orange.mbsc-event.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-event.mbsc-focus,
+.mbsc-windows-orange.mbsc-event.mbsc-selected {
+ background: rgba(255, 87, 34, .25)
+}
+
+.mbsc-windows-orange.mbsc-event-color {
+ background: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-wrapper {
+ background: #fff
+}
+
+.mbsc-windows-orange.mbsc-schedule-header-day {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-schedule-header-item {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-schedule-header-day-today {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-header-dayname.mbsc-selected:after {
+ background: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-date-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-schedule-time-indicator,
+.mbsc-windows-orange.mbsc-schedule-time-indicator-day {
+ border-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-cursor-time,
+.mbsc-windows-orange.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-time-indicator-time {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-all-day-item:after,
+.mbsc-windows-orange.mbsc-schedule-column,
+.mbsc-windows-orange.mbsc-schedule-item,
+.mbsc-windows-orange.mbsc-schedule-resource,
+.mbsc-windows-orange.mbsc-schedule-resource-group,
+.mbsc-windows-orange.mbsc-schedule-time-col,
+.mbsc-windows-orange.mbsc-timeline-column,
+.mbsc-windows-orange.mbsc-timeline-day:after,
+.mbsc-windows-orange.mbsc-timeline-footer,
+.mbsc-windows-orange.mbsc-timeline-footer-column,
+.mbsc-windows-orange.mbsc-timeline-footer-date,
+.mbsc-windows-orange.mbsc-timeline-footer-week,
+.mbsc-windows-orange.mbsc-timeline-header,
+.mbsc-windows-orange.mbsc-timeline-header-column,
+.mbsc-windows-orange.mbsc-timeline-header-date,
+.mbsc-windows-orange.mbsc-timeline-header-month,
+.mbsc-windows-orange.mbsc-timeline-header-week,
+.mbsc-windows-orange.mbsc-timeline-resource,
+.mbsc-windows-orange.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-orange.mbsc-timeline-resource-header-cont,
+.mbsc-windows-orange.mbsc-timeline-row,
+.mbsc-windows-orange.mbsc-timeline-row-date,
+.mbsc-windows-orange.mbsc-timeline-row-group:after,
+.mbsc-windows-orange.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-orange.mbsc-timeline-sidebar-header-cont,
+.mbsc-windows-orange.mbsc-timeline-sidebar-resource,
+.mbsc-windows-orange.mbsc-timeline-slot-header,
+.mbsc-windows-orange.mbsc-timeline-slots {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-schedule-time-wrapper {
+ border-top: 1px solid #e6e6e6;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-schedule-time-wrapper-end {
+ border-bottom: 1px solid #e6e6e6;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-schedule-all-day-text,
+.mbsc-windows-orange.mbsc-schedule-time-cont,
+.mbsc-windows-orange.mbsc-schedule-timezone-label {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-schedule-event {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-windows-orange.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ outline: 1px solid #000
+}
+
+.mbsc-windows-orange.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-windows-orange.mbsc-timeline-footer-bg,
+.mbsc-windows-orange.mbsc-timeline-header-bg,
+.mbsc-windows-orange.mbsc-timeline-header-text,
+.mbsc-windows-orange.mbsc-timeline-resource-bg,
+.mbsc-windows-orange.mbsc-timeline-resource-dragged,
+.mbsc-windows-orange.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-orange.mbsc-timeline-resource-header-cont,
+.mbsc-windows-orange.mbsc-timeline-row-fixed,
+.mbsc-windows-orange.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-orange.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-windows-orange.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange .mbsc-timeline-header-active:after {
+ background-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-windows-orange.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .084)
+}
+
+.mbsc-windows-orange.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-windows-orange.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-windows-orange.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-windows-orange.mbsc-timeline-resource-drop-invalid {
+ background-color: #a4262c
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper.mbsc-disabled {
+ color: #6b6b6b
+}
+
+.mbsc-windows-orange.mbsc-textfield {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-textfield-box,
+.mbsc-windows-orange.mbsc-textfield-outline {
+ border-color: #545454
+}
+
+.mbsc-windows-orange.mbsc-textfield.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-orange.mbsc-textfield-box.mbsc-focus,
+.mbsc-windows-orange.mbsc-textfield-outline.mbsc-focus {
+ border-color: #ff5722;
+ box-shadow: inset 0 0 0 1px #ff5722
+}
+
+.mbsc-windows-orange.mbsc-textfield.mbsc-disabled {
+ background: #f2f2f2;
+ border-color: #f2f2f2
+}
+
+.mbsc-windows-orange.mbsc-textfield.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-orange.mbsc-textfield-box.mbsc-error.mbsc-focus,
+.mbsc-windows-orange.mbsc-textfield-outline.mbsc-error.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #a4262c
+}
+
+.mbsc-windows-orange.mbsc-error-message {
+ color: #a4262c
+}
+
+.mbsc-windows-orange.mbsc-label {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper-underline {
+ border-color: #545454
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper-underline.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper-underline.mbsc-focus {
+ border-color: #ff5722;
+ box-shadow: 0 1px 0 0 #ff5722
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper-underline.mbsc-disabled {
+ border-color: #f2f2f2
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper-underline.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-orange.mbsc-textfield-wrapper-underline.mbsc-error.mbsc-focus {
+ box-shadow: 0 1px 0 0 #a4262c
+}
+
+.mbsc-windows-orange.mbsc-textfield-tag {
+ background: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-list-header,
+.mbsc-windows-orange.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-orange.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-windows-orange.mbsc-page {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-page a {
+ color: #ff5722
+}
+
+.mbsc-windows-orange .mbsc-block-title,
+.mbsc-windows-orange .mbsc-form-group-title {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-popup {
+ box-shadow: 0 6px 14px 0 rgba(0, 0, 0, .133), 0 1px 4px 0 rgba(0, 0, 0, .11);
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-popup,
+.mbsc-windows-orange.mbsc-popup-arrow {
+ background: #fff;
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-popup-buttons,
+.mbsc-windows-orange.mbsc-popup-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-orange.mbsc-radio-box {
+ border: .125em solid #000
+}
+
+.mbsc-windows-orange.mbsc-radio-box:after {
+ background: #000
+}
+
+.mbsc-windows-orange.mbsc-radio-box.mbsc-checked {
+ border-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-radio-box.mbsc-active {
+ border-color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-windows-orange.mbsc-radio-box.mbsc-active:after {
+ background: rgba(0, 0, 0, .6)
+}
+
+.mbsc-windows-orange.mbsc-scroller-wheel-wrapper {
+ border-color: #e6e6e6;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-scroller-wheel-line {
+ background: rgba(255, 87, 34, .4)
+}
+
+.mbsc-windows-orange.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-windows-orange.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-windows-orange.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-windows-orange.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-orange.mbsc-wheel-checkmark:after {
+ border-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-segmented-button.mbsc-button {
+ background: #ccc;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-windows-orange.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: #d4d4d4
+}
+
+.mbsc-windows-orange.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #474747;
+ color: #fff
+}
+
+.mbsc-windows-orange.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-select-group-wheel-multi .mbsc-selected,
+.mbsc-windows-orange.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-stepper-input {
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-windows-orange.mbsc-stepper-button {
+ color: #ccc
+}
+
+.mbsc-windows-orange.mbsc-stepper-button.mbsc-hover:before {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-windows-orange.mbsc-stepper-button.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-windows-orange.mbsc-stepper-inner {
+ color: #000
+}
+
+.mbsc-windows-orange.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-windows-orange.mbsc-switch-track.mbsc-checked:before {
+ background: #ff5722;
+ border-color: #ff5722
+}
+
+.mbsc-windows-orange.mbsc-switch-track.mbsc-disabled:before,
+.mbsc-windows-orange.mbsc-switch-track:before {
+ background: none;
+ border-color: #000
+}
+
+.mbsc-windows-orange.mbsc-switch-track.mbsc-active:before {
+ background: #737373;
+ border-color: #737373
+}
+
+.mbsc-windows-orange.mbsc-switch-track.mbsc-focus:after {
+ border-color: #737373
+}
+
+.mbsc-windows-orange.mbsc-switch-handle {
+ background: #000
+}
+
+.mbsc-windows-orange.mbsc-switch-handle.mbsc-checked {
+ background: #fff
+}
+
+.mbsc-windows-orange.mbsc-switch-handle.mbsc-disabled {
+ background: #000
+}
+
+.mbsc-ios-pink.mbsc-button-standard {
+ background: #fff;
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-button-flat {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-button-outline {
+ border: 1px solid #ff78d9;
+ color: #ff78d9
+}
+
+.mbsc-ios-pink.mbsc-button-outline.mbsc-active {
+ background: #ff78d9;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button.mbsc-focus {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-ios-pink.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-ios-pink.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-ios-pink.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-ios-pink.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-ios-pink.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-ios-pink.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-ios-pink.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-ios-pink.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-ios-pink.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-ios-pink.mbsc-button-primary.mbsc-button-outline.mbsc-active {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-ios-pink.mbsc-button-secondary.mbsc-button-outline.mbsc-active {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-ios-pink.mbsc-button-success.mbsc-button-outline.mbsc-active {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-ios-pink.mbsc-button-danger.mbsc-button-outline.mbsc-active {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-ios-pink.mbsc-button-warning.mbsc-button-outline.mbsc-active {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-ios-pink.mbsc-button-info.mbsc-button-outline.mbsc-active {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-ios-pink.mbsc-button-dark.mbsc-button-outline.mbsc-active {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-button-light.mbsc-button-outline {
+ border-color: #bfbfbf;
+ color: #bfbfbf
+}
+
+.mbsc-ios-pink.mbsc-button-light.mbsc-button-outline.mbsc-active {
+ background: #bfbfbf;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-calendar {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-calendar-header,
+.mbsc-ios-pink.mbsc-calendar-wrapper {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-calendar-button.mbsc-button {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-calendar-cell {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-calendar-day:after {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-calendar-today,
+.mbsc-ios-pink.mbsc-calendar-week-nr {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-hover .mbsc-calendar-cell-text {
+ background-color: rgba(245, 115, 208, .3)
+}
+
+.mbsc-ios-pink.mbsc-range-day:after {
+ background-color: #fff
+}
+
+.mbsc-ios-pink.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-range-hover:before {
+ border-color: #e6e6e6
+}
+
+.mbsc-ios-pink.mbsc-selected .mbsc-calendar-cell-text {
+ background: #f573d0;
+ border-color: #f573d0;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios-pink.mbsc-focus .mbsc-calendar-day-text {
+ border-color: rgba(0, 0, 0, .5);
+ box-shadow: none
+}
+
+.mbsc-ios-pink.mbsc-calendar-mark {
+ background: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-calendar-label {
+ color: #5ac8fa
+}
+
+.mbsc-ios-pink.mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-calendar-label-active .mbsc-calendar-label-inner,
+.mbsc-ios-pink.mbsc-calendar-label-dragging .mbsc-calendar-label-inner {
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-calendar-label-active .mbsc-calendar-label-text,
+.mbsc-ios-pink.mbsc-calendar-label-dragging .mbsc-calendar-label-text {
+ color: inherit
+}
+
+.mbsc-ios-pink.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-calendar-popup .mbsc-calendar-cell,
+.mbsc-ios-pink.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-ios-pink.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-calendar-grid {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-calendar-month-title {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-checkbox-box {
+ color: #ff78d9
+}
+
+.mbsc-ios-pink.mbsc-picker .mbsc-popup-arrow,
+.mbsc-ios-pink.mbsc-picker .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-picker-header {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-datepicker .mbsc-calendar,
+.mbsc-ios-pink.mbsc-datepicker .mbsc-calendar-cell,
+.mbsc-ios-pink.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-datepicker-bottom.mbsc-datepicker-control-date,
+.mbsc-ios-pink.mbsc-datepicker-top.mbsc-datepicker-control-date {
+ background: #dadde2
+}
+
+.mbsc-ios-pink.mbsc-datepicker-inline {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-range-control-value.active {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-range-control-text-empty,
+.mbsc-ios-pink.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-ios-pink.mbsc-range-label-clear {
+ color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-range-label-clear:hover {
+ color: #bababa
+}
+
+.mbsc-ios-pink.mbsc-eventcalendar .mbsc-calendar-header,
+.mbsc-ios-pink.mbsc-eventcalendar .mbsc-calendar-week-days {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #efefef
+}
+
+.mbsc-ios-pink.mbsc-event-list-empty {
+ color: #6e6e72
+}
+
+.mbsc-ios-pink.mbsc-event-day.mbsc-list-header {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-event.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-event.mbsc-list-item:after,
+.mbsc-ios-pink.mbsc-event.mbsc-list-item:before {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-event.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-ios-pink.mbsc-event.mbsc-list-item.mbsc-focus .mbsc-list-item-background,
+.mbsc-ios-pink.mbsc-event.mbsc-list-item.mbsc-selected .mbsc-list-item-background {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios-pink.mbsc-event-color {
+ background: #5ac8fa
+}
+
+.mbsc-ios-pink.mbsc-eventcalendar-schedule .mbsc-calendar-day,
+.mbsc-ios-pink.mbsc-schedule-wrapper {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-schedule-header,
+.mbsc-ios-pink.mbsc-schedule-header-item {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-schedule-header-day-today {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(245, 115, 208, .3)
+}
+
+.mbsc-ios-pink.mbsc-schedule-header-day.mbsc-selected,
+.mbsc-ios-pink.mbsc-schedule-header-dayname-curr {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-schedule-header-day.mbsc-selected {
+ background: #f573d0;
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-schedule-header-dayname-curr {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-schedule-date-header {
+ background: #fff;
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-schedule-grid-wrapper {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-schedule-all-day-wrapper {
+ background: #fff;
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-schedule-all-day-text,
+.mbsc-ios-pink.mbsc-schedule-timezone-label {
+ color: #8c8c8c
+}
+
+.mbsc-ios-pink.mbsc-schedule-all-day-item:after,
+.mbsc-ios-pink.mbsc-schedule-column,
+.mbsc-ios-pink.mbsc-schedule-item,
+.mbsc-ios-pink.mbsc-schedule-resource,
+.mbsc-ios-pink.mbsc-schedule-resource-group,
+.mbsc-ios-pink.mbsc-timeline-column,
+.mbsc-ios-pink.mbsc-timeline-day:after,
+.mbsc-ios-pink.mbsc-timeline-footer,
+.mbsc-ios-pink.mbsc-timeline-footer-column,
+.mbsc-ios-pink.mbsc-timeline-footer-date,
+.mbsc-ios-pink.mbsc-timeline-footer-week,
+.mbsc-ios-pink.mbsc-timeline-header,
+.mbsc-ios-pink.mbsc-timeline-header-column,
+.mbsc-ios-pink.mbsc-timeline-header-date,
+.mbsc-ios-pink.mbsc-timeline-header-month,
+.mbsc-ios-pink.mbsc-timeline-header-week,
+.mbsc-ios-pink.mbsc-timeline-resource,
+.mbsc-ios-pink.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-pink.mbsc-timeline-resource-header-cont,
+.mbsc-ios-pink.mbsc-timeline-row,
+.mbsc-ios-pink.mbsc-timeline-row-date,
+.mbsc-ios-pink.mbsc-timeline-row-group:after,
+.mbsc-ios-pink.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-pink.mbsc-timeline-sidebar-header-cont,
+.mbsc-ios-pink.mbsc-timeline-sidebar-resource,
+.mbsc-ios-pink.mbsc-timeline-slot-header,
+.mbsc-ios-pink.mbsc-timeline-slots {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-schedule-cursor-time,
+.mbsc-ios-pink.mbsc-schedule-time,
+.mbsc-ios-pink.mbsc-timeline-header-column {
+ color: #8c8c8c
+}
+
+.mbsc-ios-pink.mbsc-schedule-event {
+ color: #5ac8fa
+}
+
+.mbsc-ios-pink.mbsc-schedule-event:after {
+ background: hsla(0, 0%, 100%, .9)
+}
+
+.mbsc-ios-pink.mbsc-schedule-event-range,
+.mbsc-ios-pink.mbsc-schedule-event-title {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-schedule-event-active .mbsc-schedule-event-inner,
+.mbsc-ios-pink.mbsc-schedule-event-dragging .mbsc-schedule-event-inner {
+ color: #fff
+}
+
+.mbsc-ios-pink.mbsc-schedule-event-active .mbsc-schedule-event-range,
+.mbsc-ios-pink.mbsc-schedule-event-active .mbsc-schedule-event-title,
+.mbsc-ios-pink.mbsc-schedule-event-dragging .mbsc-schedule-event-range,
+.mbsc-ios-pink.mbsc-schedule-event-dragging .mbsc-schedule-event-title {
+ color: inherit
+}
+
+.mbsc-ios-pink.mbsc-schedule-time-indicator {
+ border-color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-schedule-time-indicator-day:before {
+ background: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-schedule-cursor-time,
+.mbsc-ios-pink.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #888
+}
+
+.mbsc-ios-pink.mbsc-timeline-footer-bg,
+.mbsc-ios-pink.mbsc-timeline-header-bg,
+.mbsc-ios-pink.mbsc-timeline-header-text,
+.mbsc-ios-pink.mbsc-timeline-resource-bg,
+.mbsc-ios-pink.mbsc-timeline-resource-dragged,
+.mbsc-ios-pink.mbsc-timeline-resource-footer-cont,
+.mbsc-ios-pink.mbsc-timeline-resource-header-cont,
+.mbsc-ios-pink.mbsc-timeline-row-fixed,
+.mbsc-ios-pink.mbsc-timeline-sidebar-footer-cont,
+.mbsc-ios-pink.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-timeline-header-active {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-timeline-header-active:after {
+ background-color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-ios-pink.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-ios-pink.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-ios-pink.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-ios-pink.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-ios-pink.mbsc-timeline-resource-drop-invalid {
+ background-color: #d8332a
+}
+
+.mbsc-ios-pink.mbsc-form-control-wrapper {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-form-control-wrapper:after,
+.mbsc-ios-pink.mbsc-form-control-wrapper:before {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-form-control-wrapper.mbsc-error+.mbsc-form-control-wrapper:before,
+.mbsc-ios-pink.mbsc-form-control-wrapper.mbsc-error:after {
+ border-color: #d8332a
+}
+
+.mbsc-ios-pink.mbsc-textfield-wrapper {
+ background: none
+}
+
+.mbsc-ios-pink.mbsc-textfield-wrapper-underline {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-label,
+.mbsc-ios-pink.mbsc-textfield {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-textfield-box,
+.mbsc-ios-pink.mbsc-textfield-outline {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-textfield-outline {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-select-icon,
+.mbsc-ios-pink.mbsc-textfield-icon {
+ color: #8c8c8c
+}
+
+.mbsc-ios-pink.mbsc-textfield-box.mbsc-error,
+.mbsc-ios-pink.mbsc-textfield-outline.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-pink.mbsc-error-message {
+ color: #d8332a
+}
+
+.mbsc-ios-pink.mbsc-select,
+.mbsc-ios-pink.mbsc-textarea-inner.mbsc-textfield-inner-box,
+.mbsc-ios-pink.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-textarea-inner.mbsc-textfield-inner-outline {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-textarea-inner.mbsc-error {
+ border-color: #d8332a
+}
+
+.mbsc-ios-pink.mbsc-textfield-tag {
+ background: #e6e6e6
+}
+
+.mbsc-ios-pink.mbsc-textfield-tag-clear {
+ color: #8c8c8c
+}
+
+.mbsc-ios-pink.mbsc-list-item {
+ background: #fff;
+ border-color: #d4d4d4;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-list-item:after,
+.mbsc-ios-pink.mbsc-list-item:before {
+ border-top: 1px solid #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-list-header {
+ background: #f9f9fb;
+ border-color: #d4d4d4;
+ color: #6e6e72
+}
+
+.mbsc-ios-pink.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .15)
+}
+
+.mbsc-ios-pink.mbsc-page {
+ background: #fcfcfd;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-page a {
+ color: #f573d0
+}
+
+.mbsc-ios-pink .mbsc-block-title,
+.mbsc-ios-pink .mbsc-form-group-title {
+ color: #6e6e6e
+}
+
+.mbsc-ios-pink.mbsc-popup-arrow {
+ background: #fcfcfd;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-pink.mbsc-popup-bottom,
+.mbsc-ios-pink.mbsc-popup-top {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-popup-body {
+ background: #fcfcfd;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-popup-body-anchored,
+.mbsc-ios-pink.mbsc-popup-body-center,
+.mbsc-ios-pink.mbsc-popup-body-round {
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12)
+}
+
+.mbsc-ios-pink.mbsc-popup-buttons,
+.mbsc-ios-pink.mbsc-popup-header-center,
+.mbsc-ios-pink.mbsc-popup-header-no-buttons {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-popup-buttons-bottom,
+.mbsc-ios-pink.mbsc-popup-buttons-top {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-popup-button-flex.mbsc-button-flat.mbsc-font {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-popup-button-flex.mbsc-font.mbsc-focus,
+.mbsc-ios-pink.mbsc-popup-button-flex.mbsc-font.mbsc-hover {
+ background: #f2f2f2
+}
+
+.mbsc-ios-pink.mbsc-popup-button-flex.mbsc-font.mbsc-active {
+ background: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-popup-button-flex.mbsc-button.mbsc-disabled {
+ color: rgba(245, 115, 208, .2)
+}
+
+.mbsc-ios-pink.mbsc-radio-box:after {
+ border-color: #ff78d9
+}
+
+.mbsc-ios-pink.mbsc-radio-label.mbsc-disabled {
+ color: #ccc
+}
+
+.mbsc-ios-pink.mbsc-scroller {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-scroller-bottom,
+.mbsc-ios-pink.mbsc-scroller-top {
+ background: #dadde2
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-overlay {
+ background: linear-gradient(#fff, hsla(0, 0%, 100%, 0) 52%, hsla(0, 0%, 100%, 0) 0, #fff)
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-overlay-bottom,
+.mbsc-ios-pink.mbsc-scroller-wheel-overlay-top {
+ background: linear-gradient(#dadde2, rgba(218, 221, 226, 0) 52%, rgba(218, 221, 226, 0) 0, #dadde2)
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-line {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-item {
+ color: #9e9e9e
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-ios-pink.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-ios-pink.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-ios-pink.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(245, 115, 208, .15)
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-item-2d,
+.mbsc-ios-pink.mbsc-scroller-wheel-item.mbsc-selected {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-cont-3d {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-item-3d {
+ color: #ababab
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-header,
+.mbsc-ios-pink.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-item-3d.mbsc-wheel-item-multi.mbsc-selected-3d {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-scroller-wheel-cont-bottom.mbsc-scroller-wheel-cont-3d,
+.mbsc-ios-pink.mbsc-scroller-wheel-cont-top.mbsc-scroller-wheel-cont-3d {
+ background: #dadde2
+}
+
+.mbsc-ios-pink.mbsc-scroller-pointer.mbsc-scroller,
+.mbsc-ios-pink.mbsc-scroller-pointer.mbsc-scroller-inline,
+.mbsc-ios-pink.mbsc-scroller-wheel-cont-inline.mbsc-scroller-wheel-cont-3d {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-scroller-pointer .mbsc-scroller-wheel-item {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-segmented {
+ background: #e6e6e6
+}
+
+.mbsc-ios-pink.mbsc-segmented-item:before {
+ border-color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-pink.mbsc-segmented-item.mbsc-focus .mbsc-segmented-selectbox {
+ box-shadow: inset 0 0 0 .0625em rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios-pink.mbsc-segmented-selectbox-inner {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-segmented-selectbox-inner.mbsc-selected {
+ box-shadow: 3px 3px 8px -4px #c2c2c2
+}
+
+.mbsc-ios-pink.mbsc-segmented-button.mbsc-button {
+ background: transparent;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-segmented-primary {
+ background: #3f97f6
+}
+
+.mbsc-ios-pink.mbsc-segmented-secondary {
+ background: #90979e
+}
+
+.mbsc-ios-pink.mbsc-segmented-success {
+ background: #43be5f
+}
+
+.mbsc-ios-pink.mbsc-segmented-warning {
+ background: #f8b042
+}
+
+.mbsc-ios-pink.mbsc-segmented-danger {
+ background: #f5504e
+}
+
+.mbsc-ios-pink.mbsc-segmented-info {
+ background: #5bb7c5
+}
+
+.mbsc-ios-pink.mbsc-segmented-light {
+ background: #fff
+}
+
+.mbsc-ios-pink.mbsc-segmented-dark {
+ background: #47494a
+}
+
+.mbsc-ios-pink.mbsc-select-scroller-inline {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-select-filter-cont {
+ background-color: #fcfcfd
+}
+
+.mbsc-ios-pink.mbsc-select-filter-clear {
+ color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-select-filter-clear:hover {
+ color: #bababa
+}
+
+.mbsc-ios-pink.mbsc-select-empty-text {
+ color: #9e9e9e
+}
+
+.mbsc-ios-pink.mbsc-select-group-wheel {
+ border-color: #d4d4d4
+}
+
+.mbsc-ios-pink.mbsc-select-group-wheel-multi .mbsc-scroller-wheel-item-3d {
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-select-group-wheel-multi .mbsc-selected-3d {
+ color: #f573d0
+}
+
+.mbsc-ios-pink.mbsc-stepper-input {
+ border-color: #e6e6e6;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-stepper-input.mbsc-disabled {
+ color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-pink.mbsc-stepper-button {
+ background: #e6e6e6;
+ color: #000
+}
+
+.mbsc-ios-pink.mbsc-stepper-plus:before {
+ border-color: rgba(0, 0, 0, .2)
+}
+
+.mbsc-ios-pink.mbsc-switch-track:after {
+ background: #ededed
+}
+
+.mbsc-ios-pink.mbsc-switch-track.mbsc-focus:after {
+ box-shadow: 0 0 0 .125em rgba(0, 0, 0, .5)
+}
+
+.mbsc-ios-pink.mbsc-switch-track.mbsc-checked:after {
+ background: #4cd764
+}
+
+.mbsc-material-pink.mbsc-button-standard {
+ background: #cfcfcf;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-button-standard.mbsc-hover {
+ box-shadow: 0 2px 4px -1px rgba(0, 0, 0, .2), 0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-pink.mbsc-button-standard.mbsc-active,
+.mbsc-material-pink.mbsc-button-standard.mbsc-focus {
+ box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-pink.mbsc-button-flat,
+.mbsc-material-pink.mbsc-button-outline {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-flat.mbsc-hover,
+.mbsc-material-pink.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-outline.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink.mbsc-button-flat.mbsc-focus,
+.mbsc-material-pink.mbsc-button-outline.mbsc-focus {
+ background: rgba(0, 0, 0, .3)
+}
+
+.mbsc-material-pink.mbsc-button-outline {
+ border-color: #000
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-flat.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-flat.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-flat.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-flat.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-success.mbsc-button-flat.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-flat.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-flat.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-flat.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-flat.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-flat.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-info.mbsc-button-flat.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-flat.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-flat.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-flat.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-flat.mbsc-active,
+.mbsc-material-pink.mbsc-button-light.mbsc-button-flat.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-flat.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-outline.mbsc-hover {
+ background: rgba(63, 151, 246, .2)
+}
+
+.mbsc-material-pink.mbsc-button-primary.mbsc-button-outline.mbsc-focus {
+ background: rgba(63, 151, 246, .3)
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-outline.mbsc-hover {
+ background: hsla(210, 7%, 59%, .2)
+}
+
+.mbsc-material-pink.mbsc-button-secondary.mbsc-button-outline.mbsc-focus {
+ background: hsla(210, 7%, 59%, .3)
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-success.mbsc-button-outline.mbsc-hover {
+ background: rgba(67, 190, 95, .2)
+}
+
+.mbsc-material-pink.mbsc-button-success.mbsc-button-outline.mbsc-focus {
+ background: rgba(67, 190, 95, .3)
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-outline.mbsc-hover {
+ background: rgba(245, 80, 78, .2)
+}
+
+.mbsc-material-pink.mbsc-button-danger.mbsc-button-outline.mbsc-focus {
+ background: rgba(245, 80, 78, .3)
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-outline.mbsc-hover {
+ background: rgba(248, 176, 66, .2)
+}
+
+.mbsc-material-pink.mbsc-button-warning.mbsc-button-outline.mbsc-focus {
+ background: rgba(248, 176, 66, .3)
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-info.mbsc-button-outline.mbsc-hover {
+ background: rgba(91, 183, 197, .2)
+}
+
+.mbsc-material-pink.mbsc-button-info.mbsc-button-outline.mbsc-focus {
+ background: rgba(91, 183, 197, .3)
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-outline.mbsc-hover {
+ background: rgba(71, 73, 74, .2)
+}
+
+.mbsc-material-pink.mbsc-button-dark.mbsc-button-outline.mbsc-focus {
+ background: rgba(71, 73, 74, .3)
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-material-pink.mbsc-button-light.mbsc-button-outline.mbsc-hover {
+ background: hsla(0, 0%, 100%, .2)
+}
+
+.mbsc-material-pink.mbsc-button-light.mbsc-button-outline.mbsc-focus {
+ background: hsla(0, 0%, 100%, .3)
+}
+
+.mbsc-material-pink.mbsc-calendar-wrapper:after {
+ box-shadow: inset 0 .5em .25em -.5em rgba(0, 0, 0, .5)
+}
+
+.mbsc-material-pink.mbsc-calendar-button.mbsc-button {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-calendar-picker-slide,
+.mbsc-material-pink.mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-pink.mbsc-calendar-week-day {
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-pink.mbsc-calendar-cell-text {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-calendar-today,
+.mbsc-material-pink.mbsc-calendar-week-nr {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-focus .mbsc-calendar-cell-text {
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-pink.mbsc-hover .mbsc-calendar-cell-text {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-pink.mbsc-range-hover:before {
+ border-color: #e6e6e6
+}
+
+.mbsc-material-pink.mbsc-range-day:after {
+ background-color: rgba(245, 115, 208, .25)
+}
+
+.mbsc-material-pink.mbsc-selected .mbsc-calendar-cell-text {
+ background: #f573d0;
+ border-color: #f573d0;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-calendar-mark {
+ background: #f573d0
+}
+
+.mbsc-material-pink.mbsc-calendar-label {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-calendar-label-inner {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-calendar-label.mbsc-calendar-label-active,
+.mbsc-material-pink.mbsc-calendar-label.mbsc-calendar-label-dragging {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink .mbsc-calendar-label.mbsc-calendar-label-active .mbsc-calendar-label-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-pink.mbsc-calendar-text-more {
+ box-shadow: none
+}
+
+.mbsc-material-pink.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-calendar-popup .mbsc-popup-arrow,
+.mbsc-material-pink.mbsc-calendar-popup .mbsc-popup-body {
+ background: #fff
+}
+
+.mbsc-material-pink.mbsc-calendar-height-md .mbsc-calendar-day,
+.mbsc-material-pink.mbsc-calendar-height-md .mbsc-calendar-day:after,
+.mbsc-material-pink.mbsc-calendar-height-md .mbsc-calendar-week-day {
+ border-color: #cfcfcf
+}
+
+.mbsc-material-pink.mbsc-calendar-month-title {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-checkbox-box {
+ border-color: #000;
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-checkbox-box:after {
+ border-color: #fff
+}
+
+.mbsc-material-pink.mbsc-datepicker .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-pink.mbsc-datepicker-inline {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-datepicker-inline .mbsc-calendar-slide {
+ background: #fff
+}
+
+.mbsc-material-pink.mbsc-range-control-wrapper {
+ border-bottom: 1px solid rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink.mbsc-range-control-wrapper .mbsc-material-pink.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-range-control-label.active,
+.mbsc-material-pink.mbsc-range-control-value.active {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-range-control-text-empty,
+.mbsc-material-pink.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-pink.mbsc-range-label-clear {
+ color: gray
+}
+
+.mbsc-material-pink.mbsc-range-label-clear:hover {
+ color: #4d4d4d
+}
+
+.mbsc-material-pink.mbsc-eventcalendar {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-material-pink.mbsc-event-list-empty {
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-pink.mbsc-event-day.mbsc-list-header,
+.mbsc-material-pink.mbsc-schedule-date-header {
+ background: #fff;
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-pink.mbsc-colored-event.mbsc-list-item {
+ background: #f573d0;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-event.mbsc-list-item.mbsc-focus,
+.mbsc-material-pink.mbsc-event.mbsc-list-item.mbsc-selected {
+ box-shadow: 0 .25em .5em 0 rgba(0, 0, 0, .4)
+}
+
+.mbsc-material-pink.mbsc-event.mbsc-list-item.mbsc-focus:before,
+.mbsc-material-pink.mbsc-event.mbsc-list-item.mbsc-selected:before {
+ border-radius: .25em;
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-pink.mbsc-event-color {
+ background: #f573d0
+}
+
+.mbsc-material-pink.mbsc-schedule-header-dayname {
+ color: #424548
+}
+
+.mbsc-material-pink.mbsc-schedule-header-day {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-schedule-header-day-today,
+.mbsc-material-pink.mbsc-schedule-header-dayname-curr {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-schedule-header-day.mbsc-hover {
+ background: rgba(245, 115, 208, .3)
+}
+
+.mbsc-material-pink.mbsc-schedule-header-day.mbsc-selected {
+ background-color: #f573d0;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-schedule-all-day-item:after,
+.mbsc-material-pink.mbsc-schedule-column,
+.mbsc-material-pink.mbsc-schedule-item,
+.mbsc-material-pink.mbsc-schedule-resource,
+.mbsc-material-pink.mbsc-schedule-resource-group,
+.mbsc-material-pink.mbsc-schedule-time-col,
+.mbsc-material-pink.mbsc-timeline-column,
+.mbsc-material-pink.mbsc-timeline-day:after,
+.mbsc-material-pink.mbsc-timeline-footer,
+.mbsc-material-pink.mbsc-timeline-footer-column,
+.mbsc-material-pink.mbsc-timeline-footer-date,
+.mbsc-material-pink.mbsc-timeline-footer-week,
+.mbsc-material-pink.mbsc-timeline-header,
+.mbsc-material-pink.mbsc-timeline-header-column,
+.mbsc-material-pink.mbsc-timeline-header-date,
+.mbsc-material-pink.mbsc-timeline-header-month,
+.mbsc-material-pink.mbsc-timeline-header-week,
+.mbsc-material-pink.mbsc-timeline-resource,
+.mbsc-material-pink.mbsc-timeline-resource-footer-cont,
+.mbsc-material-pink.mbsc-timeline-resource-header-cont,
+.mbsc-material-pink.mbsc-timeline-row,
+.mbsc-material-pink.mbsc-timeline-row-date,
+.mbsc-material-pink.mbsc-timeline-row-group:after,
+.mbsc-material-pink.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-pink.mbsc-timeline-sidebar-header-cont,
+.mbsc-material-pink.mbsc-timeline-sidebar-resource,
+.mbsc-material-pink.mbsc-timeline-slot-header,
+.mbsc-material-pink.mbsc-timeline-slots {
+ border-color: #cfcfcf
+}
+
+.mbsc-material-pink.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #cfcfcf
+}
+
+.mbsc-material-pink.mbsc-schedule-time-wrapper-end:before,
+.mbsc-material-pink.mbsc-schedule-time-wrapper:after {
+ border-bottom: 1px solid #cfcfcf
+}
+
+.mbsc-material-pink.mbsc-schedule-all-day-text,
+.mbsc-material-pink.mbsc-schedule-time,
+.mbsc-material-pink.mbsc-schedule-timezone-label {
+ color: #424548
+}
+
+.mbsc-material-pink.mbsc-schedule-time-indicator {
+ border-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-schedule-time-indicator-day:before {
+ background: #f573d0
+}
+
+.mbsc-material-pink.mbsc-schedule-cursor-time,
+.mbsc-material-pink.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-schedule-event {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-schedule-event-inner {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-material-pink.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-material-pink.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .14), 0 1px 8px 0 rgba(0, 0, 0, .12), 0 1px 3px -1px rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink.mbsc-schedule-event-active .mbsc-schedule-event-background {
+ box-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, .5)
+}
+
+.mbsc-material-pink.mbsc-timeline-footer-bg,
+.mbsc-material-pink.mbsc-timeline-header-bg,
+.mbsc-material-pink.mbsc-timeline-header-text,
+.mbsc-material-pink.mbsc-timeline-resource-bg,
+.mbsc-material-pink.mbsc-timeline-resource-dragged,
+.mbsc-material-pink.mbsc-timeline-resource-footer-cont,
+.mbsc-material-pink.mbsc-timeline-resource-header-cont,
+.mbsc-material-pink.mbsc-timeline-row-fixed,
+.mbsc-material-pink.mbsc-timeline-sidebar-footer-cont,
+.mbsc-material-pink.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-material-pink.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-timeline-header-active {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-timeline-header-active:after {
+ background-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-material-pink.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-pink.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-material-pink.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-material-pink.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-material-pink.mbsc-timeline-resource-drop-invalid {
+ background-color: #de3226
+}
+
+.mbsc-material-pink.mbsc-textfield {
+ border-bottom-color: rgba(0, 0, 0, .42);
+ color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-pink.mbsc-textfield.mbsc-hover {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-pink.mbsc-textfield.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-pink.mbsc-select-icon,
+.mbsc-material-pink.mbsc-textfield-icon {
+ color: rgba(0, 0, 0, .54)
+}
+
+.mbsc-material-pink.mbsc-textfield-ripple {
+ background-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-textfield-ripple.mbsc-error {
+ background-color: #de3226
+}
+
+.mbsc-material-pink.mbsc-label {
+ color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-material-pink.mbsc-label-floating.mbsc-focus,
+.mbsc-material-pink.mbsc-label-stacked.mbsc-focus {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-error-message,
+.mbsc-material-pink.mbsc-label.mbsc-error {
+ color: #de3226
+}
+
+.mbsc-material-pink.mbsc-select {
+ background: #fff
+}
+
+.mbsc-material-pink.mbsc-textfield-box.mbsc-select,
+.mbsc-material-pink.mbsc-textfield-inner-box {
+ background: #f5f5f5
+}
+
+.mbsc-material-pink.mbsc-textfield-box.mbsc-select.mbsc-hover,
+.mbsc-material-pink.mbsc-textfield-inner-box.mbsc-hover {
+ background: #ededed
+}
+
+.mbsc-material-pink.mbsc-textfield-box.mbsc-select.mbsc-focus,
+.mbsc-material-pink.mbsc-textfield-inner-box.mbsc-focus {
+ background: #e3e3e3
+}
+
+.mbsc-material-pink.mbsc-textfield-fieldset {
+ border-color: rgba(0, 0, 0, .42)
+}
+
+.mbsc-material-pink.mbsc-textfield-fieldset.mbsc-hover {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-pink.mbsc-textfield-fieldset.mbsc-focus {
+ border-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-textfield-fieldset.mbsc-error {
+ border-color: #de3226
+}
+
+.mbsc-material-pink.mbsc-textfield-fieldset.disabled {
+ border-color: rgba(0, 0, 0, .87)
+}
+
+.mbsc-material-pink.mbsc-textfield-tag {
+ background: #d4d4d4
+}
+
+.mbsc-material-pink.mbsc-textfield-tag-clear {
+ color: rgba(0, 0, 0, .54)
+}
+
+.mbsc-material-pink.mbsc-list-header {
+ background: #fff;
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-pink.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-material-pink.mbsc-page {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-material-pink .mbsc-block-title,
+.mbsc-material-pink .mbsc-form-group-title,
+.mbsc-material-pink.mbsc-page a {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-popup-body {
+ background: #fff;
+ box-shadow: 0 11px 15px -7px rgba(0, 0, 0, .2), 0 24px 38px 3px rgba(0, 0, 0, .14), 0 9px 46px 8px rgba(0, 0, 0, .12);
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-popup-arrow {
+ background: #fff;
+ box-shadow: 0 0 1em rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink.mbsc-popup-button.mbsc-font {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-radio-box {
+ border-color: #000;
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-scroller-wheel-cont:after,
+.mbsc-material-pink.mbsc-scroller-wheel-cont:before {
+ border-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-scroller-wheel-multi:after,
+.mbsc-material-pink.mbsc-scroller-wheel-multi:before {
+ border-color: transparent
+}
+
+.mbsc-material-pink.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-material-pink.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-material-pink.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-material-pink.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .05)
+}
+
+.mbsc-material-pink.mbsc-wheel-checkmark:after {
+ border-color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-segmented-button.mbsc-button {
+ border-color: #f573d0;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-material-pink.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #f573d0;
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-segmented-button.mbsc-button.mbsc-focus:after {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-material-pink.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-select-filter-clear {
+ color: gray
+}
+
+.mbsc-material-pink.mbsc-select-filter-clear:hover {
+ color: #4d4d4d
+}
+
+.mbsc-material-pink.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ background: rgba(0, 0, 0, .15);
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-select-group-wheel-multi .mbsc-selected {
+ color: #f573d0
+}
+
+.mbsc-material-pink.mbsc-stepper-input {
+ border-color: #d6d6d6;
+ color: #2b2b2b
+}
+
+.mbsc-material-pink.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-material-pink.mbsc-stepper-button {
+ background: #d6d6d6;
+ color: #d6d6d6
+}
+
+.mbsc-material-pink.mbsc-stepper-inner {
+ color: #fff
+}
+
+.mbsc-material-pink.mbsc-color-none .mbsc-stepper-inner {
+ color: #000
+}
+
+.mbsc-material-pink.mbsc-stepper-button.mbsc-disabled {
+ background: #d6d6d6
+}
+
+.mbsc-material-pink.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-material-pink.mbsc-switch-track {
+ background: #c4c4c4
+}
+
+.mbsc-material-pink.mbsc-switch-track.mbsc-checked {
+ background: rgba(245, 115, 208, .3)
+}
+
+.mbsc-material-pink.mbsc-switch-track.mbsc-disabled {
+ background: #e8e8e8
+}
+
+.mbsc-material-pink.mbsc-switch-handle {
+ background: #fff;
+ box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12)
+}
+
+.mbsc-material-pink.mbsc-switch-handle.mbsc-checked {
+ background: #f573d0
+}
+
+.mbsc-material-pink.mbsc-switch-handle.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-material-pink.mbsc-switch-handle:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-pink.mbsc-button-standard {
+ background: #ccc;
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-button-standard.mbsc-hover {
+ border-color: #474747
+}
+
+.mbsc-windows-pink.mbsc-button-standard.mbsc-active {
+ background: #474747;
+ border-color: #474747
+}
+
+.mbsc-windows-pink.mbsc-button-flat {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-button-flat.mbsc-active {
+ background: #f2f2f2;
+ border-color: #f2f2f2;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-button-outline {
+ border: .125em solid #999;
+ color: #999
+}
+
+.mbsc-windows-pink.mbsc-button-outline.mbsc-hover {
+ border-color: gray
+}
+
+.mbsc-windows-pink.mbsc-button-outline.mbsc-active {
+ background: gray;
+ border-color: gray;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #000
+}
+
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-standard {
+ background: #3f97f6;
+ border-color: #3f97f6;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-standard {
+ background: #90979e;
+ border-color: #90979e;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-standard {
+ background: #43be5f;
+ border-color: #43be5f;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-standard {
+ background: #f5504e;
+ border-color: #f5504e;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-standard {
+ background: #f8b042;
+ border-color: #f8b042;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-standard {
+ background: #5bb7c5;
+ border-color: #5bb7c5;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-standard {
+ background: #47494a;
+ border-color: #47494a;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-standard {
+ background: #fff;
+ border-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-flat {
+ color: #3f97f6
+}
+
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-flat.mbsc-active {
+ background: #88bff9;
+ border-color: #88bff9
+}
+
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-flat {
+ color: #90979e
+}
+
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-flat.mbsc-active {
+ background: #b9bdc2;
+ border-color: #b9bdc2
+}
+
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-flat {
+ color: #43be5f
+}
+
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-flat.mbsc-active {
+ background: #7cd28f;
+ border-color: #7cd28f
+}
+
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-flat {
+ color: #f5504e
+}
+
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-flat.mbsc-active {
+ background: #f99896;
+ border-color: #f99896
+}
+
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-flat {
+ color: #f8b042
+}
+
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-flat.mbsc-active {
+ background: #fbcf8c;
+ border-color: #fbcf8c
+}
+
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-flat {
+ color: #5bb7c5
+}
+
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-flat.mbsc-active {
+ background: #94d0d9;
+ border-color: #94d0d9
+}
+
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-flat {
+ color: #47494a
+}
+
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-flat.mbsc-active {
+ background: #6c7071;
+ border-color: #6c7071
+}
+
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-flat {
+ color: #ccc
+}
+
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-flat.mbsc-active {
+ background: #fff;
+ border-color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-outline {
+ border-color: #3f97f6;
+ color: #3f97f6
+}
+
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-outline {
+ border-color: #90979e;
+ color: #90979e
+}
+
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-outline {
+ border-color: #43be5f;
+ color: #43be5f
+}
+
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-outline {
+ border-color: #f5504e;
+ color: #f5504e
+}
+
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-outline {
+ border-color: #f8b042;
+ color: #f8b042
+}
+
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-outline {
+ border-color: #5bb7c5;
+ color: #5bb7c5
+}
+
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-outline {
+ border-color: #47494a;
+ color: #47494a
+}
+
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-outline {
+ border-color: #ccc;
+ color: #ccc
+}
+
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-standard.mbsc-hover {
+ border-color: #0964c6
+}
+
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-primary.mbsc-button-standard.mbsc-active {
+ background: #0964c6;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-standard.mbsc-hover {
+ border-color: #5d646b
+}
+
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-secondary.mbsc-button-standard.mbsc-active {
+ background: #5d646b;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-standard.mbsc-hover {
+ border-color: #287339
+}
+
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-success.mbsc-button-standard.mbsc-active {
+ background: #287339;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-standard.mbsc-hover {
+ border-color: #d10e0c
+}
+
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-danger.mbsc-button-standard.mbsc-active {
+ background: #d10e0c;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-standard.mbsc-hover {
+ border-color: #cc7f08
+}
+
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-warning.mbsc-button-standard.mbsc-active {
+ background: #cc7f08;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-standard.mbsc-hover {
+ border-color: #317e89
+}
+
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-info.mbsc-button-standard.mbsc-active {
+ background: #317e89;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-standard.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-dark.mbsc-button-standard.mbsc-active {
+ background: #000;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-outline.mbsc-hover,
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-standard.mbsc-hover {
+ border-color: #999
+}
+
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-outline.mbsc-active,
+.mbsc-windows-pink.mbsc-button-light.mbsc-button-standard.mbsc-active {
+ background: #999;
+ color: #47494a
+}
+
+.mbsc-windows-pink.mbsc-calendar,
+.mbsc-windows-pink.mbsc-calendar-button.mbsc-button {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-button.mbsc-button.mbsc-active {
+ background: #f2f2f2;
+ border-color: #f2f2f2
+}
+
+.mbsc-windows-pink.mbsc-calendar-button.mbsc-button.mbsc-focus {
+ box-shadow: 0 0 0 1px #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-wrapper-fixed {
+ border-bottom: 1px solid #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-calendar-slide {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-week-day {
+ color: #333
+}
+
+.mbsc-windows-pink.mbsc-calendar-today,
+.mbsc-windows-pink.mbsc-calendar-week-nr {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-range-day {
+ border-left-color: rgba(245, 115, 208, .25)
+}
+
+.mbsc-windows-pink.mbsc-range-day-end.mbsc-rtl,
+.mbsc-windows-pink.mbsc-range-day-start.mbsc-ltr {
+ border-left-color: transparent
+}
+
+.mbsc-windows-pink.mbsc-range-hover .mbsc-calendar-cell-inner {
+ border-bottom-color: rgba(0, 0, 0, .1);
+ border-style: dashed;
+ border-top-color: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-pink.mbsc-range-day .mbsc-calendar-cell-inner,
+.mbsc-windows-pink.mbsc-selected .mbsc-calendar-cell-inner {
+ background: rgba(245, 115, 208, .25)
+}
+
+.mbsc-windows-pink.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-inner {
+ background-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-selected.mbsc-range-day .mbsc-calendar-cell-text {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-day-colors.mbsc-selected:after {
+ border: 2px solid #f573d0
+}
+
+.mbsc-windows-pink.mbsc-calendar-cell.mbsc-focus:after {
+ border: 1px solid #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-cell.mbsc-hover:after {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-pink.mbsc-calendar-mark {
+ background: rgba(0, 0, 0, .5)
+}
+
+.mbsc-windows-pink.mbsc-calendar-label {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-calendar-label-inner {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-label.mbsc-calendar-label-active {
+ outline: 1px solid #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-text-more .mbsc-calendar-label-text {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-calendar-height-md .mbsc-calendar-week-day,
+.mbsc-windows-pink.mbsc-calendar-width-md .mbsc-calendar-day,
+.mbsc-windows-pink.mbsc-calendar-width-md .mbsc-calendar-day:after {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-calendar-popup .mbsc-popup,
+.mbsc-windows-pink.mbsc-calendar-popup .mbsc-popup-arrow {
+ background: #fff;
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-calendar-month-title {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-checkbox-box {
+ border-color: #000;
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-checkbox-box:after {
+ border-color: #fff
+}
+
+.mbsc-windows-pink.mbsc-checkbox-box:before {
+ background: #737373
+}
+
+.mbsc-windows-pink.mbsc-checkbox-box.mbsc-active {
+ background: #737373;
+ border-color: #737373
+}
+
+.mbsc-windows-pink.mbsc-datepicker-inline {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-datepicker-tab,
+.mbsc-windows-pink.mbsc-picker-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-range-control-wrapper {
+ border-bottom: 1px solid #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-range-control-wrapper .mbsc-windows-pink.mbsc-segmented-button.mbsc-selected {
+ border-bottom-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-range-control-wrapper .mbsc-windows-pink.mbsc-segmented-button.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #000
+}
+
+.mbsc-windows-pink.mbsc-range-control-label.active,
+.mbsc-windows-pink.mbsc-range-control-value.active {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-range-control-text-empty,
+.mbsc-windows-pink.mbsc-range-control-text-empty.active {
+ color: rgba(0, 0, 0, .4)
+}
+
+.mbsc-windows-pink.mbsc-range-label-clear {
+ color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-windows-pink.mbsc-range-label-clear:hover {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-eventcalendar {
+ background: #fff
+}
+
+.mbsc-windows-pink.mbsc-eventcalendar .mbsc-calendar-day.mbsc-disabled {
+ background: #f0f0f0
+}
+
+.mbsc-windows-pink.mbsc-event-list-empty {
+ color: rgba(0, 0, 0, .7)
+}
+
+.mbsc-windows-pink.mbsc-event-group {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-event-day.mbsc-list-header,
+.mbsc-windows-pink.mbsc-event.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-event.mbsc-focus,
+.mbsc-windows-pink.mbsc-event.mbsc-selected {
+ background: rgba(245, 115, 208, .25)
+}
+
+.mbsc-windows-pink.mbsc-event-color {
+ background: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-wrapper {
+ background: #fff
+}
+
+.mbsc-windows-pink.mbsc-schedule-header-day {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-schedule-header-item {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-schedule-header-day-today {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-header-dayname.mbsc-selected:after {
+ background: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-date-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-schedule-time-indicator,
+.mbsc-windows-pink.mbsc-schedule-time-indicator-day {
+ border-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-cursor-time,
+.mbsc-windows-pink.mbsc-schedule-time-indicator-time {
+ background: hsla(0, 0%, 100%, .8);
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-time-indicator-time {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-all-day-item:after,
+.mbsc-windows-pink.mbsc-schedule-column,
+.mbsc-windows-pink.mbsc-schedule-item,
+.mbsc-windows-pink.mbsc-schedule-resource,
+.mbsc-windows-pink.mbsc-schedule-resource-group,
+.mbsc-windows-pink.mbsc-schedule-time-col,
+.mbsc-windows-pink.mbsc-timeline-column,
+.mbsc-windows-pink.mbsc-timeline-day:after,
+.mbsc-windows-pink.mbsc-timeline-footer,
+.mbsc-windows-pink.mbsc-timeline-footer-column,
+.mbsc-windows-pink.mbsc-timeline-footer-date,
+.mbsc-windows-pink.mbsc-timeline-footer-week,
+.mbsc-windows-pink.mbsc-timeline-header,
+.mbsc-windows-pink.mbsc-timeline-header-column,
+.mbsc-windows-pink.mbsc-timeline-header-date,
+.mbsc-windows-pink.mbsc-timeline-header-month,
+.mbsc-windows-pink.mbsc-timeline-header-week,
+.mbsc-windows-pink.mbsc-timeline-resource,
+.mbsc-windows-pink.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-pink.mbsc-timeline-resource-header-cont,
+.mbsc-windows-pink.mbsc-timeline-row,
+.mbsc-windows-pink.mbsc-timeline-row-date,
+.mbsc-windows-pink.mbsc-timeline-row-group:after,
+.mbsc-windows-pink.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-pink.mbsc-timeline-sidebar-header-cont,
+.mbsc-windows-pink.mbsc-timeline-sidebar-resource,
+.mbsc-windows-pink.mbsc-timeline-slot-header,
+.mbsc-windows-pink.mbsc-timeline-slots {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-timeline-row-fixed {
+ box-shadow: 0 1px 0 0 #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-schedule-time-wrapper {
+ border-top: 1px solid #e6e6e6;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-schedule-time-wrapper-end {
+ border-bottom: 1px solid #e6e6e6;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-schedule-all-day-text,
+.mbsc-windows-pink.mbsc-schedule-time-cont,
+.mbsc-windows-pink.mbsc-schedule-timezone-label {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-schedule-event {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-schedule-event-inner {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-schedule-event-active .mbsc-schedule-event-background,
+.mbsc-windows-pink.mbsc-schedule-event-dragging .mbsc-schedule-event-background {
+ outline: 1px solid #000
+}
+
+.mbsc-windows-pink.mbsc-schedule-invalid {
+ background: hsla(0, 0%, 94%, .75);
+ color: #8a8a8a
+}
+
+.mbsc-windows-pink.mbsc-timeline-footer-bg,
+.mbsc-windows-pink.mbsc-timeline-header-bg,
+.mbsc-windows-pink.mbsc-timeline-header-text,
+.mbsc-windows-pink.mbsc-timeline-resource-bg,
+.mbsc-windows-pink.mbsc-timeline-resource-dragged,
+.mbsc-windows-pink.mbsc-timeline-resource-footer-cont,
+.mbsc-windows-pink.mbsc-timeline-resource-header-cont,
+.mbsc-windows-pink.mbsc-timeline-row-fixed,
+.mbsc-windows-pink.mbsc-timeline-sidebar-footer-cont,
+.mbsc-windows-pink.mbsc-timeline-sidebar-header-cont {
+ background: #fff
+}
+
+.mbsc-windows-pink.mbsc-timeline-resource {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink .mbsc-timeline-header-active:after {
+ background-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-timeline-parent {
+ background: rgba(0, 0, 0, .028)
+}
+
+.mbsc-windows-pink.mbsc-timeline-parent-hover {
+ background: rgba(0, 0, 0, .084)
+}
+
+.mbsc-windows-pink.mbsc-connection {
+ stroke: rgba(0, 0, 0, .7)
+}
+
+.mbsc-windows-pink.mbsc-connection-arrow {
+ fill: #000
+}
+
+.mbsc-windows-pink.mbsc-timeline-resource-drop {
+ background-color: #43be5f
+}
+
+.mbsc-windows-pink.mbsc-timeline-resource-drop-invalid {
+ background-color: #a4262c
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper.mbsc-disabled {
+ color: #6b6b6b
+}
+
+.mbsc-windows-pink.mbsc-textfield {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-textfield-box,
+.mbsc-windows-pink.mbsc-textfield-outline {
+ border-color: #545454
+}
+
+.mbsc-windows-pink.mbsc-textfield.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-pink.mbsc-textfield-box.mbsc-focus,
+.mbsc-windows-pink.mbsc-textfield-outline.mbsc-focus {
+ border-color: #f573d0;
+ box-shadow: inset 0 0 0 1px #f573d0
+}
+
+.mbsc-windows-pink.mbsc-textfield.mbsc-disabled {
+ background: #f2f2f2;
+ border-color: #f2f2f2
+}
+
+.mbsc-windows-pink.mbsc-textfield.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-pink.mbsc-textfield-box.mbsc-error.mbsc-focus,
+.mbsc-windows-pink.mbsc-textfield-outline.mbsc-error.mbsc-focus {
+ box-shadow: inset 0 0 0 1px #a4262c
+}
+
+.mbsc-windows-pink.mbsc-error-message {
+ color: #a4262c
+}
+
+.mbsc-windows-pink.mbsc-label {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper-underline {
+ border-color: #545454
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper-underline.mbsc-hover {
+ border-color: #000
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper-underline.mbsc-focus {
+ border-color: #f573d0;
+ box-shadow: 0 1px 0 0 #f573d0
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper-underline.mbsc-disabled {
+ border-color: #f2f2f2
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper-underline.mbsc-error {
+ border-color: #a4262c
+}
+
+.mbsc-windows-pink.mbsc-textfield-wrapper-underline.mbsc-error.mbsc-focus {
+ box-shadow: 0 1px 0 0 #a4262c
+}
+
+.mbsc-windows-pink.mbsc-textfield-tag {
+ background: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-list-header,
+.mbsc-windows-pink.mbsc-list-item {
+ background: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-list-item.mbsc-hover:before {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-pink.mbsc-list-item.mbsc-active:before {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-windows-pink.mbsc-page {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-page a {
+ color: #f573d0
+}
+
+.mbsc-windows-pink .mbsc-block-title,
+.mbsc-windows-pink .mbsc-form-group-title {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-popup {
+ box-shadow: 0 6px 14px 0 rgba(0, 0, 0, .133), 0 1px 4px 0 rgba(0, 0, 0, .11);
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-popup,
+.mbsc-windows-pink.mbsc-popup-arrow {
+ background: #fff;
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-popup-buttons,
+.mbsc-windows-pink.mbsc-popup-header {
+ border-color: #e6e6e6
+}
+
+.mbsc-windows-pink.mbsc-radio-box {
+ border: .125em solid #000
+}
+
+.mbsc-windows-pink.mbsc-radio-box:after {
+ background: #000
+}
+
+.mbsc-windows-pink.mbsc-radio-box.mbsc-checked {
+ border-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-radio-box.mbsc-active {
+ border-color: rgba(0, 0, 0, .6)
+}
+
+.mbsc-windows-pink.mbsc-radio-box.mbsc-active:after {
+ background: rgba(0, 0, 0, .6)
+}
+
+.mbsc-windows-pink.mbsc-scroller-wheel-wrapper {
+ border-color: #e6e6e6;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-scroller-wheel-line {
+ background: rgba(245, 115, 208, .4)
+}
+
+.mbsc-windows-pink.mbsc-scroller-wheel-header.mbsc-focus,
+.mbsc-windows-pink.mbsc-scroller-wheel-item.mbsc-active,
+.mbsc-windows-pink.mbsc-scroller-wheel-item.mbsc-focus,
+.mbsc-windows-pink.mbsc-scroller-wheel-item.mbsc-hover {
+ background: rgba(0, 0, 0, .1)
+}
+
+.mbsc-windows-pink.mbsc-wheel-checkmark:after {
+ border-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-segmented-button.mbsc-button {
+ background: #ccc;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-segmented-button.mbsc-button.mbsc-active,
+.mbsc-windows-pink.mbsc-segmented-button.mbsc-button.mbsc-hover {
+ background: #d4d4d4
+}
+
+.mbsc-windows-pink.mbsc-segmented-button.mbsc-button.mbsc-selected {
+ background: #474747;
+ color: #fff
+}
+
+.mbsc-windows-pink.mbsc-select-scroller-inline {
+ background-color: #fff;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-select-group-wheel-multi .mbsc-selected,
+.mbsc-windows-pink.mbsc-select-scroller.mbsc-scroller-pointer .mbsc-scroller-wheel-item.mbsc-selected {
+ color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-stepper-input {
+ border-color: #ccc;
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-stepper-input.mbsc-disabled {
+ color: #b3b3b3
+}
+
+.mbsc-windows-pink.mbsc-stepper-button {
+ color: #ccc
+}
+
+.mbsc-windows-pink.mbsc-stepper-button.mbsc-hover:before {
+ background: rgba(0, 0, 0, .2)
+}
+
+.mbsc-windows-pink.mbsc-stepper-button.mbsc-disabled {
+ background: #ccc
+}
+
+.mbsc-windows-pink.mbsc-stepper-inner {
+ color: #000
+}
+
+.mbsc-windows-pink.mbsc-stepper-button.mbsc-disabled .mbsc-stepper-inner {
+ color: #b3b3b3
+}
+
+.mbsc-windows-pink.mbsc-switch-track.mbsc-checked:before {
+ background: #f573d0;
+ border-color: #f573d0
+}
+
+.mbsc-windows-pink.mbsc-switch-track.mbsc-disabled:before,
+.mbsc-windows-pink.mbsc-switch-track:before {
+ background: none;
+ border-color: #000
+}
+
+.mbsc-windows-pink.mbsc-switch-track.mbsc-active:before {
+ background: #737373;
+ border-color: #737373
+}
+
+.mbsc-windows-pink.mbsc-switch-track.mbsc-focus:after {
+ border-color: #737373
+}
+
+.mbsc-windows-pink.mbsc-switch-handle {
+ background: #000
+}
+
+.mbsc-windows-pink.mbsc-switch-handle.mbsc-checked {
+ background: #fff
+}
+
+.mbsc-windows-pink.mbsc-switch-handle.mbsc-disabled {
+ background: #000
+}
+
+@media print {
+
+ .mbsc-calendar,
+ .mbsc-calendar-cell,
+ .mbsc-calendar-header,
+ .mbsc-calendar-slide,
+ .mbsc-calendar-week-days,
+ .mbsc-event,
+ .mbsc-event-day,
+ .mbsc-timeline-grid {
+ background: #fff !important;
+ color: #000 !important
+ }
+
+ .mbsc-calendar-button,
+ .mbsc-calendar-cell-text,
+ .mbsc-calendar-label-text {
+ color: #000 !important
+ }
+
+ .mbsc-calendar-cell-text {
+ background: none !important
+ }
+
+ .mbsc-calendar-mark {
+ background: #ccc !important
+ }
+
+ .mbsc-calendar-label-background {
+ background: #fff !important;
+ border: 1px solid
+ }
+
+ .mbsc-calendar-body,
+ .mbsc-calendar-body-inner,
+ .mbsc-calendar-grid,
+ .mbsc-calendar-wrapper,
+ .mbsc-event-list-scroll,
+ .mbsc-eventcalendar {
+ overflow: visible !important
+ }
+
+ .mbsc-eventcalendar {
+ height: auto !important
+ }
+
+ .mbsc-calendar-body-inner {
+ margin: 0 !important
+ }
+
+ .mbsc-calendar-slide,
+ .mbsc-scrollview-scroll {
+ -webkit-transform: none !important;
+ transform: none !important
+ }
+
+ .mbsc-scrollview-scroll {
+ display: -moz-box;
+ display: flex
+ }
+
+ .mbsc-calendar-slide {
+ display: none
+ }
+
+ .mbsc-calendar-slide-active {
+ display: block;
+ position: relative !important
+ }
+
+ .mbsc-calendar-height-md .mbsc-calendar-day:last-child {
+ border-right-style: solid;
+ border-right-width: 1px
+ }
+
+ .mbsc-calendar-row:last-child .mbsc-calendar-day {
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
+ margin-bottom: -1px
+ }
+
+ .mbsc-material.mbsc-event-color {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: .375em
+ }
+
+ .mbsc-material.mbsc-event.mbsc-list-item {
+ border: 1px solid #ccc
+ }
+
+ .mbsc-eventcalendar-schedule {
+ height: auto !important
+ }
+
+ .mbsc-schedule-time-cont {
+ margin: 0 !important
+ }
+
+ .mbsc-schedule-grid-scroll {
+ overflow-x: auto;
+ overflow-y: visible
+ }
+
+ .mbsc-timeline {
+ -moz-box-flex: 0 !important;
+ flex: none !important
+ }
+
+ .mbsc-timeline-grid-scroll {
+ overflow-x: hidden !important;
+ overflow-y: visible !important
+ }
+
+ .mbsc-timeline-grid {
+ height: auto !important;
+ overflow: visible !important
+ }
+
+ .mbsc-timeline-grid,
+ .mbsc-timeline-header-bg {
+ width: auto !important
+ }
+
+ .mbsc-timeline-header-text {
+ display: none
+ }
+
+ .mbsc-timeline-header-date-text,
+ .mbsc-timeline-header-time {
+ text-overflow: clip
+ }
+
+ .mbsc-schedule-all-day-text,
+ .mbsc-schedule-event-range,
+ .mbsc-schedule-event-title,
+ .mbsc-schedule-header-dayname,
+ .mbsc-schedule-time,
+ .mbsc-timeline-footer,
+ .mbsc-timeline-header {
+ color: #000 !important
+ }
+
+ .mbsc-schedule-all-day-wrapper,
+ .mbsc-schedule-date-header,
+ .mbsc-schedule-grid-wrapper,
+ .mbsc-schedule-header,
+ .mbsc-schedule-wrapper,
+ .mbsc-timeline-resource-bg,
+ .mbsc-timeline-resource-footer-cont,
+ .mbsc-timeline-resource-header-cont,
+ .mbsc-timeline-row-fixed,
+ .mbsc-timeline-sidebar-footer-cont,
+ .mbsc-timeline-sidebar-header-cont {
+ background: #fff !important;
+ color: #000 !important
+ }
+
+ .mbsc-timeline-grid,
+ .mbsc-timeline-resource-bg,
+ .mbsc-timeline-resources {
+ display: block !important
+ }
+
+ .mbsc-timeline-resource,
+ .mbsc-timeline-row {
+ page-break-inside: avoid
+ }
+
+ .mbsc-schedule-all-day-wrapper {
+ max-height: none !important;
+ overflow: visible
+ }
+
+ .mbsc-schedule-fake-scroll-y,
+ .mbsc-schedule-time-indicator {
+ display: none
+ }
+
+ .mbsc-schedule-event-background {
+ background: #fff !important;
+ border: 1px solid
+ }
+
+ .mbsc-calendar-button-next,
+ .mbsc-calendar-button-prev,
+ .mbsc-calendar-button-today {
+ display: none !important
+ }
+
+ .mbsc-calendar-cell:after,
+ .mbsc-calendar-text:before,
+ .mbsc-event:before,
+ .mbsc-schedule-event-background:after {
+ background: none !important
+ }
+}
\ No newline at end of file
diff --git a/public/lib/less.js b/public/lib/less.js
new file mode 100644
index 0000000..cba1c93
--- /dev/null
+++ b/public/lib/less.js
@@ -0,0 +1,11 @@
+/**
+ * Less - Leaner CSS v4.5.1
+ * http://lesscss.org
+ *
+ * Copyright (c) 2009-2025, Alexis Sellier
+ * Licensed under the Apache-2.0 License.
+ *
+ * @license Apache-2.0
+ */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).less=t()}(this,(function(){"use strict";function e(e){return e.replace(/^[a-z-]+:\/+?[^/]+/,"").replace(/[?&]livereload=\w+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^.\w-]+/g,"-").replace(/\./g,":")}function t(e,t){if(t)for(var n in t.dataset)if(Object.prototype.hasOwnProperty.call(t.dataset,n))if("env"===n||"dumpLineNumbers"===n||"rootpath"===n||"errorReporting"===n)e[n]=t.dataset[n];else try{e[n]=JSON.parse(t.dataset[n])}catch(e){}}var n=function(t,n,i){var r=i.href||"",s="less:".concat(i.title||e(r)),a=t.getElementById(s),o=!1,l=t.createElement("style");l.setAttribute("type","text/css"),i.media&&l.setAttribute("media",i.media),l.id=s,l.styleSheet||(l.appendChild(t.createTextNode(n)),o=null!==a&&a.childNodes.length>0&&l.childNodes.length>0&&a.firstChild.nodeValue===l.firstChild.nodeValue);var u=t.getElementsByTagName("head")[0];if(null===a||!1===o){var c=i&&i.nextSibling||null;c?c.parentNode.insertBefore(l,c):u.appendChild(l)}if(a&&!1===o&&a.parentNode.removeChild(a),l.styleSheet)try{l.styleSheet.cssText=n}catch(e){throw new Error("Couldn't reassign styleSheet.cssText.")}},i=function(e){var t,n=e.document;return n.currentScript||(t=n.getElementsByTagName("script"))[t.length-1]},r={error:function(e){this._fireEvent("error",e)},warn:function(e){this._fireEvent("warn",e)},info:function(e){this._fireEvent("info",e)},debug:function(e){this._fireEvent("debug",e)},addListener:function(e){this._listeners.push(e)},removeListener:function(e){for(var t=0;t=0;o--){var l=a[o];if(l[s?"supportsSync":"supports"](e,t,n,i))return l}return null},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},e}(),a={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},o={length:{m:1,cm:.01,mm:.001,in:.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:1/400,turn:1}},l={colors:a,unitConversions:o},u=function(){function e(){this.parent=null,this.visibilityBlocks=void 0,this.nodeVisible=void 0,this.rootNode=null,this.parsed=null}return Object.defineProperty(e.prototype,"currentFileInfo",{get:function(){return this.fileInfo()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"index",{get:function(){return this.getIndex()},enumerable:!1,configurable:!0}),e.prototype.setParent=function(t,n){function i(t){t&&t instanceof e&&(t.parent=n)}Array.isArray(t)?t.forEach(i):i(t)},e.prototype.getIndex=function(){return this._index||this.parent&&this.parent.getIndex()||0},e.prototype.fileInfo=function(){return this._fileInfo||this.parent&&this.parent.fileInfo()||{}},e.prototype.isRulesetLike=function(){return!1},e.prototype.toCSS=function(e){var t=[];return this.genCSS(e,{add:function(e,n,i){t.push(e)},isEmpty:function(){return 0===t.length}}),t.join("")},e.prototype.genCSS=function(e,t){t.add(this.value)},e.prototype.accept=function(e){this.value=e.visit(this.value)},e.prototype.eval=function(){return this},e.prototype._operate=function(e,t,n,i){switch(t){case"+":return n+i;case"-":return n-i;case"*":return n*i;case"/":return n/i}},e.prototype.fround=function(e,t){var n=e&&e.numPrecision;return n?Number((t+2e-16).toFixed(n)):t},e.compare=function(t,n){if(t.compare&&"Quoted"!==n.type&&"Anonymous"!==n.type)return t.compare(n);if(n.compare)return-n.compare(t);if(t.type===n.type){if(t=t.value,n=n.value,!Array.isArray(t))return t===n?0:void 0;if(t.length===n.length){for(var i=0;it?1:void 0},e.prototype.blocksVisibility=function(){return void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},e.prototype.addVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},e.prototype.removeVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},e.prototype.ensureVisibility=function(){this.nodeVisible=!0},e.prototype.ensureInvisibility=function(){this.nodeVisible=!1},e.prototype.isVisible=function(){return this.nodeVisible},e.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},e.prototype.copyVisibilityInfo=function(e){e&&(this.visibilityBlocks=e.visibilityBlocks,this.nodeVisible=e.nodeVisible)},e}(),c=function(e,t,n){var i=this;Array.isArray(e)?this.rgb=e:e.length>=6?(this.rgb=[],e.match(/.{2}/g).map((function(e,t){t<3?i.rgb.push(parseInt(e,16)):i.alpha=parseInt(e,16)/255}))):(this.rgb=[],e.split("").map((function(e,t){t<3?i.rgb.push(parseInt(e+e,16)):i.alpha=parseInt(e+e,16)/255}))),this.alpha=this.alpha||("number"==typeof t?t:1),void 0!==n&&(this.value=n)};function h(e,t){return Math.min(Math.max(e,0),t)}function f(e){return"#".concat(e.map((function(e){return((e=h(Math.round(e),255))<16?"0":"")+e.toString(16)})).join(""))}c.prototype=Object.assign(new u,{type:"Color",luma:function(){var e=this.rgb[0]/255,t=this.rgb[1]/255,n=this.rgb[2]/255;return.2126*(e=e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},genCSS:function(e,t){t.add(this.toCSS(e))},toCSS:function(e,t){var n,i,r,s=e&&e.compress&&!t,a=[];if(i=this.fround(e,this.alpha),this.value)if(0===this.value.indexOf("rgb"))i<1&&(r="rgba");else{if(0!==this.value.indexOf("hsl"))return this.value;r=i<1?"hsla":"hsl"}else i<1&&(r="rgba");switch(r){case"rgba":a=this.rgb.map((function(e){return h(Math.round(e),255)})).concat(h(i,1));break;case"hsla":a.push(h(i,1));case"hsl":n=this.toHSL(),a=[this.fround(e,n.h),"".concat(this.fround(e,100*n.s),"%"),"".concat(this.fround(e,100*n.l),"%")].concat(a)}if(r)return"".concat(r,"(").concat(a.join(",".concat(s?"":" ")),")");if(n=this.toRGB(),s){var o=n.split("");o[1]===o[2]&&o[3]===o[4]&&o[5]===o[6]&&(n="#".concat(o[1]).concat(o[3]).concat(o[5]))}return n},operate:function(e,t,n){for(var i=new Array(3),r=this.alpha*(1-n.alpha)+n.alpha,s=0;s<3;s++)i[s]=this._operate(e,t,this.rgb[s],n.rgb[s]);return new c(i,r)},toRGB:function(){return f(this.rgb)},toHSL:function(){var e,t,n=this.rgb[0]/255,i=this.rgb[1]/255,r=this.rgb[2]/255,s=this.alpha,a=Math.max(n,i,r),o=Math.min(n,i,r),l=(a+o)/2,u=a-o;if(a===o)e=t=0;else{switch(t=l>.5?u/(2-a-o):u/(a+o),a){case n:e=(i-r)/u+(iC(e,t));if("Object"!==S(n=e)||n.constructor!==Object||Object.getPrototypeOf(n)!==Object.prototype)return e;var n;return[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)].reduce((n,i)=>{if(I(t.props)&&!t.props.includes(i))return n;return function(e,t,n,i,r){const s={}.propertyIsEnumerable.call(i,t)?"enumerable":"nonenumerable";"enumerable"===s&&(e[t]=n),r&&"nonenumerable"===s&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}(n,i,C(e[i],t),e,t.nonenumerable),n},{})}function k(e,t){for(var n=e+1,i=null,r=-1;--n>=0&&"\n"!==t.charAt(n);)r++;return"number"==typeof e&&(i=(t.slice(0,e).match(/\n/g)||"").length),{line:i,column:r}}function A(e){var t,n=e.length,i=new Array(n);for(t=0;t|Function):(\d+):(\d+)/,$=function(e,t,n){Error.call(this);var i=e.filename||n;if(this.message=e.message,this.stack=e.stack,this.type=e.type||"Syntax",t&&i){var r=t.contents[i],s=k(e.index,r),a=s.line,o=s.column,l=e.call&&k(e.call,r).line,u=r?r.split("\n"):"";if(this.filename=i,this.index=e.index,this.line="number"==typeof a?a+1:null,this.column=o,!this.line&&this.stack){var c=this.stack.match(F),h=new Function("a","throw new Error()"),f=0;try{h()}catch(e){var p=e.stack.match(F);f=1-parseInt(p[2])}c&&(c[2]&&(this.line=parseInt(c[2])+f),c[3]&&(this.column=parseInt(c[3])))}this.callLine=l+1,this.callExtract=u[l],this.extract=[u[this.line-2],u[this.line-1],u[this.line]]}};if(void 0===Object.create){var V=function(){};V.prototype=Error.prototype,$.prototype=new V}else $.prototype=Object.create(Error.prototype);$.prototype.constructor=$,$.prototype.toString=function(e){var t;e=e||{};var n=(null!==(t=this.type)&&void 0!==t?t:"").toLowerCase().includes("warning"),i=n?this.type:"".concat(this.type,"Error"),r=n?"yellow":"red",s="",a=this.extract||[],o=[],l=function(e){return e};if(e.stylize){var u=typeof e.stylize;if("function"!==u)throw Error("options.stylize should be a function, got a ".concat(u,"!"));l=e.stylize}if(null!==this.line){if(n||"string"!=typeof a[0]||o.push(l("".concat(this.line-1," ").concat(a[0]),"grey")),"string"==typeof a[1]){var c="".concat(this.line," ");a[1]&&(c+=a[1].slice(0,this.column)+l(l(l(a[1].substr(this.column,1),"bold")+a[1].slice(this.column+1),"red"),"inverse")),o.push(c)}n||"string"!=typeof a[2]||o.push(l("".concat(this.line+1," ").concat(a[2]),"grey")),o="".concat(o.join("\n")+l("","reset"),"\n")}return s+=l("".concat(i,": ").concat(this.message),r),this.filename&&(s+=l(" in ",r)+this.filename),this.line&&(s+=l(" on line ".concat(this.line,", column ").concat(this.column+1,":"),"grey")),s+="\n".concat(o),this.callLine&&(s+="".concat(l("from ",r)+(this.filename||""),"/n"),s+="".concat(l(this.callLine,"grey")," ").concat(this.callExtract,"/n")),s};var L={visitDeeper:!0},j=!1;function D(e){return e}var N=function(){function e(e){this._implementation=e,this._visitInCache={},this._visitOutCache={},j||(!function e(t,n){var i,r;for(i in t)switch(typeof(r=t[i])){case"function":r.prototype&&r.prototype.type&&(r.prototype.typeIndex=n++);break;case"object":n=e(r,n)}return n}(Je,1),j=!0)}return e.prototype.visit=function(e){if(!e)return e;var t=e.typeIndex;if(!t)return e.value&&e.value.typeIndex&&this.visit(e.value),e;var n,i=this._implementation,r=this._visitInCache[t],s=this._visitOutCache[t],a=L;if(a.visitDeeper=!0,r||(r=i[n="visit".concat(e.type)]||D,s=i["".concat(n,"Out")]||D,this._visitInCache[t]=r,this._visitOutCache[t]=s),r!==D){var o=r.call(i,e,a);e&&i.isReplacing&&(e=o)}if(a.visitDeeper&&e)if(e.length)for(var l=0,u=e.length;ly.PARENS_DIVISION)||this.parensStack&&this.parensStack.length))},B.Eval.prototype.pathRequiresRewrite=function(e){return(this.rewriteUrls===w?G:z)(e)},B.Eval.prototype.rewritePath=function(e,t){var n;return t=t||"",n=this.normalizePath(t+e),G(e)&&z(t)&&!1===G(n)&&(n="./".concat(n)),n},B.Eval.prototype.normalizePath=function(e){var t,n=e.split("/").reverse();for(e=[];0!==n.length;)switch(t=n.pop()){case".":break;case"..":0===e.length||".."===e[e.length-1]?e.push(t):e.pop();break;default:e.push(t)}return e.join("/")};var W=function(){function e(e){this.imports=[],this.variableImports=[],this._onSequencerEmpty=e,this._currentDepth=0}return e.prototype.addImport=function(e){var t=this,n={callback:e,args:null,isReady:!1};return this.imports.push(n),function(){n.args=Array.prototype.slice.call(arguments,0),n.isReady=!0,t.tryRun()}},e.prototype.addVariableImport=function(e){this.variableImports.push(e)},e.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var e=this.imports[0];if(!e.isReady)return;this.imports=this.imports.slice(1),e.callback.apply(null,e.args)}if(0===this.variableImports.length)break;var t=this.variableImports[0];this.variableImports=this.variableImports.slice(1),t()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},e}(),J=function(e,t){this._visitor=new N(this),this._importer=e,this._finish=t,this.context=new B.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new W(this._onSequencerEmpty.bind(this))};J.prototype={isReplacing:!1,run:function(e){try{this._visitor.visit(e)}catch(e){this.error=e}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(e,t){var n=e.options.inline;if(!e.css||n){var i=new B.Eval(this.context,A(this.context.frames)),r=i.frames[0];this.importCount++,e.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,e,i,r)):this.processImportNode(e,i,r)}t.visitDeeper=!1},processImportNode:function(e,t,n){var i,r=e.options.inline;try{i=e.evalForImport(t)}catch(t){t.filename||(t.index=e.getIndex(),t.filename=e.fileInfo().filename),e.css=!0,e.error=t}if(!i||i.css&&!r)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{i.options.multiple&&(t.importMultiple=!0);for(var s=void 0===i.css,a=0;a=0||(o=[u.selfSelectors[0]],(s=f.findMatch(l,o)).length&&(l.hasFoundMatches=!0,l.selfSelectors.forEach((function(e){var t=u.visibilityInfo();a=f.extendSelector(s,o,e,l.isVisible()),(c=new Je.Extend(u.selector,u.option,0,u.fileInfo(),t)).selfSelectors=a,a[a.length-1].extendList=[c],h.push(c),c.ruleset=u.ruleset,c.parent_ids=c.parent_ids.concat(u.parent_ids,l.parent_ids),u.firstExtendOnThisSelectorPath&&(c.firstExtendOnThisSelectorPath=!0,u.ruleset.paths.push(a))}))));if(h.length){if(this.extendChainCount++,n>100){var p="{unable to calculate}",v="{unable to calculate}";try{p=h[0].selfSelectors[0].toCSS(),v=h[0].selector.toCSS()}catch(e){}throw{message:"extend circular reference detected. One of the circular extends is currently:".concat(p,":extend(").concat(v,")")}}return h.concat(f.doExtendChaining(h,t,n+1))}return h},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitSelector=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){if(!e.root){var n,i,r,s,a=this.allExtendsStack[this.allExtendsStack.length-1],o=[],l=this;for(r=0;r0&&u[l.matched].combinator.value!==a?l=null:l.matched++,l&&(l.finished=l.matched===u.length,l.finished&&!e.allowAfter&&(r+1u&&c>0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),c=0,u++),l=s.elements.slice(c,o.index).concat([a]).concat(n.elements.slice(1)),u===o.pathIndex&&r>0?h[h.length-1].elements=h[h.length-1].elements.concat(l):(h=h.concat(t.slice(u,o.pathIndex))).push(new Je.Selector(l)),u=o.endPathIndex,(c=o.endPathElementIndex)>=t[u].elements.length&&(c=0,u++);return u0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),u++),h=(h=h.concat(t.slice(u,t.length))).map((function(e){var t=e.createDerived(e.elements);return i?t.ensureVisibility():t.ensureInvisibility(),t}))},e.prototype.visitMedia=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitMediaOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e.prototype.visitAtRule=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitAtRuleOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e}(),Z=function(){function e(){this.contexts=[[]],this._visitor=new N(this)}return e.prototype.run=function(e){return this._visitor.visit(e)},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){var n,i=this.contexts[this.contexts.length-1],r=[];this.contexts.push(r),e.root||((n=e.selectors)&&(n=n.filter((function(e){return e.getIsOutput()})),e.selectors=n.length?n:n=null,n&&e.joinSelectors(r,i,n)),n||(e.rules=null),e.paths=r)},e.prototype.visitRulesetOut=function(e){this.contexts.length=this.contexts.length-1},e.prototype.visitMedia=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules[0].root=0===n.length||n[0].multiMedia},e.prototype.visitAtRule=function(e,t){var n=this.contexts[this.contexts.length-1];e.declarations&&e.declarations.length?e.declarations[0].root=0===n.length||n[0].multiMedia:e.rules&&e.rules.length&&(e.rules[0].root=e.isRooted||0===n.length||null)},e}(),X=function(){function e(e){this._visitor=new N(this),this._context=e}return e.prototype.containsSilentNonBlockedChild=function(e){var t;if(!e)return!1;for(var n=0;n0},e.prototype.resolveVisibility=function(e){if(!e.blocksVisibility()){if(this.isEmpty(e))return;return e}var t=e.rules[0];if(this.keepOnlyVisibleChilds(t),!this.isEmpty(t))return e.ensureVisibility(),e.removeVisibilityBlock(),e},e.prototype.isVisibleRuleset=function(e){return!!e.firstRoot||!this.isEmpty(e)&&!(!e.root&&!this.hasVisibleSelector(e))},e}(),Y=function(e){this._visitor=new N(this),this._context=e,this.utils=new X(e)};Y.prototype={isReplacing:!0,run:function(e){return this._visitor.visit(e)},visitDeclaration:function(e,t){if(!e.blocksVisibility()&&!e.variable)return e},visitMixinDefinition:function(e,t){e.frames=[]},visitExtend:function(e,t){},visitComment:function(e,t){if(!e.blocksVisibility()&&!e.isSilent(this._context))return e},visitMedia:function(e,t){var n=e.rules[0].rules;return e.accept(this._visitor),t.visitDeeper=!1,this.utils.resolveVisibility(e,n)},visitImport:function(e,t){if(!e.blocksVisibility())return e},visitAtRule:function(e,t){return e.rules&&e.rules.length?this.visitAtRuleWithBody(e,t):this.visitAtRuleWithoutBody(e,t)},visitAnonymous:function(e,t){if(!e.blocksVisibility())return e.accept(this._visitor),e},visitAtRuleWithBody:function(e,t){var n=function(e){var t=e.rules;return function(e){var t=e.rules;return 1===t.length&&(!t[0].paths||0===t[0].paths.length)}(e)?t[0].rules:t}(e);return e.accept(this._visitor),t.visitDeeper=!1,this.utils.isEmpty(e)||this._mergeRules(e.rules[0].rules),this.utils.resolveVisibility(e,n)},visitAtRuleWithoutBody:function(e,t){if(!e.blocksVisibility()){if("@charset"===e.name){if(this.charset){if(e.debugInfo){var n=new Je.Comment("/* ".concat(e.toCSS(this._context).replace(/\n/g,"")," */\n"));return n.debugInfo=e.debugInfo,this._visitor.visit(n)}return}this.charset=!0}return e}},checkValidNodes:function(e,t){if(e)for(var n=0;n0?e.accept(this._visitor):e.rules=null,t.visitDeeper=!1}return e.rules&&(this._mergeRules(e.rules),this._removeDuplicateRules(e.rules)),this.utils.isVisibleRuleset(e)&&(e.ensureVisibility(),i.splice(0,0,e)),1===i.length?i[0]:i},_compileRulesetPaths:function(e){e.paths&&(e.paths=e.paths.filter((function(e){var t;for(" "===e[0].elements[0].combinator.value&&(e[0].elements[0].combinator=new Je.Combinator("")),t=0;t=0;i--)if((n=e[i])instanceof Je.Declaration)if(r[n.name]){(t=r[n.name])instanceof Je.Declaration&&(t=r[n.name]=[r[n.name].toCSS(this._context)]);var s=n.toCSS(this._context);-1!==t.indexOf(s)?e.splice(i,1):t.push(s)}else r[n.name]=n}},_mergeRules:function(e){if(e){for(var t={},n=[],i=0;i0){var t=e[0],n=[],i=[new Je.Expression(n)];e.forEach((function(e){"+"===e.merge&&n.length>0&&i.push(new Je.Expression(n=[])),n.push(e.value),t.important=t.important||e.important})),t.value=new Je.Value(i)}}))}}};var ee={Visitor:N,ImportVisitor:J,MarkVisibleSelectorsVisitor:K,ExtendVisitor:Q,JoinSelectorVisitor:Z,ToCSSVisitor:Y};var te=function e(t){return{_data:{},add:function(e,t){e=e.toLowerCase(),this._data.hasOwnProperty(e),this._data[e]=t},addMultiple:function(e){var t=this;Object.keys(e).forEach((function(n){t.add(n,e[n])}))},get:function(e){return this._data[e]||t&&t.get(e)},getLocalFunctions:function(){return this._data},inherit:function(){return e(this)},create:function(t){return e(t)}}}(null),ne={queryInParens:!0},ie={queryInParens:!0},re=function(e,t,n,i,r,s){this.value=e,this._index=t,this._fileInfo=n,this.mapLines=i,this.rulesetLike=void 0!==r&&r,this.allowRoot=!0,this.copyVisibilityInfo(s)};re.prototype=Object.assign(new u,{type:"Anonymous",eval:function(){return new re(this.value,this._index,this._fileInfo,this.mapLines,this.rulesetLike,this.visibilityInfo())},compare:function(e){return e.toCSS&&this.toCSS()===e.toCSS()?0:void 0},isRulesetLike:function(){return this.rulesetLike},genCSS:function(e,t){this.nodeVisible=Boolean(this.value),this.nodeVisible&&t.add(this.value,this._fileInfo,this._index,this.mapLines)}});var se=function e(t,n,i,s){var a;s=s||0;var o=function(){var e,t,n,i,r,s,a,o=[],l={};function u(n){for(var i,o,c,h=l.i,f=t,p=l.i-a,v=l.i+s.length-p,d=l.i+=n,m=e;l.i=0){c={index:l.i,text:m.substr(l.i,y+2-l.i),isLineComment:!1},l.i+=c.text.length-1,l.commentStore.push(c);continue}}break}if(32!==i&&10!==i&&9!==i&&13!==i)break}if(s=s.slice(n+l.i-d+p),a=l.i,!s.length){if(tn||l.i===n&&e&&!i)&&(n=l.i,i=e);var r=o.pop();s=r.current,a=l.i=r.i,t=r.j},l.forget=function(){o.pop()},l.isWhitespace=function(t){var n=l.i+(t||0),i=e.charCodeAt(n);return 32===i||13===i||9===i||10===i},l.$re=function(e){l.i>a&&(s=s.slice(l.i-a),a=l.i);var t=e.exec(s);return t?(u(t[0].length),"string"==typeof t?t:1===t.length?t[0]:t):null},l.$char=function(t){return e.charAt(l.i)!==t?null:(u(1),t)},l.$peekChar=function(t){return e.charAt(l.i)!==t?null:t},l.$str=function(t){for(var n=t.length,i=0;ih&&(d=!1)}}while(d);return r||null},l.autoCommentAbsorb=!0,l.commentStore=[],l.finished=!1,l.peek=function(t){if("string"==typeof t){for(var n=0;n57||t<43||47===t||44===t},l.start=function(i){e=i,l.i=t=a=n=0,s=(r=[i])[0],u(0)},l.end=function(){var t,r=l.i>=e.length;return l.i=e.length-1,furthestChar:e[l.i]}},l}();function l(e,t){throw new $({index:o.i,filename:i.filename,type:t||"Syntax",message:e},n)}function u(e,s,a){t.quiet||r.warn(new $({index:null!=s?s:o.i,filename:i.filename,type:a?"".concat(a.toUpperCase()," WARNING"):"WARNING",message:e},n).toString())}function c(e,t){var n=e instanceof Function?e.call(a):o.$re(e);if(n)return n;l(t||("string"==typeof e?"expected '".concat(e,"' got '").concat(o.currentChar(),"'"):"unexpected token"))}function h(e,t){if(o.$char(e))return e;l(t||"expected '".concat(e,"' got '").concat(o.currentChar(),"'"))}function f(e){var t=i.filename;return{lineNumber:k(e,o.getInput()).line+1,fileName:t}}return{parserInput:o,imports:n,fileInfo:i,parseNode:function(e,t,r){var l,u=[],c=o;try{c.start(e);for(var h=0,f=void 0;f=t[h];h++)l=a[f](),u.push(l||null);c.end().isFinished?r(null,u):r(!0,null)}catch(e){throw new $({index:e.index+s,message:e.message},n,i.filename)}},parse:function(r,s,u){var c,h,f,p,v=null,d="";if(u&&u.disablePluginRule&&(a.plugin=function(){o.$re(/^@plugin?\s+/)&&l("@plugin statements are not allowed when disablePluginRule is set to true")}),h=u&&u.globalVars?"".concat(e.serializeVars(u.globalVars),"\n"):"",f=u&&u.modifyVars?"\n".concat(e.serializeVars(u.modifyVars)):"",t.pluginManager)for(var m=t.pluginManager.getPreProcessors(),g=0;g");return e},args:function(e){var t,n,i,r,s,u,c,h=a.entities,f={args:null,variadic:!1},p=[],v=[],d=[],m=!0;for(o.save();;){if(e)u=a.detachedRuleset()||a.expression();else{if(o.commentStore.length=0,o.$str("...")){f.variadic=!0,o.$char(";")&&!t&&(t=!0),(t?v:d).push({variadic:!0});break}u=h.variable()||h.property()||h.literal()||h.keyword()||this.call(!0)}if(!u||!m)break;r=null,u.throwAwayComments&&u.throwAwayComments(),s=u;var g=null;if(e?u.value&&1==u.value.length&&(g=u.value[0]):g=u,g&&(g instanceof Je.Variable||g instanceof Je.Property))if(o.$char(":")){if(p.length>0&&(t&&l("Cannot mix ; and , as delimiter types"),n=!0),!(s=a.detachedRuleset()||a.expression())){if(!e)return o.restore(),f.args=[],f;l("could not understand value for named argument")}r=i=g.name}else if(o.$str("...")){if(!e){f.variadic=!0,o.$char(";")&&!t&&(t=!0),(t?v:d).push({name:u.name,variadic:!0});break}c=!0}else e||(i=r=g.name,s=null);s&&p.push(s),d.push({name:r,value:s,expand:c}),o.$char(",")?m=!0:((m=";"===o.$char(";"))||t)&&(n&&l("Cannot mix ; and , as delimiter types"),t=!0,p.length>1&&(s=new Je.Value(p)),v.push({name:i,value:s,expand:c}),i=null,p=[],n=!1)}return o.forget(),f.args=t?v:d,f},definition:function(){var e,t,n,i,r=[],s=!1;if(!("."!==o.currentChar()&&"#"!==o.currentChar()||o.peek(/^[^{]*\}/)))if(o.save(),t=o.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){e=t[1];var l=this.args(!1);if(r=l.args,s=l.variadic,!o.$char(")"))return void o.restore("Missing closing ')'");if(o.commentStore.length=0,o.$str("when")&&(i=c(a.conditions,"expected condition")),n=a.block())return o.forget(),new Je.mixin.Definition(e,r,n,i,s);o.restore()}else o.restore()},ruleLookups:function(){var e,t=[];if("["===o.currentChar()){for(;;){if(o.save(),!(e=this.lookupValue())&&""!==e){o.restore();break}t.push(e),o.forget()}return t.length>0?t:void 0}},lookupValue:function(){if(o.save(),o.$char("[")){var e=o.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);if(o.$char("]"))return e||""===e?(o.forget(),e):void o.restore();o.restore()}else o.restore()}},entity:function(){var e=this.entities;return this.comment()||e.literal()||e.variable()||e.url()||e.property()||e.call()||e.keyword()||this.mixin.call(!0)||e.javascript()},end:function(){return o.$char(";")||o.peek("}")},ieAlpha:function(){var e;if(o.$re(/^opacity=/i))return(e=o.$re(/^\d+/))||(e=c(a.entities.variable,"Could not parse alpha"),e="@{".concat(e.name.slice(1),"}")),h(")"),new Je.Quoted("","alpha(opacity=".concat(e,")"))},element:function(){var e,t,n,r=o.i;if(t=this.combinator(),!(e=o.$re(/^(?:\d+\.\d+|\d+)%/)||o.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||o.$char("*")||o.$char("&")||this.attribute()||o.$re(/^\([^&()@]+\)/)||o.$re(/^[.#:](?=@)/)||this.entities.variableCurly()))if(o.save(),o.$char("("))if(n=this.selector(!1)){for(var a=[];o.$char(",");)a.push(n),a.push(new re(",")),n=this.selector(!1);a.push(n),o.$char(")")?(e=a.length>1?new Je.Paren(new ae(a)):new Je.Paren(n),o.forget()):o.restore("Missing closing ')'")}else o.restore("Missing closing ')'");else o.forget();if(e)return new Je.Element(t,e,e instanceof Je.Variable,r+s,i)},combinator:function(){var e=o.currentChar();if("/"===e){o.save();var t=o.$re(/^\/[a-z]+\//i);if(t)return o.forget(),new Je.Combinator(t);o.restore()}if(">"===e||"+"===e||"~"===e||"|"===e||"^"===e){for(o.i++,"^"===e&&"^"===o.currentChar()&&(e="^^",o.i++);o.isWhitespace();)o.i++;return new Je.Combinator(e)}return o.isWhitespace(-1)?new Je.Combinator(" "):new Je.Combinator(null)},selector:function(e){var t,n,r,a,u,h,f,p=o.i;for(e=!1!==e;(e&&(n=this.extend())||e&&(h=o.$str("when"))||(a=this.element()))&&(h?f=c(this.conditions,"expected condition"):f?l("CSS guard can only be used at the end of selector"):n?u=u?u.concat(n):n:(u&&l("Extend can only be used at the end of selector"),r=o.currentChar(),Array.isArray(a)&&a.forEach((function(e){return t.push(e)})),t?t.push(a):t=[a],a=null),"{"!==r&&"}"!==r&&";"!==r&&","!==r&&")"!==r););if(t)return new Je.Selector(t,u,f,p+s,i);u&&l("Extend must be used to extend a selector, it cannot be used on its own")},selectors:function(){for(var e,t;(e=this.selector())&&(t?t.push(e):t=[e],o.commentStore.length=0,e.condition&&t.length>1&&l("Guards are only currently allowed on a single selector."),o.$char(","));)e.condition&&l("Guards are only currently allowed on a single selector."),o.commentStore.length=0;return t},attribute:function(){if(o.$char("[")){var e,t,n,i,r=this.entities;return(e=r.variableCurly())||(e=c(/^(?:[_A-Za-z0-9-*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(n=o.$re(/^[|~*$^]?=/))&&(t=r.quoted()||o.$re(/^[0-9]+%/)||o.$re(/^[\w-]+/)||r.variableCurly())&&(i=o.$re(/^[iIsS]/)),h("]"),new Je.Attribute(e,n,t,i)}},block:function(){var e;if(o.$char("{")&&(e=this.primary())&&o.$char("}"))return e},blockRuleset:function(){var e=this.block();return e&&(e=new Je.Ruleset(null,e)),e},detachedRuleset:function(){var e,t,n;if(o.save(),!o.$re(/^[.#]\(/)||(t=(e=this.mixin.args(!1)).args,n=e.variadic,o.$char(")"))){var i=this.blockRuleset();if(i)return o.forget(),t?new Je.mixin.Definition(null,t,i,null,n):new Je.DetachedRuleset(i);o.restore()}else o.restore()},ruleset:function(){var e,n,i;if(o.save(),t.dumpLineNumbers&&(i=f(o.i)),(e=this.selectors())&&(n=this.block())){o.forget();var r=new Je.Ruleset(e,n,t.strictImports);return t.dumpLineNumbers&&(r.debugInfo=i),r}o.restore()},declaration:function(){var e,t,n,r,a,l,u=o.i,c=o.currentChar();if("."!==c&&"#"!==c&&"&"!==c&&":"!==c)if(o.save(),e=this.variable()||this.ruleProperty()){if((l="string"==typeof e)&&(t=this.detachedRuleset())&&(n=!0),o.commentStore.length=0,!t){if(a=!l&&e.length>1&&e.pop().value,t=e[0].value&&"--"===e[0].value.slice(0,2)?o.$char(";")?new re(""):this.permissiveValue(/[;}]/,!0):this.anonymousValue())return o.forget(),new Je.Declaration(e,t,!1,a,u+s,i);t||(t=this.value()),t?r=this.important():l&&(t=this.permissiveValue())}if(t&&(this.end()||n))return o.forget(),new Je.Declaration(e,t,r,a,u+s,i);o.restore()}else o.restore()},anonymousValue:function(){var e=o.i,t=o.$re(/^([^.#@$+/'"*`(;{}-]*);/);if(t)return new Je.Anonymous(t[1],e+s)},permissiveValue:function(e){var t,n,r,s,a=e||";",c=o.i,h=[];function f(){var e=o.currentChar();return"string"==typeof a?e===a:a.test(e)}if(!f()){s=[];do{(n=this.comment())?s.push(n):((n=this.entity())&&s.push(n),o.peek(",")&&(s.push(new Je.Anonymous(",",o.i)),o.$char(",")))}while(n);if(r=f(),s.length>0){if(s=new Je.Expression(s),r)return s;h.push(s)," "===o.prevChar()&&h.push(new Je.Anonymous(" ",c))}if(o.save(),s=o.$parseUntil(a)){if("string"==typeof s&&l("Expected '".concat(s,"'"),"Parse"),1===s.length&&" "===s[0])return o.forget(),new Je.Anonymous("",c);var p=void 0;for(t=0;t]=|<=|>=|[<>]|=)/)?(o.restore(),n=this.condition(),o.save(),(r=this.atomicCondition(null,n.rvalue))||o.restore()):(o.restore(),t=this.value()),o.$char(")")?n&&!t?(u.push(new Je.Paren(new Je.QueryInParens(n.op,n.lvalue,n.rvalue,r?r.op:null,r?r.rvalue:null,n._index))),t=n):n&&t?(u.push(new Je.Paren(new Je.Declaration(n,t,null,null,o.i+s,i,!0))),c||(u[u.length-1].noSpacing=!0),c=!1):t?(u.push(new Je.Paren(t)),c=!1):l("badly formed media feature definition"):l("Missing closing ')'","Parse"))}while(t);if(o.forget(),u.length>0)return new Je.Expression(u)},mediaFeatures:function(e){var t,n=this.entities,i=[];do{if(t=this.mediaFeature(e)){if(i.push(t),!o.$char(","))break;i[i.length-1].noSpacing||(i[i.length-1].noSpacing=!1)}else if(t=n.variable()||n.mixinLookup()){if(i.push(t),!o.$char(","))break;i[i.length-1].noSpacing||(i[i.length-1].noSpacing=!1)}}while(t);return i.length>0?i:null},prepareAndGetNestableAtRule:function(e,n,r,a){var u=this.mediaFeatures(a),c=this.block();c||l("media definitions require block statements after any features"),o.forget();var h=new e(c,u,n+s,i);return t.dumpLineNumbers&&(h.debugInfo=r),h},nestableAtRule:function(){var e,n=o.i;if(t.dumpLineNumbers&&(e=f(n)),o.save(),o.$peekChar("@")){if(o.$str("@media"))return this.prepareAndGetNestableAtRule(Je.Media,n,e,ne);if(o.$str("@container"))return this.prepareAndGetNestableAtRule(Je.Container,n,e,ie)}o.restore()},plugin:function(){var e,t,n,r=o.i;if(o.$re(/^@plugin\s+/)){if(n=(t=this.pluginArgs())?{pluginArgs:t,isPlugin:!0}:{isPlugin:!0},e=this.entities.quoted()||this.entities.url())return o.$char(";")||(o.i=r,l("missing semi-colon on @plugin")),new Je.Import(e,null,n,r+s,i);o.i=r,l("malformed @plugin statement")}},pluginArgs:function(){if(o.save(),!o.$char("("))return o.restore(),null;var e=o.$re(/^\s*([^);]+)\)\s*/);return e[1]?(o.forget(),e[1].trim()):(o.restore(),null)},atruleUnknown:function(e,t,n){return e=this.permissiveValue(/^[{;]/),n="{"===o.currentChar(),e?e.value||(e=null):n||";"===o.currentChar()||l("".concat(t," rule is missing block or ending semi-colon")),[e,n]},atruleBlock:function(e,t,n,i){if(e=this.blockRuleset(),o.save(),e||n||(t=this.entity(),e=this.blockRuleset()),e||n)o.forget();else{o.restore();var r=[];for(t=this.entity();o.$char(",");)r.push(t),t=this.entity();t&&r.length>0?(r.push(t),t=r,i=!0):e=this.blockRuleset()}return[e,t,i]},atrule:function(){var e,n,r,a,u,c,h,p=o.i,v=!0,d=!0,m=!1;if("@"===o.currentChar()){if(n=this.import()||this.plugin()||this.nestableAtRule())return n;if(o.save(),e=o.$re(/^@[a-z-]+/)){switch(a=e,"-"==e.charAt(1)&&e.indexOf("-",2)>0&&(a="@".concat(e.slice(e.indexOf("-",2)+1))),a){case"@charset":u=!0,v=!1;break;case"@namespace":c=!0,v=!1;break;case"@keyframes":case"@counter-style":u=!0;break;case"@document":case"@supports":h=!0,d=!1;break;case"@starting-style":case"@layer":d=!1;break;default:h=!0}if(o.commentStore.length=0,u)(n=this.entity())||l("expected ".concat(e," identifier"));else if(c)(n=this.expression())||l("expected ".concat(e," expression"));else if(h){n=(g=this.atruleUnknown(n,e,v))[0],v=g[1]}if(v){var g,y=this.atruleBlock(r,n,d,m);if(r=y[0],n=y[1],m=y[2],!r&&!h)o.restore(),e=o.$re(/^@[a-z-]+/),n=(g=this.atruleUnknown(n,e,v))[0],(v=g[1])&&(r=(y=this.atruleBlock(r,n,d,m))[0],n=y[1],m=y[2])}if(r||m||!v&&n&&o.$char(";"))return o.forget(),new Je.AtRule(e,n,r,p+s,i,t.dumpLineNumbers?f(p):null,d);o.restore("at-rule options not recognised")}}},value:function(){var e,t=[],n=o.i;do{if((e=this.expression())&&(t.push(e),!o.$char(",")))break}while(e);if(t.length>0)return new Je.Value(t,n+s)},important:function(){if("!"===o.currentChar())return o.$re(/^! *important/)},sub:function(){var e,t;if(o.save(),o.$char("("))return(e=this.addition())&&o.$char(")")?(o.forget(),(t=new Je.Expression([e])).parens=!0,t):void o.restore("Expected ')'");o.restore()},colorOperand:function(){o.save();var e=o.$re(/^[lchrgbs]\s+/);if(e)return new Je.Keyword(e[0]);o.restore()},multiplication:function(){var e,t,n,i,r;if(e=this.operand()){for(r=o.isWhitespace(-1);!o.peek(/^\/[*/]/);){if(o.save(),!(n=o.$char("/")||o.$char("*"))){var s=o.i;(n=o.$str("./"))&&u("./ operator is deprecated",s,"DEPRECATED")}if(!n){o.forget();break}if(!(t=this.operand())){o.restore();break}o.forget(),e.parensInOp=!0,t.parensInOp=!0,i=new Je.Operation(n,[i||e,t],r),r=o.isWhitespace(-1)}return i||e}},addition:function(){var e,t,n,i,r;if(e=this.multiplication()){for(r=o.isWhitespace(-1);(n=o.$re(/^[-+]\s+/)||!r&&(o.$char("+")||o.$char("-")))&&(t=this.multiplication());)e.parensInOp=!0,t.parensInOp=!0,i=new Je.Operation(n,[i||e,t],r),r=o.isWhitespace(-1);return i||e}},conditions:function(){var e,t,n,i=o.i;if(e=this.condition(!0)){for(;o.peek(/^,\s*(not\s*)?\(/)&&o.$char(",")&&(t=this.condition(!0));)n=new Je.Condition("or",n||e,t,i+s);return n||e}},condition:function(e){var t,n,i;if(t=this.conditionAnd(e)){if(n=o.$str("or")){if(!(i=this.condition(e)))return;t=new Je.Condition(n,t,i)}return t}},conditionAnd:function(e){var t,n,i,r,s=this;if(t=(r=s.negatedCondition(e)||s.parenthesisCondition(e))||e?r:s.atomicCondition(e)){if(n=o.$str("and")){if(!(i=this.conditionAnd(e)))return;t=new Je.Condition(n,t,i)}return t}},negatedCondition:function(e){if(o.$str("not")){var t=this.parenthesisCondition(e);return t&&(t.negate=!t.negate),t}},parenthesisCondition:function(e){var t;if(o.save(),o.$str("(")){if(t=function(t){var n;if(o.save(),n=t.condition(e)){if(o.$char(")"))return o.forget(),n;o.restore()}else o.restore()}(this))return o.forget(),t;if(t=this.atomicCondition(e)){if(o.$char(")"))return o.forget(),t;o.restore("expected ')' got '".concat(o.currentChar(),"'"))}else o.restore()}else o.restore()},atomicCondition:function(e,t){var n,i,r,a,u=this.entities,c=o.i,h=function(){return this.addition()||u.keyword()||u.quoted()||u.mixinLookup()}.bind(this);if(n=t||h())return o.$char(">")?a=o.$char("=")?">=":">":o.$char("<")?a=o.$char("=")?"<=":"<":o.$char("=")&&(a=o.$char(">")?"=>":o.$char("<")?"=<":"="),a?(i=h())?r=new Je.Condition(a,n,i,c+s,!1):l("expected expression"):t||(r=new Je.Condition("=",n,new Je.Keyword("true"),c+s,!1)),r},operand:function(){var e,t=this.entities;o.peek(/^-[@$(]/)&&(e=o.$char("-"));var n=this.sub()||t.dimension()||t.color()||t.variable()||t.property()||t.call()||t.quoted(!0)||t.colorKeyword()||this.colorOperand()||t.mixinLookup();return e&&(n.parensInOp=!0,n=new Je.Negative(n)),n},expression:function(){var e,t,n=[],i=o.i;do{!(e=this.comment())||e.isLineComment?((e=this.addition()||this.entity())instanceof Je.Comment&&(e=null),e&&(n.push(e),o.peek(/^\/[/*]/)||(t=o.$char("/"))&&n.push(new Je.Anonymous(t,i+s)))):n.push(e)}while(e);if(n.length>0)return new Je.Expression(n)},property:function(){var e=o.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(e)return e[1]},ruleProperty:function(){var e,t,n=[],r=[];o.save();var a=o.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(a)return n=[new Je.Keyword(a[1])],o.forget(),n;function l(e){var t=o.i,i=o.$re(e);if(i)return r.push(t),n.push(i[1])}for(l(/^(\*?)/);l(/^((?:[\w-]+)|(?:[@$]\{[\w-]+\}))/););if(n.length>1&&l(/^((?:\+_|\+)?)\s*:/)){for(o.forget(),""===n[0]&&(n.shift(),r.shift()),t=0;t0;e--){var t=this.rules[e-1];if(t instanceof ce)return this.parseValue(t)}},parseValue:function(e){var t=this;function n(e){return e.value instanceof re&&!e.parsed?("string"==typeof e.value.value?new se(this.parse.context,this.parse.importManager,e.fileInfo(),e.value.getIndex()).parseNode(e.value.value,["value","important"],(function(t,n){t&&(e.parsed=!0),n&&(e.value=n[0],e.important=n[1]||"",e.parsed=!0)})):e.parsed=!0,e):e}if(Array.isArray(e)){var i=[];return e.forEach((function(e){i.push(n.call(t,e))})),i}return n.call(t,e)},rulesets:function(){if(!this.rules)return[];var e,t,n=[],i=this.rules;for(e=0;t=i[e];e++)t.isRuleset&&n.push(t);return n},prependRule:function(e){var t=this.rules;t?t.unshift(e):this.rules=[e],this.setParent(e,this)},find:function(e,t,n){t=t||this;var i,r,s=[],a=e.toCSS();return a in this._lookups?this._lookups[a]:(this.rulesets().forEach((function(a){if(a!==t)for(var o=0;oi){if(!n||n(a)){r=a.find(new ae(e.elements.slice(i)),t,n);for(var l=0;l0&&t.add(l),e.firstSelector=!0,a[0].genCSS(e,t),e.firstSelector=!1,i=1;i0?(s=(r=A(e)).pop(),a=i.createDerived(A(s.elements))):a=i.createDerived([]),t.length>0){var o=n.combinator,l=t[0].elements[0];o.emptyOrWhitespace&&!l.combinator.emptyOrWhitespace&&(o=l.combinator),a.elements.push(new g(o,l.value,n.isVariable,n._index,n._fileInfo)),a.elements=a.elements.concat(t[0].elements.slice(1))}if(0!==a.elements.length&&r.push(a),t.length>1){var u=t.slice(1);u=u.map((function(e){return e.createDerived(e.elements,[])})),r=r.concat(u)}return r}function a(e,t,n,i,r){var a;for(a=0;a0?i[i.length-1]=i[i.length-1].createDerived(i[i.length-1].elements.concat(e)):i.push(new ae(e));else t.push([new ae(e)])}function l(e,t){var n=t.createDerived(t.elements,t.extendList,t.evaldCondition);return n.copyVisibilityInfo(e),n}var u,c;if(!function e(t,n,l){var u,c,h,f,p,d,m,y,b,w,x,S,I=!1;for(f=[],p=[[]],u=0;y=l.elements[u];u++)if("&"!==y.value){var C=(S=void 0,(x=y).value instanceof v&&(S=x.value.value)instanceof ae?S:null);if(null!==C){o(f,p);var k,A=[],_=[];for(k=e(A,n,C),I=I||k,h=0;h0&&m[0].elements.push(new g(y.combinator,"",y.isVariable,y._index,y._fileInfo)),d.push(m);else for(h=0;h0&&(t.push(p[u]),w=p[u][b-1],p[u][b-1]=w.createDerived(w.elements,l.extendList));return I}(c=[],t,n))if(t.length>0)for(c=[],u=0;u0)for(t=0;t-1e-6&&(i=n.toFixed(20).replace(/0+$/,"")),e&&e.compress){if(0===n&&this.unit.isLength())return void t.add(i);n>0&&n<1&&(i=i.substr(1))}t.add(i),this.unit.genCSS(e,t)},operate:function(e,t,n){var i=this._operate(e,t,this.value,n.value),r=this.unit.clone();if("+"===t||"-"===t)if(0===r.numerator.length&&0===r.denominator.length)r=n.unit.clone(),this.unit.backupUnit&&(r.backupUnit=this.unit.backupUnit);else if(0===n.unit.numerator.length&&0===r.denominator.length);else{if(n=n.convertTo(this.unit.usedUnits()),e.strictUnits&&n.unit.toString()!==r.toString())throw new Error("Incompatible units. Change the units or use the unit function. "+"Bad units: '".concat(r.toString(),"' and '").concat(n.unit.toString(),"'."));i=this._operate(e,t,this.value,n.value)}else"*"===t?(r.numerator=r.numerator.concat(n.unit.numerator).sort(),r.denominator=r.denominator.concat(n.unit.denominator).sort(),r.cancel()):"/"===t&&(r.numerator=r.numerator.concat(n.unit.denominator).sort(),r.denominator=r.denominator.concat(n.unit.numerator).sort(),r.cancel());return new ye(i,r)},compare:function(e){var t,n;if(e instanceof ye){if(this.unit.isEmpty()||e.unit.isEmpty())t=this,n=e;else if(t=this.unify(),n=e.unify(),0!==t.unit.compare(n.unit))return;return u.numericCompare(t.value,n.value)}},unify:function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},convertTo:function(e){var t,n,i,r,s,a=this.value,l=this.unit.clone(),u={};if("string"==typeof e){for(t in o)o[t].hasOwnProperty(e)&&((u={})[t]=e);e=u}for(n in s=function(e,t){return i.hasOwnProperty(e)?(t?a/=i[e]/i[r]:a*=i[e]/i[r],r):e},e)e.hasOwnProperty(n)&&(r=e[n],i=o[n],l.map(s));return l.cancel(),new ye(a,l)}});var be=function(e,t){if(this.value=e,this.noSpacing=t,!e)throw new Error("Expression requires an array parameter")};be.prototype=Object.assign(new u,{type:"Expression",accept:function(e){this.value=e.visitArray(this.value)},eval:function(e){var t,n=this.noSpacing,i=e.isMathOn(),r=this.parens,s=!1;return r&&e.inParenthesis(),this.value.length>1?t=new be(this.value.map((function(t){return t.eval?t.eval(e):t})),this.noSpacing):1===this.value.length?(!this.value[0].parens||this.value[0].parensInOp||e.inCalc||(s=!0),t=this.value[0].eval(e)):t=this,r&&e.outOfParenthesis(),!this.parens||!this.parensInOp||i||s||t instanceof ye||(t=new v(t)),t.noSpacing=t.noSpacing||n,t},genCSS:function(e,t){for(var n=0;n1){var n=new ae([],null,null,this.getIndex(),this.fileInfo()).createEmptySelectors();(t=new me(n,e.mediaBlocks)).multiMedia=!0,t.copyVisibilityInfo(this.visibilityInfo()),this.setParent(t,this)}return delete e.mediaBlocks,delete e.mediaPath,t},evalNested:function(e){var t,n;this.evalFunction();var i=e.mediaPath.concat([this]);for(t=0;t0;t--)e.splice(t,0,new re("and"));return new be(e)}))),this.setParent(this.features,this),new me([],[])},permute:function(e){if(0===e.length)return[];if(1===e.length)return e[0];for(var t=[],n=this.permute(e.slice(1)),i=0;i0)for(var o=function(t){var o=e.frames[t];if("Ruleset"===o.type&&o.rules&&o.rules.length>0&&o&&!o.root&&o.selectors&&o.selectors.length>0&&(a=a.concat(o.selectors)),a.length>0){for(var l="",u={add:function(e){l+=e}},c=0;c0&&i>0&&!s&&!r;return(this.isRooted&&n>0&&0===i&&!s&&r||!u)&&(t[0].root=!0),t},variable:function(e){if(this.rules)return me.prototype.variable.call(this.rules[0],e)},find:function(){if(this.rules)return me.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){if(this.rules)return me.prototype.rulesets.apply(this.rules[0])},outputRuleset:function(e,t,n){var i,r=n.length;if(e.tabLevel=1+(0|e.tabLevel),e.compress){for(t.add("{"),i=0;i=1)if("Expression"===(o=r[0]).type&&Array.isArray(o.value)&&o.value.length>=2)"Keyword"===(r=o.value)[0].type&&"layer"===r[0].value&&"Paren"===r[1].type&&(this.css=!1)}if(this.options.inline){var s=new re(this.root,0,{filename:this.importedFilename,reference:this.path._fileInfo&&this.path._fileInfo.reference},!0,!0);return this.features?new Oe([s],this.features.value):[s]}if(this.css||this.layerCss){var a=new Fe(this.evalPath(e),i,this.options,this._index);if(this.layerCss&&(a.css=this.layerCss,a.path._fileInfo=this._fileInfo),!a.css&&this.error)throw this.error;return a}if(this.root){if(this.features){var o;r=this.features.value;if(Array.isArray(r)&&1===r.length)if("Expression"===(o=r[0]).type&&Array.isArray(o.value)&&o.value.length>=2)if("Keyword"===(r=o.value)[0].type&&"layer"===r[0].value&&"Paren"===r[1].type)return this.layerCss=!0,r[0]=new be(r.slice(0,2)),r.splice(1,1),r[0].noSpacing=!0,this}return(t=new me(null,A(this.root.rules))).evalImports(e),this.features?new Oe(t.rules,this.features.value):t.rules}if(this.features){r=this.features.value;if(Array.isArray(r)&&r.length>=1)if(r=r[0].value,Array.isArray(r)&&r.length>=2)if("Keyword"===r[0].type&&"layer"===r[0].value&&"Paren"===r[1].type)return this.css=!0,r[0]=new be(r.slice(0,2)),r.splice(1,1),r[0].noSpacing=!0,this}return[]}});var $e=function(){};$e.prototype=Object.assign(new u,{evaluateJavaScript:function(e,t){var n,i=this,r={};if(!t.javascriptEnabled)throw{message:"Inline JavaScript is not enabled. Is it set in your options?",filename:this.fileInfo().filename,index:this.getIndex()};e=e.replace(/@\{([\w-]+)\}/g,(function(e,n){return i.jsify(new _e("@".concat(n),i.getIndex(),i.fileInfo()).eval(t))}));try{e=new Function("return (".concat(e,")"))}catch(t){throw{message:"JavaScript evaluation error: ".concat(t.message," from `").concat(e,"`"),filename:this.fileInfo().filename,index:this.getIndex()}}var s=t.frames[0].variables();for(var a in s)s.hasOwnProperty(a)&&(r[a.slice(1)]={value:s[a].value,toJS:function(){return this.value.eval(t).toCSS()}});try{n=e.call(r)}catch(e){throw{message:"JavaScript evaluation error: '".concat(e.name,": ").concat(e.message.replace(/["]/g,"'"),"'"),filename:this.fileInfo().filename,index:this.getIndex()}}return n},jsify:function(e){return Array.isArray(e.value)&&e.value.length>1?"[".concat(e.value.map((function(e){return e.toCSS()})).join(", "),"]"):e.toCSS()}});var Ve=function(e,t,n,i){this.escaped=t,this.expression=e,this._index=n,this._fileInfo=i};Ve.prototype=Object.assign(new $e,{type:"JavaScript",eval:function(e){var t=this.evaluateJavaScript(this.expression,e),n=typeof t;return"number"!==n||isNaN(t)?"string"===n?new Ee('"'.concat(t,'"'),t,this.escaped,this._index):Array.isArray(t)?new re(t.join(", ")):new re(t):new ye(t)}});var Le=function(e,t){this.key=e,this.value=t};Le.prototype=Object.assign(new u,{type:"Assignment",accept:function(e){this.value=e.visit(this.value)},eval:function(e){return this.value.eval?new Le(this.key,this.value.eval(e)):this},genCSS:function(e,t){t.add("".concat(this.key,"=")),this.value.genCSS?this.value.genCSS(e,t):t.add(this.value)}});var je=function(e,t,n,i,r){this.op=e.trim(),this.lvalue=t,this.rvalue=n,this._index=i,this.negate=r};je.prototype=Object.assign(new u,{type:"Condition",accept:function(e){this.lvalue=e.visit(this.lvalue),this.rvalue=e.visit(this.rvalue)},eval:function(e){var t=function(e,t,n){switch(e){case"and":return t&&n;case"or":return t||n;default:switch(u.compare(t,n)){case-1:return"<"===e||"=<"===e||"<="===e;case 0:return"="===e||">="===e||"=<"===e||"<="===e;case 1:return">"===e||">="===e;default:return!1}}}(this.op,this.lvalue.eval(e),this.rvalue.eval(e));return this.negate?!t:t}});var De=function(e,t,n,i,r,s){this.op=e.trim(),this.lvalue=t,this.mvalue=n,this.op2=i?i.trim():null,this.rvalue=r,this._index=s,this.mvalues=[]};De.prototype=Object.assign(new u,{type:"QueryInParens",accept:function(e){this.lvalue=e.visit(this.lvalue),this.mvalue=e.visit(this.mvalue),this.rvalue&&(this.rvalue=e.visit(this.rvalue))},eval:function(e){var t,n;this.lvalue=this.lvalue.eval(e);for(var i=0;(n=e.frames[i])&&("Ruleset"!==n.type||!(t=n.rules.find((function(e){return!!(e instanceof ce&&e.variable)}))));i++);return this.mvalueCopy||(this.mvalueCopy=C(this.mvalue)),t?(this.mvalue=this.mvalueCopy,this.mvalue=this.mvalue.eval(e),this.mvalues.push(this.mvalue)):this.mvalue=this.mvalue.eval(e),this.rvalue&&(this.rvalue=this.rvalue.eval(e)),this},genCSS:function(e,t){this.lvalue.genCSS(e,t),t.add(" "+this.op+" "),this.mvalues.length>0&&(this.mvalue=this.mvalues.shift()),this.mvalue.genCSS(e,t),this.rvalue&&(t.add(" "+this.op2+" "),this.rvalue.genCSS(e,t))}});var Ne=function(e,t,n,i,r){this._index=n,this._fileInfo=i;var s=new ae([],null,null,this._index,this._fileInfo).createEmptySelectors();this.features=new oe(t),this.rules=[new me(s,e)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(r),this.allowRoot=!0,this.setParent(s,this),this.setParent(this.features,this),this.setParent(this.rules,this)};Ne.prototype=Object.assign(new xe,p(p({type:"Container"},we),{genCSS:function(e,t){t.add("@container ",this._fileInfo,this._index),this.features.genCSS(e,t),this.outputRuleset(e,t,this.rules)},eval:function(e){e.mediaBlocks||(e.mediaBlocks=[],e.mediaPath=[]);var t=new Ne(null,[],this._index,this._fileInfo,this.visibilityInfo());return this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,t.debugInfo=this.debugInfo),t.features=this.features.eval(e),e.mediaPath.push(t),e.mediaBlocks.push(t),this.rules[0].functionRegistry=e.frames[0].functionRegistry.inherit(),e.frames.unshift(this.rules[0]),t.rules=[this.rules[0].eval(e)],e.frames.shift(),e.mediaPath.pop(),0===e.mediaPath.length?t.evalTop(e):t.evalNested(e)}}));var Be=function(e){this.value=e};Be.prototype=Object.assign(new u,{type:"UnicodeDescriptor"});var Ue=function(e){this.value=e};Ue.prototype=Object.assign(new u,{type:"Negative",genCSS:function(e,t){t.add("-"),this.value.genCSS(e,t)},eval:function(e){return e.isMathOn()?new Ce("*",[new ye(-1),this.value]).eval(e):new Ue(this.value.eval(e))}});var qe=function(e,t,n,i,r){switch(this.selector=e,this.option=t,this.object_id=qe.next_id++,this.parent_ids=[this.object_id],this._index=n,this._fileInfo=i,this.copyVisibilityInfo(r),this.allowRoot=!0,t){case"!all":case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}this.setParent(this.selector,this)};qe.prototype=Object.assign(new u,{type:"Extend",accept:function(e){this.selector=e.visit(this.selector)},eval:function(e){return new qe(this.selector.eval(e),this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},clone:function(e){return new qe(this.selector,this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},findSelfSelectors:function(e){var t,n,i=[];for(t=0;t0&&n.length&&""===n[0].combinator.value&&(n[0].combinator.value=" "),i=i.concat(e[t].elements);this.selfSelectors=[new ae(i)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())}}),qe.next_id=0;var Te=function(e,t,n){this.variable=e,this._index=t,this._fileInfo=n,this.allowRoot=!0};Te.prototype=Object.assign(new u,{type:"VariableCall",eval:function(e){var t,n=new _e(this.variable,this.getIndex(),this.fileInfo()).eval(e),i=new $({message:"Could not evaluate variable call ".concat(this.variable)});if(!n.ruleset){if(n.rules)t=n;else if(Array.isArray(n))t=new me("",n);else{if(!Array.isArray(n.value))throw i;t=new me("",n.value)}n=new Se(t)}if(n.ruleset)return n.callEval(e);throw i}});var ze=function(e,t,n,i){this.value=e,this.lookups=t,this._index=n,this._fileInfo=i};ze.prototype=Object.assign(new u,{type:"NamespaceValue",eval:function(e){var t,n,i=this.value.eval(e);for(t=0;tthis.params.length)return!1}n=Math.min(s,this.arity);for(var a=0;a0){for(c=!0,o=0;o0)f=2;else if(f=1,p[1]+p[2]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `".concat(this.format(m),"`"),index:this.getIndex(),filename:this.fileInfo().filename};for(o=0;o0&&(e=e.slice(0,t)),(t=e.lastIndexOf("/"))<0&&(t=e.lastIndexOf("\\")),t<0?"":e.slice(0,t+1)},e.prototype.tryAppendExtension=function(e,t){return/(\.[a-z]*$)|([?;].*)$/.test(e)?e:e+t},e.prototype.tryAppendLessExtension=function(e){return this.tryAppendExtension(e,".less")},e.prototype.supportsSync=function(){return!1},e.prototype.alwaysMakePathsAbsolute=function(){return!1},e.prototype.isPathAbsolute=function(e){return/^(?:[a-z-]+:|\/|\\|#)/i.test(e)},e.prototype.join=function(e,t){return e?e+t:t},e.prototype.pathDiff=function(e,t){var n,i,r,s,a=this.extractUrlParts(e),o=this.extractUrlParts(t),l="";if(a.hostPart!==o.hostPart)return"";for(i=Math.max(o.directories.length,a.directories.length),n=0;nparseInt(t[n])?-1:1;return 0},e.prototype.versionToString=function(e){for(var t="",n=0;n1?e-1:e)<1?r+(s-r)*e*6:2*e<1?s:3*e<2?r+(s-r)*(2/3-e)*6:r}try{if(e instanceof c)return i=t?rt(t):e.alpha,new c(e.rgb,i,"hsla");e=rt(e)%360/360,t=et(rt(t)),n=et(rt(n)),i=et(rt(i)),r=2*n-(s=n<=.5?n*(t+1):n+t-n*t);var o=[255*a(e+1/3),255*a(e),255*a(e-1/3)];return i=rt(i),new c(o,i,"hsla")}catch(e){}},hsv:function(e,t,n){return Xe.hsva(e,t,n,1)},hsva:function(e,t,n,i){var r,s;e=rt(e)%360/360*360,t=rt(t),n=rt(n),i=rt(i);var a=[n,n*(1-t),n*(1-(s=e/60-(r=Math.floor(e/60%6)))*t),n*(1-(1-s)*t)],o=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return Xe.rgba(255*a[o[r][0]],255*a[o[r][1]],255*a[o[r][2]],i)},hue:function(e){return new ye(nt(e).h)},saturation:function(e){return new ye(100*nt(e).s,"%")},lightness:function(e){return new ye(100*nt(e).l,"%")},hsvhue:function(e){return new ye(it(e).h)},hsvsaturation:function(e){return new ye(100*it(e).s,"%")},hsvvalue:function(e){return new ye(100*it(e).v,"%")},red:function(e){return new ye(e.rgb[0])},green:function(e){return new ye(e.rgb[1])},blue:function(e){return new ye(e.rgb[2])},alpha:function(e){return new ye(nt(e).a)},luma:function(e){return new ye(e.luma()*e.alpha*100,"%")},luminance:function(e){var t=.2126*e.rgb[0]/255+.7152*e.rgb[1]/255+.0722*e.rgb[2]/255;return new ye(t*e.alpha*100,"%")},saturate:function(e,t,n){if(!e.rgb)return null;var i=nt(e);return void 0!==n&&"relative"===n.value?i.s+=i.s*t.value/100:i.s+=t.value/100,i.s=et(i.s),tt(e,i)},desaturate:function(e,t,n){var i=nt(e);return void 0!==n&&"relative"===n.value?i.s-=i.s*t.value/100:i.s-=t.value/100,i.s=et(i.s),tt(e,i)},lighten:function(e,t,n){var i=nt(e);return void 0!==n&&"relative"===n.value?i.l+=i.l*t.value/100:i.l+=t.value/100,i.l=et(i.l),tt(e,i)},darken:function(e,t,n){var i=nt(e);return void 0!==n&&"relative"===n.value?i.l-=i.l*t.value/100:i.l-=t.value/100,i.l=et(i.l),tt(e,i)},fadein:function(e,t,n){var i=nt(e);return void 0!==n&&"relative"===n.value?i.a+=i.a*t.value/100:i.a+=t.value/100,i.a=et(i.a),tt(e,i)},fadeout:function(e,t,n){var i=nt(e);return void 0!==n&&"relative"===n.value?i.a-=i.a*t.value/100:i.a-=t.value/100,i.a=et(i.a),tt(e,i)},fade:function(e,t){var n=nt(e);return n.a=t.value/100,n.a=et(n.a),tt(e,n)},spin:function(e,t){var n=nt(e),i=(n.h+t.value)%360;return n.h=i<0?360+i:i,tt(e,n)},mix:function(e,t,n){n||(n=new ye(50));var i=n.value/100,r=2*i-1,s=nt(e).a-nt(t).a,a=((r*s==-1?r:(r+s)/(1+r*s))+1)/2,o=1-a,l=[e.rgb[0]*a+t.rgb[0]*o,e.rgb[1]*a+t.rgb[1]*o,e.rgb[2]*a+t.rgb[2]*o],u=e.alpha*i+t.alpha*(1-i);return new c(l,u)},greyscale:function(e){return Xe.desaturate(e,new ye(100))},contrast:function(e,t,n,i){if(!e.rgb)return null;if(void 0===n&&(n=Xe.rgba(255,255,255,1)),void 0===t&&(t=Xe.rgba(0,0,0,1)),t.luma()>n.luma()){var r=n;n=t,t=r}return i=void 0===i?.43:rt(i),e.luma().5&&(i=1,n=e>.25?Math.sqrt(e):((16*e-12)*e+4)*e),e-(1-2*t)*i*(n-e)},hardlight:function(e,t){return ot.overlay(t,e)},difference:function(e,t){return Math.abs(e-t)},exclusion:function(e,t){return e+t-2*e*t},average:function(e,t){return(e+t)/2},negation:function(e,t){return 1-Math.abs(e+t-1)}};for(var lt in ot)ot.hasOwnProperty(lt)&&(at[lt]=at.bind(null,ot[lt]));var ut=function(e){return Array.isArray(e.value)?e.value:Array(e)},ct={_SELF:function(e){return e},"~":function(){for(var e=[],t=0;ta.value)&&(h[i]=r);else{if(void 0!==l&&o!==l)throw{type:"Argument",message:"incompatible types"};f[o]=h.length,h.push(r)}}return 1==h.length?h[0]:(t=h.map((function(e){return e.toCSS(c.context)})).join(this.context.compress?",":", "),new re("".concat(e?"min":"max","(").concat(t,")")))},dt={min:function(){for(var e=[],t=0;t<'.concat(u,'Gradient id="g" ').concat(n,">"),r=0;r");return i+="".concat(u,"Gradient>'),i=encodeURIComponent(i),i="data:image/svg+xml,".concat(i),new Re(new Ee("'".concat(i,"'"),i,!1,this.index,this.currentFileInfo),this.index,this.currentFileInfo)}}),te.addMultiple(bt),te.addMultiple(xt),t};function It(e,t){var n,i=(t=t||{}).variables,r=new B.Eval(t);"object"!=typeof i||Array.isArray(i)||(i=Object.keys(i).map((function(e){var t=i[e];return t instanceof Je.Value||(t instanceof Je.Expression||(t=new Je.Expression([t])),t=new Je.Value([t])),new Je.Declaration("@".concat(e),t,!1,null,0)})),r.frames=[new Je.Ruleset(null,i)]);var s,a,o=[new ee.JoinSelectorVisitor,new ee.MarkVisibleSelectorsVisitor(!0),new ee.ExtendVisitor,new ee.ToCSSVisitor({compress:Boolean(t.compress)})],l=[];if(t.pluginManager){a=t.pluginManager.visitor();for(var u=0;u<2;u++)for(a.first();s=a.get();)s.isPreEvalVisitor?0!==u&&-1!==l.indexOf(s)||(l.push(s),s.run(e)):0!==u&&-1!==o.indexOf(s)||(s.isPreVisitor?o.unshift(s):o.push(s))}n=e.eval(r);for(var c=0;c=t);n++);this.preProcessors.splice(n,0,{preProcessor:e,priority:t})},e.prototype.addPostProcessor=function(e,t){var n;for(n=0;n=t);n++);this.postProcessors.splice(n,0,{postProcessor:e,priority:t})},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.getPreProcessors=function(){for(var e=[],t=0;t=0?t.filename.substring(0,u):"."}if(l.sourceMapFullFilename&&!l.sourceMapFileInline){if(!l.sourceMapFilename&&!l.sourceMapURL){var c=l.sourceMapFullFilename.split(/[/\\]/).pop();l.sourceMapFilename=c}}else if(!l.sourceMapFilename&&!l.sourceMapURL)if(l.sourceMapOutputFilename)l.sourceMapFilename=l.sourceMapOutputFilename+".map";else if(t.filename){var h=t.filename.replace(/\.[^/.]+$/,"");l.sourceMapFilename=h+".css.map"}if(!l.sourceMapOutputFilename)if(t.filename){h=t.filename.replace(/\.[^/.]+$/,"");l.sourceMapOutputFilename=h+".css"}else l.sourceMapOutputFilename="output.css";i=new e(l),s.css=i.toCSS(n,o,this.imports)}else s.css=n.toCSS(o)}catch(e){throw new $(e,this.imports)}if(t.pluginManager)for(var f=t.pluginManager.getPostProcessors(),p=0;p0){var i=void 0,r=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?i=this.sourceMapURL:this._sourceMapFilename&&(i=this._sourceMapFilename),this.sourceMapURL=i,this.sourceMap=r}return this._css.join("")},t}()}(e=new s(e,t)),e)),o=function(e){return function(){function t(e,t,n){this.less=e,this.rootFilename=n.filename,this.paths=t.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=t.mime,this.error=null,this.context=t,this.queue=[],this.files={}}return t.prototype.push=function(t,n,i,s,a){var o=this,l=this.context.pluginManager.Loader;this.queue.push(t);var u=function(e,n,i){o.queue.splice(o.queue.indexOf(t),1);var l=i===o.rootFilename;s.optional&&e?(a(null,{rules:[]},!1,null),r.info("The file ".concat(i," was skipped because it was not found and the import was marked optional."))):(o.files[i]||s.inline||(o.files[i]={root:n,options:s}),e&&!o.error&&(o.error=e),a(e,n,l,i))},c={rewriteUrls:this.context.rewriteUrls,entryPath:i.entryPath,rootpath:i.rootpath,rootFilename:i.rootFilename},h=e.getFileManager(t,i.currentDirectory,this.context,e);if(h){var f,p,v=function(e){var t,n=e.filename,r=e.contents.replace(/^\uFEFF/,"");c.currentDirectory=h.getPath(n),c.rewriteUrls&&(c.rootpath=h.join(o.context.rootpath||"",h.pathDiff(c.currentDirectory,c.entryPath)),!h.isPathAbsolute(c.rootpath)&&h.alwaysMakePathsAbsolute()&&(c.rootpath=h.join(c.entryPath,c.rootpath))),c.filename=n;var a=new B.Parse(o.context);a.processImports=!1,o.contents[n]=r,(i.reference||s.reference)&&(c.reference=!0),s.isPlugin?(t=l.evalPlugin(r,a,o,s.pluginArgs,c))instanceof $?u(t,null,n):u(null,t,n):s.inline?u(null,r,n):!o.files[n]||o.files[n].options.multiple||s.multiple?new se(a,o,c).parse(r,(function(e,t){u(e,t,n)})):u(null,o.files[n].root,n)},d=_(this.context);n&&(d.ext=s.isPlugin?".js":".less"),s.isPlugin?(d.mime="application/javascript",d.syncImport?f=l.loadPluginSync(t,i.currentDirectory,d,e,h):p=l.loadPlugin(t,i.currentDirectory,d,e,h)):d.syncImport?f=h.loadFileSync(t,i.currentDirectory,d,e):p=h.loadFile(t,i.currentDirectory,d,e,(function(e,t){e?u(e):v(t)})),f?f.filename?v(f):u(f):p&&p.then(v,u)}else u({message:"Could not find a file-manager for ".concat(t)})},t}()}(e);var u,c=function(e,t){var n=function(e,i,r){if("function"==typeof i?(r=i,i=P(this.options,{})):i=P(this.options,i||{}),!r){var s=this;return new Promise((function(t,r){n.call(s,e,i,(function(e,n){e?r(e):t(n)}))}))}this.parse(e,i,(function(e,n,i,s){if(e)return r(e);var a;try{a=new t(n,i).toCSS(s)}catch(e){return r(e)}r(null,a)}))};return n}(0,a),h=function(e,t,n){var i=function(e,t,r){if("function"==typeof t?(r=t,t=P(this.options,{})):t=P(this.options,t||{}),!r){var s=this;return new Promise((function(n,r){i.call(s,e,t,(function(e,t){e?r(e):n(t)}))}))}var a,o=void 0,l=new At(this,!t.reUsePluginManager);if(t.pluginManager=l,a=new B.Parse(t),t.rootFileInfo)o=t.rootFileInfo;else{var u=t.filename||"input",c=u.replace(/[^/\\]*$/,"");(o={filename:u,rewriteUrls:a.rewriteUrls,rootpath:a.rootpath||"",currentDirectory:c,entryPath:c,rootFilename:u}).rootpath&&"/"!==o.rootpath.slice(-1)&&(o.rootpath+="/")}var h=new n(this,a,o);this.importManager=h,t.plugins&&t.plugins.forEach((function(e){var t,n;if(e.fileContent){if(n=e.fileContent.replace(/^\uFEFF/,""),(t=l.Loader.evalPlugin(n,a,h,e.options,e.filename))instanceof $)return r(t)}else l.addPlugin(e)})),new se(a,h,o).parse(e,(function(e,n){if(e)return r(e);r(null,n,h,t)}),t)};return i}(0,0,o),f=Pt("v".concat("4.5.1")),p={version:[f.major,f.minor,f.patch],data:l,tree:Je,Environment:s,AbstractFileManager:Ke,AbstractPluginLoader:He,environment:e,visitors:ee,Parser:se,functions:St(e),contexts:B,SourceMapOutput:n,SourceMapBuilder:i,ParseTree:a,ImportManager:o,render:c,parse:h,LessError:$,transformTree:It,utils:O,PluginManager:At,logger:r},v=function(e){return function(){var t=Object.create(e.prototype);return e.apply(t,Array.prototype.slice.call(arguments,0)),t}},d=Object.create(p);for(var m in p.tree)if("function"==typeof(u=p.tree[m]))d[m.toLowerCase()]=v(u);else for(var g in d[m]=Object.create(null),u)d[m][g.toLowerCase()]=v(u[g]);return p.parse=p.parse.bind(d),p.render=p.render.bind(d),d}var Rt={},Ot=function(){};Ot.prototype=Object.assign(new Ke,{alwaysMakePathsAbsolute:function(){return!0},join:function(e,t){return e?this.extractUrlParts(t,e).path:t},doXHR:function(e,t,n,i){var r=new XMLHttpRequest,s=!_t.isFileProtocol||_t.fileAsync;function a(t,n,i){t.status>=200&&t.status<300?n(t.responseText,t.getResponseHeader("Last-Modified")):"function"==typeof i&&i(t.status,e)}"function"==typeof r.overrideMimeType&&r.overrideMimeType("text/css"),Mt.debug("XHR: Getting '".concat(e,"'")),r.open("GET",e,s),r.setRequestHeader("Accept",t||"text/x-less, text/css; q=0.9, */*; q=0.5"),r.send(null),_t.isFileProtocol&&!_t.fileAsync?0===r.status||r.status>=200&&r.status<300?n(r.responseText):i(r.status,e):s?r.onreadystatechange=function(){4==r.readyState&&a(r,n,i)}:a(r,n,i)},supports:function(){return!0},clearFileCache:function(){Rt={}},loadFile:function(e,t,n){t&&!this.isPathAbsolute(e)&&(e=t+e),e=n.ext?this.tryAppendExtension(e,n.ext):e,n=n||{};var i=this.extractUrlParts(e,window.location.href).url,r=this;return new Promise((function(e,t){if(n.useFileCache&&Rt[i])try{var s=Rt[i];return e({contents:s,filename:i,webInfo:{lastModified:new Date}})}catch(e){return t({filename:i,message:"Error loading file ".concat(i," error was ").concat(e.message)})}r.doXHR(i,n.mime,(function(t,n){Rt[i]=t,e({contents:t,filename:i,webInfo:{lastModified:n}})}),(function(e,n){t({type:"File",message:"'".concat(n,"' wasn't found (").concat(e,")"),href:i})}))}))}});var Ft=function(e,t){return _t=e,Mt=t,Ot},$t=function(e){this.less=e};$t.prototype=Object.assign(new He,{loadPlugin:function(e,t,n,i,r){return new Promise((function(s,a){r.loadFile(e,t,n,i).then(s).catch(a)}))}});var Vt=function(t,i,r){return{add:function(s,a){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting?function(e,t){var n=e.filename||t,s=[],a="".concat(e.type||"Syntax","Error: ").concat(e.message||"There is an error in your .less file"," in ").concat(n),o=function(e,t,n){void 0!==e.extract[t]&&s.push("{line} {content}".replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};e.line&&(o(e,0,""),o(e,1,"line"),o(e,2,""),a+=" on line ".concat(e.line,", column ").concat(e.column+1,":\n").concat(s.join("\n"))),e.stack&&(e.extract||r.logLevel>=4)&&(a+="\nStack Trace\n".concat(e.stack)),i.logger.error(a)}(s,a):"function"==typeof r.errorReporting&&r.errorReporting("add",s,a):function(i,s){var a,o,l="less-error-message:".concat(e(s||"")),u=t.document.createElement("div"),c=[],h=i.filename||s,f=h.match(/([^/]+(\?.*)?)$/)[1];u.id=l,u.className="less-error-message",o="".concat(i.type||"Syntax","Error: ").concat(i.message||"There is an error in your .less file")+'
in ').concat(f," ");var p=function(e,t,n){void 0!==e.extract[t]&&c.push('
{content}'.replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};i.line&&(p(i,0,""),p(i,1,"line"),p(i,2,""),o+="on line ".concat(i.line,", column ").concat(i.column+1,":")),i.stack&&(i.extract||r.logLevel>=4)&&(o+="
Stack Trace".concat(i.stack.split("\n").slice(1).join("
"))),u.innerHTML=o,n(t.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),u.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===r.env&&(a=setInterval((function(){var e=t.document,n=e.body;n&&(e.getElementById(l)?n.replaceChild(u,e.getElementById(l)):n.insertBefore(u,n.firstChild),clearInterval(a))}),10))}(s,a)},remove:function(n){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting||"function"==typeof r.errorReporting&&r.errorReporting("remove",n):function(n){var i=t.document.getElementById("less-error-message:".concat(e(n)));i&&i.parentNode.removeChild(i)}(n)}}},Lt={javascriptEnabled:!1,depends:!1,compress:!1,lint:!1,paths:[],color:!0,strictImports:!1,insecure:!1,rootpath:"",rewriteUrls:!1,math:1,strictUnits:!1,globalVars:null,modifyVars:null,urlArgs:""};if(window.less)for(var jt in window.less)Object.prototype.hasOwnProperty.call(window.less,jt)&&(Lt[jt]=window.less[jt]);!function(e,n){t(n,i(e)),void 0===n.isFileProtocol&&(n.isFileProtocol=/^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(e.location.protocol)),n.async=n.async||!1,n.fileAsync=n.fileAsync||!1,n.poll=n.poll||(n.isFileProtocol?1e3:1500),n.env=n.env||("127.0.0.1"==e.location.hostname||"0.0.0.0"==e.location.hostname||"localhost"==e.location.hostname||e.location.port&&e.location.port.length>0||n.isFileProtocol?"development":"production");var r=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(e.location.hash);r&&(n.dumpLineNumbers=r[1]),void 0===n.useFileCache&&(n.useFileCache=!0),void 0===n.onReady&&(n.onReady=!0),n.relativeUrls&&(n.rewriteUrls="all")}(window,Lt),Lt.plugins=Lt.plugins||[],window.LESS_PLUGINS&&(Lt.plugins=Lt.plugins.concat(window.LESS_PLUGINS));var Dt,Nt,Bt,Ut=function(e,i){var r=e.document,s=Et();s.options=i;var a=s.environment,o=Ft(i,s.logger),l=new o;a.addFileManager(l),s.FileManager=o,s.PluginLoader=$t,function(e,t){t.logLevel=void 0!==t.logLevel?t.logLevel:"development"===t.env?3:1,t.loggers||(t.loggers=[{debug:function(e){t.logLevel>=4&&console.log(e)},info:function(e){t.logLevel>=3&&console.log(e)},warn:function(e){t.logLevel>=2&&console.warn(e)},error:function(e){t.logLevel>=1&&console.error(e)}}]);for(var n=0;n 0 && styleNode.childNodes.length > 0 &&\n oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue);\n }\n\n const head = document.getElementsByTagName('head')[0];\n\n // If there is no oldStyleNode, just append; otherwise, only append if we need\n // to replace oldStyleNode with an updated stylesheet\n if (oldStyleNode === null || keepOldStyleNode === false) {\n const nextEl = sheet && sheet.nextSibling || null;\n if (nextEl) {\n nextEl.parentNode.insertBefore(styleNode, nextEl);\n } else {\n head.appendChild(styleNode);\n }\n }\n if (oldStyleNode && keepOldStyleNode === false) {\n oldStyleNode.parentNode.removeChild(oldStyleNode);\n }\n\n // For IE.\n // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash.\n // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head\n if (styleNode.styleSheet) {\n try {\n styleNode.styleSheet.cssText = styles;\n } catch (e) {\n throw new Error('Couldn\\'t reassign styleSheet.cssText.');\n }\n }\n },\n currentScript: function(window) {\n const document = window.document;\n return document.currentScript || (() => {\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n }\n};\n",
+ "export default {\n error: function(msg) {\n this._fireEvent('error', msg);\n },\n warn: function(msg) {\n this._fireEvent('warn', msg);\n },\n info: function(msg) {\n this._fireEvent('info', msg);\n },\n debug: function(msg) {\n this._fireEvent('debug', msg);\n },\n addListener: function(listener) {\n this._listeners.push(listener);\n },\n removeListener: function(listener) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n },\n _fireEvent: function(type, msg) {\n for (let i = 0; i < this._listeners.length; i++) {\n const logFunction = this._listeners[i][type];\n if (logFunction) {\n logFunction(msg);\n }\n }\n },\n _listeners: []\n};\n",
+ "/**\n * @todo Document why this abstraction exists, and the relationship between\n * environment, file managers, and plugin manager\n */\n\nimport logger from '../logger';\n\nclass Environment {\n constructor(externalEnvironment, fileManagers) {\n this.fileManagers = fileManagers || [];\n externalEnvironment = externalEnvironment || {};\n\n const optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator'];\n const requiredFunctions = [];\n const functions = requiredFunctions.concat(optionalFunctions);\n\n for (let i = 0; i < functions.length; i++) {\n const propName = functions[i];\n const environmentFunc = externalEnvironment[propName];\n if (environmentFunc) {\n this[propName] = environmentFunc.bind(externalEnvironment);\n } else if (i < requiredFunctions.length) {\n this.warn(`missing required function in environment - ${propName}`);\n }\n }\n }\n\n getFileManager(filename, currentDirectory, options, environment, isSync) {\n\n if (!filename) {\n logger.warn('getFileManager called with no filename.. Please report this issue. continuing.');\n }\n if (currentDirectory === undefined) {\n logger.warn('getFileManager called with null directory.. Please report this issue. continuing.');\n }\n\n let fileManagers = this.fileManagers;\n if (options.pluginManager) {\n fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers());\n }\n for (let i = fileManagers.length - 1; i >= 0 ; i--) {\n const fileManager = fileManagers[i];\n if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) {\n return fileManager;\n }\n }\n return null;\n }\n\n addFileManager(fileManager) {\n this.fileManagers.push(fileManager);\n }\n\n clearFileManagers() {\n this.fileManagers = [];\n }\n}\n\nexport default Environment;\n",
+ "export default {\n 'aliceblue':'#f0f8ff',\n 'antiquewhite':'#faebd7',\n 'aqua':'#00ffff',\n 'aquamarine':'#7fffd4',\n 'azure':'#f0ffff',\n 'beige':'#f5f5dc',\n 'bisque':'#ffe4c4',\n 'black':'#000000',\n 'blanchedalmond':'#ffebcd',\n 'blue':'#0000ff',\n 'blueviolet':'#8a2be2',\n 'brown':'#a52a2a',\n 'burlywood':'#deb887',\n 'cadetblue':'#5f9ea0',\n 'chartreuse':'#7fff00',\n 'chocolate':'#d2691e',\n 'coral':'#ff7f50',\n 'cornflowerblue':'#6495ed',\n 'cornsilk':'#fff8dc',\n 'crimson':'#dc143c',\n 'cyan':'#00ffff',\n 'darkblue':'#00008b',\n 'darkcyan':'#008b8b',\n 'darkgoldenrod':'#b8860b',\n 'darkgray':'#a9a9a9',\n 'darkgrey':'#a9a9a9',\n 'darkgreen':'#006400',\n 'darkkhaki':'#bdb76b',\n 'darkmagenta':'#8b008b',\n 'darkolivegreen':'#556b2f',\n 'darkorange':'#ff8c00',\n 'darkorchid':'#9932cc',\n 'darkred':'#8b0000',\n 'darksalmon':'#e9967a',\n 'darkseagreen':'#8fbc8f',\n 'darkslateblue':'#483d8b',\n 'darkslategray':'#2f4f4f',\n 'darkslategrey':'#2f4f4f',\n 'darkturquoise':'#00ced1',\n 'darkviolet':'#9400d3',\n 'deeppink':'#ff1493',\n 'deepskyblue':'#00bfff',\n 'dimgray':'#696969',\n 'dimgrey':'#696969',\n 'dodgerblue':'#1e90ff',\n 'firebrick':'#b22222',\n 'floralwhite':'#fffaf0',\n 'forestgreen':'#228b22',\n 'fuchsia':'#ff00ff',\n 'gainsboro':'#dcdcdc',\n 'ghostwhite':'#f8f8ff',\n 'gold':'#ffd700',\n 'goldenrod':'#daa520',\n 'gray':'#808080',\n 'grey':'#808080',\n 'green':'#008000',\n 'greenyellow':'#adff2f',\n 'honeydew':'#f0fff0',\n 'hotpink':'#ff69b4',\n 'indianred':'#cd5c5c',\n 'indigo':'#4b0082',\n 'ivory':'#fffff0',\n 'khaki':'#f0e68c',\n 'lavender':'#e6e6fa',\n 'lavenderblush':'#fff0f5',\n 'lawngreen':'#7cfc00',\n 'lemonchiffon':'#fffacd',\n 'lightblue':'#add8e6',\n 'lightcoral':'#f08080',\n 'lightcyan':'#e0ffff',\n 'lightgoldenrodyellow':'#fafad2',\n 'lightgray':'#d3d3d3',\n 'lightgrey':'#d3d3d3',\n 'lightgreen':'#90ee90',\n 'lightpink':'#ffb6c1',\n 'lightsalmon':'#ffa07a',\n 'lightseagreen':'#20b2aa',\n 'lightskyblue':'#87cefa',\n 'lightslategray':'#778899',\n 'lightslategrey':'#778899',\n 'lightsteelblue':'#b0c4de',\n 'lightyellow':'#ffffe0',\n 'lime':'#00ff00',\n 'limegreen':'#32cd32',\n 'linen':'#faf0e6',\n 'magenta':'#ff00ff',\n 'maroon':'#800000',\n 'mediumaquamarine':'#66cdaa',\n 'mediumblue':'#0000cd',\n 'mediumorchid':'#ba55d3',\n 'mediumpurple':'#9370d8',\n 'mediumseagreen':'#3cb371',\n 'mediumslateblue':'#7b68ee',\n 'mediumspringgreen':'#00fa9a',\n 'mediumturquoise':'#48d1cc',\n 'mediumvioletred':'#c71585',\n 'midnightblue':'#191970',\n 'mintcream':'#f5fffa',\n 'mistyrose':'#ffe4e1',\n 'moccasin':'#ffe4b5',\n 'navajowhite':'#ffdead',\n 'navy':'#000080',\n 'oldlace':'#fdf5e6',\n 'olive':'#808000',\n 'olivedrab':'#6b8e23',\n 'orange':'#ffa500',\n 'orangered':'#ff4500',\n 'orchid':'#da70d6',\n 'palegoldenrod':'#eee8aa',\n 'palegreen':'#98fb98',\n 'paleturquoise':'#afeeee',\n 'palevioletred':'#d87093',\n 'papayawhip':'#ffefd5',\n 'peachpuff':'#ffdab9',\n 'peru':'#cd853f',\n 'pink':'#ffc0cb',\n 'plum':'#dda0dd',\n 'powderblue':'#b0e0e6',\n 'purple':'#800080',\n 'rebeccapurple':'#663399',\n 'red':'#ff0000',\n 'rosybrown':'#bc8f8f',\n 'royalblue':'#4169e1',\n 'saddlebrown':'#8b4513',\n 'salmon':'#fa8072',\n 'sandybrown':'#f4a460',\n 'seagreen':'#2e8b57',\n 'seashell':'#fff5ee',\n 'sienna':'#a0522d',\n 'silver':'#c0c0c0',\n 'skyblue':'#87ceeb',\n 'slateblue':'#6a5acd',\n 'slategray':'#708090',\n 'slategrey':'#708090',\n 'snow':'#fffafa',\n 'springgreen':'#00ff7f',\n 'steelblue':'#4682b4',\n 'tan':'#d2b48c',\n 'teal':'#008080',\n 'thistle':'#d8bfd8',\n 'tomato':'#ff6347',\n 'turquoise':'#40e0d0',\n 'violet':'#ee82ee',\n 'wheat':'#f5deb3',\n 'white':'#ffffff',\n 'whitesmoke':'#f5f5f5',\n 'yellow':'#ffff00',\n 'yellowgreen':'#9acd32'\n};",
+ "export default {\n length: {\n 'm': 1,\n 'cm': 0.01,\n 'mm': 0.001,\n 'in': 0.0254,\n 'px': 0.0254 / 96,\n 'pt': 0.0254 / 72,\n 'pc': 0.0254 / 72 * 12\n },\n duration: {\n 's': 1,\n 'ms': 0.001\n },\n angle: {\n 'rad': 1 / (2 * Math.PI),\n 'deg': 1 / 360,\n 'grad': 1 / 400,\n 'turn': 1\n }\n};",
+ "import colors from './colors';\nimport unitConversions from './unit-conversions';\n\nexport default { colors, unitConversions };\n",
+ "/**\n * The reason why Node is a class and other nodes simply do not extend\n * from Node (since we're transpiling) is due to this issue:\n * \n * @see https://github.com/less/less.js/issues/3434\n */\nclass Node {\n constructor() {\n this.parent = null;\n this.visibilityBlocks = undefined;\n this.nodeVisible = undefined;\n this.rootNode = null;\n this.parsed = null;\n }\n\n get currentFileInfo() {\n return this.fileInfo();\n }\n\n get index() {\n return this.getIndex();\n }\n\n setParent(nodes, parent) {\n function set(node) {\n if (node && node instanceof Node) {\n node.parent = parent;\n }\n }\n if (Array.isArray(nodes)) {\n nodes.forEach(set);\n }\n else {\n set(nodes);\n }\n }\n\n getIndex() {\n return this._index || (this.parent && this.parent.getIndex()) || 0;\n }\n\n fileInfo() {\n return this._fileInfo || (this.parent && this.parent.fileInfo()) || {};\n }\n\n isRulesetLike() { return false; }\n\n toCSS(context) {\n const strs = [];\n this.genCSS(context, {\n // remove when genCSS has JSDoc types\n // eslint-disable-next-line no-unused-vars\n add: function(chunk, fileInfo, index) {\n strs.push(chunk);\n },\n isEmpty: function () {\n return strs.length === 0;\n }\n });\n return strs.join('');\n }\n\n genCSS(context, output) {\n output.add(this.value);\n }\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n }\n\n eval() { return this; }\n\n _operate(context, op, a, b) {\n switch (op) {\n case '+': return a + b;\n case '-': return a - b;\n case '*': return a * b;\n case '/': return a / b;\n }\n }\n\n fround(context, value) {\n const precision = context && context.numPrecision;\n // add \"epsilon\" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded:\n return (precision) ? Number((value + 2e-16).toFixed(precision)) : value;\n }\n\n static compare(a, b) {\n /* returns:\n -1: a < b\n 0: a = b\n 1: a > b\n and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */\n\n if ((a.compare) &&\n // for \"symmetric results\" force toCSS-based comparison\n // of Quoted or Anonymous if either value is one of those\n !(b.type === 'Quoted' || b.type === 'Anonymous')) {\n return a.compare(b);\n } else if (b.compare) {\n return -b.compare(a);\n } else if (a.type !== b.type) {\n return undefined;\n }\n\n a = a.value;\n b = b.value;\n if (!Array.isArray(a)) {\n return a === b ? 0 : undefined;\n }\n if (a.length !== b.length) {\n return undefined;\n }\n for (let i = 0; i < a.length; i++) {\n if (Node.compare(a[i], b[i]) !== 0) {\n return undefined;\n }\n }\n return 0;\n }\n\n static numericCompare(a, b) {\n return a < b ? -1\n : a === b ? 0\n : a > b ? 1 : undefined;\n }\n\n // Returns true if this node represents root of ast imported by reference\n blocksVisibility() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n return this.visibilityBlocks !== 0;\n }\n\n addVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks + 1;\n }\n\n removeVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks - 1;\n }\n\n // Turns on node visibility - if called node will be shown in output regardless\n // of whether it comes from import by reference or not\n ensureVisibility() {\n this.nodeVisible = true;\n }\n\n // Turns off node visibility - if called node will NOT be shown in output regardless\n // of whether it comes from import by reference or not\n ensureInvisibility() {\n this.nodeVisible = false;\n }\n\n // return values:\n // false - the node must not be visible\n // true - the node must be visible\n // undefined or null - the node has the same visibility as its parent\n isVisible() {\n return this.nodeVisible;\n }\n\n visibilityInfo() {\n return {\n visibilityBlocks: this.visibilityBlocks,\n nodeVisible: this.nodeVisible\n };\n }\n\n copyVisibilityInfo(info) {\n if (!info) {\n return;\n }\n this.visibilityBlocks = info.visibilityBlocks;\n this.nodeVisible = info.nodeVisible;\n }\n}\n\nexport default Node;\n",
+ "import Node from './node';\nimport colors from '../data/colors';\n\n//\n// RGB Colors - #ff0014, #eee\n//\nconst Color = function(rgb, a, originalForm) {\n const self = this;\n //\n // The end goal here, is to parse the arguments\n // into an integer triplet, such as `128, 255, 0`\n //\n // This facilitates operations and conversions.\n //\n if (Array.isArray(rgb)) {\n this.rgb = rgb;\n } else if (rgb.length >= 6) {\n this.rgb = [];\n rgb.match(/.{2}/g).map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c, 16));\n } else {\n self.alpha = (parseInt(c, 16)) / 255;\n }\n });\n } else {\n this.rgb = [];\n rgb.split('').map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c + c, 16));\n } else {\n self.alpha = (parseInt(c + c, 16)) / 255;\n }\n });\n }\n this.alpha = this.alpha || (typeof a === 'number' ? a : 1);\n if (typeof originalForm !== 'undefined') {\n this.value = originalForm;\n }\n}\n\nColor.prototype = Object.assign(new Node(), {\n type: 'Color',\n\n luma() {\n let r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255;\n\n r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);\n g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);\n b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context, doNotCompress) {\n const compress = context && context.compress && !doNotCompress;\n let color;\n let alpha;\n let colorFunction;\n let args = [];\n\n // `value` is set if this color was originally\n // converted from a named color string so we need\n // to respect this and try to output named color too.\n alpha = this.fround(context, this.alpha);\n\n if (this.value) {\n if (this.value.indexOf('rgb') === 0) {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n } else if (this.value.indexOf('hsl') === 0) {\n if (alpha < 1) {\n colorFunction = 'hsla';\n } else {\n colorFunction = 'hsl';\n }\n } else {\n return this.value;\n }\n } else {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n }\n\n switch (colorFunction) {\n case 'rgba':\n args = this.rgb.map(function (c) {\n return clamp(Math.round(c), 255);\n }).concat(clamp(alpha, 1));\n break;\n case 'hsla':\n args.push(clamp(alpha, 1));\n // eslint-disable-next-line no-fallthrough\n case 'hsl':\n color = this.toHSL();\n args = [\n this.fround(context, color.h),\n `${this.fround(context, color.s * 100)}%`,\n `${this.fround(context, color.l * 100)}%`\n ].concat(args);\n }\n\n if (colorFunction) {\n // Values are capped between `0` and `255`, rounded and zero-padded.\n return `${colorFunction}(${args.join(`,${compress ? '' : ' '}`)})`;\n }\n\n color = this.toRGB();\n\n if (compress) {\n const splitcolor = color.split('');\n\n // Convert color to short format\n if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) {\n color = `#${splitcolor[1]}${splitcolor[3]}${splitcolor[5]}`;\n }\n }\n\n return color;\n },\n\n //\n // Operations have to be done per-channel, if not,\n // channels will spill onto each other. Once we have\n // our result, in the form of an integer triplet,\n // we create a new Color node to hold the result.\n //\n operate(context, op, other) {\n const rgb = new Array(3);\n const alpha = this.alpha * (1 - other.alpha) + other.alpha;\n for (let c = 0; c < 3; c++) {\n rgb[c] = this._operate(context, op, this.rgb[c], other.rgb[c]);\n }\n return new Color(rgb, alpha);\n },\n\n toRGB() {\n return toHex(this.rgb);\n },\n\n toHSL() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const l = (max + min) / 2;\n const d = max - min;\n\n if (max === min) {\n h = s = 0;\n } else {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, l, a };\n },\n\n // Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n toHSV() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const v = max;\n\n const d = max - min;\n if (max === 0) {\n s = 0;\n } else {\n s = d / max;\n }\n\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, v, a };\n },\n\n toARGB() {\n return toHex([this.alpha * 255].concat(this.rgb));\n },\n\n compare(x) {\n return (x.rgb &&\n x.rgb[0] === this.rgb[0] &&\n x.rgb[1] === this.rgb[1] &&\n x.rgb[2] === this.rgb[2] &&\n x.alpha === this.alpha) ? 0 : undefined;\n }\n});\n\nColor.fromKeyword = function(keyword) {\n let c;\n const key = keyword.toLowerCase();\n // eslint-disable-next-line no-prototype-builtins\n if (colors.hasOwnProperty(key)) {\n c = new Color(colors[key].slice(1));\n }\n else if (key === 'transparent') {\n c = new Color([0, 0, 0], 0);\n }\n\n if (c) {\n c.value = keyword;\n return c;\n }\n};\n\nfunction clamp(v, max) {\n return Math.min(Math.max(v, 0), max);\n}\n\nfunction toHex(v) {\n return `#${v.map(function (c) {\n c = clamp(Math.round(c), 255);\n return (c < 16 ? '0' : '') + c.toString(16);\n }).join('')}`;\n}\n\nexport default Color;\n",
+ "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n",
+ "import Node from './node';\n\nconst Paren = function(node) {\n this.value = node;\n};\n\nParen.prototype = Object.assign(new Node(), {\n type: 'Paren',\n\n genCSS(context, output) {\n output.add('(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n const paren = new Paren(this.value.eval(context));\n \n if (this.noSpacing) {\n paren.noSpacing = true;\n }\n\n return paren;\n }\n});\n\nexport default Paren;\n",
+ "import Node from './node';\nconst _noSpaceCombinators = {\n '': true,\n ' ': true,\n '|': true\n};\n\nconst Combinator = function(value) {\n if (value === ' ') {\n this.value = ' ';\n this.emptyOrWhitespace = true;\n } else {\n this.value = value ? value.trim() : '';\n this.emptyOrWhitespace = this.value === '';\n }\n}\n\nCombinator.prototype = Object.assign(new Node(), {\n type: 'Combinator',\n\n genCSS(context, output) {\n const spaceOrEmpty = (context.compress || _noSpaceCombinators[this.value]) ? '' : ' ';\n output.add(spaceOrEmpty + this.value + spaceOrEmpty);\n }\n});\n\nexport default Combinator;\n",
+ "import Node from './node';\nimport Paren from './paren';\nimport Combinator from './combinator';\n\nconst Element = function(combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {\n this.combinator = combinator instanceof Combinator ?\n combinator : new Combinator(combinator);\n\n if (typeof value === 'string') {\n this.value = value.trim();\n } else if (value) {\n this.value = value;\n } else {\n this.value = '';\n }\n this.isVariable = isVariable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.combinator, this);\n}\n\nElement.prototype = Object.assign(new Node(), {\n type: 'Element',\n\n accept(visitor) {\n const value = this.value;\n this.combinator = visitor.visit(this.combinator);\n if (typeof value === 'object') {\n this.value = visitor.visit(value);\n }\n },\n\n eval(context) {\n return new Element(this.combinator,\n this.value.eval ? this.value.eval(context) : this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n clone() {\n return new Element(this.combinator,\n this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context), this.fileInfo(), this.getIndex());\n },\n\n toCSS(context) {\n context = context || {};\n let value = this.value;\n const firstSelector = context.firstSelector;\n if (value instanceof Paren) {\n // selector in parens should not be affected by outer selector\n // flags (breaks only interpolated selectors - see #1973)\n context.firstSelector = true;\n }\n value = value.toCSS ? value.toCSS(context) : value;\n context.firstSelector = firstSelector;\n if (value === '' && this.combinator.value.charAt(0) === '&') {\n return '';\n } else {\n return this.combinator.toCSS(context) + value;\n }\n }\n});\n\nexport default Element;\n",
+ "\nexport const Math = {\n ALWAYS: 0,\n PARENS_DIVISION: 1,\n PARENS: 2\n // removed - STRICT_LEGACY: 3\n};\n\nexport const RewriteUrls = {\n OFF: 0,\n LOCAL: 1,\n ALL: 2\n};",
+ "/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\r\nfunction getType(payload) {\r\n return Object.prototype.toString.call(payload).slice(8, -1);\r\n}\r\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\r\nfunction isUndefined(payload) {\r\n return getType(payload) === 'Undefined';\r\n}\r\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\r\nfunction isNull(payload) {\r\n return getType(payload) === 'Null';\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isPlainObject(payload) {\r\n if (getType(payload) !== 'Object')\r\n return false;\r\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isObject(payload) {\r\n return isPlainObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\r\nfunction isEmptyObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isFullObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isAnyObject(payload) {\r\n return getType(payload) === 'Object';\r\n}\r\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\r\nfunction isObjectLike(payload) {\r\n return isAnyObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a function (regular or async)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\r\nfunction isFunction(payload) {\r\n return typeof payload === 'function';\r\n}\r\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isArray(payload) {\r\n return getType(payload) === 'Array';\r\n}\r\n/**\r\n * Returns whether the payload is a an array with at least 1 item\r\n *\r\n * @param {*} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isFullArray(payload) {\r\n return isArray(payload) && payload.length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\r\nfunction isEmptyArray(payload) {\r\n return isArray(payload) && payload.length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isString(payload) {\r\n return getType(payload) === 'String';\r\n}\r\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isFullString(payload) {\r\n return isString(payload) && payload !== '';\r\n}\r\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isEmptyString(payload) {\r\n return payload === '';\r\n}\r\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\r\nfunction isNumber(payload) {\r\n return getType(payload) === 'Number' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\r\nfunction isBoolean(payload) {\r\n return getType(payload) === 'Boolean';\r\n}\r\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\r\nfunction isRegExp(payload) {\r\n return getType(payload) === 'RegExp';\r\n}\r\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map}\r\n */\r\nfunction isMap(payload) {\r\n return getType(payload) === 'Map';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap}\r\n */\r\nfunction isWeakMap(payload) {\r\n return getType(payload) === 'WeakMap';\r\n}\r\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set}\r\n */\r\nfunction isSet(payload) {\r\n return getType(payload) === 'Set';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet}\r\n */\r\nfunction isWeakSet(payload) {\r\n return getType(payload) === 'WeakSet';\r\n}\r\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\r\nfunction isSymbol(payload) {\r\n return getType(payload) === 'Symbol';\r\n}\r\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\r\nfunction isDate(payload) {\r\n return getType(payload) === 'Date' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\r\nfunction isBlob(payload) {\r\n return getType(payload) === 'Blob';\r\n}\r\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\r\nfunction isFile(payload) {\r\n return getType(payload) === 'File';\r\n}\r\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise}\r\n */\r\nfunction isPromise(payload) {\r\n return getType(payload) === 'Promise';\r\n}\r\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\r\nfunction isError(payload) {\r\n return getType(payload) === 'Error';\r\n}\r\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\r\nfunction isNaNValue(payload) {\r\n return getType(payload) === 'Number' && isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\r\nfunction isPrimitive(payload) {\r\n return (isBoolean(payload) ||\r\n isNull(payload) ||\r\n isUndefined(payload) ||\r\n isNumber(payload) ||\r\n isString(payload) ||\r\n isSymbol(payload));\r\n}\r\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\r\nvar isNullOrUndefined = isOneOf(isNull, isUndefined);\r\nfunction isOneOf(a, b, c, d, e) {\r\n return function (value) {\r\n return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));\r\n };\r\n}\r\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\r\nfunction isType(payload, type) {\r\n if (!(type instanceof Function)) {\r\n throw new TypeError('Type must be a function');\r\n }\r\n if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\r\n throw new TypeError('Type is not a class');\r\n }\r\n // Classes usually have names (as functions usually have names)\r\n var name = type.name;\r\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\r\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n",
+ "import { isArray, isPlainObject } from 'is-what';\n\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\r\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\r\n ? 'enumerable'\r\n : 'nonenumerable';\r\n if (propType === 'enumerable')\r\n carry[key] = newVal;\r\n if (includeNonenumerable && propType === 'nonenumerable') {\r\n Object.defineProperty(carry, key, {\r\n value: newVal,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true,\r\n });\r\n }\r\n}\r\n/**\r\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the original object. Arrays are also cloned, however objects inside arrays are still linked.\r\n *\r\n * @export\r\n * @template T\r\n * @param {T} target Target can be anything\r\n * @param {Options} [options = {}] Options can be `props` or `nonenumerable`\r\n * @returns {T} the target with replaced values\r\n * @export\r\n */\r\nfunction copy(target, options = {}) {\r\n if (isArray(target)) {\r\n return target.map((item) => copy(item, options));\r\n }\r\n if (!isPlainObject(target)) {\r\n return target;\r\n }\r\n const props = Object.getOwnPropertyNames(target);\r\n const symbols = Object.getOwnPropertySymbols(target);\r\n return [...props, ...symbols].reduce((carry, key) => {\r\n if (isArray(options.props) && !options.props.includes(key)) {\r\n return carry;\r\n }\r\n const val = target[key];\r\n const newVal = copy(val, options);\r\n assignProp(carry, key, newVal, target, options.nonenumerable);\r\n return carry;\r\n }, {});\r\n}\n\nexport { copy };\n",
+ "/* jshint proto: true */\nimport * as Constants from './constants';\nimport { copy } from 'copy-anything';\n\nexport function getLocation(index, inputStream) {\n let n = index + 1;\n let line = null;\n let column = -1;\n\n while (--n >= 0 && inputStream.charAt(n) !== '\\n') {\n column++;\n }\n\n if (typeof index === 'number') {\n line = (inputStream.slice(0, index).match(/\\n/g) || '').length;\n }\n\n return {\n line,\n column\n };\n}\n\nexport function copyArray(arr) {\n let i;\n const length = arr.length;\n const copy = new Array(length);\n\n for (i = 0; i < length; i++) {\n copy[i] = arr[i];\n }\n return copy;\n}\n\nexport function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n}\n\nexport function defaults(obj1, obj2) {\n let newObj = obj2 || {};\n if (!obj2._defaults) {\n newObj = {};\n const defaults = copy(obj1);\n newObj._defaults = defaults;\n const cloned = obj2 ? copy(obj2) : {};\n Object.assign(newObj, defaults, cloned);\n }\n return newObj;\n}\n\nexport function copyOptions(obj1, obj2) {\n if (obj2 && obj2._defaults) {\n return obj2;\n }\n const opts = defaults(obj1, obj2);\n if (opts.strictMath) {\n opts.math = Constants.Math.PARENS;\n }\n // Back compat with changed relativeUrls option\n if (opts.relativeUrls) {\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n }\n if (typeof opts.math === 'string') {\n switch (opts.math.toLowerCase()) {\n case 'always':\n opts.math = Constants.Math.ALWAYS;\n break;\n case 'parens-division':\n opts.math = Constants.Math.PARENS_DIVISION;\n break;\n case 'strict':\n case 'parens':\n opts.math = Constants.Math.PARENS;\n break;\n default:\n opts.math = Constants.Math.PARENS;\n }\n }\n if (typeof opts.rewriteUrls === 'string') {\n switch (opts.rewriteUrls.toLowerCase()) {\n case 'off':\n opts.rewriteUrls = Constants.RewriteUrls.OFF;\n break;\n case 'local':\n opts.rewriteUrls = Constants.RewriteUrls.LOCAL;\n break;\n case 'all':\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n break;\n }\n }\n return opts;\n}\n\nexport function merge(obj1, obj2) {\n for (const prop in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, prop)) {\n obj1[prop] = obj2[prop];\n }\n }\n return obj1;\n}\n\nexport function flattenArray(arr, result = []) {\n for (let i = 0, length = arr.length; i < length; i++) {\n const value = arr[i];\n if (Array.isArray(value)) {\n flattenArray(value, result);\n } else {\n if (value !== undefined) {\n result.push(value);\n }\n }\n }\n return result;\n}\n\nexport function isNullOrUndefined(val) {\n return val === null || val === undefined\n}",
+ "import * as utils from './utils';\n\nconst anonymousFunc = /(|Function):(\\d+):(\\d+)/;\n\n/**\n * This is a centralized class of any error that could be thrown internally (mostly by the parser).\n * Besides standard .message it keeps some additional data like a path to the file where the error\n * occurred along with line and column numbers.\n *\n * @class\n * @extends Error\n * @type {module.LessError}\n *\n * @prop {string} type\n * @prop {string} filename\n * @prop {number} index\n * @prop {number} line\n * @prop {number} column\n * @prop {number} callLine\n * @prop {number} callExtract\n * @prop {string[]} extract\n *\n * @param {Object} e - An error object to wrap around or just a descriptive object\n * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager?\n * @param {string} [currentFilename]\n */\nconst LessError = function(e, fileContentMap, currentFilename) {\n Error.call(this);\n\n const filename = e.filename || currentFilename;\n\n this.message = e.message;\n this.stack = e.stack;\n \n // Set type early so it's always available, even if fileContentMap is missing\n this.type = e.type || 'Syntax';\n\n if (fileContentMap && filename) {\n const input = fileContentMap.contents[filename];\n const loc = utils.getLocation(e.index, input);\n var line = loc.line;\n const col = loc.column;\n const callLine = e.call && utils.getLocation(e.call, input).line;\n const lines = input ? input.split('\\n') : '';\n\n this.filename = filename;\n this.index = e.index;\n this.line = typeof line === 'number' ? line + 1 : null;\n this.column = col;\n\n if (!this.line && this.stack) {\n const found = this.stack.match(anonymousFunc);\n\n /**\n * We have to figure out how this environment stringifies anonymous functions\n * so we can correctly map plugin errors.\n * \n * Note, in Node 8, the output of anonymous funcs varied based on parameters\n * being present or not, so we inject dummy params.\n */\n const func = new Function('a', 'throw new Error()');\n let lineAdjust = 0;\n try {\n func();\n } catch (e) {\n const match = e.stack.match(anonymousFunc);\n lineAdjust = 1 - parseInt(match[2]);\n }\n\n if (found) {\n if (found[2]) {\n this.line = parseInt(found[2]) + lineAdjust;\n }\n if (found[3]) {\n this.column = parseInt(found[3]);\n }\n }\n }\n\n this.callLine = callLine + 1;\n this.callExtract = lines[callLine];\n\n this.extract = [\n lines[this.line - 2],\n lines[this.line - 1],\n lines[this.line]\n ];\n }\n\n};\n\nif (typeof Object.create === 'undefined') {\n const F = function () {};\n F.prototype = Error.prototype;\n LessError.prototype = new F();\n} else {\n LessError.prototype = Object.create(Error.prototype);\n}\n\nLessError.prototype.constructor = LessError;\n\n/**\n * An overridden version of the default Object.prototype.toString\n * which uses additional information to create a helpful message.\n *\n * @param {Object} options\n * @returns {string}\n */\nLessError.prototype.toString = function(options) {\n options = options || {};\n const isWarning = (this.type ?? '').toLowerCase().includes('warning');\n const type = isWarning ? this.type : `${this.type}Error`;\n const color = isWarning ? 'yellow' : 'red';\n\n let message = '';\n const extract = this.extract || [];\n let error = [];\n let stylize = function (str) { return str; };\n if (options.stylize) {\n const type = typeof options.stylize;\n if (type !== 'function') {\n throw Error(`options.stylize should be a function, got a ${type}!`);\n }\n stylize = options.stylize;\n }\n\n if (this.line !== null) {\n if (!isWarning && typeof extract[0] === 'string') {\n error.push(stylize(`${this.line - 1} ${extract[0]}`, 'grey'));\n }\n\n if (typeof extract[1] === 'string') {\n let errorTxt = `${this.line} `;\n if (extract[1]) {\n errorTxt += extract[1].slice(0, this.column) +\n stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') +\n extract[1].slice(this.column + 1), 'red'), 'inverse');\n }\n error.push(errorTxt);\n }\n\n if (!isWarning && typeof extract[2] === 'string') {\n error.push(stylize(`${this.line + 1} ${extract[2]}`, 'grey'));\n }\n error = `${error.join('\\n') + stylize('', 'reset')}\\n`;\n }\n\n message += stylize(`${type}: ${this.message}`, color);\n if (this.filename) {\n message += stylize(' in ', color) + this.filename;\n }\n if (this.line) {\n message += stylize(` on line ${this.line}, column ${this.column + 1}:`, 'grey');\n }\n\n message += `\\n${error}`;\n\n if (this.callLine) {\n message += `${stylize('from ', color) + (this.filename || '')}/n`;\n message += `${stylize(this.callLine, 'grey')} ${this.callExtract}/n`;\n }\n\n return message;\n};\n\nexport default LessError;",
+ "import tree from '../tree';\n\nconst _visitArgs = { visitDeeper: true };\nlet _hasIndexed = false;\n\nfunction _noop(node) {\n return node;\n}\n\nfunction indexNodeTypes(parent, ticker) {\n // add .typeIndex to tree node types for lookup table\n let key, child;\n for (key in parent) { \n /* eslint guard-for-in: 0 */\n child = parent[key];\n switch (typeof child) {\n case 'function':\n // ignore bound functions directly on tree which do not have a prototype\n // or aren't nodes\n if (child.prototype && child.prototype.type) {\n child.prototype.typeIndex = ticker++;\n }\n break;\n case 'object':\n ticker = indexNodeTypes(child, ticker);\n break;\n \n }\n }\n return ticker;\n}\n\nclass Visitor {\n constructor(implementation) {\n this._implementation = implementation;\n this._visitInCache = {};\n this._visitOutCache = {};\n\n if (!_hasIndexed) {\n indexNodeTypes(tree, 1);\n _hasIndexed = true;\n }\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n\n const nodeTypeIndex = node.typeIndex;\n if (!nodeTypeIndex) {\n // MixinCall args aren't a node type?\n if (node.value && node.value.typeIndex) {\n this.visit(node.value);\n }\n return node;\n }\n\n const impl = this._implementation;\n let func = this._visitInCache[nodeTypeIndex];\n let funcOut = this._visitOutCache[nodeTypeIndex];\n const visitArgs = _visitArgs;\n let fnName;\n\n visitArgs.visitDeeper = true;\n\n if (!func) {\n fnName = `visit${node.type}`;\n func = impl[fnName] || _noop;\n funcOut = impl[`${fnName}Out`] || _noop;\n this._visitInCache[nodeTypeIndex] = func;\n this._visitOutCache[nodeTypeIndex] = funcOut;\n }\n\n if (func !== _noop) {\n const newNode = func.call(impl, node, visitArgs);\n if (node && impl.isReplacing) {\n node = newNode;\n }\n }\n\n if (visitArgs.visitDeeper && node) {\n if (node.length) {\n for (let i = 0, cnt = node.length; i < cnt; i++) {\n if (node[i].accept) {\n node[i].accept(this);\n }\n }\n } else if (node.accept) {\n node.accept(this);\n }\n }\n\n if (funcOut != _noop) {\n funcOut.call(impl, node);\n }\n\n return node;\n }\n\n visitArray(nodes, nonReplacing) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n\n // Non-replacing\n if (nonReplacing || !this._implementation.isReplacing) {\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n // Replacing\n const out = [];\n for (i = 0; i < cnt; i++) {\n const evald = this.visit(nodes[i]);\n if (evald === undefined) { continue; }\n if (!evald.splice) {\n out.push(evald);\n } else if (evald.length) {\n this.flatten(evald, out);\n }\n }\n return out;\n }\n\n flatten(arr, out) {\n if (!out) {\n out = [];\n }\n\n let cnt, i, item, nestedCnt, j, nestedItem;\n\n for (i = 0, cnt = arr.length; i < cnt; i++) {\n item = arr[i];\n if (item === undefined) {\n continue;\n }\n if (!item.splice) {\n out.push(item);\n continue;\n }\n\n for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) {\n nestedItem = item[j];\n if (nestedItem === undefined) {\n continue;\n }\n if (!nestedItem.splice) {\n out.push(nestedItem);\n } else if (nestedItem.length) {\n this.flatten(nestedItem, out);\n }\n }\n }\n\n return out;\n }\n}\n\nexport default Visitor;\n",
+ "const contexts = {};\nexport default contexts;\nimport * as Constants from './constants';\n\nconst copyFromOriginal = function copyFromOriginal(original, destination, propertiesToCopy) {\n if (!original) { return; }\n\n for (let i = 0; i < propertiesToCopy.length; i++) {\n if (Object.prototype.hasOwnProperty.call(original, propertiesToCopy[i])) {\n destination[propertiesToCopy[i]] = original[propertiesToCopy[i]];\n }\n }\n};\n\n/*\n parse is used whilst parsing\n */\nconst parseCopyProperties = [\n // options\n 'paths', // option - unmodified - paths to search for imports on\n 'rewriteUrls', // option - whether to adjust URL's to be relative\n 'rootpath', // option - rootpath to append to URL's\n 'strictImports', // option -\n 'insecure', // option - whether to allow imports from insecure ssl hosts\n 'dumpLineNumbers', // option - @deprecated The dumpLineNumbers option is deprecated. Use sourcemaps instead. All modes ('comments', 'mediaquery', 'all') will be removed in a future version.\n 'compress', // option - whether to compress\n 'syncImport', // option - whether to import synchronously\n 'mime', // browser only - mime type for sheet import\n 'useFileCache', // browser only - whether to use the per file session cache\n // context\n 'processImports', // option & context - whether to process imports. if false then imports will not be imported.\n // Used by the import manager to stop multiple import visitors being created.\n 'pluginManager', // Used as the plugin manager for the session\n 'quiet', // option - whether to log warnings\n];\n\ncontexts.Parse = function(options) {\n copyFromOriginal(options, this, parseCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n};\n\nconst evalCopyProperties = [\n 'paths', // additional include paths\n 'compress', // whether to compress\n 'math', // whether math has to be within parenthesis\n 'strictUnits', // whether units need to evaluate correctly\n 'sourceMap', // whether to output a source map\n 'importMultiple', // whether we are currently importing multiple copies\n 'urlArgs', // whether to add args into url tokens\n 'javascriptEnabled', // option - whether Inline JavaScript is enabled. if undefined, defaults to false\n 'pluginManager', // Used as the plugin manager for the session\n 'importantScope', // used to bubble up !important statements\n 'rewriteUrls' // option - whether to adjust URL's to be relative\n];\n\ncontexts.Eval = function(options, frames) {\n copyFromOriginal(options, this, evalCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n\n this.frames = frames || [];\n this.importantScope = this.importantScope || [];\n};\n\ncontexts.Eval.prototype.enterCalc = function () {\n if (!this.calcStack) {\n this.calcStack = [];\n }\n this.calcStack.push(true);\n this.inCalc = true;\n};\n\ncontexts.Eval.prototype.exitCalc = function () {\n this.calcStack.pop();\n if (!this.calcStack.length) {\n this.inCalc = false;\n }\n};\n\ncontexts.Eval.prototype.inParenthesis = function () {\n if (!this.parensStack) {\n this.parensStack = [];\n }\n this.parensStack.push(true);\n};\n\ncontexts.Eval.prototype.outOfParenthesis = function () {\n this.parensStack.pop();\n};\n\ncontexts.Eval.prototype.inCalc = false;\ncontexts.Eval.prototype.mathOn = true;\ncontexts.Eval.prototype.isMathOn = function (op) {\n if (!this.mathOn) {\n return false;\n }\n if (op === '/' && this.math !== Constants.Math.ALWAYS && (!this.parensStack || !this.parensStack.length)) {\n return false;\n }\n if (this.math > Constants.Math.PARENS_DIVISION) {\n return this.parensStack && this.parensStack.length;\n }\n return true;\n};\n\ncontexts.Eval.prototype.pathRequiresRewrite = function (path) {\n const isRelative = this.rewriteUrls === Constants.RewriteUrls.LOCAL ? isPathLocalRelative : isPathRelative;\n\n return isRelative(path);\n};\n\ncontexts.Eval.prototype.rewritePath = function (path, rootpath) {\n let newPath;\n\n rootpath = rootpath || '';\n newPath = this.normalizePath(rootpath + path);\n\n // If a path was explicit relative and the rootpath was not an absolute path\n // we must ensure that the new path is also explicit relative.\n if (isPathLocalRelative(path) &&\n isPathRelative(rootpath) &&\n isPathLocalRelative(newPath) === false) {\n newPath = `./${newPath}`;\n }\n\n return newPath;\n};\n\ncontexts.Eval.prototype.normalizePath = function (path) {\n const segments = path.split('/').reverse();\n let segment;\n\n path = [];\n while (segments.length !== 0) {\n segment = segments.pop();\n switch ( segment ) {\n case '.':\n break;\n case '..':\n if ((path.length === 0) || (path[path.length - 1] === '..')) {\n path.push( segment );\n } else {\n path.pop();\n }\n break;\n default:\n path.push(segment);\n break;\n }\n }\n\n return path.join('/');\n};\n\nfunction isPathRelative(path) {\n return !/^(?:[a-z-]+:|\\/|#)/i.test(path);\n}\n\nfunction isPathLocalRelative(path) {\n return path.charAt(0) === '.';\n}\n\n// todo - do the same for the toCSS ?\n",
+ "class ImportSequencer {\n constructor(onSequencerEmpty) {\n this.imports = [];\n this.variableImports = [];\n this._onSequencerEmpty = onSequencerEmpty;\n this._currentDepth = 0;\n }\n\n addImport(callback) {\n const importSequencer = this,\n importItem = {\n callback,\n args: null,\n isReady: false\n };\n this.imports.push(importItem);\n return function() {\n importItem.args = Array.prototype.slice.call(arguments, 0);\n importItem.isReady = true;\n importSequencer.tryRun();\n };\n }\n\n addVariableImport(callback) {\n this.variableImports.push(callback);\n }\n\n tryRun() {\n this._currentDepth++;\n try {\n while (true) {\n while (this.imports.length > 0) {\n const importItem = this.imports[0];\n if (!importItem.isReady) {\n return;\n }\n this.imports = this.imports.slice(1);\n importItem.callback.apply(null, importItem.args);\n }\n if (this.variableImports.length === 0) {\n break;\n }\n const variableImport = this.variableImports[0];\n this.variableImports = this.variableImports.slice(1);\n variableImport();\n }\n } finally {\n this._currentDepth--;\n }\n if (this._currentDepth === 0 && this._onSequencerEmpty) {\n this._onSequencerEmpty();\n }\n }\n}\n\nexport default ImportSequencer;\n",
+ "/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport contexts from '../contexts';\nimport Visitor from './visitor';\nimport ImportSequencer from './import-sequencer';\nimport * as utils from '../utils';\n\nconst ImportVisitor = function(importer, finish) {\n\n this._visitor = new Visitor(this);\n this._importer = importer;\n this._finish = finish;\n this.context = new contexts.Eval();\n this.importCount = 0;\n this.onceFileDetectionMap = {};\n this.recursionDetector = {};\n this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this));\n};\n\nImportVisitor.prototype = {\n isReplacing: false,\n run: function (root) {\n try {\n // process the contents\n this._visitor.visit(root);\n }\n catch (e) {\n this.error = e;\n }\n\n this.isFinished = true;\n this._sequencer.tryRun();\n },\n _onSequencerEmpty: function() {\n if (!this.isFinished) {\n return;\n }\n this._finish(this.error);\n },\n visitImport: function (importNode, visitArgs) {\n const inlineCSS = importNode.options.inline;\n\n if (!importNode.css || inlineCSS) {\n\n const context = new contexts.Eval(this.context, utils.copyArray(this.context.frames));\n const importParent = context.frames[0];\n\n this.importCount++;\n if (importNode.isVariableImport()) {\n this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent));\n } else {\n this.processImportNode(importNode, context, importParent);\n }\n }\n visitArgs.visitDeeper = false;\n },\n processImportNode: function(importNode, context, importParent) {\n let evaldImportNode;\n const inlineCSS = importNode.options.inline;\n\n try {\n evaldImportNode = importNode.evalForImport(context);\n } catch (e) {\n if (!e.filename) { e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename; }\n // attempt to eval properly and treat as css\n importNode.css = true;\n // if that fails, this error will be thrown\n importNode.error = e;\n }\n\n if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {\n\n if (evaldImportNode.options.multiple) {\n context.importMultiple = true;\n }\n\n // try appending if we haven't determined if it is css or not\n const tryAppendLessExtension = evaldImportNode.css === undefined;\n\n for (let i = 0; i < importParent.rules.length; i++) {\n if (importParent.rules[i] === importNode) {\n importParent.rules[i] = evaldImportNode;\n break;\n }\n }\n\n const onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);\n\n this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(),\n evaldImportNode.options, sequencedOnImported);\n } else {\n this.importCount--;\n if (this.isFinished) {\n this._sequencer.tryRun();\n }\n }\n },\n onImported: function (importNode, context, e, root, importedAtRoot, fullPath) {\n if (e) {\n if (!e.filename) {\n e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename;\n }\n this.error = e;\n }\n\n const importVisitor = this,\n inlineCSS = importNode.options.inline,\n isPlugin = importNode.options.isPlugin,\n isOptional = importNode.options.optional,\n duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;\n\n if (!context.importMultiple) {\n if (duplicateImport) {\n importNode.skip = true;\n } else {\n importNode.skip = function() {\n if (fullPath in importVisitor.onceFileDetectionMap) {\n return true;\n }\n importVisitor.onceFileDetectionMap[fullPath] = true;\n return false;\n };\n }\n }\n\n if (!fullPath && isOptional) {\n importNode.skip = true;\n }\n\n if (root) {\n importNode.root = root;\n importNode.importedFilename = fullPath;\n\n if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) {\n importVisitor.recursionDetector[fullPath] = true;\n\n const oldContext = this.context;\n this.context = context;\n try {\n this._visitor.visit(root);\n } catch (e) {\n this.error = e;\n }\n this.context = oldContext;\n }\n }\n\n importVisitor.importCount--;\n\n if (importVisitor.isFinished) {\n importVisitor._sequencer.tryRun();\n }\n },\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.unshift(declNode);\n } else {\n visitArgs.visitDeeper = false;\n }\n },\n visitDeclarationOut: function(declNode) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.shift();\n }\n },\n visitAtRule: function (atRuleNode, visitArgs) {\n if (atRuleNode.value) {\n this.context.frames.unshift(atRuleNode);\n } else if (atRuleNode.declarations && atRuleNode.declarations.length) {\n if (atRuleNode.isRooted) {\n this.context.frames.unshift(atRuleNode);\n } else {\n this.context.frames.unshift(atRuleNode.declarations[0]);\n }\n } else if (atRuleNode.rules && atRuleNode.rules.length) {\n this.context.frames.unshift(atRuleNode);\n }\n },\n visitAtRuleOut: function (atRuleNode) {\n this.context.frames.shift();\n },\n visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {\n this.context.frames.unshift(mixinDefinitionNode);\n },\n visitMixinDefinitionOut: function (mixinDefinitionNode) {\n this.context.frames.shift();\n },\n visitRuleset: function (rulesetNode, visitArgs) {\n this.context.frames.unshift(rulesetNode);\n },\n visitRulesetOut: function (rulesetNode) {\n this.context.frames.shift();\n },\n visitMedia: function (mediaNode, visitArgs) {\n this.context.frames.unshift(mediaNode.rules[0]);\n },\n visitMediaOut: function (mediaNode) {\n this.context.frames.shift();\n }\n};\nexport default ImportVisitor;\n",
+ "class SetTreeVisibilityVisitor {\n constructor(visible) {\n this.visible = visible;\n }\n\n run(root) {\n this.visit(root);\n }\n\n visitArray(nodes) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n if (node.constructor === Array) {\n return this.visitArray(node);\n }\n\n if (!node.blocksVisibility || node.blocksVisibility()) {\n return node;\n }\n if (this.visible) {\n node.ensureVisibility();\n } else {\n node.ensureInvisibility();\n }\n\n node.accept(this);\n return node;\n }\n}\n\nexport default SetTreeVisibilityVisitor;",
+ "/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\nimport logger from '../logger';\nimport * as utils from '../utils';\n\n/* jshint loopfunc:true */\n\nclass ExtendFinderVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n this.contexts = [];\n this.allExtendsStack = [[]];\n }\n\n run(root) {\n root = this._visitor.visit(root);\n root.allExtends = this.allExtendsStack[0];\n return root;\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n\n let i;\n let j;\n let extend;\n const allSelectorsExtendList = [];\n let extendList;\n\n // get &:extend(.a); rules which apply to all selectors in this ruleset\n const rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;\n for (i = 0; i < ruleCnt; i++) {\n if (rulesetNode.rules[i] instanceof tree.Extend) {\n allSelectorsExtendList.push(rules[i]);\n rulesetNode.extendOnEveryPath = true;\n }\n }\n\n // now find every selector and apply the extends that apply to all extends\n // and the ones which apply to an individual extend\n const paths = rulesetNode.paths;\n for (i = 0; i < paths.length; i++) {\n const selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;\n\n extendList = selExtendList ? utils.copyArray(selExtendList).concat(allSelectorsExtendList)\n : allSelectorsExtendList;\n\n if (extendList) {\n extendList = extendList.map(function(allSelectorsExtend) {\n return allSelectorsExtend.clone();\n });\n }\n\n for (j = 0; j < extendList.length; j++) {\n this.foundExtends = true;\n extend = extendList[j];\n extend.findSelfSelectors(selectorPath);\n extend.ruleset = rulesetNode;\n if (j === 0) { extend.firstExtendOnThisSelectorPath = true; }\n this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);\n }\n }\n\n this.contexts.push(rulesetNode.selectors);\n }\n\n visitRulesetOut(rulesetNode) {\n if (!rulesetNode.root) {\n this.contexts.length = this.contexts.length - 1;\n }\n }\n\n visitMedia(mediaNode, visitArgs) {\n mediaNode.allExtends = [];\n this.allExtendsStack.push(mediaNode.allExtends);\n }\n\n visitMediaOut(mediaNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n atRuleNode.allExtends = [];\n this.allExtendsStack.push(atRuleNode.allExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n}\n\nclass ProcessExtendsVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n const extendFinder = new ExtendFinderVisitor();\n this.extendIndices = {};\n extendFinder.run(root);\n if (!extendFinder.foundExtends) { return root; }\n root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));\n this.allExtendsStack = [root.allExtends];\n const newRoot = this._visitor.visit(root);\n this.checkExtendsForNonMatched(root.allExtends);\n return newRoot;\n }\n\n checkExtendsForNonMatched(extendList) {\n const indices = this.extendIndices;\n extendList.filter(function(extend) {\n return !extend.hasFoundMatches && extend.parent_ids.length == 1;\n }).forEach(function(extend) {\n let selector = '_unknown_';\n try {\n selector = extend.selector.toCSS({});\n }\n catch (_) {}\n\n if (!indices[`${extend.index} ${selector}`]) {\n indices[`${extend.index} ${selector}`] = true;\n /**\n * @todo Shouldn't this be an error? To alert the developer\n * that they may have made an error in the selector they are\n * targeting?\n */\n logger.warn(`WARNING: extend '${selector}' has no matches`);\n }\n });\n }\n\n doExtendChaining(extendsList, extendsListTarget, iterationCount) {\n //\n // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering\n // and pasting the selector we would do normally, but we are also adding an extend with the same target selector\n // this means this new extend can then go and alter other extends\n //\n // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors\n // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already\n // processed if we look at each selector at a time, as is done in visitRuleset\n\n let extendIndex;\n\n let targetExtendIndex;\n let matches;\n const extendsToAdd = [];\n let newSelector;\n const extendVisitor = this;\n let selectorPath;\n let extend;\n let targetExtend;\n let newExtend;\n\n iterationCount = iterationCount || 0;\n\n // loop through comparing every extend with every target extend.\n // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place\n // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one\n // and the second is the target.\n // the separation into two lists allows us to process a subset of chains with a bigger set, as is the\n // case when processing media queries\n for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {\n for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {\n\n extend = extendsList[extendIndex];\n targetExtend = extendsListTarget[targetExtendIndex];\n\n // look for circular references\n if ( extend.parent_ids.indexOf( targetExtend.object_id ) >= 0 ) { continue; }\n\n // find a match in the target extends self selector (the bit before :extend)\n selectorPath = [targetExtend.selfSelectors[0]];\n matches = extendVisitor.findMatch(extend, selectorPath);\n\n if (matches.length) {\n extend.hasFoundMatches = true;\n\n // we found a match, so for each self selector..\n extend.selfSelectors.forEach(function(selfSelector) {\n const info = targetExtend.visibilityInfo();\n\n // process the extend as usual\n newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible());\n\n // but now we create a new extend from it\n newExtend = new(tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);\n newExtend.selfSelectors = newSelector;\n\n // add the extend onto the list of extends for that selector\n newSelector[newSelector.length - 1].extendList = [newExtend];\n\n // record that we need to add it.\n extendsToAdd.push(newExtend);\n newExtend.ruleset = targetExtend.ruleset;\n\n // remember its parents for circular references\n newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);\n\n // only process the selector once.. if we have :extend(.a,.b) then multiple\n // extends will look at the same selector path, so when extending\n // we know that any others will be duplicates in terms of what is added to the css\n if (targetExtend.firstExtendOnThisSelectorPath) {\n newExtend.firstExtendOnThisSelectorPath = true;\n targetExtend.ruleset.paths.push(newSelector);\n }\n });\n }\n }\n }\n\n if (extendsToAdd.length) {\n // try to detect circular references to stop a stack overflow.\n // may no longer be needed.\n this.extendChainCount++;\n if (iterationCount > 100) {\n let selectorOne = '{unable to calculate}';\n let selectorTwo = '{unable to calculate}';\n try {\n selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();\n selectorTwo = extendsToAdd[0].selector.toCSS();\n }\n catch (e) {}\n throw { message: `extend circular reference detected. One of the circular extends is currently:${selectorOne}:extend(${selectorTwo})`};\n }\n\n // now process the new extends on the existing rules so that we can handle a extending b extending c extending\n // d extending e...\n return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));\n } else {\n return extendsToAdd;\n }\n }\n\n visitDeclaration(ruleNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitSelector(selectorNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n let matches;\n let pathIndex;\n let extendIndex;\n const allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];\n const selectorsToAdd = [];\n const extendVisitor = this;\n let selectorPath;\n\n // look at each selector path in the ruleset, find any extend matches and then copy, find and replace\n\n for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {\n for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {\n selectorPath = rulesetNode.paths[pathIndex];\n\n // extending extends happens initially, before the main pass\n if (rulesetNode.extendOnEveryPath) { continue; }\n const extendList = selectorPath[selectorPath.length - 1].extendList;\n if (extendList && extendList.length) { continue; }\n\n matches = this.findMatch(allExtends[extendIndex], selectorPath);\n\n if (matches.length) {\n allExtends[extendIndex].hasFoundMatches = true;\n\n allExtends[extendIndex].selfSelectors.forEach(function(selfSelector) {\n let extendedSelectors;\n extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible());\n selectorsToAdd.push(extendedSelectors);\n });\n }\n }\n }\n rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);\n }\n\n findMatch(extend, haystackSelectorPath) {\n //\n // look through the haystack selector path to try and find the needle - extend.selector\n // returns an array of selector matches that can then be replaced\n //\n let haystackSelectorIndex;\n\n let hackstackSelector;\n let hackstackElementIndex;\n let haystackElement;\n let targetCombinator;\n let i;\n const extendVisitor = this;\n const needleElements = extend.selector.elements;\n const potentialMatches = [];\n let potentialMatch;\n const matches = [];\n\n // loop through the haystack elements\n for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {\n hackstackSelector = haystackSelectorPath[haystackSelectorIndex];\n\n for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {\n\n haystackElement = hackstackSelector.elements[hackstackElementIndex];\n\n // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.\n if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {\n potentialMatches.push({pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,\n initialCombinator: haystackElement.combinator});\n }\n\n for (i = 0; i < potentialMatches.length; i++) {\n potentialMatch = potentialMatches[i];\n\n // selectors add \" \" onto the first element. When we use & it joins the selectors together, but if we don't\n // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to\n // work out what the resulting combinator will be\n targetCombinator = haystackElement.combinator.value;\n if (targetCombinator === '' && hackstackElementIndex === 0) {\n targetCombinator = ' ';\n }\n\n // if we don't match, null our match to indicate failure\n if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||\n (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {\n potentialMatch = null;\n } else {\n potentialMatch.matched++;\n }\n\n // if we are still valid and have finished, test whether we have elements after and whether these are allowed\n if (potentialMatch) {\n potentialMatch.finished = potentialMatch.matched === needleElements.length;\n if (potentialMatch.finished &&\n (!extend.allowAfter &&\n (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) {\n potentialMatch = null;\n }\n }\n // if null we remove, if not, we are still valid, so either push as a valid match or continue\n if (potentialMatch) {\n if (potentialMatch.finished) {\n potentialMatch.length = needleElements.length;\n potentialMatch.endPathIndex = haystackSelectorIndex;\n potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match\n potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again\n matches.push(potentialMatch);\n }\n } else {\n potentialMatches.splice(i, 1);\n i--;\n }\n }\n }\n }\n return matches;\n }\n\n isElementValuesEqual(elementValue1, elementValue2) {\n if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') {\n return elementValue1 === elementValue2;\n }\n if (elementValue1 instanceof tree.Attribute) {\n if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {\n return false;\n }\n if (!elementValue1.value || !elementValue2.value) {\n if (elementValue1.value || elementValue2.value) {\n return false;\n }\n return true;\n }\n elementValue1 = elementValue1.value.value || elementValue1.value;\n elementValue2 = elementValue2.value.value || elementValue2.value;\n return elementValue1 === elementValue2;\n }\n elementValue1 = elementValue1.value;\n elementValue2 = elementValue2.value;\n if (elementValue1 instanceof tree.Selector) {\n if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {\n return false;\n }\n for (let i = 0; i < elementValue1.elements.length; i++) {\n if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) {\n if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) {\n return false;\n }\n }\n if (!this.isElementValuesEqual(elementValue1.elements[i].value, elementValue2.elements[i].value)) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n extendSelector(matches, selectorPath, replacementSelector, isVisible) {\n\n // for a set of matches, replace each match with the replacement selector\n\n let currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;\n\n for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {\n match = matches[matchIndex];\n selector = selectorPath[match.pathIndex];\n firstElement = new tree.Element(\n match.initialCombinator,\n replacementSelector.elements[0].value,\n replacementSelector.elements[0].isVariable,\n replacementSelector.elements[0].getIndex(),\n replacementSelector.elements[0].fileInfo()\n );\n\n if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n\n newElements = selector.elements\n .slice(currentSelectorPathElementIndex, match.index)\n .concat([firstElement])\n .concat(replacementSelector.elements.slice(1));\n\n if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {\n path[path.length - 1].elements =\n path[path.length - 1].elements.concat(newElements);\n } else {\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));\n\n path.push(new tree.Selector(\n newElements\n ));\n }\n currentSelectorPathIndex = match.endPathIndex;\n currentSelectorPathElementIndex = match.endPathElementIndex;\n if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) {\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n }\n\n if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathIndex++;\n }\n\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));\n path = path.map(function (currentValue) {\n // we can re-use elements here, because the visibility property matters only for selectors\n const derived = currentValue.createDerived(currentValue.elements);\n if (isVisible) {\n derived.ensureVisibility();\n } else {\n derived.ensureInvisibility();\n }\n return derived;\n });\n return path;\n }\n\n visitMedia(mediaNode, visitArgs) {\n let newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitMediaOut(mediaNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n let newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n}\n\nexport default ProcessExtendsVisitor;\n",
+ "/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport Visitor from './visitor';\n\nclass JoinSelectorVisitor {\n constructor() {\n this.contexts = [[]];\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n return this._visitor.visit(root);\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n const paths = [];\n let selectors;\n\n this.contexts.push(paths);\n\n if (!rulesetNode.root) {\n selectors = rulesetNode.selectors;\n if (selectors) {\n selectors = selectors.filter(function(selector) { return selector.getIsOutput(); });\n rulesetNode.selectors = selectors.length ? selectors : (selectors = null);\n if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); }\n }\n if (!selectors) { rulesetNode.rules = null; }\n rulesetNode.paths = paths;\n }\n }\n\n visitRulesetOut(rulesetNode) {\n this.contexts.length = this.contexts.length - 1;\n }\n\n visitMedia(mediaNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n\n if (atRuleNode.declarations && atRuleNode.declarations.length) {\n atRuleNode.declarations[0].root = (context.length === 0 || context[0].multiMedia);\n }\n else if (atRuleNode.rules && atRuleNode.rules.length) {\n atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);\n }\n }\n}\n\nexport default JoinSelectorVisitor;\n",
+ "/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\n\nclass CSSVisitorUtils {\n constructor(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n }\n\n containsSilentNonBlockedChild(bodyRules) {\n let rule;\n if (!bodyRules) {\n return false;\n }\n for (let r = 0; r < bodyRules.length; r++) {\n rule = bodyRules[r];\n if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) {\n // the atrule contains something that was referenced (likely by extend)\n // therefore it needs to be shown in output too\n return true;\n }\n }\n return false;\n }\n\n keepOnlyVisibleChilds(owner) {\n if (owner && owner.rules) {\n owner.rules = owner.rules.filter(thing => thing.isVisible());\n }\n }\n\n isEmpty(owner) {\n return (owner && owner.rules) \n ? (owner.rules.length === 0) : true;\n }\n\n hasVisibleSelector(rulesetNode) {\n return (rulesetNode && rulesetNode.paths)\n ? (rulesetNode.paths.length > 0) : false;\n }\n\n resolveVisibility(node) {\n if (!node.blocksVisibility()) {\n if (this.isEmpty(node)) {\n return ;\n }\n\n return node;\n }\n\n const compiledRulesBody = node.rules[0];\n this.keepOnlyVisibleChilds(compiledRulesBody);\n\n if (this.isEmpty(compiledRulesBody)) {\n return ;\n }\n\n node.ensureVisibility();\n node.removeVisibilityBlock();\n\n return node;\n }\n\n isVisibleRuleset(rulesetNode) {\n if (rulesetNode.firstRoot) {\n return true;\n }\n\n if (this.isEmpty(rulesetNode)) {\n return false;\n }\n\n if (!rulesetNode.root && !this.hasVisibleSelector(rulesetNode)) {\n return false;\n }\n\n return true;\n }\n}\n\nconst ToCSSVisitor = function(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n this.utils = new CSSVisitorUtils(context);\n};\n\nToCSSVisitor.prototype = {\n isReplacing: true,\n run: function (root) {\n return this._visitor.visit(root);\n },\n\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.blocksVisibility() || declNode.variable) {\n return;\n }\n return declNode;\n },\n\n visitMixinDefinition: function (mixinNode, visitArgs) {\n // mixin definitions do not get eval'd - this means they keep state\n // so we have to clear that state here so it isn't used if toCSS is called twice\n mixinNode.frames = [];\n },\n\n visitExtend: function (extendNode, visitArgs) {\n },\n\n visitComment: function (commentNode, visitArgs) {\n if (commentNode.blocksVisibility() || commentNode.isSilent(this._context)) {\n return;\n }\n return commentNode;\n },\n\n visitMedia: function(mediaNode, visitArgs) {\n const originalRules = mediaNode.rules[0].rules;\n mediaNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n return this.utils.resolveVisibility(mediaNode, originalRules);\n },\n\n visitImport: function (importNode, visitArgs) {\n if (importNode.blocksVisibility()) {\n return ;\n }\n return importNode;\n },\n\n visitAtRule: function(atRuleNode, visitArgs) {\n if (atRuleNode.rules && atRuleNode.rules.length) {\n return this.visitAtRuleWithBody(atRuleNode, visitArgs);\n } else {\n return this.visitAtRuleWithoutBody(atRuleNode, visitArgs);\n }\n },\n\n visitAnonymous: function(anonymousNode, visitArgs) {\n if (!anonymousNode.blocksVisibility()) {\n anonymousNode.accept(this._visitor);\n return anonymousNode;\n }\n },\n\n visitAtRuleWithBody: function(atRuleNode, visitArgs) {\n // if there is only one nested ruleset and that one has no path, then it is\n // just fake ruleset\n function hasFakeRuleset(atRuleNode) {\n const bodyRules = atRuleNode.rules;\n return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0);\n }\n function getBodyRules(atRuleNode) {\n const nodeRules = atRuleNode.rules;\n if (hasFakeRuleset(atRuleNode)) {\n return nodeRules[0].rules;\n }\n\n return nodeRules;\n }\n // it is still true that it is only one ruleset in array\n // this is last such moment\n // process childs\n const originalRules = getBodyRules(atRuleNode);\n atRuleNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n if (!this.utils.isEmpty(atRuleNode)) {\n this._mergeRules(atRuleNode.rules[0].rules);\n }\n\n return this.utils.resolveVisibility(atRuleNode, originalRules);\n },\n\n visitAtRuleWithoutBody: function(atRuleNode, visitArgs) {\n if (atRuleNode.blocksVisibility()) {\n return;\n }\n\n if (atRuleNode.name === '@charset') {\n // Only output the debug info together with subsequent @charset definitions\n // a comment (or @media statement) before the actual @charset atrule would\n // be considered illegal css as it has to be on the first line\n if (this.charset) {\n if (atRuleNode.debugInfo) {\n const comment = new tree.Comment(`/* ${atRuleNode.toCSS(this._context).replace(/\\n/g, '')} */\\n`);\n comment.debugInfo = atRuleNode.debugInfo;\n return this._visitor.visit(comment);\n }\n return;\n }\n this.charset = true;\n }\n\n return atRuleNode;\n },\n\n checkValidNodes: function(rules, isRoot) {\n if (!rules) {\n return;\n }\n\n for (let i = 0; i < rules.length; i++) {\n const ruleNode = rules[i];\n if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) {\n throw { message: 'Properties must be inside selector blocks. They cannot be in the root',\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode instanceof tree.Call) {\n throw { message: `Function '${ruleNode.name}' did not return a root node`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode.type && !ruleNode.allowRoot) {\n throw { message: `${ruleNode.type} node returned by a function is not valid here`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n }\n },\n\n visitRuleset: function (rulesetNode, visitArgs) {\n // at this point rulesets are nested into each other\n let rule;\n\n const rulesets = [];\n\n this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot);\n\n if (!rulesetNode.root) {\n // remove invisible paths\n this._compileRulesetPaths(rulesetNode);\n\n // remove rulesets from this ruleset body and compile them separately\n const nodeRules = rulesetNode.rules;\n\n let nodeRuleCnt = nodeRules ? nodeRules.length : 0;\n for (let i = 0; i < nodeRuleCnt; ) {\n rule = nodeRules[i];\n if (rule && rule.rules) {\n // visit because we are moving them out from being a child\n rulesets.push(this._visitor.visit(rule));\n nodeRules.splice(i, 1);\n nodeRuleCnt--;\n continue;\n }\n i++;\n }\n // accept the visitor to remove rules and refactor itself\n // then we can decide nogw whether we want it or not\n // compile body\n if (nodeRuleCnt > 0) {\n rulesetNode.accept(this._visitor);\n } else {\n rulesetNode.rules = null;\n }\n visitArgs.visitDeeper = false;\n } else { // if (! rulesetNode.root) {\n rulesetNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n }\n\n if (rulesetNode.rules) {\n this._mergeRules(rulesetNode.rules);\n this._removeDuplicateRules(rulesetNode.rules);\n }\n\n // now decide whether we keep the ruleset\n if (this.utils.isVisibleRuleset(rulesetNode)) {\n rulesetNode.ensureVisibility();\n rulesets.splice(0, 0, rulesetNode);\n }\n\n if (rulesets.length === 1) {\n return rulesets[0];\n }\n return rulesets;\n },\n\n _compileRulesetPaths: function(rulesetNode) {\n if (rulesetNode.paths) {\n rulesetNode.paths = rulesetNode.paths\n .filter(p => {\n let i;\n if (p[0].elements[0].combinator.value === ' ') {\n p[0].elements[0].combinator = new(tree.Combinator)('');\n }\n for (i = 0; i < p.length; i++) {\n if (p[i].isVisible() && p[i].getIsOutput()) {\n return true;\n }\n }\n return false;\n });\n }\n },\n\n _removeDuplicateRules: function(rules) {\n if (!rules) { return; }\n\n // remove duplicates\n const ruleCache = {};\n\n let ruleList;\n let rule;\n let i;\n\n for (i = rules.length - 1; i >= 0 ; i--) {\n rule = rules[i];\n if (rule instanceof tree.Declaration) {\n if (!ruleCache[rule.name]) {\n ruleCache[rule.name] = rule;\n } else {\n ruleList = ruleCache[rule.name];\n if (ruleList instanceof tree.Declaration) {\n ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)];\n }\n const ruleCSS = rule.toCSS(this._context);\n if (ruleList.indexOf(ruleCSS) !== -1) {\n rules.splice(i, 1);\n } else {\n ruleList.push(ruleCSS);\n }\n }\n }\n }\n },\n\n _mergeRules: function(rules) {\n if (!rules) {\n return; \n }\n\n const groups = {};\n const groupsArr = [];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule.merge) {\n const key = rule.name;\n groups[key] ? rules.splice(i--, 1) : \n groupsArr.push(groups[key] = []);\n groups[key].push(rule);\n }\n }\n\n groupsArr.forEach(group => {\n if (group.length > 0) {\n const result = group[0];\n let space = [];\n const comma = [new tree.Expression(space)];\n group.forEach(rule => {\n if ((rule.merge === '+') && (space.length > 0)) {\n comma.push(new tree.Expression(space = []));\n }\n space.push(rule.value);\n result.important = result.important || rule.important;\n });\n result.value = new tree.Value(comma);\n }\n });\n }\n};\n\nexport default ToCSSVisitor;\n",
+ "import Visitor from './visitor';\nimport ImportVisitor from './import-visitor';\nimport MarkVisibleSelectorsVisitor from './set-tree-visibility-visitor';\nimport ExtendVisitor from './extend-visitor';\nimport JoinSelectorVisitor from './join-selector-visitor';\nimport ToCSSVisitor from './to-css-visitor';\n\nexport default {\n Visitor,\n ImportVisitor,\n MarkVisibleSelectorsVisitor,\n ExtendVisitor,\n JoinSelectorVisitor,\n ToCSSVisitor\n};\n",
+ "function makeRegistry( base ) {\n return {\n _data: {},\n add: function(name, func) {\n // precautionary case conversion, as later querying of\n // the registry by function-caller uses lower case as well.\n name = name.toLowerCase();\n\n // eslint-disable-next-line no-prototype-builtins\n if (this._data.hasOwnProperty(name)) {\n // TODO warn\n }\n this._data[name] = func;\n },\n addMultiple: function(functions) {\n Object.keys(functions).forEach(\n name => {\n this.add(name, functions[name]);\n });\n },\n get: function(name) {\n return this._data[name] || ( base && base.get( name ));\n },\n getLocalFunctions: function() {\n return this._data;\n },\n inherit: function() {\n return makeRegistry( this );\n },\n create: function(base) {\n return makeRegistry(base);\n }\n };\n}\n\nexport default makeRegistry( null );",
+ "export const MediaSyntaxOptions = {\n queryInParens: true\n};\n\nexport const ContainerSyntaxOptions = {\n queryInParens: true\n};\n",
+ "import Node from './node';\n\nconst Anonymous = function(value, index, currentFileInfo, mapLines, rulesetLike, visibilityInfo) {\n this.value = value;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.mapLines = mapLines;\n this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike;\n this.allowRoot = true;\n this.copyVisibilityInfo(visibilityInfo);\n}\n\nAnonymous.prototype = Object.assign(new Node(), {\n type: 'Anonymous',\n eval() {\n return new Anonymous(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo());\n },\n compare(other) {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n },\n isRulesetLike() {\n return this.rulesetLike;\n },\n genCSS(context, output) {\n this.nodeVisible = Boolean(this.value);\n if (this.nodeVisible) {\n output.add(this.value, this._fileInfo, this._index, this.mapLines);\n }\n }\n})\n\nexport default Anonymous;\n",
+ "import LessError from '../less-error';\nimport tree from '../tree';\nimport visitors from '../visitors';\nimport getParserInput from './parser-input';\nimport * as utils from '../utils';\nimport functionRegistry from '../functions/function-registry';\nimport { ContainerSyntaxOptions, MediaSyntaxOptions } from '../tree/atrule-syntax';\nimport logger from '../logger';\nimport Selector from '../tree/selector';\nimport Anonymous from '../tree/anonymous';\n\n//\n// less.js - parser\n//\n// A relatively straight-forward predictive parser.\n// There is no tokenization/lexing stage, the input is parsed\n// in one sweep.\n//\n// To make the parser fast enough to run in the browser, several\n// optimization had to be made:\n//\n// - Matching and slicing on a huge input is often cause of slowdowns.\n// The solution is to chunkify the input into smaller strings.\n// The chunks are stored in the `chunks` var,\n// `j` holds the current chunk index, and `currentPos` holds\n// the index of the current chunk in relation to `input`.\n// This gives us an almost 4x speed-up.\n//\n// - In many cases, we don't need to match individual tokens;\n// for example, if a value doesn't hold any variables, operations\n// or dynamic references, the parser can effectively 'skip' it,\n// treating it as a literal.\n// An example would be '1px solid #000' - which evaluates to itself,\n// we don't need to know what the individual components are.\n// The drawback, of course is that you don't get the benefits of\n// syntax-checking on the CSS. This gives us a 50% speed-up in the parser,\n// and a smaller speed-up in the code-gen.\n//\n//\n// Token matching is done with the `$` function, which either takes\n// a terminal string or regexp, or a non-terminal function to call.\n// It also takes care of moving all the indices forwards.\n//\n\nconst Parser = function Parser(context, imports, fileInfo, currentIndex) {\n currentIndex = currentIndex || 0;\n let parsers;\n const parserInput = getParserInput();\n\n function error(msg, type) {\n throw new LessError(\n {\n index: parserInput.i,\n filename: fileInfo.filename,\n type: type || 'Syntax',\n message: msg\n },\n imports\n );\n }\n\n /**\n * \n * @param {string} msg \n * @param {number} index \n * @param {string} type \n */\n function warn(msg, index, type) {\n if (!context.quiet) {\n logger.warn(\n (new LessError(\n {\n index: index ?? parserInput.i,\n filename: fileInfo.filename,\n type: type ? `${type.toUpperCase()} WARNING` : 'WARNING',\n message: msg\n },\n imports\n )).toString()\n );\n }\n }\n\n function expect(arg, msg) {\n // some older browsers return typeof 'function' for RegExp\n const result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);\n if (result) {\n return result;\n }\n\n error(msg || (typeof arg === 'string'\n ? `expected '${arg}' got '${parserInput.currentChar()}'`\n : 'unexpected token'));\n }\n\n // Specialization of expect()\n function expectChar(arg, msg) {\n if (parserInput.$char(arg)) {\n return arg;\n }\n error(msg || `expected '${arg}' got '${parserInput.currentChar()}'`);\n }\n\n function getDebugInfo(index) {\n const filename = fileInfo.filename;\n\n return {\n lineNumber: utils.getLocation(index, parserInput.getInput()).line + 1,\n fileName: filename\n };\n }\n\n /**\n * Used after initial parsing to create nodes on the fly\n *\n * @param {String} str - string to parse\n * @param {Array} parseList - array of parsers to run input through e.g. [\"value\", \"important\"]\n * @param {Number} currentIndex - start number to begin indexing\n * @param {Object} fileInfo - fileInfo to attach to created nodes\n */\n function parseNode(str, parseList, callback) {\n let result;\n const returnNodes = [];\n const parser = parserInput;\n\n try {\n parser.start(str);\n for (let x = 0, p; (p = parseList[x]); x++) {\n result = parsers[p]();\n returnNodes.push(result || null);\n }\n\n const endInfo = parser.end();\n if (endInfo.isFinished) {\n callback(null, returnNodes);\n }\n else {\n callback(true, null);\n }\n } catch (e) {\n throw new LessError({\n index: e.index + currentIndex,\n message: e.message\n }, imports, fileInfo.filename);\n }\n }\n\n //\n // The Parser\n //\n return {\n parserInput,\n imports,\n fileInfo,\n parseNode,\n //\n // Parse an input string into an abstract syntax tree,\n // @param str A string containing 'less' markup\n // @param callback call `callback` when done.\n // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply\n //\n parse: function (str, callback, additionalData) {\n let root;\n let err = null;\n let globalVars;\n let modifyVars;\n let ignored;\n let preText = '';\n\n // Optionally disable @plugin parsing\n if (additionalData && additionalData.disablePluginRule) {\n parsers.plugin = function() {\n var dir = parserInput.$re(/^@plugin?\\s+/);\n if (dir) {\n error('@plugin statements are not allowed when disablePluginRule is set to true');\n }\n }\n }\n\n globalVars = (additionalData && additionalData.globalVars) ? `${Parser.serializeVars(additionalData.globalVars)}\\n` : '';\n modifyVars = (additionalData && additionalData.modifyVars) ? `\\n${Parser.serializeVars(additionalData.modifyVars)}` : '';\n\n if (context.pluginManager) {\n const preProcessors = context.pluginManager.getPreProcessors();\n for (let i = 0; i < preProcessors.length; i++) {\n str = preProcessors[i].process(str, { context, imports, fileInfo });\n }\n }\n\n if (globalVars || (additionalData && additionalData.banner)) {\n preText = ((additionalData && additionalData.banner) ? additionalData.banner : '') + globalVars;\n ignored = imports.contentsIgnoredChars;\n ignored[fileInfo.filename] = ignored[fileInfo.filename] || 0;\n ignored[fileInfo.filename] += preText.length;\n }\n\n str = str.replace(/\\r\\n?/g, '\\n');\n // Remove potential UTF Byte Order Mark\n str = preText + str.replace(/^\\uFEFF/, '') + modifyVars;\n imports.contents[fileInfo.filename] = str;\n\n // Start with the primary rule.\n // The whole syntax tree is held under a Ruleset node,\n // with the `root` property set to true, so no `{}` are\n // output. The callback is called when the input is parsed.\n try {\n parserInput.start(str);\n\n tree.Node.prototype.parse = this;\n root = new tree.Ruleset(null, this.parsers.primary());\n tree.Node.prototype.rootNode = root;\n root.root = true;\n root.firstRoot = true;\n root.functionRegistry = functionRegistry.inherit();\n\n } catch (e) {\n return callback(new LessError(e, imports, fileInfo.filename));\n }\n\n // If `i` is smaller than the `input.length - 1`,\n // it means the parser wasn't able to parse the whole\n // string, so we've got a parsing error.\n //\n // We try to extract a \\n delimited string,\n // showing the line where the parse error occurred.\n // We split it up into two parts (the part which parsed,\n // and the part which didn't), so we can color them differently.\n const endInfo = parserInput.end();\n if (!endInfo.isFinished) {\n\n let message = endInfo.furthestPossibleErrorMessage;\n\n if (!message) {\n message = 'Unrecognised input';\n if (endInfo.furthestChar === '}') {\n message += '. Possibly missing opening \\'{\\'';\n } else if (endInfo.furthestChar === ')') {\n message += '. Possibly missing opening \\'(\\'';\n } else if (endInfo.furthestReachedEnd) {\n message += '. Possibly missing something';\n }\n }\n\n err = new LessError({\n type: 'Parse',\n message,\n index: endInfo.furthest,\n filename: fileInfo.filename\n }, imports);\n }\n\n const finish = e => {\n e = err || e || imports.error;\n\n if (e) {\n if (!(e instanceof LessError)) {\n e = new LessError(e, imports, fileInfo.filename);\n }\n\n return callback(e);\n }\n else {\n return callback(null, root);\n }\n };\n\n if (context.processImports !== false) {\n new visitors.ImportVisitor(imports, finish)\n .run(root);\n } else {\n return finish();\n }\n },\n\n //\n // Here in, the parsing rules/functions\n //\n // The basic structure of the syntax tree generated is as follows:\n //\n // Ruleset -> Declaration -> Value -> Expression -> Entity\n //\n // Here's some Less code:\n //\n // .class {\n // color: #fff;\n // border: 1px solid #000;\n // width: @w + 4px;\n // > .child {...}\n // }\n //\n // And here's what the parse tree might look like:\n //\n // Ruleset (Selector '.class', [\n // Declaration (\"color\", Value ([Expression [Color #fff]]))\n // Declaration (\"border\", Value ([Expression [Dimension 1px][Keyword \"solid\"][Color #000]]))\n // Declaration (\"width\", Value ([Expression [Operation \" + \" [Variable \"@w\"][Dimension 4px]]]))\n // Ruleset (Selector [Element '>', '.child'], [...])\n // ])\n //\n // In general, most rules will try to parse a token with the `$re()` function, and if the return\n // value is truly, will return a new node, of the relevant type. Sometimes, we need to check\n // first, before parsing, that's when we use `peek()`.\n //\n parsers: parsers = {\n //\n // The `primary` rule is the *entry* and *exit* point of the parser.\n // The rules here can appear at any level of the parse tree.\n //\n // The recursive nature of the grammar is an interplay between the `block`\n // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule,\n // as represented by this simplified grammar:\n //\n // primary → (ruleset | declaration)+\n // ruleset → selector+ block\n // block → '{' primary '}'\n //\n // Only at one point is the primary rule not called from the\n // block rule: at the root level.\n //\n primary: function () {\n const mixin = this.mixin;\n let root = [];\n let node;\n\n while (true) {\n while (true) {\n node = this.comment();\n if (!node) { break; }\n root.push(node);\n }\n // always process comments before deciding if finished\n if (parserInput.finished) {\n break;\n }\n if (parserInput.peek('}')) {\n break;\n }\n\n node = this.extendRule();\n if (node) {\n root = root.concat(node);\n continue;\n }\n\n node = mixin.definition() || this.declaration() || mixin.call(false, false) ||\n this.ruleset() || this.variableCall() || this.entities.call() || this.atrule();\n if (node) {\n root.push(node);\n } else {\n let foundSemiColon = false;\n while (parserInput.$char(';')) {\n foundSemiColon = true;\n }\n if (!foundSemiColon) {\n break;\n }\n }\n }\n\n return root;\n },\n\n // comments are collected by the main parsing mechanism and then assigned to nodes\n // where the current structure allows it\n comment: function () {\n if (parserInput.commentStore.length) {\n const comment = parserInput.commentStore.shift();\n return new(tree.Comment)(comment.text, comment.isLineComment, comment.index + currentIndex, fileInfo);\n }\n },\n\n //\n // Entities are tokens which can be found inside an Expression\n //\n entities: {\n mixinLookup: function() {\n return parsers.mixin.call(true, true);\n },\n //\n // A string, which supports escaping \" and '\n //\n // \"milky way\" 'he\\'s the one!'\n //\n quoted: function (forceEscaped) {\n let str;\n const index = parserInput.i;\n let isEscaped = false;\n\n parserInput.save();\n if (parserInput.$char('~')) {\n isEscaped = true;\n } else if (forceEscaped) {\n parserInput.restore();\n return;\n }\n\n str = parserInput.$quoted();\n if (!str) {\n parserInput.restore();\n return;\n }\n parserInput.forget();\n\n return new(tree.Quoted)(str.charAt(0), str.substr(1, str.length - 2), isEscaped, index + currentIndex, fileInfo);\n },\n\n //\n // A catch-all word, such as:\n //\n // black border-collapse\n //\n keyword: function () {\n const k = parserInput.$char('%') || parserInput.$re(/^\\[?(?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\\]?/);\n if (k) {\n return tree.Color.fromKeyword(k) || new(tree.Keyword)(k);\n }\n },\n\n //\n // A function call\n //\n // rgb(255, 0, 255)\n //\n // The arguments are parsed with the `entities.arguments` parser.\n //\n call: function () {\n let name;\n let args;\n let func;\n const index = parserInput.i;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (parserInput.peek(/^url\\(/i)) {\n return;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^([\\w-]+|%|~|progid:[\\w.]+)\\(/);\n if (!name) {\n parserInput.forget();\n return;\n }\n\n name = name[1];\n func = this.customFuncCall(name);\n if (func) {\n args = func.parse();\n if (args && func.stop) {\n parserInput.forget();\n return args;\n }\n }\n\n args = this.arguments(args);\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(name, args, index + currentIndex, fileInfo);\n },\n\n declarationCall: function () {\n let validCall;\n let args;\n const index = parserInput.i;\n\n parserInput.save();\n\n validCall = parserInput.$re(/^[\\w]+\\(/);\n if (!validCall) {\n parserInput.forget();\n return;\n }\n\n validCall = validCall.substring(0, validCall.length - 1);\n\n let rule = this.ruleProperty();\n let value;\n \n if (rule) {\n value = this.value();\n }\n \n if (rule && value) {\n args = [new (tree.Declaration)(rule, value, null, null, parserInput.i + currentIndex, fileInfo, true)];\n }\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(validCall, args, index + currentIndex, fileInfo);\n },\n\n //\n // Parsing rules for functions with non-standard args, e.g.:\n //\n // boolean(not(2 > 1))\n //\n // This is a quick prototype, to be modified/improved when\n // more custom-parsed funcs come (e.g. `selector(...)`)\n //\n\n customFuncCall: function (name) {\n /* Ideally the table is to be moved out of here for faster perf.,\n but it's quite tricky since it relies on all these `parsers`\n and `expect` available only here */\n return {\n alpha: f(parsers.ieAlpha, true),\n boolean: f(condition),\n 'if': f(condition)\n }[name.toLowerCase()];\n\n function f(parse, stop) {\n return {\n parse, // parsing function\n stop // when true - stop after parse() and return its result,\n // otherwise continue for plain args\n };\n }\n\n function condition() {\n return [expect(parsers.condition, 'expected condition')];\n }\n },\n\n arguments: function (prevArgs) {\n let argsComma = prevArgs || [];\n const argsSemiColon = [];\n let isSemiColonSeparated;\n let value;\n\n parserInput.save();\n\n while (true) {\n if (prevArgs) {\n prevArgs = false;\n } else {\n value = parsers.detachedRuleset() || this.assignment() || parsers.expression();\n if (!value) {\n break;\n }\n\n if (value.value && value.value.length == 1) {\n value = value.value[0];\n }\n\n argsComma.push(value);\n }\n\n if (parserInput.$char(',')) {\n continue;\n }\n\n if (parserInput.$char(';') || isSemiColonSeparated) {\n isSemiColonSeparated = true;\n value = (argsComma.length < 1) ? argsComma[0]\n : new tree.Value(argsComma);\n argsSemiColon.push(value);\n argsComma = [];\n }\n }\n\n parserInput.forget();\n return isSemiColonSeparated ? argsSemiColon : argsComma;\n },\n literal: function () {\n return this.dimension() ||\n this.color() ||\n this.quoted() ||\n this.unicodeDescriptor();\n },\n\n // Assignments are argument entities for calls.\n // They are present in ie filter properties as shown below.\n //\n // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )\n //\n\n assignment: function () {\n let key;\n let value;\n parserInput.save();\n key = parserInput.$re(/^\\w+(?=\\s?=)/i);\n if (!key) {\n parserInput.restore();\n return;\n }\n if (!parserInput.$char('=')) {\n parserInput.restore();\n return;\n }\n value = parsers.entity();\n if (value) {\n parserInput.forget();\n return new(tree.Assignment)(key, value);\n } else {\n parserInput.restore();\n }\n },\n\n //\n // Parse url() tokens\n //\n // We use a specific rule for urls, because they don't really behave like\n // standard function calls. The difference is that the argument doesn't have\n // to be enclosed within a string, so it can't be parsed as an Expression.\n //\n url: function () {\n let value;\n const index = parserInput.i;\n\n parserInput.autoCommentAbsorb = false;\n\n if (!parserInput.$str('url(')) {\n parserInput.autoCommentAbsorb = true;\n return;\n }\n\n value = this.quoted() || this.variable() || this.property() ||\n parserInput.$re(/^(?:(?:\\\\[()'\"])|[^()'\"])+/) || '';\n\n parserInput.autoCommentAbsorb = true;\n\n expectChar(')');\n\n return new(tree.URL)((value.value !== undefined ||\n value instanceof tree.Variable ||\n value instanceof tree.Property) ?\n value : new(tree.Anonymous)(value, index), index + currentIndex, fileInfo);\n },\n\n //\n // A Variable entity, such as `@fink`, in\n //\n // width: @fink + 2px\n //\n // We use a different parser for variable definitions,\n // see `parsers.variable`.\n //\n variable: function () {\n let ch;\n let name;\n const index = parserInput.i;\n\n parserInput.save();\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^@@?[\\w-]+/))) {\n ch = parserInput.currentChar();\n if (ch === '(' || ch === '[' && !parserInput.prevChar().match(/^\\s/)) {\n // this may be a VariableCall lookup\n const result = parsers.variableCall(name);\n if (result) {\n parserInput.forget();\n return result;\n }\n }\n parserInput.forget();\n return new(tree.Variable)(name, index + currentIndex, fileInfo);\n }\n parserInput.restore();\n },\n\n // A variable entity using the protective {} e.g. @{var}\n variableCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '@' && (curly = parserInput.$re(/^@\\{([\\w-]+)\\}/))) {\n return new(tree.Variable)(`@${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Property accessor, such as `$color`, in\n //\n // background-color: $color\n //\n property: function () {\n let name;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (name = parserInput.$re(/^\\$[\\w-]+/))) {\n return new(tree.Property)(name, index + currentIndex, fileInfo);\n }\n },\n\n // A property entity useing the protective {} e.g. ${prop}\n propertyCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (curly = parserInput.$re(/^\\$\\{([\\w-]+)\\}/))) {\n return new(tree.Property)(`$${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Hexadecimal color\n //\n // #4F3C2F\n //\n // `rgb` and `hsl` colors are parsed through the `entities.call` parser.\n //\n color: function () {\n let rgb;\n parserInput.save();\n\n if (parserInput.currentChar() === '#' && (rgb = parserInput.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\\w.#[])?/))) {\n if (!rgb[2]) {\n parserInput.forget();\n return new(tree.Color)(rgb[1], undefined, rgb[0]);\n }\n }\n parserInput.restore();\n },\n\n colorKeyword: function () {\n parserInput.save();\n const autoCommentAbsorb = parserInput.autoCommentAbsorb;\n parserInput.autoCommentAbsorb = false;\n const k = parserInput.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);\n parserInput.autoCommentAbsorb = autoCommentAbsorb;\n if (!k) {\n parserInput.forget();\n return;\n }\n parserInput.restore();\n const color = tree.Color.fromKeyword(k);\n if (color) {\n parserInput.$str(k);\n return color;\n }\n },\n\n //\n // A Dimension, that is, a number and a unit\n //\n // 0.5em 95%\n //\n dimension: function () {\n if (parserInput.peekNotNumeric()) {\n return;\n }\n\n const value = parserInput.$re(/^([+-]?\\d*\\.?\\d+)(%|[a-z_]+)?/i);\n if (value) {\n return new(tree.Dimension)(value[1], value[2]);\n }\n },\n\n //\n // A unicode descriptor, as is used in unicode-range\n //\n // U+0?? or U+00A1-00A9\n //\n unicodeDescriptor: function () {\n let ud;\n\n ud = parserInput.$re(/^U\\+[0-9a-fA-F?]+(-[0-9a-fA-F?]+)?/);\n if (ud) {\n return new(tree.UnicodeDescriptor)(ud[0]);\n }\n },\n\n //\n // JavaScript code to be evaluated\n //\n // `window.location.href`\n //\n javascript: function () {\n let js;\n const index = parserInput.i;\n\n parserInput.save();\n\n const escape = parserInput.$char('~');\n const jsQuote = parserInput.$char('`');\n\n if (!jsQuote) {\n parserInput.restore();\n return;\n }\n\n js = parserInput.$re(/^[^`]*`/);\n if (js) {\n parserInput.forget();\n return new(tree.JavaScript)(js.substr(0, js.length - 1), Boolean(escape), index + currentIndex, fileInfo);\n }\n parserInput.restore('invalid javascript definition');\n }\n },\n\n //\n // The variable part of a variable definition. Used in the `rule` parser\n //\n // @fink:\n //\n variable: function () {\n let name;\n\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^(@[\\w-]+)\\s*:/))) { return name[1]; }\n },\n\n //\n // Call a variable value to retrieve a detached ruleset\n // or a value from a detached ruleset's rules.\n //\n // @fink();\n // @fink;\n // color: @fink[@color];\n //\n variableCall: function (parsedName) {\n let lookups;\n const i = parserInput.i;\n const inValue = !!parsedName;\n let name = parsedName;\n\n parserInput.save();\n\n if (name || (parserInput.currentChar() === '@'\n && (name = parserInput.$re(/^(@[\\w-]+)(\\(\\s*\\))?/)))) {\n\n lookups = this.mixin.ruleLookups();\n\n if (!lookups && ((inValue && parserInput.$str('()') !== '()') || (name[2] !== '()'))) {\n parserInput.restore('Missing \\'[...]\\' lookup in variable call');\n return;\n }\n\n if (!inValue) {\n name = name[1];\n }\n\n const call = new tree.VariableCall(name, i, fileInfo);\n if (!inValue && parsers.end()) {\n parserInput.forget();\n return call;\n }\n else {\n parserInput.forget();\n return new tree.NamespaceValue(call, lookups, i, fileInfo);\n }\n }\n\n parserInput.restore();\n },\n\n //\n // extend syntax - used to extend selectors\n //\n extend: function(isRule) {\n let elements;\n let e;\n const index = parserInput.i;\n let option;\n let extendList;\n let extend;\n\n if (!parserInput.$str(isRule ? '&:extend(' : ':extend(')) {\n return;\n }\n\n do {\n option = null;\n elements = null;\n let first = true;\n while (!(option = parserInput.$re(/^(!?all)(?=\\s*(\\)|,))/))) {\n e = this.element();\n\n if (!e) {\n break;\n }\n /**\n * @note - This will not catch selectors in pseudos like :is() and :where() because\n * they don't currently parse their contents as selectors.\n */\n if (!first && e.combinator.value) {\n warn('Targeting complex selectors can have unexpected behavior, and this behavior may change in the future.', index)\n }\n\n first = false;\n if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n }\n\n option = option && option[1];\n if (!elements) {\n error('Missing target selector for :extend().');\n }\n extend = new(tree.Extend)(new(tree.Selector)(elements), option, index + currentIndex, fileInfo);\n if (extendList) {\n extendList.push(extend);\n } else {\n extendList = [ extend ];\n }\n } while (parserInput.$char(','));\n\n expect(/^\\)/);\n\n if (isRule) {\n expect(/^;/);\n }\n\n return extendList;\n },\n\n //\n // extendRule - used in a rule to extend all the parent selectors\n //\n extendRule: function() {\n return this.extend(true);\n },\n\n //\n // Mixins\n //\n mixin: {\n //\n // A Mixin call, with an optional argument list\n //\n // #mixins > .square(#fff);\n // #mixins.square(#fff);\n // .rounded(4px, black);\n // .button;\n //\n // We can lookup / return a value using the lookup syntax:\n //\n // color: #mixin.square(#fff)[@color];\n //\n // The `while` loop is there because mixins can be\n // namespaced, but we only support the child and descendant\n // selector for now.\n //\n call: function (inValue, getLookup) {\n const s = parserInput.currentChar();\n let important = false;\n let lookups;\n const index = parserInput.i;\n let elements;\n let args;\n let hasParens;\n let parensIndex;\n let parensWS = false;\n\n if (s !== '.' && s !== '#') { return; }\n\n parserInput.save(); // stop us absorbing part of an invalid selector\n\n elements = this.elements();\n\n if (elements) {\n parensIndex = parserInput.i;\n if (parserInput.$char('(')) {\n parensWS = parserInput.isWhitespace(-2);\n args = this.args(true).args;\n expectChar(')');\n hasParens = true;\n if (parensWS) {\n warn('Whitespace between a mixin name and parentheses for a mixin call is deprecated', parensIndex, 'DEPRECATED');\n }\n }\n\n if (getLookup !== false) {\n lookups = this.ruleLookups();\n }\n if (getLookup === true && !lookups) {\n parserInput.restore();\n return;\n }\n\n if (inValue && !lookups && !hasParens) {\n // This isn't a valid in-value mixin call\n parserInput.restore();\n return;\n }\n\n if (!inValue && parsers.important()) {\n important = true;\n }\n\n if (inValue || parsers.end()) {\n parserInput.forget();\n const mixin = new(tree.mixin.Call)(elements, args, index + currentIndex, fileInfo, !lookups && important);\n if (lookups) {\n return new tree.NamespaceValue(mixin, lookups);\n }\n else {\n if (!hasParens) {\n warn('Calling a mixin without parentheses is deprecated', parensIndex, 'DEPRECATED');\n }\n return mixin;\n }\n }\n }\n\n parserInput.restore();\n },\n /**\n * Matching elements for mixins\n * (Start with . or # and can have > )\n */\n elements: function() {\n let elements;\n let e;\n let c;\n let elem;\n let elemIndex;\n const re = /^[#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/;\n while (true) {\n elemIndex = parserInput.i;\n e = parserInput.$re(re);\n\n if (!e) {\n break;\n }\n elem = new(tree.Element)(c, e, false, elemIndex + currentIndex, fileInfo);\n if (elements) {\n elements.push(elem);\n } else {\n elements = [ elem ];\n }\n c = parserInput.$char('>');\n }\n return elements;\n },\n args: function (isCall) {\n const entities = parsers.entities;\n const returner = { args:null, variadic: false };\n let expressions = [];\n const argsSemiColon = [];\n const argsComma = [];\n let isSemiColonSeparated;\n let expressionContainsNamed;\n let name;\n let nameLoop;\n let value;\n let arg;\n let expand;\n let hasSep = true;\n\n parserInput.save();\n\n while (true) {\n if (isCall) {\n arg = parsers.detachedRuleset() || parsers.expression();\n } else {\n parserInput.commentStore.length = 0;\n if (parserInput.$str('...')) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ variadic: true });\n break;\n }\n arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true);\n }\n\n if (!arg || !hasSep) {\n break;\n }\n\n nameLoop = null;\n if (arg.throwAwayComments) {\n arg.throwAwayComments();\n }\n value = arg;\n let val = null;\n\n if (isCall) {\n // Variable\n if (arg.value && arg.value.length == 1) {\n val = arg.value[0];\n }\n } else {\n val = arg;\n }\n\n if (val && (val instanceof tree.Variable || val instanceof tree.Property)) {\n if (parserInput.$char(':')) {\n if (expressions.length > 0) {\n if (isSemiColonSeparated) {\n error('Cannot mix ; and , as delimiter types');\n }\n expressionContainsNamed = true;\n }\n\n value = parsers.detachedRuleset() || parsers.expression();\n\n if (!value) {\n if (isCall) {\n error('could not understand value for named argument');\n } else {\n parserInput.restore();\n returner.args = [];\n return returner;\n }\n }\n nameLoop = (name = val.name);\n } else if (parserInput.$str('...')) {\n if (!isCall) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ name: arg.name, variadic: true });\n break;\n } else {\n expand = true;\n }\n } else if (!isCall) {\n name = nameLoop = val.name;\n value = null;\n }\n }\n\n if (value) {\n expressions.push(value);\n }\n\n argsComma.push({ name:nameLoop, value, expand });\n\n if (parserInput.$char(',')) {\n hasSep = true;\n continue;\n }\n hasSep = parserInput.$char(';') === ';';\n\n if (hasSep || isSemiColonSeparated) {\n\n if (expressionContainsNamed) {\n error('Cannot mix ; and , as delimiter types');\n }\n\n isSemiColonSeparated = true;\n\n if (expressions.length > 1) {\n value = new(tree.Value)(expressions);\n }\n argsSemiColon.push({ name, value, expand });\n\n name = null;\n expressions = [];\n expressionContainsNamed = false;\n }\n }\n\n parserInput.forget();\n returner.args = isSemiColonSeparated ? argsSemiColon : argsComma;\n return returner;\n },\n //\n // A Mixin definition, with a list of parameters\n //\n // .rounded (@radius: 2px, @color) {\n // ...\n // }\n //\n // Until we have a finer grained state-machine, we have to\n // do a look-ahead, to make sure we don't have a mixin call.\n // See the `rule` function for more information.\n //\n // We start by matching `.rounded (`, and then proceed on to\n // the argument list, which has optional default values.\n // We store the parameters in `params`, with a `value` key,\n // if there is a value, such as in the case of `@radius`.\n //\n // Once we've got our params list, and a closing `)`, we parse\n // the `{...}` block.\n //\n definition: function () {\n let name;\n let params = [];\n let match;\n let ruleset;\n let cond;\n let variadic = false;\n if ((parserInput.currentChar() !== '.' && parserInput.currentChar() !== '#') ||\n parserInput.peek(/^[^{]*\\}/)) {\n return;\n }\n\n parserInput.save();\n\n match = parserInput.$re(/^([#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\\s*\\(/);\n if (match) {\n name = match[1];\n\n const argInfo = this.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n\n // .mixincall(\"@{a}\");\n // looks a bit like a mixin definition..\n // also\n // .mixincall(@a: {rule: set;});\n // so we have to be nice and restore\n if (!parserInput.$char(')')) {\n parserInput.restore('Missing closing \\')\\'');\n return;\n }\n\n parserInput.commentStore.length = 0;\n\n if (parserInput.$str('when')) { // Guard\n cond = expect(parsers.conditions, 'expected condition');\n }\n\n ruleset = parsers.block();\n\n if (ruleset) {\n parserInput.forget();\n return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic);\n } else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n\n ruleLookups: function() {\n let rule;\n const lookups = [];\n\n if (parserInput.currentChar() !== '[') {\n return;\n }\n\n while (true) {\n parserInput.save();\n rule = this.lookupValue();\n if (!rule && rule !== '') {\n parserInput.restore();\n break;\n }\n lookups.push(rule);\n parserInput.forget();\n }\n if (lookups.length > 0) {\n return lookups;\n }\n },\n\n lookupValue: function() {\n parserInput.save();\n\n if (!parserInput.$char('[')) {\n parserInput.restore();\n return;\n }\n\n const name = parserInput.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);\n\n if (!parserInput.$char(']')) {\n parserInput.restore();\n return;\n }\n\n if (name || name === '') {\n parserInput.forget();\n return name;\n }\n\n parserInput.restore();\n }\n },\n //\n // Entities are the smallest recognized token,\n // and can be found inside a rule's value.\n //\n entity: function () {\n const entities = this.entities;\n\n return this.comment() || entities.literal() || entities.variable() || entities.url() ||\n entities.property() || entities.call() || entities.keyword() || this.mixin.call(true) ||\n entities.javascript();\n },\n\n //\n // A Declaration terminator. Note that we use `peek()` to check for '}',\n // because the `block` rule will be expecting it, but we still need to make sure\n // it's there, if ';' was omitted.\n //\n end: function () {\n return parserInput.$char(';') || parserInput.peek('}');\n },\n\n //\n // IE's alpha function\n //\n // alpha(opacity=88)\n //\n ieAlpha: function () {\n let value;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (!parserInput.$re(/^opacity=/i)) { return; }\n value = parserInput.$re(/^\\d+/);\n if (!value) {\n value = expect(parsers.entities.variable, 'Could not parse alpha');\n value = `@{${value.name.slice(1)}}`;\n }\n expectChar(')');\n return new tree.Quoted('', `alpha(opacity=${value})`);\n },\n\n /** \n * A Selector Element\n *\n * div\n * + h1\n * #socks\n * input[type=\"text\"]\n *\n * Elements are the building blocks for Selectors,\n * they are made out of a `Combinator` (see combinator rule),\n * and an element name, such as a tag a class, or `*`.\n */\n element: function () {\n let e;\n let c;\n let v;\n const index = parserInput.i;\n\n c = this.combinator();\n\n /** This selector parser is quite simplistic and will pass a number of invalid selectors. */\n e = parserInput.$re(/^(?:\\d+\\.\\d+|\\d+)%/) ||\n // eslint-disable-next-line no-control-regex\n parserInput.$re(/^(?:[.#]?|:*)(?:[\\w-]|[^\\x00-\\x9f]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||\n parserInput.$char('*') || parserInput.$char('&') || this.attribute() ||\n parserInput.$re(/^\\([^&()@]+\\)/) || parserInput.$re(/^[.#:](?=@)/) ||\n this.entities.variableCurly();\n\n if (!e) {\n parserInput.save();\n if (parserInput.$char('(')) {\n if ((v = this.selector(false))) {\n let selectors = [];\n while (parserInput.$char(',')) {\n selectors.push(v);\n selectors.push(new Anonymous(','));\n v = this.selector(false);\n }\n selectors.push(v);\n \n if (parserInput.$char(')')) {\n if (selectors.length > 1) {\n e = new (tree.Paren)(new Selector(selectors));\n } else {\n e = new(tree.Paren)(v);\n }\n parserInput.forget();\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.forget();\n }\n }\n\n if (e) { return new(tree.Element)(c, e, e instanceof tree.Variable, index + currentIndex, fileInfo); }\n },\n\n //\n // Combinators combine elements together, in a Selector.\n //\n // Because our parser isn't white-space sensitive, special care\n // has to be taken, when parsing the descendant combinator, ` `,\n // as it's an empty space. We have to check the previous character\n // in the input, to see if it's a ` ` character. More info on how\n // we deal with this in *combinator.js*.\n //\n combinator: function () {\n let c = parserInput.currentChar();\n\n if (c === '/') {\n parserInput.save();\n const slashedCombinator = parserInput.$re(/^\\/[a-z]+\\//i);\n if (slashedCombinator) {\n parserInput.forget();\n return new(tree.Combinator)(slashedCombinator);\n }\n parserInput.restore();\n }\n\n if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {\n parserInput.i++;\n if (c === '^' && parserInput.currentChar() === '^') {\n c = '^^';\n parserInput.i++;\n }\n while (parserInput.isWhitespace()) { parserInput.i++; }\n return new(tree.Combinator)(c);\n } else if (parserInput.isWhitespace(-1)) {\n return new(tree.Combinator)(' ');\n } else {\n return new(tree.Combinator)(null);\n }\n },\n //\n // A CSS Selector\n // with less extensions e.g. the ability to extend and guard\n //\n // .class > div + h1\n // li a:hover\n //\n // Selectors are made out of one or more Elements, see above.\n //\n selector: function (isLess) {\n const index = parserInput.i;\n let elements;\n let extendList;\n let c;\n let e;\n let allExtends;\n let when;\n let condition;\n isLess = isLess !== false;\n while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {\n if (when) {\n condition = expect(this.conditions, 'expected condition');\n } else if (condition) {\n error('CSS guard can only be used at the end of selector');\n } else if (extendList) {\n if (allExtends) {\n allExtends = allExtends.concat(extendList);\n } else {\n allExtends = extendList;\n }\n } else {\n if (allExtends) { error('Extend can only be used at the end of selector'); }\n c = parserInput.currentChar();\n if (Array.isArray(e)){\n e.forEach(ele => elements.push(ele));\n } if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n e = null;\n }\n if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {\n break;\n }\n }\n\n if (elements) { return new(tree.Selector)(elements, allExtends, condition, index + currentIndex, fileInfo); }\n if (allExtends) { error('Extend must be used to extend a selector, it cannot be used on its own'); }\n },\n selectors: function () {\n let s;\n let selectors;\n while (true) {\n s = this.selector();\n if (!s) {\n break;\n }\n if (selectors) {\n selectors.push(s);\n } else {\n selectors = [ s ];\n }\n parserInput.commentStore.length = 0;\n if (s.condition && selectors.length > 1) {\n error('Guards are only currently allowed on a single selector.');\n }\n if (!parserInput.$char(',')) { break; }\n if (s.condition) {\n error('Guards are only currently allowed on a single selector.');\n }\n parserInput.commentStore.length = 0;\n }\n return selectors;\n },\n attribute: function () {\n if (!parserInput.$char('[')) { return; }\n\n const entities = this.entities;\n let key;\n let val;\n let op;\n //\n // case-insensitive flag\n // e.g. [attr operator value i]\n //\n let cif;\n\n if (!(key = entities.variableCurly())) {\n key = expect(/^(?:[_A-Za-z0-9-*]*\\|)?(?:[_A-Za-z0-9-]|\\\\.)+/);\n }\n\n op = parserInput.$re(/^[|~*$^]?=/);\n if (op) {\n val = entities.quoted() || parserInput.$re(/^[0-9]+%/) || parserInput.$re(/^[\\w-]+/) || entities.variableCurly();\n if (val) {\n cif = parserInput.$re(/^[iIsS]/);\n }\n }\n\n expectChar(']');\n\n return new(tree.Attribute)(key, op, val, cif);\n },\n\n //\n // The `block` rule is used by `ruleset` and `mixin.definition`.\n // It's a wrapper around the `primary` rule, with added `{}`.\n //\n block: function () {\n let content;\n if (parserInput.$char('{') && (content = this.primary()) && parserInput.$char('}')) {\n return content;\n }\n },\n\n blockRuleset: function() {\n let block = this.block();\n\n if (block) {\n block = new tree.Ruleset(null, block);\n }\n return block;\n },\n\n detachedRuleset: function() {\n let argInfo;\n let params;\n let variadic;\n\n parserInput.save();\n if (parserInput.$re(/^[.#]\\(/)) {\n /**\n * DR args currently only implemented for each() function, and not\n * yet settable as `@dr: #(@arg) {}`\n * This should be done when DRs are merged with mixins.\n * See: https://github.com/less/less-meta/issues/16\n */\n argInfo = this.mixin.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return;\n }\n }\n const blockRuleset = this.blockRuleset();\n if (blockRuleset) {\n parserInput.forget();\n if (params) {\n return new tree.mixin.Definition(null, params, blockRuleset, null, variadic);\n }\n return new tree.DetachedRuleset(blockRuleset);\n }\n parserInput.restore();\n },\n\n //\n // div, .class, body > p {...}\n //\n ruleset: function () {\n let selectors;\n let rules;\n let debugInfo;\n\n parserInput.save();\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(parserInput.i);\n }\n\n selectors = this.selectors();\n\n if (selectors && (rules = this.block())) {\n parserInput.forget();\n const ruleset = new(tree.Ruleset)(selectors, rules, context.strictImports);\n if (context.dumpLineNumbers) {\n ruleset.debugInfo = debugInfo;\n }\n return ruleset;\n } else {\n parserInput.restore();\n }\n },\n declaration: function () {\n let name;\n let value;\n const index = parserInput.i;\n let hasDR;\n const c = parserInput.currentChar();\n let important;\n let merge;\n let isVariable;\n\n if (c === '.' || c === '#' || c === '&' || c === ':') { return; }\n\n parserInput.save();\n\n name = this.variable() || this.ruleProperty();\n if (name) {\n isVariable = typeof name === 'string';\n\n if (isVariable) {\n value = this.detachedRuleset();\n if (value) {\n hasDR = true;\n }\n }\n\n parserInput.commentStore.length = 0;\n if (!value) {\n // a name returned by this.ruleProperty() is always an array of the form:\n // [string-1, ..., string-n, \"\"] or [string-1, ..., string-n, \"+\"]\n // where each item is a tree.Keyword or tree.Variable\n merge = !isVariable && name.length > 1 && name.pop().value;\n\n // Custom property values get permissive parsing\n if (name[0].value && name[0].value.slice(0, 2) === '--') {\n if (parserInput.$char(';')) {\n value = new Anonymous('');\n } else {\n value = this.permissiveValue(/[;}]/, true);\n }\n }\n // Try to store values as anonymous\n // If we need the value later we'll re-parse it in ruleset.parseValue\n else {\n value = this.anonymousValue();\n }\n if (value) {\n parserInput.forget();\n // anonymous values absorb the end ';' which is required for them to work\n return new(tree.Declaration)(name, value, false, merge, index + currentIndex, fileInfo);\n }\n\n if (!value) {\n value = this.value();\n }\n\n if (value) {\n important = this.important();\n } else if (isVariable) {\n /**\n * As a last resort, try permissiveValue\n *\n * @todo - This has created some knock-on problems of not\n * flagging incorrect syntax or detecting user intent.\n */\n value = this.permissiveValue();\n }\n }\n\n if (value && (this.end() || hasDR)) {\n parserInput.forget();\n return new(tree.Declaration)(name, value, important, merge, index + currentIndex, fileInfo);\n }\n else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n anonymousValue: function () {\n const index = parserInput.i;\n const match = parserInput.$re(/^([^.#@$+/'\"*`(;{}-]*);/);\n if (match) {\n return new(tree.Anonymous)(match[1], index + currentIndex);\n }\n },\n /**\n * Used for custom properties, at-rules, and variables (as fallback)\n * Parses almost anything inside of {} [] () \"\" blocks\n * until it reaches outer-most tokens.\n *\n * First, it will try to parse comments and entities to reach\n * the end. This is mostly like the Expression parser except no\n * math is allowed.\n * \n * @param {RexExp} untilTokens - Characters to stop parsing at\n */\n permissiveValue: function (untilTokens) {\n let i;\n let e;\n let done;\n let value;\n const tok = untilTokens || ';';\n const index = parserInput.i;\n const result = [];\n\n function testCurrentChar() {\n const char = parserInput.currentChar();\n if (typeof tok === 'string') {\n return char === tok;\n } else {\n return tok.test(char);\n }\n }\n if (testCurrentChar()) {\n return;\n }\n value = [];\n do {\n e = this.comment();\n if (e) {\n value.push(e);\n continue;\n }\n e = this.entity();\n if (e) {\n value.push(e);\n }\n if (parserInput.peek(',')) {\n value.push(new (tree.Anonymous)(',', parserInput.i));\n parserInput.$char(',');\n }\n } while (e);\n\n done = testCurrentChar();\n\n if (value.length > 0) {\n value = new(tree.Expression)(value);\n if (done) {\n return value;\n }\n else {\n result.push(value);\n }\n // Preserve space before $parseUntil as it will not\n if (parserInput.prevChar() === ' ') {\n result.push(new tree.Anonymous(' ', index));\n }\n }\n parserInput.save();\n\n value = parserInput.$parseUntil(tok);\n\n if (value) {\n if (typeof value === 'string') {\n error(`Expected '${value}'`, 'Parse');\n }\n if (value.length === 1 && value[0] === ' ') {\n parserInput.forget();\n return new tree.Anonymous('', index);\n }\n /** @type {string} */\n let item;\n for (i = 0; i < value.length; i++) {\n item = value[i];\n if (Array.isArray(item)) {\n // Treat actual quotes as normal quoted values\n result.push(new tree.Quoted(item[0], item[1], true, index, fileInfo));\n }\n else {\n if (i === value.length - 1) {\n item = item.trim();\n }\n // Treat like quoted values, but replace vars like unquoted expressions\n const quote = new tree.Quoted('\\'', item, true, index, fileInfo);\n const variableRegex = /@([\\w-]+)/g;\n const propRegex = /\\$([\\w-]+)/g;\n if (variableRegex.test(item)) {\n warn('@[ident] in unknown values will not be evaluated as variables in the future. Use @{[ident]}', index, 'DEPRECATED');\n }\n if (propRegex.test(item)) {\n warn('$[ident] in unknown values will not be evaluated as property references in the future. Use ${[ident]}', index, 'DEPRECATED');\n }\n quote.variableRegex = /@([\\w-]+)|@{([\\w-]+)}/g;\n quote.propRegex = /\\$([\\w-]+)|\\${([\\w-]+)}/g;\n result.push(quote);\n }\n }\n parserInput.forget();\n return new tree.Expression(result, true);\n }\n parserInput.restore();\n },\n\n //\n // An @import atrule\n //\n // @import \"lib\";\n //\n // Depending on our environment, importing is done differently:\n // In the browser, it's an XHR request, in Node, it would be a\n // file-system operation. The function used for importing is\n // stored in `import`, which we pass to the Import constructor.\n //\n 'import': function () {\n let path;\n let features;\n const index = parserInput.i;\n\n const dir = parserInput.$re(/^@import\\s+/);\n\n if (dir) {\n const options = (dir ? this.importOptions() : null) || {};\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n features = this.mediaFeatures({});\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon or unrecognised media features on import');\n }\n features = features && new(tree.Value)(features);\n return new(tree.Import)(path, features, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed import statement');\n }\n }\n },\n\n importOptions: function() {\n let o;\n const options = {};\n let optionName;\n let value;\n\n // list of options, surrounded by parens\n if (!parserInput.$char('(')) { return null; }\n do {\n o = this.importOption();\n if (o) {\n optionName = o;\n value = true;\n switch (optionName) {\n case 'css':\n optionName = 'less';\n value = false;\n break;\n case 'once':\n optionName = 'multiple';\n value = false;\n break;\n }\n options[optionName] = value;\n if (!parserInput.$char(',')) { break; }\n }\n } while (o);\n expectChar(')');\n return options;\n },\n\n importOption: function() {\n const opt = parserInput.$re(/^(less|css|multiple|once|inline|reference|optional)/);\n if (opt) {\n return opt[1];\n }\n },\n\n mediaFeature: function (syntaxOptions) {\n const entities = this.entities;\n const nodes = [];\n let e;\n let p;\n let rangeP;\n let spacing = false;\n parserInput.save();\n do {\n parserInput.save();\n if (parserInput.$re(/^[0-9a-z-]*\\s+\\(/)) {\n spacing = true;\n }\n parserInput.restore();\n\n e = entities.declarationCall.bind(this)() || entities.keyword() || entities.variable() || entities.mixinLookup()\n if (e) {\n nodes.push(e);\n } else if (parserInput.$char('(')) {\n p = this.property();\n parserInput.save();\n if (!p && syntaxOptions.queryInParens && parserInput.$re(/^[0-9a-z-]*\\s*([<>]=|<=|>=|[<>]|=)/)) {\n parserInput.restore();\n p = this.condition();\n\n parserInput.save();\n rangeP = this.atomicCondition(null, p.rvalue);\n if (!rangeP) {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n e = this.value();\n }\n if (parserInput.$char(')')) {\n if (p && !e) {\n nodes.push(new (tree.Paren)(new (tree.QueryInParens)(p.op, p.lvalue, p.rvalue, rangeP ? rangeP.op : null, rangeP ? rangeP.rvalue : null, p._index)));\t\t\t\t \n e = p;\n } else if (p && e) {\n nodes.push(new (tree.Paren)(new (tree.Declaration)(p, e, null, null, parserInput.i + currentIndex, fileInfo, true)));\n if (!spacing) {\n nodes[nodes.length - 1].noSpacing = true;\n }\n spacing = false;\n } else if (e) {\n nodes.push(new(tree.Paren)(e));\n spacing = false;\n } else {\n error('badly formed media feature definition');\n }\n } else {\n error('Missing closing \\')\\'', 'Parse');\n }\n }\n } while (e);\n\n parserInput.forget();\n if (nodes.length > 0) {\n return new(tree.Expression)(nodes);\n }\n },\n\n mediaFeatures: function (syntaxOptions) {\n const entities = this.entities;\n const features = [];\n let e;\n do {\n e = this.mediaFeature(syntaxOptions);\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n else if (!features[features.length - 1].noSpacing) {\n features[features.length - 1].noSpacing = false;\n }\n } else {\n e = entities.variable() || entities.mixinLookup();\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n else if (!features[features.length - 1].noSpacing) {\n features[features.length - 1].noSpacing = false;\n }\n }\n }\n } while (e);\n\n return features.length > 0 ? features : null;\n },\n\n prepareAndGetNestableAtRule: function (treeType, index, debugInfo, syntaxOptions) {\n const features = this.mediaFeatures(syntaxOptions);\n\n const rules = this.block();\n\n if (!rules) {\n error('media definitions require block statements after any features');\n }\n\n parserInput.forget();\n\n const atRule = new (treeType)(rules, features, index + currentIndex, fileInfo);\n if (context.dumpLineNumbers) {\n atRule.debugInfo = debugInfo;\n }\n\n return atRule;\n },\n\n nestableAtRule: function () {\n let debugInfo;\n const index = parserInput.i;\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(index);\n }\n parserInput.save();\n\n if (parserInput.$peekChar('@')) {\n if (parserInput.$str('@media')) {\n return this.prepareAndGetNestableAtRule(tree.Media, index, debugInfo, MediaSyntaxOptions);\n }\n \n if (parserInput.$str('@container')) {\n return this.prepareAndGetNestableAtRule(tree.Container, index, debugInfo, ContainerSyntaxOptions);\n }\n }\n \n parserInput.restore();\n },\n\n //\n\n // A @plugin directive, used to import plugins dynamically.\n //\n // @plugin (args) \"lib\";\n //\n plugin: function () {\n let path;\n let args;\n let options;\n const index = parserInput.i;\n const dir = parserInput.$re(/^@plugin\\s+/);\n\n if (dir) {\n args = this.pluginArgs();\n\n if (args) {\n options = {\n pluginArgs: args,\n isPlugin: true\n };\n }\n else {\n options = { isPlugin: true };\n }\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon on @plugin');\n }\n return new(tree.Import)(path, null, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed @plugin statement');\n }\n }\n },\n\n pluginArgs: function() {\n // list of options, surrounded by parens\n parserInput.save();\n if (!parserInput.$char('(')) {\n parserInput.restore();\n return null;\n }\n const args = parserInput.$re(/^\\s*([^);]+)\\)\\s*/);\n if (args[1]) {\n parserInput.forget();\n return args[1].trim();\n }\n else {\n parserInput.restore();\n return null;\n }\n },\n atruleUnknown: function (value, name, hasBlock) {\n value = this.permissiveValue(/^[{;]/);\n hasBlock = (parserInput.currentChar() === '{');\n if (!value) {\n if (!hasBlock && parserInput.currentChar() !== ';') {\n error(''.concat(name, ' rule is missing block or ending semi-colon'));\n }\n }\n else if (!value.value) {\n value = null;\n }\n return [value, hasBlock];\n },\n atruleBlock: function (rules, value, isRooted, isKeywordList) {\n rules = this.blockRuleset();\n parserInput.save();\n if (!rules && !isRooted) {\n value = this.entity();\n rules = this.blockRuleset();\n }\n if (!rules && !isRooted) {\n parserInput.restore();\n var e = [];\n value = this.entity();\n while (parserInput.$char(',')) {\n e.push(value);\n value = this.entity();\n }\n if (value && e.length > 0) {\n e.push(value);\n value = e;\n isKeywordList = true;\n }\n else {\n rules = this.blockRuleset();\n }\n }\n else {\n parserInput.forget();\n }\n \n return [rules, value, isKeywordList];\n },\n //\n // A CSS AtRule\n //\n // @charset \"utf-8\";\n //\n atrule: function () {\n const index = parserInput.i;\n let name;\n let value;\n let rules;\n let nonVendorSpecificName;\n let hasIdentifier;\n let hasExpression;\n let hasUnknown;\n let hasBlock = true;\n let isRooted = true;\n let isKeywordList = false;\n\n if (parserInput.currentChar() !== '@') { return; }\n\n value = this['import']() || this.plugin() || this.nestableAtRule();\n if (value) {\n return value;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^@[a-z-]+/);\n\n if (!name) { return; }\n\n nonVendorSpecificName = name;\n if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {\n nonVendorSpecificName = `@${name.slice(name.indexOf('-', 2) + 1)}`;\n }\n\n switch (nonVendorSpecificName) {\n case '@charset':\n hasIdentifier = true;\n hasBlock = false;\n break;\n case '@namespace':\n hasExpression = true;\n hasBlock = false;\n break;\n case '@keyframes':\n case '@counter-style':\n hasIdentifier = true;\n break;\n case '@document':\n case '@supports':\n hasUnknown = true;\n isRooted = false;\n break;\n case '@starting-style':\n isRooted = false;\n break;\n case '@layer':\n isRooted = false;\n break;\n default:\n hasUnknown = true;\n break;\n }\n\n parserInput.commentStore.length = 0;\n\n if (hasIdentifier) {\n value = this.entity();\n if (!value) {\n error(`expected ${name} identifier`);\n }\n } else if (hasExpression) {\n value = this.expression();\n if (!value) {\n error(`expected ${name} expression`);\n }\n } else if (hasUnknown) {\n const unknownPackage = this.atruleUnknown(value, name, hasBlock);\n value = unknownPackage[0];\n hasBlock = unknownPackage[1];\n }\n \n if (hasBlock) {\n let blockPackage = this.atruleBlock(rules, value, isRooted, isKeywordList);\n rules = blockPackage[0];\n value = blockPackage[1];\n isKeywordList = blockPackage[2];\n\n if (!rules && !hasUnknown) {\n parserInput.restore();\n name = parserInput.$re(/^@[a-z-]+/);\n const unknownPackage = this.atruleUnknown(value, name, hasBlock);\n value = unknownPackage[0];\n hasBlock = unknownPackage[1];\n if (hasBlock) {\n blockPackage = this.atruleBlock(rules, value, isRooted, isKeywordList);\n rules = blockPackage[0];\n value = blockPackage[1];\n isKeywordList = blockPackage[2];\n }\n }\n }\n\n if (rules || isKeywordList || (!hasBlock && value && parserInput.$char(';'))) {\n parserInput.forget();\n return new(tree.AtRule)(name, value, rules, index + currentIndex, fileInfo,\n context.dumpLineNumbers ? getDebugInfo(index) : null,\n isRooted\n );\n }\n\n parserInput.restore('at-rule options not recognised');\n },\n\n //\n // A Value is a comma-delimited list of Expressions\n //\n // font-family: Baskerville, Georgia, serif;\n //\n // In a Rule, a Value represents everything after the `:`,\n // and before the `;`.\n //\n value: function () {\n let e;\n const expressions = [];\n const index = parserInput.i;\n\n do {\n e = this.expression();\n if (e) {\n expressions.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n } while (e);\n\n if (expressions.length > 0) {\n return new(tree.Value)(expressions, index + currentIndex);\n }\n },\n important: function () {\n if (parserInput.currentChar() === '!') {\n return parserInput.$re(/^! *important/);\n }\n },\n sub: function () {\n let a;\n let e;\n\n parserInput.save();\n if (parserInput.$char('(')) {\n a = this.addition();\n if (a && parserInput.$char(')')) {\n parserInput.forget();\n e = new(tree.Expression)([a]);\n e.parens = true;\n return e;\n }\n parserInput.restore('Expected \\')\\'');\n return;\n }\n parserInput.restore();\n },\n colorOperand: function () {\n parserInput.save();\n \n // hsl or rgb or lch operand\n const match = parserInput.$re(/^[lchrgbs]\\s+/);\n if (match) {\n return new tree.Keyword(match[0]);\n }\n\n parserInput.restore();\n },\n multiplication: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.operand();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n if (parserInput.peek(/^\\/[*/]/)) {\n break;\n }\n\n parserInput.save();\n\n op = parserInput.$char('/') || parserInput.$char('*');\n if (!op) {\n let index = parserInput.i;\n op = parserInput.$str('./');\n if (op) {\n warn('./ operator is deprecated', index, 'DEPRECATED');\n }\n }\n\n if (!op) { parserInput.forget(); break; }\n\n a = this.operand();\n\n if (!a) { parserInput.restore(); break; }\n parserInput.forget();\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n addition: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.multiplication();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n op = parserInput.$re(/^[-+]\\s+/) || (!isSpaced && (parserInput.$char('+') || parserInput.$char('-')));\n if (!op) {\n break;\n }\n a = this.multiplication();\n if (!a) {\n break;\n }\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n conditions: function () {\n let a;\n let b;\n const index = parserInput.i;\n let condition;\n\n a = this.condition(true);\n if (a) {\n while (true) {\n if (!parserInput.peek(/^,\\s*(not\\s*)?\\(/) || !parserInput.$char(',')) {\n break;\n }\n b = this.condition(true);\n if (!b) {\n break;\n }\n condition = new(tree.Condition)('or', condition || a, b, index + currentIndex);\n }\n return condition || a;\n }\n },\n condition: function (needsParens) {\n let result;\n let logical;\n let next;\n function or() {\n return parserInput.$str('or');\n }\n\n result = this.conditionAnd(needsParens);\n if (!result) {\n return ;\n }\n logical = or();\n if (logical) {\n next = this.condition(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n conditionAnd: function (needsParens) {\n let result;\n let logical;\n let next;\n const self = this;\n function insideCondition() {\n const cond = self.negatedCondition(needsParens) || self.parenthesisCondition(needsParens);\n if (!cond && !needsParens) {\n return self.atomicCondition(needsParens);\n }\n return cond;\n }\n function and() {\n return parserInput.$str('and');\n }\n\n result = insideCondition();\n if (!result) {\n return ;\n }\n logical = and();\n if (logical) {\n next = this.conditionAnd(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n negatedCondition: function (needsParens) {\n if (parserInput.$str('not')) {\n const result = this.parenthesisCondition(needsParens);\n if (result) {\n result.negate = !result.negate;\n }\n return result;\n }\n },\n parenthesisCondition: function (needsParens) {\n function tryConditionFollowedByParenthesis(me) {\n let body;\n parserInput.save();\n body = me.condition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return ;\n }\n parserInput.forget();\n return body;\n }\n\n let body;\n parserInput.save();\n if (!parserInput.$str('(')) {\n parserInput.restore();\n return ;\n }\n body = tryConditionFollowedByParenthesis(this);\n if (body) {\n parserInput.forget();\n return body;\n }\n\n body = this.atomicCondition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore(`expected ')' got '${parserInput.currentChar()}'`);\n return ;\n }\n parserInput.forget();\n return body;\n },\n atomicCondition: function (needsParens, preparsedCond) {\n const entities = this.entities;\n const index = parserInput.i;\n let a;\n let b;\n let c;\n let op;\n\n const cond = (function() {\n return this.addition() || entities.keyword() || entities.quoted() || entities.mixinLookup();\n }).bind(this)\n\n if (preparsedCond) {\n a = preparsedCond;\n } else {\n a = cond();\n }\n\n if (a) {\n if (parserInput.$char('>')) {\n if (parserInput.$char('=')) {\n op = '>=';\n } else {\n op = '>';\n }\n } else\n if (parserInput.$char('<')) {\n if (parserInput.$char('=')) {\n op = '<=';\n } else {\n op = '<';\n }\n } else\n if (parserInput.$char('=')) {\n if (parserInput.$char('>')) {\n op = '=>';\n } else if (parserInput.$char('<')) {\n op = '=<';\n } else {\n op = '=';\n }\n }\n if (op) {\n b = cond();\n if (b) {\n c = new(tree.Condition)(op, a, b, index + currentIndex, false);\n } else {\n error('expected expression');\n }\n } else if (!preparsedCond) {\n c = new(tree.Condition)('=', a, new(tree.Keyword)('true'), index + currentIndex, false);\n }\n return c;\n }\n },\n\n //\n // An operand is anything that can be part of an operation,\n // such as a Color, or a Variable\n //\n operand: function () {\n const entities = this.entities;\n let negate;\n\n if (parserInput.peek(/^-[@$(]/)) {\n negate = parserInput.$char('-');\n }\n\n let o = this.sub() || entities.dimension() ||\n entities.color() || entities.variable() ||\n entities.property() || entities.call() ||\n entities.quoted(true) || entities.colorKeyword() ||\n this.colorOperand() || entities.mixinLookup();\n\n if (negate) {\n o.parensInOp = true;\n o = new(tree.Negative)(o);\n }\n\n return o;\n },\n\n //\n // Expressions either represent mathematical operations,\n // or white-space delimited Entities.\n //\n // 1px solid black\n // @var * 2\n //\n expression: function () {\n const entities = [];\n let e;\n let delim;\n const index = parserInput.i;\n\n do {\n e = this.comment();\n if (e && !e.isLineComment) {\n entities.push(e);\n continue;\n }\n e = this.addition() || this.entity();\n\n if (e instanceof tree.Comment) {\n e = null;\n }\n\n if (e) {\n entities.push(e);\n // operations do not allow keyword \"/\" dimension (e.g. small/20px) so we support that here\n if (!parserInput.peek(/^\\/[/*]/)) {\n delim = parserInput.$char('/');\n if (delim) {\n entities.push(new(tree.Anonymous)(delim, index + currentIndex));\n }\n }\n }\n } while (e);\n if (entities.length > 0) {\n return new(tree.Expression)(entities);\n }\n },\n property: function () {\n const name = parserInput.$re(/^(\\*?-?[_a-zA-Z0-9-]+)\\s*:/);\n if (name) {\n return name[1];\n }\n },\n ruleProperty: function () {\n let name = [];\n const index = [];\n let s;\n let k;\n\n parserInput.save();\n\n const simpleProperty = parserInput.$re(/^([_a-zA-Z0-9-]+)\\s*:/);\n if (simpleProperty) {\n name = [new(tree.Keyword)(simpleProperty[1])];\n parserInput.forget();\n return name;\n }\n\n function match(re) {\n const i = parserInput.i;\n const chunk = parserInput.$re(re);\n if (chunk) {\n index.push(i);\n return name.push(chunk[1]);\n }\n }\n\n match(/^(\\*?)/);\n while (true) {\n if (!match(/^((?:[\\w-]+)|(?:[@$]\\{[\\w-]+\\}))/)) {\n break;\n }\n }\n\n if ((name.length > 1) && match(/^((?:\\+_|\\+)?)\\s*:/)) {\n parserInput.forget();\n\n // at last, we have the complete match now. move forward,\n // convert name particles to tree objects and return:\n if (name[0] === '') {\n name.shift();\n index.shift();\n }\n for (k = 0; k < name.length; k++) {\n s = name[k];\n name[k] = (s.charAt(0) !== '@' && s.charAt(0) !== '$') ?\n new(tree.Keyword)(s) :\n (s.charAt(0) === '@' ?\n new(tree.Variable)(`@${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo) :\n new(tree.Property)(`$${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo));\n }\n return name;\n }\n parserInput.restore();\n }\n }\n };\n};\nParser.serializeVars = vars => {\n let s = '';\n\n for (const name in vars) {\n if (Object.hasOwnProperty.call(vars, name)) {\n const value = vars[name];\n s += `${((name[0] === '@') ? '' : '@') + name}: ${value}${(String(value).slice(-1) === ';') ? '' : ';'}`;\n }\n }\n\n return s;\n};\n\nexport default Parser;",
+ "export default () => {\n let // Less input string\n input;\n\n let // current chunk\n j;\n\n const // holds state for backtracking\n saveStack = [];\n\n let // furthest index the parser has gone to\n furthest;\n\n let // if this is furthest we got to, this is the probably cause\n furthestPossibleErrorMessage;\n\n let // chunkified input\n chunks;\n\n let // current chunk\n current;\n\n let // index of current chunk, in `input`\n currentPos;\n\n const parserInput = {};\n const CHARCODE_SPACE = 32;\n const CHARCODE_TAB = 9;\n const CHARCODE_LF = 10;\n const CHARCODE_CR = 13;\n const CHARCODE_PLUS = 43;\n const CHARCODE_COMMA = 44;\n const CHARCODE_FORWARD_SLASH = 47;\n const CHARCODE_9 = 57;\n\n function skipWhitespace(length) {\n const oldi = parserInput.i;\n const oldj = j;\n const curr = parserInput.i - currentPos;\n const endIndex = parserInput.i + current.length - curr;\n const mem = (parserInput.i += length);\n const inp = input;\n let c;\n let nextChar;\n let comment;\n\n for (; parserInput.i < endIndex; parserInput.i++) {\n c = inp.charCodeAt(parserInput.i);\n\n if (parserInput.autoCommentAbsorb && c === CHARCODE_FORWARD_SLASH) {\n nextChar = inp.charAt(parserInput.i + 1);\n if (nextChar === '/') {\n comment = {index: parserInput.i, isLineComment: true};\n let nextNewLine = inp.indexOf('\\n', parserInput.i + 2);\n if (nextNewLine < 0) {\n nextNewLine = endIndex;\n }\n parserInput.i = nextNewLine;\n comment.text = inp.substr(comment.index, parserInput.i - comment.index);\n parserInput.commentStore.push(comment);\n continue;\n } else if (nextChar === '*') {\n const nextStarSlash = inp.indexOf('*/', parserInput.i + 2);\n if (nextStarSlash >= 0) {\n comment = {\n index: parserInput.i,\n text: inp.substr(parserInput.i, nextStarSlash + 2 - parserInput.i),\n isLineComment: false\n };\n parserInput.i += comment.text.length - 1;\n parserInput.commentStore.push(comment);\n continue;\n }\n }\n break;\n }\n\n if ((c !== CHARCODE_SPACE) && (c !== CHARCODE_LF) && (c !== CHARCODE_TAB) && (c !== CHARCODE_CR)) {\n break;\n }\n }\n\n current = current.slice(length + parserInput.i - mem + curr);\n currentPos = parserInput.i;\n\n if (!current.length) {\n if (j < chunks.length - 1) {\n current = chunks[++j];\n skipWhitespace(0); // skip space at the beginning of a chunk\n return true; // things changed\n }\n parserInput.finished = true;\n }\n\n return oldi !== parserInput.i || oldj !== j;\n }\n\n parserInput.save = () => {\n currentPos = parserInput.i;\n saveStack.push( { current, i: parserInput.i, j });\n };\n parserInput.restore = possibleErrorMessage => {\n\n if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) {\n furthest = parserInput.i;\n furthestPossibleErrorMessage = possibleErrorMessage;\n }\n const state = saveStack.pop();\n current = state.current;\n currentPos = parserInput.i = state.i;\n j = state.j;\n };\n parserInput.forget = () => {\n saveStack.pop();\n };\n parserInput.isWhitespace = offset => {\n const pos = parserInput.i + (offset || 0);\n const code = input.charCodeAt(pos);\n return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF);\n };\n\n // Specialization of $(tok)\n parserInput.$re = tok => {\n if (parserInput.i > currentPos) {\n current = current.slice(parserInput.i - currentPos);\n currentPos = parserInput.i;\n }\n\n const m = tok.exec(current);\n if (!m) {\n return null;\n }\n\n skipWhitespace(m[0].length);\n if (typeof m === 'string') {\n return m;\n }\n\n return m.length === 1 ? m[0] : m;\n };\n\n parserInput.$char = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n skipWhitespace(1);\n return tok;\n };\n\n parserInput.$peekChar = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n return tok;\n };\n\n parserInput.$str = tok => {\n const tokLength = tok.length;\n\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tokLength; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return null;\n }\n }\n\n skipWhitespace(tokLength);\n return tok;\n };\n\n parserInput.$quoted = loc => {\n const pos = loc || parserInput.i;\n const startChar = input.charAt(pos);\n\n if (startChar !== '\\'' && startChar !== '\"') {\n return;\n }\n const length = input.length;\n const currentPosition = pos;\n\n for (let i = 1; i + currentPosition < length; i++) {\n const nextChar = input.charAt(i + currentPosition);\n switch (nextChar) {\n case '\\\\':\n i++;\n continue;\n case '\\r':\n case '\\n':\n break;\n case startChar: {\n const str = input.substr(currentPosition, i + 1);\n if (!loc && loc !== 0) {\n skipWhitespace(i + 1);\n return str\n }\n return [startChar, str];\n }\n default:\n }\n }\n return null;\n };\n\n /**\n * Permissive parsing. Ignores everything except matching {} [] () and quotes\n * until matching token (outside of blocks)\n */\n parserInput.$parseUntil = tok => {\n let quote = '';\n let returnVal = null;\n let inComment = false;\n let blockDepth = 0;\n const blockStack = [];\n const parseGroups = [];\n const length = input.length;\n const startPos = parserInput.i;\n let lastPos = parserInput.i;\n let i = parserInput.i;\n let loop = true;\n let testChar;\n\n if (typeof tok === 'string') {\n testChar = char => char === tok\n } else {\n testChar = char => tok.test(char)\n }\n\n do {\n let nextChar = input.charAt(i);\n if (blockDepth === 0 && testChar(nextChar)) {\n returnVal = input.substr(lastPos, i - lastPos);\n if (returnVal) {\n parseGroups.push(returnVal);\n }\n else {\n parseGroups.push(' ');\n }\n returnVal = parseGroups;\n skipWhitespace(i - startPos);\n loop = false\n } else {\n if (inComment) {\n if (nextChar === '*' && \n input.charAt(i + 1) === '/') {\n i++;\n blockDepth--;\n inComment = false;\n }\n i++;\n continue;\n }\n switch (nextChar) {\n case '\\\\':\n i++;\n nextChar = input.charAt(i);\n parseGroups.push(input.substr(lastPos, i - lastPos + 1));\n lastPos = i + 1;\n break;\n case '/':\n if (input.charAt(i + 1) === '*') {\n i++;\n inComment = true;\n blockDepth++;\n }\n break;\n case '\\'':\n case '\"':\n quote = parserInput.$quoted(i);\n if (quote) {\n parseGroups.push(input.substr(lastPos, i - lastPos), quote);\n i += quote[1].length - 1;\n lastPos = i + 1;\n }\n else {\n skipWhitespace(i - startPos);\n returnVal = nextChar;\n loop = false;\n }\n break;\n case '{':\n blockStack.push('}');\n blockDepth++;\n break;\n case '(':\n blockStack.push(')');\n blockDepth++;\n break;\n case '[':\n blockStack.push(']');\n blockDepth++;\n break;\n case '}':\n case ')':\n case ']': {\n const expected = blockStack.pop();\n if (nextChar === expected) {\n blockDepth--;\n } else {\n // move the parser to the error and return expected\n skipWhitespace(i - startPos);\n returnVal = expected;\n loop = false;\n }\n }\n }\n i++;\n if (i > length) {\n loop = false;\n }\n }\n } while (loop);\n\n return returnVal ? returnVal : null;\n }\n\n parserInput.autoCommentAbsorb = true;\n parserInput.commentStore = [];\n parserInput.finished = false;\n\n // Same as $(), but don't change the state of the parser,\n // just return the match.\n parserInput.peek = tok => {\n if (typeof tok === 'string') {\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tok.length; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return false;\n }\n }\n return true;\n } else {\n return tok.test(current);\n }\n };\n\n // Specialization of peek()\n // TODO remove or change some currentChar calls to peekChar\n parserInput.peekChar = tok => input.charAt(parserInput.i) === tok;\n\n parserInput.currentChar = () => input.charAt(parserInput.i);\n\n parserInput.prevChar = () => input.charAt(parserInput.i - 1);\n\n parserInput.getInput = () => input;\n\n parserInput.peekNotNumeric = () => {\n const c = input.charCodeAt(parserInput.i);\n // Is the first char of the dimension 0-9, '.', '+' or '-'\n return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA;\n };\n\n parserInput.start = (str) => {\n input = str;\n parserInput.i = j = currentPos = furthest = 0;\n\n chunks = [str];\n current = chunks[0];\n\n skipWhitespace(0);\n };\n\n parserInput.end = () => {\n let message;\n const isFinished = parserInput.i >= input.length;\n\n if (parserInput.i < furthest) {\n message = furthestPossibleErrorMessage;\n parserInput.i = furthest;\n }\n return {\n isFinished,\n furthest: parserInput.i,\n furthestPossibleErrorMessage: message,\n furthestReachedEnd: parserInput.i >= input.length - 1,\n furthestChar: input[parserInput.i]\n };\n };\n\n return parserInput;\n};\n",
+ "import Node from './node';\nimport Element from './element';\nimport LessError from '../less-error';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Selector = function(elements, extendList, condition, index, currentFileInfo, visibilityInfo) {\n this.extendList = extendList;\n this.condition = condition;\n this.evaldCondition = !condition;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.elements = this.getElements(elements);\n this.mixinElements_ = undefined;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.elements, this);\n};\n\nSelector.prototype = Object.assign(new Node(), {\n type: 'Selector',\n\n accept(visitor) {\n if (this.elements) {\n this.elements = visitor.visitArray(this.elements);\n }\n if (this.extendList) {\n this.extendList = visitor.visitArray(this.extendList);\n }\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n createDerived(elements, extendList, evaldCondition) {\n elements = this.getElements(elements);\n const newSelector = new Selector(elements, extendList || this.extendList,\n null, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n newSelector.evaldCondition = (!utils.isNullOrUndefined(evaldCondition)) ? evaldCondition : this.evaldCondition;\n newSelector.mediaEmpty = this.mediaEmpty;\n return newSelector;\n },\n\n getElements(els) {\n if (!els) {\n return [new Element('', '&', false, this._index, this._fileInfo)];\n }\n if (typeof els === 'string') {\n new Parser(this.parse.context, this.parse.importManager, this._fileInfo, this._index).parseNode(\n els,\n ['selector'],\n function(err, result) {\n if (err) {\n throw new LessError({\n index: err.index,\n message: err.message\n }, this.parse.imports, this._fileInfo.filename);\n }\n els = result[0].elements;\n });\n }\n return els;\n },\n\n createEmptySelectors() {\n const el = new Element('', '&', false, this._index, this._fileInfo), sels = [new Selector([el], null, null, this._index, this._fileInfo)];\n sels[0].mediaEmpty = true;\n return sels;\n },\n\n match(other) {\n const elements = this.elements;\n const len = elements.length;\n let olen;\n let i;\n\n other = other.mixinElements();\n olen = other.length;\n if (olen === 0 || len < olen) {\n return 0;\n } else {\n for (i = 0; i < olen; i++) {\n if (elements[i].value !== other[i]) {\n return 0;\n }\n }\n }\n\n return olen; // return number of matched elements\n },\n\n mixinElements() {\n if (this.mixinElements_) {\n return this.mixinElements_;\n }\n\n let elements = this.elements.map( function(v) {\n return v.combinator.value + (v.value.value || v.value);\n }).join('').match(/[,*.\\w-]([\\w-]|(\\\\.))*/g);\n\n if (elements) {\n if (elements[0] === '&') {\n elements.shift();\n }\n } else {\n elements = [];\n }\n\n return (this.mixinElements_ = elements);\n },\n\n isJustParentSelector() {\n return !this.mediaEmpty &&\n this.elements.length === 1 &&\n this.elements[0].value === '&' &&\n (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === '');\n },\n\n eval(context) {\n const evaldCondition = this.condition && this.condition.eval(context);\n let elements = this.elements;\n let extendList = this.extendList;\n\n elements = elements && elements.map(function (e) { return e.eval(context); });\n extendList = extendList && extendList.map(function(extend) { return extend.eval(context); });\n\n return this.createDerived(elements, extendList, evaldCondition);\n },\n\n genCSS(context, output) {\n let i, element;\n if ((!context || !context.firstSelector) && this.elements[0].combinator.value === '') {\n output.add(' ', this.fileInfo(), this.getIndex());\n }\n for (i = 0; i < this.elements.length; i++) {\n element = this.elements[i];\n element.genCSS(context, output);\n }\n },\n\n getIsOutput() {\n return this.evaldCondition;\n }\n});\n\nexport default Selector;\n",
+ "import Node from './node';\n\nconst Value = function(value) {\n if (!value) {\n throw new Error('Value requires an array argument');\n }\n if (!Array.isArray(value)) {\n this.value = [ value ];\n }\n else {\n this.value = value;\n }\n};\n\nValue.prototype = Object.assign(new Node(), {\n type: 'Value',\n\n accept(visitor) {\n if (this.value) {\n this.value = visitor.visitArray(this.value);\n }\n },\n\n eval(context) {\n if (this.value.length === 1) {\n return this.value[0].eval(context);\n } else {\n return new Value(this.value.map(function (v) {\n return v.eval(context);\n }));\n }\n },\n\n genCSS(context, output) {\n let i;\n for (i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (i + 1 < this.value.length) {\n output.add((context && context.compress) ? ',' : ', ');\n }\n }\n }\n});\n\nexport default Value;\n",
+ "import Node from './node';\n\nconst Keyword = function(value) {\n this.value = value;\n};\n\nKeyword.prototype = Object.assign(new Node(), {\n type: 'Keyword',\n\n genCSS(context, output) {\n if (this.value === '%') { throw { type: 'Syntax', message: 'Invalid % without number' }; }\n output.add(this.value);\n }\n});\n\nKeyword.True = new Keyword('true');\nKeyword.False = new Keyword('false');\n\nexport default Keyword;\n",
+ "import Node from './node';\nimport Value from './value';\nimport Keyword from './keyword';\nimport Anonymous from './anonymous';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\nfunction evalName(context, name) {\n let value = '';\n let i;\n const n = name.length;\n const output = {add: function (s) {value += s;}};\n for (i = 0; i < n; i++) {\n name[i].eval(context).genCSS(context, output);\n }\n return value;\n}\n\nconst Declaration = function(name, value, important, merge, index, currentFileInfo, inline, variable) {\n this.name = name;\n this.value = (value instanceof Node) ? value : new Value([value ? new Anonymous(value) : null]);\n this.important = important ? ` ${important.trim()}` : '';\n this.merge = merge;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.inline = inline || false;\n this.variable = (variable !== undefined) ? variable\n : (name.charAt && (name.charAt(0) === '@'));\n this.allowRoot = true;\n this.setParent(this.value, this);\n};\n\nDeclaration.prototype = Object.assign(new Node(), {\n type: 'Declaration',\n\n genCSS(context, output) {\n output.add(this.name + (context.compress ? ':' : ': '), this.fileInfo(), this.getIndex());\n try {\n this.value.genCSS(context, output);\n }\n catch (e) {\n e.index = this._index;\n e.filename = this._fileInfo.filename;\n throw e;\n }\n output.add(this.important + ((this.inline || (context.lastRule && context.compress)) ? '' : ';'), this._fileInfo, this._index);\n },\n\n eval(context) {\n let mathBypass = false, prevMath, name = this.name, evaldValue, variable = this.variable;\n if (typeof name !== 'string') {\n // expand 'primitive' name directly to get\n // things faster (~10% for benchmark.less):\n name = (name.length === 1) && (name[0] instanceof Keyword) ?\n name[0].value : evalName(context, name);\n variable = false; // never treat expanded interpolation as new variable name\n }\n\n // @todo remove when parens-division is default\n if (name === 'font' && context.math === MATH.ALWAYS) {\n mathBypass = true;\n prevMath = context.math;\n context.math = MATH.PARENS_DIVISION;\n }\n try {\n context.importantScope.push({});\n evaldValue = this.value.eval(context);\n\n if (!this.variable && evaldValue.type === 'DetachedRuleset') {\n throw { message: 'Rulesets cannot be evaluated on a property.',\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n let important = this.important;\n const importantResult = context.importantScope.pop();\n if (!important && importantResult.important) {\n important = importantResult.important;\n }\n\n return new Declaration(name,\n evaldValue,\n important,\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline,\n variable);\n }\n catch (e) {\n if (typeof e.index !== 'number') {\n e.index = this.getIndex();\n e.filename = this.fileInfo().filename;\n }\n throw e;\n }\n finally {\n if (mathBypass) {\n context.math = prevMath;\n }\n }\n },\n\n makeImportant() {\n return new Declaration(this.name,\n this.value,\n '!important',\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline);\n }\n});\n\nexport default Declaration;",
+ "/**\n * @deprecated The dumpLineNumbers option is deprecated. Use sourcemaps instead.\n * This will be removed in a future version.\n * \n * @param {Object} ctx - Context object with debugInfo\n * @returns {string} Debug info as CSS comment\n */\nfunction asComment(ctx) {\n return `/* line ${ctx.debugInfo.lineNumber}, ${ctx.debugInfo.fileName} */\\n`;\n}\n\n/**\n * @deprecated The dumpLineNumbers option is deprecated. Use sourcemaps instead.\n * This function generates Sass-compatible debug info using @media -sass-debug-info syntax.\n * This format had short-lived usage and is no longer recommended.\n * This will be removed in a future version.\n * \n * @param {Object} ctx - Context object with debugInfo\n * @returns {string} Sass-compatible debug info as @media query\n */\nfunction asMediaQuery(ctx) {\n let filenameWithProtocol = ctx.debugInfo.fileName;\n if (!/^[a-z]+:\\/\\//i.test(filenameWithProtocol)) {\n filenameWithProtocol = `file://${filenameWithProtocol}`;\n }\n return `@media -sass-debug-info{filename{font-family:${filenameWithProtocol.replace(/([.:/\\\\])/g, function (a) {\n if (a == '\\\\') {\n a = '/';\n }\n return `\\\\${a}`;\n })}}line{font-family:\\\\00003${ctx.debugInfo.lineNumber}}}\\n`;\n}\n\n/**\n * Generates debug information (line numbers) for CSS output.\n * \n * @param {Object} context - Context object with dumpLineNumbers option\n * @param {Object} ctx - Context object with debugInfo\n * @param {string} [lineSeparator] - Separator between comment and media query (for 'all' mode)\n * @returns {string} Debug info string\n * \n * @deprecated The dumpLineNumbers option is deprecated. Use sourcemaps instead.\n * All modes ('comments', 'mediaquery', 'all') are deprecated and will be removed in a future version.\n * The 'mediaquery' and 'all' modes generate Sass-compatible @media -sass-debug-info output\n * which had short-lived usage and is no longer recommended.\n */\nfunction debugInfo(context, ctx, lineSeparator) {\n let result = '';\n if (context.dumpLineNumbers && !context.compress) {\n switch (context.dumpLineNumbers) {\n case 'comments':\n result = asComment(ctx);\n break;\n case 'mediaquery':\n result = asMediaQuery(ctx);\n break;\n case 'all':\n result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);\n break;\n }\n }\n return result;\n}\n\nexport default debugInfo;\n\n",
+ "import Node from './node';\nimport getDebugInfo from './debug-info';\n\nconst Comment = function(value, isLineComment, index, currentFileInfo) {\n this.value = value;\n this.isLineComment = isLineComment;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n}\n\nComment.prototype = Object.assign(new Node(), {\n type: 'Comment',\n\n genCSS(context, output) {\n if (this.debugInfo) {\n output.add(getDebugInfo(context, this), this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n },\n\n isSilent(context) {\n const isCompressed = context.compress && this.value[2] !== '!';\n return this.isLineComment || isCompressed;\n }\n});\n\nexport default Comment;\n",
+ "import Keyword from '../tree/keyword';\nimport * as utils from '../utils';\n\nconst defaultFunc = {\n eval: function () {\n const v = this.value_;\n const e = this.error_;\n if (e) {\n throw e;\n }\n if (!utils.isNullOrUndefined(v)) {\n return v ? Keyword.True : Keyword.False;\n }\n },\n value: function (v) {\n this.value_ = v;\n },\n error: function (e) {\n this.error_ = e;\n },\n reset: function () {\n this.value_ = this.error_ = null;\n }\n};\n\nexport default defaultFunc;\n",
+ "import Node from './node';\nimport Declaration from './declaration';\nimport Keyword from './keyword';\nimport Comment from './comment';\nimport Paren from './paren';\nimport Selector from './selector';\nimport Element from './element';\nimport Anonymous from './anonymous';\nimport contexts from '../contexts';\nimport globalFunctionRegistry from '../functions/function-registry';\nimport defaultFunc from '../functions/default';\nimport getDebugInfo from './debug-info';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Ruleset = function(selectors, rules, strictImports, visibilityInfo) {\n this.selectors = selectors;\n this.rules = rules;\n this._lookups = {};\n this._variables = null;\n this._properties = null;\n this.strictImports = strictImports;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n this.setParent(this.selectors, this);\n this.setParent(this.rules, this);\n}\n\nRuleset.prototype = Object.assign(new Node(), {\n type: 'Ruleset',\n isRuleset: true,\n\n isRulesetLike() { return true; },\n\n accept(visitor) {\n if (this.paths) {\n this.paths = visitor.visitArray(this.paths, true);\n } else if (this.selectors) {\n this.selectors = visitor.visitArray(this.selectors);\n }\n if (this.rules && this.rules.length) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n eval(context) {\n let selectors;\n let selCnt;\n let selector;\n let i;\n let hasVariable;\n let hasOnePassingSelector = false;\n\n if (this.selectors && (selCnt = this.selectors.length)) {\n selectors = new Array(selCnt);\n defaultFunc.error({\n type: 'Syntax',\n message: 'it is currently only allowed in parametric mixin guards,'\n });\n\n for (i = 0; i < selCnt; i++) {\n selector = this.selectors[i].eval(context);\n for (let j = 0; j < selector.elements.length; j++) {\n if (selector.elements[j].isVariable) {\n hasVariable = true;\n break;\n }\n }\n selectors[i] = selector;\n if (selector.evaldCondition) {\n hasOnePassingSelector = true;\n }\n }\n\n if (hasVariable) {\n const toParseSelectors = new Array(selCnt);\n for (i = 0; i < selCnt; i++) {\n selector = selectors[i];\n toParseSelectors[i] = selector.toCSS(context);\n }\n const startingIndex = selectors[0].getIndex();\n const selectorFileInfo = selectors[0].fileInfo();\n new Parser(context, this.parse.importManager, selectorFileInfo, startingIndex).parseNode(\n toParseSelectors.join(','),\n ['selectors'],\n function(err, result) {\n if (result) {\n selectors = utils.flattenArray(result);\n }\n });\n }\n\n defaultFunc.reset();\n } else {\n hasOnePassingSelector = true;\n }\n\n let rules = this.rules ? utils.copyArray(this.rules) : null;\n const ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo());\n let rule;\n let subRule;\n\n ruleset.originalRuleset = this;\n ruleset.root = this.root;\n ruleset.firstRoot = this.firstRoot;\n ruleset.allowImports = this.allowImports;\n\n if (this.debugInfo) {\n ruleset.debugInfo = this.debugInfo;\n }\n\n if (!hasOnePassingSelector) {\n rules.length = 0;\n }\n\n // inherit a function registry from the frames stack when possible;\n // otherwise from the global registry\n ruleset.functionRegistry = (function (frames) {\n let i = 0;\n const n = frames.length;\n let found;\n for ( ; i !== n ; ++i ) {\n found = frames[ i ].functionRegistry;\n if ( found ) { return found; }\n }\n return globalFunctionRegistry;\n }(context.frames)).inherit();\n\n // push the current ruleset to the frames stack\n const ctxFrames = context.frames;\n ctxFrames.unshift(ruleset);\n\n // currrent selectors\n let ctxSelectors = context.selectors;\n if (!ctxSelectors) {\n context.selectors = ctxSelectors = [];\n }\n ctxSelectors.unshift(this.selectors);\n\n // Evaluate imports\n if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {\n ruleset.evalImports(context);\n }\n\n // Store the frames around mixin definitions,\n // so they can be evaluated like closures when the time comes.\n const rsRules = ruleset.rules;\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.evalFirst) {\n rsRules[i] = rule.eval(context);\n }\n }\n\n const mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0;\n\n // Evaluate mixin calls.\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.type === 'MixinCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope if the variable is\n // already there. consider returning false here\n // but we need a way to \"return\" variable from mixins\n return !(ruleset.variable(r.name));\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n } else if (rule.type === 'VariableCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).rules.filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope at all\n return false;\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n if (!rule.evalFirst) {\n rsRules[i] = rule = rule.eval ? rule.eval(context) : rule;\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n // for rulesets, check if it is a css guard and can be removed\n if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) {\n // check if it can be folded in (e.g. & where)\n if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) {\n rsRules.splice(i--, 1);\n\n for (let j = 0; (subRule = rule.rules[j]); j++) {\n if (subRule instanceof Node) {\n subRule.copyVisibilityInfo(rule.visibilityInfo());\n if (!(subRule instanceof Declaration) || !subRule.variable) {\n rsRules.splice(++i, 0, subRule);\n }\n }\n }\n }\n }\n }\n\n // Pop the stack\n ctxFrames.shift();\n ctxSelectors.shift();\n\n if (context.mediaBlocks) {\n for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) {\n context.mediaBlocks[i].bubbleSelectors(selectors);\n }\n }\n\n return ruleset;\n },\n\n evalImports(context) {\n const rules = this.rules;\n let i;\n let importRules;\n if (!rules) { return; }\n\n for (i = 0; i < rules.length; i++) {\n if (rules[i].type === 'Import') {\n importRules = rules[i].eval(context);\n if (importRules && (importRules.length || importRules.length === 0)) {\n rules.splice.apply(rules, [i, 1].concat(importRules));\n i += importRules.length - 1;\n } else {\n rules.splice(i, 1, importRules);\n }\n this.resetCache();\n }\n }\n },\n\n makeImportant() {\n const result = new Ruleset(this.selectors, this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant();\n } else {\n return r;\n }\n }), this.strictImports, this.visibilityInfo());\n\n return result;\n },\n\n matchArgs(args) {\n return !args || args.length === 0;\n },\n\n // lets you call a css selector with a guard\n matchCondition(args, context) {\n const lastSelector = this.selectors[this.selectors.length - 1];\n if (!lastSelector.evaldCondition) {\n return false;\n }\n if (lastSelector.condition &&\n !lastSelector.condition.eval(\n new contexts.Eval(context,\n context.frames))) {\n return false;\n }\n return true;\n },\n\n resetCache() {\n this._rulesets = null;\n this._variables = null;\n this._properties = null;\n this._lookups = {};\n },\n\n variables() {\n if (!this._variables) {\n this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable === true) {\n hash[r.name] = r;\n }\n // when evaluating variables in an import statement, imports have not been eval'd\n // so we need to go inside import statements.\n // guard against root being a string (in the case of inlined less)\n if (r.type === 'Import' && r.root && r.root.variables) {\n const vars = r.root.variables();\n for (const name in vars) {\n // eslint-disable-next-line no-prototype-builtins\n if (vars.hasOwnProperty(name)) {\n hash[name] = r.root.variable(name);\n }\n }\n }\n return hash;\n }, {});\n }\n return this._variables;\n },\n\n properties() {\n if (!this._properties) {\n this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable !== true) {\n const name = (r.name.length === 1) && (r.name[0] instanceof Keyword) ?\n r.name[0].value : r.name;\n // Properties don't overwrite as they can merge\n if (!hash[`$${name}`]) {\n hash[`$${name}`] = [ r ];\n }\n else {\n hash[`$${name}`].push(r);\n }\n }\n return hash;\n }, {});\n }\n return this._properties;\n },\n\n variable(name) {\n const decl = this.variables()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n property(name) {\n const decl = this.properties()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n lastDeclaration() {\n for (let i = this.rules.length; i > 0; i--) {\n const decl = this.rules[i - 1];\n if (decl instanceof Declaration) {\n return this.parseValue(decl);\n }\n }\n },\n\n parseValue(toParse) {\n const self = this;\n function transformDeclaration(decl) {\n if (decl.value instanceof Anonymous && !decl.parsed) {\n if (typeof decl.value.value === 'string') {\n new Parser(this.parse.context, this.parse.importManager, decl.fileInfo(), decl.value.getIndex()).parseNode(\n decl.value.value,\n ['value', 'important'],\n function(err, result) {\n if (err) {\n decl.parsed = true;\n }\n if (result) {\n decl.value = result[0];\n decl.important = result[1] || '';\n decl.parsed = true;\n }\n });\n } else {\n decl.parsed = true;\n }\n\n return decl;\n }\n else {\n return decl;\n }\n }\n if (!Array.isArray(toParse)) {\n return transformDeclaration.call(self, toParse);\n }\n else {\n const nodes = [];\n toParse.forEach(function(n) {\n nodes.push(transformDeclaration.call(self, n));\n });\n return nodes;\n }\n },\n\n rulesets() {\n if (!this.rules) { return []; }\n\n const filtRules = [];\n const rules = this.rules;\n let i;\n let rule;\n\n for (i = 0; (rule = rules[i]); i++) {\n if (rule.isRuleset) {\n filtRules.push(rule);\n }\n }\n\n return filtRules;\n },\n\n prependRule(rule) {\n const rules = this.rules;\n if (rules) {\n rules.unshift(rule);\n } else {\n this.rules = [ rule ];\n }\n this.setParent(rule, this);\n },\n\n find(selector, self, filter) {\n self = self || this;\n const rules = [];\n let match;\n let foundMixins;\n const key = selector.toCSS();\n\n if (key in this._lookups) { return this._lookups[key]; }\n\n this.rulesets().forEach(function (rule) {\n if (rule !== self) {\n for (let j = 0; j < rule.selectors.length; j++) {\n match = selector.match(rule.selectors[j]);\n if (match) {\n if (selector.elements.length > match) {\n if (!filter || filter(rule)) {\n foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter);\n for (let i = 0; i < foundMixins.length; ++i) {\n foundMixins[i].path.push(rule);\n }\n Array.prototype.push.apply(rules, foundMixins);\n }\n } else {\n rules.push({ rule, path: []});\n }\n break;\n }\n }\n }\n });\n this._lookups[key] = rules;\n return rules;\n },\n\n genCSS(context, output) {\n let i;\n let j;\n const charsetRuleNodes = [];\n let ruleNodes = [];\n\n let // Line number debugging\n debugInfo;\n\n let rule;\n let path;\n\n context.tabLevel = (context.tabLevel || 0);\n\n if (!this.root) {\n context.tabLevel++;\n }\n\n const tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join(' ');\n const tabSetStr = context.compress ? '' : Array(context.tabLevel).join(' ');\n let sep;\n\n let charsetNodeIndex = 0;\n let importNodeIndex = 0;\n for (i = 0; (rule = this.rules[i]); i++) {\n if (rule instanceof Comment) {\n if (importNodeIndex === i) {\n importNodeIndex++;\n }\n ruleNodes.push(rule);\n } else if (rule.isCharset && rule.isCharset()) {\n ruleNodes.splice(charsetNodeIndex, 0, rule);\n charsetNodeIndex++;\n importNodeIndex++;\n } else if (rule.type === 'Import') {\n ruleNodes.splice(importNodeIndex, 0, rule);\n importNodeIndex++;\n } else {\n ruleNodes.push(rule);\n }\n }\n ruleNodes = charsetRuleNodes.concat(ruleNodes);\n\n // If this is the root node, we don't render\n // a selector, or {}.\n if (!this.root) {\n debugInfo = getDebugInfo(context, this, tabSetStr);\n\n if (debugInfo) {\n output.add(debugInfo);\n output.add(tabSetStr);\n }\n\n const paths = this.paths;\n const pathCnt = paths.length;\n let pathSubCnt;\n\n sep = context.compress ? ',' : (`,\\n${tabSetStr}`);\n\n for (i = 0; i < pathCnt; i++) {\n path = paths[i];\n if (!(pathSubCnt = path.length)) { continue; }\n if (i > 0) { output.add(sep); }\n\n context.firstSelector = true;\n path[0].genCSS(context, output);\n\n context.firstSelector = false;\n for (j = 1; j < pathSubCnt; j++) {\n path[j].genCSS(context, output);\n }\n }\n\n output.add((context.compress ? '{' : ' {\\n') + tabRuleStr);\n }\n\n // Compile rules and rulesets\n for (i = 0; (rule = ruleNodes[i]); i++) {\n\n if (i + 1 === ruleNodes.length) {\n context.lastRule = true;\n }\n\n const currentLastRule = context.lastRule;\n if (rule.isRulesetLike(rule)) {\n context.lastRule = false;\n }\n\n if (rule.genCSS) {\n rule.genCSS(context, output);\n } else if (rule.value) {\n output.add(rule.value.toString());\n }\n\n context.lastRule = currentLastRule;\n\n if (!context.lastRule && rule.isVisible()) {\n output.add(context.compress ? '' : (`\\n${tabRuleStr}`));\n } else {\n context.lastRule = false;\n }\n }\n\n if (!this.root) {\n output.add((context.compress ? '}' : `\\n${tabSetStr}}`));\n context.tabLevel--;\n }\n\n if (!output.isEmpty() && !context.compress && this.firstRoot) {\n output.add('\\n');\n }\n },\n\n joinSelectors(paths, context, selectors) {\n for (let s = 0; s < selectors.length; s++) {\n this.joinSelector(paths, context, selectors[s]);\n }\n },\n\n joinSelector(paths, context, selector) {\n\n function createParenthesis(elementsToPak, originalElement) {\n let replacementParen, j;\n if (elementsToPak.length === 0) {\n replacementParen = new Paren(elementsToPak[0]);\n } else {\n const insideParent = new Array(elementsToPak.length);\n for (j = 0; j < elementsToPak.length; j++) {\n insideParent[j] = new Element(\n null,\n elementsToPak[j],\n originalElement.isVariable,\n originalElement._index,\n originalElement._fileInfo\n );\n }\n replacementParen = new Paren(new Selector(insideParent));\n }\n return replacementParen;\n }\n\n function createSelector(containedElement, originalElement) {\n let element, selector;\n element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo);\n selector = new Selector([element]);\n return selector;\n }\n\n // joins selector path from `beginningPath` with selector path in `addPath`\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns concatenated path\n function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) {\n let newSelectorPath, lastSelector, newJoinedSelector;\n // our new selector path\n newSelectorPath = [];\n\n // construct the joined selector - if & is the first thing this will be empty,\n // if not newJoinedSelector will be the last set of elements in the selector\n if (beginningPath.length > 0) {\n newSelectorPath = utils.copyArray(beginningPath);\n lastSelector = newSelectorPath.pop();\n newJoinedSelector = originalSelector.createDerived(utils.copyArray(lastSelector.elements));\n }\n else {\n newJoinedSelector = originalSelector.createDerived([]);\n }\n\n if (addPath.length > 0) {\n // /deep/ is a CSS4 selector - (removed, so should deprecate)\n // that is valid without anything in front of it\n // so if the & does not have a combinator that is \"\" or \" \" then\n // and there is a combinator on the parent, then grab that.\n // this also allows + a { & .b { .a & { ... though not sure why you would want to do that\n let combinator = replacedElement.combinator;\n\n const parentEl = addPath[0].elements[0];\n if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) {\n combinator = parentEl.combinator;\n }\n // join the elements so far with the first part of the parent\n newJoinedSelector.elements.push(new Element(\n combinator,\n parentEl.value,\n replacedElement.isVariable,\n replacedElement._index,\n replacedElement._fileInfo\n ));\n newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1));\n }\n\n // now add the joined selector - but only if it is not empty\n if (newJoinedSelector.elements.length !== 0) {\n newSelectorPath.push(newJoinedSelector);\n }\n\n // put together the parent selectors after the join (e.g. the rest of the parent)\n if (addPath.length > 1) {\n let restOfPath = addPath.slice(1);\n restOfPath = restOfPath.map(function (selector) {\n return selector.createDerived(selector.elements, []);\n });\n newSelectorPath = newSelectorPath.concat(restOfPath);\n }\n return newSelectorPath;\n }\n\n // joins selector path from `beginningPath` with every selector path in `addPaths` array\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns array with all concatenated paths\n function addAllReplacementsIntoPath( beginningPath, addPaths, replacedElement, originalSelector, result) {\n let j;\n for (j = 0; j < beginningPath.length; j++) {\n const newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector);\n result.push(newSelectorPath);\n }\n return result;\n }\n\n function mergeElementsOnToSelectors(elements, selectors) {\n let i, sel;\n\n if (elements.length === 0) {\n return ;\n }\n if (selectors.length === 0) {\n selectors.push([ new Selector(elements) ]);\n return;\n }\n\n for (i = 0; (sel = selectors[i]); i++) {\n // if the previous thing in sel is a parent this needs to join on to it\n if (sel.length > 0) {\n sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));\n }\n else {\n sel.push(new Selector(elements));\n }\n }\n }\n\n // replace all parent selectors inside `inSelector` by content of `context` array\n // resulting selectors are returned inside `paths` array\n // returns true if `inSelector` contained at least one parent selector\n function replaceParentSelector(paths, context, inSelector) {\n // The paths are [[Selector]]\n // The first list is a list of comma separated selectors\n // The inner list is a list of inheritance separated selectors\n // e.g.\n // .a, .b {\n // .c {\n // }\n // }\n // == [[.a] [.c]] [[.b] [.c]]\n //\n let i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector;\n function findNestedSelector(element) {\n let maybeSelector;\n if (!(element.value instanceof Paren)) {\n return null;\n }\n\n maybeSelector = element.value.value;\n if (!(maybeSelector instanceof Selector)) {\n return null;\n }\n\n return maybeSelector;\n }\n\n // the elements from the current selector so far\n currentElements = [];\n // the current list of new selectors to add to the path.\n // We will build it up. We initiate it with one empty selector as we \"multiply\" the new selectors\n // by the parents\n newSelectors = [\n []\n ];\n\n for (i = 0; (el = inSelector.elements[i]); i++) {\n // non parent reference elements just get added\n if (el.value !== '&') {\n const nestedSelector = findNestedSelector(el);\n if (nestedSelector !== null) {\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n const nestedPaths = [];\n let replaced;\n const replacedNewSelectors = [];\n replaced = replaceParentSelector(nestedPaths, context, nestedSelector);\n hadParentSelector = hadParentSelector || replaced;\n // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors\n for (k = 0; k < nestedPaths.length; k++) {\n const replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el);\n addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors);\n }\n newSelectors = replacedNewSelectors;\n currentElements = [];\n } else {\n currentElements.push(el);\n }\n\n } else {\n hadParentSelector = true;\n // the new list of selectors to add\n selectorsMultiplied = [];\n\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n // loop through our current selectors\n for (j = 0; j < newSelectors.length; j++) {\n sel = newSelectors[j];\n // if we don't have any parent paths, the & might be in a mixin so that it can be used\n // whether there are parents or not\n if (context.length === 0) {\n // the combinator used on el should now be applied to the next element instead so that\n // it is not lost\n if (sel.length > 0) {\n sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo));\n }\n selectorsMultiplied.push(sel);\n }\n else {\n // and the parent selectors\n for (k = 0; k < context.length; k++) {\n // We need to put the current selectors\n // then join the last selector's elements on to the parents selectors\n const newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector);\n // add that to our new set of selectors\n selectorsMultiplied.push(newSelectorPath);\n }\n }\n }\n\n // our new selectors has been multiplied, so reset the state\n newSelectors = selectorsMultiplied;\n currentElements = [];\n }\n }\n\n // if we have any elements left over (e.g. .a& .b == .b)\n // add them on to all the current selectors\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n for (i = 0; i < newSelectors.length; i++) {\n length = newSelectors[i].length;\n if (length > 0) {\n paths.push(newSelectors[i]);\n lastSelector = newSelectors[i][length - 1];\n newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList);\n }\n }\n\n return hadParentSelector;\n }\n\n function deriveSelector(visibilityInfo, deriveFrom) {\n const newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition);\n newSelector.copyVisibilityInfo(visibilityInfo);\n return newSelector;\n }\n\n // joinSelector code follows\n let i, newPaths, hadParentSelector;\n\n newPaths = [];\n hadParentSelector = replaceParentSelector(newPaths, context, selector);\n\n if (!hadParentSelector) {\n if (context.length > 0) {\n newPaths = [];\n for (i = 0; i < context.length; i++) {\n\n const concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo()));\n\n concatenated.push(selector);\n newPaths.push(concatenated);\n }\n }\n else {\n newPaths = [[selector]];\n }\n }\n\n for (i = 0; i < newPaths.length; i++) {\n paths.push(newPaths[i]);\n }\n\n }\n});\n\nexport default Ruleset;\n",
+ "import Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport * as utils from '../utils';\n\nconst Unit = function(numerator, denominator, backupUnit) {\n this.numerator = numerator ? utils.copyArray(numerator).sort() : [];\n this.denominator = denominator ? utils.copyArray(denominator).sort() : [];\n if (backupUnit) {\n this.backupUnit = backupUnit;\n } else if (numerator && numerator.length) {\n this.backupUnit = numerator[0];\n }\n};\n\nUnit.prototype = Object.assign(new Node(), {\n type: 'Unit',\n\n clone() {\n return new Unit(utils.copyArray(this.numerator), utils.copyArray(this.denominator), this.backupUnit);\n },\n\n genCSS(context, output) {\n // Dimension checks the unit is singular and throws an error if in strict math mode.\n const strictUnits = context && context.strictUnits;\n if (this.numerator.length === 1) {\n output.add(this.numerator[0]); // the ideal situation\n } else if (!strictUnits && this.backupUnit) {\n output.add(this.backupUnit);\n } else if (!strictUnits && this.denominator.length) {\n output.add(this.denominator[0]);\n }\n },\n\n toString() {\n let i, returnStr = this.numerator.join('*');\n for (i = 0; i < this.denominator.length; i++) {\n returnStr += `/${this.denominator[i]}`;\n }\n return returnStr;\n },\n\n compare(other) {\n return this.is(other.toString()) ? 0 : undefined;\n },\n\n is(unitString) {\n return this.toString().toUpperCase() === unitString.toUpperCase();\n },\n\n isLength() {\n return RegExp('^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$', 'gi').test(this.toCSS());\n },\n\n isEmpty() {\n return this.numerator.length === 0 && this.denominator.length === 0;\n },\n\n isSingular() {\n return this.numerator.length <= 1 && this.denominator.length === 0;\n },\n\n map(callback) {\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n this.numerator[i] = callback(this.numerator[i], false);\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n this.denominator[i] = callback(this.denominator[i], true);\n }\n },\n\n usedUnits() {\n let group;\n const result = {};\n let mapUnit;\n let groupName;\n\n mapUnit = function (atomicUnit) {\n // eslint-disable-next-line no-prototype-builtins\n if (group.hasOwnProperty(atomicUnit) && !result[groupName]) {\n result[groupName] = atomicUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in unitConversions) {\n // eslint-disable-next-line no-prototype-builtins\n if (unitConversions.hasOwnProperty(groupName)) {\n group = unitConversions[groupName];\n\n this.map(mapUnit);\n }\n }\n\n return result;\n },\n\n cancel() {\n const counter = {};\n let atomicUnit;\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n atomicUnit = this.numerator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) + 1;\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n atomicUnit = this.denominator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) - 1;\n }\n\n this.numerator = [];\n this.denominator = [];\n\n for (atomicUnit in counter) {\n // eslint-disable-next-line no-prototype-builtins\n if (counter.hasOwnProperty(atomicUnit)) {\n const count = counter[atomicUnit];\n\n if (count > 0) {\n for (i = 0; i < count; i++) {\n this.numerator.push(atomicUnit);\n }\n } else if (count < 0) {\n for (i = 0; i < -count; i++) {\n this.denominator.push(atomicUnit);\n }\n }\n }\n }\n\n this.numerator.sort();\n this.denominator.sort();\n }\n});\n\nexport default Unit;\n",
+ "/* eslint-disable no-prototype-builtins */\nimport Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport Unit from './unit';\nimport Color from './color';\n\n//\n// A number with a unit\n//\nconst Dimension = function(value, unit) {\n this.value = parseFloat(value);\n if (isNaN(this.value)) {\n throw new Error('Dimension is not a number.');\n }\n this.unit = (unit && unit instanceof Unit) ? unit :\n new Unit(unit ? [unit] : undefined);\n this.setParent(this.unit, this);\n};\n\nDimension.prototype = Object.assign(new Node(), {\n type: 'Dimension',\n\n accept(visitor) {\n this.unit = visitor.visit(this.unit);\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n eval(context) {\n return this;\n },\n\n toColor() {\n return new Color([this.value, this.value, this.value]);\n },\n\n genCSS(context, output) {\n if ((context && context.strictUnits) && !this.unit.isSingular()) {\n throw new Error(`Multiple units in dimension. Correct the units or use the unit function. Bad unit: ${this.unit.toString()}`);\n }\n\n const value = this.fround(context, this.value);\n let strValue = String(value);\n\n if (value !== 0 && value < 0.000001 && value > -0.000001) {\n // would be output 1e-6 etc.\n strValue = value.toFixed(20).replace(/0+$/, '');\n }\n\n if (context && context.compress) {\n // Zero values doesn't need a unit\n if (value === 0 && this.unit.isLength()) {\n output.add(strValue);\n return;\n }\n\n // Float values doesn't need a leading zero\n if (value > 0 && value < 1) {\n strValue = (strValue).substr(1);\n }\n }\n\n output.add(strValue);\n this.unit.genCSS(context, output);\n },\n\n // In an operation between two Dimensions,\n // we default to the first Dimension's unit,\n // so `1px + 2` will yield `3px`.\n operate(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value);\n let unit = this.unit.clone();\n\n if (op === '+' || op === '-') {\n if (unit.numerator.length === 0 && unit.denominator.length === 0) {\n unit = other.unit.clone();\n if (this.unit.backupUnit) {\n unit.backupUnit = this.unit.backupUnit;\n }\n } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {\n // do nothing\n } else {\n other = other.convertTo(this.unit.usedUnits());\n\n if (context.strictUnits && other.unit.toString() !== unit.toString()) {\n throw new Error('Incompatible units. Change the units or use the unit function. '\n + `Bad units: '${unit.toString()}' and '${other.unit.toString()}'.`);\n }\n\n value = this._operate(context, op, this.value, other.value);\n }\n } else if (op === '*') {\n unit.numerator = unit.numerator.concat(other.unit.numerator).sort();\n unit.denominator = unit.denominator.concat(other.unit.denominator).sort();\n unit.cancel();\n } else if (op === '/') {\n unit.numerator = unit.numerator.concat(other.unit.denominator).sort();\n unit.denominator = unit.denominator.concat(other.unit.numerator).sort();\n unit.cancel();\n }\n return new Dimension(value, unit);\n },\n\n compare(other) {\n let a, b;\n\n if (!(other instanceof Dimension)) {\n return undefined;\n }\n\n if (this.unit.isEmpty() || other.unit.isEmpty()) {\n a = this;\n b = other;\n } else {\n a = this.unify();\n b = other.unify();\n if (a.unit.compare(b.unit) !== 0) {\n return undefined;\n }\n }\n\n return Node.numericCompare(a.value, b.value);\n },\n\n unify() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n },\n\n convertTo(conversions) {\n let value = this.value;\n const unit = this.unit.clone();\n let i;\n let groupName;\n let group;\n let targetUnit;\n let derivedConversions = {};\n let applyUnit;\n\n if (typeof conversions === 'string') {\n for (i in unitConversions) {\n if (unitConversions[i].hasOwnProperty(conversions)) {\n derivedConversions = {};\n derivedConversions[i] = conversions;\n }\n }\n conversions = derivedConversions;\n }\n applyUnit = function (atomicUnit, denominator) {\n if (group.hasOwnProperty(atomicUnit)) {\n if (denominator) {\n value = value / (group[atomicUnit] / group[targetUnit]);\n } else {\n value = value * (group[atomicUnit] / group[targetUnit]);\n }\n\n return targetUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in conversions) {\n if (conversions.hasOwnProperty(groupName)) {\n targetUnit = conversions[groupName];\n group = unitConversions[groupName];\n\n unit.map(applyUnit);\n }\n }\n\n unit.cancel();\n\n return new Dimension(value, unit);\n }\n});\n\nexport default Dimension;\n",
+ "import Node from './node';\nimport Paren from './paren';\nimport Comment from './comment';\nimport Dimension from './dimension';\nimport Anonymous from './anonymous';\n\nconst Expression = function(value, noSpacing) {\n this.value = value;\n this.noSpacing = noSpacing;\n if (!value) {\n throw new Error('Expression requires an array parameter');\n }\n};\n\nExpression.prototype = Object.assign(new Node(), {\n type: 'Expression',\n\n accept(visitor) {\n this.value = visitor.visitArray(this.value);\n },\n\n eval(context) {\n const noSpacing = this.noSpacing;\n let returnValue;\n const mathOn = context.isMathOn();\n const inParenthesis = this.parens;\n\n let doubleParen = false;\n if (inParenthesis) {\n context.inParenthesis();\n }\n if (this.value.length > 1) {\n returnValue = new Expression(this.value.map(function (e) {\n if (!e.eval) {\n return e;\n }\n return e.eval(context);\n }), this.noSpacing);\n } else if (this.value.length === 1) {\n if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {\n doubleParen = true;\n }\n returnValue = this.value[0].eval(context);\n } else {\n returnValue = this;\n }\n if (inParenthesis) {\n context.outOfParenthesis();\n }\n if (this.parens && this.parensInOp && !mathOn && !doubleParen\n && (!(returnValue instanceof Dimension))) {\n returnValue = new Paren(returnValue);\n }\n returnValue.noSpacing = returnValue.noSpacing || noSpacing;\n return returnValue;\n },\n\n genCSS(context, output) {\n for (let i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (!this.noSpacing && i + 1 < this.value.length) {\n if (i + 1 < this.value.length && !(this.value[i + 1] instanceof Anonymous) ||\n this.value[i + 1] instanceof Anonymous && this.value[i + 1].value !== ',') {\n output.add(' ');\n }\n }\n }\n },\n\n throwAwayComments() {\n this.value = this.value.filter(function(v) {\n return !(v instanceof Comment);\n });\n }\n});\n\nexport default Expression;\n",
+ "import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport Anonymous from './anonymous';\nimport Expression from './expression';\nimport * as utils from '../utils';\n\nconst NestableAtRulePrototype = {\n\n isRulesetLike() {\n return true;\n },\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n if (this.rules) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n evalFunction: function () {\n if (!this.features || !Array.isArray(this.features.value) || this.features.value.length < 1) {\n return;\n }\n\n const exprValues = this.features.value;\n let expr, paren;\n\n for (let index = 0; index < exprValues.length; ++index) {\n expr = exprValues[index];\n\n if (expr.type === 'Keyword' && index + 1 < exprValues.length && (expr.noSpacing || expr.noSpacing == null)) {\n paren = exprValues[index + 1];\n \n if (paren.type === 'Paren' && paren.noSpacing) {\n exprValues[index]= new Expression([expr, paren]);\n exprValues.splice(index + 1, 1);\n exprValues[index].noSpacing = true;\n }\n }\n }\n },\n\n evalTop(context) {\n this.evalFunction();\n\n let result = this;\n\n // Render all dependent Media blocks.\n if (context.mediaBlocks.length > 1) {\n const selectors = (new Selector([], null, null, this.getIndex(), this.fileInfo())).createEmptySelectors();\n result = new Ruleset(selectors, context.mediaBlocks);\n result.multiMedia = true;\n result.copyVisibilityInfo(this.visibilityInfo());\n this.setParent(result, this);\n }\n\n delete context.mediaBlocks;\n delete context.mediaPath;\n\n return result;\n },\n\n evalNested(context) {\n this.evalFunction();\n\n let i;\n let value;\n const path = context.mediaPath.concat([this]);\n\n // Extract the media-query conditions separated with `,` (OR).\n for (i = 0; i < path.length; i++) {\n if (path[i].type !== this.type) { \n context.mediaBlocks.splice(i, 1); \n \n return this; \n }\n \n value = path[i].features instanceof Value ?\n path[i].features.value : path[i].features;\n path[i] = Array.isArray(value) ? value : [value];\n }\n\n // Trace all permutations to generate the resulting media-query.\n //\n // (a, b and c) with nested (d, e) ->\n // a and d\n // a and e\n // b and c and d\n // b and c and e\n this.features = new Value(this.permute(path).map(path => {\n path = path.map(fragment => fragment.toCSS ? fragment : new Anonymous(fragment));\n\n for (i = path.length - 1; i > 0; i--) {\n path.splice(i, 0, new Anonymous('and'));\n }\n\n return new Expression(path);\n }));\n this.setParent(this.features, this);\n\n // Fake a tree-node that doesn't output anything.\n return new Ruleset([], []);\n },\n\n permute(arr) {\n if (arr.length === 0) {\n return [];\n } else if (arr.length === 1) {\n return arr[0];\n } else {\n const result = [];\n const rest = this.permute(arr.slice(1));\n for (let i = 0; i < rest.length; i++) {\n for (let j = 0; j < arr[0].length; j++) {\n result.push([arr[0][j]].concat(rest[i]));\n }\n }\n return result;\n }\n },\n\n bubbleSelectors(selectors) {\n if (!selectors) {\n return;\n }\n this.rules = [new Ruleset(utils.copyArray(selectors), [this.rules[0]])];\n this.setParent(this.rules, this);\n }\n};\n\nexport default NestableAtRulePrototype;\n",
+ "import Node from './node';\nimport Selector from './selector';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst AtRule = function(\n name,\n value,\n rules,\n index,\n currentFileInfo,\n debugInfo,\n isRooted,\n visibilityInfo\n) {\n let i;\n var selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.name = name;\n this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);\n if (rules) {\n if (Array.isArray(rules)) {\n const allDeclarations = this.declarationsBlock(rules);\n \n let allRulesetDeclarations = true;\n rules.forEach(rule => {\n if (rule.type === 'Ruleset' && rule.rules) allRulesetDeclarations = allRulesetDeclarations && this.declarationsBlock(rule.rules, true);\n });\n\n if (allDeclarations && !isRooted) {\n this.simpleBlock = true;\n this.declarations = rules;\n } else if (allRulesetDeclarations && rules.length === 1 && !isRooted && !value) {\n this.simpleBlock = true;\n this.declarations = rules[0].rules ? rules[0].rules : rules;\n } else {\n this.rules = rules;\n }\n } else {\n const allDeclarations = this.declarationsBlock(rules.rules);\n \n if (allDeclarations && !isRooted && !value) {\n this.simpleBlock = true;\n this.declarations = rules.rules;\n } else {\n this.rules = [rules];\n this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();\n }\n }\n if (!this.simpleBlock) {\n for (i = 0; i < this.rules.length; i++) {\n this.rules[i].allowImports = true;\n }\n }\n this.setParent(selectors, this);\n this.setParent(this.rules, this);\n }\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.debugInfo = debugInfo;\n this.isRooted = isRooted || false;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nAtRule.prototype = Object.assign(new Node(), {\n type: 'AtRule',\n\n ...NestableAtRulePrototype,\n\n declarationsBlock(rules, mergeable = false) {\n if (!mergeable) {\n return rules.filter(function (node) { return (node.type === 'Declaration' || node.type === 'Comment') && !node.merge}).length === rules.length;\n } else {\n return rules.filter(function (node) { return (node.type === 'Declaration' || node.type === 'Comment'); }).length === rules.length;\n }\n },\n\n keywordList(rules) {\n if (!Array.isArray(rules)) {\n return false;\n } else { \n return rules.filter(function (node) { return (node.type === 'Keyword' || node.type === 'Comment'); }).length === rules.length;\n }\n },\n\n accept(visitor) {\n const value = this.value, rules = this.rules, declarations = this.declarations;\n\n if (rules) {\n this.rules = visitor.visitArray(rules);\n } else if (declarations) {\n this.declarations = visitor.visitArray(declarations); \n }\n if (value) {\n this.value = visitor.visit(value);\n }\n },\n\n isRulesetLike() {\n return this.rules || !this.isCharset();\n },\n\n isCharset() {\n return '@charset' === this.name;\n },\n\n genCSS(context, output) {\n const value = this.value, rules = this.rules || this.declarations;\n output.add(this.name, this.fileInfo(), this.getIndex());\n if (value) {\n output.add(' ');\n value.genCSS(context, output);\n }\n if (this.simpleBlock) {\n this.outputRuleset(context, output, this.declarations);\n } else if (rules) {\n this.outputRuleset(context, output, rules);\n } else {\n output.add(';');\n }\n },\n\n eval(context) {\n let mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules || this.declarations;\n \n // media stored inside other atrule should not bubble over it\n // backpup media bubbling information\n mediaPathBackup = context.mediaPath;\n mediaBlocksBackup = context.mediaBlocks;\n // deleted media bubbling information\n context.mediaPath = [];\n context.mediaBlocks = [];\n\n if (value) {\n value = value.eval(context);\n if (value.value && this.keywordList(value.value)) {\n value = new Anonymous(value.value.map(keyword => keyword.value).join(', '), this.getIndex(), this.fileInfo());\n }\n }\n\n if (rules) {\n rules = this.evalRoot(context, rules);\n }\n if (Array.isArray(rules) && rules[0].rules && Array.isArray(rules[0].rules) && rules[0].rules.length) {\n const allMergeableDeclarations = this.declarationsBlock(rules[0].rules, true);\n if (allMergeableDeclarations && !this.isRooted && !value) {\n var mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;\n mergeRules(rules[0].rules);\n rules = rules[0].rules;\n rules.forEach(rule => rule.merge = false);\n }\n }\n if (this.simpleBlock && rules) {\n rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n rules = rules.map(function (rule) { return rule.eval(context); });\n }\n\n // restore media bubbling information\n context.mediaPath = mediaPathBackup;\n context.mediaBlocks = mediaBlocksBackup;\n return new AtRule(this.name, value, rules, this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());\n },\n\n evalRoot(context, rules) {\n let ampersandCount = 0;\n let noAmpersandCount = 0;\n let noAmpersands = true;\n let allAmpersands = false;\n\n if (!this.simpleBlock) {\n rules = [rules[0].eval(context)];\n }\n\n let precedingSelectors = [];\n if (context.frames.length > 0) {\n for (let index = 0; index < context.frames.length; index++) {\n const frame = context.frames[index];\n if (\n frame.type === 'Ruleset' &&\n frame.rules &&\n frame.rules.length > 0\n ) {\n if (frame && !frame.root && frame.selectors && frame.selectors.length > 0) {\n precedingSelectors = precedingSelectors.concat(frame.selectors);\n }\n }\n if (precedingSelectors.length > 0) {\n let value = '';\n const output = { add: function (s) { value += s; } };\n for (let i = 0; i < precedingSelectors.length; i++) {\n precedingSelectors[i].genCSS(context, output);\n }\n if (/^&+$/.test(value.replace(/\\s+/g, ''))) {\n noAmpersands = false;\n noAmpersandCount++;\n } else {\n allAmpersands = false;\n ampersandCount++;\n }\n }\n }\n }\n\n const mixedAmpersands = ampersandCount > 0 && noAmpersandCount > 0 && !allAmpersands && !noAmpersands;\n if (\n (this.isRooted && ampersandCount > 0 && noAmpersandCount === 0 && !allAmpersands && noAmpersands)\n || !mixedAmpersands\n ) {\n rules[0].root = true;\n }\n return rules;\n },\n\n variable(name) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.variable.call(this.rules[0], name);\n }\n },\n\n find() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.find.apply(this.rules[0], arguments);\n }\n },\n\n rulesets() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.rulesets.apply(this.rules[0]);\n }\n },\n\n outputRuleset(context, output, rules) {\n const ruleCnt = rules.length;\n let i;\n context.tabLevel = (context.tabLevel | 0) + 1;\n\n // Compressed\n if (context.compress) {\n output.add('{');\n for (i = 0; i < ruleCnt; i++) {\n rules[i].genCSS(context, output);\n }\n output.add('}');\n context.tabLevel--;\n return;\n }\n\n // Non-compressed\n const tabSetStr = `\\n${Array(context.tabLevel).join(' ')}`, tabRuleStr = `${tabSetStr} `;\n if (!ruleCnt) {\n output.add(` {${tabSetStr}}`);\n } else {\n output.add(` {${tabRuleStr}`);\n rules[0].genCSS(context, output);\n for (i = 1; i < ruleCnt; i++) {\n output.add(tabRuleStr);\n rules[i].genCSS(context, output);\n }\n output.add(`${tabSetStr}}`);\n }\n\n context.tabLevel--;\n }\n});\n\nexport default AtRule;\n",
+ "import Node from './node';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst DetachedRuleset = function(ruleset, frames) {\n this.ruleset = ruleset;\n this.frames = frames;\n this.setParent(this.ruleset, this);\n};\n\nDetachedRuleset.prototype = Object.assign(new Node(), {\n type: 'DetachedRuleset',\n evalFirst: true,\n\n accept(visitor) {\n this.ruleset = visitor.visit(this.ruleset);\n },\n\n eval(context) {\n const frames = this.frames || utils.copyArray(context.frames);\n return new DetachedRuleset(this.ruleset, frames);\n },\n\n callEval(context) {\n return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context);\n }\n});\n\nexport default DetachedRuleset;\n",
+ "import Node from './node';\nimport Color from './color';\nimport Dimension from './dimension';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\n\nconst Operation = function(op, operands, isSpaced) {\n this.op = op.trim();\n this.operands = operands;\n this.isSpaced = isSpaced;\n};\n\nOperation.prototype = Object.assign(new Node(), {\n type: 'Operation',\n\n accept(visitor) {\n this.operands = visitor.visitArray(this.operands);\n },\n\n eval(context) {\n let a = this.operands[0].eval(context), b = this.operands[1].eval(context), op;\n\n if (context.isMathOn(this.op)) {\n op = this.op === './' ? '/' : this.op;\n if (a instanceof Dimension && b instanceof Color) {\n a = a.toColor();\n }\n if (b instanceof Dimension && a instanceof Color) {\n b = b.toColor();\n }\n if (!a.operate || !b.operate) {\n if (\n (a instanceof Operation || b instanceof Operation)\n && a.op === '/' && context.math === MATH.PARENS_DIVISION\n ) {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n throw { type: 'Operation',\n message: 'Operation on an invalid type' };\n }\n\n return a.operate(context, op, b);\n } else {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n },\n\n genCSS(context, output) {\n this.operands[0].genCSS(context, output);\n if (this.isSpaced) {\n output.add(' ');\n }\n output.add(this.op);\n if (this.isSpaced) {\n output.add(' ');\n }\n this.operands[1].genCSS(context, output);\n }\n});\n\nexport default Operation;\n",
+ "import Expression from '../tree/expression';\n\nclass functionCaller {\n constructor(name, context, index, currentFileInfo) {\n this.name = name.toLowerCase();\n this.index = index;\n this.context = context;\n this.currentFileInfo = currentFileInfo;\n\n this.func = context.frames[0].functionRegistry.get(this.name);\n }\n\n isValid() {\n return Boolean(this.func);\n }\n\n call(args) {\n if (!(Array.isArray(args))) {\n args = [args];\n }\n const evalArgs = this.func.evalArgs;\n if (evalArgs !== false) {\n args = args.map(a => a.eval(this.context));\n }\n const commentFilter = item => !(item.type === 'Comment');\n\n // This code is terrible and should be replaced as per this issue...\n // https://github.com/less/less.js/issues/2477\n args = args\n .filter(commentFilter)\n .map(item => {\n if (item.type === 'Expression') {\n const subNodes = item.value.filter(commentFilter);\n if (subNodes.length === 1) {\n // https://github.com/less/less.js/issues/3616\n if (item.parens && subNodes[0].op === '/') {\n return item;\n }\n return subNodes[0];\n } else {\n return new Expression(subNodes);\n }\n }\n return item;\n });\n\n if (evalArgs === false) {\n return this.func(this.context, ...args);\n }\n\n return this.func(...args);\n }\n}\n\nexport default functionCaller;\n",
+ "import Node from './node';\nimport Anonymous from './anonymous';\nimport FunctionCaller from '../functions/function-caller';\n\n//\n// A function call node.\n//\nconst Call = function(name, args, index, currentFileInfo) {\n this.name = name;\n this.args = args;\n this.calc = name === 'calc';\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nCall.prototype = Object.assign(new Node(), {\n type: 'Call',\n\n accept(visitor) {\n if (this.args) {\n this.args = visitor.visitArray(this.args);\n }\n },\n\n //\n // When evaluating a function call,\n // we either find the function in the functionRegistry,\n // in which case we call it, passing the evaluated arguments,\n // if this returns null or we cannot find the function, we\n // simply print it out as it appeared originally [2].\n //\n // The reason why we evaluate the arguments, is in the case where\n // we try to pass a variable to a function, like: `saturate(@color)`.\n // The function should receive the value, not the variable.\n //\n eval(context) {\n /**\n * Turn off math for calc(), and switch back on for evaluating nested functions\n */\n const currentMathContext = context.mathOn;\n context.mathOn = !this.calc;\n if (this.calc || context.inCalc) {\n context.enterCalc();\n }\n\n const exitCalc = () => {\n if (this.calc || context.inCalc) {\n context.exitCalc();\n }\n context.mathOn = currentMathContext;\n };\n\n let result;\n const funcCaller = new FunctionCaller(this.name, context, this.getIndex(), this.fileInfo());\n\n if (funcCaller.isValid()) {\n try {\n result = funcCaller.call(this.args);\n exitCalc();\n } catch (e) {\n // eslint-disable-next-line no-prototype-builtins\n if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {\n throw e;\n }\n throw { \n type: e.type || 'Runtime',\n message: `Error evaluating function \\`${this.name}\\`${e.message ? `: ${e.message}` : ''}`,\n index: this.getIndex(), \n filename: this.fileInfo().filename,\n line: e.lineNumber,\n column: e.columnNumber\n };\n }\n }\n\n if (result !== null && result !== undefined) {\n // Results that that are not nodes are cast as Anonymous nodes\n // Falsy values or booleans are returned as empty nodes\n if (!(result instanceof Node)) {\n if (!result || result === true) {\n result = new Anonymous(null); \n }\n else {\n result = new Anonymous(result.toString()); \n }\n \n }\n result._index = this._index;\n result._fileInfo = this._fileInfo;\n return result;\n }\n\n const args = this.args.map(a => a.eval(context));\n exitCalc();\n\n return new Call(this.name, args, this.getIndex(), this.fileInfo());\n },\n\n genCSS(context, output) {\n output.add(`${this.name}(`, this.fileInfo(), this.getIndex());\n\n for (let i = 0; i < this.args.length; i++) {\n this.args[i].genCSS(context, output);\n if (i + 1 < this.args.length) {\n output.add(', ');\n }\n }\n\n output.add(')');\n }\n});\n\nexport default Call;\n",
+ "import Node from './node';\nimport Call from './call';\n\nconst Variable = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nVariable.prototype = Object.assign(new Node(), {\n type: 'Variable',\n\n eval(context) {\n let variable, name = this.name;\n\n if (name.indexOf('@@') === 0) {\n name = `@${new Variable(name.slice(1), this.getIndex(), this.fileInfo()).eval(context).value}`;\n }\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive variable definition for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n variable = this.find(context.frames, function (frame) {\n const v = frame.variable(name);\n if (v) {\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n // If in calc, wrap vars in a function call to cascade evaluate args first\n if (context.inCalc) {\n return (new Call('_SELF', [v.value])).eval(context);\n }\n else {\n return v.value.eval(context);\n }\n }\n });\n if (variable) {\n this.evaluating = false;\n return variable;\n } else {\n throw { type: 'Name',\n message: `variable ${name} is undefined`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Variable;\n",
+ "import Node from './node';\nimport Declaration from './declaration';\n\nconst Property = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nProperty.prototype = Object.assign(new Node(), {\n type: 'Property',\n\n eval(context) {\n let property;\n const name = this.name;\n // TODO: shorten this reference\n const mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive property reference for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n property = this.find(context.frames, function (frame) {\n let v;\n const vArr = frame.property(name);\n if (vArr) {\n for (let i = 0; i < vArr.length; i++) {\n v = vArr[i];\n\n vArr[i] = new Declaration(v.name,\n v.value,\n v.important,\n v.merge,\n v.index,\n v.currentFileInfo,\n v.inline,\n v.variable\n );\n }\n mergeRules(vArr);\n\n v = vArr[vArr.length - 1];\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n v = v.value.eval(context);\n return v;\n }\n });\n if (property) {\n this.evaluating = false;\n return property;\n } else {\n throw { type: 'Name',\n message: `Property '${name}' is undefined`,\n filename: this.currentFileInfo.filename,\n index: this.index };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Property;\n",
+ "import Node from './node';\n\nconst Attribute = function(key, op, value, cif) {\n this.key = key;\n this.op = op;\n this.value = value;\n this.cif = cif;\n}\n\nAttribute.prototype = Object.assign(new Node(), {\n type: 'Attribute',\n\n eval(context) {\n return new Attribute(\n this.key.eval ? this.key.eval(context) : this.key,\n this.op,\n (this.value && this.value.eval) ? this.value.eval(context) : this.value,\n this.cif\n );\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context) {\n let value = this.key.toCSS ? this.key.toCSS(context) : this.key;\n\n if (this.op) {\n value += this.op;\n value += (this.value.toCSS ? this.value.toCSS(context) : this.value);\n }\n\n if (this.cif) {\n value = value + ' ' + this.cif;\n }\n\n return `[${value}]`;\n }\n});\n\nexport default Attribute;\n",
+ "import Node from './node';\nimport Variable from './variable';\nimport Property from './property';\n\nconst Quoted = function(str, content, escaped, index, currentFileInfo) {\n this.escaped = (escaped === undefined) ? true : escaped;\n this.value = content || '';\n this.quote = str.charAt(0);\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.variableRegex = /@\\{([\\w-]+)\\}/g;\n this.propRegex = /\\$\\{([\\w-]+)\\}/g;\n this.allowRoot = escaped;\n};\n\nQuoted.prototype = Object.assign(new Node(), {\n type: 'Quoted',\n\n genCSS(context, output) {\n if (!this.escaped) {\n output.add(this.quote, this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n if (!this.escaped) {\n output.add(this.quote);\n }\n },\n\n containsVariables() {\n return this.value.match(this.variableRegex);\n },\n\n eval(context) {\n const that = this;\n let value = this.value;\n const variableReplacement = function (_, name1, name2) {\n const v = new Variable(`@${name1 ?? name2}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n const propertyReplacement = function (_, name1, name2) {\n const v = new Property(`$${name1 ?? name2}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n function iterativeReplace(value, regexp, replacementFnc) {\n let evaluatedValue = value;\n do {\n value = evaluatedValue.toString();\n evaluatedValue = value.replace(regexp, replacementFnc);\n } while (value !== evaluatedValue);\n return evaluatedValue;\n }\n value = iterativeReplace(value, this.variableRegex, variableReplacement);\n value = iterativeReplace(value, this.propRegex, propertyReplacement);\n return new Quoted(this.quote + value + this.quote, value, this.escaped, this.getIndex(), this.fileInfo());\n },\n\n compare(other) {\n // when comparing quoted strings allow the quote to differ\n if (other.type === 'Quoted' && !this.escaped && !other.escaped) {\n return Node.numericCompare(this.value, other.value);\n } else {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n }\n }\n});\n\nexport default Quoted;\n",
+ "import Node from './node';\n\nfunction escapePath(path) {\n return path.replace(/[()'\"\\s]/g, function(match) { return `\\\\${match}`; });\n}\n\nconst URL = function(val, index, currentFileInfo, isEvald) {\n this.value = val;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.isEvald = isEvald;\n};\n\nURL.prototype = Object.assign(new Node(), {\n type: 'Url',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n genCSS(context, output) {\n output.add('url(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n const val = this.value.eval(context);\n let rootpath;\n\n if (!this.isEvald) {\n // Add the rootpath if the URL requires a rewrite\n rootpath = this.fileInfo() && this.fileInfo().rootpath;\n if (typeof rootpath === 'string' &&\n typeof val.value === 'string' &&\n context.pathRequiresRewrite(val.value)) {\n if (!val.quote) {\n rootpath = escapePath(rootpath);\n }\n val.value = context.rewritePath(val.value, rootpath);\n } else {\n val.value = context.normalizePath(val.value);\n }\n\n // Add url args if enabled\n if (context.urlArgs) {\n if (!val.value.match(/^\\s*data:/)) {\n const delimiter = val.value.indexOf('?') === -1 ? '?' : '&';\n const urlArgs = delimiter + context.urlArgs;\n if (val.value.indexOf('#') !== -1) {\n val.value = val.value.replace('#', `${urlArgs}#`);\n } else {\n val.value += urlArgs;\n }\n }\n }\n }\n\n return new URL(val, this.getIndex(), this.fileInfo(), true);\n }\n});\n\nexport default URL;\n",
+ "import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Media = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nMedia.prototype = Object.assign(new AtRule(), {\n type: 'Media',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@media ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Media(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Media;\n",
+ "import Node from './node';\nimport Media from './media';\nimport URL from './url';\nimport Quoted from './quoted';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\nimport * as utils from '../utils';\nimport LessError from '../less-error';\nimport Expression from './expression';\n\n//\n// CSS @import node\n//\n// The general strategy here is that we don't want to wait\n// for the parsing to be completed, before we start importing\n// the file. That's because in the context of a browser,\n// most of the time will be spent waiting for the server to respond.\n//\n// On creation, we push the import path to our import queue, though\n// `import,push`, we also pass it a callback, which it'll call once\n// the file has been fetched, and parsed.\n//\nconst Import = function(path, features, options, index, currentFileInfo, visibilityInfo) {\n this.options = options;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.path = path;\n this.features = features;\n this.allowRoot = true;\n\n if (this.options.less !== undefined || this.options.inline) {\n this.css = !this.options.less || this.options.inline;\n } else {\n const pathValue = this.getPath();\n if (pathValue && /[#.&?]css([?;].*)?$/.test(pathValue)) {\n this.css = true;\n }\n }\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.features, this);\n this.setParent(this.path, this);\n};\n\nImport.prototype = Object.assign(new Node(), {\n type: 'Import',\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n this.path = visitor.visit(this.path);\n if (!this.options.isPlugin && !this.options.inline && this.root) {\n this.root = visitor.visit(this.root);\n }\n },\n\n genCSS(context, output) {\n if (this.css && this.path._fileInfo.reference === undefined) {\n output.add('@import ', this._fileInfo, this._index);\n this.path.genCSS(context, output);\n if (this.features) {\n output.add(' ');\n this.features.genCSS(context, output);\n }\n output.add(';');\n }\n },\n\n getPath() {\n return (this.path instanceof URL) ?\n this.path.value.value : this.path.value;\n },\n\n isVariableImport() {\n let path = this.path;\n if (path instanceof URL) {\n path = path.value;\n }\n if (path instanceof Quoted) {\n return path.containsVariables();\n }\n\n return true;\n },\n\n evalForImport(context) {\n let path = this.path;\n\n if (path instanceof URL) {\n path = path.value;\n }\n\n return new Import(path.eval(context), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo());\n },\n\n evalPath(context) {\n const path = this.path.eval(context);\n const fileInfo = this._fileInfo;\n\n if (!(path instanceof URL)) {\n // Add the rootpath if the URL requires a rewrite\n const pathValue = path.value;\n if (fileInfo &&\n pathValue &&\n context.pathRequiresRewrite(pathValue)) {\n path.value = context.rewritePath(pathValue, fileInfo.rootpath);\n } else {\n path.value = context.normalizePath(path.value);\n }\n }\n\n return path;\n },\n\n eval(context) {\n const result = this.doEval(context);\n if (this.options.reference || this.blocksVisibility()) {\n if (result.length || result.length === 0) {\n result.forEach(function (node) {\n node.addVisibilityBlock();\n }\n );\n } else {\n result.addVisibilityBlock();\n }\n }\n return result;\n },\n\n doEval(context) {\n let ruleset;\n let registry;\n const features = this.features && this.features.eval(context);\n\n if (this.options.isPlugin) {\n if (this.root && this.root.eval) {\n try {\n this.root.eval(context);\n }\n catch (e) {\n e.message = 'Plugin error during evaluation';\n throw new LessError(e, this.root.imports, this.root.filename);\n }\n }\n registry = context.frames[0] && context.frames[0].functionRegistry;\n if ( registry && this.root && this.root.functions ) {\n registry.addMultiple( this.root.functions );\n }\n\n return [];\n }\n\n if (this.skip) {\n if (typeof this.skip === 'function') {\n this.skip = this.skip();\n }\n if (this.skip) {\n return [];\n }\n }\n if (this.features) {\n let featureValue = this.features.value;\n if (Array.isArray(featureValue) && featureValue.length >= 1) {\n const expr = featureValue[0];\n if (expr.type === 'Expression' && Array.isArray(expr.value) && expr.value.length >= 2) {\n featureValue = expr.value;\n const isLayer = featureValue[0].type === 'Keyword' && featureValue[0].value === 'layer'\n && featureValue[1].type === 'Paren';\n if (isLayer) {\n this.css = false;\n }\n }\n }\n }\n if (this.options.inline) {\n const contents = new Anonymous(this.root, 0,\n {\n filename: this.importedFilename,\n reference: this.path._fileInfo && this.path._fileInfo.reference\n }, true, true);\n\n return this.features ? new Media([contents], this.features.value) : [contents];\n } else if (this.css || this.layerCss) {\n const newImport = new Import(this.evalPath(context), features, this.options, this._index);\n if (this.layerCss) {\n newImport.css = this.layerCss;\n newImport.path._fileInfo = this._fileInfo;\n }\n if (!newImport.css && this.error) {\n throw this.error;\n }\n return newImport;\n } else if (this.root) {\n if (this.features) {\n let featureValue = this.features.value;\n if (Array.isArray(featureValue) && featureValue.length === 1) {\n const expr = featureValue[0];\n if (expr.type === 'Expression' && Array.isArray(expr.value) && expr.value.length >= 2) {\n featureValue = expr.value;\n const isLayer = featureValue[0].type === 'Keyword' && featureValue[0].value === 'layer'\n && featureValue[1].type === 'Paren';\n if (isLayer) {\n this.layerCss = true;\n featureValue[0] = new Expression(featureValue.slice(0, 2));\n featureValue.splice(1, 1);\n featureValue[0].noSpacing = true;\n return this;\n }\n }\n }\n }\n ruleset = new Ruleset(null, utils.copyArray(this.root.rules));\n ruleset.evalImports(context);\n\n return this.features ? new Media(ruleset.rules, this.features.value) : ruleset.rules;\n } else {\n if (this.features) {\n let featureValue = this.features.value;\n if (Array.isArray(featureValue) && featureValue.length >= 1) {\n featureValue = featureValue[0].value;\n if (Array.isArray(featureValue) && featureValue.length >= 2) {\n const isLayer = featureValue[0].type === 'Keyword' && featureValue[0].value === 'layer'\n && featureValue[1].type === 'Paren';\n if (isLayer) {\n this.css = true;\n featureValue[0] = new Expression(featureValue.slice(0, 2));\n featureValue.splice(1, 1);\n featureValue[0].noSpacing = true;\n return this;\n }\n }\n }\n }\n return [];\n }\n }\n});\n\nexport default Import;\n",
+ "import Node from './node';\nimport Variable from './variable';\n\nconst JsEvalNode = function() {};\n\nJsEvalNode.prototype = Object.assign(new Node(), {\n evaluateJavaScript(expression, context) {\n let result;\n const that = this;\n const evalContext = {};\n\n if (!context.javascriptEnabled) {\n throw { message: 'Inline JavaScript is not enabled. Is it set in your options?',\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n expression = expression.replace(/@\\{([\\w-]+)\\}/g, function (_, name) {\n return that.jsify(new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context));\n });\n\n try {\n expression = new Function(`return (${expression})`);\n } catch (e) {\n throw { message: `JavaScript evaluation error: ${e.message} from \\`${expression}\\`` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n const variables = context.frames[0].variables();\n for (const k in variables) {\n // eslint-disable-next-line no-prototype-builtins\n if (variables.hasOwnProperty(k)) {\n evalContext[k.slice(1)] = {\n value: variables[k].value,\n toJS: function () {\n return this.value.eval(context).toCSS();\n }\n };\n }\n }\n\n try {\n result = expression.call(evalContext);\n } catch (e) {\n throw { message: `JavaScript evaluation error: '${e.name}: ${e.message.replace(/[\"]/g, '\\'')}'` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n return result;\n },\n\n jsify(obj) {\n if (Array.isArray(obj.value) && (obj.value.length > 1)) {\n return `[${obj.value.map(function (v) { return v.toCSS(); }).join(', ')}]`;\n } else {\n return obj.toCSS();\n }\n }\n});\n\nexport default JsEvalNode;\n",
+ "import JsEvalNode from './js-eval-node';\nimport Dimension from './dimension';\nimport Quoted from './quoted';\nimport Anonymous from './anonymous';\n\nconst JavaScript = function(string, escaped, index, currentFileInfo) {\n this.escaped = escaped;\n this.expression = string;\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nJavaScript.prototype = Object.assign(new JsEvalNode(), {\n type: 'JavaScript',\n\n eval(context) {\n const result = this.evaluateJavaScript(this.expression, context);\n const type = typeof result;\n\n if (type === 'number' && !isNaN(result)) {\n return new Dimension(result);\n } else if (type === 'string') {\n return new Quoted(`\"${result}\"`, result, this.escaped, this._index);\n } else if (Array.isArray(result)) {\n return new Anonymous(result.join(', '));\n } else {\n return new Anonymous(result);\n }\n }\n});\n\nexport default JavaScript;\n",
+ "import Node from './node';\n\nconst Assignment = function(key, val) {\n this.key = key;\n this.value = val;\n}\n\nAssignment.prototype = Object.assign(new Node(), {\n type: 'Assignment',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n eval(context) {\n if (this.value.eval) {\n return new Assignment(this.key, this.value.eval(context));\n }\n return this;\n },\n\n genCSS(context, output) {\n output.add(`${this.key}=`);\n if (this.value.genCSS) {\n this.value.genCSS(context, output);\n } else {\n output.add(this.value);\n }\n }\n});\n\nexport default Assignment;\n",
+ "import Node from './node';\n\nconst Condition = function(op, l, r, i, negate) {\n this.op = op.trim();\n this.lvalue = l;\n this.rvalue = r;\n this._index = i;\n this.negate = negate;\n};\n\nCondition.prototype = Object.assign(new Node(), {\n type: 'Condition',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.rvalue = visitor.visit(this.rvalue);\n },\n\n eval(context) {\n const result = (function (op, a, b) {\n switch (op) {\n case 'and': return a && b;\n case 'or': return a || b;\n default:\n switch (Node.compare(a, b)) {\n case -1:\n return op === '<' || op === '=<' || op === '<=';\n case 0:\n return op === '=' || op === '>=' || op === '=<' || op === '<=';\n case 1:\n return op === '>' || op === '>=';\n default:\n return false;\n }\n }\n })(this.op, this.lvalue.eval(context), this.rvalue.eval(context));\n\n return this.negate ? !result : result;\n }\n});\n\nexport default Condition;\n",
+ "import { copy } from 'copy-anything';\nimport Declaration from './declaration';\nimport Node from './node';\n\nconst QueryInParens = function (op, l, m, op2, r, i) {\n this.op = op.trim();\n this.lvalue = l;\n this.mvalue = m;\n this.op2 = op2 ? op2.trim() : null;\n this.rvalue = r;\n this._index = i;\n this.mvalues = [];\n};\n\nQueryInParens.prototype = Object.assign(new Node(), {\n type: 'QueryInParens',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.mvalue = visitor.visit(this.mvalue);\n if (this.rvalue) {\n this.rvalue = visitor.visit(this.rvalue);\n }\n },\n\n eval(context) {\n this.lvalue = this.lvalue.eval(context);\n \n let variableDeclaration;\n let rule;\n\n for (let i = 0; (rule = context.frames[i]); i++) {\n if (rule.type === 'Ruleset') {\n variableDeclaration = rule.rules.find(function (r) {\n if ((r instanceof Declaration) && r.variable) {\n return true;\n }\n\n return false;\n });\n \n if (variableDeclaration) {\n break;\n }\n }\n }\n\n if (!this.mvalueCopy) {\n this.mvalueCopy = copy(this.mvalue);\n }\n \n if (variableDeclaration) {\n this.mvalue = this.mvalueCopy;\n this.mvalue = this.mvalue.eval(context);\n this.mvalues.push(this.mvalue);\n } else {\n this.mvalue = this.mvalue.eval(context);\n }\n\n if (this.rvalue) {\n this.rvalue = this.rvalue.eval(context);\n }\n return this;\n },\n\n genCSS(context, output) {\n this.lvalue.genCSS(context, output);\n output.add(' ' + this.op + ' ');\n if (this.mvalues.length > 0) {\n this.mvalue = this.mvalues.shift();\n }\n this.mvalue.genCSS(context, output);\n if (this.rvalue) {\n output.add(' ' + this.op2 + ' ');\n this.rvalue.genCSS(context, output);\n }\n },\n});\n\nexport default QueryInParens;\n",
+ "import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Container = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nContainer.prototype = Object.assign(new AtRule(), {\n type: 'Container',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@container ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Container(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Container;\n",
+ "import Node from './node';\n\nconst UnicodeDescriptor = function(value) {\n this.value = value;\n}\n\nUnicodeDescriptor.prototype = Object.assign(new Node(), {\n type: 'UnicodeDescriptor'\n})\n\nexport default UnicodeDescriptor;\n",
+ "import Node from './node';\nimport Operation from './operation';\nimport Dimension from './dimension';\n\nconst Negative = function(node) {\n this.value = node;\n};\n\nNegative.prototype = Object.assign(new Node(), {\n type: 'Negative',\n\n genCSS(context, output) {\n output.add('-');\n this.value.genCSS(context, output);\n },\n\n eval(context) {\n if (context.isMathOn()) {\n return (new Operation('*', [new Dimension(-1), this.value])).eval(context);\n }\n return new Negative(this.value.eval(context));\n }\n});\n\nexport default Negative;\n",
+ "import Node from './node';\nimport Selector from './selector';\n\nconst Extend = function(selector, option, index, currentFileInfo, visibilityInfo) {\n this.selector = selector;\n this.option = option;\n this.object_id = Extend.next_id++;\n this.parent_ids = [this.object_id];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n switch (option) {\n case '!all':\n case 'all':\n this.allowBefore = true;\n this.allowAfter = true;\n break;\n default:\n this.allowBefore = false;\n this.allowAfter = false;\n break;\n }\n this.setParent(this.selector, this);\n};\n\nExtend.prototype = Object.assign(new Node(), {\n type: 'Extend',\n\n accept(visitor) {\n this.selector = visitor.visit(this.selector);\n },\n\n eval(context) {\n return new Extend(this.selector.eval(context), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n clone(context) {\n return new Extend(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // it concatenates (joins) all selectors in selector array\n findSelfSelectors(selectors) {\n let selfElements = [], i, selectorElements;\n\n for (i = 0; i < selectors.length; i++) {\n selectorElements = selectors[i].elements;\n // duplicate the logic in genCSS function inside the selector node.\n // future TODO - move both logics into the selector joiner visitor\n if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === '') {\n selectorElements[0].combinator.value = ' ';\n }\n selfElements = selfElements.concat(selectors[i].elements);\n }\n\n this.selfSelectors = [new Selector(selfElements)];\n this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo());\n }\n});\n\nExtend.next_id = 0;\nexport default Extend;\n",
+ "import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport DetachedRuleset from './detached-ruleset';\nimport LessError from '../less-error';\n\nconst VariableCall = function(variable, index, currentFileInfo) {\n this.variable = variable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n};\n\nVariableCall.prototype = Object.assign(new Node(), {\n type: 'VariableCall',\n\n eval(context) {\n let rules;\n let detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context);\n const error = new LessError({message: `Could not evaluate variable call ${this.variable}`});\n\n if (!detachedRuleset.ruleset) {\n if (detachedRuleset.rules) {\n rules = detachedRuleset;\n }\n else if (Array.isArray(detachedRuleset)) {\n rules = new Ruleset('', detachedRuleset);\n }\n else if (Array.isArray(detachedRuleset.value)) {\n rules = new Ruleset('', detachedRuleset.value);\n }\n else {\n throw error;\n }\n detachedRuleset = new DetachedRuleset(rules);\n }\n\n if (detachedRuleset.ruleset) {\n return detachedRuleset.callEval(context);\n }\n throw error;\n }\n});\n\nexport default VariableCall;\n",
+ "import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport Selector from './selector';\n\nconst NamespaceValue = function(ruleCall, lookups, index, fileInfo) {\n this.value = ruleCall;\n this.lookups = lookups;\n this._index = index;\n this._fileInfo = fileInfo;\n};\n\nNamespaceValue.prototype = Object.assign(new Node(), {\n type: 'NamespaceValue',\n\n eval(context) {\n let i, name, rules = this.value.eval(context);\n \n for (i = 0; i < this.lookups.length; i++) {\n name = this.lookups[i];\n\n /**\n * Eval'd DRs return rulesets.\n * Eval'd mixins return rules, so let's make a ruleset if we need it.\n * We need to do this because of late parsing of values\n */\n if (Array.isArray(rules)) {\n rules = new Ruleset([new Selector()], rules);\n }\n\n if (name === '') {\n rules = rules.lastDeclaration();\n }\n else if (name.charAt(0) === '@') {\n if (name.charAt(1) === '@') {\n name = `@${new Variable(name.substr(1)).eval(context).value}`;\n }\n if (rules.variables) {\n rules = rules.variable(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `variable ${name} not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n }\n else {\n if (name.substring(0, 2) === '$@') {\n name = `$${new Variable(name.substr(1)).eval(context).value}`;\n }\n else {\n name = name.charAt(0) === '$' ? name : `$${name}`;\n }\n if (rules.properties) {\n rules = rules.property(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `property \"${name.substr(1)}\" not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n // Properties are an array of values, since a ruleset can have multiple props.\n // We pick the last one (the \"cascaded\" value)\n rules = rules[rules.length - 1];\n }\n\n if (rules.value) {\n rules = rules.eval(context).value;\n }\n if (rules.ruleset) {\n rules = rules.ruleset.eval(context);\n }\n }\n return rules;\n }\n});\n\nexport default NamespaceValue;\n",
+ "import Selector from './selector';\nimport Element from './element';\nimport Ruleset from './ruleset';\nimport Declaration from './declaration';\nimport DetachedRuleset from './detached-ruleset';\nimport Expression from './expression';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst Definition = function(name, params, rules, condition, variadic, frames, visibilityInfo) {\n this.name = name || 'anonymous mixin';\n this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];\n this.params = params;\n this.condition = condition;\n this.variadic = variadic;\n this.arity = params.length;\n this.rules = rules;\n this._lookups = {};\n const optionalParameters = [];\n this.required = params.reduce(function (count, p) {\n if (!p.name || (p.name && !p.value)) {\n return count + 1;\n }\n else {\n optionalParameters.push(p.name);\n return count;\n }\n }, 0);\n this.optionalParameters = optionalParameters;\n this.frames = frames;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nDefinition.prototype = Object.assign(new Ruleset(), {\n type: 'MixinDefinition',\n evalFirst: true,\n\n accept(visitor) {\n if (this.params && this.params.length) {\n this.params = visitor.visitArray(this.params);\n }\n this.rules = visitor.visitArray(this.rules);\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n evalParams(context, mixinEnv, args, evaldArguments) {\n /* jshint boss:true */\n const frame = new Ruleset(null, null);\n\n let varargs;\n let arg;\n const params = utils.copyArray(this.params);\n let i;\n let j;\n let val;\n let name;\n let isNamedFound;\n let argIndex;\n let argsLength = 0;\n\n if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {\n frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();\n }\n mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));\n\n if (args) {\n args = utils.copyArray(args);\n argsLength = args.length;\n\n for (i = 0; i < argsLength; i++) {\n arg = args[i];\n if (name = (arg && arg.name)) {\n isNamedFound = false;\n for (j = 0; j < params.length; j++) {\n if (!evaldArguments[j] && name === params[j].name) {\n evaldArguments[j] = arg.value.eval(context);\n frame.prependRule(new Declaration(name, arg.value.eval(context)));\n isNamedFound = true;\n break;\n }\n }\n if (isNamedFound) {\n args.splice(i, 1);\n i--;\n continue;\n } else {\n throw { type: 'Runtime', message: `Named argument for ${this.name} ${args[i].name} not found` };\n }\n }\n }\n }\n argIndex = 0;\n for (i = 0; i < params.length; i++) {\n if (evaldArguments[i]) { continue; }\n\n arg = args && args[argIndex];\n\n if (name = params[i].name) {\n if (params[i].variadic) {\n varargs = [];\n for (j = argIndex; j < argsLength; j++) {\n varargs.push(args[j].value.eval(context));\n }\n frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));\n } else {\n val = arg && arg.value;\n if (val) {\n // This was a mixin call, pass in a detached ruleset of it's eval'd rules\n if (Array.isArray(val)) {\n val = new DetachedRuleset(new Ruleset('', val));\n }\n else {\n val = val.eval(context);\n }\n } else if (params[i].value) {\n val = params[i].value.eval(mixinEnv);\n frame.resetCache();\n } else {\n throw { type: 'Runtime', message: `wrong number of arguments for ${this.name} (${argsLength} for ${this.arity})` };\n }\n\n frame.prependRule(new Declaration(name, val));\n evaldArguments[i] = val;\n }\n }\n\n if (params[i].variadic && args) {\n for (j = argIndex; j < argsLength; j++) {\n evaldArguments[j] = args[j].value.eval(context);\n }\n }\n argIndex++;\n }\n\n return frame;\n },\n\n makeImportant() {\n const rules = !this.rules ? this.rules : this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant(true);\n } else {\n return r;\n }\n });\n const result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);\n return result;\n },\n\n eval(context) {\n return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));\n },\n\n evalCall(context, args, important) {\n const _arguments = [];\n const mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;\n const frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);\n let rules;\n let ruleset;\n\n frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));\n\n rules = utils.copyArray(this.rules);\n\n ruleset = new Ruleset(null, rules);\n ruleset.originalRuleset = this;\n ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));\n if (important) {\n ruleset = ruleset.makeImportant();\n }\n return ruleset;\n },\n\n matchCondition(args, context) {\n if (this.condition && !this.condition.eval(\n new contexts.Eval(context,\n [this.evalParams(context, /* the parameter variables */\n new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]\n .concat(this.frames || []) // the parent namespace/mixin frames\n .concat(context.frames)))) { // the current environment frames\n return false;\n }\n return true;\n },\n\n matchArgs(args, context) {\n const allArgsCnt = (args && args.length) || 0;\n let len;\n const optionalParameters = this.optionalParameters;\n const requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {\n if (optionalParameters.indexOf(p.name) < 0) {\n return count + 1;\n } else {\n return count;\n }\n }, 0);\n\n if (!this.variadic) {\n if (requiredArgsCnt < this.required) {\n return false;\n }\n if (allArgsCnt > this.params.length) {\n return false;\n }\n } else {\n if (requiredArgsCnt < (this.required - 1)) {\n return false;\n }\n }\n\n // check patterns\n len = Math.min(requiredArgsCnt, this.arity);\n\n for (let i = 0; i < len; i++) {\n if (!this.params[i].name && !this.params[i].variadic) {\n if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {\n return false;\n }\n }\n }\n return true;\n }\n});\n\nexport default Definition;\n",
+ "import Node from './node';\nimport Selector from './selector';\nimport MixinDefinition from './mixin-definition';\nimport defaultFunc from '../functions/default';\n\nconst MixinCall = function(elements, args, index, currentFileInfo, important) {\n this.selector = new Selector(elements);\n this.arguments = args || [];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.important = important;\n this.allowRoot = true;\n this.setParent(this.selector, this);\n};\n\nMixinCall.prototype = Object.assign(new Node(), {\n type: 'MixinCall',\n\n accept(visitor) {\n if (this.selector) {\n this.selector = visitor.visit(this.selector);\n }\n if (this.arguments.length) {\n this.arguments = visitor.visitArray(this.arguments);\n }\n },\n\n eval(context) {\n let mixins;\n let mixin;\n let mixinPath;\n const args = [];\n let arg;\n let argValue;\n const rules = [];\n let match = false;\n let i;\n let m;\n let f;\n let isRecursive;\n let isOneFound;\n const candidates = [];\n let candidate;\n const conditionResult = [];\n let defaultResult;\n const defFalseEitherCase = -1;\n const defNone = 0;\n const defTrue = 1;\n const defFalse = 2;\n let count;\n let originalRuleset;\n let noArgumentsFilter;\n\n this.selector = this.selector.eval(context);\n\n function calcDefGroup(mixin, mixinPath) {\n let f, p, namespace;\n\n for (f = 0; f < 2; f++) {\n conditionResult[f] = true;\n defaultFunc.value(f);\n for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {\n namespace = mixinPath[p];\n if (namespace.matchCondition) {\n conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);\n }\n }\n if (mixin.matchCondition) {\n conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);\n }\n }\n if (conditionResult[0] || conditionResult[1]) {\n if (conditionResult[0] != conditionResult[1]) {\n return conditionResult[1] ?\n defTrue : defFalse;\n }\n\n return defNone;\n }\n return defFalseEitherCase;\n }\n\n for (i = 0; i < this.arguments.length; i++) {\n arg = this.arguments[i];\n argValue = arg.value.eval(context);\n if (arg.expand && Array.isArray(argValue.value)) {\n argValue = argValue.value;\n for (m = 0; m < argValue.length; m++) {\n args.push({value: argValue[m]});\n }\n } else {\n args.push({name: arg.name, value: argValue});\n }\n }\n\n noArgumentsFilter = function(rule) {return rule.matchArgs(null, context);};\n\n for (i = 0; i < context.frames.length; i++) {\n if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {\n isOneFound = true;\n\n // To make `default()` function independent of definition order we have two \"subpasses\" here.\n // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),\n // and build candidate list with corresponding flags. Then, when we know all possible matches,\n // we make a final decision.\n\n for (m = 0; m < mixins.length; m++) {\n mixin = mixins[m].rule;\n mixinPath = mixins[m].path;\n isRecursive = false;\n for (f = 0; f < context.frames.length; f++) {\n if ((!(mixin instanceof MixinDefinition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {\n isRecursive = true;\n break;\n }\n }\n if (isRecursive) {\n continue;\n }\n\n if (mixin.matchArgs(args, context)) {\n candidate = {mixin, group: calcDefGroup(mixin, mixinPath)};\n\n if (candidate.group !== defFalseEitherCase) {\n candidates.push(candidate);\n }\n\n match = true;\n }\n }\n\n defaultFunc.reset();\n\n count = [0, 0, 0];\n for (m = 0; m < candidates.length; m++) {\n count[candidates[m].group]++;\n }\n\n if (count[defNone] > 0) {\n defaultResult = defFalse;\n } else {\n defaultResult = defTrue;\n if ((count[defTrue] + count[defFalse]) > 1) {\n throw { type: 'Runtime',\n message: `Ambiguous use of \\`default()\\` found when matching for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n }\n\n for (m = 0; m < candidates.length; m++) {\n candidate = candidates[m].group;\n if ((candidate === defNone) || (candidate === defaultResult)) {\n try {\n mixin = candidates[m].mixin;\n if (!(mixin instanceof MixinDefinition)) {\n originalRuleset = mixin.originalRuleset || mixin;\n mixin = new MixinDefinition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());\n mixin.originalRuleset = originalRuleset;\n }\n const newRules = mixin.evalCall(context, args, this.important).rules;\n this._setVisibilityToReplacement(newRules);\n Array.prototype.push.apply(rules, newRules);\n } catch (e) {\n throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };\n }\n }\n }\n\n if (match) {\n return rules;\n }\n }\n }\n if (isOneFound) {\n throw { type: 'Runtime',\n message: `No matching definition was found for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n } else {\n throw { type: 'Name',\n message: `${this.selector.toCSS().trim()} is undefined`,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n },\n\n _setVisibilityToReplacement(replacement) {\n let i, rule;\n if (this.blocksVisibility()) {\n for (i = 0; i < replacement.length; i++) {\n rule = replacement[i];\n rule.addVisibilityBlock();\n }\n }\n },\n\n format(args) {\n return `${this.selector.toCSS().trim()}(${args ? args.map(function (a) {\n let argValue = '';\n if (a.name) {\n argValue += `${a.name}:`;\n }\n if (a.value.toCSS) {\n argValue += a.value.toCSS();\n } else {\n argValue += '???';\n }\n return argValue;\n }).join(', ') : ''})`;\n }\n});\n\nexport default MixinCall;\n",
+ "import Node from './node';\nimport Color from './color';\nimport AtRule from './atrule';\nimport DetachedRuleset from './detached-ruleset';\nimport Operation from './operation';\nimport Dimension from './dimension';\nimport Unit from './unit';\nimport Keyword from './keyword';\nimport Variable from './variable';\nimport Property from './property';\nimport Ruleset from './ruleset';\nimport Element from './element';\nimport Attribute from './attribute';\nimport Combinator from './combinator';\nimport Selector from './selector';\nimport Quoted from './quoted';\nimport Expression from './expression';\nimport Declaration from './declaration';\nimport Call from './call';\nimport URL from './url';\nimport Import from './import';\nimport Comment from './comment';\nimport Anonymous from './anonymous';\nimport Value from './value';\nimport JavaScript from './javascript';\nimport Assignment from './assignment';\nimport Condition from './condition';\nimport QueryInParens from './query-in-parens';\nimport Paren from './paren';\nimport Media from './media';\nimport Container from './container';\nimport UnicodeDescriptor from './unicode-descriptor';\nimport Negative from './negative';\nimport Extend from './extend';\nimport VariableCall from './variable-call';\nimport NamespaceValue from './namespace-value';\n\n// mixins\nimport MixinCall from './mixin-call';\nimport MixinDefinition from './mixin-definition';\n\nexport default {\n Node, Color, AtRule, DetachedRuleset, Operation,\n Dimension, Unit, Keyword, Variable, Property,\n Ruleset, Element, Attribute, Combinator, Selector,\n Quoted, Expression, Declaration, Call, URL, Import,\n Comment, Anonymous, Value, JavaScript, Assignment,\n Condition, Paren, Media, Container, QueryInParens, \n UnicodeDescriptor, Negative, Extend, VariableCall, \n NamespaceValue,\n mixin: {\n Call: MixinCall,\n Definition: MixinDefinition\n }\n};",
+ "class AbstractFileManager {\n getPath(filename) {\n let j = filename.lastIndexOf('?');\n if (j > 0) {\n filename = filename.slice(0, j);\n }\n j = filename.lastIndexOf('/');\n if (j < 0) {\n j = filename.lastIndexOf('\\\\');\n }\n if (j < 0) {\n return '';\n }\n return filename.slice(0, j + 1);\n }\n\n tryAppendExtension(path, ext) {\n return /(\\.[a-z]*$)|([?;].*)$/.test(path) ? path : path + ext;\n }\n\n tryAppendLessExtension(path) {\n return this.tryAppendExtension(path, '.less');\n }\n\n supportsSync() {\n return false;\n }\n\n alwaysMakePathsAbsolute() {\n return false;\n }\n\n isPathAbsolute(filename) {\n return (/^(?:[a-z-]+:|\\/|\\\\|#)/i).test(filename);\n }\n\n // TODO: pull out / replace?\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return basePath + laterPath;\n }\n\n pathDiff(url, baseUrl) {\n // diff between two paths to create a relative path\n\n const urlParts = this.extractUrlParts(url);\n\n const baseUrlParts = this.extractUrlParts(baseUrl);\n let i;\n let max;\n let urlDirectories;\n let baseUrlDirectories;\n let diff = '';\n if (urlParts.hostPart !== baseUrlParts.hostPart) {\n return '';\n }\n max = Math.max(baseUrlParts.directories.length, urlParts.directories.length);\n for (i = 0; i < max; i++) {\n if (baseUrlParts.directories[i] !== urlParts.directories[i]) { break; }\n }\n baseUrlDirectories = baseUrlParts.directories.slice(i);\n urlDirectories = urlParts.directories.slice(i);\n for (i = 0; i < baseUrlDirectories.length - 1; i++) {\n diff += '../';\n }\n for (i = 0; i < urlDirectories.length - 1; i++) {\n diff += `${urlDirectories[i]}/`;\n }\n return diff;\n }\n\n /**\n * Helper function, not part of API.\n * This should be replaceable by newer Node / Browser APIs\n * \n * @param {string} url \n * @param {string} baseUrl\n */\n extractUrlParts(url, baseUrl) {\n // urlParts[1] = protocol://hostname/ OR /\n // urlParts[2] = / if path relative to host base\n // urlParts[3] = directories\n // urlParts[4] = filename\n // urlParts[5] = parameters\n\n const urlPartsRegex = /^((?:[a-z-]+:)?\\/{2}(?:[^/?#]*\\/)|([/\\\\]))?((?:[^/\\\\?#]*[/\\\\])*)([^/\\\\?#]*)([#?].*)?$/i;\n\n const urlParts = url.match(urlPartsRegex);\n const returner = {};\n let rawDirectories = [];\n const directories = [];\n let i;\n let baseUrlParts;\n\n if (!urlParts) {\n throw new Error(`Could not parse sheet href - '${url}'`);\n }\n\n // Stylesheets in IE don't always return the full path\n if (baseUrl && (!urlParts[1] || urlParts[2])) {\n baseUrlParts = baseUrl.match(urlPartsRegex);\n if (!baseUrlParts) {\n throw new Error(`Could not parse page url - '${baseUrl}'`);\n }\n urlParts[1] = urlParts[1] || baseUrlParts[1] || '';\n if (!urlParts[2]) {\n urlParts[3] = baseUrlParts[3] + urlParts[3];\n }\n }\n\n if (urlParts[3]) {\n rawDirectories = urlParts[3].replace(/\\\\/g, '/').split('/');\n\n // collapse '..' and skip '.'\n for (i = 0; i < rawDirectories.length; i++) {\n\n if (rawDirectories[i] === '..') {\n directories.pop();\n }\n else if (rawDirectories[i] !== '.') {\n directories.push(rawDirectories[i]);\n }\n \n }\n }\n\n returner.hostPart = urlParts[1];\n returner.directories = directories;\n returner.rawPath = (urlParts[1] || '') + rawDirectories.join('/');\n returner.path = (urlParts[1] || '') + directories.join('/');\n returner.filename = urlParts[4];\n returner.fileUrl = returner.path + (urlParts[4] || '');\n returner.url = returner.fileUrl + (urlParts[5] || '');\n return returner;\n }\n}\n\nexport default AbstractFileManager;\n",
+ "import functionRegistry from '../functions/function-registry';\nimport LessError from '../less-error';\n\nclass AbstractPluginLoader {\n constructor() {\n // Implemented by Node.js plugin loader\n this.require = function() {\n return null;\n }\n }\n\n evalPlugin(contents, context, imports, pluginOptions, fileInfo) {\n\n let loader, registry, pluginObj, localModule, pluginManager, filename, result;\n\n pluginManager = context.pluginManager;\n\n if (fileInfo) {\n if (typeof fileInfo === 'string') {\n filename = fileInfo;\n }\n else {\n filename = fileInfo.filename;\n }\n }\n const shortname = (new this.less.FileManager()).extractUrlParts(filename).filename;\n\n if (filename) {\n pluginObj = pluginManager.get(filename);\n\n if (pluginObj) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n return pluginObj;\n }\n }\n localModule = {\n exports: {},\n pluginManager,\n fileInfo\n };\n registry = functionRegistry.create();\n\n const registerPlugin = function(obj) {\n pluginObj = obj;\n };\n\n try {\n loader = new Function('module', 'require', 'registerPlugin', 'functions', 'tree', 'less', 'fileInfo', contents);\n loader(localModule, this.require(filename), registerPlugin, registry, this.less.tree, this.less, fileInfo);\n }\n catch (e) {\n return new LessError(e, imports, filename);\n }\n\n if (!pluginObj) {\n pluginObj = localModule.exports;\n }\n pluginObj = this.validatePlugin(pluginObj, filename, shortname);\n\n if (pluginObj instanceof LessError) {\n return pluginObj;\n }\n\n if (pluginObj) {\n pluginObj.imports = imports;\n pluginObj.filename = filename;\n\n // For < 3.x (or unspecified minVersion) - setOptions() before install()\n if (!pluginObj.minVersion || this.compareVersion('3.0.0', pluginObj.minVersion) < 0) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n\n if (result) {\n return result;\n }\n }\n\n // Run on first load\n pluginManager.addPlugin(pluginObj, fileInfo.filename, registry);\n pluginObj.functions = registry.getLocalFunctions();\n\n // Need to call setOptions again because the pluginObj might have functions\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n\n // Run every @plugin call\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n\n }\n else {\n return new LessError({ message: 'Not a valid plugin' }, imports, filename);\n }\n\n return pluginObj;\n\n }\n\n trySetOptions(plugin, filename, name, options) {\n if (options && !plugin.setOptions) {\n return new LessError({\n message: `Options have been provided but the plugin ${name} does not support any options.`\n });\n }\n try {\n plugin.setOptions && plugin.setOptions(options);\n }\n catch (e) {\n return new LessError(e);\n }\n }\n\n validatePlugin(plugin, filename, name) {\n if (plugin) {\n // support plugins being a function\n // so that the plugin can be more usable programmatically\n if (typeof plugin === 'function') {\n plugin = new plugin();\n }\n\n if (plugin.minVersion) {\n if (this.compareVersion(plugin.minVersion, this.less.version) < 0) {\n return new LessError({\n message: `Plugin ${name} requires version ${this.versionToString(plugin.minVersion)}`\n });\n }\n }\n return plugin;\n }\n return null;\n }\n\n compareVersion(aVersion, bVersion) {\n if (typeof aVersion === 'string') {\n aVersion = aVersion.match(/^(\\d+)\\.?(\\d+)?\\.?(\\d+)?/);\n aVersion.shift();\n }\n for (let i = 0; i < aVersion.length; i++) {\n if (aVersion[i] !== bVersion[i]) {\n return parseInt(aVersion[i]) > parseInt(bVersion[i]) ? -1 : 1;\n }\n }\n return 0;\n }\n\n versionToString(version) {\n let versionString = '';\n for (let i = 0; i < version.length; i++) {\n versionString += (versionString ? '.' : '') + version[i];\n }\n return versionString;\n }\n\n printUsage(plugins) {\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n if (plugin.printUsage) {\n plugin.printUsage();\n }\n }\n }\n}\n\nexport default AbstractPluginLoader;\n\n",
+ "import Anonymous from '../tree/anonymous';\nimport Keyword from '../tree/keyword';\n\nfunction boolean(condition) {\n return condition ? Keyword.True : Keyword.False;\n}\n\n/**\n * Functions with evalArgs set to false are sent context\n * as the first argument.\n */\nfunction If(context, condition, trueValue, falseValue) {\n return condition.eval(context) ? trueValue.eval(context)\n : (falseValue ? falseValue.eval(context) : new Anonymous);\n}\nIf.evalArgs = false;\n\nfunction isdefined(context, variable) {\n try {\n variable.eval(context);\n return Keyword.True;\n } catch (e) {\n return Keyword.False;\n }\n}\n\nisdefined.evalArgs = false;\n\nexport default { isdefined, boolean, 'if': If };\n",
+ "import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport Expression from '../tree/expression';\nimport Operation from '../tree/operation';\nlet colorFunctions;\n\nfunction clamp(val) {\n return Math.min(1, Math.max(0, val));\n}\nfunction hsla(origColor, hsl) {\n const color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);\n if (color) {\n if (origColor.value && \n /^(rgb|hsl)/.test(origColor.value)) {\n color.value = origColor.value;\n } else {\n color.value = 'rgb';\n }\n return color;\n }\n}\nfunction toHSL(color) {\n if (color.toHSL) {\n return color.toHSL();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction toHSV(color) {\n if (color.toHSV) {\n return color.toHSV();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction number(n) {\n if (n instanceof Dimension) {\n return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);\n } else if (typeof n === 'number') {\n return n;\n } else {\n throw {\n type: 'Argument',\n message: 'color functions take numbers as parameters'\n };\n }\n}\nfunction scaled(n, size) {\n if (n instanceof Dimension && n.unit.is('%')) {\n return parseFloat(n.value * size / 100);\n } else {\n return number(n);\n }\n}\ncolorFunctions = {\n rgb: function (r, g, b) {\n let a = 1\n /**\n * Comma-less syntax\n * e.g. rgb(0 128 255 / 50%)\n */\n if (r instanceof Expression) {\n const val = r.value\n r = val[0]\n g = val[1]\n b = val[2]\n /** \n * @todo - should this be normalized in\n * function caller? Or parsed differently?\n */\n if (b instanceof Operation) {\n const op = b\n b = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.rgba(r, g, b, a);\n if (color) {\n color.value = 'rgb';\n return color;\n }\n },\n rgba: function (r, g, b, a) {\n try {\n if (r instanceof Color) {\n if (g) {\n a = number(g);\n } else {\n a = r.alpha;\n }\n return new Color(r.rgb, a, 'rgba');\n }\n const rgb = [r, g, b].map(c => scaled(c, 255));\n a = number(a);\n return new Color(rgb, a, 'rgba');\n }\n catch (e) {}\n },\n hsl: function (h, s, l) {\n let a = 1\n if (h instanceof Expression) {\n const val = h.value\n h = val[0]\n s = val[1]\n l = val[2]\n\n if (l instanceof Operation) {\n const op = l\n l = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.hsla(h, s, l, a);\n if (color) {\n color.value = 'hsl';\n return color;\n }\n },\n hsla: function (h, s, l, a) {\n let m1;\n let m2;\n\n function hue(h) {\n h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n else if (h * 2 < 1) {\n return m2;\n }\n else if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n else {\n return m1;\n }\n }\n\n try {\n if (h instanceof Color) {\n if (s) {\n a = number(s);\n } else {\n a = h.alpha;\n }\n return new Color(h.rgb, a, 'hsla');\n }\n\n h = (number(h) % 360) / 360;\n s = clamp(number(s));l = clamp(number(l));a = clamp(number(a));\n\n m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n m1 = l * 2 - m2;\n\n const rgb = [\n hue(h + 1 / 3) * 255,\n hue(h) * 255,\n hue(h - 1 / 3) * 255\n ];\n a = number(a);\n return new Color(rgb, a, 'hsla');\n }\n catch (e) {}\n },\n\n hsv: function(h, s, v) {\n return colorFunctions.hsva(h, s, v, 1.0);\n },\n\n hsva: function(h, s, v, a) {\n h = ((number(h) % 360) / 360) * 360;\n s = number(s);v = number(v);a = number(a);\n\n let i;\n let f;\n i = Math.floor((h / 60) % 6);\n f = (h / 60) - i;\n\n const vs = [v,\n v * (1 - s),\n v * (1 - f * s),\n v * (1 - (1 - f) * s)];\n const perm = [[0, 3, 1],\n [2, 0, 1],\n [1, 0, 3],\n [1, 2, 0],\n [3, 1, 0],\n [0, 1, 2]];\n\n return colorFunctions.rgba(vs[perm[i][0]] * 255,\n vs[perm[i][1]] * 255,\n vs[perm[i][2]] * 255,\n a);\n },\n\n hue: function (color) {\n return new Dimension(toHSL(color).h);\n },\n saturation: function (color) {\n return new Dimension(toHSL(color).s * 100, '%');\n },\n lightness: function (color) {\n return new Dimension(toHSL(color).l * 100, '%');\n },\n hsvhue: function(color) {\n return new Dimension(toHSV(color).h);\n },\n hsvsaturation: function (color) {\n return new Dimension(toHSV(color).s * 100, '%');\n },\n hsvvalue: function (color) {\n return new Dimension(toHSV(color).v * 100, '%');\n },\n red: function (color) {\n return new Dimension(color.rgb[0]);\n },\n green: function (color) {\n return new Dimension(color.rgb[1]);\n },\n blue: function (color) {\n return new Dimension(color.rgb[2]);\n },\n alpha: function (color) {\n return new Dimension(toHSL(color).a);\n },\n luma: function (color) {\n return new Dimension(color.luma() * color.alpha * 100, '%');\n },\n luminance: function (color) {\n const luminance =\n (0.2126 * color.rgb[0] / 255) +\n (0.7152 * color.rgb[1] / 255) +\n (0.0722 * color.rgb[2] / 255);\n\n return new Dimension(luminance * color.alpha * 100, '%');\n },\n saturate: function (color, amount, method) {\n // filter: saturate(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s += hsl.s * amount.value / 100;\n }\n else {\n hsl.s += amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n desaturate: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s -= hsl.s * amount.value / 100;\n }\n else {\n hsl.s -= amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n lighten: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l += hsl.l * amount.value / 100;\n }\n else {\n hsl.l += amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n darken: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l -= hsl.l * amount.value / 100;\n }\n else {\n hsl.l -= amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n fadein: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a += hsl.a * amount.value / 100;\n }\n else {\n hsl.a += amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fadeout: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a -= hsl.a * amount.value / 100;\n }\n else {\n hsl.a -= amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fade: function (color, amount) {\n const hsl = toHSL(color);\n\n hsl.a = amount.value / 100;\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n spin: function (color, amount) {\n const hsl = toHSL(color);\n const hue = (hsl.h + amount.value) % 360;\n\n hsl.h = hue < 0 ? 360 + hue : hue;\n\n return hsla(color, hsl);\n },\n //\n // Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein\n // http://sass-lang.com\n //\n mix: function (color1, color2, weight) {\n if (!weight) {\n weight = new Dimension(50);\n }\n const p = weight.value / 100.0;\n const w = p * 2 - 1;\n const a = toHSL(color1).a - toHSL(color2).a;\n\n const w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n const w2 = 1 - w1;\n\n const rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,\n color1.rgb[1] * w1 + color2.rgb[1] * w2,\n color1.rgb[2] * w1 + color2.rgb[2] * w2];\n\n const alpha = color1.alpha * p + color2.alpha * (1 - p);\n\n return new Color(rgb, alpha);\n },\n greyscale: function (color) {\n return colorFunctions.desaturate(color, new Dimension(100));\n },\n contrast: function (color, dark, light, threshold) {\n // filter: contrast(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n if (typeof light === 'undefined') {\n light = colorFunctions.rgba(255, 255, 255, 1.0);\n }\n if (typeof dark === 'undefined') {\n dark = colorFunctions.rgba(0, 0, 0, 1.0);\n }\n // Figure out which is actually light and dark:\n if (dark.luma() > light.luma()) {\n const t = light;\n light = dark;\n dark = t;\n }\n if (typeof threshold === 'undefined') {\n threshold = 0.43;\n } else {\n threshold = number(threshold);\n }\n if (color.luma() < threshold) {\n return light;\n } else {\n return dark;\n }\n },\n // Changes made in 2.7.0 - Reverted in 3.0.0\n // contrast: function (color, color1, color2, threshold) {\n // // Return which of `color1` and `color2` has the greatest contrast with `color`\n // // according to the standard WCAG contrast ratio calculation.\n // // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n // // The threshold param is no longer used, in line with SASS.\n // // filter: contrast(3.2);\n // // should be kept as is, so check for color\n // if (!color.rgb) {\n // return null;\n // }\n // if (typeof color1 === 'undefined') {\n // color1 = colorFunctions.rgba(0, 0, 0, 1.0);\n // }\n // if (typeof color2 === 'undefined') {\n // color2 = colorFunctions.rgba(255, 255, 255, 1.0);\n // }\n // var contrast1, contrast2;\n // var luma = color.luma();\n // var luma1 = color1.luma();\n // var luma2 = color2.luma();\n // // Calculate contrast ratios for each color\n // if (luma > luma1) {\n // contrast1 = (luma + 0.05) / (luma1 + 0.05);\n // } else {\n // contrast1 = (luma1 + 0.05) / (luma + 0.05);\n // }\n // if (luma > luma2) {\n // contrast2 = (luma + 0.05) / (luma2 + 0.05);\n // } else {\n // contrast2 = (luma2 + 0.05) / (luma + 0.05);\n // }\n // if (contrast1 > contrast2) {\n // return color1;\n // } else {\n // return color2;\n // }\n // },\n argb: function (color) {\n return new Anonymous(color.toARGB());\n },\n color: function(c) {\n if ((c instanceof Quoted) &&\n (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) {\n const val = c.value.slice(1);\n return new Color(val, undefined, `#${val}`);\n }\n if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) {\n c.value = undefined;\n return c;\n }\n throw {\n type: 'Argument',\n message: 'argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF'\n };\n },\n tint: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(255, 255, 255), color, amount);\n },\n shade: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount);\n }\n};\n\nexport default colorFunctions;\n",
+ "import Color from '../tree/color';\n\n// Color Blending\n// ref: http://www.w3.org/TR/compositing-1\n\nfunction colorBlend(mode, color1, color2) {\n const ab = color1.alpha; // result\n\n let // backdrop\n cb;\n\n const as = color2.alpha;\n\n let // source\n cs;\n\n let ar;\n let cr;\n const r = [];\n\n ar = as + ab * (1 - as);\n for (let i = 0; i < 3; i++) {\n cb = color1.rgb[i] / 255;\n cs = color2.rgb[i] / 255;\n cr = mode(cb, cs);\n if (ar) {\n cr = (as * cs + ab * (cb -\n as * (cb + cs - cr))) / ar;\n }\n r[i] = cr * 255;\n }\n\n return new Color(r, ar);\n}\n\nconst colorBlendModeFunctions = {\n multiply: function(cb, cs) {\n return cb * cs;\n },\n screen: function(cb, cs) {\n return cb + cs - cb * cs;\n },\n overlay: function(cb, cs) {\n cb *= 2;\n return (cb <= 1) ?\n colorBlendModeFunctions.multiply(cb, cs) :\n colorBlendModeFunctions.screen(cb - 1, cs);\n },\n softlight: function(cb, cs) {\n let d = 1;\n let e = cb;\n if (cs > 0.5) {\n e = 1;\n d = (cb > 0.25) ? Math.sqrt(cb)\n : ((16 * cb - 12) * cb + 4) * cb;\n }\n return cb - (1 - 2 * cs) * e * (d - cb);\n },\n hardlight: function(cb, cs) {\n return colorBlendModeFunctions.overlay(cs, cb);\n },\n difference: function(cb, cs) {\n return Math.abs(cb - cs);\n },\n exclusion: function(cb, cs) {\n return cb + cs - 2 * cb * cs;\n },\n\n // non-w3c functions:\n average: function(cb, cs) {\n return (cb + cs) / 2;\n },\n negation: function(cb, cs) {\n return 1 - Math.abs(cb + cs - 1);\n }\n};\n\nfor (const f in colorBlendModeFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (colorBlendModeFunctions.hasOwnProperty(f)) {\n colorBlend[f] = colorBlend.bind(null, colorBlendModeFunctions[f]);\n }\n}\n\nexport default colorBlend;\n",
+ "import Quoted from '../tree/quoted';\nimport URL from '../tree/url';\nimport * as utils from '../utils';\nimport logger from '../logger';\n\nexport default environment => {\n \n const fallback = (functionThis, node) => new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context); \n\n return { 'data-uri': function(mimetypeNode, filePathNode) {\n\n if (!filePathNode) {\n filePathNode = mimetypeNode;\n mimetypeNode = null;\n }\n\n let mimetype = mimetypeNode && mimetypeNode.value;\n let filePath = filePathNode.value;\n const currentFileInfo = this.currentFileInfo;\n const currentDirectory = currentFileInfo.rewriteUrls ?\n currentFileInfo.currentDirectory : currentFileInfo.entryPath;\n\n const fragmentStart = filePath.indexOf('#');\n let fragment = '';\n if (fragmentStart !== -1) {\n fragment = filePath.slice(fragmentStart);\n filePath = filePath.slice(0, fragmentStart);\n }\n const context = utils.clone(this.context);\n context.rawBuffer = true;\n\n const fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);\n\n if (!fileManager) {\n return fallback(this, filePathNode);\n }\n\n let useBase64 = false;\n\n // detect the mimetype if not given\n if (!mimetypeNode) {\n\n mimetype = environment.mimeLookup(filePath);\n\n if (mimetype === 'image/svg+xml') {\n useBase64 = false;\n } else {\n // use base 64 unless it's an ASCII or UTF-8 format\n const charset = environment.charsetLookup(mimetype);\n useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;\n }\n if (useBase64) { mimetype += ';base64'; }\n }\n else {\n useBase64 = /;base64$/.test(mimetype);\n }\n\n const fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);\n if (!fileSync.contents) {\n logger.warn(`Skipped data-uri embedding of ${filePath} because file not found`);\n return fallback(this, filePathNode || mimetypeNode);\n }\n let buf = fileSync.contents;\n if (useBase64 && !environment.encodeBase64) {\n return fallback(this, filePathNode);\n }\n\n buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf);\n\n const uri = `data:${mimetype},${buf}${fragment}`;\n\n return new URL(new Quoted(`\"${uri}\"`, uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n",
+ "import Comment from '../tree/comment';\nimport Node from '../tree/node';\nimport Dimension from '../tree/dimension';\nimport Declaration from '../tree/declaration';\nimport Expression from '../tree/expression';\nimport Ruleset from '../tree/ruleset';\nimport Selector from '../tree/selector';\nimport Element from '../tree/element';\nimport Quote from '../tree/quoted';\nimport Value from '../tree/value';\n\nconst getItemsFromNode = node => {\n // handle non-array values as an array of length 1\n // return 'undefined' if index is invalid\n const items = Array.isArray(node.value) ?\n node.value : Array(node);\n\n return items;\n};\n\nexport default {\n _SELF: function(n) {\n return n;\n },\n '~': function(...expr) {\n if (expr.length === 1) {\n return expr[0];\n }\n return new Value(expr);\n },\n extract: function(values, index) {\n // (1-based index)\n index = index.value - 1;\n\n return getItemsFromNode(values)[index];\n },\n length: function(values) {\n return new Dimension(getItemsFromNode(values).length);\n },\n /**\n * Creates a Less list of incremental values.\n * Modeled after Lodash's range function, also exists natively in PHP\n * \n * @param {Dimension} [start=1]\n * @param {Dimension} end - e.g. 10 or 10px - unit is added to output\n * @param {Dimension} [step=1] \n */\n range: function(start, end, step) {\n let from;\n let to;\n let stepValue = 1;\n const list = [];\n if (end) {\n to = end;\n from = start.value;\n if (step) {\n stepValue = step.value;\n }\n }\n else {\n from = 1;\n to = start;\n }\n\n for (let i = from; i <= to.value; i += stepValue) {\n list.push(new Dimension(i, to.unit));\n }\n\n return new Expression(list);\n },\n each: function(list, rs) {\n const rules = [];\n let newRules;\n let iterator;\n\n const tryEval = val => {\n if (val instanceof Node) {\n return val.eval(this.context);\n }\n return val;\n };\n\n if (list.value && !(list instanceof Quote)) {\n if (Array.isArray(list.value)) {\n iterator = list.value.map(tryEval);\n } else {\n iterator = [tryEval(list.value)];\n }\n } else if (list.ruleset) {\n iterator = tryEval(list.ruleset).rules;\n } else if (list.rules) {\n iterator = list.rules.map(tryEval);\n } else if (Array.isArray(list)) {\n iterator = list.map(tryEval);\n } else {\n iterator = [tryEval(list)];\n }\n\n let valueName = '@value';\n let keyName = '@key';\n let indexName = '@index';\n\n if (rs.params) {\n valueName = rs.params[0] && rs.params[0].name;\n keyName = rs.params[1] && rs.params[1].name;\n indexName = rs.params[2] && rs.params[2].name;\n rs = rs.rules;\n } else {\n rs = rs.ruleset;\n }\n\n for (let i = 0; i < iterator.length; i++) {\n let key;\n let value;\n const item = iterator[i];\n if (item instanceof Declaration) {\n key = typeof item.name === 'string' ? item.name : item.name[0].value;\n value = item.value;\n } else {\n key = new Dimension(i + 1);\n value = item;\n }\n\n if (item instanceof Comment) {\n continue;\n }\n\n newRules = rs.rules.slice(0);\n if (valueName) {\n newRules.push(new Declaration(valueName,\n value,\n false, false, this.index, this.currentFileInfo));\n }\n if (indexName) {\n newRules.push(new Declaration(indexName,\n new Dimension(i + 1),\n false, false, this.index, this.currentFileInfo));\n }\n if (keyName) {\n newRules.push(new Declaration(keyName,\n key,\n false, false, this.index, this.currentFileInfo));\n }\n\n rules.push(new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n newRules,\n rs.strictImports,\n rs.visibilityInfo()\n ));\n }\n\n return new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n rules,\n rs.strictImports,\n rs.visibilityInfo()\n ).eval(this.context);\n }\n};\n",
+ "import Dimension from '../tree/dimension';\n\nconst MathHelper = (fn, unit, n) => {\n if (!(n instanceof Dimension)) {\n throw { type: 'Argument', message: 'argument must be a number' };\n }\n if (unit === null) {\n unit = n.unit;\n } else {\n n = n.unify();\n }\n return new Dimension(fn(parseFloat(n.value)), unit);\n};\n\nexport default MathHelper;",
+ "import mathHelper from './math-helper.js';\n\nconst mathFunctions = {\n // name, unit\n ceil: null,\n floor: null,\n sqrt: null,\n abs: null,\n tan: '',\n sin: '',\n cos: '',\n atan: 'rad',\n asin: 'rad',\n acos: 'rad'\n};\n\nfor (const f in mathFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (mathFunctions.hasOwnProperty(f)) {\n mathFunctions[f] = mathHelper.bind(null, Math[f], mathFunctions[f]);\n }\n}\n\nmathFunctions.round = (n, f) => {\n const fraction = typeof f === 'undefined' ? 0 : f.value;\n return mathHelper(num => num.toFixed(fraction), null, n);\n};\n\nexport default mathFunctions;\n",
+ "import Dimension from '../tree/dimension';\nimport Anonymous from '../tree/anonymous';\nimport mathHelper from './math-helper.js';\n\nconst minMax = function (isMin, args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n let i; // key is the unit.toString() for unified Dimension values,\n let j;\n let current;\n let currentUnified;\n let referenceUnified;\n let unit;\n let unitStatic;\n let unitClone;\n\n const // elems only contains original argument values.\n order = [];\n\n const values = {};\n // value is the index into the order array.\n for (i = 0; i < args.length; i++) {\n current = args[i];\n if (!(current instanceof Dimension)) {\n if (Array.isArray(args[i].value)) {\n Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value));\n continue;\n } else {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n }\n currentUnified = current.unit.toString() === '' && unitClone !== undefined ? new Dimension(current.value, unitClone).unify() : current.unify();\n unit = currentUnified.unit.toString() === '' && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString();\n unitStatic = unit !== '' && unitStatic === undefined || unit !== '' && order[0].unify().unit.toString() === '' ? unit : unitStatic;\n unitClone = unit !== '' && unitClone === undefined ? current.unit.toString() : unitClone;\n j = values[''] !== undefined && unit !== '' && unit === unitStatic ? values[''] : values[unit];\n if (j === undefined) {\n if (unitStatic !== undefined && unit !== unitStatic) {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n values[unit] = order.length;\n order.push(current);\n continue;\n }\n referenceUnified = order[j].unit.toString() === '' && unitClone !== undefined ? new Dimension(order[j].value, unitClone).unify() : order[j].unify();\n if ( isMin && currentUnified.value < referenceUnified.value ||\n !isMin && currentUnified.value > referenceUnified.value) {\n order[j] = current;\n }\n }\n if (order.length == 1) {\n return order[0];\n }\n args = order.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n return new Anonymous(`${isMin ? 'min' : 'max'}(${args})`);\n};\n\nexport default {\n min: function(...args) {\n try {\n return minMax.call(this, true, args);\n } catch (e) {}\n },\n max: function(...args) {\n try {\n return minMax.call(this, false, args);\n } catch (e) {}\n },\n convert: function (val, unit) {\n return val.convertTo(unit.value);\n },\n pi: function () {\n return new Dimension(Math.PI);\n },\n mod: function(a, b) {\n return new Dimension(a.value % b.value, a.unit);\n },\n pow: function(x, y) {\n if (typeof x === 'number' && typeof y === 'number') {\n x = new Dimension(x);\n y = new Dimension(y);\n } else if (!(x instanceof Dimension) || !(y instanceof Dimension)) {\n throw { type: 'Argument', message: 'arguments must be numbers' };\n }\n\n return new Dimension(Math.pow(x.value, y.value), x.unit);\n },\n percentage: function (n) {\n const result = mathHelper(num => num * 100, '%', n);\n\n return result;\n }\n};\n",
+ "import Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport JavaScript from '../tree/javascript';\n\nexport default {\n e: function (str) {\n return new Quoted('\"', str instanceof JavaScript ? str.evaluated : str.value, true);\n },\n escape: function (str) {\n return new Anonymous(\n encodeURI(str.value).replace(/=/g, '%3D').replace(/:/g, '%3A').replace(/#/g, '%23').replace(/;/g, '%3B')\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29'));\n },\n replace: function (string, pattern, replacement, flags) {\n let result = string.value;\n replacement = (replacement.type === 'Quoted') ?\n replacement.value : replacement.toCSS();\n result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement);\n return new Quoted(string.quote || '', result, string.escaped);\n },\n '%': function (string /* arg, arg, ... */) {\n const args = Array.prototype.slice.call(arguments, 1);\n let result = string.value;\n\n for (let i = 0; i < args.length; i++) {\n /* jshint loopfunc:true */\n result = result.replace(/%[sda]/i, token => {\n const value = ((args[i].type === 'Quoted') &&\n token.match(/s/i)) ? args[i].value : args[i].toCSS();\n return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value;\n });\n }\n result = result.replace(/%%/g, '%');\n return new Quoted(string.quote || '', result, string.escaped);\n }\n};\n",
+ "import Keyword from '../tree/keyword';\nimport DetachedRuleset from '../tree/detached-ruleset';\nimport Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport URL from '../tree/url';\nimport Operation from '../tree/operation';\n\nconst isa = (n, Type) => (n instanceof Type) ? Keyword.True : Keyword.False;\nconst isunit = (n, unit) => {\n if (unit === undefined) {\n throw { type: 'Argument', message: 'missing the required second argument to isunit.' };\n }\n unit = typeof unit.value === 'string' ? unit.value : unit;\n if (typeof unit !== 'string') {\n throw { type: 'Argument', message: 'Second argument to isunit should be a unit or a string.' };\n }\n return (n instanceof Dimension) && n.unit.is(unit) ? Keyword.True : Keyword.False;\n};\n\nexport default {\n isruleset: function (n) {\n return isa(n, DetachedRuleset);\n },\n iscolor: function (n) {\n return isa(n, Color);\n },\n isnumber: function (n) {\n return isa(n, Dimension);\n },\n isstring: function (n) {\n return isa(n, Quoted);\n },\n iskeyword: function (n) {\n return isa(n, Keyword);\n },\n isurl: function (n) {\n return isa(n, URL);\n },\n ispixel: function (n) {\n return isunit(n, 'px');\n },\n ispercentage: function (n) {\n return isunit(n, '%');\n },\n isem: function (n) {\n return isunit(n, 'em');\n },\n isunit,\n unit: function (val, unit) {\n if (!(val instanceof Dimension)) {\n throw { type: 'Argument',\n message: `the first argument to unit must be a number${val instanceof Operation ? '. Have you forgotten parenthesis?' : ''}` };\n }\n if (unit) {\n if (unit instanceof Keyword) {\n unit = unit.value;\n } else {\n unit = unit.toCSS();\n }\n } else {\n unit = '';\n }\n return new Dimension(val.value, unit);\n },\n 'get-unit': function (n) {\n return new Anonymous(n.unit);\n }\n};\n",
+ "import Variable from '../tree/variable';\nimport Anonymous from '../tree/variable';\n\nconst styleExpression = function (args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n \n const entityList = [new Variable(args[0].value, this.index, this.currentFileInfo).eval(this.context)];\n \n args = entityList.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n \n return new Anonymous(`style(${args})`);\n};\n\nexport default {\n style: function(...args) {\n try {\n return styleExpression.call(this, args);\n } catch (e) {}\n },\n};\n",
+ "import functionRegistry from './function-registry';\nimport functionCaller from './function-caller';\n\nimport boolean from './boolean';\nimport defaultFunc from './default';\nimport color from './color';\nimport colorBlending from './color-blending';\nimport dataUri from './data-uri';\nimport list from './list';\nimport math from './math';\nimport number from './number';\nimport string from './string';\nimport svg from './svg';\nimport types from './types';\nimport style from './style';\n\nexport default environment => {\n const functions = { functionRegistry, functionCaller };\n\n // register functions\n functionRegistry.addMultiple(boolean);\n functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc));\n functionRegistry.addMultiple(color);\n functionRegistry.addMultiple(colorBlending);\n functionRegistry.addMultiple(dataUri(environment));\n functionRegistry.addMultiple(list);\n functionRegistry.addMultiple(math);\n functionRegistry.addMultiple(number);\n functionRegistry.addMultiple(string);\n functionRegistry.addMultiple(svg(environment));\n functionRegistry.addMultiple(types);\n functionRegistry.addMultiple(style);\n\n return functions;\n};\n",
+ "import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Expression from '../tree/expression';\nimport Quoted from '../tree/quoted';\nimport URL from '../tree/url';\n\nexport default () => {\n return { 'svg-gradient': function(direction) {\n let stops;\n let gradientDirectionSvg;\n let gradientType = 'linear';\n let rectangleDimension = 'x=\"0\" y=\"0\" width=\"1\" height=\"1\"';\n const renderEnv = {compress: false};\n let returner;\n const directionValue = direction.toCSS(renderEnv);\n let i;\n let color;\n let position;\n let positionValue;\n let alpha;\n\n function throwArgumentDescriptor() {\n throw { type: 'Argument',\n message: 'svg-gradient expects direction, start_color [start_position], [color position,]...,' +\n ' end_color [end_position] or direction, color list' };\n }\n\n if (arguments.length == 2) {\n if (arguments[1].value.length < 2) {\n throwArgumentDescriptor();\n }\n stops = arguments[1].value;\n } else if (arguments.length < 3) {\n throwArgumentDescriptor();\n } else {\n stops = Array.prototype.slice.call(arguments, 1);\n }\n\n switch (directionValue) {\n case 'to bottom':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\"';\n break;\n case 'to right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'to bottom right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\"';\n break;\n case 'to top right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'ellipse':\n case 'ellipse at center':\n gradientType = 'radial';\n gradientDirectionSvg = 'cx=\"50%\" cy=\"50%\" r=\"75%\"';\n rectangleDimension = 'x=\"-50\" y=\"-50\" width=\"101\" height=\"101\"';\n break;\n default:\n throw { type: 'Argument', message: 'svg-gradient direction must be \\'to bottom\\', \\'to right\\',' +\n ' \\'to bottom right\\', \\'to top right\\' or \\'ellipse at center\\'' };\n }\n returner = ``;\n\n returner = encodeURIComponent(returner);\n\n returner = `data:image/svg+xml,${returner}`;\n return new URL(new Quoted(`'${returner}'`, returner, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n",
+ "import contexts from './contexts';\nimport visitor from './visitors';\nimport tree from './tree';\n\nexport default function(root, options) {\n options = options || {};\n let evaldRoot;\n let variables = options.variables;\n const evalEnv = new contexts.Eval(options);\n\n //\n // Allows setting variables with a hash, so:\n //\n // `{ color: new tree.Color('#f01') }` will become:\n //\n // new tree.Declaration('@color',\n // new tree.Value([\n // new tree.Expression([\n // new tree.Color('#f01')\n // ])\n // ])\n // )\n //\n if (typeof variables === 'object' && !Array.isArray(variables)) {\n variables = Object.keys(variables).map(function (k) {\n let value = variables[k];\n\n if (!(value instanceof tree.Value)) {\n if (!(value instanceof tree.Expression)) {\n value = new tree.Expression([value]);\n }\n value = new tree.Value([value]);\n }\n return new tree.Declaration(`@${k}`, value, false, null, 0);\n });\n evalEnv.frames = [new tree.Ruleset(null, variables)];\n }\n\n const visitors = [\n new visitor.JoinSelectorVisitor(),\n new visitor.MarkVisibleSelectorsVisitor(true),\n new visitor.ExtendVisitor(),\n new visitor.ToCSSVisitor({compress: Boolean(options.compress)})\n ];\n\n const preEvalVisitors = [];\n let v;\n let visitorIterator;\n\n /**\n * first() / get() allows visitors to be added while visiting\n * \n * @todo Add scoping for visitors just like functions for @plugin; right now they're global\n */\n if (options.pluginManager) {\n visitorIterator = options.pluginManager.visitor();\n for (let i = 0; i < 2; i++) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (v.isPreEvalVisitor) {\n if (i === 0 || preEvalVisitors.indexOf(v) === -1) {\n preEvalVisitors.push(v);\n v.run(root);\n }\n }\n else {\n if (i === 0 || visitors.indexOf(v) === -1) {\n if (v.isPreVisitor) {\n visitors.unshift(v);\n }\n else {\n visitors.push(v);\n }\n }\n }\n }\n }\n }\n\n evaldRoot = root.eval(evalEnv);\n\n for (let i = 0; i < visitors.length; i++) {\n visitors[i].run(evaldRoot);\n }\n\n // Run any remaining visitors added after eval pass\n if (options.pluginManager) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (visitors.indexOf(v) === -1 && preEvalVisitors.indexOf(v) === -1) {\n v.run(evaldRoot);\n }\n }\n }\n\n return evaldRoot;\n}\n",
+ "/**\n * Plugin Manager\n */\nclass PluginManager {\n constructor(less) {\n this.less = less;\n this.visitors = [];\n this.preProcessors = [];\n this.postProcessors = [];\n this.installedPlugins = [];\n this.fileManagers = [];\n this.iterator = -1;\n this.pluginCache = {};\n this.Loader = new less.PluginLoader(less);\n }\n\n /**\n * Adds all the plugins in the array\n * @param {Array} plugins\n */\n addPlugins(plugins) {\n if (plugins) {\n for (let i = 0; i < plugins.length; i++) {\n this.addPlugin(plugins[i]);\n }\n }\n }\n\n /**\n *\n * @param plugin\n * @param {String} filename\n */\n addPlugin(plugin, filename, functionRegistry) {\n this.installedPlugins.push(plugin);\n if (filename) {\n this.pluginCache[filename] = plugin;\n }\n if (plugin.install) {\n plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry);\n }\n }\n\n /**\n *\n * @param filename\n */\n get(filename) {\n return this.pluginCache[filename];\n }\n\n /**\n * Adds a visitor. The visitor object has options on itself to determine\n * when it should run.\n * @param visitor\n */\n addVisitor(visitor) {\n this.visitors.push(visitor);\n }\n\n /**\n * Adds a pre processor object\n * @param {object} preProcessor\n * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import\n */\n addPreProcessor(preProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) {\n if (this.preProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.preProcessors.splice(indexToInsertAt, 0, {preProcessor, priority});\n }\n\n /**\n * Adds a post processor object\n * @param {object} postProcessor\n * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression\n */\n addPostProcessor(postProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) {\n if (this.postProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.postProcessors.splice(indexToInsertAt, 0, {postProcessor, priority});\n }\n\n /**\n *\n * @param manager\n */\n addFileManager(manager) {\n this.fileManagers.push(manager);\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPreProcessors() {\n const preProcessors = [];\n for (let i = 0; i < this.preProcessors.length; i++) {\n preProcessors.push(this.preProcessors[i].preProcessor);\n }\n return preProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPostProcessors() {\n const postProcessors = [];\n for (let i = 0; i < this.postProcessors.length; i++) {\n postProcessors.push(this.postProcessors[i].postProcessor);\n }\n return postProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getVisitors() {\n return this.visitors;\n }\n\n visitor() {\n const self = this;\n return {\n first: function() {\n self.iterator = -1;\n return self.visitors[self.iterator];\n },\n get: function() {\n self.iterator += 1;\n return self.visitors[self.iterator];\n }\n };\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getFileManagers() {\n return this.fileManagers;\n }\n}\n\nlet pm;\n\nconst PluginManagerFactory = function(less, newFactory) {\n if (newFactory || !pm) {\n pm = new PluginManager(less);\n }\n return pm;\n};\n\n//\nexport default PluginManagerFactory;\n",
+ "'use strict';\n\nfunction parseNodeVersion(version) {\n var match = version.match(/^v(\\d{1,2})\\.(\\d{1,2})\\.(\\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len\n if (!match) {\n throw new Error('Unable to parse: ' + version);\n }\n\n var res = {\n major: parseInt(match[1], 10),\n minor: parseInt(match[2], 10),\n patch: parseInt(match[3], 10),\n pre: match[4] || '',\n build: match[5] || '',\n };\n\n return res;\n}\n\nmodule.exports = parseNodeVersion;\n",
+ "import AbstractFileManager from '../less/environment/abstract-file-manager.js';\n\nlet options;\nlet logger;\nlet fileCache = {};\n\n// TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load\nconst FileManager = function() {}\nFileManager.prototype = Object.assign(new AbstractFileManager(), {\n alwaysMakePathsAbsolute() {\n return true;\n },\n\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return this.extractUrlParts(laterPath, basePath).path;\n },\n\n doXHR(url, type, callback, errback) {\n const xhr = new XMLHttpRequest();\n const async = options.isFileProtocol ? options.fileAsync : true;\n\n if (typeof xhr.overrideMimeType === 'function') {\n xhr.overrideMimeType('text/css');\n }\n logger.debug(`XHR: Getting '${url}'`);\n xhr.open('GET', url, async);\n xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5');\n xhr.send(null);\n\n function handleResponse(xhr, callback, errback) {\n if (xhr.status >= 200 && xhr.status < 300) {\n callback(xhr.responseText,\n xhr.getResponseHeader('Last-Modified'));\n } else if (typeof errback === 'function') {\n errback(xhr.status, url);\n }\n }\n\n if (options.isFileProtocol && !options.fileAsync) {\n if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) {\n callback(xhr.responseText);\n } else {\n errback(xhr.status, url);\n }\n } else if (async) {\n xhr.onreadystatechange = () => {\n if (xhr.readyState == 4) {\n handleResponse(xhr, callback, errback);\n }\n };\n } else {\n handleResponse(xhr, callback, errback);\n }\n },\n\n supports() {\n return true;\n },\n\n clearFileCache() {\n fileCache = {};\n },\n\n loadFile(filename, currentDirectory, options) {\n // TODO: Add prefix support like less-node?\n // What about multiple paths?\n\n if (currentDirectory && !this.isPathAbsolute(filename)) {\n filename = currentDirectory + filename;\n }\n\n filename = options.ext ? this.tryAppendExtension(filename, options.ext) : filename;\n\n options = options || {};\n\n // sheet may be set to the stylesheet for the initial load or a collection of properties including\n // some context variables for imports\n const hrefParts = this.extractUrlParts(filename, window.location.href);\n const href = hrefParts.url;\n const self = this;\n \n return new Promise((resolve, reject) => {\n if (options.useFileCache && fileCache[href]) {\n try {\n const lessText = fileCache[href];\n return resolve({ contents: lessText, filename: href, webInfo: { lastModified: new Date() }});\n } catch (e) {\n return reject({ filename: href, message: `Error loading file ${href} error was ${e.message}` });\n }\n }\n\n self.doXHR(href, options.mime, function doXHRCallback(data, lastModified) {\n // per file cache\n fileCache[href] = data;\n\n // Use remote copy (re-parse)\n resolve({ contents: data, filename: href, webInfo: { lastModified }});\n }, function doXHRError(status, url) {\n reject({ type: 'File', message: `'${url}' wasn't found (${status})`, href });\n });\n });\n }\n});\n\nexport default (opts, log) => {\n options = opts;\n logger = log;\n return FileManager;\n}\n",
+ "import Environment from './environment/environment';\nimport data from './data';\nimport tree from './tree';\nimport AbstractFileManager from './environment/abstract-file-manager';\nimport AbstractPluginLoader from './environment/abstract-plugin-loader';\nimport visitors from './visitors';\nimport Parser from './parser/parser';\nimport functions from './functions';\nimport contexts from './contexts';\nimport LessError from './less-error';\nimport transformTree from './transform-tree';\nimport * as utils from './utils';\nimport PluginManager from './plugin-manager';\nimport logger from './logger';\nimport SourceMapOutput from './source-map-output';\nimport SourceMapBuilder from './source-map-builder';\nimport ParseTree from './parse-tree';\nimport ImportManager from './import-manager';\nimport Parse from './parse';\nimport Render from './render';\nimport { version } from '../../package.json';\nimport parseVersion from 'parse-node-version';\n\nexport default function(environment, fileManagers) {\n let sourceMapOutput, sourceMapBuilder, parseTree, importManager;\n\n environment = new Environment(environment, fileManagers);\n sourceMapOutput = SourceMapOutput(environment);\n sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment);\n parseTree = ParseTree(sourceMapBuilder);\n importManager = ImportManager(environment);\n\n const render = Render(environment, parseTree, importManager);\n const parse = Parse(environment, parseTree, importManager);\n\n const v = parseVersion(`v${version}`);\n const initial = {\n version: [v.major, v.minor, v.patch],\n data,\n tree,\n Environment,\n AbstractFileManager,\n AbstractPluginLoader,\n environment,\n visitors,\n Parser,\n functions: functions(environment),\n contexts,\n SourceMapOutput: sourceMapOutput,\n SourceMapBuilder: sourceMapBuilder,\n ParseTree: parseTree,\n ImportManager: importManager,\n render,\n parse,\n LessError,\n transformTree,\n utils,\n PluginManager,\n logger\n };\n\n // Create a public API\n\n const ctor = function(t) {\n return function() {\n const obj = Object.create(t.prototype);\n t.apply(obj, Array.prototype.slice.call(arguments, 0));\n return obj;\n };\n };\n let t;\n const api = Object.create(initial);\n for (const n in initial.tree) {\n /* eslint guard-for-in: 0 */\n t = initial.tree[n];\n if (typeof t === 'function') {\n api[n.toLowerCase()] = ctor(t);\n }\n else {\n api[n] = Object.create(null);\n for (const o in t) {\n /* eslint guard-for-in: 0 */\n api[n][o.toLowerCase()] = ctor(t[o]);\n }\n }\n }\n\n /**\n * Some of the functions assume a `this` context of the API object,\n * which causes it to fail when wrapped for ES6 imports.\n * \n * An assumed `this` should be removed in the future.\n */\n initial.parse = initial.parse.bind(api);\n initial.render = initial.render.bind(api);\n\n return api;\n}\n",
+ "import LessError from './less-error';\nimport transformTree from './transform-tree';\nimport logger from './logger';\n\nexport default function(SourceMapBuilder) {\n class ParseTree {\n constructor(root, imports) {\n this.root = root;\n this.imports = imports;\n }\n\n toCSS(options) {\n let evaldRoot;\n const result = {};\n let sourceMapBuilder;\n try {\n evaldRoot = transformTree(this.root, options);\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n try {\n const compress = Boolean(options.compress);\n if (compress) {\n logger.warn('The compress option has been deprecated. ' + \n 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');\n }\n\n const toCSSOptions = {\n compress,\n // @deprecated The dumpLineNumbers option is deprecated. Use sourcemaps instead. All modes will be removed in a future version.\n dumpLineNumbers: options.dumpLineNumbers,\n strictUnits: Boolean(options.strictUnits),\n numPrecision: 8};\n\n if (options.sourceMap) {\n // Normalize sourceMap option: if it's just true, convert to object\n if (options.sourceMap === true) {\n options.sourceMap = {};\n }\n const sourceMapOpts = options.sourceMap;\n \n // Set sourceMapInputFilename if not set and filename is available\n if (!sourceMapOpts.sourceMapInputFilename && options.filename) {\n sourceMapOpts.sourceMapInputFilename = options.filename;\n }\n \n // Default sourceMapBasepath to the input file's directory if not set\n // This matches the behavior documented and implemented in bin/lessc\n if (sourceMapOpts.sourceMapBasepath === undefined && options.filename) {\n // Get directory from filename using string manipulation (works cross-platform)\n const lastSlash = Math.max(options.filename.lastIndexOf('/'), options.filename.lastIndexOf('\\\\'));\n if (lastSlash >= 0) {\n sourceMapOpts.sourceMapBasepath = options.filename.substring(0, lastSlash);\n } else {\n // No directory separator found, use current directory\n sourceMapOpts.sourceMapBasepath = '.';\n }\n }\n \n // Handle sourceMapFullFilename (CLI-specific: --source-map=filename)\n // This is converted to sourceMapFilename and sourceMapOutputFilename\n if (sourceMapOpts.sourceMapFullFilename && !sourceMapOpts.sourceMapFileInline) {\n // This case is handled by lessc before calling render\n // We just need to ensure sourceMapFilename is set if sourceMapFullFilename is provided\n if (!sourceMapOpts.sourceMapFilename && !sourceMapOpts.sourceMapURL) {\n // Extract just the basename for the sourceMappingURL comment\n const mapBase = sourceMapOpts.sourceMapFullFilename.split(/[/\\\\]/).pop();\n sourceMapOpts.sourceMapFilename = mapBase;\n }\n } else if (!sourceMapOpts.sourceMapFilename && !sourceMapOpts.sourceMapURL) {\n // If sourceMapFilename is not set and sourceMapURL is not set,\n // derive it from the output filename (if available) or input filename\n if (sourceMapOpts.sourceMapOutputFilename) {\n // Use output filename + .map\n sourceMapOpts.sourceMapFilename = sourceMapOpts.sourceMapOutputFilename + '.map';\n } else if (options.filename) {\n // Fallback to input filename + .css.map\n const inputBase = options.filename.replace(/\\.[^/.]+$/, '');\n sourceMapOpts.sourceMapFilename = inputBase + '.css.map';\n }\n }\n \n // Default sourceMapOutputFilename if not set\n if (!sourceMapOpts.sourceMapOutputFilename) {\n if (options.filename) {\n const inputBase = options.filename.replace(/\\.[^/.]+$/, '');\n sourceMapOpts.sourceMapOutputFilename = inputBase + '.css';\n } else {\n sourceMapOpts.sourceMapOutputFilename = 'output.css';\n }\n }\n \n sourceMapBuilder = new SourceMapBuilder(sourceMapOpts);\n result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);\n } else {\n result.css = evaldRoot.toCSS(toCSSOptions);\n }\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n if (options.pluginManager) {\n const postProcessors = options.pluginManager.getPostProcessors();\n for (let i = 0; i < postProcessors.length; i++) {\n result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options, imports: this.imports });\n }\n }\n if (options.sourceMap) {\n result.map = sourceMapBuilder.getExternalSourceMap();\n }\n\n result.imports = [];\n for (const file in this.imports.files) {\n if (Object.prototype.hasOwnProperty.call(this.imports.files, file) && file !== this.imports.rootFilename) {\n result.imports.push(file);\n }\n }\n return result;\n }\n }\n\n return ParseTree;\n}\n",
+ "export default function (SourceMapOutput, environment) {\n class SourceMapBuilder {\n constructor(options) {\n this.options = options;\n }\n\n toCSS(rootNode, options, imports) {\n const sourceMapOutput = new SourceMapOutput(\n {\n contentsIgnoredCharsMap: imports.contentsIgnoredChars,\n rootNode,\n contentsMap: imports.contents,\n sourceMapFilename: this.options.sourceMapFilename,\n sourceMapURL: this.options.sourceMapURL,\n outputFilename: this.options.sourceMapOutputFilename,\n sourceMapBasepath: this.options.sourceMapBasepath,\n sourceMapRootpath: this.options.sourceMapRootpath,\n outputSourceFiles: this.options.outputSourceFiles,\n sourceMapGenerator: this.options.sourceMapGenerator,\n sourceMapFileInline: this.options.sourceMapFileInline, \n disableSourcemapAnnotation: this.options.disableSourcemapAnnotation\n });\n\n const css = sourceMapOutput.toCSS(options);\n this.sourceMap = sourceMapOutput.sourceMap;\n this.sourceMapURL = sourceMapOutput.sourceMapURL;\n if (this.options.sourceMapInputFilename) {\n this.sourceMapInputFilename = sourceMapOutput.normalizeFilename(this.options.sourceMapInputFilename);\n }\n if (this.options.sourceMapBasepath !== undefined && this.sourceMapURL !== undefined) {\n this.sourceMapURL = sourceMapOutput.removeBasepath(this.sourceMapURL);\n }\n return css + this.getCSSAppendage();\n }\n\n getCSSAppendage() {\n\n let sourceMapURL = this.sourceMapURL;\n if (this.options.sourceMapFileInline) {\n if (this.sourceMap === undefined) {\n return '';\n }\n sourceMapURL = `data:application/json;base64,${environment.encodeBase64(this.sourceMap)}`;\n }\n\n if (this.options.disableSourcemapAnnotation) {\n return '';\n }\n\n if (sourceMapURL) {\n return `/*# sourceMappingURL=${sourceMapURL} */`;\n }\n return '';\n }\n\n getExternalSourceMap() {\n return this.sourceMap;\n }\n\n setExternalSourceMap(sourceMap) {\n this.sourceMap = sourceMap;\n }\n\n isInline() {\n return this.options.sourceMapFileInline;\n }\n\n getSourceMapURL() {\n return this.sourceMapURL;\n }\n\n getOutputFilename() {\n return this.options.sourceMapOutputFilename;\n }\n\n getInputFilename() {\n return this.sourceMapInputFilename;\n }\n }\n\n return SourceMapBuilder;\n}\n",
+ "export default function (environment) {\n class SourceMapOutput {\n constructor(options) {\n this._css = [];\n this._rootNode = options.rootNode;\n this._contentsMap = options.contentsMap;\n this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap;\n if (options.sourceMapFilename) {\n this._sourceMapFilename = options.sourceMapFilename.replace(/\\\\/g, '/');\n }\n this._outputFilename = options.outputFilename ? options.outputFilename.replace(/\\\\/g, '/') : options.outputFilename;\n this.sourceMapURL = options.sourceMapURL;\n if (options.sourceMapBasepath) {\n this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\\\/g, '/');\n }\n if (options.sourceMapRootpath) {\n this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\\\/g, '/');\n if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {\n this._sourceMapRootpath += '/';\n }\n } else {\n this._sourceMapRootpath = '';\n }\n this._outputSourceFiles = options.outputSourceFiles;\n this._sourceMapGeneratorConstructor = environment.getSourceMapGenerator();\n\n this._lineNumber = 0;\n this._column = 0;\n }\n\n removeBasepath(path) {\n if (this._sourceMapBasepath && path.indexOf(this._sourceMapBasepath) === 0) {\n path = path.substring(this._sourceMapBasepath.length);\n if (path.charAt(0) === '\\\\' || path.charAt(0) === '/') {\n path = path.substring(1);\n }\n }\n\n return path;\n }\n\n normalizeFilename(filename) {\n filename = filename.replace(/\\\\/g, '/');\n filename = this.removeBasepath(filename);\n return (this._sourceMapRootpath || '') + filename;\n }\n\n add(chunk, fileInfo, index, mapLines) {\n\n // ignore adding empty strings\n if (!chunk) {\n return;\n }\n\n let lines, sourceLines, columns, sourceColumns, i;\n\n if (fileInfo && fileInfo.filename) {\n let inputSource = this._contentsMap[fileInfo.filename];\n\n // remove vars/banner added to the top of the file\n if (this._contentsIgnoredCharsMap[fileInfo.filename]) {\n // adjust the index\n index -= this._contentsIgnoredCharsMap[fileInfo.filename];\n if (index < 0) { index = 0; }\n // adjust the source\n inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]);\n }\n\n /** \n * ignore empty content, or failsafe\n * if contents map is incorrect\n */\n if (inputSource === undefined) {\n this._css.push(chunk);\n return;\n }\n\n inputSource = inputSource.substring(0, index);\n sourceLines = inputSource.split('\\n');\n sourceColumns = sourceLines[sourceLines.length - 1];\n }\n\n lines = chunk.split('\\n');\n columns = lines[lines.length - 1];\n\n if (fileInfo && fileInfo.filename) {\n if (!mapLines) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + 1, column: this._column},\n original: { line: sourceLines.length, column: sourceColumns.length},\n source: this.normalizeFilename(fileInfo.filename)});\n } else {\n for (i = 0; i < lines.length; i++) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0},\n original: { line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0},\n source: this.normalizeFilename(fileInfo.filename)});\n }\n }\n }\n\n if (lines.length === 1) {\n this._column += columns.length;\n } else {\n this._lineNumber += lines.length - 1;\n this._column = columns.length;\n }\n\n this._css.push(chunk);\n }\n\n isEmpty() {\n return this._css.length === 0;\n }\n\n toCSS(context) {\n this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({ file: this._outputFilename, sourceRoot: null });\n\n if (this._outputSourceFiles) {\n for (const filename in this._contentsMap) {\n // eslint-disable-next-line no-prototype-builtins\n if (this._contentsMap.hasOwnProperty(filename)) {\n let source = this._contentsMap[filename];\n if (this._contentsIgnoredCharsMap[filename]) {\n source = source.slice(this._contentsIgnoredCharsMap[filename]);\n }\n this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source);\n }\n }\n }\n\n this._rootNode.genCSS(context, this);\n\n if (this._css.length > 0) {\n let sourceMapURL;\n const sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON());\n\n if (this.sourceMapURL) {\n sourceMapURL = this.sourceMapURL;\n } else if (this._sourceMapFilename) {\n sourceMapURL = this._sourceMapFilename;\n }\n this.sourceMapURL = sourceMapURL;\n\n this.sourceMap = sourceMapContent;\n }\n\n return this._css.join('');\n }\n }\n\n return SourceMapOutput;\n}\n",
+ "import contexts from './contexts';\nimport Parser from './parser/parser';\nimport LessError from './less-error';\nimport * as utils from './utils';\nimport logger from './logger';\n\nexport default function(environment) {\n // FileInfo = {\n // 'rewriteUrls' - option - whether to adjust URL's to be relative\n // 'filename' - full resolved filename of current file\n // 'rootpath' - path to append to normal URLs for this node\n // 'currentDirectory' - path to the current file, absolute\n // 'rootFilename' - filename of the base file\n // 'entryPath' - absolute path to the entry file\n // 'reference' - whether the file should not be output and only output parts that are referenced\n\n class ImportManager {\n constructor(less, context, rootFileInfo) {\n this.less = less;\n this.rootFilename = rootFileInfo.filename;\n this.paths = context.paths || []; // Search paths, when importing\n this.contents = {}; // map - filename to contents of all the files\n this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore\n this.mime = context.mime;\n this.error = null;\n this.context = context;\n // Deprecated? Unused outside of here, could be useful.\n this.queue = []; // Files which haven't been imported yet\n this.files = {}; // Holds the imported parse trees.\n }\n\n /**\n * Add an import to be imported\n * @param path - the raw path\n * @param tryAppendExtension - whether to try appending a file extension (.less or .js if the path has no extension)\n * @param currentFileInfo - the current file info (used for instance to work out relative paths)\n * @param importOptions - import options\n * @param callback - callback for when it is imported\n */\n push(path, tryAppendExtension, currentFileInfo, importOptions, callback) {\n const importManager = this, pluginLoader = this.context.pluginManager.Loader;\n\n this.queue.push(path);\n\n const fileParsedFunc = function (e, root, fullPath) {\n importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue\n\n const importedEqualsRoot = fullPath === importManager.rootFilename;\n if (importOptions.optional && e) {\n callback(null, {rules:[]}, false, null);\n logger.info(`The file ${fullPath} was skipped because it was not found and the import was marked optional.`);\n }\n else {\n // Inline imports aren't cached here.\n // If we start to cache them, please make sure they won't conflict with non-inline imports of the\n // same name as they used to do before this comment and the condition below have been added.\n if (!importManager.files[fullPath] && !importOptions.inline) {\n importManager.files[fullPath] = { root, options: importOptions };\n }\n if (e && !importManager.error) { importManager.error = e; }\n callback(e, root, importedEqualsRoot, fullPath);\n }\n };\n\n const newFileInfo = {\n rewriteUrls: this.context.rewriteUrls,\n entryPath: currentFileInfo.entryPath,\n rootpath: currentFileInfo.rootpath,\n rootFilename: currentFileInfo.rootFilename\n };\n\n const fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);\n\n if (!fileManager) {\n fileParsedFunc({ message: `Could not find a file-manager for ${path}` });\n return;\n }\n\n const loadFileCallback = function(loadedFile) {\n let plugin;\n const resolvedFilename = loadedFile.filename;\n const contents = loadedFile.contents.replace(/^\\uFEFF/, '');\n\n // Pass on an updated rootpath if path of imported file is relative and file\n // is in a (sub|sup) directory\n //\n // Examples:\n // - If path of imported file is 'module/nav/nav.less' and rootpath is 'less/',\n // then rootpath should become 'less/module/nav/'\n // - If path of imported file is '../mixins.less' and rootpath is 'less/',\n // then rootpath should become 'less/../'\n newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename);\n if (newFileInfo.rewriteUrls) {\n newFileInfo.rootpath = fileManager.join(\n (importManager.context.rootpath || ''),\n fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));\n\n if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) {\n newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath);\n }\n }\n newFileInfo.filename = resolvedFilename;\n\n const newEnv = new contexts.Parse(importManager.context);\n\n newEnv.processImports = false;\n importManager.contents[resolvedFilename] = contents;\n\n if (currentFileInfo.reference || importOptions.reference) {\n newFileInfo.reference = true;\n }\n\n if (importOptions.isPlugin) {\n plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo);\n if (plugin instanceof LessError) {\n fileParsedFunc(plugin, null, resolvedFilename);\n }\n else {\n fileParsedFunc(null, plugin, resolvedFilename);\n }\n } else if (importOptions.inline) {\n fileParsedFunc(null, contents, resolvedFilename);\n } else {\n // import (multiple) parse trees apparently get altered and can't be cached.\n // TODO: investigate why this is\n if (importManager.files[resolvedFilename]\n && !importManager.files[resolvedFilename].options.multiple\n && !importOptions.multiple) {\n\n fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename);\n }\n else {\n new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {\n fileParsedFunc(e, root, resolvedFilename);\n });\n }\n }\n };\n let loadedFile;\n let promise;\n const context = utils.clone(this.context);\n\n if (tryAppendExtension) {\n context.ext = importOptions.isPlugin ? '.js' : '.less';\n }\n\n if (importOptions.isPlugin) {\n context.mime = 'application/javascript';\n\n if (context.syncImport) {\n loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n } else {\n promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n }\n }\n else {\n if (context.syncImport) {\n loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment);\n } else {\n promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment,\n (err, loadedFile) => {\n if (err) {\n fileParsedFunc(err);\n } else {\n loadFileCallback(loadedFile);\n }\n });\n }\n }\n if (loadedFile) {\n if (!loadedFile.filename) {\n fileParsedFunc(loadedFile);\n } else {\n loadFileCallback(loadedFile);\n }\n } else if (promise) {\n promise.then(loadFileCallback, fileParsedFunc);\n }\n }\n }\n\n return ImportManager;\n}\n",
+ "import * as utils from './utils';\n\nexport default function(environment, ParseTree) {\n const render = function (input, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n render.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n this.parse(input, options, function(err, root, imports, options) {\n if (err) { return callback(err); }\n\n let result;\n try {\n const parseTree = new ParseTree(root, imports);\n result = parseTree.toCSS(options);\n }\n catch (err) { return callback(err); }\n\n callback(null, result);\n });\n }\n };\n\n return render;\n}\n",
+ "import contexts from './contexts';\nimport Parser from './parser/parser';\nimport PluginManager from './plugin-manager';\nimport LessError from './less-error';\nimport * as utils from './utils';\n\nexport default function(environment, ParseTree, ImportManager) {\n const parse = function (input, options, callback) {\n\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n parse.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n let context;\n let rootFileInfo;\n const pluginManager = new PluginManager(this, !options.reUsePluginManager);\n\n options.pluginManager = pluginManager;\n\n context = new contexts.Parse(options);\n\n if (options.rootFileInfo) {\n rootFileInfo = options.rootFileInfo;\n } else {\n const filename = options.filename || 'input';\n const entryPath = filename.replace(/[^/\\\\]*$/, '');\n rootFileInfo = {\n filename,\n rewriteUrls: context.rewriteUrls,\n rootpath: context.rootpath || '',\n currentDirectory: entryPath,\n entryPath,\n rootFilename: filename\n };\n // add in a missing trailing slash\n if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') {\n rootFileInfo.rootpath += '/';\n }\n }\n\n const imports = new ImportManager(this, context, rootFileInfo);\n this.importManager = imports;\n\n // TODO: allow the plugins to be just a list of paths or names\n // Do an async plugin queue like lessc\n\n if (options.plugins) {\n options.plugins.forEach(function(plugin) {\n let evalResult, contents;\n if (plugin.fileContent) {\n contents = plugin.fileContent.replace(/^\\uFEFF/, '');\n evalResult = pluginManager.Loader.evalPlugin(contents, context, imports, plugin.options, plugin.filename);\n if (evalResult instanceof LessError) {\n return callback(evalResult);\n }\n }\n else {\n pluginManager.addPlugin(plugin);\n }\n });\n }\n\n new Parser(context, imports, rootFileInfo)\n .parse(input, function (e, root) {\n if (e) { return callback(e); }\n callback(null, root, imports, options);\n }, options);\n }\n };\n return parse;\n}\n",
+ "/**\n * @todo Add tests for browser `@plugin`\n */\nimport AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';\n\n/**\n * Browser Plugin Loader\n */\nconst PluginLoader = function(less) {\n this.less = less;\n // Should we shim this.require for browser? Probably not?\n};\n\nPluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {\n loadPlugin(filename, basePath, context, environment, fileManager) {\n return new Promise((fulfill, reject) => {\n fileManager.loadFile(filename, basePath, context, environment)\n .then(fulfill).catch(reject);\n });\n }\n});\n\nexport default PluginLoader;\n\n",
+ "export default (less, options) => {\n const logLevel_debug = 4;\n const logLevel_info = 3;\n const logLevel_warn = 2;\n const logLevel_error = 1;\n\n // The amount of logging in the javascript console.\n // 3 - Debug, information and errors\n // 2 - Information and errors\n // 1 - Errors\n // 0 - None\n // Defaults to 2\n options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error);\n\n if (!options.loggers) {\n options.loggers = [{\n debug: function(msg) {\n if (options.logLevel >= logLevel_debug) {\n console.log(msg);\n }\n },\n info: function(msg) {\n if (options.logLevel >= logLevel_info) {\n console.log(msg);\n }\n },\n warn: function(msg) {\n if (options.logLevel >= logLevel_warn) {\n console.warn(msg);\n }\n },\n error: function(msg) {\n if (options.logLevel >= logLevel_error) {\n console.error(msg);\n }\n }\n }];\n }\n for (let i = 0; i < options.loggers.length; i++) {\n less.logger.addListener(options.loggers[i]);\n }\n};\n",
+ "import * as utils from './utils';\nimport browser from './browser';\n\nexport default (window, less, options) => {\n\n function errorHTML(e, rootHref) {\n const id = `less-error-message:${utils.extractId(rootHref || '')}`;\n const template = '{content}';\n const elem = window.document.createElement('div');\n let timer;\n let content;\n const errors = [];\n const filename = e.filename || rootHref;\n const filenameNoPath = filename.match(/([^/]+(\\?.*)?)$/)[1];\n\n elem.id = id;\n elem.className = 'less-error-message';\n\n content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'}` + \n `
in ${filenameNoPath} `;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += `on line ${e.line}, column ${e.column + 1}:
`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += `
Stack Trace${e.stack.split('\\n').slice(1).join('
')}`;\n }\n elem.innerHTML = content;\n\n // CSS for error messages\n browser.createCSS(window.document, [\n '.less-error-message ul, .less-error-message li {',\n 'list-style-type: none;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message label {',\n 'font-size: 12px;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'color: #cc7777;',\n '}',\n '.less-error-message pre {',\n 'color: #dd6666;',\n 'padding: 4px 0;',\n 'margin: 0;',\n 'display: inline-block;',\n '}',\n '.less-error-message pre.line {',\n 'color: #ff0000;',\n '}',\n '.less-error-message h3 {',\n 'font-size: 20px;',\n 'font-weight: bold;',\n 'padding: 15px 0 5px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message a {',\n 'color: #10a',\n '}',\n '.less-error-message .error {',\n 'color: red;',\n 'font-weight: bold;',\n 'padding-bottom: 2px;',\n 'border-bottom: 1px dashed red;',\n '}'\n ].join('\\n'), { title: 'error-message' });\n\n elem.style.cssText = [\n 'font-family: Arial, sans-serif',\n 'border: 1px solid #e00',\n 'background-color: #eee',\n 'border-radius: 5px',\n '-webkit-border-radius: 5px',\n '-moz-border-radius: 5px',\n 'color: #e00',\n 'padding: 15px',\n 'margin-bottom: 15px'\n ].join(';');\n\n if (options.env === 'development') {\n timer = setInterval(() => {\n const document = window.document;\n const body = document.body;\n if (body) {\n if (document.getElementById(id)) {\n body.replaceChild(elem, document.getElementById(id));\n } else {\n body.insertBefore(elem, body.firstChild);\n }\n clearInterval(timer);\n }\n }, 10);\n }\n }\n\n function removeErrorHTML(path) {\n const node = window.document.getElementById(`less-error-message:${utils.extractId(path)}`);\n if (node) {\n node.parentNode.removeChild(node);\n }\n }\n\n function removeErrorConsole() {\n // no action\n }\n\n function removeError(path) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n removeErrorHTML(path);\n } else if (options.errorReporting === 'console') {\n removeErrorConsole(path);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('remove', path);\n }\n }\n\n function errorConsole(e, rootHref) {\n const template = '{line} {content}';\n const filename = e.filename || rootHref;\n const errors = [];\n let content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'} in ${filename}`;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += ` on line ${e.line}, column ${e.column + 1}:\\n${errors.join('\\n')}`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += `\\nStack Trace\\n${e.stack}`;\n }\n less.logger.error(content);\n }\n\n function error(e, rootHref) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n errorHTML(e, rootHref);\n } else if (options.errorReporting === 'console') {\n errorConsole(e, rootHref);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('add', e, rootHref);\n }\n }\n\n return {\n add: error,\n remove: removeError\n };\n};\n",
+ "/**\n * Kicks off less and compiles any stylesheets\n * used in the browser distributed version of less\n * to kick-start less using the browser api\n */\nimport defaultOptions from '../less/default-options';\nimport addDefaultOptions from './add-default-options';\nimport root from './index';\n\nconst options = defaultOptions();\n\nif (window.less) {\n for (const key in window.less) {\n if (Object.prototype.hasOwnProperty.call(window.less, key)) {\n options[key] = window.less[key];\n }\n }\n}\naddDefaultOptions(window, options);\n\noptions.plugins = options.plugins || [];\n\nif (window.LESS_PLUGINS) {\n options.plugins = options.plugins.concat(window.LESS_PLUGINS);\n}\n\nconst less = root(window, options);\nexport default less;\n\nwindow.less = less;\n\nlet css;\nlet head;\nlet style;\n\n// Always restore page visibility\nfunction resolveOrReject(data) {\n if (data.filename) {\n console.warn(data);\n }\n if (!options.async) {\n head.removeChild(style);\n }\n}\n\nif (options.onReady) {\n if (/!watch/.test(window.location.hash)) {\n less.watch();\n }\n // Simulate synchronous stylesheet loading by hiding page rendering\n if (!options.async) {\n css = 'body { display: none !important }';\n head = document.head || document.getElementsByTagName('head')[0];\n style = document.createElement('style');\n\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n less.registerStylesheetsImmediately();\n less.pageLoadFinished = less.refresh(less.env === 'development').then(resolveOrReject, resolveOrReject);\n}\n",
+ "// Export a new default each time\nexport default function() {\n return {\n /* Inline Javascript - @plugin still allowed */\n javascriptEnabled: false,\n\n /* Outputs a makefile import dependency list to stdout. */\n depends: false,\n\n /* (DEPRECATED) Compress using less built-in compression. \n * This does an okay job but does not utilise all the tricks of \n * dedicated css compression. */\n compress: false,\n\n /* Runs the less parser and just reports errors without any output. */\n lint: false,\n\n /* Sets available include paths.\n * If the file in an @import rule does not exist at that exact location, \n * less will look for it at the location(s) passed to this option. \n * You might use this for instance to specify a path to a library which \n * you want to be referenced simply and relatively in the less files. */\n paths: [],\n\n /* color output in the terminal */\n color: true,\n\n /**\n * @deprecated This option has confusing behavior and may be removed in a future version.\n * \n * When true, prevents @import statements for .less files from being evaluated inside\n * selector blocks (rulesets). The imports are silently ignored and not output.\n * \n * Behavior:\n * - @import at root level: Always processed\n * - @import inside @-rules (@media, @supports, etc.): Processed (these are not selector blocks)\n * - @import inside selector blocks (.class, #id, etc.): NOT processed (silently ignored)\n * \n * When false (default): All @import statements are processed regardless of context.\n * \n * Note: Despite the name \"strict\", this option does NOT throw an error when imports\n * are used in selector blocks - it silently ignores them. This is confusing\n * behavior that may catch users off guard.\n * \n * Note: Only affects .less file imports. CSS imports (url(...) or .css files) are\n * always output as CSS @import statements regardless of this setting.\n * \n * @see https://github.com/less/less.js/issues/656\n */\n strictImports: false,\n\n /* Allow Imports from Insecure HTTPS Hosts */\n insecure: false,\n\n /* Allows you to add a path to every generated import and url in your css. \n * This does not affect less import statements that are processed, just ones \n * that are left in the output css. */\n rootpath: '',\n\n /* By default URLs are kept as-is, so if you import a file in a sub-directory \n * that references an image, exactly the same URL will be output in the css. \n * This option allows you to re-write URL's in imported files so that the \n * URL is always relative to the base imported file */\n rewriteUrls: false,\n\n /* How to process math \n * 0 always - eagerly try to solve all operations\n * 1 parens-division - require parens for division \"/\"\n * 2 parens | strict - require parens for all operations\n * 3 strict-legacy - legacy strict behavior (super-strict)\n */\n math: 1,\n\n /* Without this option, less attempts to guess at the output unit when it does maths. */\n strictUnits: false,\n\n /* Effectively the declaration is put at the top of your base Less file, \n * meaning it can be used but it also can be overridden if this variable \n * is defined in the file. */\n globalVars: null,\n\n /* As opposed to the global variable option, this puts the declaration at the\n * end of your base file, meaning it will override anything defined in your Less file. */\n modifyVars: null,\n\n /* This option allows you to specify a argument to go on to every URL. */\n urlArgs: ''\n }\n}",
+ "import {addDataAttr} from './utils';\nimport browser from './browser';\n\nexport default (window, options) => {\n\n // use options from the current script tag data attribues\n addDataAttr(options, browser.currentScript(window));\n\n if (options.isFileProtocol === undefined) {\n options.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(window.location.protocol);\n }\n\n // Load styles asynchronously (default: false)\n //\n // This is set to `false` by default, so that the body\n // doesn't start loading before the stylesheets are parsed.\n // Setting this to `true` can result in flickering.\n //\n options.async = options.async || false;\n options.fileAsync = options.fileAsync || false;\n\n // Interval between watch polls\n options.poll = options.poll || (options.isFileProtocol ? 1000 : 1500);\n\n options.env = options.env || (window.location.hostname == '127.0.0.1' ||\n window.location.hostname == '0.0.0.0' ||\n window.location.hostname == 'localhost' ||\n (window.location.port &&\n window.location.port.length > 0) ||\n options.isFileProtocol ? 'development'\n : 'production');\n\n const dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);\n if (dumpLineNumbers) {\n options.dumpLineNumbers = dumpLineNumbers[1];\n }\n\n if (options.useFileCache === undefined) {\n options.useFileCache = true;\n }\n\n if (options.onReady === undefined) {\n options.onReady = true;\n }\n\n if (options.relativeUrls) {\n options.rewriteUrls = 'all';\n }\n};\n",
+ "//\n// index.js\n// Should expose the additional browser functions on to the less object\n//\nimport {addDataAttr} from './utils';\nimport lessRoot from '../less';\nimport browser from './browser';\nimport FM from './file-manager';\nimport PluginLoader from './plugin-loader';\nimport LogListener from './log-listener';\nimport ErrorReporting from './error-reporting';\nimport Cache from './cache';\nimport ImageSize from './image-size';\n\nexport default (window, options) => {\n const document = window.document;\n const less = lessRoot();\n\n less.options = options;\n const environment = less.environment;\n const FileManager = FM(options, less.logger);\n const fileManager = new FileManager();\n environment.addFileManager(fileManager);\n less.FileManager = FileManager;\n less.PluginLoader = PluginLoader;\n\n LogListener(less, options);\n const errors = ErrorReporting(window, less, options);\n const cache = less.cache = options.cache || Cache(window, options, less.logger);\n ImageSize(less.environment);\n\n // Setup user functions - Deprecate?\n if (options.functions) {\n less.functions.functionRegistry.addMultiple(options.functions);\n }\n\n const typePattern = /^text\\/(x-)?less$/;\n\n function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n }\n\n // only really needed for phantom\n function bind(func, thisArg) {\n const curryArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n const args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));\n return func.apply(thisArg, args);\n };\n }\n\n function loadStyles(modifyVars) {\n const styles = document.getElementsByTagName('style');\n let style;\n\n for (let i = 0; i < styles.length; i++) {\n style = styles[i];\n if (style.type.match(typePattern)) {\n const instanceOptions = clone(options);\n instanceOptions.modifyVars = modifyVars;\n const lessText = style.innerHTML || '';\n instanceOptions.filename = document.location.href.replace(/#.*$/, '');\n\n /* jshint loopfunc:true */\n // use closure to store current style\n less.render(lessText, instanceOptions,\n bind((style, e, result) => {\n if (e) {\n errors.add(e, 'inline');\n } else {\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = result.css;\n } else {\n style.innerHTML = result.css;\n }\n }\n }, null, style));\n }\n }\n }\n\n function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {\n\n const instanceOptions = clone(options);\n addDataAttr(instanceOptions, sheet);\n instanceOptions.mime = sheet.type;\n\n if (modifyVars) {\n instanceOptions.modifyVars = modifyVars;\n }\n\n function loadInitialFileCallback(loadedFile) {\n const data = loadedFile.contents;\n const path = loadedFile.filename;\n const webInfo = loadedFile.webInfo;\n\n const newFileInfo = {\n currentDirectory: fileManager.getPath(path),\n filename: path,\n rootFilename: path,\n rewriteUrls: instanceOptions.rewriteUrls\n };\n\n newFileInfo.entryPath = newFileInfo.currentDirectory;\n newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory;\n\n if (webInfo) {\n webInfo.remaining = remaining;\n\n const css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);\n if (!reload && css) {\n webInfo.local = true;\n callback(null, css, data, sheet, webInfo, path);\n return;\n }\n\n }\n\n // TODO add tests around how this behaves when reloading\n errors.remove(path);\n\n instanceOptions.rootFileInfo = newFileInfo;\n less.render(data, instanceOptions, (e, result) => {\n if (e) {\n e.href = path;\n callback(e);\n } else {\n cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css);\n callback(null, result.css, data, sheet, webInfo, path);\n }\n });\n }\n\n fileManager.loadFile(sheet.href, null, instanceOptions, environment)\n .then(loadedFile => {\n loadInitialFileCallback(loadedFile);\n }).catch(err => {\n console.log(err);\n callback(err);\n });\n\n }\n\n function loadStyleSheets(callback, reload, modifyVars) {\n for (let i = 0; i < less.sheets.length; i++) {\n loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);\n }\n }\n\n function initRunningMode() {\n if (less.env === 'development') {\n less.watchTimer = setInterval(() => {\n if (less.watchMode) {\n fileManager.clearFileCache();\n /**\n * @todo remove when this is typed with JSDoc\n */\n // eslint-disable-next-line no-unused-vars\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n } else if (css) {\n browser.createCSS(window.document, css, sheet);\n }\n });\n }\n }, options.poll);\n }\n }\n\n //\n // Watch mode\n //\n less.watch = function () {\n if (!less.watchMode ) {\n less.env = 'development';\n initRunningMode();\n }\n this.watchMode = true;\n return true;\n };\n\n less.unwatch = function () {clearInterval(less.watchTimer); this.watchMode = false; return false; };\n\n //\n // Synchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\".\n //\n less.registerStylesheetsImmediately = () => {\n const links = document.getElementsByTagName('link');\n less.sheets = [];\n\n for (let i = 0; i < links.length; i++) {\n if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&\n (links[i].type.match(typePattern)))) {\n less.sheets.push(links[i]);\n }\n }\n };\n\n //\n // Asynchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\", returning a Promise.\n //\n less.registerStylesheets = () => new Promise((resolve) => {\n less.registerStylesheetsImmediately();\n resolve();\n });\n\n //\n // With this function, it's possible to alter variables and re-render\n // CSS without reloading less-files\n //\n less.modifyVars = record => less.refresh(true, record, false);\n\n less.refresh = (reload, modifyVars, clearFileCache) => {\n if ((reload || clearFileCache) && clearFileCache !== false) {\n fileManager.clearFileCache();\n }\n return new Promise((resolve, reject) => {\n let startTime;\n let endTime;\n let totalMilliseconds;\n let remainingSheets;\n startTime = endTime = new Date();\n\n // Set counter for remaining unprocessed sheets\n remainingSheets = less.sheets.length;\n\n if (remainingSheets === 0) {\n\n endTime = new Date();\n totalMilliseconds = endTime - startTime;\n less.logger.info('Less has finished and no sheets were loaded.');\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n\n } else {\n // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n reject(e);\n return;\n }\n if (webInfo.local) {\n less.logger.info(`Loading ${sheet.href} from cache.`);\n } else {\n less.logger.info(`Rendered ${sheet.href} successfully.`);\n }\n browser.createCSS(window.document, css, sheet);\n less.logger.info(`CSS for ${sheet.href} generated in ${new Date() - endTime}ms`);\n\n // Count completed sheet\n remainingSheets--;\n\n // Check if the last remaining sheet was processed and then call the promise\n if (remainingSheets === 0) {\n totalMilliseconds = new Date() - startTime;\n less.logger.info(`Less has finished. CSS generated in ${totalMilliseconds}ms`);\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n }\n endTime = new Date();\n }, reload, modifyVars);\n }\n\n loadStyles(modifyVars);\n });\n };\n\n less.refreshStyles = loadStyles;\n return less;\n};\n",
+ "// Cache system is a bit outdated and could do with work\n\nexport default (window, options, logger) => {\n let cache = null;\n if (options.env !== 'development') {\n try {\n cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage;\n } catch (_) {}\n }\n return {\n setCSS: function(path, lastModified, modifyVars, styles) {\n if (cache) {\n logger.info(`saving ${path} to cache.`);\n try {\n cache.setItem(path, styles);\n cache.setItem(`${path}:timestamp`, lastModified);\n if (modifyVars) {\n cache.setItem(`${path}:vars`, JSON.stringify(modifyVars));\n }\n } catch (e) {\n // TODO - could do with adding more robust error handling\n logger.error(`failed to save \"${path}\" to local storage for caching.`);\n }\n }\n },\n getCSS: function(path, webInfo, modifyVars) {\n const css = cache && cache.getItem(path);\n const timestamp = cache && cache.getItem(`${path}:timestamp`);\n let vars = cache && cache.getItem(`${path}:vars`);\n\n modifyVars = modifyVars || {};\n vars = vars || '{}'; // if not set, treat as the JSON representation of an empty object\n\n if (timestamp && webInfo.lastModified &&\n (new Date(webInfo.lastModified).valueOf() ===\n new Date(timestamp).valueOf()) &&\n JSON.stringify(modifyVars) === vars) {\n // Use local copy\n return css;\n }\n }\n };\n};\n",
+ "\nimport functionRegistry from './../less/functions/function-registry';\n\nexport default () => {\n function imageSize() {\n throw {\n type: 'Runtime',\n message: 'Image size functions are not supported in browser version of less'\n };\n }\n\n const imageFunctions = {\n 'image-size': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-width': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-height': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n }\n };\n\n functionRegistry.addMultiple(imageFunctions);\n};\n"
+ ],
+ "names": [
+ "extractId",
+ "href",
+ "replace",
+ "addDataAttr",
+ "options",
+ "tag",
+ "opt",
+ "dataset",
+ "Object",
+ "prototype",
+ "hasOwnProperty",
+ "call",
+ "JSON",
+ "parse",
+ "_",
+ "browser",
+ "document",
+ "styles",
+ "sheet",
+ "id",
+ "concat",
+ "title",
+ "utils.extractId",
+ "oldStyleNode",
+ "getElementById",
+ "keepOldStyleNode",
+ "styleNode",
+ "createElement",
+ "setAttribute",
+ "media",
+ "styleSheet",
+ "appendChild",
+ "createTextNode",
+ "childNodes",
+ "length",
+ "firstChild",
+ "nodeValue",
+ "head",
+ "getElementsByTagName",
+ "nextEl",
+ "nextSibling",
+ "parentNode",
+ "insertBefore",
+ "removeChild",
+ "cssText",
+ "e",
+ "Error",
+ "window",
+ "scripts",
+ "currentScript",
+ "logger$1",
+ "error",
+ "msg",
+ "this",
+ "_fireEvent",
+ "warn",
+ "info",
+ "debug",
+ "addListener",
+ "listener",
+ "_listeners",
+ "push",
+ "removeListener",
+ "i_1",
+ "splice",
+ "type",
+ "i_2",
+ "logFunction",
+ "Environment",
+ "externalEnvironment",
+ "fileManagers",
+ "requiredFunctions",
+ "functions",
+ "propName",
+ "environmentFunc",
+ "bind",
+ "getFileManager",
+ "filename",
+ "currentDirectory",
+ "environment",
+ "isSync",
+ "logger",
+ "undefined",
+ "pluginManager",
+ "getFileManagers",
+ "fileManager",
+ "addFileManager",
+ "clearFileManagers",
+ "colors",
+ "aliceblue",
+ "antiquewhite",
+ "aqua",
+ "aquamarine",
+ "azure",
+ "beige",
+ "bisque",
+ "black",
+ "blanchedalmond",
+ "blue",
+ "blueviolet",
+ "brown",
+ "burlywood",
+ "cadetblue",
+ "chartreuse",
+ "chocolate",
+ "coral",
+ "cornflowerblue",
+ "cornsilk",
+ "crimson",
+ "cyan",
+ "darkblue",
+ "darkcyan",
+ "darkgoldenrod",
+ "darkgray",
+ "darkgrey",
+ "darkgreen",
+ "darkkhaki",
+ "darkmagenta",
+ "darkolivegreen",
+ "darkorange",
+ "darkorchid",
+ "darkred",
+ "darksalmon",
+ "darkseagreen",
+ "darkslateblue",
+ "darkslategray",
+ "darkslategrey",
+ "darkturquoise",
+ "darkviolet",
+ "deeppink",
+ "deepskyblue",
+ "dimgray",
+ "dimgrey",
+ "dodgerblue",
+ "firebrick",
+ "floralwhite",
+ "forestgreen",
+ "fuchsia",
+ "gainsboro",
+ "ghostwhite",
+ "gold",
+ "goldenrod",
+ "gray",
+ "grey",
+ "green",
+ "greenyellow",
+ "honeydew",
+ "hotpink",
+ "indianred",
+ "indigo",
+ "ivory",
+ "khaki",
+ "lavender",
+ "lavenderblush",
+ "lawngreen",
+ "lemonchiffon",
+ "lightblue",
+ "lightcoral",
+ "lightcyan",
+ "lightgoldenrodyellow",
+ "lightgray",
+ "lightgrey",
+ "lightgreen",
+ "lightpink",
+ "lightsalmon",
+ "lightseagreen",
+ "lightskyblue",
+ "lightslategray",
+ "lightslategrey",
+ "lightsteelblue",
+ "lightyellow",
+ "lime",
+ "limegreen",
+ "linen",
+ "magenta",
+ "maroon",
+ "mediumaquamarine",
+ "mediumblue",
+ "mediumorchid",
+ "mediumpurple",
+ "mediumseagreen",
+ "mediumslateblue",
+ "mediumspringgreen",
+ "mediumturquoise",
+ "mediumvioletred",
+ "midnightblue",
+ "mintcream",
+ "mistyrose",
+ "moccasin",
+ "navajowhite",
+ "navy",
+ "oldlace",
+ "olive",
+ "olivedrab",
+ "orange",
+ "orangered",
+ "orchid",
+ "palegoldenrod",
+ "palegreen",
+ "paleturquoise",
+ "palevioletred",
+ "papayawhip",
+ "peachpuff",
+ "peru",
+ "pink",
+ "plum",
+ "powderblue",
+ "purple",
+ "rebeccapurple",
+ "red",
+ "rosybrown",
+ "royalblue",
+ "saddlebrown",
+ "salmon",
+ "sandybrown",
+ "seagreen",
+ "seashell",
+ "sienna",
+ "silver",
+ "skyblue",
+ "slateblue",
+ "slategray",
+ "slategrey",
+ "snow",
+ "springgreen",
+ "steelblue",
+ "tan",
+ "teal",
+ "thistle",
+ "tomato",
+ "turquoise",
+ "violet",
+ "wheat",
+ "white",
+ "whitesmoke",
+ "yellow",
+ "yellowgreen",
+ "unitConversions",
+ "m",
+ "cm",
+ "mm",
+ "in",
+ "px",
+ "pt",
+ "pc",
+ "duration",
+ "s",
+ "ms",
+ "angle",
+ "rad",
+ "Math",
+ "PI",
+ "deg",
+ "grad",
+ "turn",
+ "data",
+ "Node",
+ "parent",
+ "visibilityBlocks",
+ "nodeVisible",
+ "rootNode",
+ "parsed",
+ "defineProperty",
+ "get",
+ "fileInfo",
+ "getIndex",
+ "setParent",
+ "nodes",
+ "set",
+ "node",
+ "Array",
+ "isArray",
+ "forEach",
+ "_index",
+ "_fileInfo",
+ "isRulesetLike",
+ "toCSS",
+ "context",
+ "strs",
+ "genCSS",
+ "add",
+ "chunk",
+ "index",
+ "isEmpty",
+ "join",
+ "output",
+ "value",
+ "accept",
+ "visitor",
+ "visit",
+ "eval",
+ "_operate",
+ "op",
+ "a",
+ "b",
+ "fround",
+ "precision",
+ "numPrecision",
+ "Number",
+ "toFixed",
+ "compare",
+ "numericCompare",
+ "blocksVisibility",
+ "addVisibilityBlock",
+ "removeVisibilityBlock",
+ "ensureVisibility",
+ "ensureInvisibility",
+ "isVisible",
+ "visibilityInfo",
+ "copyVisibilityInfo",
+ "Color",
+ "rgb",
+ "originalForm",
+ "self",
+ "match",
+ "map",
+ "c",
+ "i",
+ "parseInt",
+ "alpha",
+ "split",
+ "clamp",
+ "v",
+ "max",
+ "min",
+ "toHex",
+ "round",
+ "toString",
+ "assign",
+ "luma",
+ "r",
+ "g",
+ "pow",
+ "doNotCompress",
+ "color",
+ "colorFunction",
+ "compress",
+ "args",
+ "indexOf",
+ "toHSL",
+ "h",
+ "l",
+ "toRGB",
+ "splitcolor",
+ "operate",
+ "other",
+ "d",
+ "toHSV",
+ "toARGB",
+ "x",
+ "fromKeyword",
+ "keyword",
+ "key",
+ "toLowerCase",
+ "slice",
+ "__assign",
+ "t",
+ "n",
+ "arguments",
+ "p",
+ "apply",
+ "SuppressedError",
+ "Paren",
+ "paren",
+ "noSpacing",
+ "_noSpaceCombinators",
+ " ",
+ "|",
+ "Combinator",
+ "emptyOrWhitespace",
+ "trim",
+ "spaceOrEmpty",
+ "Element",
+ "combinator",
+ "isVariable",
+ "currentFileInfo",
+ "clone",
+ "firstSelector",
+ "charAt",
+ "ALWAYS",
+ "PARENS_DIVISION",
+ "PARENS",
+ "RewriteUrls",
+ "getType",
+ "payload",
+ "copy",
+ "target",
+ "item",
+ "constructor",
+ "getPrototypeOf",
+ "getOwnPropertyNames",
+ "getOwnPropertySymbols",
+ "reduce",
+ "carry",
+ "props",
+ "includes",
+ "newVal",
+ "originalObject",
+ "includeNonenumerable",
+ "propType",
+ "propertyIsEnumerable",
+ "enumerable",
+ "writable",
+ "configurable",
+ "assignProp",
+ "nonenumerable",
+ "getLocation",
+ "inputStream",
+ "line",
+ "column",
+ "copyArray",
+ "arr",
+ "obj",
+ "cloned",
+ "prop",
+ "defaults",
+ "obj1",
+ "obj2",
+ "newObj",
+ "_defaults",
+ "defaults_1",
+ "copyOptions",
+ "opts",
+ "strictMath",
+ "math",
+ "Constants.Math",
+ "relativeUrls",
+ "rewriteUrls",
+ "Constants.RewriteUrls",
+ "flattenArray",
+ "result",
+ "length_1",
+ "isNullOrUndefined",
+ "val",
+ "anonymousFunc",
+ "LessError",
+ "fileContentMap",
+ "currentFilename",
+ "message",
+ "stack",
+ "input",
+ "contents",
+ "loc",
+ "utils.getLocation",
+ "col",
+ "callLine",
+ "lines",
+ "found",
+ "func",
+ "Function",
+ "lineAdjust",
+ "callExtract",
+ "extract",
+ "create",
+ "F",
+ "isWarning",
+ "_a",
+ "stylize",
+ "str",
+ "type_1",
+ "errorTxt",
+ "substr",
+ "_visitArgs",
+ "visitDeeper",
+ "_hasIndexed",
+ "_noop",
+ "Visitor",
+ "implementation",
+ "_implementation",
+ "_visitInCache",
+ "_visitOutCache",
+ "indexNodeTypes",
+ "ticker",
+ "child",
+ "typeIndex",
+ "tree",
+ "nodeTypeIndex",
+ "fnName",
+ "impl",
+ "funcOut",
+ "visitArgs",
+ "newNode",
+ "isReplacing",
+ "cnt",
+ "visitArray",
+ "nonReplacing",
+ "out",
+ "evald",
+ "flatten",
+ "nestedCnt",
+ "j",
+ "nestedItem",
+ "contexts",
+ "copyFromOriginal",
+ "original",
+ "destination",
+ "propertiesToCopy",
+ "parseCopyProperties",
+ "Parse",
+ "paths",
+ "evalCopyProperties",
+ "isPathRelative",
+ "path",
+ "test",
+ "isPathLocalRelative",
+ "Eval",
+ "frames",
+ "importantScope",
+ "enterCalc",
+ "calcStack",
+ "inCalc",
+ "exitCalc",
+ "pop",
+ "inParenthesis",
+ "parensStack",
+ "outOfParenthesis",
+ "mathOn",
+ "isMathOn",
+ "pathRequiresRewrite",
+ "rewritePath",
+ "rootpath",
+ "newPath",
+ "normalizePath",
+ "segment",
+ "segments",
+ "reverse",
+ "ImportSequencer",
+ "onSequencerEmpty",
+ "imports",
+ "variableImports",
+ "_onSequencerEmpty",
+ "_currentDepth",
+ "addImport",
+ "callback",
+ "importSequencer",
+ "importItem",
+ "isReady",
+ "tryRun",
+ "addVariableImport",
+ "variableImport",
+ "ImportVisitor",
+ "importer",
+ "finish",
+ "_visitor",
+ "_importer",
+ "_finish",
+ "importCount",
+ "onceFileDetectionMap",
+ "recursionDetector",
+ "_sequencer",
+ "run",
+ "root",
+ "isFinished",
+ "visitImport",
+ "importNode",
+ "inlineCSS",
+ "inline",
+ "css",
+ "utils.copyArray",
+ "importParent",
+ "isVariableImport",
+ "processImportNode",
+ "evaldImportNode",
+ "evalForImport",
+ "multiple",
+ "importMultiple",
+ "tryAppendLessExtension",
+ "rules",
+ "onImported",
+ "sequencedOnImported",
+ "getPath",
+ "importedAtRoot",
+ "fullPath",
+ "importVisitor",
+ "isPlugin",
+ "isOptional",
+ "optional",
+ "duplicateImport",
+ "skip",
+ "importedFilename",
+ "oldContext",
+ "visitDeclaration",
+ "declNode",
+ "unshift",
+ "visitDeclarationOut",
+ "shift",
+ "visitAtRule",
+ "atRuleNode",
+ "declarations",
+ "isRooted",
+ "visitAtRuleOut",
+ "visitMixinDefinition",
+ "mixinDefinitionNode",
+ "visitMixinDefinitionOut",
+ "visitRuleset",
+ "rulesetNode",
+ "visitRulesetOut",
+ "visitMedia",
+ "mediaNode",
+ "visitMediaOut",
+ "SetTreeVisibilityVisitor",
+ "visible",
+ "ExtendFinderVisitor",
+ "allExtendsStack",
+ "allExtends",
+ "extend",
+ "extendList",
+ "allSelectorsExtendList",
+ "ruleCnt",
+ "Extend",
+ "extendOnEveryPath",
+ "selectorPath",
+ "selExtendList",
+ "allSelectorsExtend",
+ "foundExtends",
+ "findSelfSelectors",
+ "ruleset",
+ "firstExtendOnThisSelectorPath",
+ "selectors",
+ "ProcessExtendsVisitor",
+ "extendFinder",
+ "extendIndices",
+ "doExtendChaining",
+ "newRoot",
+ "checkExtendsForNonMatched",
+ "indices",
+ "filter",
+ "hasFoundMatches",
+ "parent_ids",
+ "selector",
+ "extendsList",
+ "extendsListTarget",
+ "iterationCount",
+ "extendIndex",
+ "targetExtendIndex",
+ "matches",
+ "newSelector",
+ "targetExtend",
+ "newExtend",
+ "extendsToAdd",
+ "extendVisitor",
+ "object_id",
+ "selfSelectors",
+ "findMatch",
+ "selfSelector",
+ "extendSelector",
+ "option",
+ "extendChainCount",
+ "selectorOne",
+ "selectorTwo",
+ "ruleNode",
+ "visitSelector",
+ "selectorNode",
+ "pathIndex",
+ "selectorsToAdd",
+ "extendedSelectors",
+ "haystackSelectorPath",
+ "haystackSelectorIndex",
+ "hackstackSelector",
+ "hackstackElementIndex",
+ "haystackElement",
+ "targetCombinator",
+ "potentialMatch",
+ "needleElements",
+ "elements",
+ "potentialMatches",
+ "allowBefore",
+ "matched",
+ "initialCombinator",
+ "isElementValuesEqual",
+ "finished",
+ "allowAfter",
+ "endPathIndex",
+ "endPathElementIndex",
+ "elementValue1",
+ "elementValue2",
+ "Attribute",
+ "Selector",
+ "replacementSelector",
+ "matchIndex",
+ "firstElement",
+ "newElements",
+ "currentSelectorPathIndex",
+ "currentSelectorPathElementIndex",
+ "currentValue",
+ "derived",
+ "createDerived",
+ "newAllExtends",
+ "lastIndex",
+ "JoinSelectorVisitor",
+ "getIsOutput",
+ "joinSelectors",
+ "multiMedia",
+ "CSSVisitorUtils",
+ "_context",
+ "containsSilentNonBlockedChild",
+ "bodyRules",
+ "rule",
+ "isSilent",
+ "keepOnlyVisibleChilds",
+ "owner",
+ "thing",
+ "hasVisibleSelector",
+ "resolveVisibility",
+ "compiledRulesBody",
+ "isVisibleRuleset",
+ "firstRoot",
+ "ToCSSVisitor",
+ "utils",
+ "variable",
+ "mixinNode",
+ "visitExtend",
+ "extendNode",
+ "visitComment",
+ "commentNode",
+ "originalRules",
+ "visitAtRuleWithBody",
+ "visitAtRuleWithoutBody",
+ "visitAnonymous",
+ "anonymousNode",
+ "nodeRules",
+ "hasFakeRuleset",
+ "getBodyRules",
+ "_mergeRules",
+ "name",
+ "charset",
+ "debugInfo",
+ "comment",
+ "Comment",
+ "checkValidNodes",
+ "isRoot",
+ "Declaration",
+ "Call",
+ "allowRoot",
+ "rulesets",
+ "_compileRulesetPaths",
+ "nodeRuleCnt",
+ "_removeDuplicateRules",
+ "ruleList",
+ "ruleCache",
+ "ruleCSS",
+ "groups",
+ "groupsArr",
+ "i_3",
+ "merge",
+ "group",
+ "result_1",
+ "space_1",
+ "comma_1",
+ "Expression",
+ "important",
+ "Value",
+ "visitors",
+ "MarkVisibleSelectorsVisitor",
+ "ExtendVisitor",
+ "functionRegistry",
+ "makeRegistry",
+ "base",
+ "_data",
+ "addMultiple",
+ "_this",
+ "keys",
+ "getLocalFunctions",
+ "inherit",
+ "MediaSyntaxOptions",
+ "queryInParens",
+ "ContainerSyntaxOptions",
+ "Anonymous",
+ "mapLines",
+ "rulesetLike",
+ "Boolean",
+ "Parser",
+ "currentIndex",
+ "parsers",
+ "parserInput",
+ "furthest",
+ "furthestPossibleErrorMessage",
+ "chunks",
+ "current",
+ "currentPos",
+ "saveStack",
+ "skipWhitespace",
+ "nextChar",
+ "oldi",
+ "oldj",
+ "curr",
+ "endIndex",
+ "mem",
+ "inp",
+ "charCodeAt",
+ "autoCommentAbsorb",
+ "isLineComment",
+ "nextNewLine",
+ "text",
+ "commentStore",
+ "nextStarSlash",
+ "save",
+ "restore",
+ "possibleErrorMessage",
+ "state",
+ "forget",
+ "isWhitespace",
+ "offset",
+ "pos",
+ "code",
+ "$re",
+ "tok",
+ "exec",
+ "$char",
+ "$peekChar",
+ "$str",
+ "tokLength",
+ "$quoted",
+ "startChar",
+ "currentPosition",
+ "$parseUntil",
+ "testChar",
+ "quote",
+ "returnVal",
+ "inComment",
+ "blockDepth",
+ "blockStack",
+ "parseGroups",
+ "startPos",
+ "lastPos",
+ "loop",
+ "char",
+ "expected",
+ "peek",
+ "peekChar",
+ "currentChar",
+ "prevChar",
+ "getInput",
+ "peekNotNumeric",
+ "start",
+ "end",
+ "furthestReachedEnd",
+ "furthestChar",
+ "getParserInput",
+ "quiet",
+ "toUpperCase",
+ "expect",
+ "arg",
+ "expectChar",
+ "getDebugInfo",
+ "lineNumber",
+ "fileName",
+ "parseNode",
+ "parseList",
+ "returnNodes",
+ "parser",
+ "additionalData",
+ "globalVars",
+ "modifyVars",
+ "ignored",
+ "err",
+ "preText",
+ "disablePluginRule",
+ "plugin",
+ "serializeVars",
+ "preProcessors",
+ "getPreProcessors",
+ "process",
+ "banner",
+ "contentsIgnoredChars",
+ "Ruleset",
+ "primary",
+ "endInfo",
+ "processImports",
+ "mixin",
+ "extendRule",
+ "definition",
+ "declaration",
+ "variableCall",
+ "entities",
+ "atrule",
+ "foundSemiColon",
+ "mixinLookup",
+ "quoted",
+ "forceEscaped",
+ "isEscaped",
+ "k",
+ "customFuncCall",
+ "stop",
+ "declarationCall",
+ "validCall",
+ "substring",
+ "ruleProperty",
+ "f",
+ "ieAlpha",
+ "boolean",
+ "condition",
+ "if",
+ "prevArgs",
+ "isSemiColonSeparated",
+ "argsComma",
+ "argsSemiColon",
+ "detachedRuleset",
+ "assignment",
+ "expression",
+ "literal",
+ "dimension",
+ "unicodeDescriptor",
+ "entity",
+ "url",
+ "property",
+ "Variable",
+ "Property",
+ "ch",
+ "variableCurly",
+ "curly",
+ "propertyCurly",
+ "colorKeyword",
+ "ud",
+ "javascript",
+ "js",
+ "escape",
+ "parsedName",
+ "lookups",
+ "inValue",
+ "ruleLookups",
+ "VariableCall",
+ "NamespaceValue",
+ "isRule",
+ "first",
+ "element",
+ "getLookup",
+ "hasParens",
+ "parensIndex",
+ "parensWS",
+ "elem",
+ "elemIndex",
+ "re",
+ "isCall",
+ "expressionContainsNamed",
+ "nameLoop",
+ "expand",
+ "returner",
+ "variadic",
+ "expressions",
+ "hasSep",
+ "throwAwayComments",
+ "cond",
+ "params",
+ "argInfo",
+ "conditions",
+ "block",
+ "lookupValue",
+ "Quoted",
+ "attribute",
+ "slashedCombinator",
+ "isLess",
+ "when",
+ "ele",
+ "cif",
+ "content",
+ "blockRuleset",
+ "Definition",
+ "DetachedRuleset",
+ "dumpLineNumbers",
+ "strictImports",
+ "hasDR",
+ "permissiveValue",
+ "anonymousValue",
+ "untilTokens",
+ "done",
+ "testCurrentChar",
+ "variableRegex",
+ "propRegex",
+ "import",
+ "features",
+ "dir",
+ "importOptions",
+ "mediaFeatures",
+ "o",
+ "optionName",
+ "importOption",
+ "mediaFeature",
+ "syntaxOptions",
+ "rangeP",
+ "spacing",
+ "atomicCondition",
+ "rvalue",
+ "lvalue",
+ "prepareAndGetNestableAtRule",
+ "treeType",
+ "atRule",
+ "nestableAtRule",
+ "Media",
+ "Container",
+ "pluginArgs",
+ "atruleUnknown",
+ "hasBlock",
+ "atruleBlock",
+ "isKeywordList",
+ "nonVendorSpecificName",
+ "hasIdentifier",
+ "hasExpression",
+ "hasUnknown",
+ "unknownPackage",
+ "blockPackage",
+ "sub",
+ "addition",
+ "parens",
+ "colorOperand",
+ "Keyword",
+ "multiplication",
+ "operation",
+ "isSpaced",
+ "operand",
+ "parensInOp",
+ "needsParens",
+ "logical",
+ "next",
+ "conditionAnd",
+ "negatedCondition",
+ "parenthesisCondition",
+ "negate",
+ "body",
+ "me",
+ "tryConditionFollowedByParenthesis",
+ "preparsedCond",
+ "delim",
+ "simpleProperty",
+ "vars",
+ "name_1",
+ "String",
+ "evaldCondition",
+ "getElements",
+ "mixinElements_",
+ "utils.isNullOrUndefined",
+ "mediaEmpty",
+ "els",
+ "importManager",
+ "createEmptySelectors",
+ "el",
+ "sels",
+ "olen",
+ "len",
+ "mixinElements",
+ "isJustParentSelector",
+ "True",
+ "False",
+ "MATH",
+ "asComment",
+ "ctx",
+ "asMediaQuery",
+ "filenameWithProtocol",
+ "lineSeparator",
+ "lastRule",
+ "prevMath",
+ "evaldValue",
+ "mathBypass",
+ "evalName",
+ "importantResult",
+ "makeImportant",
+ "isCompressed",
+ "defaultFunc",
+ "value_",
+ "error_",
+ "reset",
+ "_lookups",
+ "_variables",
+ "_properties",
+ "isRuleset",
+ "selCnt",
+ "hasVariable",
+ "hasOnePassingSelector",
+ "toParseSelectors",
+ "startingIndex",
+ "selectorFileInfo",
+ "utils.flattenArray",
+ "subRule",
+ "originalRuleset",
+ "allowImports",
+ "globalFunctionRegistry",
+ "ctxFrames",
+ "ctxSelectors",
+ "evalImports",
+ "rsRules",
+ "evalFirst",
+ "mediaBlockCount",
+ "mediaBlocks",
+ "resetCache",
+ "bubbleSelectors",
+ "importRules",
+ "matchArgs",
+ "matchCondition",
+ "lastSelector",
+ "_rulesets",
+ "variables",
+ "hash",
+ "properties",
+ "name_2",
+ "decl",
+ "parseValue",
+ "lastDeclaration",
+ "toParse",
+ "transformDeclaration",
+ "nodes_1",
+ "filtRules",
+ "prependRule",
+ "find",
+ "foundMixins",
+ "ruleNodes",
+ "tabLevel",
+ "sep",
+ "tabRuleStr",
+ "tabSetStr",
+ "charsetNodeIndex",
+ "importNodeIndex",
+ "isCharset",
+ "pathCnt",
+ "pathSubCnt",
+ "currentLastRule",
+ "joinSelector",
+ "createParenthesis",
+ "elementsToPak",
+ "originalElement",
+ "replacementParen",
+ "insideParent",
+ "createSelector",
+ "containedElement",
+ "addReplacementIntoPath",
+ "beginningPath",
+ "addPath",
+ "replacedElement",
+ "originalSelector",
+ "newSelectorPath",
+ "newJoinedSelector",
+ "parentEl",
+ "restOfPath",
+ "addAllReplacementsIntoPath",
+ "addPaths",
+ "mergeElementsOnToSelectors",
+ "sel",
+ "deriveSelector",
+ "deriveFrom",
+ "newPaths",
+ "replaceParentSelector",
+ "inSelector",
+ "currentElements",
+ "newSelectors",
+ "selectorsMultiplied",
+ "maybeSelector",
+ "hadParentSelector",
+ "nestedSelector",
+ "replaced",
+ "nestedPaths",
+ "replacedNewSelectors",
+ "concatenated",
+ "Unit",
+ "numerator",
+ "denominator",
+ "backupUnit",
+ "sort",
+ "strictUnits",
+ "returnStr",
+ "is",
+ "unitString",
+ "isLength",
+ "RegExp",
+ "isSingular",
+ "usedUnits",
+ "mapUnit",
+ "groupName",
+ "atomicUnit",
+ "cancel",
+ "counter",
+ "count",
+ "Dimension",
+ "unit",
+ "parseFloat",
+ "isNaN",
+ "toColor",
+ "strValue",
+ "convertTo",
+ "unify",
+ "conversions",
+ "targetUnit",
+ "applyUnit",
+ "derivedConversions",
+ "returnValue",
+ "doubleParen",
+ "NestableAtRulePrototype",
+ "evalFunction",
+ "expr",
+ "exprValues",
+ "evalTop",
+ "mediaPath",
+ "evalNested",
+ "permute",
+ "fragment",
+ "rest",
+ "AtRule",
+ "allDeclarations",
+ "declarationsBlock",
+ "allRulesetDeclarations_1",
+ "simpleBlock",
+ "mergeable",
+ "keywordList",
+ "outputRuleset",
+ "mediaPathBackup",
+ "mediaBlocksBackup",
+ "evalRoot",
+ "mergeRules",
+ "less",
+ "ampersandCount",
+ "noAmpersandCount",
+ "noAmpersands",
+ "allAmpersands",
+ "precedingSelectors",
+ "frame",
+ "value_1",
+ "mixedAmpersands",
+ "callEval",
+ "Operation",
+ "operands",
+ "functionCaller",
+ "isValid",
+ "evalArgs",
+ "commentFilter",
+ "subNodes",
+ "to",
+ "from",
+ "pack",
+ "ar",
+ "__spreadArray",
+ "calc",
+ "currentMathContext",
+ "funcCaller",
+ "FunctionCaller",
+ "columnNumber",
+ "evaluating",
+ "fun",
+ "vArr",
+ "escaped",
+ "containsVariables",
+ "that",
+ "iterativeReplace",
+ "regexp",
+ "replacementFnc",
+ "evaluatedValue",
+ "name1",
+ "name2",
+ "URL",
+ "isEvald",
+ "urlArgs",
+ "Import",
+ "pathValue",
+ "reference",
+ "evalPath",
+ "doEval",
+ "registry",
+ "featureValue",
+ "layerCss",
+ "newImport",
+ "JsEvalNode",
+ "evaluateJavaScript",
+ "evalContext",
+ "javascriptEnabled",
+ "jsify",
+ "toJS",
+ "JavaScript",
+ "string",
+ "Assignment",
+ "Condition",
+ "QueryInParens",
+ "op2",
+ "mvalue",
+ "mvalues",
+ "variableDeclaration",
+ "mvalueCopy",
+ "UnicodeDescriptor",
+ "Negative",
+ "next_id",
+ "selectorElements",
+ "selfElements",
+ "ruleCall",
+ "arity",
+ "optionalParameters",
+ "required",
+ "evalParams",
+ "mixinEnv",
+ "evaldArguments",
+ "varargs",
+ "isNamedFound",
+ "argIndex",
+ "argsLength",
+ "evalCall",
+ "_arguments",
+ "mixinFrames",
+ "allArgsCnt",
+ "requiredArgsCnt",
+ "MixinCall",
+ "mixins",
+ "mixinPath",
+ "argValue",
+ "isRecursive",
+ "isOneFound",
+ "candidate",
+ "defaultResult",
+ "noArgumentsFilter",
+ "candidates",
+ "conditionResult",
+ "calcDefGroup",
+ "namespace",
+ "MixinDefinition",
+ "format",
+ "newRules",
+ "_setVisibilityToReplacement",
+ "replacement",
+ "AbstractFileManager",
+ "lastIndexOf",
+ "tryAppendExtension",
+ "ext",
+ "supportsSync",
+ "alwaysMakePathsAbsolute",
+ "isPathAbsolute",
+ "basePath",
+ "laterPath",
+ "pathDiff",
+ "baseUrl",
+ "urlDirectories",
+ "baseUrlDirectories",
+ "urlParts",
+ "extractUrlParts",
+ "baseUrlParts",
+ "diff",
+ "hostPart",
+ "directories",
+ "urlPartsRegex",
+ "rawDirectories",
+ "rawPath",
+ "fileUrl",
+ "AbstractPluginLoader",
+ "require",
+ "evalPlugin",
+ "pluginOptions",
+ "pluginObj",
+ "localModule",
+ "shortname",
+ "FileManager",
+ "trySetOptions",
+ "use",
+ "exports",
+ "loader",
+ "validatePlugin",
+ "minVersion",
+ "compareVersion",
+ "addPlugin",
+ "setOptions",
+ "version",
+ "versionToString",
+ "aVersion",
+ "bVersion",
+ "versionString",
+ "printUsage",
+ "plugins",
+ "If",
+ "trueValue",
+ "falseValue",
+ "isdefined",
+ "colorFunctions",
+ "boolean$1",
+ "hsla",
+ "origColor",
+ "hsl",
+ "number",
+ "rgba",
+ "size",
+ "m1",
+ "m2",
+ "hue",
+ "hsv",
+ "hsva",
+ "vs",
+ "floor",
+ "perm",
+ "saturation",
+ "lightness",
+ "hsvhue",
+ "hsvsaturation",
+ "hsvvalue",
+ "luminance",
+ "saturate",
+ "amount",
+ "method",
+ "desaturate",
+ "lighten",
+ "darken",
+ "fadein",
+ "fadeout",
+ "fade",
+ "spin",
+ "mix",
+ "color1",
+ "color2",
+ "weight",
+ "w",
+ "w1",
+ "w2",
+ "greyscale",
+ "contrast",
+ "dark",
+ "light",
+ "threshold",
+ "argb",
+ "tint",
+ "shade",
+ "colorBlend",
+ "mode",
+ "cb",
+ "cs",
+ "cr",
+ "ab",
+ "as",
+ "colorBlendModeFunctions",
+ "multiply",
+ "screen",
+ "overlay",
+ "softlight",
+ "sqrt",
+ "hardlight",
+ "difference",
+ "abs",
+ "exclusion",
+ "average",
+ "negation",
+ "getItemsFromNode",
+ "list",
+ "_SELF",
+ "~",
+ "_i",
+ "values",
+ "range",
+ "step",
+ "stepValue",
+ "each",
+ "rs",
+ "iterator",
+ "tryEval",
+ "Quote",
+ "valueName",
+ "keyName",
+ "indexName",
+ "MathHelper",
+ "fn",
+ "mathFunctions",
+ "ceil",
+ "sin",
+ "cos",
+ "atan",
+ "asin",
+ "acos",
+ "mathHelper",
+ "fraction",
+ "num",
+ "minMax",
+ "isMin",
+ "currentUnified",
+ "referenceUnified",
+ "unitStatic",
+ "unitClone",
+ "order",
+ "convert",
+ "pi",
+ "mod",
+ "y",
+ "percentage",
+ "evaluated",
+ "encodeURI",
+ "pattern",
+ "flags",
+ "%",
+ "token",
+ "encodeURIComponent",
+ "isa",
+ "Type",
+ "isunit",
+ "types",
+ "isruleset",
+ "iscolor",
+ "isnumber",
+ "isstring",
+ "iskeyword",
+ "isurl",
+ "ispixel",
+ "ispercentage",
+ "isem",
+ "get-unit",
+ "styleExpression",
+ "style$1",
+ "style",
+ "colorBlending",
+ "fallback",
+ "functionThis",
+ "data-uri",
+ "mimetypeNode",
+ "filePathNode",
+ "mimetype",
+ "filePath",
+ "entryPath",
+ "fragmentStart",
+ "utils.clone",
+ "rawBuffer",
+ "useBase64",
+ "mimeLookup",
+ "charsetLookup",
+ "fileSync",
+ "loadFileSync",
+ "buf",
+ "encodeBase64",
+ "uri",
+ "dataUri",
+ "svg-gradient",
+ "direction",
+ "stops",
+ "gradientDirectionSvg",
+ "position",
+ "positionValue",
+ "gradientType",
+ "rectangleDimension",
+ "renderEnv",
+ "directionValue",
+ "throwArgumentDescriptor",
+ "transformTree",
+ "evaldRoot",
+ "evalEnv",
+ "visitorIterator",
+ "preEvalVisitors",
+ "isPreEvalVisitor",
+ "isPreVisitor",
+ "pm",
+ "PluginManager",
+ "postProcessors",
+ "installedPlugins",
+ "pluginCache",
+ "Loader",
+ "PluginLoader",
+ "addPlugins",
+ "install",
+ "addVisitor",
+ "addPreProcessor",
+ "preProcessor",
+ "priority",
+ "indexToInsertAt",
+ "addPostProcessor",
+ "postProcessor",
+ "manager",
+ "getPostProcessors",
+ "getVisitors",
+ "PluginManagerFactory",
+ "newFactory",
+ "parseNodeVersion_1",
+ "major",
+ "minor",
+ "patch",
+ "pre",
+ "build",
+ "lessRoot",
+ "sourceMapOutput",
+ "sourceMapBuilder",
+ "parseTree",
+ "SourceMapBuilder",
+ "ParseTree",
+ "toCSSOptions",
+ "sourceMap",
+ "sourceMapOpts",
+ "sourceMapInputFilename",
+ "sourceMapBasepath",
+ "lastSlash",
+ "sourceMapFullFilename",
+ "sourceMapFileInline",
+ "sourceMapFilename",
+ "sourceMapURL",
+ "mapBase",
+ "sourceMapOutputFilename",
+ "inputBase",
+ "file_1",
+ "getExternalSourceMap",
+ "files",
+ "rootFilename",
+ "SourceMapOutput",
+ "contentsIgnoredCharsMap",
+ "contentsMap",
+ "outputFilename",
+ "sourceMapRootpath",
+ "outputSourceFiles",
+ "sourceMapGenerator",
+ "disableSourcemapAnnotation",
+ "normalizeFilename",
+ "removeBasepath",
+ "getCSSAppendage",
+ "setExternalSourceMap",
+ "isInline",
+ "getSourceMapURL",
+ "getOutputFilename",
+ "getInputFilename",
+ "_css",
+ "_rootNode",
+ "_contentsMap",
+ "_contentsIgnoredCharsMap",
+ "_sourceMapFilename",
+ "_outputFilename",
+ "_sourceMapBasepath",
+ "_sourceMapRootpath",
+ "_outputSourceFiles",
+ "_sourceMapGeneratorConstructor",
+ "getSourceMapGenerator",
+ "_lineNumber",
+ "_column",
+ "sourceLines",
+ "columns",
+ "sourceColumns",
+ "inputSource",
+ "_sourceMapGenerator",
+ "addMapping",
+ "generated",
+ "source",
+ "file",
+ "sourceRoot",
+ "setSourceContent",
+ "sourceMapContent",
+ "stringify",
+ "toJSON",
+ "ImportManager",
+ "rootFileInfo",
+ "mime",
+ "queue",
+ "pluginLoader",
+ "fileParsedFunc",
+ "importedEqualsRoot",
+ "newFileInfo",
+ "loadedFile",
+ "promise",
+ "loadFileCallback",
+ "resolvedFilename",
+ "newEnv",
+ "syncImport",
+ "loadPluginSync",
+ "loadPlugin",
+ "loadFile",
+ "then",
+ "render",
+ "utils.copyOptions",
+ "self_1",
+ "Promise",
+ "resolve",
+ "reject",
+ "Render",
+ "context_1",
+ "pluginManager_1",
+ "reUsePluginManager",
+ "imports_1",
+ "evalResult",
+ "fileContent",
+ "parseVersion",
+ "initial",
+ "ctor",
+ "api",
+ "fileCache",
+ "doXHR",
+ "errback",
+ "xhr",
+ "XMLHttpRequest",
+ "async",
+ "isFileProtocol",
+ "fileAsync",
+ "handleResponse",
+ "status",
+ "responseText",
+ "getResponseHeader",
+ "overrideMimeType",
+ "open",
+ "setRequestHeader",
+ "send",
+ "onreadystatechange",
+ "readyState",
+ "supports",
+ "clearFileCache",
+ "location",
+ "useFileCache",
+ "lessText_1",
+ "webInfo",
+ "lastModified",
+ "Date",
+ "FM",
+ "log",
+ "fulfill",
+ "catch",
+ "ErrorReporting",
+ "rootHref",
+ "errorReporting",
+ "errors",
+ "errorline",
+ "classname",
+ "logLevel",
+ "errorConsole",
+ "timer",
+ "filenameNoPath",
+ "className",
+ "innerHTML",
+ "env",
+ "setInterval",
+ "replaceChild",
+ "clearInterval",
+ "errorHTML",
+ "remove",
+ "removeErrorHTML",
+ "depends",
+ "lint",
+ "insecure",
+ "protocol",
+ "poll",
+ "hostname",
+ "port",
+ "onReady",
+ "addDefaultOptions",
+ "LESS_PLUGINS",
+ "loggers",
+ "console",
+ "LogListener",
+ "cache",
+ "localStorage",
+ "setCSS",
+ "setItem",
+ "getCSS",
+ "getItem",
+ "timestamp",
+ "valueOf",
+ "Cache",
+ "imageSize",
+ "imageFunctions",
+ "image-size",
+ "image-width",
+ "image-height",
+ "ImageSize",
+ "typePattern",
+ "thisArg",
+ "curryArgs",
+ "loadStyles",
+ "instanceOptions",
+ "loadStyleSheet",
+ "reload",
+ "remaining",
+ "local",
+ "loadInitialFileCallback",
+ "loadStyleSheets",
+ "sheets",
+ "watch",
+ "watchMode",
+ "watchTimer",
+ "unwatch",
+ "registerStylesheetsImmediately",
+ "links",
+ "rel",
+ "registerStylesheets",
+ "record",
+ "refresh",
+ "startTime",
+ "endTime",
+ "totalMilliseconds",
+ "remainingSheets",
+ "refreshStyles",
+ "resolveOrReject",
+ "pageLoadFinished"
+ ],
+ "mappings": "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"
+}
\ No newline at end of file
diff --git a/public/lib/pocketbase.umd.js b/public/lib/pocketbase.umd.js
new file mode 100644
index 0000000..a713784
--- /dev/null
+++ b/public/lib/pocketbase.umd.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).PocketBase=t()}(this,(function(){"use strict";class ClientResponseError extends Error{constructor(e){super("ClientResponseError"),this.url="",this.status=0,this.response={},this.isAbort=!1,this.originalError=null,Object.setPrototypeOf(this,ClientResponseError.prototype),null!==e&&"object"==typeof e&&(this.url="string"==typeof e.url?e.url:"",this.status="number"==typeof e.status?e.status:0,this.isAbort=!!e.isAbort,this.originalError=e.originalError,null!==e.response&&"object"==typeof e.response?this.response=e.response:null!==e.data&&"object"==typeof e.data?this.response=e.data:this.response={}),this.originalError||e instanceof ClientResponseError||(this.originalError=e),"undefined"!=typeof DOMException&&e instanceof DOMException&&(this.isAbort=!0),this.name="ClientResponseError "+this.status,this.message=this.response?.message,this.message||(this.isAbort?this.message="The request was autocancelled. You can find more info in https://github.com/pocketbase/js-sdk#auto-cancellation.":this.originalError?.cause?.message?.includes("ECONNREFUSED ::1")?this.message="Failed to connect to the PocketBase server. Try changing the SDK URL from localhost to 127.0.0.1 (https://github.com/pocketbase/js-sdk/issues/21).":this.message="Something went wrong."),this.cause=this.originalError}get data(){return this.response}toJSON(){return{...this}}}const e=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function cookieSerialize(t,s,i){const n=Object.assign({},i||{}),r=n.encode||defaultEncode;if(!e.test(t))throw new TypeError("argument name is invalid");const o=r(s);if(o&&!e.test(o))throw new TypeError("argument val is invalid");let a=t+"="+o;if(null!=n.maxAge){const e=n.maxAge-0;if(isNaN(e)||!isFinite(e))throw new TypeError("option maxAge is invalid");a+="; Max-Age="+Math.floor(e)}if(n.domain){if(!e.test(n.domain))throw new TypeError("option domain is invalid");a+="; Domain="+n.domain}if(n.path){if(!e.test(n.path))throw new TypeError("option path is invalid");a+="; Path="+n.path}if(n.expires){if(!function isDate(e){return"[object Date]"===Object.prototype.toString.call(e)||e instanceof Date}(n.expires)||isNaN(n.expires.valueOf()))throw new TypeError("option expires is invalid");a+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(a+="; HttpOnly"),n.secure&&(a+="; Secure"),n.priority){switch("string"==typeof n.priority?n.priority.toLowerCase():n.priority){case"low":a+="; Priority=Low";break;case"medium":a+="; Priority=Medium";break;case"high":a+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(n.sameSite){switch("string"==typeof n.sameSite?n.sameSite.toLowerCase():n.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return a}function defaultDecode(e){return-1!==e.indexOf("%")?decodeURIComponent(e):e}function defaultEncode(e){return encodeURIComponent(e)}const t="undefined"!=typeof navigator&&"ReactNative"===navigator.product||"undefined"!=typeof global&&global.HermesInternal;let s;function getTokenPayload(e){if(e)try{const t=decodeURIComponent(s(e.split(".")[1]).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""));return JSON.parse(t)||{}}catch(e){}return{}}function isTokenExpired(e,t=0){let s=getTokenPayload(e);return!(Object.keys(s).length>0&&(!s.exp||s.exp-t>Date.now()/1e3))}s="function"!=typeof atob||t?e=>{let t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(var s,i,n=0,r=0,o="";i=t.charAt(r++);~i&&(s=n%4?64*s+i:i,n++%4)?o+=String.fromCharCode(255&s>>(-2*n&6)):0)i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(i);return o}:atob;const i="pb_auth";class BaseAuthStore{constructor(){this.baseToken="",this.baseModel=null,this._onChangeCallbacks=[]}get token(){return this.baseToken}get record(){return this.baseModel}get model(){return this.baseModel}get isValid(){return!isTokenExpired(this.token)}get isSuperuser(){let e=getTokenPayload(this.token);return"auth"==e.type&&("_superusers"==this.record?.collectionName||!this.record?.collectionName&&"pbc_3142635823"==e.collectionId)}get isAdmin(){return console.warn("Please replace pb.authStore.isAdmin with pb.authStore.isSuperuser OR simply check the value of pb.authStore.record?.collectionName"),this.isSuperuser}get isAuthRecord(){return console.warn("Please replace pb.authStore.isAuthRecord with !pb.authStore.isSuperuser OR simply check the value of pb.authStore.record?.collectionName"),"auth"==getTokenPayload(this.token).type&&!this.isSuperuser}save(e,t){this.baseToken=e||"",this.baseModel=t||null,this.triggerChange()}clear(){this.baseToken="",this.baseModel=null,this.triggerChange()}loadFromCookie(e,t=i){const s=function cookieParse(e,t){const s={};if("string"!=typeof e)return s;const i=Object.assign({},{}).decode||defaultDecode;let n=0;for(;n4096){r.record={id:r.record?.id,email:r.record?.email};const s=["collectionId","collectionName","verified"];for(const e in this.record)s.includes(e)&&(r.record[e]=this.record[e]);o=cookieSerialize(t,JSON.stringify(r),e)}return o}onChange(e,t=!1){return this._onChangeCallbacks.push(e),t&&e(this.token,this.record),()=>{for(let t=this._onChangeCallbacks.length-1;t>=0;t--)if(this._onChangeCallbacks[t]==e)return delete this._onChangeCallbacks[t],void this._onChangeCallbacks.splice(t,1)}}triggerChange(){for(const e of this._onChangeCallbacks)e&&e(this.token,this.record)}}class LocalAuthStore extends BaseAuthStore{constructor(e="pocketbase_auth"){super(),this.storageFallback={},this.storageKey=e,this._bindStorageEvent()}get token(){return(this._storageGet(this.storageKey)||{}).token||""}get record(){const e=this._storageGet(this.storageKey)||{};return e.record||e.model||null}get model(){return this.record}save(e,t){this._storageSet(this.storageKey,{token:e,record:t}),super.save(e,t)}clear(){this._storageRemove(this.storageKey),super.clear()}_storageGet(e){if("undefined"!=typeof window&&window?.localStorage){const t=window.localStorage.getItem(e)||"";try{return JSON.parse(t)}catch(e){return t}}return this.storageFallback[e]}_storageSet(e,t){if("undefined"!=typeof window&&window?.localStorage){let s=t;"string"!=typeof t&&(s=JSON.stringify(t)),window.localStorage.setItem(e,s)}else this.storageFallback[e]=t}_storageRemove(e){"undefined"!=typeof window&&window?.localStorage&&window.localStorage?.removeItem(e),delete this.storageFallback[e]}_bindStorageEvent(){"undefined"!=typeof window&&window?.localStorage&&window.addEventListener&&window.addEventListener("storage",(e=>{if(e.key!=this.storageKey)return;const t=this._storageGet(this.storageKey)||{};super.save(t.token||"",t.record||t.model||null)}))}}class BaseService{constructor(e){this.client=e}}class SettingsService extends BaseService{async getAll(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/settings",e)}async update(e,t){return t=Object.assign({method:"PATCH",body:e},t),this.client.send("/api/settings",t)}async testS3(e="storage",t){return t=Object.assign({method:"POST",body:{filesystem:e}},t),this.client.send("/api/settings/test/s3",t).then((()=>!0))}async testEmail(e,t,s,i){return i=Object.assign({method:"POST",body:{email:t,template:s,collection:e}},i),this.client.send("/api/settings/test/email",i).then((()=>!0))}async generateAppleClientSecret(e,t,s,i,n,r){return r=Object.assign({method:"POST",body:{clientId:e,teamId:t,keyId:s,privateKey:i,duration:n}},r),this.client.send("/api/settings/apple/generate-client-secret",r)}}const n=["requestKey","$cancelKey","$autoCancel","fetch","headers","body","query","params","cache","credentials","headers","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","signal","window"];function normalizeUnknownQueryParams(e){if(e){e.query=e.query||{};for(let t in e)n.includes(t)||(e.query[t]=e[t],delete e[t])}}function serializeQueryParams(e){const t=[];for(const s in e){const i=encodeURIComponent(s),n=Array.isArray(e[s])?e[s]:[e[s]];for(let e of n)e=prepareQueryParamValue(e),null!==e&&t.push(i+"="+e)}return t.join("&")}function prepareQueryParamValue(e){return null==e?null:e instanceof Date?encodeURIComponent(e.toISOString().replace("T"," ")):"object"==typeof e?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(e)}class RealtimeService extends BaseService{constructor(){super(...arguments),this.clientId="",this.eventSource=null,this.subscriptions={},this.lastSentSubscriptions=[],this.maxConnectTimeout=15e3,this.reconnectAttempts=0,this.maxReconnectAttempts=1/0,this.predefinedReconnectIntervals=[200,300,500,1e3,1200,1500,2e3],this.pendingConnects=[]}get isConnected(){return!!this.eventSource&&!!this.clientId&&!this.pendingConnects.length}async subscribe(e,t,s){if(!e)throw new Error("topic must be set.");let i=e;if(s){normalizeUnknownQueryParams(s=Object.assign({},s));const e="options="+encodeURIComponent(JSON.stringify({query:s.query,headers:s.headers}));i+=(i.includes("?")?"&":"?")+e}const listener=function(e){const s=e;let i;try{i=JSON.parse(s?.data)}catch{}t(i||{})};return this.subscriptions[i]||(this.subscriptions[i]=[]),this.subscriptions[i].push(listener),this.isConnected?1===this.subscriptions[i].length?await this.submitSubscriptions():this.eventSource?.addEventListener(i,listener):await this.connect(),async()=>this.unsubscribeByTopicAndListener(e,listener)}async unsubscribe(e){let t=!1;if(e){const s=this.getSubscriptionsByTopic(e);for(let e in s)if(this.hasSubscriptionListeners(e)){for(let t of this.subscriptions[e])this.eventSource?.removeEventListener(e,t);delete this.subscriptions[e],t||(t=!0)}}else this.subscriptions={};this.hasSubscriptionListeners()?t&&await this.submitSubscriptions():this.disconnect()}async unsubscribeByPrefix(e){let t=!1;for(let s in this.subscriptions)if((s+"?").startsWith(e)){t=!0;for(let e of this.subscriptions[s])this.eventSource?.removeEventListener(s,e);delete this.subscriptions[s]}t&&(this.hasSubscriptionListeners()?await this.submitSubscriptions():this.disconnect())}async unsubscribeByTopicAndListener(e,t){let s=!1;const i=this.getSubscriptionsByTopic(e);for(let e in i){if(!Array.isArray(this.subscriptions[e])||!this.subscriptions[e].length)continue;let i=!1;for(let s=this.subscriptions[e].length-1;s>=0;s--)this.subscriptions[e][s]===t&&(i=!0,delete this.subscriptions[e][s],this.subscriptions[e].splice(s,1),this.eventSource?.removeEventListener(e,t));i&&(this.subscriptions[e].length||delete this.subscriptions[e],s||this.hasSubscriptionListeners(e)||(s=!0))}this.hasSubscriptionListeners()?s&&await this.submitSubscriptions():this.disconnect()}hasSubscriptionListeners(e){if(this.subscriptions=this.subscriptions||{},e)return!!this.subscriptions[e]?.length;for(let e in this.subscriptions)if(this.subscriptions[e]?.length)return!0;return!1}async submitSubscriptions(){if(this.clientId)return this.addAllSubscriptionListeners(),this.lastSentSubscriptions=this.getNonEmptySubscriptionKeys(),this.client.send("/api/realtime",{method:"POST",body:{clientId:this.clientId,subscriptions:this.lastSentSubscriptions},requestKey:this.getSubscriptionsCancelKey()}).catch((e=>{if(!e?.isAbort)throw e}))}getSubscriptionsCancelKey(){return"realtime_"+this.clientId}getSubscriptionsByTopic(e){const t={};e=e.includes("?")?e:e+"?";for(let s in this.subscriptions)(s+"?").startsWith(e)&&(t[s]=this.subscriptions[s]);return t}getNonEmptySubscriptionKeys(){const e=[];for(let t in this.subscriptions)this.subscriptions[t].length&&e.push(t);return e}addAllSubscriptionListeners(){if(this.eventSource){this.removeAllSubscriptionListeners();for(let e in this.subscriptions)for(let t of this.subscriptions[e])this.eventSource.addEventListener(e,t)}}removeAllSubscriptionListeners(){if(this.eventSource)for(let e in this.subscriptions)for(let t of this.subscriptions[e])this.eventSource.removeEventListener(e,t)}async connect(){if(!(this.reconnectAttempts>0))return new Promise(((e,t)=>{this.pendingConnects.push({resolve:e,reject:t}),this.pendingConnects.length>1||this.initConnect()}))}initConnect(){this.disconnect(!0),clearTimeout(this.connectTimeoutId),this.connectTimeoutId=setTimeout((()=>{this.connectErrorHandler(new Error("EventSource connect took too long."))}),this.maxConnectTimeout),this.eventSource=new EventSource(this.client.buildURL("/api/realtime")),this.eventSource.onerror=e=>{this.connectErrorHandler(new Error("Failed to establish realtime connection."))},this.eventSource.addEventListener("PB_CONNECT",(e=>{const t=e;this.clientId=t?.lastEventId,this.submitSubscriptions().then((async()=>{let e=3;for(;this.hasUnsentSubscriptions()&&e>0;)e--,await this.submitSubscriptions()})).then((()=>{for(let e of this.pendingConnects)e.resolve();this.pendingConnects=[],this.reconnectAttempts=0,clearTimeout(this.reconnectTimeoutId),clearTimeout(this.connectTimeoutId);const t=this.getSubscriptionsByTopic("PB_CONNECT");for(let s in t)for(let i of t[s])i(e)})).catch((e=>{this.clientId="",this.connectErrorHandler(e)}))}))}hasUnsentSubscriptions(){const e=this.getNonEmptySubscriptionKeys();if(e.length!=this.lastSentSubscriptions.length)return!0;for(const t of e)if(!this.lastSentSubscriptions.includes(t))return!0;return!1}connectErrorHandler(e){if(clearTimeout(this.connectTimeoutId),clearTimeout(this.reconnectTimeoutId),!this.clientId&&!this.reconnectAttempts||this.reconnectAttempts>this.maxReconnectAttempts){for(let t of this.pendingConnects)t.reject(new ClientResponseError(e));return this.pendingConnects=[],void this.disconnect()}this.disconnect(!0);const t=this.predefinedReconnectIntervals[this.reconnectAttempts]||this.predefinedReconnectIntervals[this.predefinedReconnectIntervals.length-1];this.reconnectAttempts++,this.reconnectTimeoutId=setTimeout((()=>{this.initConnect()}),t)}disconnect(e=!1){if(this.clientId&&this.onDisconnect&&this.onDisconnect(Object.keys(this.subscriptions)),clearTimeout(this.connectTimeoutId),clearTimeout(this.reconnectTimeoutId),this.removeAllSubscriptionListeners(),this.client.cancelRequest(this.getSubscriptionsCancelKey()),this.eventSource?.close(),this.eventSource=null,this.clientId="",!e){this.reconnectAttempts=0;for(let e of this.pendingConnects)e.resolve();this.pendingConnects=[]}}}class CrudService extends BaseService{decode(e){return e}async getFullList(e,t){if("number"==typeof e)return this._getFullList(e,t);let s=500;return(t=Object.assign({},e,t)).batch&&(s=t.batch,delete t.batch),this._getFullList(s,t)}async getList(e=1,t=30,s){return(s=Object.assign({method:"GET"},s)).query=Object.assign({page:e,perPage:t},s.query),this.client.send(this.baseCrudPath,s).then((e=>(e.items=e.items?.map((e=>this.decode(e)))||[],e)))}async getFirstListItem(e,t){return(t=Object.assign({requestKey:"one_by_filter_"+this.baseCrudPath+"_"+e},t)).query=Object.assign({filter:e,skipTotal:1},t.query),this.getList(1,1,t).then((e=>{if(!e?.items?.length)throw new ClientResponseError({status:404,response:{code:404,message:"The requested resource wasn't found.",data:{}}});return e.items[0]}))}async getOne(e,t){if(!e)throw new ClientResponseError({url:this.client.buildURL(this.baseCrudPath+"/"),status:404,response:{code:404,message:"Missing required record id.",data:{}}});return t=Object.assign({method:"GET"},t),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e),t).then((e=>this.decode(e)))}async create(e,t){return t=Object.assign({method:"POST",body:e},t),this.client.send(this.baseCrudPath,t).then((e=>this.decode(e)))}async update(e,t,s){return s=Object.assign({method:"PATCH",body:t},s),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e),s).then((e=>this.decode(e)))}async delete(e,t){return t=Object.assign({method:"DELETE"},t),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e),t).then((()=>!0))}_getFullList(e=500,t){(t=t||{}).query=Object.assign({skipTotal:1},t.query);let s=[],request=async i=>this.getList(i,e||500,t).then((e=>{const t=e.items;return s=s.concat(t),t.length==e.perPage?request(i+1):s}));return request(1)}}function normalizeLegacyOptionsArgs(e,t,s,i){const n=void 0!==i;return n||void 0!==s?n?(console.warn(e),t.body=Object.assign({},t.body,s),t.query=Object.assign({},t.query,i),t):Object.assign(t,s):t}function resetAutoRefresh(e){e._resetAutoRefresh?.()}class RecordService extends CrudService{constructor(e,t){super(e),this.collectionIdOrName=t}get baseCrudPath(){return this.baseCollectionPath+"/records"}get baseCollectionPath(){return"/api/collections/"+encodeURIComponent(this.collectionIdOrName)}get isSuperusers(){return"_superusers"==this.collectionIdOrName||"_pbc_2773867675"==this.collectionIdOrName}async subscribe(e,t,s){if(!e)throw new Error("Missing topic.");if(!t)throw new Error("Missing subscription callback.");return this.client.realtime.subscribe(this.collectionIdOrName+"/"+e,t,s)}async unsubscribe(e){return e?this.client.realtime.unsubscribe(this.collectionIdOrName+"/"+e):this.client.realtime.unsubscribeByPrefix(this.collectionIdOrName)}async getFullList(e,t){if("number"==typeof e)return super.getFullList(e,t);const s=Object.assign({},e,t);return super.getFullList(s)}async getList(e=1,t=30,s){return super.getList(e,t,s)}async getFirstListItem(e,t){return super.getFirstListItem(e,t)}async getOne(e,t){return super.getOne(e,t)}async create(e,t){return super.create(e,t)}async update(e,t,s){return super.update(e,t,s).then((e=>{if(this.client.authStore.record?.id===e?.id&&(this.client.authStore.record?.collectionId===this.collectionIdOrName||this.client.authStore.record?.collectionName===this.collectionIdOrName)){let t=Object.assign({},this.client.authStore.record.expand),s=Object.assign({},this.client.authStore.record,e);t&&(s.expand=Object.assign(t,e.expand)),this.client.authStore.save(this.client.authStore.token,s)}return e}))}async delete(e,t){return super.delete(e,t).then((t=>(!t||this.client.authStore.record?.id!==e||this.client.authStore.record?.collectionId!==this.collectionIdOrName&&this.client.authStore.record?.collectionName!==this.collectionIdOrName||this.client.authStore.clear(),t)))}authResponse(e){const t=this.decode(e?.record||{});return this.client.authStore.save(e?.token,t),Object.assign({},e,{token:e?.token||"",record:t})}async listAuthMethods(e){return e=Object.assign({method:"GET",fields:"mfa,otp,password,oauth2"},e),this.client.send(this.baseCollectionPath+"/auth-methods",e)}async authWithPassword(e,t,s){let i;s=Object.assign({method:"POST",body:{identity:e,password:t}},s),this.isSuperusers&&(i=s.autoRefreshThreshold,delete s.autoRefreshThreshold,s.autoRefresh||resetAutoRefresh(this.client));let n=await this.client.send(this.baseCollectionPath+"/auth-with-password",s);return n=this.authResponse(n),i&&this.isSuperusers&&function registerAutoRefresh(e,t,s,i){resetAutoRefresh(e);const n=e.beforeSend,r=e.authStore.record,o=e.authStore.onChange(((t,s)=>{(!t||s?.id!=r?.id||(s?.collectionId||r?.collectionId)&&s?.collectionId!=r?.collectionId)&&resetAutoRefresh(e)}));e._resetAutoRefresh=function(){o(),e.beforeSend=n,delete e._resetAutoRefresh},e.beforeSend=async(r,o)=>{const a=e.authStore.token;if(o.query?.autoRefresh)return n?n(r,o):{url:r,sendOptions:o};let c=e.authStore.isValid;if(c&&isTokenExpired(e.authStore.token,t))try{await s()}catch(e){c=!1}c||await i();const l=o.headers||{};for(let t in l)if("authorization"==t.toLowerCase()&&a==l[t]&&e.authStore.token){l[t]=e.authStore.token;break}return o.headers=l,n?n(r,o):{url:r,sendOptions:o}}}(this.client,i,(()=>this.authRefresh({autoRefresh:!0})),(()=>this.authWithPassword(e,t,Object.assign({autoRefresh:!0},s)))),n}async authWithOAuth2Code(e,t,s,i,n,r,o){let a={method:"POST",body:{provider:e,code:t,codeVerifier:s,redirectURL:i,createData:n}};return a=normalizeLegacyOptionsArgs("This form of authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createData?, body?, query?) is deprecated. Consider replacing it with authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createData?, options?).",a,r,o),this.client.send(this.baseCollectionPath+"/auth-with-oauth2",a).then((e=>this.authResponse(e)))}authWithOAuth2(...e){if(e.length>1||"string"==typeof e?.[0])return console.warn("PocketBase: This form of authWithOAuth2() is deprecated and may get removed in the future. Please replace with authWithOAuth2Code() OR use the authWithOAuth2() realtime form as shown in https://pocketbase.io/docs/authentication/#oauth2-integration."),this.authWithOAuth2Code(e?.[0]||"",e?.[1]||"",e?.[2]||"",e?.[3]||"",e?.[4]||{},e?.[5]||{},e?.[6]||{});const t=e?.[0]||{};let s=null;t.urlCallback||(s=openBrowserPopup(void 0));const i=new RealtimeService(this.client);function cleanup(){s?.close(),i.unsubscribe()}const n={},r=t.requestKey;return r&&(n.requestKey=r),this.listAuthMethods(n).then((e=>{const n=e.oauth2.providers.find((e=>e.name===t.provider));if(!n)throw new ClientResponseError(new Error(`Missing or invalid provider "${t.provider}".`));const o=this.client.buildURL("/api/oauth2-redirect"),a=r?this.client.cancelControllers?.[r]:void 0;return a&&(a.signal.onabort=()=>{cleanup()}),new Promise((async(e,r)=>{try{await i.subscribe("@oauth2",(async s=>{const c=i.clientId;try{if(!s.state||c!==s.state)throw new Error("State parameters don't match.");if(s.error||!s.code)throw new Error("OAuth2 redirect error or missing code: "+s.error);const i=Object.assign({},t);delete i.provider,delete i.scopes,delete i.createData,delete i.urlCallback,a?.signal?.onabort&&(a.signal.onabort=null);const r=await this.authWithOAuth2Code(n.name,s.code,n.codeVerifier,o,t.createData,i);e(r)}catch(e){r(new ClientResponseError(e))}cleanup()}));const c={state:i.clientId};t.scopes?.length&&(c.scope=t.scopes.join(" "));const l=this._replaceQueryParams(n.authURL+o,c);let h=t.urlCallback||function(e){s?s.location.href=e:s=openBrowserPopup(e)};await h(l)}catch(e){cleanup(),r(new ClientResponseError(e))}}))})).catch((e=>{throw cleanup(),e}))}async authRefresh(e,t){let s={method:"POST"};return s=normalizeLegacyOptionsArgs("This form of authRefresh(body?, query?) is deprecated. Consider replacing it with authRefresh(options?).",s,e,t),this.client.send(this.baseCollectionPath+"/auth-refresh",s).then((e=>this.authResponse(e)))}async requestPasswordReset(e,t,s){let i={method:"POST",body:{email:e}};return i=normalizeLegacyOptionsArgs("This form of requestPasswordReset(email, body?, query?) is deprecated. Consider replacing it with requestPasswordReset(email, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/request-password-reset",i).then((()=>!0))}async confirmPasswordReset(e,t,s,i,n){let r={method:"POST",body:{token:e,password:t,passwordConfirm:s}};return r=normalizeLegacyOptionsArgs("This form of confirmPasswordReset(token, password, passwordConfirm, body?, query?) is deprecated. Consider replacing it with confirmPasswordReset(token, password, passwordConfirm, options?).",r,i,n),this.client.send(this.baseCollectionPath+"/confirm-password-reset",r).then((()=>!0))}async requestVerification(e,t,s){let i={method:"POST",body:{email:e}};return i=normalizeLegacyOptionsArgs("This form of requestVerification(email, body?, query?) is deprecated. Consider replacing it with requestVerification(email, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/request-verification",i).then((()=>!0))}async confirmVerification(e,t,s){let i={method:"POST",body:{token:e}};return i=normalizeLegacyOptionsArgs("This form of confirmVerification(token, body?, query?) is deprecated. Consider replacing it with confirmVerification(token, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/confirm-verification",i).then((()=>{const t=getTokenPayload(e),s=this.client.authStore.record;return s&&!s.verified&&s.id===t.id&&s.collectionId===t.collectionId&&(s.verified=!0,this.client.authStore.save(this.client.authStore.token,s)),!0}))}async requestEmailChange(e,t,s){let i={method:"POST",body:{newEmail:e}};return i=normalizeLegacyOptionsArgs("This form of requestEmailChange(newEmail, body?, query?) is deprecated. Consider replacing it with requestEmailChange(newEmail, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/request-email-change",i).then((()=>!0))}async confirmEmailChange(e,t,s,i){let n={method:"POST",body:{token:e,password:t}};return n=normalizeLegacyOptionsArgs("This form of confirmEmailChange(token, password, body?, query?) is deprecated. Consider replacing it with confirmEmailChange(token, password, options?).",n,s,i),this.client.send(this.baseCollectionPath+"/confirm-email-change",n).then((()=>{const t=getTokenPayload(e),s=this.client.authStore.record;return s&&s.id===t.id&&s.collectionId===t.collectionId&&this.client.authStore.clear(),!0}))}async listExternalAuths(e,t){return this.client.collection("_externalAuths").getFullList(Object.assign({},t,{filter:this.client.filter("recordRef = {:id}",{id:e})}))}async unlinkExternalAuth(e,t,s){const i=await this.client.collection("_externalAuths").getFirstListItem(this.client.filter("recordRef = {:recordId} && provider = {:provider}",{recordId:e,provider:t}));return this.client.collection("_externalAuths").delete(i.id,s).then((()=>!0))}async requestOTP(e,t){return t=Object.assign({method:"POST",body:{email:e}},t),this.client.send(this.baseCollectionPath+"/request-otp",t)}async authWithOTP(e,t,s){return s=Object.assign({method:"POST",body:{otpId:e,password:t}},s),this.client.send(this.baseCollectionPath+"/auth-with-otp",s).then((e=>this.authResponse(e)))}async impersonate(e,t,s){(s=Object.assign({method:"POST",body:{duration:t}},s)).headers=s.headers||{},s.headers.Authorization||(s.headers.Authorization=this.client.authStore.token);const i=new Client(this.client.baseURL,new BaseAuthStore,this.client.lang),n=await i.send(this.baseCollectionPath+"/impersonate/"+encodeURIComponent(e),s);return i.authStore.save(n?.token,this.decode(n?.record||{})),i}_replaceQueryParams(e,t={}){let s=e,i="";e.indexOf("?")>=0&&(s=e.substring(0,e.indexOf("?")),i=e.substring(e.indexOf("?")+1));const n={},r=i.split("&");for(const e of r){if(""==e)continue;const t=e.split("=");n[decodeURIComponent(t[0].replace(/\+/g," "))]=decodeURIComponent((t[1]||"").replace(/\+/g," "))}for(let e in t)t.hasOwnProperty(e)&&(null==t[e]?delete n[e]:n[e]=t[e]);i="";for(let e in n)n.hasOwnProperty(e)&&(""!=i&&(i+="&"),i+=encodeURIComponent(e.replace(/%20/g,"+"))+"="+encodeURIComponent(n[e].replace(/%20/g,"+")));return""!=i?s+"?"+i:s}}function openBrowserPopup(e){if("undefined"==typeof window||!window?.open)throw new ClientResponseError(new Error("Not in a browser context - please pass a custom urlCallback function."));let t=1024,s=768,i=window.innerWidth,n=window.innerHeight;t=t>i?i:t,s=s>n?n:s;let r=i/2-t/2,o=n/2-s/2;return window.open(e,"popup_window","width="+t+",height="+s+",top="+o+",left="+r+",resizable,menubar=no")}class CollectionService extends CrudService{get baseCrudPath(){return"/api/collections"}async import(e,t=!1,s){return s=Object.assign({method:"PUT",body:{collections:e,deleteMissing:t}},s),this.client.send(this.baseCrudPath+"/import",s).then((()=>!0))}async getScaffolds(e){return e=Object.assign({method:"GET"},e),this.client.send(this.baseCrudPath+"/meta/scaffolds",e)}async truncate(e,t){return t=Object.assign({method:"DELETE"},t),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e)+"/truncate",t).then((()=>!0))}}class LogService extends BaseService{async getList(e=1,t=30,s){return(s=Object.assign({method:"GET"},s)).query=Object.assign({page:e,perPage:t},s.query),this.client.send("/api/logs",s)}async getOne(e,t){if(!e)throw new ClientResponseError({url:this.client.buildURL("/api/logs/"),status:404,response:{code:404,message:"Missing required log id.",data:{}}});return t=Object.assign({method:"GET"},t),this.client.send("/api/logs/"+encodeURIComponent(e),t)}async getStats(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/logs/stats",e)}}class HealthService extends BaseService{async check(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/health",e)}}class FileService extends BaseService{getUrl(e,t,s={}){return console.warn("Please replace pb.files.getUrl() with pb.files.getURL()"),this.getURL(e,t,s)}getURL(e,t,s={}){if(!t||!e?.id||!e?.collectionId&&!e?.collectionName)return"";const i=[];i.push("api"),i.push("files"),i.push(encodeURIComponent(e.collectionId||e.collectionName)),i.push(encodeURIComponent(e.id)),i.push(encodeURIComponent(t));let n=this.client.buildURL(i.join("/"));if(Object.keys(s).length){!1===s.download&&delete s.download;const e=new URLSearchParams(s);n+=(n.includes("?")?"&":"?")+e}return n}async getToken(e){return e=Object.assign({method:"POST"},e),this.client.send("/api/files/token",e).then((e=>e?.token||""))}}class BackupService extends BaseService{async getFullList(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/backups",e)}async create(e,t){return t=Object.assign({method:"POST",body:{name:e}},t),this.client.send("/api/backups",t).then((()=>!0))}async upload(e,t){return t=Object.assign({method:"POST",body:e},t),this.client.send("/api/backups/upload",t).then((()=>!0))}async delete(e,t){return t=Object.assign({method:"DELETE"},t),this.client.send(`/api/backups/${encodeURIComponent(e)}`,t).then((()=>!0))}async restore(e,t){return t=Object.assign({method:"POST"},t),this.client.send(`/api/backups/${encodeURIComponent(e)}/restore`,t).then((()=>!0))}getDownloadUrl(e,t){return console.warn("Please replace pb.backups.getDownloadUrl() with pb.backups.getDownloadURL()"),this.getDownloadURL(e,t)}getDownloadURL(e,t){return this.client.buildURL(`/api/backups/${encodeURIComponent(t)}?token=${encodeURIComponent(e)}`)}}class CronService extends BaseService{async getFullList(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/crons",e)}async run(e,t){return t=Object.assign({method:"POST"},t),this.client.send(`/api/crons/${encodeURIComponent(e)}`,t).then((()=>!0))}}function isFile(e){return"undefined"!=typeof Blob&&e instanceof Blob||"undefined"!=typeof File&&e instanceof File||null!==e&&"object"==typeof e&&e.uri&&("undefined"!=typeof navigator&&"ReactNative"===navigator.product||"undefined"!=typeof global&&global.HermesInternal)}function isFormData(e){return e&&("FormData"===e.constructor?.name||"undefined"!=typeof FormData&&e instanceof FormData)}function hasFileField(e){for(const t in e){const s=Array.isArray(e[t])?e[t]:[e[t]];for(const e of s)if(isFile(e))return!0}return!1}const r=/^[\-\.\d]+$/;function inferFormDataValue(e){if("string"!=typeof e)return e;if("true"==e)return!0;if("false"==e)return!1;if(("-"===e[0]||e[0]>="0"&&e[0]<="9")&&r.test(e)){let t=+e;if(""+t===e)return t}return e}class BatchService extends BaseService{constructor(){super(...arguments),this.requests=[],this.subs={}}collection(e){return this.subs[e]||(this.subs[e]=new SubBatchService(this.requests,e)),this.subs[e]}async send(e){const t=new FormData,s=[];for(let e=0;e{if("@jsonPayload"===s&&"string"==typeof e)try{let s=JSON.parse(e);Object.assign(t,s)}catch(e){console.warn("@jsonPayload error:",e)}else void 0!==t[s]?(Array.isArray(t[s])||(t[s]=[t[s]]),t[s].push(inferFormDataValue(e))):t[s]=inferFormDataValue(e)})),t}(s));for(const t in s){const i=s[t];if(isFile(i))e.files[t]=e.files[t]||[],e.files[t].push(i);else if(Array.isArray(i)){const s=[],n=[];for(const e of i)isFile(e)?s.push(e):n.push(e);if(s.length>0&&s.length==i.length){e.files[t]=e.files[t]||[];for(let i of s)e.files[t].push(i)}else if(e.json[t]=n,s.length>0){let i=t;t.startsWith("+")||t.endsWith("+")||(i+="+"),e.files[i]=e.files[i]||[];for(let t of s)e.files[i].push(t)}}else e.json[t]=i}}}class Client{get baseUrl(){return this.baseURL}set baseUrl(e){this.baseURL=e}constructor(e="/",t,s="en-US"){this.cancelControllers={},this.recordServices={},this.enableAutoCancellation=!0,this.baseURL=e,this.lang=s,t?this.authStore=t:"undefined"!=typeof window&&window.Deno?this.authStore=new BaseAuthStore:this.authStore=new LocalAuthStore,this.collections=new CollectionService(this),this.files=new FileService(this),this.logs=new LogService(this),this.settings=new SettingsService(this),this.realtime=new RealtimeService(this),this.health=new HealthService(this),this.backups=new BackupService(this),this.crons=new CronService(this)}get admins(){return this.collection("_superusers")}createBatch(){return new BatchService(this)}collection(e){return this.recordServices[e]||(this.recordServices[e]=new RecordService(this,e)),this.recordServices[e]}autoCancellation(e){return this.enableAutoCancellation=!!e,this}cancelRequest(e){return this.cancelControllers[e]&&(this.cancelControllers[e].abort(),delete this.cancelControllers[e]),this}cancelAllRequests(){for(let e in this.cancelControllers)this.cancelControllers[e].abort();return this.cancelControllers={},this}filter(e,t){if(!t)return e;for(let s in t){let i=t[s];switch(typeof i){case"boolean":case"number":i=""+i;break;case"string":i="'"+i.replace(/'/g,"\\'")+"'";break;default:i=null===i?"null":i instanceof Date?"'"+i.toISOString().replace("T"," ")+"'":"'"+JSON.stringify(i).replace(/'/g,"\\'")+"'"}e=e.replaceAll("{:"+s+"}",i)}return e}getFileUrl(e,t,s={}){return console.warn("Please replace pb.getFileUrl() with pb.files.getURL()"),this.files.getURL(e,t,s)}buildUrl(e){return console.warn("Please replace pb.buildUrl() with pb.buildURL()"),this.buildURL(e)}buildURL(e){let t=this.baseURL;return"undefined"==typeof window||!window.location||t.startsWith("https://")||t.startsWith("http://")||(t=window.location.origin?.endsWith("/")?window.location.origin.substring(0,window.location.origin.length-1):window.location.origin||"",this.baseURL.startsWith("/")||(t+=window.location.pathname||"/",t+=t.endsWith("/")?"":"/"),t+=this.baseURL),e&&(t+=t.endsWith("/")?"":"/",t+=e.startsWith("/")?e.substring(1):e),t}async send(e,t){t=this.initSendOptions(e,t);let s=this.buildURL(e);if(this.beforeSend){const e=Object.assign({},await this.beforeSend(s,t));void 0!==e.url||void 0!==e.options?(s=e.url||s,t=e.options||t):Object.keys(e).length&&(t=e,console?.warn&&console.warn("Deprecated format of beforeSend return: please use `return { url, options }`, instead of `return options`."))}if(void 0!==t.query){const e=serializeQueryParams(t.query);e&&(s+=(s.includes("?")?"&":"?")+e),delete t.query}"application/json"==this.getHeader(t.headers,"Content-Type")&&t.body&&"string"!=typeof t.body&&(t.body=JSON.stringify(t.body));return(t.fetch||fetch)(s,t).then((async e=>{let s={};try{s=await e.json()}catch(e){}if(this.afterSend&&(s=await this.afterSend(e,s,t)),e.status>=400)throw new ClientResponseError({url:e.url,status:e.status,data:s});return s})).catch((e=>{throw new ClientResponseError(e)}))}initSendOptions(e,t){if((t=Object.assign({method:"GET"},t)).body=function convertToFormDataIfNeeded(e){if("undefined"==typeof FormData||void 0===e||"object"!=typeof e||null===e||isFormData(e)||!hasFileField(e))return e;const t=new FormData;for(const s in e){const i=e[s];if(void 0!==i)if("object"!=typeof i||hasFileField({data:i})){const e=Array.isArray(i)?i:[i];for(let i of e)t.append(s,i)}else{let e={};e[s]=i,t.append("@jsonPayload",JSON.stringify(e))}}return t}(t.body),normalizeUnknownQueryParams(t),t.query=Object.assign({},t.params,t.query),void 0===t.requestKey&&(!1===t.$autoCancel||!1===t.query.$autoCancel?t.requestKey=null:(t.$cancelKey||t.query.$cancelKey)&&(t.requestKey=t.$cancelKey||t.query.$cancelKey)),delete t.$autoCancel,delete t.query.$autoCancel,delete t.$cancelKey,delete t.query.$cancelKey,null!==this.getHeader(t.headers,"Content-Type")||isFormData(t.body)||(t.headers=Object.assign({},t.headers,{"Content-Type":"application/json"})),null===this.getHeader(t.headers,"Accept-Language")&&(t.headers=Object.assign({},t.headers,{"Accept-Language":this.lang})),this.authStore.token&&null===this.getHeader(t.headers,"Authorization")&&(t.headers=Object.assign({},t.headers,{Authorization:this.authStore.token})),this.enableAutoCancellation&&null!==t.requestKey){const s=t.requestKey||(t.method||"GET")+e;delete t.requestKey,this.cancelRequest(s);const i=new AbortController;this.cancelControllers[s]=i,t.signal=i.signal}return t}getHeader(e,t){e=e||{},t=t.toLowerCase();for(let s in e)if(s.toLowerCase()==t)return e[s];return null}}return Client}));
+//# sourceMappingURL=pocketbase.umd.js.map
diff --git a/public/lib/pocketbase.umd.js.map b/public/lib/pocketbase.umd.js.map
new file mode 100644
index 0000000..7cebec4
--- /dev/null
+++ b/public/lib/pocketbase.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pocketbase.umd.js","sources":["../src/ClientResponseError.ts","../src/tools/cookie.ts","../src/tools/jwt.ts","../src/stores/BaseAuthStore.ts","../src/stores/LocalAuthStore.ts","../src/services/BaseService.ts","../src/services/SettingsService.ts","../src/tools/options.ts","../src/services/RealtimeService.ts","../src/services/CrudService.ts","../src/tools/legacy.ts","../src/tools/refresh.ts","../src/services/RecordService.ts","../src/services/CollectionService.ts","../src/services/LogService.ts","../src/services/HealthService.ts","../src/services/FileService.ts","../src/services/BackupService.ts","../src/services/CronService.ts","../src/tools/formdata.ts","../src/services/BatchService.ts","../src/Client.ts"],"sourcesContent":["/**\n * ClientResponseError is a custom Error class that is intended to wrap\n * and normalize any error thrown by `Client.send()`.\n */\nexport class ClientResponseError extends Error {\n url: string = \"\";\n status: number = 0;\n response: { [key: string]: any } = {};\n isAbort: boolean = false;\n originalError: any = null;\n\n constructor(errData?: any) {\n super(\"ClientResponseError\");\n\n // Set the prototype explicitly.\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, ClientResponseError.prototype);\n\n if (errData !== null && typeof errData === \"object\") {\n this.url = typeof errData.url === \"string\" ? errData.url : \"\";\n this.status = typeof errData.status === \"number\" ? errData.status : 0;\n this.isAbort = !!errData.isAbort;\n this.originalError = errData.originalError;\n\n if (errData.response !== null && typeof errData.response === \"object\") {\n this.response = errData.response;\n } else if (errData.data !== null && typeof errData.data === \"object\") {\n this.response = errData.data;\n } else {\n this.response = {};\n }\n }\n\n if (!this.originalError && !(errData instanceof ClientResponseError)) {\n this.originalError = errData;\n }\n\n if (typeof DOMException !== \"undefined\" && errData instanceof DOMException) {\n this.isAbort = true;\n }\n\n this.name = \"ClientResponseError \" + this.status;\n this.message = this.response?.message;\n if (!this.message) {\n if (this.isAbort) {\n this.message =\n \"The request was autocancelled. You can find more info in https://github.com/pocketbase/js-sdk#auto-cancellation.\";\n } else if (this.originalError?.cause?.message?.includes(\"ECONNREFUSED ::1\")) {\n this.message =\n \"Failed to connect to the PocketBase server. Try changing the SDK URL from localhost to 127.0.0.1 (https://github.com/pocketbase/js-sdk/issues/21).\";\n } else {\n this.message = \"Something went wrong.\";\n }\n }\n\n // set this.cause so that JS debugging tools can automatically connect\n // the dots between the original error and the wrapped one\n this.cause = this.originalError;\n }\n\n /**\n * Alias for `this.response` for backward compatibility.\n */\n get data() {\n return this.response;\n }\n\n /**\n * Make a POJO's copy of the current error class instance.\n * @see https://github.com/vuex-orm/vuex-orm/issues/255\n */\n toJSON() {\n return { ...this };\n }\n}\n","/**\n * -------------------------------------------------------------------\n * Simple cookie parse and serialize utilities mostly based on the\n * node module https://github.com/jshttp/cookie.\n * -------------------------------------------------------------------\n */\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nexport interface ParseOptions {\n decode?: (val: string) => string;\n}\n\n/**\n * Parses the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nexport function cookieParse(str: string, options?: ParseOptions): { [key: string]: any } {\n const result: { [key: string]: any } = {};\n\n if (typeof str !== \"string\") {\n return result;\n }\n\n const opt = Object.assign({}, options || {});\n const decode = opt.decode || defaultDecode;\n\n let index = 0;\n while (index < str.length) {\n const eqIdx = str.indexOf(\"=\", index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(\";\", index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === result[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n result[key] = decode(val);\n } catch (_) {\n result[key] = val; // no decoding\n }\n }\n\n index = endIdx + 1;\n }\n\n return result;\n}\n\nexport interface SerializeOptions {\n encode?: (val: string | number | boolean) => string;\n maxAge?: number;\n domain?: string;\n path?: string;\n expires?: Date;\n httpOnly?: boolean;\n secure?: boolean;\n priority?: string;\n sameSite?: boolean | string;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * ```js\n * cookieSerialize('foo', 'bar', { httpOnly: true }) // \"foo=bar; httpOnly\"\n * ```\n */\nexport function cookieSerialize(\n name: string,\n val: string,\n options?: SerializeOptions,\n): string {\n const opt = Object.assign({}, options || {});\n const encode = opt.encode || defaultEncode;\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError(\"argument name is invalid\");\n }\n\n const value = encode(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError(\"argument val is invalid\");\n }\n\n let result = name + \"=\" + value;\n\n if (opt.maxAge != null) {\n const maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError(\"option maxAge is invalid\");\n }\n\n result += \"; Max-Age=\" + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError(\"option domain is invalid\");\n }\n\n result += \"; Domain=\" + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError(\"option path is invalid\");\n }\n\n result += \"; Path=\" + opt.path;\n }\n\n if (opt.expires) {\n if (!isDate(opt.expires) || isNaN(opt.expires.valueOf())) {\n throw new TypeError(\"option expires is invalid\");\n }\n\n result += \"; Expires=\" + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n result += \"; HttpOnly\";\n }\n\n if (opt.secure) {\n result += \"; Secure\";\n }\n\n if (opt.priority) {\n const priority =\n typeof opt.priority === \"string\" ? opt.priority.toLowerCase() : opt.priority;\n\n switch (priority) {\n case \"low\":\n result += \"; Priority=Low\";\n break;\n case \"medium\":\n result += \"; Priority=Medium\";\n break;\n case \"high\":\n result += \"; Priority=High\";\n break;\n default:\n throw new TypeError(\"option priority is invalid\");\n }\n }\n\n if (opt.sameSite) {\n const sameSite =\n typeof opt.sameSite === \"string\" ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n result += \"; SameSite=Strict\";\n break;\n case \"lax\":\n result += \"; SameSite=Lax\";\n break;\n case \"strict\":\n result += \"; SameSite=Strict\";\n break;\n case \"none\":\n result += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(\"option sameSite is invalid\");\n }\n }\n\n return result;\n}\n\n/**\n * Default URL-decode string value function.\n * Optimized to skip native call when no `%`.\n */\nfunction defaultDecode(val: string): string {\n return val.indexOf(\"%\") !== -1 ? decodeURIComponent(val) : val;\n}\n\n/**\n * Default URL-encode value function.\n */\nfunction defaultEncode(val: string | number | boolean): string {\n return encodeURIComponent(val);\n}\n\n/**\n * Determines if value is a Date.\n */\nfunction isDate(val: any): boolean {\n return Object.prototype.toString.call(val) === \"[object Date]\" || val instanceof Date;\n}\n","// @todo remove after https://github.com/reactwg/react-native-releases/issues/287\nconst isReactNative =\n (typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") ||\n (typeof global !== \"undefined\" && (global as any).HermesInternal);\n\nlet atobPolyfill: Function;\nif (typeof atob === \"function\" && !isReactNative) {\n atobPolyfill = atob;\n} else {\n /**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n atobPolyfill = (input: any) => {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new Error(\n \"'atob' failed: The string to be decoded is not correctly encoded.\",\n );\n }\n\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? (bs as any) * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n\n return output;\n };\n}\n\n/**\n * Returns JWT token's payload data.\n */\nexport function getTokenPayload(token: string): { [key: string]: any } {\n if (token) {\n try {\n const encodedPayload = decodeURIComponent(\n atobPolyfill(token.split(\".\")[1])\n .split(\"\")\n .map(function (c: string) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\"),\n );\n\n return JSON.parse(encodedPayload) || {};\n } catch (e) {}\n }\n\n return {};\n}\n\n/**\n * Checks whether a JWT token is expired or not.\n * Tokens without `exp` payload key are considered valid.\n * Tokens with empty payload (eg. invalid token strings) are considered expired.\n *\n * @param token The token to check.\n * @param [expirationThreshold] Time in seconds that will be subtracted from the token `exp` property.\n */\nexport function isTokenExpired(token: string, expirationThreshold = 0): boolean {\n let payload = getTokenPayload(token);\n\n if (\n Object.keys(payload).length > 0 &&\n (!payload.exp || payload.exp - expirationThreshold > Date.now() / 1000)\n ) {\n return false;\n }\n\n return true;\n}\n","import { cookieParse, cookieSerialize, SerializeOptions } from \"@/tools/cookie\";\nimport { isTokenExpired, getTokenPayload } from \"@/tools/jwt\";\nimport { RecordModel } from \"@/tools/dtos\";\n\nexport type AuthRecord = RecordModel | null;\n\nexport type AuthModel = AuthRecord; // for backward compatibility\n\nexport type OnStoreChangeFunc = (token: string, record: AuthRecord) => void;\n\nconst defaultCookieKey = \"pb_auth\";\n\n/**\n * Base AuthStore class that stores the auth state in runtime memory (aka. only for the duration of the store instane).\n *\n * Usually you wouldn't use it directly and instead use the builtin LocalAuthStore, AsyncAuthStore\n * or extend it with your own custom implementation.\n */\nexport class BaseAuthStore {\n protected baseToken: string = \"\";\n protected baseModel: AuthRecord = null;\n\n private _onChangeCallbacks: Array = [];\n\n /**\n * Retrieves the stored token (if any).\n */\n get token(): string {\n return this.baseToken;\n }\n\n /**\n * Retrieves the stored model data (if any).\n */\n get record(): AuthRecord {\n return this.baseModel;\n }\n\n /**\n * @deprecated use `record` instead.\n */\n get model(): AuthRecord {\n return this.baseModel;\n }\n\n /**\n * Loosely checks if the store has valid token (aka. existing and unexpired exp claim).\n */\n get isValid(): boolean {\n return !isTokenExpired(this.token);\n }\n\n /**\n * Loosely checks whether the currently loaded store state is for superuser.\n *\n * Alternatively you can also compare directly `pb.authStore.record?.collectionName`.\n */\n get isSuperuser(): boolean {\n let payload = getTokenPayload(this.token);\n\n return (\n payload.type == \"auth\" &&\n (this.record?.collectionName == \"_superusers\" ||\n // fallback in case the record field is not populated and assuming\n // that the collection crc32 checksum id wasn't manually changed\n (!this.record?.collectionName &&\n payload.collectionId == \"pbc_3142635823\"))\n );\n }\n\n /**\n * @deprecated use `isSuperuser` instead or simply check the record.collectionName property.\n */\n get isAdmin(): boolean {\n console.warn(\n \"Please replace pb.authStore.isAdmin with pb.authStore.isSuperuser OR simply check the value of pb.authStore.record?.collectionName\",\n );\n return this.isSuperuser;\n }\n\n /**\n * @deprecated use `!isSuperuser` instead or simply check the record.collectionName property.\n */\n get isAuthRecord(): boolean {\n console.warn(\n \"Please replace pb.authStore.isAuthRecord with !pb.authStore.isSuperuser OR simply check the value of pb.authStore.record?.collectionName\",\n );\n return getTokenPayload(this.token).type == \"auth\" && !this.isSuperuser;\n }\n\n /**\n * Saves the provided new token and model data in the auth store.\n */\n save(token: string, record?: AuthRecord): void {\n this.baseToken = token || \"\";\n this.baseModel = record || null;\n\n this.triggerChange();\n }\n\n /**\n * Removes the stored token and model data form the auth store.\n */\n clear(): void {\n this.baseToken = \"\";\n this.baseModel = null;\n this.triggerChange();\n }\n\n /**\n * Parses the provided cookie string and updates the store state\n * with the cookie's token and model data.\n *\n * NB! This function doesn't validate the token or its data.\n * Usually this isn't a concern if you are interacting only with the\n * PocketBase API because it has the proper server-side security checks in place,\n * but if you are using the store `isValid` state for permission controls\n * in a node server (eg. SSR), then it is recommended to call `authRefresh()`\n * after loading the cookie to ensure an up-to-date token and model state.\n * For example:\n *\n * ```js\n * pb.authStore.loadFromCookie(\"cookie string...\");\n *\n * try {\n * // get an up-to-date auth store state by veryfing and refreshing the loaded auth model (if any)\n * pb.authStore.isValid && await pb.collection('users').authRefresh();\n * } catch (_) {\n * // clear the auth store on failed refresh\n * pb.authStore.clear();\n * }\n * ```\n */\n loadFromCookie(cookie: string, key = defaultCookieKey): void {\n const rawData = cookieParse(cookie || \"\")[key] || \"\";\n\n let data: { [key: string]: any } = {};\n try {\n data = JSON.parse(rawData);\n // normalize\n if (typeof data === null || typeof data !== \"object\" || Array.isArray(data)) {\n data = {};\n }\n } catch (_) {}\n\n this.save(data.token || \"\", data.record || data.model || null);\n }\n\n /**\n * Exports the current store state as cookie string.\n *\n * By default the following optional attributes are added:\n * - Secure\n * - HttpOnly\n * - SameSite=Strict\n * - Path=/\n * - Expires={the token expiration date}\n *\n * NB! If the generated cookie exceeds 4096 bytes, this method will\n * strip the model data to the bare minimum to try to fit within the\n * recommended size in https://www.rfc-editor.org/rfc/rfc6265#section-6.1.\n */\n exportToCookie(options?: SerializeOptions, key = defaultCookieKey): string {\n const defaultOptions: SerializeOptions = {\n secure: true,\n sameSite: true,\n httpOnly: true,\n path: \"/\",\n };\n\n // extract the token expiration date\n const payload = getTokenPayload(this.token);\n if (payload?.exp) {\n defaultOptions.expires = new Date(payload.exp * 1000);\n } else {\n defaultOptions.expires = new Date(\"1970-01-01\");\n }\n\n // merge with the user defined options\n options = Object.assign({}, defaultOptions, options);\n\n const rawData = {\n token: this.token,\n record: this.record ? JSON.parse(JSON.stringify(this.record)) : null,\n };\n\n let result = cookieSerialize(key, JSON.stringify(rawData), options);\n\n const resultLength =\n typeof Blob !== \"undefined\" ? new Blob([result]).size : result.length;\n\n // strip down the model data to the bare minimum\n if (rawData.record && resultLength > 4096) {\n rawData.record = { id: rawData.record?.id, email: rawData.record?.email };\n const extraProps = [\"collectionId\", \"collectionName\", \"verified\"];\n for (const prop in this.record) {\n if (extraProps.includes(prop)) {\n rawData.record[prop] = this.record[prop];\n }\n }\n result = cookieSerialize(key, JSON.stringify(rawData), options);\n }\n\n return result;\n }\n\n /**\n * Register a callback function that will be called on store change.\n *\n * You can set the `fireImmediately` argument to true in order to invoke\n * the provided callback right after registration.\n *\n * Returns a removal function that you could call to \"unsubscribe\" from the changes.\n */\n onChange(callback: OnStoreChangeFunc, fireImmediately = false): () => void {\n this._onChangeCallbacks.push(callback);\n\n if (fireImmediately) {\n callback(this.token, this.record);\n }\n\n return () => {\n for (let i = this._onChangeCallbacks.length - 1; i >= 0; i--) {\n if (this._onChangeCallbacks[i] == callback) {\n delete this._onChangeCallbacks[i]; // removes the function reference\n this._onChangeCallbacks.splice(i, 1); // reindex the array\n return;\n }\n }\n };\n }\n\n protected triggerChange(): void {\n for (const callback of this._onChangeCallbacks) {\n callback && callback(this.token, this.record);\n }\n }\n}\n","import { BaseAuthStore, AuthRecord } from \"@/stores/BaseAuthStore\";\n\n/**\n * The default token store for browsers with auto fallback\n * to runtime/memory if local storage is undefined (e.g. in node env).\n */\nexport class LocalAuthStore extends BaseAuthStore {\n private storageFallback: { [key: string]: any } = {};\n private storageKey: string;\n\n constructor(storageKey = \"pocketbase_auth\") {\n super();\n\n this.storageKey = storageKey;\n\n this._bindStorageEvent();\n }\n\n /**\n * @inheritdoc\n */\n get token(): string {\n const data = this._storageGet(this.storageKey) || {};\n\n return data.token || \"\";\n }\n\n /**\n * @inheritdoc\n */\n get record(): AuthRecord {\n const data = this._storageGet(this.storageKey) || {};\n\n return data.record || data.model || null;\n }\n\n /**\n * @deprecated use `record` instead.\n */\n get model(): AuthRecord {\n return this.record;\n }\n\n /**\n * @inheritdoc\n */\n save(token: string, record?: AuthRecord) {\n this._storageSet(this.storageKey, {\n token: token,\n record: record,\n });\n\n super.save(token, record);\n }\n\n /**\n * @inheritdoc\n */\n clear() {\n this._storageRemove(this.storageKey);\n\n super.clear();\n }\n\n // ---------------------------------------------------------------\n // Internal helpers:\n // ---------------------------------------------------------------\n\n /**\n * Retrieves `key` from the browser's local storage\n * (or runtime/memory if local storage is undefined).\n */\n private _storageGet(key: string): any {\n if (typeof window !== \"undefined\" && window?.localStorage) {\n const rawValue = window.localStorage.getItem(key) || \"\";\n try {\n return JSON.parse(rawValue);\n } catch (e) {\n // not a json\n return rawValue;\n }\n }\n\n // fallback\n return this.storageFallback[key];\n }\n\n /**\n * Stores a new data in the browser's local storage\n * (or runtime/memory if local storage is undefined).\n */\n private _storageSet(key: string, value: any) {\n if (typeof window !== \"undefined\" && window?.localStorage) {\n // store in local storage\n let normalizedVal = value;\n if (typeof value !== \"string\") {\n normalizedVal = JSON.stringify(value);\n }\n window.localStorage.setItem(key, normalizedVal);\n } else {\n // store in fallback\n this.storageFallback[key] = value;\n }\n }\n\n /**\n * Removes `key` from the browser's local storage and the runtime/memory.\n */\n private _storageRemove(key: string) {\n // delete from local storage\n if (typeof window !== \"undefined\" && window?.localStorage) {\n window.localStorage?.removeItem(key);\n }\n\n // delete from fallback\n delete this.storageFallback[key];\n }\n\n /**\n * Updates the current store state on localStorage change.\n */\n private _bindStorageEvent() {\n if (\n typeof window === \"undefined\" ||\n !window?.localStorage ||\n !window.addEventListener\n ) {\n return;\n }\n\n window.addEventListener(\"storage\", (e) => {\n if (e.key != this.storageKey) {\n return;\n }\n\n const data = this._storageGet(this.storageKey) || {};\n\n super.save(data.token || \"\", data.record || data.model || null);\n });\n }\n}\n","import Client from \"@/Client\";\n\n/**\n * BaseService class that should be inherited from all API services.\n */\nexport abstract class BaseService {\n readonly client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { CommonOptions } from \"@/tools/options\";\n\ninterface appleClientSecret {\n secret: string;\n}\n\nexport class SettingsService extends BaseService {\n /**\n * Fetch all available app settings.\n *\n * @throws {ClientResponseError}\n */\n async getAll(options?: CommonOptions): Promise<{ [key: string]: any }> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/settings\", options);\n }\n\n /**\n * Bulk updates app settings.\n *\n * @throws {ClientResponseError}\n */\n async update(\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise<{ [key: string]: any }> {\n options = Object.assign(\n {\n method: \"PATCH\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client.send(\"/api/settings\", options);\n }\n\n /**\n * Performs a S3 filesystem connection test.\n *\n * The currently supported `filesystem` are \"storage\" and \"backups\".\n *\n * @throws {ClientResponseError}\n */\n async testS3(\n filesystem: string = \"storage\",\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n filesystem: filesystem,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/settings/test/s3\", options).then(() => true);\n }\n\n /**\n * Sends a test email.\n *\n * The possible `emailTemplate` values are:\n * - verification\n * - password-reset\n * - email-change\n *\n * @throws {ClientResponseError}\n */\n async testEmail(\n collectionIdOrName: string,\n toEmail: string,\n emailTemplate: string,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n email: toEmail,\n template: emailTemplate,\n collection: collectionIdOrName,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/settings/test/email\", options).then(() => true);\n }\n\n /**\n * Generates a new Apple OAuth2 client secret.\n *\n * @throws {ClientResponseError}\n */\n async generateAppleClientSecret(\n clientId: string,\n teamId: string,\n keyId: string,\n privateKey: string,\n duration: number,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n clientId,\n teamId,\n keyId,\n privateKey,\n duration,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/settings/apple/generate-client-secret\", options);\n }\n}\n","export interface SendOptions extends RequestInit {\n // for backward compatibility and to minimize the verbosity,\n // any top-level field that doesn't exist in RequestInit or the\n // fields below will be treated as query parameter.\n [key: string]: any;\n\n /**\n * Optional custom fetch function to use for sending the request.\n */\n fetch?: (url: RequestInfo | URL, config?: RequestInit) => Promise;\n\n /**\n * Custom headers to send with the requests.\n */\n headers?: { [key: string]: string };\n\n /**\n * The body of the request (serialized automatically for json requests).\n */\n body?: any;\n\n /**\n * Query parameters that will be appended to the request url.\n */\n query?: { [key: string]: any };\n\n /**\n * @deprecated use `query` instead\n *\n * for backward-compatibility `params` values are merged with `query`,\n * but this option may get removed in the final v1 release\n */\n params?: { [key: string]: any };\n\n /**\n * The request identifier that can be used to cancel pending requests.\n */\n requestKey?: string | null;\n\n /**\n * @deprecated use `requestKey:string` instead\n */\n $cancelKey?: string;\n\n /**\n * @deprecated use `requestKey:null` instead\n */\n $autoCancel?: boolean;\n}\n\nexport interface CommonOptions extends SendOptions {\n fields?: string;\n}\n\nexport interface ListOptions extends CommonOptions {\n page?: number;\n perPage?: number;\n sort?: string;\n filter?: string;\n skipTotal?: boolean;\n}\n\nexport interface FullListOptions extends ListOptions {\n batch?: number;\n}\n\nexport interface RecordOptions extends CommonOptions {\n expand?: string;\n}\n\nexport interface RecordListOptions extends ListOptions, RecordOptions {}\n\nexport interface RecordFullListOptions extends FullListOptions, RecordOptions {}\n\nexport interface RecordSubscribeOptions extends SendOptions {\n fields?: string;\n filter?: string;\n expand?: string;\n}\n\nexport interface LogStatsOptions extends CommonOptions {\n filter?: string;\n}\n\nexport interface FileOptions extends CommonOptions {\n thumb?: string;\n download?: boolean;\n}\n\nexport interface AuthOptions extends CommonOptions {\n /**\n * If autoRefreshThreshold is set it will take care to auto refresh\n * when necessary the auth data before each request to ensure that\n * the auth state is always valid.\n *\n * The value must be in seconds, aka. the amount of seconds\n * that will be subtracted from the current token `exp` claim in order\n * to determine whether it is going to expire within the specified time threshold.\n *\n * For example, if you want to auto refresh the token if it is\n * going to expire in the next 30mins (or already has expired),\n * it can be set to `1800`\n */\n autoRefreshThreshold?: number;\n}\n\n// -------------------------------------------------------------------\n\n// list of known SendOptions keys (everything else is treated as query param)\nconst knownSendOptionsKeys = [\n \"requestKey\",\n \"$cancelKey\",\n \"$autoCancel\",\n \"fetch\",\n \"headers\",\n \"body\",\n \"query\",\n \"params\",\n // ---,\n \"cache\",\n \"credentials\",\n \"headers\",\n \"integrity\",\n \"keepalive\",\n \"method\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"window\",\n];\n\n// modifies in place the provided options by moving unknown send options as query parameters.\nexport function normalizeUnknownQueryParams(options?: SendOptions): void {\n if (!options) {\n return;\n }\n\n options.query = options.query || {};\n for (let key in options) {\n if (knownSendOptionsKeys.includes(key)) {\n continue;\n }\n\n options.query[key] = options[key];\n delete options[key];\n }\n}\n\nexport function serializeQueryParams(params: { [key: string]: any }): string {\n const result: Array = [];\n\n for (const key in params) {\n const encodedKey = encodeURIComponent(key);\n const arrValue = Array.isArray(params[key]) ? params[key] : [params[key]];\n\n for (let v of arrValue) {\n v = prepareQueryParamValue(v);\n if (v === null) {\n continue;\n }\n result.push(encodedKey + \"=\" + v);\n }\n }\n\n return result.join(\"&\");\n}\n\n// encodes and normalizes the provided query param value.\nfunction prepareQueryParamValue(value: any): null | string {\n if (value === null || typeof value === \"undefined\") {\n return null;\n }\n\n if (value instanceof Date) {\n return encodeURIComponent(value.toISOString().replace(\"T\", \" \"));\n }\n\n if (typeof value === \"object\") {\n return encodeURIComponent(JSON.stringify(value));\n }\n\n return encodeURIComponent(value);\n}\n","import { ClientResponseError } from \"@/ClientResponseError\";\nimport { BaseService } from \"@/services/BaseService\";\nimport { SendOptions, normalizeUnknownQueryParams } from \"@/tools/options\";\n\ninterface promiseCallbacks {\n resolve: Function;\n reject: Function;\n}\n\ntype Subscriptions = { [key: string]: Array };\n\nexport type UnsubscribeFunc = () => Promise;\n\nexport class RealtimeService extends BaseService {\n clientId: string = \"\";\n\n private eventSource: EventSource | null = null;\n private subscriptions: Subscriptions = {};\n private lastSentSubscriptions: Array = [];\n private connectTimeoutId: any;\n private maxConnectTimeout: number = 15000;\n private reconnectTimeoutId: any;\n private reconnectAttempts: number = 0;\n private maxReconnectAttempts: number = Infinity;\n private predefinedReconnectIntervals: Array = [\n 200, 300, 500, 1000, 1200, 1500, 2000,\n ];\n private pendingConnects: Array = [];\n\n /**\n * Returns whether the realtime connection has been established.\n */\n get isConnected(): boolean {\n return !!this.eventSource && !!this.clientId && !this.pendingConnects.length;\n }\n\n /**\n * An optional hook that is invoked when the realtime client disconnects\n * either when unsubscribing from all subscriptions or when the\n * connection was interrupted or closed by the server.\n *\n * The received argument could be used to determine whether the disconnect\n * is a result from unsubscribing (`activeSubscriptions.length == 0`)\n * or because of network/server error (`activeSubscriptions.length > 0`).\n *\n * If you want to listen for the opposite, aka. when the client connection is established,\n * subscribe to the `PB_CONNECT` event.\n */\n onDisconnect?: (activeSubscriptions: Array) => void;\n\n /**\n * Register the subscription listener.\n *\n * You can subscribe multiple times to the same topic.\n *\n * If the SSE connection is not started yet,\n * this method will also initialize it.\n */\n async subscribe(\n topic: string,\n callback: (data: any) => void,\n options?: SendOptions,\n ): Promise {\n if (!topic) {\n throw new Error(\"topic must be set.\");\n }\n\n let key = topic;\n\n // serialize and append the topic options (if any)\n if (options) {\n options = Object.assign({}, options); // shallow copy\n normalizeUnknownQueryParams(options);\n const serialized =\n \"options=\" +\n encodeURIComponent(\n JSON.stringify({ query: options.query, headers: options.headers }),\n );\n key += (key.includes(\"?\") ? \"&\" : \"?\") + serialized;\n }\n\n const listener = function (e: Event) {\n const msgEvent = e as MessageEvent;\n\n let data;\n try {\n data = JSON.parse(msgEvent?.data);\n } catch {}\n\n callback(data || {});\n };\n\n // store the listener\n if (!this.subscriptions[key]) {\n this.subscriptions[key] = [];\n }\n this.subscriptions[key].push(listener);\n\n if (!this.isConnected) {\n // initialize sse connection\n await this.connect();\n } else if (this.subscriptions[key].length === 1) {\n // send the updated subscriptions (if it is the first for the key)\n await this.submitSubscriptions();\n } else {\n // only register the listener\n this.eventSource?.addEventListener(key, listener);\n }\n\n return async (): Promise => {\n return this.unsubscribeByTopicAndListener(topic, listener);\n };\n }\n\n /**\n * Unsubscribe from all subscription listeners with the specified topic.\n *\n * If `topic` is not provided, then this method will unsubscribe\n * from all active subscriptions.\n *\n * This method is no-op if there are no active subscriptions.\n *\n * The related sse connection will be autoclosed if after the\n * unsubscribe operation there are no active subscriptions left.\n */\n async unsubscribe(topic?: string): Promise {\n let needToSubmit = false;\n\n if (!topic) {\n // remove all subscriptions\n this.subscriptions = {};\n } else {\n // remove all listeners related to the topic\n const subs = this.getSubscriptionsByTopic(topic);\n for (let key in subs) {\n if (!this.hasSubscriptionListeners(key)) {\n continue; // already unsubscribed\n }\n\n for (let listener of this.subscriptions[key]) {\n this.eventSource?.removeEventListener(key, listener);\n }\n delete this.subscriptions[key];\n\n // mark for subscriptions change submit if there are no other listeners\n if (!needToSubmit) {\n needToSubmit = true;\n }\n }\n }\n\n if (!this.hasSubscriptionListeners()) {\n // no other active subscriptions -> close the sse connection\n this.disconnect();\n } else if (needToSubmit) {\n await this.submitSubscriptions();\n }\n }\n\n /**\n * Unsubscribe from all subscription listeners starting with the specified topic prefix.\n *\n * This method is no-op if there are no active subscriptions with the specified topic prefix.\n *\n * The related sse connection will be autoclosed if after the\n * unsubscribe operation there are no active subscriptions left.\n */\n async unsubscribeByPrefix(keyPrefix: string): Promise {\n let hasAtleastOneTopic = false;\n for (let key in this.subscriptions) {\n // \"?\" so that it can be used as end delimiter for the prefix\n if (!(key + \"?\").startsWith(keyPrefix)) {\n continue;\n }\n\n hasAtleastOneTopic = true;\n for (let listener of this.subscriptions[key]) {\n this.eventSource?.removeEventListener(key, listener);\n }\n delete this.subscriptions[key];\n }\n\n if (!hasAtleastOneTopic) {\n return; // nothing to unsubscribe from\n }\n\n if (this.hasSubscriptionListeners()) {\n // submit the deleted subscriptions\n await this.submitSubscriptions();\n } else {\n // no other active subscriptions -> close the sse connection\n this.disconnect();\n }\n }\n\n /**\n * Unsubscribe from all subscriptions matching the specified topic and listener function.\n *\n * This method is no-op if there are no active subscription with\n * the specified topic and listener.\n *\n * The related sse connection will be autoclosed if after the\n * unsubscribe operation there are no active subscriptions left.\n */\n async unsubscribeByTopicAndListener(\n topic: string,\n listener: EventListener,\n ): Promise {\n let needToSubmit = false;\n\n const subs = this.getSubscriptionsByTopic(topic);\n for (let key in subs) {\n if (\n !Array.isArray(this.subscriptions[key]) ||\n !this.subscriptions[key].length\n ) {\n continue; // already unsubscribed\n }\n\n let exist = false;\n for (let i = this.subscriptions[key].length - 1; i >= 0; i--) {\n if (this.subscriptions[key][i] !== listener) {\n continue;\n }\n\n exist = true; // has at least one matching listener\n delete this.subscriptions[key][i]; // removes the function reference\n this.subscriptions[key].splice(i, 1); // reindex the array\n this.eventSource?.removeEventListener(key, listener);\n }\n if (!exist) {\n continue;\n }\n\n // remove the key from the subscriptions list if there are no other listeners\n if (!this.subscriptions[key].length) {\n delete this.subscriptions[key];\n }\n\n // mark for subscriptions change submit if there are no other listeners\n if (!needToSubmit && !this.hasSubscriptionListeners(key)) {\n needToSubmit = true;\n }\n }\n\n if (!this.hasSubscriptionListeners()) {\n // no other active subscriptions -> close the sse connection\n this.disconnect();\n } else if (needToSubmit) {\n await this.submitSubscriptions();\n }\n }\n\n private hasSubscriptionListeners(keyToCheck?: string): boolean {\n this.subscriptions = this.subscriptions || {};\n\n // check the specified key\n if (keyToCheck) {\n return !!this.subscriptions[keyToCheck]?.length;\n }\n\n // check for at least one non-empty subscription\n for (let key in this.subscriptions) {\n if (!!this.subscriptions[key]?.length) {\n return true;\n }\n }\n\n return false;\n }\n\n private async submitSubscriptions(): Promise {\n if (!this.clientId) {\n return; // no client/subscriber\n }\n\n // optimistic update\n this.addAllSubscriptionListeners();\n\n this.lastSentSubscriptions = this.getNonEmptySubscriptionKeys();\n\n return this.client\n .send(\"/api/realtime\", {\n method: \"POST\",\n body: {\n clientId: this.clientId,\n subscriptions: this.lastSentSubscriptions,\n },\n requestKey: this.getSubscriptionsCancelKey(),\n })\n .catch((err) => {\n if (err?.isAbort) {\n return; // silently ignore aborted pending requests\n }\n throw err;\n });\n }\n\n private getSubscriptionsCancelKey(): string {\n return \"realtime_\" + this.clientId;\n }\n\n private getSubscriptionsByTopic(topic: string): Subscriptions {\n const result: Subscriptions = {};\n\n // \"?\" so that it can be used as end delimiter for the topic\n topic = topic.includes(\"?\") ? topic : topic + \"?\";\n\n for (let key in this.subscriptions) {\n if ((key + \"?\").startsWith(topic)) {\n result[key] = this.subscriptions[key];\n }\n }\n\n return result;\n }\n\n private getNonEmptySubscriptionKeys(): Array {\n const result: Array = [];\n\n for (let key in this.subscriptions) {\n if (this.subscriptions[key].length) {\n result.push(key);\n }\n }\n\n return result;\n }\n\n private addAllSubscriptionListeners(): void {\n if (!this.eventSource) {\n return;\n }\n\n this.removeAllSubscriptionListeners();\n\n for (let key in this.subscriptions) {\n for (let listener of this.subscriptions[key]) {\n this.eventSource.addEventListener(key, listener);\n }\n }\n }\n\n private removeAllSubscriptionListeners(): void {\n if (!this.eventSource) {\n return;\n }\n\n for (let key in this.subscriptions) {\n for (let listener of this.subscriptions[key]) {\n this.eventSource.removeEventListener(key, listener);\n }\n }\n }\n\n private async connect(): Promise {\n if (this.reconnectAttempts > 0) {\n // immediately resolve the promise to avoid indefinitely\n // blocking the client during reconnection\n return;\n }\n\n return new Promise((resolve, reject) => {\n this.pendingConnects.push({ resolve, reject });\n\n if (this.pendingConnects.length > 1) {\n // all promises will be resolved once the connection is established\n return;\n }\n\n this.initConnect();\n });\n }\n\n private initConnect() {\n this.disconnect(true);\n\n // wait up to 15s for connect\n clearTimeout(this.connectTimeoutId);\n this.connectTimeoutId = setTimeout(() => {\n this.connectErrorHandler(new Error(\"EventSource connect took too long.\"));\n }, this.maxConnectTimeout);\n\n this.eventSource = new EventSource(this.client.buildURL(\"/api/realtime\"));\n\n this.eventSource.onerror = (_) => {\n this.connectErrorHandler(\n new Error(\"Failed to establish realtime connection.\"),\n );\n };\n\n this.eventSource.addEventListener(\"PB_CONNECT\", (e) => {\n const msgEvent = e as MessageEvent;\n this.clientId = msgEvent?.lastEventId;\n\n this.submitSubscriptions()\n .then(async () => {\n let retries = 3;\n while (this.hasUnsentSubscriptions() && retries > 0) {\n retries--;\n // resubscribe to ensure that the latest topics are submitted\n //\n // This is needed because missed topics could happen on reconnect\n // if after the pending sent `submitSubscriptions()` call another `subscribe()`\n // was made before the submit was able to complete.\n await this.submitSubscriptions();\n }\n })\n .then(() => {\n for (let p of this.pendingConnects) {\n p.resolve();\n }\n\n // reset connect meta\n this.pendingConnects = [];\n this.reconnectAttempts = 0;\n clearTimeout(this.reconnectTimeoutId);\n clearTimeout(this.connectTimeoutId);\n\n // propagate the PB_CONNECT event\n const connectSubs = this.getSubscriptionsByTopic(\"PB_CONNECT\");\n for (let key in connectSubs) {\n for (let listener of connectSubs[key]) {\n listener(e);\n }\n }\n })\n .catch((err) => {\n this.clientId = \"\";\n this.connectErrorHandler(err);\n });\n });\n }\n\n private hasUnsentSubscriptions(): boolean {\n const latestTopics = this.getNonEmptySubscriptionKeys();\n if (latestTopics.length != this.lastSentSubscriptions.length) {\n return true;\n }\n\n for (const t of latestTopics) {\n if (!this.lastSentSubscriptions.includes(t)) {\n return true;\n }\n }\n\n return false;\n }\n\n private connectErrorHandler(err: any) {\n clearTimeout(this.connectTimeoutId);\n clearTimeout(this.reconnectTimeoutId);\n\n if (\n // wasn't previously connected -> direct reject\n (!this.clientId && !this.reconnectAttempts) ||\n // was previously connected but the max reconnection limit has been reached\n this.reconnectAttempts > this.maxReconnectAttempts\n ) {\n for (let p of this.pendingConnects) {\n p.reject(new ClientResponseError(err));\n }\n this.pendingConnects = [];\n this.disconnect();\n return;\n }\n\n // otherwise -> reconnect in the background\n this.disconnect(true);\n const timeout =\n this.predefinedReconnectIntervals[this.reconnectAttempts] ||\n this.predefinedReconnectIntervals[\n this.predefinedReconnectIntervals.length - 1\n ];\n this.reconnectAttempts++;\n this.reconnectTimeoutId = setTimeout(() => {\n this.initConnect();\n }, timeout);\n }\n\n private disconnect(fromReconnect = false): void {\n if (this.clientId && this.onDisconnect) {\n this.onDisconnect(Object.keys(this.subscriptions));\n }\n\n clearTimeout(this.connectTimeoutId);\n clearTimeout(this.reconnectTimeoutId);\n this.removeAllSubscriptionListeners();\n this.client.cancelRequest(this.getSubscriptionsCancelKey());\n this.eventSource?.close();\n this.eventSource = null;\n this.clientId = \"\";\n\n if (!fromReconnect) {\n this.reconnectAttempts = 0;\n\n // resolve any remaining connect promises\n //\n // this is done to avoid unnecessary throwing errors in case\n // unsubscribe is called before the pending connect promises complete\n // (see https://github.com/pocketbase/pocketbase/discussions/2897#discussioncomment-6423818)\n for (let p of this.pendingConnects) {\n p.resolve();\n }\n this.pendingConnects = [];\n }\n }\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { ClientResponseError } from \"@/ClientResponseError\";\nimport { ListResult } from \"@/tools/dtos\";\nimport { CommonOptions, ListOptions, FullListOptions } from \"@/tools/options\";\n\nexport abstract class CrudService extends BaseService {\n /**\n * Base path for the crud actions (without trailing slash, eg. '/admins').\n */\n abstract get baseCrudPath(): string;\n\n /**\n * Response data decoder.\n */\n decode(data: { [key: string]: any }): T {\n return data as T;\n }\n\n /**\n * Returns a promise with all list items batch fetched at once\n * (by default 500 items per request; to change it set the `batch` query param).\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async getFullList(options?: FullListOptions): Promise>;\n\n /**\n * Legacy version of getFullList with explicitly specified batch size.\n */\n async getFullList(batch?: number, options?: ListOptions): Promise>;\n\n async getFullList(\n batchOrqueryParams?: number | FullListOptions,\n options?: ListOptions,\n ): Promise> {\n if (typeof batchOrqueryParams == \"number\") {\n return this._getFullList(batchOrqueryParams, options);\n }\n\n options = Object.assign({}, batchOrqueryParams, options);\n\n let batch = 500;\n if (options.batch) {\n batch = options.batch;\n delete options.batch;\n }\n\n return this._getFullList(batch, options);\n }\n\n /**\n * Returns paginated items list.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async getList(\n page = 1,\n perPage = 30,\n options?: ListOptions,\n ): Promise> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n options.query = Object.assign(\n {\n page: page,\n perPage: perPage,\n },\n options.query,\n );\n\n return this.client.send(this.baseCrudPath, options).then((responseData: any) => {\n responseData.items =\n responseData.items?.map((item: any) => {\n return this.decode(item);\n }) || [];\n\n return responseData;\n });\n }\n\n /**\n * Returns the first found item by the specified filter.\n *\n * Internally it calls `getList(1, 1, { filter, skipTotal })` and\n * returns the first found item.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * For consistency with `getOne`, this method will throw a 404\n * ClientResponseError if no item was found.\n *\n * @throws {ClientResponseError}\n */\n async getFirstListItem(filter: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n requestKey: \"one_by_filter_\" + this.baseCrudPath + \"_\" + filter,\n },\n options,\n );\n\n options.query = Object.assign(\n {\n filter: filter,\n skipTotal: 1,\n },\n options.query,\n );\n\n return this.getList(1, 1, options).then((result) => {\n if (!result?.items?.length) {\n throw new ClientResponseError({\n status: 404,\n response: {\n code: 404,\n message: \"The requested resource wasn't found.\",\n data: {},\n },\n });\n }\n\n return result.items[0];\n });\n }\n\n /**\n * Returns single item by its id.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * If `id` is empty it will throw a 404 error.\n *\n * @throws {ClientResponseError}\n */\n async getOne(id: string, options?: CommonOptions): Promise {\n if (!id) {\n throw new ClientResponseError({\n url: this.client.buildURL(this.baseCrudPath + \"/\"),\n status: 404,\n response: {\n code: 404,\n message: \"Missing required record id.\",\n data: {},\n },\n });\n }\n\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/\" + encodeURIComponent(id), options)\n .then((responseData: any) => this.decode(responseData));\n }\n\n /**\n * Creates a new item.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async create(\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath, options)\n .then((responseData: any) => this.decode(responseData));\n }\n\n /**\n * Updates an existing item by its id.\n *\n * You can use the generic T to supply a wrapper type of the crud model.\n *\n * @throws {ClientResponseError}\n */\n async update(\n id: string,\n bodyParams?: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"PATCH\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/\" + encodeURIComponent(id), options)\n .then((responseData: any) => this.decode(responseData));\n }\n\n /**\n * Deletes an existing item by its id.\n *\n * @throws {ClientResponseError}\n */\n async delete(id: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"DELETE\",\n },\n options,\n );\n\n return this.client\n .send(this.baseCrudPath + \"/\" + encodeURIComponent(id), options)\n .then(() => true);\n }\n\n /**\n * Returns a promise with all list items batch fetched at once.\n */\n protected _getFullList(\n batchSize = 500,\n options?: ListOptions,\n ): Promise> {\n options = options || {};\n options.query = Object.assign(\n {\n skipTotal: 1,\n },\n options.query,\n );\n\n let result: Array = [];\n\n let request = async (page: number): Promise> => {\n return this.getList(page, batchSize || 500, options).then((list) => {\n const castedList = list as any as ListResult;\n const items = castedList.items;\n\n result = result.concat(items);\n\n if (items.length == list.perPage) {\n return request(page + 1);\n }\n\n return result;\n });\n };\n\n return request(1);\n }\n}\n","import { SendOptions } from \"@/tools/options\";\n\nexport function normalizeLegacyOptionsArgs(\n legacyWarn: string,\n baseOptions: SendOptions,\n bodyOrOptions?: any,\n query?: any,\n): SendOptions {\n const hasBodyOrOptions = typeof bodyOrOptions !== \"undefined\";\n const hasQuery = typeof query !== \"undefined\";\n\n if (!hasQuery && !hasBodyOrOptions) {\n return baseOptions;\n }\n\n if (hasQuery) {\n console.warn(legacyWarn);\n baseOptions.body = Object.assign({}, baseOptions.body, bodyOrOptions);\n baseOptions.query = Object.assign({}, baseOptions.query, query);\n\n return baseOptions;\n }\n\n return Object.assign(baseOptions, bodyOrOptions);\n}\n","import Client from \"@/Client\";\nimport { isTokenExpired } from \"@/tools/jwt\";\n\n// reset previous auto refresh registrations\nexport function resetAutoRefresh(client: Client) {\n (client as any)._resetAutoRefresh?.();\n}\n\nexport function registerAutoRefresh(\n client: Client,\n threshold: number,\n refreshFunc: () => Promise,\n reauthenticateFunc: () => Promise,\n) {\n resetAutoRefresh(client);\n\n const oldBeforeSend = client.beforeSend;\n const oldModel = client.authStore.record;\n\n // unset the auto refresh in case the auth store was cleared\n // OR a new model was authenticated\n const unsubStoreChange = client.authStore.onChange((newToken, model) => {\n if (\n !newToken ||\n model?.id != oldModel?.id ||\n ((model?.collectionId || oldModel?.collectionId) &&\n model?.collectionId != oldModel?.collectionId)\n ) {\n resetAutoRefresh(client);\n }\n });\n\n // initialize a reset function and attach it dynamically to the client\n (client as any)._resetAutoRefresh = function () {\n unsubStoreChange();\n client.beforeSend = oldBeforeSend;\n delete (client as any)._resetAutoRefresh;\n };\n\n client.beforeSend = async (url, sendOptions) => {\n const oldToken = client.authStore.token;\n\n if (sendOptions.query?.autoRefresh) {\n return oldBeforeSend ? oldBeforeSend(url, sendOptions) : { url, sendOptions };\n }\n\n let isValid = client.authStore.isValid;\n if (\n // is loosely valid\n isValid &&\n // but it is going to expire in the next \"threshold\" seconds\n isTokenExpired(client.authStore.token, threshold)\n ) {\n try {\n await refreshFunc();\n } catch (_) {\n isValid = false;\n }\n }\n\n // still invalid -> reauthenticate\n if (!isValid) {\n await reauthenticateFunc();\n }\n\n // the request wasn't sent with a custom token\n const headers = sendOptions.headers || {};\n for (let key in headers) {\n if (\n key.toLowerCase() == \"authorization\" &&\n // the request wasn't sent with a custom token\n oldToken == headers[key] &&\n client.authStore.token\n ) {\n // set the latest store token\n headers[key] = client.authStore.token;\n break;\n }\n }\n sendOptions.headers = headers;\n\n return oldBeforeSend ? oldBeforeSend(url, sendOptions) : { url, sendOptions };\n };\n}\n","import Client from \"@/Client\";\nimport { ClientResponseError } from \"@/ClientResponseError\";\nimport { RealtimeService, UnsubscribeFunc } from \"@/services/RealtimeService\";\nimport { BaseAuthStore } from \"@/stores/BaseAuthStore\";\nimport { CrudService } from \"@/services/CrudService\";\nimport { ListResult, RecordModel } from \"@/tools/dtos\";\nimport { normalizeLegacyOptionsArgs } from \"@/tools/legacy\";\nimport {\n CommonOptions,\n RecordFullListOptions,\n RecordListOptions,\n RecordOptions,\n SendOptions,\n RecordSubscribeOptions,\n} from \"@/tools/options\";\nimport { getTokenPayload } from \"@/tools/jwt\";\nimport { registerAutoRefresh, resetAutoRefresh } from \"@/tools/refresh\";\n\nexport interface RecordAuthResponse {\n /**\n * The signed PocketBase auth record.\n */\n record: T;\n\n /**\n * The PocketBase record auth token.\n *\n * If you are looking for the OAuth2 access and refresh tokens\n * they are available under the `meta.accessToken` and `meta.refreshToken` props.\n */\n token: string;\n\n /**\n * Auth meta data usually filled when OAuth2 is used.\n */\n meta?: { [key: string]: any };\n}\n\nexport interface AuthProviderInfo {\n name: string;\n displayName: string;\n state: string;\n authURL: string;\n codeVerifier: string;\n codeChallenge: string;\n codeChallengeMethod: string;\n}\n\nexport interface AuthMethodsList {\n mfa: {\n enabled: boolean;\n duration: number;\n };\n otp: {\n enabled: boolean;\n duration: number;\n };\n password: {\n enabled: boolean;\n identityFields: Array;\n };\n oauth2: {\n enabled: boolean;\n providers: Array;\n };\n}\n\nexport interface RecordSubscription {\n action: string; // eg. create, update, delete\n record: T;\n}\n\nexport type OAuth2UrlCallback = (url: string) => void | Promise;\n\nexport interface OAuth2AuthConfig extends SendOptions {\n // the name of the OAuth2 provider (eg. \"google\")\n provider: string;\n\n // custom scopes to overwrite the default ones\n scopes?: Array;\n\n // optional record create data\n createData?: { [key: string]: any };\n\n // optional callback that is triggered after the OAuth2 sign-in/sign-up url generation\n urlCallback?: OAuth2UrlCallback;\n\n // optional query params to send with the PocketBase auth request (eg. fields, expand, etc.)\n query?: RecordOptions;\n}\n\nexport interface OTPResponse {\n otpId: string;\n}\n\nexport class RecordService extends CrudService {\n readonly collectionIdOrName: string;\n\n constructor(client: Client, collectionIdOrName: string) {\n super(client);\n\n this.collectionIdOrName = collectionIdOrName;\n }\n\n /**\n * @inheritdoc\n */\n get baseCrudPath(): string {\n return this.baseCollectionPath + \"/records\";\n }\n\n /**\n * Returns the current collection service base path.\n */\n get baseCollectionPath(): string {\n return \"/api/collections/\" + encodeURIComponent(this.collectionIdOrName);\n }\n\n /**\n * Returns whether the current service collection is superusers.\n */\n get isSuperusers(): boolean {\n return (\n this.collectionIdOrName == \"_superusers\" ||\n this.collectionIdOrName == \"_pbc_2773867675\"\n );\n }\n\n // ---------------------------------------------------------------\n // Realtime handlers\n // ---------------------------------------------------------------\n\n /**\n * Subscribe to realtime changes to the specified topic (\"*\" or record id).\n *\n * If `topic` is the wildcard \"*\", then this method will subscribe to\n * any record changes in the collection.\n *\n * If `topic` is a record id, then this method will subscribe only\n * to changes of the specified record id.\n *\n * It's OK to subscribe multiple times to the same topic.\n * You can use the returned `UnsubscribeFunc` to remove only a single subscription.\n * Or use `unsubscribe(topic)` if you want to remove all subscriptions attached to the topic.\n */\n async subscribe(\n topic: string,\n callback: (data: RecordSubscription) => void,\n options?: RecordSubscribeOptions,\n ): Promise {\n if (!topic) {\n throw new Error(\"Missing topic.\");\n }\n\n if (!callback) {\n throw new Error(\"Missing subscription callback.\");\n }\n\n return this.client.realtime.subscribe(\n this.collectionIdOrName + \"/\" + topic,\n callback,\n options,\n );\n }\n\n /**\n * Unsubscribe from all subscriptions of the specified topic\n * (\"*\" or record id).\n *\n * If `topic` is not set, then this method will unsubscribe from\n * all subscriptions associated to the current collection.\n */\n async unsubscribe(topic?: string): Promise {\n // unsubscribe from the specified topic\n if (topic) {\n return this.client.realtime.unsubscribe(\n this.collectionIdOrName + \"/\" + topic,\n );\n }\n\n // unsubscribe from everything related to the collection\n return this.client.realtime.unsubscribeByPrefix(this.collectionIdOrName);\n }\n\n // ---------------------------------------------------------------\n // Crud handers\n // ---------------------------------------------------------------\n /**\n * @inheritdoc\n */\n async getFullList(options?: RecordFullListOptions): Promise>;\n\n /**\n * @inheritdoc\n */\n async getFullList(\n batch?: number,\n options?: RecordListOptions,\n ): Promise>;\n\n /**\n * @inheritdoc\n */\n async getFullList(\n batchOrOptions?: number | RecordFullListOptions,\n options?: RecordListOptions,\n ): Promise> {\n if (typeof batchOrOptions == \"number\") {\n return super.getFullList(batchOrOptions, options);\n }\n\n const params = Object.assign({}, batchOrOptions, options);\n\n return super.getFullList(params);\n }\n\n /**\n * @inheritdoc\n */\n async getList(\n page = 1,\n perPage = 30,\n options?: RecordListOptions,\n ): Promise> {\n return super.getList(page, perPage, options);\n }\n\n /**\n * @inheritdoc\n */\n async getFirstListItem(\n filter: string,\n options?: RecordListOptions,\n ): Promise {\n return super.getFirstListItem(filter, options);\n }\n\n /**\n * @inheritdoc\n */\n async getOne(id: string, options?: RecordOptions): Promise {\n return super.getOne(id, options);\n }\n\n /**\n * @inheritdoc\n */\n async create(\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): Promise {\n return super.create(bodyParams, options);\n }\n\n /**\n * @inheritdoc\n *\n * If the current `client.authStore.record` matches with the updated id, then\n * on success the `client.authStore.record` will be updated with the new response record fields.\n */\n async update(\n id: string,\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): Promise {\n return super.update(id, bodyParams, options).then((item) => {\n if (\n // is record auth\n this.client.authStore.record?.id === item?.id &&\n (this.client.authStore.record?.collectionId === this.collectionIdOrName ||\n this.client.authStore.record?.collectionName ===\n this.collectionIdOrName)\n ) {\n let authExpand = Object.assign({}, this.client.authStore.record.expand);\n let authRecord = Object.assign({}, this.client.authStore.record, item);\n if (authExpand) {\n // for now \"merge\" only top-level expand\n authRecord.expand = Object.assign(authExpand, item.expand);\n }\n\n this.client.authStore.save(this.client.authStore.token, authRecord);\n }\n\n return item as any as T;\n });\n }\n\n /**\n * @inheritdoc\n *\n * If the current `client.authStore.record` matches with the deleted id,\n * then on success the `client.authStore` will be cleared.\n */\n async delete(id: string, options?: CommonOptions): Promise {\n return super.delete(id, options).then((success) => {\n if (\n success &&\n // is record auth\n this.client.authStore.record?.id === id &&\n (this.client.authStore.record?.collectionId === this.collectionIdOrName ||\n this.client.authStore.record?.collectionName ===\n this.collectionIdOrName)\n ) {\n this.client.authStore.clear();\n }\n\n return success;\n });\n }\n\n // ---------------------------------------------------------------\n // Auth handlers\n // ---------------------------------------------------------------\n\n /**\n * Prepare successful collection authorization response.\n */\n protected authResponse(responseData: any): RecordAuthResponse {\n const record = this.decode(responseData?.record || {});\n\n this.client.authStore.save(responseData?.token, record as any);\n\n return Object.assign({}, responseData, {\n // normalize common fields\n token: responseData?.token || \"\",\n record: record as any as T,\n });\n }\n\n /**\n * Returns all available collection auth methods.\n *\n * @throws {ClientResponseError}\n */\n async listAuthMethods(options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"GET\",\n // @todo remove after deleting the pre v0.23 API response fields\n fields: \"mfa,otp,password,oauth2\",\n },\n options,\n );\n\n return this.client.send(this.baseCollectionPath + \"/auth-methods\", options);\n }\n\n /**\n * Authenticate a single auth collection record via its username/email and password.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n *\n * @throws {ClientResponseError}\n */\n async authWithPassword(\n usernameOrEmail: string,\n password: string,\n options?: RecordOptions,\n ): Promise> {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n identity: usernameOrEmail,\n password: password,\n },\n },\n options,\n );\n\n // note: consider to deprecate\n let autoRefreshThreshold;\n if (this.isSuperusers) {\n autoRefreshThreshold = options.autoRefreshThreshold;\n delete options.autoRefreshThreshold;\n if (!options.autoRefresh) {\n resetAutoRefresh(this.client);\n }\n }\n\n let authData = await this.client.send(\n this.baseCollectionPath + \"/auth-with-password\",\n options,\n );\n\n authData = this.authResponse(authData);\n\n if (autoRefreshThreshold && this.isSuperusers) {\n registerAutoRefresh(\n this.client,\n autoRefreshThreshold,\n () => this.authRefresh({ autoRefresh: true }),\n () =>\n this.authWithPassword(\n usernameOrEmail,\n password,\n Object.assign({ autoRefresh: true }, options),\n ),\n );\n }\n\n return authData;\n }\n\n /**\n * Authenticate a single auth collection record with OAuth2 code.\n *\n * If you don't have an OAuth2 code you may also want to check `authWithOAuth2` method.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n * - the OAuth2 account data (eg. name, email, avatar, etc.)\n *\n * @throws {ClientResponseError}\n */\n async authWithOAuth2Code(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectURL: string,\n createData?: { [key: string]: any },\n options?: RecordOptions,\n ): Promise>;\n\n /**\n * @deprecated\n * Consider using authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createdData, options?).\n */\n async authWithOAuth2Code(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectURL: string,\n createData?: { [key: string]: any },\n body?: any,\n query?: any,\n ): Promise>;\n\n async authWithOAuth2Code(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectURL: string,\n createData?: { [key: string]: any },\n bodyOrOptions?: any,\n query?: any,\n ): Promise> {\n let options: any = {\n method: \"POST\",\n body: {\n provider: provider,\n code: code,\n codeVerifier: codeVerifier,\n redirectURL: redirectURL,\n createData: createData,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createData?, body?, query?) is deprecated. Consider replacing it with authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createData?, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-with-oauth2\", options)\n .then((data) => this.authResponse(data));\n }\n\n /**\n * @deprecated This form of authWithOAuth2 is deprecated.\n *\n * Please use `authWithOAuth2Code()` OR its simplified realtime version\n * as shown in https://pocketbase.io/docs/authentication/#oauth2-integration.\n */\n async authWithOAuth2(\n provider: string,\n code: string,\n codeVerifier: string,\n redirectURL: string,\n createData?: { [key: string]: any },\n bodyParams?: { [key: string]: any },\n queryParams?: RecordOptions,\n ): Promise>;\n\n /**\n * Authenticate a single auth collection record with OAuth2\n * **without custom redirects, deeplinks or even page reload**.\n *\n * This method initializes a one-off realtime subscription and will\n * open a popup window with the OAuth2 vendor page to authenticate.\n * Once the external OAuth2 sign-in/sign-up flow is completed, the popup\n * window will be automatically closed and the OAuth2 data sent back\n * to the user through the previously established realtime connection.\n *\n * You can specify an optional `urlCallback` prop to customize\n * the default url `window.open` behavior.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n * - the OAuth2 account data (eg. name, email, avatar, etc.)\n *\n * Example:\n *\n * ```js\n * const authData = await pb.collection(\"users\").authWithOAuth2({\n * provider: \"google\",\n * })\n * ```\n *\n * Note1: When creating the OAuth2 app in the provider dashboard\n * you have to configure `https://yourdomain.com/api/oauth2-redirect`\n * as redirect URL.\n *\n * Note2: Safari may block the default `urlCallback` popup because\n * it doesn't allow `window.open` calls as part of an `async` click functions.\n * To workaround this you can either change your click handler to not be marked as `async`\n * OR manually call `window.open` before your `async` function and use the\n * window reference in your own custom `urlCallback` (see https://github.com/pocketbase/pocketbase/discussions/2429#discussioncomment-5943061).\n * For example:\n * ```js\n * \n * ...\n * document.getElementById(\"btn\").addEventListener(\"click\", () => {\n * pb.collection(\"users\").authWithOAuth2({\n * provider: \"gitlab\",\n * }).then((authData) => {\n * console.log(authData)\n * }).catch((err) => {\n * console.log(err, err.originalError);\n * });\n * })\n * ```\n *\n * @throws {ClientResponseError}\n */\n async authWithOAuth2(\n options: OAuth2AuthConfig,\n ): Promise>;\n\n authWithOAuth2(...args: any): Promise> {\n // fallback to legacy format\n if (args.length > 1 || typeof args?.[0] === \"string\") {\n console.warn(\n \"PocketBase: This form of authWithOAuth2() is deprecated and may get removed in the future. Please replace with authWithOAuth2Code() OR use the authWithOAuth2() realtime form as shown in https://pocketbase.io/docs/authentication/#oauth2-integration.\",\n );\n return this.authWithOAuth2Code(\n args?.[0] || \"\",\n args?.[1] || \"\",\n args?.[2] || \"\",\n args?.[3] || \"\",\n args?.[4] || {},\n args?.[5] || {},\n args?.[6] || {},\n );\n }\n\n const config = args?.[0] || {};\n\n // open a new popup window in case config.urlCallback is not set\n //\n // note: it is opened before any async calls due to Safari restrictions\n // (see https://github.com/pocketbase/pocketbase/discussions/2429#discussioncomment-5943061)\n let eagerDefaultPopup: Window | null = null;\n if (!config.urlCallback) {\n eagerDefaultPopup = openBrowserPopup(undefined);\n }\n\n // initialize a one-off realtime service\n const realtime = new RealtimeService(this.client);\n\n function cleanup() {\n eagerDefaultPopup?.close();\n realtime.unsubscribe();\n }\n\n const requestKeyOptions: SendOptions = {};\n const requestKey = config.requestKey;\n if (requestKey) {\n requestKeyOptions.requestKey = requestKey;\n }\n\n return this.listAuthMethods(requestKeyOptions)\n .then((authMethods) => {\n const provider = authMethods.oauth2.providers.find(\n (p) => p.name === config.provider,\n );\n if (!provider) {\n throw new ClientResponseError(\n new Error(`Missing or invalid provider \"${config.provider}\".`),\n );\n }\n\n const redirectURL = this.client.buildURL(\"/api/oauth2-redirect\");\n\n // find the AbortController associated with the current request key (if any)\n const cancelController = requestKey\n ? this.client[\"cancelControllers\"]?.[requestKey]\n : undefined;\n if (cancelController) {\n cancelController.signal.onabort = () => {\n cleanup();\n };\n }\n\n return new Promise(async (resolve, reject) => {\n try {\n await realtime.subscribe(\"@oauth2\", async (e) => {\n const oldState = realtime.clientId;\n\n try {\n if (!e.state || oldState !== e.state) {\n throw new Error(\"State parameters don't match.\");\n }\n\n if (e.error || !e.code) {\n throw new Error(\n \"OAuth2 redirect error or missing code: \" +\n e.error,\n );\n }\n\n // clear the non SendOptions props\n const options = Object.assign({}, config);\n delete options.provider;\n delete options.scopes;\n delete options.createData;\n delete options.urlCallback;\n\n // reset the cancelController listener as it will be triggered by the next api call\n if (cancelController?.signal?.onabort) {\n cancelController.signal.onabort = null;\n }\n\n const authData = await this.authWithOAuth2Code(\n provider.name,\n e.code,\n provider.codeVerifier,\n redirectURL,\n config.createData,\n options,\n );\n\n resolve(authData);\n } catch (err) {\n reject(new ClientResponseError(err));\n }\n\n cleanup();\n });\n\n const replacements: { [key: string]: any } = {\n state: realtime.clientId,\n };\n if (config.scopes?.length) {\n replacements[\"scope\"] = config.scopes.join(\" \");\n }\n\n const url = this._replaceQueryParams(\n provider.authURL + redirectURL,\n replacements,\n );\n\n let urlCallback =\n config.urlCallback ||\n function (url: string) {\n if (eagerDefaultPopup) {\n eagerDefaultPopup.location.href = url;\n } else {\n // it could have been blocked due to its empty initial url,\n // try again...\n eagerDefaultPopup = openBrowserPopup(url);\n }\n };\n\n await urlCallback(url);\n } catch (err) {\n cleanup();\n reject(new ClientResponseError(err));\n }\n });\n })\n .catch((err) => {\n cleanup();\n throw err; // rethrow\n }) as Promise>;\n }\n\n /**\n * Refreshes the current authenticated record instance and\n * returns a new token and record data.\n *\n * On success this method also automatically updates the client's AuthStore.\n *\n * @throws {ClientResponseError}\n */\n async authRefresh(options?: RecordOptions): Promise>;\n\n /**\n * @deprecated\n * Consider using authRefresh(options?).\n */\n async authRefresh(body?: any, query?: any): Promise>;\n\n async authRefresh(\n bodyOrOptions?: any,\n query?: any,\n ): Promise> {\n let options: any = {\n method: \"POST\",\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of authRefresh(body?, query?) is deprecated. Consider replacing it with authRefresh(options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-refresh\", options)\n .then((data) => this.authResponse(data));\n }\n\n /**\n * Sends auth record password reset request.\n *\n * @throws {ClientResponseError}\n */\n async requestPasswordReset(email: string, options?: CommonOptions): Promise;\n\n /**\n * @deprecated\n * Consider using requestPasswordReset(email, options?).\n */\n async requestPasswordReset(email: string, body?: any, query?: any): Promise;\n\n async requestPasswordReset(\n email: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise {\n let options: any = {\n method: \"POST\",\n body: {\n email: email,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestPasswordReset(email, body?, query?) is deprecated. Consider replacing it with requestPasswordReset(email, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/request-password-reset\", options)\n .then(() => true);\n }\n\n /**\n * Confirms auth record password reset request.\n *\n * @throws {ClientResponseError}\n */\n async confirmPasswordReset(\n passwordResetToken: string,\n password: string,\n passwordConfirm: string,\n options?: CommonOptions,\n ): Promise;\n\n /**\n * @deprecated\n * Consider using confirmPasswordReset(passwordResetToken, password, passwordConfirm, options?).\n */\n async confirmPasswordReset(\n passwordResetToken: string,\n password: string,\n passwordConfirm: string,\n body?: any,\n query?: any,\n ): Promise;\n\n async confirmPasswordReset(\n passwordResetToken: string,\n password: string,\n passwordConfirm: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise {\n let options: any = {\n method: \"POST\",\n body: {\n token: passwordResetToken,\n password: password,\n passwordConfirm: passwordConfirm,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmPasswordReset(token, password, passwordConfirm, body?, query?) is deprecated. Consider replacing it with confirmPasswordReset(token, password, passwordConfirm, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/confirm-password-reset\", options)\n .then(() => true);\n }\n\n /**\n * Sends auth record verification email request.\n *\n * @throws {ClientResponseError}\n */\n async requestVerification(email: string, options?: CommonOptions): Promise;\n\n /**\n * @deprecated\n * Consider using requestVerification(email, options?).\n */\n async requestVerification(email: string, body?: any, query?: any): Promise;\n\n async requestVerification(\n email: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise {\n let options: any = {\n method: \"POST\",\n body: {\n email: email,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestVerification(email, body?, query?) is deprecated. Consider replacing it with requestVerification(email, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/request-verification\", options)\n .then(() => true);\n }\n\n /**\n * Confirms auth record email verification request.\n *\n * If the current `client.authStore.record` matches with the auth record from the token,\n * then on success the `client.authStore.record.verified` will be updated to `true`.\n *\n * @throws {ClientResponseError}\n */\n async confirmVerification(\n verificationToken: string,\n options?: CommonOptions,\n ): Promise;\n\n /**\n * @deprecated\n * Consider using confirmVerification(verificationToken, options?).\n */\n async confirmVerification(\n verificationToken: string,\n body?: any,\n query?: any,\n ): Promise;\n\n async confirmVerification(\n verificationToken: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise {\n let options: any = {\n method: \"POST\",\n body: {\n token: verificationToken,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmVerification(token, body?, query?) is deprecated. Consider replacing it with confirmVerification(token, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/confirm-verification\", options)\n .then(() => {\n // on success manually update the current auth record verified state\n const payload = getTokenPayload(verificationToken);\n const model = this.client.authStore.record;\n if (\n model &&\n !model.verified &&\n model.id === payload.id &&\n model.collectionId === payload.collectionId\n ) {\n model.verified = true;\n this.client.authStore.save(this.client.authStore.token, model);\n }\n\n return true;\n });\n }\n\n /**\n * Sends an email change request to the authenticated record model.\n *\n * @throws {ClientResponseError}\n */\n async requestEmailChange(newEmail: string, options?: CommonOptions): Promise;\n\n /**\n * @deprecated\n * Consider using requestEmailChange(newEmail, options?).\n */\n async requestEmailChange(newEmail: string, body?: any, query?: any): Promise;\n\n async requestEmailChange(\n newEmail: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise {\n let options: any = {\n method: \"POST\",\n body: {\n newEmail: newEmail,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of requestEmailChange(newEmail, body?, query?) is deprecated. Consider replacing it with requestEmailChange(newEmail, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/request-email-change\", options)\n .then(() => true);\n }\n\n /**\n * Confirms auth record's new email address.\n *\n * If the current `client.authStore.record` matches with the auth record from the token,\n * then on success the `client.authStore` will be cleared.\n *\n * @throws {ClientResponseError}\n */\n async confirmEmailChange(\n emailChangeToken: string,\n password: string,\n options?: CommonOptions,\n ): Promise;\n\n /**\n * @deprecated\n * Consider using confirmEmailChange(emailChangeToken, password, options?).\n */\n async confirmEmailChange(\n emailChangeToken: string,\n password: string,\n body?: any,\n query?: any,\n ): Promise;\n\n async confirmEmailChange(\n emailChangeToken: string,\n password: string,\n bodyOrOptions?: any,\n query?: any,\n ): Promise {\n let options: any = {\n method: \"POST\",\n body: {\n token: emailChangeToken,\n password: password,\n },\n };\n\n options = normalizeLegacyOptionsArgs(\n \"This form of confirmEmailChange(token, password, body?, query?) is deprecated. Consider replacing it with confirmEmailChange(token, password, options?).\",\n options,\n bodyOrOptions,\n query,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/confirm-email-change\", options)\n .then(() => {\n const payload = getTokenPayload(emailChangeToken);\n const model = this.client.authStore.record;\n if (\n model &&\n model.id === payload.id &&\n model.collectionId === payload.collectionId\n ) {\n this.client.authStore.clear();\n }\n\n return true;\n });\n }\n\n /**\n * @deprecated use collection(\"_externalAuths\").*\n *\n * Lists all linked external auth providers for the specified auth record.\n *\n * @throws {ClientResponseError}\n */\n async listExternalAuths(\n recordId: string,\n options?: CommonOptions,\n ): Promise> {\n return this.client.collection(\"_externalAuths\").getFullList(\n Object.assign({}, options, {\n filter: this.client.filter(\"recordRef = {:id}\", { id: recordId }),\n }),\n );\n }\n\n /**\n * @deprecated use collection(\"_externalAuths\").*\n *\n * Unlink a single external auth provider from the specified auth record.\n *\n * @throws {ClientResponseError}\n */\n async unlinkExternalAuth(\n recordId: string,\n provider: string,\n options?: CommonOptions,\n ): Promise {\n const ea = await this.client.collection(\"_externalAuths\").getFirstListItem(\n this.client.filter(\"recordRef = {:recordId} && provider = {:provider}\", {\n recordId,\n provider,\n }),\n );\n\n return this.client\n .collection(\"_externalAuths\")\n .delete(ea.id, options)\n .then(() => true);\n }\n\n /**\n * Sends auth record OTP to the provided email.\n *\n * @throws {ClientResponseError}\n */\n async requestOTP(email: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: { email: email },\n },\n options,\n );\n\n return this.client.send(this.baseCollectionPath + \"/request-otp\", options);\n }\n\n /**\n * Authenticate a single auth collection record via OTP.\n *\n * On success, this method also automatically updates\n * the client's AuthStore data and returns:\n * - the authentication token\n * - the authenticated record model\n *\n * @throws {ClientResponseError}\n */\n async authWithOTP(\n otpId: string,\n password: string,\n options?: CommonOptions,\n ): Promise> {\n options = Object.assign(\n {\n method: \"POST\",\n body: { otpId, password },\n },\n options,\n );\n\n return this.client\n .send(this.baseCollectionPath + \"/auth-with-otp\", options)\n .then((data) => this.authResponse(data));\n }\n\n /**\n * Impersonate authenticates with the specified recordId and\n * returns a new client with the received auth token in a memory store.\n *\n * If `duration` is 0 the generated auth token will fallback\n * to the default collection auth token duration.\n *\n * This action currently requires superusers privileges.\n *\n * @throws {ClientResponseError}\n */\n async impersonate(\n recordId: string,\n duration: number,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: { duration: duration },\n },\n options,\n );\n options.headers = options.headers || {};\n if (!options.headers.Authorization) {\n options.headers.Authorization = this.client.authStore.token;\n }\n\n // create a new client loaded with the impersonated auth state\n // ---\n const client = new Client(\n this.client.baseURL,\n new BaseAuthStore(),\n this.client.lang,\n );\n\n const authData = await client.send(\n this.baseCollectionPath + \"/impersonate/\" + encodeURIComponent(recordId),\n options,\n );\n\n client.authStore.save(authData?.token, this.decode(authData?.record || {}));\n // ---\n\n return client;\n }\n\n // ---------------------------------------------------------------\n\n // very rudimentary url query params replacement because at the moment\n // URL (and URLSearchParams) doesn't seem to be fully supported in React Native\n //\n // note: for details behind some of the decode/encode parsing check https://unixpapa.com/js/querystring.html\n private _replaceQueryParams(\n url: string,\n replacements: { [key: string]: any } = {},\n ): string {\n let urlPath = url;\n let query = \"\";\n\n const queryIndex = url.indexOf(\"?\");\n if (queryIndex >= 0) {\n urlPath = url.substring(0, url.indexOf(\"?\"));\n query = url.substring(url.indexOf(\"?\") + 1);\n }\n\n const parsedParams: { [key: string]: string } = {};\n\n // parse the query parameters\n const rawParams = query.split(\"&\");\n for (const param of rawParams) {\n if (param == \"\") {\n continue;\n }\n\n const pair = param.split(\"=\");\n parsedParams[decodeURIComponent(pair[0].replace(/\\+/g, \" \"))] =\n decodeURIComponent((pair[1] || \"\").replace(/\\+/g, \" \"));\n }\n\n // apply the replacements\n for (let key in replacements) {\n if (!replacements.hasOwnProperty(key)) {\n continue;\n }\n\n if (replacements[key] == null) {\n delete parsedParams[key];\n } else {\n parsedParams[key] = replacements[key];\n }\n }\n\n // construct back the full query string\n query = \"\";\n for (let key in parsedParams) {\n if (!parsedParams.hasOwnProperty(key)) {\n continue;\n }\n\n if (query != \"\") {\n query += \"&\";\n }\n\n query +=\n encodeURIComponent(key.replace(/%20/g, \"+\")) +\n \"=\" +\n encodeURIComponent(parsedParams[key].replace(/%20/g, \"+\"));\n }\n\n return query != \"\" ? urlPath + \"?\" + query : urlPath;\n }\n}\n\nfunction openBrowserPopup(url?: string): Window | null {\n if (typeof window === \"undefined\" || !window?.open) {\n throw new ClientResponseError(\n new Error(\n `Not in a browser context - please pass a custom urlCallback function.`,\n ),\n );\n }\n\n let width = 1024;\n let height = 768;\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n // normalize window size\n width = width > windowWidth ? windowWidth : width;\n height = height > windowHeight ? windowHeight : height;\n\n let left = windowWidth / 2 - width / 2;\n let top = windowHeight / 2 - height / 2;\n\n // note: we don't use the noopener and noreferrer attributes since\n // for some reason browser blocks such windows then url is undefined/blank\n return window.open(\n url,\n \"popup_window\",\n \"width=\" +\n width +\n \",height=\" +\n height +\n \",top=\" +\n top +\n \",left=\" +\n left +\n \",resizable,menubar=no\",\n );\n}\n","import { CrudService } from \"@/services/CrudService\";\nimport { CollectionModel } from \"@/tools/dtos\";\nimport { CommonOptions } from \"@/tools/options\";\n\nexport class CollectionService extends CrudService {\n /**\n * @inheritdoc\n */\n get baseCrudPath(): string {\n return \"/api/collections\";\n }\n\n /**\n * Imports the provided collections.\n *\n * If `deleteMissing` is `true`, all local collections and their fields,\n * that are not present in the imported configuration, WILL BE DELETED\n * (including their related records data)!\n *\n * @throws {ClientResponseError}\n */\n async import(\n collections: Array,\n deleteMissing: boolean = false,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"PUT\",\n body: {\n collections: collections,\n deleteMissing: deleteMissing,\n },\n },\n options,\n );\n\n return this.client.send(this.baseCrudPath + \"/import\", options).then(() => true);\n }\n\n /**\n * Returns type indexed map with scaffolded collection models\n * populated with their default field values.\n *\n * @throws {ClientResponseError}\n */\n async getScaffolds(\n options?: CommonOptions,\n ): Promise<{ [key: string]: CollectionModel }> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(this.baseCrudPath + \"/meta/scaffolds\", options);\n }\n\n /**\n * Deletes all records associated with the specified collection.\n *\n * @throws {ClientResponseError}\n */\n async truncate(collectionIdOrName: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"DELETE\",\n },\n options,\n );\n\n return this.client\n .send(\n this.baseCrudPath +\n \"/\" +\n encodeURIComponent(collectionIdOrName) +\n \"/truncate\",\n options,\n )\n .then(() => true);\n }\n}\n","import { ClientResponseError } from \"@/ClientResponseError\";\nimport { BaseService } from \"@/services/BaseService\";\nimport { ListResult, LogModel } from \"@/tools/dtos\";\nimport { CommonOptions, ListOptions, LogStatsOptions } from \"@/tools/options\";\n\nexport interface HourlyStats {\n total: number;\n date: string;\n}\n\nexport class LogService extends BaseService {\n /**\n * Returns paginated logs list.\n *\n * @throws {ClientResponseError}\n */\n async getList(\n page = 1,\n perPage = 30,\n options?: ListOptions,\n ): Promise> {\n options = Object.assign({ method: \"GET\" }, options);\n\n options.query = Object.assign(\n {\n page: page,\n perPage: perPage,\n },\n options.query,\n );\n\n return this.client.send(\"/api/logs\", options);\n }\n\n /**\n * Returns a single log by its id.\n *\n * If `id` is empty it will throw a 404 error.\n *\n * @throws {ClientResponseError}\n */\n async getOne(id: string, options?: CommonOptions): Promise {\n if (!id) {\n throw new ClientResponseError({\n url: this.client.buildURL(\"/api/logs/\"),\n status: 404,\n response: {\n code: 404,\n message: \"Missing required log id.\",\n data: {},\n },\n });\n }\n\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/logs/\" + encodeURIComponent(id), options);\n }\n\n /**\n * Returns logs statistics.\n *\n * @throws {ClientResponseError}\n */\n async getStats(options?: LogStatsOptions): Promise> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/logs/stats\", options);\n }\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { CommonOptions } from \"@/tools/options\";\n\nexport interface HealthCheckResponse {\n code: number;\n message: string;\n data: { [key: string]: any };\n}\n\nexport class HealthService extends BaseService {\n /**\n * Checks the health status of the api.\n *\n * @throws {ClientResponseError}\n */\n async check(options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/health\", options);\n }\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { CommonOptions, FileOptions } from \"@/tools/options\";\n\nexport class FileService extends BaseService {\n /**\n * @deprecated Please replace with `pb.files.getURL()`.\n */\n getUrl(\n record: { [key: string]: any },\n filename: string,\n queryParams: FileOptions = {},\n ): string {\n console.warn(\"Please replace pb.files.getUrl() with pb.files.getURL()\");\n return this.getURL(record, filename, queryParams);\n }\n\n /**\n * Builds and returns an absolute record file url for the provided filename.\n */\n getURL(\n record: { [key: string]: any },\n filename: string,\n queryParams: FileOptions = {},\n ): string {\n if (\n !filename ||\n !record?.id ||\n !(record?.collectionId || record?.collectionName)\n ) {\n return \"\";\n }\n\n const parts = [];\n parts.push(\"api\");\n parts.push(\"files\");\n parts.push(encodeURIComponent(record.collectionId || record.collectionName));\n parts.push(encodeURIComponent(record.id));\n parts.push(encodeURIComponent(filename));\n\n let result = this.client.buildURL(parts.join(\"/\"));\n\n if (Object.keys(queryParams).length) {\n // normalize the download query param for consistency with the Dart sdk\n if (queryParams.download === false) {\n delete queryParams.download;\n }\n\n const params = new URLSearchParams(queryParams);\n\n result += (result.includes(\"?\") ? \"&\" : \"?\") + params;\n }\n\n return result;\n }\n\n /**\n * Requests a new private file access token for the current auth model.\n *\n * @throws {ClientResponseError}\n */\n async getToken(options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n },\n options,\n );\n\n return this.client\n .send(\"/api/files/token\", options)\n .then((data) => data?.token || \"\");\n }\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { CommonOptions } from \"@/tools/options\";\n\nexport interface BackupFileInfo {\n key: string;\n size: number;\n modified: string;\n}\n\nexport class BackupService extends BaseService {\n /**\n * Returns list with all available backup files.\n *\n * @throws {ClientResponseError}\n */\n async getFullList(options?: CommonOptions): Promise> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/backups\", options);\n }\n\n /**\n * Initializes a new backup.\n *\n * @throws {ClientResponseError}\n */\n async create(basename: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: {\n name: basename,\n },\n },\n options,\n );\n\n return this.client.send(\"/api/backups\", options).then(() => true);\n }\n\n /**\n * Uploads an existing backup file.\n *\n * Example:\n *\n * ```js\n * await pb.backups.upload({\n * file: new Blob([...]),\n * });\n * ```\n *\n * @throws {ClientResponseError}\n */\n async upload(\n bodyParams: { [key: string]: any } | FormData,\n options?: CommonOptions,\n ): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n body: bodyParams,\n },\n options,\n );\n\n return this.client.send(\"/api/backups/upload\", options).then(() => true);\n }\n\n /**\n * Deletes a single backup file.\n *\n * @throws {ClientResponseError}\n */\n async delete(key: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"DELETE\",\n },\n options,\n );\n\n return this.client\n .send(`/api/backups/${encodeURIComponent(key)}`, options)\n .then(() => true);\n }\n\n /**\n * Initializes an app data restore from an existing backup.\n *\n * @throws {ClientResponseError}\n */\n async restore(key: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n },\n options,\n );\n\n return this.client\n .send(`/api/backups/${encodeURIComponent(key)}/restore`, options)\n .then(() => true);\n }\n\n /**\n * @deprecated Please use `getDownloadURL()`.\n */\n getDownloadUrl(token: string, key: string): string {\n console.warn(\n \"Please replace pb.backups.getDownloadUrl() with pb.backups.getDownloadURL()\",\n );\n return this.getDownloadURL(token, key);\n }\n\n /**\n * Builds a download url for a single existing backup using a\n * superuser file token and the backup file key.\n *\n * The file token can be generated via `pb.files.getToken()`.\n */\n getDownloadURL(token: string, key: string): string {\n return this.client.buildURL(\n `/api/backups/${encodeURIComponent(key)}?token=${encodeURIComponent(token)}`,\n );\n }\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { CommonOptions } from \"@/tools/options\";\n\nexport interface CronJob {\n id: string;\n expression: string;\n}\n\nexport class CronService extends BaseService {\n /**\n * Returns list with all registered cron jobs.\n *\n * @throws {ClientResponseError}\n */\n async getFullList(options?: CommonOptions): Promise> {\n options = Object.assign(\n {\n method: \"GET\",\n },\n options,\n );\n\n return this.client.send(\"/api/crons\", options);\n }\n\n /**\n * Runs the specified cron job.\n *\n * @throws {ClientResponseError}\n */\n async run(jobId: string, options?: CommonOptions): Promise {\n options = Object.assign(\n {\n method: \"POST\",\n },\n options,\n );\n\n return this.client\n .send(`/api/crons/${encodeURIComponent(jobId)}`, options)\n .then(() => true);\n }\n}\n","/**\n * Checks if the specified value is a file (aka. File, Blob, RN file object).\n */\nexport function isFile(val: any): boolean {\n return (\n (typeof Blob !== \"undefined\" && val instanceof Blob) ||\n (typeof File !== \"undefined\" && val instanceof File) ||\n // check for React Native file object format\n // (see https://github.com/pocketbase/pocketbase/discussions/2002#discussioncomment-5254168)\n (val !== null &&\n typeof val === \"object\" &&\n val.uri &&\n ((typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") ||\n (typeof global !== \"undefined\" && (global as any).HermesInternal)))\n );\n}\n\n/**\n * Loosely checks if the specified body is a FormData instance.\n */\nexport function isFormData(body: any): boolean {\n return (\n body &&\n // we are checking the constructor name because FormData\n // is not available natively in some environments and the\n // polyfill(s) may not be globally accessible\n (body.constructor?.name === \"FormData\" ||\n // fallback to global FormData instance check\n // note: this is needed because the constructor.name could be different in case of\n // custom global FormData implementation, eg. React Native on Android/iOS\n (typeof FormData !== \"undefined\" && body instanceof FormData))\n );\n}\n\n/**\n * Checks if the submitted body object has at least one Blob/File field value.\n */\nexport function hasFileField(body: { [key: string]: any }): boolean {\n for (const key in body) {\n const values = Array.isArray(body[key]) ? body[key] : [body[key]];\n for (const v of values) {\n if (isFile(v)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Converts analyzes the provided body and converts it to FormData\n * in case a plain object with File/Blob values is used.\n */\nexport function convertToFormDataIfNeeded(body: any): any {\n if (\n typeof FormData === \"undefined\" ||\n typeof body === \"undefined\" ||\n typeof body !== \"object\" ||\n body === null ||\n isFormData(body) ||\n !hasFileField(body)\n ) {\n return body;\n }\n\n const form = new FormData();\n\n for (const key in body) {\n const val = body[key];\n\n // skip undefined values for consistency with JSON.stringify\n // (see https://github.com/pocketbase/pocketbase/issues/6731#issuecomment-2812382827)\n if (typeof val === \"undefined\") {\n continue;\n }\n\n if (typeof val === \"object\" && !hasFileField({ data: val })) {\n // send json-like values as jsonPayload to avoid the implicit string value normalization\n let payload: { [key: string]: any } = {};\n payload[key] = val;\n form.append(\"@jsonPayload\", JSON.stringify(payload));\n } else {\n // in case of mixed string and file/blob\n const normalizedVal = Array.isArray(val) ? val : [val];\n for (let v of normalizedVal) {\n form.append(key, v);\n }\n }\n }\n\n return form;\n}\n\n/**\n * Converts the provided FormData instance into a plain object.\n *\n * For consistency with the server multipart/form-data inferring,\n * the following normalization rules are applied for plain multipart string values:\n * - \"true\" is converted to the json \"true\"\n * - \"false\" is converted to the json \"false\"\n * - numeric strings are converted to json number ONLY if the resulted\n * minimal number string representation is the same as the provided raw string\n * (aka. scientific notations, \"Infinity\", \"0.0\", \"0001\", etc. are kept as string)\n * - any other string (empty string too) is left as it is\n */\nexport function convertFormDataToObject(formData: FormData): { [key: string]: any } {\n let result: { [key: string]: any } = {};\n\n formData.forEach((v, k) => {\n if (k === \"@jsonPayload\" && typeof v == \"string\") {\n try {\n let parsed = JSON.parse(v);\n Object.assign(result, parsed);\n } catch (err) {\n console.warn(\"@jsonPayload error:\", err);\n }\n } else {\n if (typeof result[k] !== \"undefined\") {\n if (!Array.isArray(result[k])) {\n result[k] = [result[k]];\n }\n result[k].push(inferFormDataValue(v));\n } else {\n result[k] = inferFormDataValue(v);\n }\n }\n });\n\n return result;\n}\n\nconst inferNumberCharsRegex = /^[\\-\\.\\d]+$/;\n\nfunction inferFormDataValue(value: any): any {\n if (typeof value != \"string\") {\n return value;\n }\n\n if (value == \"true\") {\n return true;\n }\n\n if (value == \"false\") {\n return false;\n }\n\n // note: expects the provided raw string to match exactly with the minimal string representation of the parsed number\n if (\n (value[0] === \"-\" || (value[0] >= \"0\" && value[0] <= \"9\")) &&\n inferNumberCharsRegex.test(value)\n ) {\n let num = +value;\n if (\"\" + num === value) {\n return num;\n }\n }\n\n return value;\n}\n","import { BaseService } from \"@/services/BaseService\";\nimport { isFile, isFormData, convertFormDataToObject } from \"@/tools/formdata\";\nimport {\n SendOptions,\n RecordOptions,\n normalizeUnknownQueryParams,\n serializeQueryParams,\n} from \"@/tools/options\";\n\nexport interface BatchRequest {\n method: string;\n url: string;\n json?: { [key: string]: any };\n files?: { [key: string]: Array };\n headers?: { [key: string]: string };\n}\n\nexport interface BatchRequestResult {\n status: number;\n body: any;\n}\n\nexport class BatchService extends BaseService {\n private requests: Array = [];\n private subs: { [key: string]: SubBatchService } = {};\n\n /**\n * Starts constructing a batch request entry for the specified collection.\n */\n collection(collectionIdOrName: string): SubBatchService {\n if (!this.subs[collectionIdOrName]) {\n this.subs[collectionIdOrName] = new SubBatchService(\n this.requests,\n collectionIdOrName,\n );\n }\n\n return this.subs[collectionIdOrName];\n }\n\n /**\n * Sends the batch requests.\n *\n * @throws {ClientResponseError}\n */\n async send(options?: SendOptions): Promise> {\n const formData = new FormData();\n\n const jsonData = [];\n\n for (let i = 0; i < this.requests.length; i++) {\n const req = this.requests[i];\n\n jsonData.push({\n method: req.method,\n url: req.url,\n headers: req.headers,\n body: req.json,\n });\n\n if (req.files) {\n for (let key in req.files) {\n const files = req.files[key] || [];\n for (let file of files) {\n formData.append(\"requests.\" + i + \".\" + key, file);\n }\n }\n }\n }\n\n formData.append(\"@jsonPayload\", JSON.stringify({ requests: jsonData }));\n\n options = Object.assign(\n {\n method: \"POST\",\n body: formData,\n },\n options,\n );\n\n return this.client.send(\"/api/batch\", options);\n }\n}\n\nexport class SubBatchService {\n private requests: Array = [];\n private readonly collectionIdOrName: string;\n\n constructor(requests: Array, collectionIdOrName: string) {\n this.requests = requests;\n this.collectionIdOrName = collectionIdOrName;\n }\n\n /**\n * Registers a record upsert request into the current batch queue.\n *\n * The request will be executed as update if `bodyParams` have a valid existing record `id` value, otherwise - create.\n */\n upsert(\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): void {\n options = Object.assign(\n {\n body: bodyParams || {},\n },\n options,\n );\n\n const request: BatchRequest = {\n method: \"PUT\",\n url:\n \"/api/collections/\" +\n encodeURIComponent(this.collectionIdOrName) +\n \"/records\",\n };\n\n this.prepareRequest(request, options);\n\n this.requests.push(request);\n }\n\n /**\n * Registers a record create request into the current batch queue.\n */\n create(\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): void {\n options = Object.assign(\n {\n body: bodyParams || {},\n },\n options,\n );\n\n const request: BatchRequest = {\n method: \"POST\",\n url:\n \"/api/collections/\" +\n encodeURIComponent(this.collectionIdOrName) +\n \"/records\",\n };\n\n this.prepareRequest(request, options);\n\n this.requests.push(request);\n }\n\n /**\n * Registers a record update request into the current batch queue.\n */\n update(\n id: string,\n bodyParams?: { [key: string]: any } | FormData,\n options?: RecordOptions,\n ): void {\n options = Object.assign(\n {\n body: bodyParams || {},\n },\n options,\n );\n\n const request: BatchRequest = {\n method: \"PATCH\",\n url:\n \"/api/collections/\" +\n encodeURIComponent(this.collectionIdOrName) +\n \"/records/\" +\n encodeURIComponent(id),\n };\n\n this.prepareRequest(request, options);\n\n this.requests.push(request);\n }\n\n /**\n * Registers a record delete request into the current batch queue.\n */\n delete(id: string, options?: SendOptions): void {\n options = Object.assign({}, options);\n\n const request: BatchRequest = {\n method: \"DELETE\",\n url:\n \"/api/collections/\" +\n encodeURIComponent(this.collectionIdOrName) +\n \"/records/\" +\n encodeURIComponent(id),\n };\n\n this.prepareRequest(request, options);\n\n this.requests.push(request);\n }\n\n private prepareRequest(request: BatchRequest, options: SendOptions) {\n normalizeUnknownQueryParams(options);\n\n request.headers = options.headers;\n request.json = {};\n request.files = {};\n\n // serialize query parameters\n // -----------------------------------------------------------\n if (typeof options.query !== \"undefined\") {\n const query = serializeQueryParams(options.query);\n if (query) {\n request.url += (request.url.includes(\"?\") ? \"&\" : \"?\") + query;\n }\n }\n\n // extract json and files body data\n // -----------------------------------------------------------\n let body = options.body;\n if (isFormData(body)) {\n body = convertFormDataToObject(body);\n }\n\n for (const key in body) {\n const val = body[key];\n\n if (isFile(val)) {\n request.files[key] = request.files[key] || [];\n request.files[key].push(val);\n } else if (Array.isArray(val)) {\n const foundFiles = [];\n const foundRegular = [];\n for (const v of val) {\n if (isFile(v)) {\n foundFiles.push(v);\n } else {\n foundRegular.push(v);\n }\n }\n\n if (foundFiles.length > 0 && foundFiles.length == val.length) {\n // only files\n // ---\n request.files[key] = request.files[key] || [];\n for (let file of foundFiles) {\n request.files[key].push(file);\n }\n } else {\n // empty or mixed array (both regular and File/Blob values)\n // ---\n request.json[key] = foundRegular;\n\n if (foundFiles.length > 0) {\n // add \"+\" to append if not already since otherwise\n // the existing regular files will be deleted\n // (the mixed values order is preserved only within their corresponding groups)\n let fileKey = key;\n if (!key.startsWith(\"+\") && !key.endsWith(\"+\")) {\n fileKey += \"+\";\n }\n\n request.files[fileKey] = request.files[fileKey] || [];\n for (let file of foundFiles) {\n request.files[fileKey].push(file);\n }\n }\n }\n } else {\n request.json[key] = val;\n }\n }\n }\n}\n","import { ClientResponseError } from \"@/ClientResponseError\";\nimport { BaseAuthStore } from \"@/stores/BaseAuthStore\";\nimport { LocalAuthStore } from \"@/stores/LocalAuthStore\";\nimport { SettingsService } from \"@/services/SettingsService\";\nimport { RecordService } from \"@/services/RecordService\";\nimport { CollectionService } from \"@/services/CollectionService\";\nimport { LogService } from \"@/services/LogService\";\nimport { RealtimeService } from \"@/services/RealtimeService\";\nimport { HealthService } from \"@/services/HealthService\";\nimport { FileService } from \"@/services/FileService\";\nimport { BackupService } from \"@/services/BackupService\";\nimport { CronService } from \"@/services/CronService\";\nimport { BatchService } from \"@/services/BatchService\";\nimport { RecordModel } from \"@/tools/dtos\";\nimport {\n SendOptions,\n FileOptions,\n normalizeUnknownQueryParams,\n serializeQueryParams,\n} from \"@/tools/options\";\nimport { isFormData, convertToFormDataIfNeeded } from \"@/tools/formdata\";\n\nexport interface BeforeSendResult {\n [key: string]: any; // for backward compatibility\n url?: string;\n options?: { [key: string]: any };\n}\n\n/**\n * PocketBase JS Client.\n */\nexport default class Client {\n /**\n * The base PocketBase backend url address (eg. 'http://127.0.0.1.8090').\n */\n baseURL: string;\n\n /**\n * Legacy getter alias for baseURL.\n * @deprecated Please replace with baseURL.\n */\n get baseUrl(): string {\n return this.baseURL;\n }\n\n /**\n * Legacy setter alias for baseURL.\n * @deprecated Please replace with baseURL.\n */\n set baseUrl(v: string) {\n this.baseURL = v;\n }\n\n /**\n * Hook that get triggered right before sending the fetch request,\n * allowing you to inspect and modify the url and request options.\n *\n * For list of the possible options check https://developer.mozilla.org/en-US/docs/Web/API/fetch#options\n *\n * You can return a non-empty result object `{ url, options }` to replace the url and request options entirely.\n *\n * Example:\n * ```js\n * const pb = new PocketBase(\"https://example.com\")\n *\n * pb.beforeSend = function (url, options) {\n * options.headers = Object.assign({}, options.headers, {\n * 'X-Custom-Header': 'example',\n * })\n *\n * return { url, options }\n * }\n *\n * // use the created client as usual...\n * ```\n */\n beforeSend?: (\n url: string,\n options: SendOptions,\n ) => BeforeSendResult | Promise;\n\n /**\n * Hook that get triggered after successfully sending the fetch request,\n * allowing you to inspect/modify the response object and its parsed data.\n *\n * Returns the new Promise resolved `data` that will be returned to the client.\n *\n * Example:\n * ```js\n * const pb = new PocketBase(\"https://example.com\")\n *\n * pb.afterSend = function (response, data, options) {\n * if (response.status != 200) {\n * throw new ClientResponseError({\n * url: response.url,\n * status: response.status,\n * response: { ... },\n * })\n * }\n *\n * return data;\n * }\n *\n * // use the created client as usual...\n * ```\n */\n afterSend?: ((response: Response, data: any) => any) &\n ((response: Response, data: any, options: SendOptions) => any);\n\n /**\n * Optional language code (default to `en-US`) that will be sent\n * with the requests to the server as `Accept-Language` header.\n */\n lang: string;\n\n /**\n * A replaceable instance of the local auth store service.\n */\n authStore: BaseAuthStore;\n\n /**\n * An instance of the service that handles the **Settings APIs**.\n */\n readonly settings: SettingsService;\n\n /**\n * An instance of the service that handles the **Collection APIs**.\n */\n readonly collections: CollectionService;\n\n /**\n * An instance of the service that handles the **File APIs**.\n */\n readonly files: FileService;\n\n /**\n * An instance of the service that handles the **Log APIs**.\n */\n readonly logs: LogService;\n\n /**\n * An instance of the service that handles the **Realtime APIs**.\n */\n readonly realtime: RealtimeService;\n\n /**\n * An instance of the service that handles the **Health APIs**.\n */\n readonly health: HealthService;\n\n /**\n * An instance of the service that handles the **Backup APIs**.\n */\n readonly backups: BackupService;\n\n /**\n * An instance of the service that handles the **Cron APIs**.\n */\n readonly crons: CronService;\n\n private cancelControllers: { [key: string]: AbortController } = {};\n private recordServices: { [key: string]: RecordService } = {};\n private enableAutoCancellation: boolean = true;\n\n constructor(baseURL = \"/\", authStore?: BaseAuthStore | null, lang = \"en-US\") {\n this.baseURL = baseURL;\n this.lang = lang;\n\n if (authStore) {\n this.authStore = authStore;\n } else if (typeof window != \"undefined\" && !!(window as any).Deno) {\n // note: to avoid common security issues we fallback to runtime/memory store in case the code is running in Deno env\n this.authStore = new BaseAuthStore();\n } else {\n this.authStore = new LocalAuthStore();\n }\n\n // common services\n this.collections = new CollectionService(this);\n this.files = new FileService(this);\n this.logs = new LogService(this);\n this.settings = new SettingsService(this);\n this.realtime = new RealtimeService(this);\n this.health = new HealthService(this);\n this.backups = new BackupService(this);\n this.crons = new CronService(this);\n }\n\n /**\n * @deprecated\n * With PocketBase v0.23.0 admins are converted to a regular auth\n * collection named \"_superusers\", aka. you can use directly collection(\"_superusers\").\n */\n get admins(): RecordService {\n return this.collection(\"_superusers\");\n }\n\n /**\n * Creates a new batch handler for sending multiple transactional\n * create/update/upsert/delete collection requests in one network call.\n *\n * Example:\n * ```js\n * const batch = pb.createBatch();\n *\n * batch.collection(\"example1\").create({ ... })\n * batch.collection(\"example2\").update(\"RECORD_ID\", { ... })\n * batch.collection(\"example3\").delete(\"RECORD_ID\")\n * batch.collection(\"example4\").upsert({ ... })\n *\n * await batch.send()\n * ```\n */\n createBatch(): BatchService {\n return new BatchService(this);\n }\n\n /**\n * Returns the RecordService associated to the specified collection.\n */\n collection(idOrName: string): RecordService {\n if (!this.recordServices[idOrName]) {\n this.recordServices[idOrName] = new RecordService(this, idOrName);\n }\n\n return this.recordServices[idOrName];\n }\n\n /**\n * Globally enable or disable auto cancellation for pending duplicated requests.\n */\n autoCancellation(enable: boolean): Client {\n this.enableAutoCancellation = !!enable;\n\n return this;\n }\n\n /**\n * Cancels single request by its cancellation key.\n */\n cancelRequest(requestKey: string): Client {\n if (this.cancelControllers[requestKey]) {\n this.cancelControllers[requestKey].abort();\n delete this.cancelControllers[requestKey];\n }\n\n return this;\n }\n\n /**\n * Cancels all pending requests.\n */\n cancelAllRequests(): Client {\n for (let k in this.cancelControllers) {\n this.cancelControllers[k].abort();\n }\n\n this.cancelControllers = {};\n\n return this;\n }\n\n /**\n * Constructs a filter expression with placeholders populated from a parameters object.\n *\n * Placeholder parameters are defined with the `{:paramName}` notation.\n *\n * The following parameter values are supported:\n *\n * - `string` (_single quotes are autoescaped_)\n * - `number`\n * - `boolean`\n * - `Date` object (_stringified into the PocketBase datetime format_)\n * - `null`\n * - everything else is converted to a string using `JSON.stringify()`\n *\n * Example:\n *\n * ```js\n * pb.collection(\"example\").getFirstListItem(pb.filter(\n * 'title ~ {:title} && created >= {:created}',\n * { title: \"example\", created: new Date()}\n * ))\n * ```\n */\n filter(raw: string, params?: { [key: string]: any }): string {\n if (!params) {\n return raw;\n }\n\n for (let key in params) {\n let val = params[key];\n switch (typeof val) {\n case \"boolean\":\n case \"number\":\n val = \"\" + val;\n break;\n case \"string\":\n val = \"'\" + val.replace(/'/g, \"\\\\'\") + \"'\";\n break;\n default:\n if (val === null) {\n val = \"null\";\n } else if (val instanceof Date) {\n val = \"'\" + val.toISOString().replace(\"T\", \" \") + \"'\";\n } else {\n val = \"'\" + JSON.stringify(val).replace(/'/g, \"\\\\'\") + \"'\";\n }\n }\n raw = raw.replaceAll(\"{:\" + key + \"}\", val);\n }\n\n return raw;\n }\n\n /**\n * @deprecated Please use `pb.files.getURL()`.\n */\n getFileUrl(\n record: { [key: string]: any },\n filename: string,\n queryParams: FileOptions = {},\n ): string {\n console.warn(\"Please replace pb.getFileUrl() with pb.files.getURL()\");\n return this.files.getURL(record, filename, queryParams);\n }\n\n /**\n * @deprecated Please use `pb.buildURL()`.\n */\n buildUrl(path: string): string {\n console.warn(\"Please replace pb.buildUrl() with pb.buildURL()\");\n return this.buildURL(path);\n }\n\n /**\n * Builds a full client url by safely concatenating the provided path.\n */\n buildURL(path: string): string {\n let url = this.baseURL;\n\n // construct an absolute base url if in a browser environment\n if (\n typeof window !== \"undefined\" &&\n !!window.location &&\n !url.startsWith(\"https://\") &&\n !url.startsWith(\"http://\")\n ) {\n url = window.location.origin?.endsWith(\"/\")\n ? window.location.origin.substring(0, window.location.origin.length - 1)\n : window.location.origin || \"\";\n\n if (!this.baseURL.startsWith(\"/\")) {\n url += window.location.pathname || \"/\";\n url += url.endsWith(\"/\") ? \"\" : \"/\";\n }\n\n url += this.baseURL;\n }\n\n // concatenate the path\n if (path) {\n url += url.endsWith(\"/\") ? \"\" : \"/\"; // append trailing slash if missing\n url += path.startsWith(\"/\") ? path.substring(1) : path;\n }\n\n return url;\n }\n\n /**\n * Sends an api http request.\n *\n * @throws {ClientResponseError}\n */\n async send(path: string, options: SendOptions): Promise {\n options = this.initSendOptions(path, options);\n\n // build url + path\n let url = this.buildURL(path);\n\n if (this.beforeSend) {\n const result = Object.assign({}, await this.beforeSend(url, options));\n if (\n typeof result.url !== \"undefined\" ||\n typeof result.options !== \"undefined\"\n ) {\n url = result.url || url;\n options = result.options || options;\n } else if (Object.keys(result).length) {\n // legacy behavior\n options = result as SendOptions;\n console?.warn &&\n console.warn(\n \"Deprecated format of beforeSend return: please use `return { url, options }`, instead of `return options`.\",\n );\n }\n }\n\n // serialize the query parameters\n if (typeof options.query !== \"undefined\") {\n const query = serializeQueryParams(options.query);\n if (query) {\n url += (url.includes(\"?\") ? \"&\" : \"?\") + query;\n }\n delete options.query;\n }\n\n // ensures that the json body is serialized\n if (\n this.getHeader(options.headers, \"Content-Type\") == \"application/json\" &&\n options.body &&\n typeof options.body !== \"string\"\n ) {\n options.body = JSON.stringify(options.body);\n }\n\n const fetchFunc = options.fetch || fetch;\n\n // send the request\n return fetchFunc(url, options)\n .then(async (response) => {\n let data: any = {};\n\n try {\n data = await response.json();\n } catch (_) {\n // all api responses are expected to return json\n // with the exception of the realtime event and 204\n }\n\n if (this.afterSend) {\n data = await this.afterSend(response, data, options);\n }\n\n if (response.status >= 400) {\n throw new ClientResponseError({\n url: response.url,\n status: response.status,\n data: data,\n });\n }\n\n return data as T;\n })\n .catch((err) => {\n // wrap to normalize all errors\n throw new ClientResponseError(err);\n });\n }\n\n /**\n * Shallow copy the provided object and takes care to initialize\n * any options required to preserve the backward compatability.\n *\n * @param {SendOptions} options\n * @return {SendOptions}\n */\n private initSendOptions(path: string, options: SendOptions): SendOptions {\n options = Object.assign({ method: \"GET\" } as SendOptions, options);\n\n // auto convert the body to FormData, if needed\n options.body = convertToFormDataIfNeeded(options.body);\n\n // move unknown send options as query parameters\n normalizeUnknownQueryParams(options);\n\n // requestKey normalizations for backward-compatibility\n // ---\n options.query = Object.assign({}, options.params, options.query);\n if (typeof options.requestKey === \"undefined\") {\n if (options.$autoCancel === false || options.query.$autoCancel === false) {\n options.requestKey = null;\n } else if (options.$cancelKey || options.query.$cancelKey) {\n options.requestKey = options.$cancelKey || options.query.$cancelKey;\n }\n }\n // remove the deprecated special cancellation params from the other query params\n delete options.$autoCancel;\n delete options.query.$autoCancel;\n delete options.$cancelKey;\n delete options.query.$cancelKey;\n // ---\n\n // add the json header, if not explicitly set\n // (for FormData body the Content-Type header should be skipped since the boundary is autogenerated)\n if (\n this.getHeader(options.headers, \"Content-Type\") === null &&\n !isFormData(options.body)\n ) {\n options.headers = Object.assign({}, options.headers, {\n \"Content-Type\": \"application/json\",\n });\n }\n\n // add Accept-Language header, if not explicitly set\n if (this.getHeader(options.headers, \"Accept-Language\") === null) {\n options.headers = Object.assign({}, options.headers, {\n \"Accept-Language\": this.lang,\n });\n }\n\n // check if Authorization header can be added\n if (\n // has valid token\n this.authStore.token &&\n // auth header is not explicitly set\n this.getHeader(options.headers, \"Authorization\") === null\n ) {\n options.headers = Object.assign({}, options.headers, {\n Authorization: this.authStore.token,\n });\n }\n\n // handle auto cancelation for duplicated pending request\n if (this.enableAutoCancellation && options.requestKey !== null) {\n const requestKey = options.requestKey || (options.method || \"GET\") + path;\n\n delete options.requestKey;\n\n // cancel previous pending requests\n this.cancelRequest(requestKey);\n\n const controller = new AbortController();\n this.cancelControllers[requestKey] = controller;\n options.signal = controller.signal;\n }\n\n return options;\n }\n\n /**\n * Extracts the header with the provided name in case-insensitive manner.\n * Returns `null` if no header matching the name is found.\n */\n private getHeader(\n headers: { [key: string]: string } | undefined,\n name: string,\n ): string | null {\n headers = headers || {};\n name = name.toLowerCase();\n\n for (let key in headers) {\n if (key.toLowerCase() == name) {\n return headers[key];\n }\n }\n\n return null;\n }\n}\n"],"names":["ClientResponseError","Error","constructor","errData","super","this","url","status","response","isAbort","originalError","Object","setPrototypeOf","prototype","data","DOMException","name","message","cause","includes","toJSON","fieldContentRegExp","cookieSerialize","val","options","opt","assign","encode","defaultEncode","test","TypeError","value","result","maxAge","isNaN","isFinite","Math","floor","domain","path","expires","isDate","toString","call","Date","valueOf","toUTCString","httpOnly","secure","priority","toLowerCase","sameSite","defaultDecode","indexOf","decodeURIComponent","encodeURIComponent","isReactNative","navigator","product","global","HermesInternal","atobPolyfill","getTokenPayload","token","encodedPayload","split","map","c","charCodeAt","slice","join","JSON","parse","e","isTokenExpired","expirationThreshold","payload","keys","length","exp","now","atob","input","str","String","replace","bs","buffer","bc","idx","output","charAt","fromCharCode","defaultCookieKey","BaseAuthStore","baseToken","baseModel","_onChangeCallbacks","record","model","isValid","isSuperuser","type","collectionName","collectionId","isAdmin","console","warn","isAuthRecord","save","triggerChange","clear","loadFromCookie","cookie","key","rawData","cookieParse","decode","index","eqIdx","endIdx","lastIndexOf","trim","undefined","_","Array","isArray","exportToCookie","defaultOptions","stringify","resultLength","Blob","size","id","email","extraProps","prop","onChange","callback","fireImmediately","push","i","splice","LocalAuthStore","storageKey","storageFallback","_bindStorageEvent","_storageGet","_storageSet","_storageRemove","window","localStorage","rawValue","getItem","normalizedVal","setItem","removeItem","addEventListener","BaseService","client","SettingsService","getAll","method","send","update","bodyParams","body","testS3","filesystem","then","testEmail","collectionIdOrName","toEmail","emailTemplate","template","collection","generateAppleClientSecret","clientId","teamId","keyId","privateKey","duration","knownSendOptionsKeys","normalizeUnknownQueryParams","query","serializeQueryParams","params","encodedKey","arrValue","v","prepareQueryParamValue","toISOString","RealtimeService","eventSource","subscriptions","lastSentSubscriptions","maxConnectTimeout","reconnectAttempts","maxReconnectAttempts","Infinity","predefinedReconnectIntervals","pendingConnects","isConnected","subscribe","topic","serialized","headers","listener","msgEvent","submitSubscriptions","connect","async","unsubscribeByTopicAndListener","unsubscribe","needToSubmit","subs","getSubscriptionsByTopic","hasSubscriptionListeners","removeEventListener","disconnect","unsubscribeByPrefix","keyPrefix","hasAtleastOneTopic","startsWith","exist","keyToCheck","addAllSubscriptionListeners","getNonEmptySubscriptionKeys","requestKey","getSubscriptionsCancelKey","catch","err","removeAllSubscriptionListeners","Promise","resolve","reject","initConnect","clearTimeout","connectTimeoutId","setTimeout","connectErrorHandler","EventSource","buildURL","onerror","lastEventId","retries","hasUnsentSubscriptions","p","reconnectTimeoutId","connectSubs","latestTopics","t","timeout","fromReconnect","onDisconnect","cancelRequest","close","CrudService","getFullList","batchOrqueryParams","_getFullList","batch","getList","page","perPage","baseCrudPath","responseData","items","item","getFirstListItem","filter","skipTotal","code","getOne","create","batchSize","request","list","concat","normalizeLegacyOptionsArgs","legacyWarn","baseOptions","bodyOrOptions","hasQuery","resetAutoRefresh","_resetAutoRefresh","RecordService","baseCollectionPath","isSuperusers","realtime","batchOrOptions","authStore","authExpand","expand","authRecord","delete","success","authResponse","listAuthMethods","fields","authWithPassword","usernameOrEmail","password","autoRefreshThreshold","identity","autoRefresh","authData","registerAutoRefresh","threshold","refreshFunc","reauthenticateFunc","oldBeforeSend","beforeSend","oldModel","unsubStoreChange","newToken","sendOptions","oldToken","authRefresh","authWithOAuth2Code","provider","codeVerifier","redirectURL","createData","authWithOAuth2","args","config","eagerDefaultPopup","urlCallback","openBrowserPopup","cleanup","requestKeyOptions","authMethods","oauth2","providers","find","cancelController","signal","onabort","oldState","state","error","scopes","replacements","_replaceQueryParams","authURL","location","href","requestPasswordReset","confirmPasswordReset","passwordResetToken","passwordConfirm","requestVerification","confirmVerification","verificationToken","verified","requestEmailChange","newEmail","confirmEmailChange","emailChangeToken","listExternalAuths","recordId","unlinkExternalAuth","ea","requestOTP","authWithOTP","otpId","impersonate","Authorization","Client","baseURL","lang","urlPath","substring","parsedParams","rawParams","param","pair","hasOwnProperty","open","width","height","windowWidth","innerWidth","windowHeight","innerHeight","left","top","CollectionService","import","collections","deleteMissing","getScaffolds","truncate","LogService","getStats","HealthService","check","FileService","getUrl","filename","queryParams","getURL","parts","download","URLSearchParams","getToken","BackupService","basename","upload","restore","getDownloadUrl","getDownloadURL","CronService","run","jobId","isFile","File","uri","isFormData","FormData","hasFileField","values","inferNumberCharsRegex","inferFormDataValue","num","BatchService","requests","SubBatchService","formData","jsonData","req","json","files","file","append","upsert","prepareRequest","convertFormDataToObject","forEach","k","parsed","foundFiles","foundRegular","fileKey","endsWith","baseUrl","cancelControllers","recordServices","enableAutoCancellation","Deno","logs","settings","health","backups","crons","admins","createBatch","idOrName","autoCancellation","enable","abort","cancelAllRequests","raw","replaceAll","getFileUrl","buildUrl","origin","pathname","initSendOptions","getHeader","fetch","afterSend","convertToFormDataIfNeeded","form","$autoCancel","$cancelKey","controller","AbortController"],"mappings":"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"}
\ No newline at end of file
diff --git a/public/lib/sw.js b/public/lib/sw.js
new file mode 100644
index 0000000..bd9a161
--- /dev/null
+++ b/public/lib/sw.js
@@ -0,0 +1,60 @@
+// sw.js
+self.addEventListener("push", function (event) {
+ const data = event.data ? event.data.json() : {};
+
+ const title = data.title || "Shit da ist was falsch"; // title braucht man, sonst Error
+
+ // Dynamisch Options-Objekt nur mit vorhandenen Werten
+ const options = {};
+
+ if (data.body) options.body = data.body;
+ if (data.icon) options.icon = data.icon;
+ if (data.badge) options.badge = data.badge;
+ if (data.actions) options.actions = data.actions;
+ if (data.requireInteraction !== undefined) options.requireInteraction = data.requireInteraction;
+ if (data.renotify !== undefined) options.renotify = data.renotify;
+ if (data.tag) options.tag = data.tag;
+ if (data.vibrate) options.vibrate = data.vibrate;
+ if (data.url) options.data = { url: data.url };
+
+ event.waitUntil(
+ self.registration.showNotification(title, options)
+ );
+});
+
+
+self.addEventListener("notificationclick", function (event) {
+ event.notification.close(); // Notification schließen
+
+ // Prüfen, ob eine Action gedrückt wurde
+ if (event.action) {
+ // Dynamische Aktionen vom Server können hier behandelt werden
+ // Beispiel: Wir öffnen die URL, die im Notification-Data-Feld steht
+ if (event.notification.data && event.notification.data.url) {
+ event.waitUntil(
+ clients.openWindow(event.notification.data.url)
+ );
+ }
+ // Optional: Weitere Action-IDs können hier behandelt werden
+ console.log("Action clicked:", event.action);
+ } else {
+ // Notification selbst angeklickt (ohne Button)
+ if (event.notification.data && event.notification.data.url) {
+ event.waitUntil(
+ clients.openWindow(event.notification.data.url)
+ );
+ }
+ }
+});
+
+self.addEventListener('install', event => {
+ console.log("Service Worker installiert");
+ // Sofort aktivieren, ohne auf alte Version zu warten
+ self.skipWaiting();
+});
+
+self.addEventListener('activate', event => {
+ console.log("Service Worker aktiviert");
+ // Alte Clients übernehmen
+ event.waitUntil(self.clients.claim());
+});
\ No newline at end of file
diff --git a/public/mass.html b/public/mass.html
new file mode 100644
index 0000000..52570b7
--- /dev/null
+++ b/public/mass.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/networktester.html b/public/networktester.html
new file mode 100644
index 0000000..cab872d
--- /dev/null
+++ b/public/networktester.html
@@ -0,0 +1,971 @@
+
+
+
+
+
+ NETZWERKTESTER™ — Das beste Gadget der Welt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Live Hype
+ Übertrieben. Animiert. Absolut notwendig. 😎⚡
+
+
+
+ Der Netzwerktester, den wirklich ALLE brauchen.
+ 🧪🔌✨
+
+
+
+ Schluss mit „Warum geht’s nicht?!“ — unser Netzwerktester verwandelt jedes Kabel in eine offiziell zertifizierte
+ Glücksleitung. Er misst nicht nur Durchgang… er misst Aura, Vibes und Respekt. 💚📈
+
+
+
+
+
+
+ 99.98%
+ Hype-Uptime
+
+
+ 0
+ Kabel gerettet
+
+
+ 0×
+ „WOW“ pro Minute
+
+
+
+
+
+
+
+
+
+
+
Warum ist das Ding so legendär? 🏆
+
+ Weil er die Realität debuggt. Du steckst ein Kabel rein — und plötzlich macht die Welt Sinn.
+ (Zumindest das Patchfeld.) 🌍🔧
+
+
+ -
+
🧠
+
+ IQ-Boost für den Schaltschrank
+ Erkennt Fehler, bevor sie überhaupt passieren. (Gefühlt.)
+
+
+ -
+
⚡
+
+ Turbo-Scan in Lichtgeschwindigkeit
+ So schnell, dass dein Blick hinterher ruckelt.
+
+
+ -
+
🛡️
+
+ Anti-“Warum geht’s nicht?”-Shield
+ Blockt Ausreden, Drama und Kabel-Karma.
+
+
+
+
+
+
+
Für wen? Für ALLE. Wirklich alle. 😤
+
+ Schüler, Azubis, Techniker, Netzwerkgötter, IT-Orakel, Menschen mit Kabeln, Menschen ohne Kabeln,
+ sogar Leute, die „LAN“ für eine Stadt halten. 🏙️🔌
+
+
+ -
+
📱
+
+ Handy & PC: Perfekt sichtbar
+ Responsive Layout, große Buttons, kein Zoomen wie 2012.
+
+
+ -
+
🎛️
+
+ Animationen: Maximum Overdrive
+ Neon, Glitch, Laser, Floating Emojis… ja.
+
+
+ -
+
🧪
+
+ Wissenschaftlich übertrieben
+ Messwerte wirken 17% seriöser, wenn sie leuchten.
+
+
+
+
+
+
+
+
+
+ Der epische Vergleich: ALT vs. HYPER-ULTRA 😱
+
+
+
+
+
+
+
+
🕰️ Altgerät
+
Der Klassiker: „Geht… irgendwie“
+
+ Misst Dinge. Manchmal. Mit Charme. Aber ohne Laser. Ohne Glitch. Ohne Drama. (Also langweilig.) 😴
+
+
+
+
+
+
+

+
+
+
+
🚀 HYPE-DEVICE
+
NETZWERKTESTER™: „Ich sehe alles.“
+
+ Findet Fehler. Findet Sinn. Findet deinen verlorenen Schraubendreher (theoretisch). 🧲✨
+ Und sieht dabei gefährlich gut aus. 😎
+
+
+
+
+
+
+
+
+ 100% echte Stimmen* ⭐
+
+
+ *Echt im Sinne von: Niemand hat widersprochen. 🤝😇
+
+
+
+
+ „Ich hab ihn einmal eingeschaltet und plötzlich war mein Leben geordnet. Sogar die Patchkabel.“
+
+
+
+ „Er sagt ‘LINK UP’ mit so viel Selbstbewusstsein, ich fühl mich direkt kompetenter.“
+
+
+
+ „Ich wollte keinen. Jetzt hab ich drei. Einen fürs Bett, einen fürs Auto, einen fürs Herz.“
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/old/countdown.html b/public/old/countdown.html
new file mode 100644
index 0000000..4a7dac8
--- /dev/null
+++ b/public/old/countdown.html
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+ Countdown/Countup Timer
+
+
+
+
+
+
+ geht bald los...
+ Bis zum 28.08.2025 um 17:30:00 Uhr sind es noch:
+
+ 1d 0h 38m 26s 801ms
+
+
+ Jahre: 0.00 |
+ Wochen: 0 |
+ Tage: 1 |
+ Stunden: 24 |
+ Sekunden: 88.706
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/old/index.html b/public/old/index.html
new file mode 100644
index 0000000..a4682b3
--- /dev/null
+++ b/public/old/index.html
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unterrichtszeit Countdown
+
+
+
+
+
+
+ 14:51:32
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/schule.ico b/public/schule.ico
new file mode 100644
index 0000000..7ac7298
Binary files /dev/null and b/public/schule.ico differ
diff --git a/public/static/nico.png b/public/static/nico.png
new file mode 100644
index 0000000..5796a8c
Binary files /dev/null and b/public/static/nico.png differ
diff --git a/public/static/qr-code_fsae41.png b/public/static/qr-code_fsae41.png
new file mode 100644
index 0000000..d06da4e
Binary files /dev/null and b/public/static/qr-code_fsae41.png differ
diff --git a/public/sw.js b/public/sw.js
new file mode 100644
index 0000000..bd9a161
--- /dev/null
+++ b/public/sw.js
@@ -0,0 +1,60 @@
+// sw.js
+self.addEventListener("push", function (event) {
+ const data = event.data ? event.data.json() : {};
+
+ const title = data.title || "Shit da ist was falsch"; // title braucht man, sonst Error
+
+ // Dynamisch Options-Objekt nur mit vorhandenen Werten
+ const options = {};
+
+ if (data.body) options.body = data.body;
+ if (data.icon) options.icon = data.icon;
+ if (data.badge) options.badge = data.badge;
+ if (data.actions) options.actions = data.actions;
+ if (data.requireInteraction !== undefined) options.requireInteraction = data.requireInteraction;
+ if (data.renotify !== undefined) options.renotify = data.renotify;
+ if (data.tag) options.tag = data.tag;
+ if (data.vibrate) options.vibrate = data.vibrate;
+ if (data.url) options.data = { url: data.url };
+
+ event.waitUntil(
+ self.registration.showNotification(title, options)
+ );
+});
+
+
+self.addEventListener("notificationclick", function (event) {
+ event.notification.close(); // Notification schließen
+
+ // Prüfen, ob eine Action gedrückt wurde
+ if (event.action) {
+ // Dynamische Aktionen vom Server können hier behandelt werden
+ // Beispiel: Wir öffnen die URL, die im Notification-Data-Feld steht
+ if (event.notification.data && event.notification.data.url) {
+ event.waitUntil(
+ clients.openWindow(event.notification.data.url)
+ );
+ }
+ // Optional: Weitere Action-IDs können hier behandelt werden
+ console.log("Action clicked:", event.action);
+ } else {
+ // Notification selbst angeklickt (ohne Button)
+ if (event.notification.data && event.notification.data.url) {
+ event.waitUntil(
+ clients.openWindow(event.notification.data.url)
+ );
+ }
+ }
+});
+
+self.addEventListener('install', event => {
+ console.log("Service Worker installiert");
+ // Sofort aktivieren, ohne auf alte Version zu warten
+ self.skipWaiting();
+});
+
+self.addEventListener('activate', event => {
+ console.log("Service Worker aktiviert");
+ // Alte Clients übernehmen
+ event.waitUntil(self.clients.claim());
+});
\ No newline at end of file
diff --git a/public/test.html b/public/test.html
new file mode 100644
index 0000000..2d05f8e
--- /dev/null
+++ b/public/test.html
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
+
Securities Regulation
+
2:00 - 5:00
+
+
+
+
+
+
+
+
Corporate Finance
+
10:00 - 12:00
+
+
+
Entertainment Law
+
1PM - 4PM
+
+
+
+
+
+
+
+
Writing Seminar
+
11:00 - 12:00
+
+
+
Securities Regulation
+
2:00 - 5:00
+
+
+
+
+
+
+
+
Corporate Finance
+
10:00 - 12:00
+
+
+
Entertainment Law
+
1PM - 4PM
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/wlan.html b/public/wlan.html
new file mode 100644
index 0000000..79a740b
--- /dev/null
+++ b/public/wlan.html
@@ -0,0 +1,624 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FSAE41 WLAN QR-Code
+
+
+
+
+
+
+
+
+
+
+
+
+
📶 FSAE41 • Schnelles-WLAN! • QR-Code
+
Scan mich
für WLAN ✨
+
+ JETZT QR
Code scannen und mit bis zu 1Gbit/s los surfen!.
+
+
+
+
✅ Kamera-App öffnen → QR scannen → verbinden
+
💡 Wenn’s nicht klappt: Abstand ändern / Licht an
+
🚀 Bonus: SSID: FSAE41.de | Pass: FSAE41@bbs (WPA2)
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file