This commit is contained in:
2026-04-26 22:02:24 +02:00
commit 73442783b7
1470 changed files with 43422 additions and 0 deletions

0
app/assets/BuLiTipp/style.css Executable file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,70 @@
<!--Dies ist das Sektionen Archiv für die Kontakt Sektion
Wenn sie wieder genutzt werden soll, z.B. zur Anmeldung zum Doppelkopf
kann dieser Code in die index.html kopiert und angepasst werden.
-->
<style>
.cid-u6k7q0BfGa {
padding-top: 6rem;
padding-bottom: 6rem;
background-color: transparent;
}
.cid-u6k7q0BfGa .mbr-overlay {
background-color: #ffffff;
opacity: 0.4;
}
.cid-u6k7q0BfGa form .mbr-section-btn {
text-align: center;
width: 100%;
}
.cid-u6k7q0BfGa form .mbr-section-btn .btn {
display: inline-flex;
}
@media (max-width: 991px) {
.cid-u6k7q0BfGa form .mbr-section-btn .btn {
width: 100%;
}
}
.cid-u6k7q0BfGa .content-head {
max-width: 800px;
}
</style>
<section class="form5 cid-u6k7q0BfGa" id="contact-form-2-u6k7q0BfGa">
<div class="container">
<div class="row justify-content-center">
<div class="col-12 content-head">
<div class="mbr-section-head mb-5">
<h3 class="mbr-section-title mbr-fonts-style align-center mb-0 display-2">
<strong>Kontaktiere uns</strong>
</h3>
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-lg-8 mx-auto mbr-form" data-form-type="formoid">
<form action="https://mobirise.eu/" method="POST" class="mbr-form form-with-styler" data-form-title="Form Name"><input type="hidden" name="email" data-form-email="true" value="">
<div class="row">
<div hidden="hidden" data-form-alert="" class="alert alert-success col-12">Thanks for filling out the form!</div>
<div hidden="hidden" data-form-alert-danger="" class="alert alert-danger col-12">
Oops...! some problem!
</div>
</div>
<div class="dragArea row">
<div class="col-md col-sm-12 form-group mb-3" data-for="name">
<input type="text" name="name" placeholder="Name" data-form-field="name" class="form-control" value="" id="name-form02-0">
</div>
<div class="col-md col-sm-12 form-group mb-3" data-for="email">
<input type="email" name="email" placeholder="E-Mail" data-form-field="email" class="form-control" value="" id="email-form02-0">
</div>
<div class="col-12 form-group mb-3" data-for="textarea">
<textarea name="textarea" placeholder="Nachricht" data-form-field="textarea" class="form-control" id="textarea-form02-0"></textarea>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 align-center mbr-section-btn"><button type="submit" class="btn btn-primary display-7">Absenden</button></div>
</div>
</form>
</div>
</div>
</div>
</section>

4074
app/assets/animatecss/animate.css vendored Executable file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

46
app/assets/bildschau/style.sass Executable file
View File

@@ -0,0 +1,46 @@
.flex-card-wrapper
width: 90rem
max-width: 150rem
height: 40rem
max-height: 50rem
display: flex
flex-direction: row
justify-content: center
align-items: stretch
transition: 200ms all ease-in-out
.flex-card-container
padding: 0 0 0 0
height: 100%
border-radius: 20px
cursor: pointer
overflow: hidden
position: relative
background-position: center center
background-size: cover
background-repeat: no-repeat
margin: 0 0 0 0
display: none
transition: 200ms all ease-in-out
&:last-child
margin: 0 0 0 0
&.active
width: 80%
overflow: auto
margin-left: 1%
margin-right: 1%
display: block
background-size: contain
&.unactive
width: 5%
display: block
.main
flex-direction: column
display: flex
justify-content: center
align-items: center

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
/*!
* Bootstrap Reboot v5.0.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}

6
app/assets/bootstrap/css/bootstrap.min.css vendored Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

89
app/assets/bulitipp.js Executable file
View File

@@ -0,0 +1,89 @@
function ts(user, callback, spieltag) {
$.ajax("punkteRechnen.php", {
method: "GET",
success: callback,
data: { name: user, spieltag: spieltag },
async: true
});
}
$(document).ready(() => {
const table = document.querySelector("#rangliste-sektion table");
var rows = table.querySelectorAll("tr");
rows.forEach((row, i, array) => {
if (i == 0) return;
var user = row
.querySelectorAll("td")[1]
.querySelector(".openBtn").innerHTML;
var callback = (response) => {
row.querySelectorAll("td")[2].innerHTML = response;
document.getElementById("uebersicht-user-" + user).querySelector(".openBtn").innerHTML = response;
sortTable();
table.querySelectorAll("tr").forEach((row, i, array) => {
if (i == 0) return;
row.querySelectorAll("td")[0].innerHTML = i;
});
};
ts(user, callback);
});
function sortTable() {
var switching, i, x, y, shouldSwitch;
switching = true;
/*Make a loop that will continue until
no switching has been done:*/
while (switching) {
//start by saying: no switching is done:
switching = false;
rows = table.rows;
/*Loop through all table rows (except the
first, which contains table headers):*/
for (i = 1; i < rows.length - 1; i++) {
//start by saying there should be no switching:
shouldSwitch = false;
/*Get the two elements you want to compare,
one from current row and one from the next:*/
x = rows[i].getElementsByTagName("TD")[2];
y = rows[i + 1].getElementsByTagName("TD")[2];
//check if the two rows should switch place:
if (parseInt(x.innerHTML) < parseInt(y.innerHTML)) {
//if so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
if (shouldSwitch) {
/*If a switch has been marked, make the switch
and mark that a switch has been done:*/
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
}
}
}
});
document.querySelector("#load-table-btn").addEventListener("click",(ev) => {
ev.target.parentElement.style.display="none";
document.querySelector(".buli-table").classList.add("scroll-x");
const table = document.querySelector("#buli-table table");
let tds=[];
var rows = table.querySelectorAll("tr");
rows.forEach((row, i, array) => {
if (i == 0) return;
var spieltag = row.querySelectorAll("td")[0].innerHTML;
if (spieltag == "Summe") spieltag = undefined;
row.querySelectorAll("td").forEach((td, j, array) => {
if (j == 0) return;
var user = rows[0].querySelectorAll("td")[j].innerHTML;
tds.push({"td":td,"user":user,"spieltag":spieltag});
});
});
let callback=(tds,i,limit)=>{
ts(tds[i].user,(response)=>{
tds[i].td.innerHTML=response;
if(i<limit) callback(tds, i+1, limit);
},tds[i].spieltag);
}
callback(tds,0,tds.length-1);
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

368
app/assets/css/bulitipp2.css Executable file
View File

@@ -0,0 +1,368 @@
.buli-container {
width: 100%; /* Passe die Breite an deine Bedürfnisse an */
margin: 0 auto; /* Zentriert den Container */
padding: 20px;
}
form {
display: flex;
flex-direction: column;
}
input[type="number"],
input[type="text"],
input[type="password"] {
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
input[type="submit"] {
background-color: #4CAF50; /* Grün für einen positiven Button */
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s ease;
}
input[type="submit"]:hover, .green-button:hover {
background-color: #3e8e41;
transform: scale(1.01);
}
.red-button {
background-color: #f44336; /* Rot für einen negativen Button */
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s ease;
width: 100%;
}
.red-button:hover {
background-color: #d32f2f;
transform: scale(1.01);
}
.scroll-x{
overflow-x: scroll;
}
/* Paarungsergebnisse */
table {
border-collapse: collapse;
width: 60%;
margin: 0 auto;
}
tr, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
tr:first-child{
background-color: #fafafa;
}
tr:hover{
background-color: #f2f2f2;
}
.TippsAnzeigen tr:hover, .TippsAnzeigen tr:first-child {
background-color: unset;
}
.buli-results a:hover {
text-decoration: underline;
}
.buli-results h2 {
text-align: center;
}
.buli-results span.team {
width: 40%;
display: flex;
flex-direction: row;
justify-content: baseline;
align-items: center;
}
.buli-results{
display: block;
}
.teams{
display: flex;
font-size: 17px;
justify-content: center;
align-items: center;
flex-direction: row;
float: left;
width: 100%;
max-width: 500px;
}
.buli-results span.team:first-child{
text-align: right;
}
.buli-results span.team:last-child{
text-align: left;
}
.buli-results span.team img {
width: 30px;
height: 30px;
border-radius: 50%; /* Macht das Bild rund */
}
.buli-results span.team p{
width: 175px;
height: 30px;
display: flex;
justify-content: center;
align-items: center;
vertical-align: middle;
margin-bottom: 0;
text-decoration: underline;
}
span.vs{
width: 20px;
margin-left: 10px;
margin-right: 10px;
height: 3px;
background-color: black;
}
h2 {
text-align: center;
}
#spieltagText {
margin: 0px;
padding: 0px;
padding-bottom: 5px;
text-align: left;
}
/* TippenEintragen */
.tippenEintragen form {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.paarung {
margin: 10px 0;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.tippenEintragen span.team-name {
width: 30%;
}
.tippenEintragen input[type="number"] {
/* max-width: 150px; */
width: 50px;
border: 1px solid #ccc;
border-radius: 5px;
text-align: center;
}
@media (max-width: 512px){
.paarung img{
display: none;
}
}
/* Submit-Button */
.tippenEintragen input[type="submit"], .green-button {
background-color: #4CAF50;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
width: 100%;
transition: all 0.3s ease-in-out;
}
.tippenEintragen input[type="submit"]:hover, .green-button:hover {
background-color: #3e8e41;
transform: scale(1.01);
}
/* Meldung für nicht vorbereiteten Spieltag */
.tippenEintragen h1 {
color: red;
text-align: center;
}
/* Spieler hat bereits getippt Tabelle */
.TippsAnzeigen {
text-align: center;
font-family: "Roboto", sans-serif;
}
.TippsAnzeigen table {
border-collapse: collapse;
width: 80%;
margin: 0 auto;
}
.TippsAnzeigen th, .TippsAnzeigen td {
border: 1px solid #ddd;
padding: 8px;
text-align: center;
}
/* Alternierende Zeilen für bessere Lesbarkeit */
.TippsAnzeigen tr:nth-child(even) {
background-color: #f2f2f2;
}
#load-table-btn{
position: absolute;
}
.detailansichtSchriftart {
font-family: "Roboto", sans-serif;
}
.buli-table{
position: relative;
}
#load-table-btn-container{
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
background: white;
opacity: 0.5;
}
#load-table-btn{
color: white;
border-radius: 5px;
background-color: green;
opacity: 1;
}
.as-link{
color: #00f;
text-decoration: underline;
}
.roboto-thin {
font-family: "Roboto", sans-serif;
font-weight: 100;
font-style: normal;
}
.roboto-light {
font-family: "Roboto", sans-serif;
font-weight: 300;
font-style: normal;
}
.roboto-regular {
font-family: "Roboto", sans-serif;
font-weight: 400;
font-style: normal;
}
.roboto-medium {
font-family: "Roboto", sans-serif;
font-weight: 500;
font-style: normal;
}
.roboto-bold {
font-family: "Roboto", sans-serif;
font-weight: 700;
font-style: normal;
}
.roboto-black {
font-family: "Roboto", sans-serif;
font-weight: 900;
font-style: normal;
}
.roboto-thin-italic {
font-family: "Roboto", sans-serif;
font-weight: 100;
font-style: italic;
}
.roboto-light-italic {
font-family: "Roboto", sans-serif;
font-weight: 300;
font-style: italic;
}
.roboto-regular-italic {
font-family: "Roboto", sans-serif;
font-weight: 400;
font-style: italic;
}
.roboto-medium-italic {
font-family: "Roboto", sans-serif;
font-weight: 500;
font-style: italic;
}
.roboto-bold-italic {
font-family: "Roboto", sans-serif;
font-weight: 700;
font-style: italic;
}
.roboto-black-italic {
font-family: "Roboto", sans-serif;
font-weight: 900;
font-style: italic;
}

147
app/assets/css/chatbox.css Executable file
View File

@@ -0,0 +1,147 @@
@import url('https://fonts.googleapis.com/css2?family=Permanent+Marker&display=swap');
/* Basis-Styling */
#chatbox-button {
position: fixed;
bottom: 20px;
right: 20px;
cursor: pointer;
background-color: #996633; /* Braun #996633 */
color: white; /* Weiße Textfarbe */
border: none; /* Keine Umrandung */
border-radius: 50%; /* Runde Form */
padding: 20px;
font-size: 20px;
transition: background-color 0.3s ease; /* Hover-Effekt */
}
#chatbox-button:hover {
background-color: #774422; /* Dunkleres Braun beim Hovern */
}
#modalbox {
position: fixed; /* Festlegen der Position */
top: 50%; /* Positionierung vertikal mittig */
left: 50%; /* Positionierung horizontal mittig */
transform: translate(-50%, -50%); /* Verschieben von der Mitte */
width: 550px; /* Breite der Modalbox */
max-width: 90%; /* Maximale Breite für Responsiveness */
background-color: white;
padding: 20px;
border-radius: 5px;
box-shadow: 0 4px 8px rgba(0,0,0,0.5);
z-index: 100;
}
#modalbox-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
#modalbox-title {
font-weight: bold;
font-family: "Permanent Marker", cursive;
}
#close-button {
cursor: pointer;
font-size: 40pt;
color: red;
}
#chat-messages {
height: 300px; /* Höhe des Nachrichtenbereichs */
overflow-y: scroll; /* Scrollfunktion aktivieren */
padding: 10px;
}
.message {
margin-bottom: 10px;
padding: 10px;
border-radius: 5px;
position: relative;
}
.message-sender {
font-weight: bold;
}
.message-content {
margin-top: 2px;
}
.own-message {
background-color: #f0f0f0;
align-self: flex-end; /* Eigene Nachrichten rechtsbündig */
}
.other-message {
background-color: #e0e0e0;
}
#chat-input {
display: flex;
flex-direction: column; /* Anordnung in Spalten */
}
#name-input{
margin-top: 10px;
}
#name-input, #email-input {
flex-grow: 1; /* Nameingabefeld über die gesamte Breite */
padding: 10px;
border: 1px solid #ccc;
border-radius: 3px;
margin-top: 3px;
margin-bottom: 3px;
}
#message-input {
padding: 10px;
border: 1px solid #ccc;
border-radius: 3px;
margin-bottom: 5px; /* Abstand zwischen den Eingabefeldern */
}
#send-button {
background-color: #4CAF50; /* Grün */
color: white;
padding: 10px;
border: none;
border-radius: 3px;
cursor: pointer;
width: auto; /* Automatische Breite */
}
@media (max-width: 768px) {
#chat-input {
flex-direction: column; /* Anordnung in Spalten */
}
#name-input,
#message-input {
margin-bottom: 1px; /* Abstand zwischen den Eingabefeldern */
}
#send-button {
width: 100%; /* Volle Breite des Containers */
margin-top: 1px; /* Abstand zum vorherigen Element */
}
}

1311
app/assets/css/index.css Executable file

File diff suppressed because it is too large Load Diff

273
app/assets/dropdown/css/style.css Executable file
View File

@@ -0,0 +1,273 @@
.navbar-dropdown {
left: 0;
padding: 0;
position: absolute;
right: 0;
top: 0;
transition: all 0.45s ease;
z-index: 200;
background: #282828; }
.navbar-dropdown .navbar-logo {
margin-right: 0.8rem;
transition: margin 0.3s ease-in-out;
vertical-align: middle; }
.navbar-dropdown .navbar-logo img {
height: 3.125rem;
transition: all 0.3s ease-in-out; }
.navbar-dropdown .navbar-logo.mbr-iconfont {
font-size: 3.125rem;
line-height: 3.125rem; }
.navbar-dropdown .navbar-caption {
font-weight: 700;
white-space: normal;
vertical-align: -4px;
line-height: 3.125rem !important; }
.navbar-dropdown .navbar-caption, .navbar-dropdown .navbar-caption:hover {
color: inherit;
text-decoration: none; }
.navbar-dropdown .mbr-iconfont + .navbar-caption {
vertical-align: -1px; }
.navbar-dropdown.navbar-fixed-top {
position: fixed; }
.navbar-dropdown .navbar-brand span {
vertical-align: -4px; }
.navbar-dropdown.bg-color.transparent {
background: none; }
.navbar-dropdown.navbar-short .navbar-brand {
padding: 0.625rem 0; }
.navbar-dropdown.navbar-short .navbar-brand span {
vertical-align: -1px; }
.navbar-dropdown.navbar-short .navbar-caption {
line-height: 2.375rem !important;
vertical-align: -2px; }
.navbar-dropdown.navbar-short .navbar-logo {
margin-right: 0.5rem; }
.navbar-dropdown.navbar-short .navbar-logo img {
height: 2.375rem; }
.navbar-dropdown.navbar-short .navbar-logo.mbr-iconfont {
font-size: 2.375rem;
line-height: 2.375rem; }
.navbar-dropdown.navbar-short .mbr-table-cell {
height: 3.625rem; }
.navbar-dropdown .navbar-close {
left: 0.6875rem;
position: fixed;
top: 0.75rem;
z-index: 200; }
.navbar-dropdown .hamburger-icon {
content: "";
display: inline-block;
vertical-align: middle;
width: 16px;
-webkit-box-shadow: 0 -6px 0 1px #282828,0 0 0 1px #282828,0 6px 0 1px #282828;
-moz-box-shadow: 0 -6px 0 1px #282828,0 0 0 1px #282828,0 6px 0 1px #282828;
box-shadow: 0 -6px 0 1px #282828,0 0 0 1px #282828,0 6px 0 1px #282828; }
.dropdown-menu .dropdown-toggle[data-toggle="dropdown-submenu"]::after {
border-bottom: 0.35em solid transparent;
border-left: 0.35em solid;
border-right: 0;
border-top: 0.35em solid transparent;
margin-left: 0.3rem; }
.dropdown-menu .dropdown-item:focus {
outline: 0; }
.nav-dropdown {
font-size: 0.75rem;
font-weight: 500;
height: auto !important; }
.nav-dropdown .nav-btn {
padding-left: 1rem; }
.nav-dropdown .link {
margin: .667em 1.667em;
font-weight: 500;
padding: 0;
transition: color .2s ease-in-out; }
.nav-dropdown .link.dropdown-toggle {
margin-right: 2.583em; }
.nav-dropdown .link.dropdown-toggle::after {
margin-left: .25rem;
border-top: 0.35em solid;
border-right: 0.35em solid transparent;
border-left: 0.35em solid transparent;
border-bottom: 0; }
.nav-dropdown .link.dropdown-toggle[aria-expanded="true"] {
margin: 0;
padding: 0.667em 3.263em 0.667em 1.667em; }
.nav-dropdown .link::after,
.nav-dropdown .dropdown-item::after {
color: inherit; }
.nav-dropdown .btn {
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0;
margin-bottom: 0;
padding-left: 1.25rem;
padding-right: 1.25rem; }
.nav-dropdown .dropdown-menu {
border-radius: 0;
border: 0;
left: 0;
margin: 0;
padding-bottom: 1.25rem;
padding-top: 1.25rem;
position: relative; }
.nav-dropdown .dropdown-submenu {
margin-left: 0.125rem;
top: 0; }
.nav-dropdown .dropdown-item {
font-weight: 500;
line-height: 2;
padding: 0.3846em 4.615em 0.3846em 1.5385em;
position: relative;
transition: color .2s ease-in-out, background-color .2s ease-in-out; }
.nav-dropdown .dropdown-item::after {
margin-top: -0.3077em;
position: absolute;
right: 1.1538em;
top: 50%; }
.nav-dropdown .dropdown-item:focus, .nav-dropdown .dropdown-item:hover {
background: none; }
@media (max-width: 767px) {
.nav-dropdown.navbar-toggleable-sm {
bottom: 0;
display: none;
left: 0;
overflow-x: hidden;
position: fixed;
top: 0;
transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
width: 18.75rem;
z-index: 200; } }
.nav-dropdown.navbar-toggleable-xl {
bottom: 0;
display: none;
left: 0;
overflow-x: hidden;
position: fixed;
top: 0;
transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
width: 18.75rem;
z-index: 200; }
.nav-dropdown-sm {
display: block !important;
overflow-x: hidden;
overflow: auto;
padding-top: 3.875rem; }
.nav-dropdown-sm::after {
content: "";
display: block;
height: 3rem;
width: 100%; }
.nav-dropdown-sm.collapse.in ~ .navbar-close {
display: block !important; }
.nav-dropdown-sm.collapsing, .nav-dropdown-sm.collapse.in {
transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transition: all 0.25s ease-out;
-webkit-transition: all 0.25s ease-out;
background: #282828; }
.nav-dropdown-sm.collapsing[aria-expanded="false"] {
transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%); }
.nav-dropdown-sm .nav-item {
display: block;
margin-left: 0 !important;
padding-left: 0; }
.nav-dropdown-sm .link,
.nav-dropdown-sm .dropdown-item {
border-top: 1px dotted rgba(255, 255, 255, 0.1);
font-size: 0.8125rem;
line-height: 1.6;
margin: 0 !important;
padding: 0.875rem 2.4rem 0.875rem 1.5625rem !important;
position: relative;
white-space: normal; }
.nav-dropdown-sm .link:focus, .nav-dropdown-sm .link:hover,
.nav-dropdown-sm .dropdown-item:focus,
.nav-dropdown-sm .dropdown-item:hover {
background: rgba(0, 0, 0, 0.2) !important;
color: #c0a375; }
.nav-dropdown-sm .nav-btn {
position: relative;
padding: 1.5625rem 1.5625rem 0 1.5625rem; }
.nav-dropdown-sm .nav-btn::before {
border-top: 1px dotted rgba(255, 255, 255, 0.1);
content: "";
left: 0;
position: absolute;
top: 0;
width: 100%; }
.nav-dropdown-sm .nav-btn + .nav-btn {
padding-top: 0.625rem; }
.nav-dropdown-sm .nav-btn + .nav-btn::before {
display: none; }
.nav-dropdown-sm .btn {
padding: 0.625rem 0; }
.nav-dropdown-sm .dropdown-toggle[data-toggle="dropdown-submenu"]::after {
margin-left: .25rem;
border-top: 0.35em solid;
border-right: 0.35em solid transparent;
border-left: 0.35em solid transparent;
border-bottom: 0; }
.nav-dropdown-sm .dropdown-toggle[data-toggle="dropdown-submenu"][aria-expanded="true"]::after {
border-top: 0;
border-right: 0.35em solid transparent;
border-left: 0.35em solid transparent;
border-bottom: 0.35em solid; }
.nav-dropdown-sm .dropdown-menu {
margin: 0;
padding: 0;
position: relative;
top: 0;
left: 0;
width: 100%;
border: 0;
float: none;
border-radius: 0;
background: none; }
.nav-dropdown-sm .dropdown-submenu {
left: 100%;
margin-left: 0.125rem;
margin-top: -1.25rem;
top: 0; }
.navbar-toggleable-sm .nav-dropdown .dropdown-menu {
position: absolute; }
.navbar-toggleable-sm .nav-dropdown .dropdown-submenu {
left: 100%;
margin-left: 0.125rem;
margin-top: -1.25rem;
top: 0; }
.navbar-toggleable-sm.opened .nav-dropdown .dropdown-menu {
position: relative; }
.navbar-toggleable-sm.opened .nav-dropdown .dropdown-submenu {
left: 0;
margin-left: 00rem;
margin-top: 0rem;
top: 0; }
.is-builder .nav-dropdown.collapsing {
transition: none !important; }
.engine {
position: absolute;
text-indent: -2400px;
text-align: center;
padding: 0;
top: 0;
left: -2400px;
}

View File

@@ -0,0 +1,302 @@
// Variablen
$navbar-bg-color: #282828;
$navbar-transition: all 0.45s ease;
$navbar-logo-height: 3.125rem;
$navbar-logo-font-size: 3.125rem;
$navbar-caption-line-height: 3.125rem;
$dropdown-item-padding: 0.3846em 4.615em 0.3846em 1.5385em;
$dropdown-item-hover-bg: rgba(0, 0, 0, 0.2);
$dropdown-item-hover-color: #c0a375;
// Neue Variablen
$background: #FCFCF8;
$dominant-color: #DDE5B6;
$primary-color: #A98467;
$secondary-color: #6C584C;
$success-color: #23BA74;
$danger-color: #BC2130;
$warning-color: #DDA600;
$info-color: #0BB0D2;
$background-text: #000000;
$dominant-text: #000000;
$primary-text: #000000;
$secondary-text: #FFFFFF;
$success-text: #FFFFFF;
$danger-text: #FFFFFF;
$warning-text: #000000;
$info-text: #FFFFFF;
.navbar-dropdown {
left: 0;
padding: 0;
position: absolute;
right: 0;
top: 0;
transition: $navbar-transition;
z-index: 200;
background: $navbar-bg-color; }
.navbar-dropdown .navbar-logo {
margin-right: 0.8rem;
transition: margin 0.3s ease-in-out;
vertical-align: middle; }
.navbar-dropdown .navbar-logo img {
height: $navbar-logo-height;
transition: all 0.3s ease-in-out; }
.navbar-dropdown .navbar-logo.mbr-iconfont {
font-size: $navbar-logo-font-size;
line-height: $navbar-logo-font-size; }
.navbar-dropdown .navbar-caption {
font-weight: 700;
white-space: normal;
vertical-align: -4px;
line-height: $navbar-caption-line-height !important; }
.navbar-dropdown .navbar-caption, .navbar-dropdown .navbar-caption:hover {
color: inherit;
text-decoration: none; }
.navbar-dropdown .mbr-iconfont + .navbar-caption {
vertical-align: -1px; }
.navbar-dropdown.navbar-fixed-top {
position: fixed; }
.navbar-dropdown .navbar-brand span {
vertical-align: -4px; }
.navbar-dropdown.bg-color.transparent {
background: none; }
.navbar-dropdown.navbar-short .navbar-brand {
padding: 0.625rem 0; }
.navbar-dropdown.navbar-short .navbar-brand span {
vertical-align: -1px; }
.navbar-dropdown.navbar-short .navbar-caption {
line-height: 2.375rem !important;
vertical-align: -2px; }
.navbar-dropdown.navbar-short .navbar-logo {
margin-right: 0.5rem; }
.navbar-dropdown.navbar-short .navbar-logo img {
height: 2.375rem; }
.navbar-dropdown.navbar-short .navbar-logo.mbr-iconfont {
font-size: 2.375rem;
line-height: 2.375rem; }
.navbar-dropdown.navbar-short .mbr-table-cell {
height: 3.625rem; }
.navbar-dropdown .navbar-close {
left: 0.6875rem;
position: fixed;
top: 0.75rem;
z-index: 200; }
.navbar-dropdown .hamburger-icon {
content: "";
display: inline-block;
vertical-align: middle;
width: 16px;
-webkit-box-shadow: 0 -6px 0 1px $navbar-bg-color,0 0 0 1px $navbar-bg-color,0 6px 0 1px $navbar-bg-color;
-moz-box-shadow: 0 -6px 0 1px $navbar-bg-color,0 0 0 1px $navbar-bg-color,0 6px 0 1px $navbar-bg-color;
box-shadow: 0 -6px 0 1px $navbar-bg-color,0 0 0 1px $navbar-bg-color,0 6px 0 1px $navbar-bg-color; }
.dropdown-menu .dropdown-toggle[data-toggle="dropdown-submenu"]::after {
border-bottom: 0.35em solid transparent;
border-left: 0.35em solid;
border-right: 0;
border-top: 0.35em solid transparent;
margin-left: 0.3rem; }
.dropdown-menu .dropdown-item:focus {
outline: 0; }
.nav-dropdown {
font-size: 0.75rem;
font-weight: 500;
height: auto !important; }
.nav-dropdown .nav-btn {
padding-left: 1rem; }
.nav-dropdown .link {
margin: .667em 1.667em;
font-weight: 500;
padding: 0;
transition: color .2s ease-in-out; }
.nav-dropdown .link.dropdown-toggle {
margin-right: 2.583em; }
.nav-dropdown .link.dropdown-toggle::after {
margin-left: .25rem;
border-top: 0.35em solid;
border-right: 0.35em solid transparent;
border-left: 0.35em solid transparent;
border-bottom: 0; }
.nav-dropdown .link.dropdown-toggle[aria-expanded="true"] {
margin: 0;
padding: 0.667em 3.263em 0.667em 1.667em; }
.nav-dropdown .link::after,
.nav-dropdown .dropdown-item::after {
color: inherit; }
.nav-dropdown .btn {
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0;
margin-bottom: 0;
padding-left: 1.25rem;
padding-right: 1.25rem; }
.nav-dropdown .dropdown-menu {
border-radius: 0;
border: 0;
left: 0;
margin: 0;
padding-bottom: 1.25rem;
padding-top: 1.25rem;
position: relative; }
.nav-dropdown .dropdown-submenu {
margin-left: 0.125rem;
top: 0; }
.nav-dropdown .dropdown-item {
font-weight: 500;
line-height: 2;
padding: $dropdown-item-padding;
position: relative;
transition: color .2s ease-in-out, background-color .2s ease-in-out; }
.nav-dropdown .dropdown-item::after {
margin-top: -0.3077em;
position: absolute;
right: 1.1538em;
top: 50%; }
.nav-dropdown .dropdown-item:focus, .nav-dropdown .dropdown-item:hover {
background: $dropdown-item-hover-bg !important;
color: $dropdown-item-hover-color; }
@media (max-width: 767px) {
.nav-dropdown.navbar-toggleable-sm {
bottom: 0;
display: none;
left: 0;
overflow-x: hidden;
position: fixed;
top: 0;
transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
width: 18.75rem;
z-index: 200; } }
.nav-dropdown.navbar-toggleable-xl {
bottom: 0;
display: none;
left: 0;
overflow-x: hidden;
position: fixed;
top: 0;
transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
width: 18.75rem;
z-index: 200; }
.nav-dropdown-sm {
display: block !important;
overflow-x: hidden;
overflow: auto;
padding-top: 3.875rem; }
.nav-dropdown-sm::after {
content: "";
display: block;
height: 3rem;
width: 100%; }
.nav-dropdown-sm.collapse.in ~ .navbar-close {
display: block !important; }
.nav-dropdown-sm.collapsing, .nav-dropdown-sm.collapse.in {
transform: translateX(0);
-ms-transform: translateX(0);
-webkit-transform: translateX(0);
transition: all 0.25s ease-out;
-webkit-transition: all 0.25s ease-out;
background: $navbar-bg-color; }
.nav-dropdown-sm.collapsing[aria-expanded="false"] {
transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%); }
.nav-dropdown-sm .nav-item {
display: block;
margin-left: 0 !important;
padding-left: 0; }
.nav-dropdown-sm .link,
.nav-dropdown-sm .dropdown-item {
border-top: 1px dotted rgba(255, 255, 255, 0.1);
font-size: 0.8125rem;
line-height: 1.6;
margin: 0 !important;
padding: 0.875rem 2.4rem 0.875rem 1.5625rem !important;
position: relative;
white-space: normal; }
.nav-dropdown-sm .link:focus, .nav-dropdown-sm .link:hover,
.nav-dropdown-sm .dropdown-item:focus,
.nav-dropdown-sm .dropdown-item:hover {
background: $dropdown-item-hover-bg !important;
color: $dropdown-item-hover-color; }
.nav-dropdown-sm .nav-btn {
position: relative;
padding: 1.5625rem 1.5625rem 0 1.5625rem; }
.nav-dropdown-sm .nav-btn::before {
border-top: 1px dotted rgba(255, 255, 255, 0.1);
content: "";
left: 0;
position: absolute;
top: 0;
width: 100%; }
.nav-dropdown-sm .nav-btn + .nav-btn {
padding-top: 0.625rem; }
.nav-dropdown-sm .nav-btn + .nav-btn::before {
display: none; }
.nav-dropdown-sm .btn {
padding: 0.625rem 0; }
.nav-dropdown-sm .dropdown-toggle[data-toggle="dropdown-submenu"]::after {
margin-left: .25rem;
border-top: 0.35em solid;
border-right: 0.35em solid transparent;
border-left: 0.35em solid transparent;
border-bottom: 0; }
.nav-dropdown-sm .dropdown-toggle[data-toggle="dropdown-submenu"][aria-expanded="true"]::after {
border-top: 0;
border-right: 0.35em solid transparent;
border-left: 0.35em solid transparent;
border-bottom: 0.35em solid; }
.nav-dropdown-sm .dropdown-menu {
margin: 0;
padding: 0;
position: relative;
top: 0;
left: 0;
width: 100%;
border: 0;
float: none;
border-radius: 0;
background: none; }
.nav-dropdown-sm .dropdown-submenu {
left: 100%;
margin-left: 0.125rem;
margin-top: -1.25rem;
top: 0; }
.navbar-toggleable-sm .nav-dropdown .dropdown-menu {
position: absolute; }
.navbar-toggleable-sm .nav-dropdown .dropdown-submenu {
left: 100%;
margin-left: 0.125rem;
margin-top: -1.25rem;
top: 0; }
.navbar-toggleable-sm.opened .nav-dropdown .dropdown-menu {
position: relative; }
.navbar-toggleable-sm.opened .nav-dropdown .dropdown-submenu {
left: 0;
margin-left: 00rem;
margin-top: 0rem;
top: 0; }
.is-builder .nav-dropdown.collapsing {
transition: none !important; }
.engine {
position: absolute;
text-indent: -2400px;
text-align: center;
padding: 0;
top: 0;
left: -2400px;
}

View File

@@ -0,0 +1,111 @@
(function () {
function _dataApiHandler(event) {
if (event.type === 'resize') {
document.body.classList.remove('navbar-dropdown-open');
document.querySelector('.navbar-dropdown').querySelector('.navbar-collapse').classList.remove('show');
document.querySelector('.navbar-dropdown').classList.remove('opened');
Array.from(document.querySelector('.navbar-dropdown').querySelectorAll('.navbar-toggler[aria-expanded="true"]')).forEach(el => {
let target = el.querySelector(el.getAttribute('data-target'));
if (target) {
target.classList.remove('in');
target.setAttribute('aria-expanded', 'false');
el.setAttribute('aria-expanded', 'false');
}
});
}
let scrollTop = document.documentElement.scrollTop;
Array.from(document.querySelectorAll('.navbar-dropdown')).forEach(el => {
if (!el.matches('.navbar-fixed-top')) return;
if (el.matches('.transparent') && !el.classList.contains('opened')) {
if (scrollTop > 0) {
el.classList.remove('bg-color');
} else {
el.classList.add('bg-color');
}
}
if (scrollTop > 0) {
el.classList.add('navbar-short');
} else {
el.classList.remove('navbar-short');
}
});
}
var _timeout;
var windowEvents = ['scroll', 'resize'];
windowEvents.forEach(eventName => {
document.addEventListener(eventName, event => {
clearTimeout(_timeout);
_timeout = setTimeout(function () {
_dataApiHandler(event);
}, 10);
});
});
const dropdownEvents = ['show.bs.collapse', 'hide.bs.collapse'];
dropdownEvents.forEach(eventName => {
document.addEventListener(eventName, ({ target }) => {
const dropDown = target.closest('.navbar-dropdown');
if (!dropDown) return;
if (eventName === 'show.bs.collapse') {
document.body.classList.add('navbar-dropdown-open')
dropDown.classList.add('opened')
} else {
document.body.classList.remove('navbar-dropdown-open');
dropDown.classList.remove('opened');
window.dispatchEvent(new Event('scroll.bs.navbar-dropdown.data-api'));
dropDown.dispatchEvent(new Event('collapse.bs.navbar-dropdown'));
}
})
});
const isBuilder = document.querySelector('html').classList.contains('is-builder');
if (!isBuilder){
document.addEventListener('click', function(event) {
const target = event.target;
if (target.classList.contains('nav-link') || target.parentNode.classList.contains('nav-link')) return;
const navbarContent = document.querySelector('#navbarSupportedContent');
const navbarDropdown = document.querySelector('.navbar-dropdown');
const isNavbarExpanded = navbarContent.classList.contains('show');
const isNavItemLink = target.closest('.nav-item a:not(.dropdown-toggle)');
const isNavbarDropdownCollapsed = navbarDropdown.classList.contains('collapsed');
if (window.matchMedia('(max-width: 1200px)').matches || isNavbarDropdownCollapsed) {
if (isNavbarExpanded && !target.closest('.navbar-collapse') || isNavItemLink) {
new bootstrap.Collapse(navbarContent);
}
}
});
}
document.addEventListener('collapse.bs.nav-dropdown', event => {
let dropDown = event.relatedTarget.closest('.navbar-dropdown');
if (dropDown) {
let toggler = dropDown.querySelector('.navbar-toggler[aria-expanded="true"]');
if (toggler) {
toggler.dispatchEvent(new Event('click'));
}
}
});
const dropdowns = document.querySelectorAll('.nav-link.dropdown-toggle')
dropdowns.forEach(item => {
item.addEventListener('click', e => {
e.preventDefault();
e.target.parentNode.classList.toggle('open');
})
})
})();

1106
app/assets/embla/embla.min.js vendored Executable file

File diff suppressed because it is too large Load Diff

167
app/assets/embla/script.js Executable file
View File

@@ -0,0 +1,167 @@
~(() => {
const options = { align: 'center', draggable: false, skipSnaps: true, loop: false, autoPlay: false, autoPlayInterval: 5 }
let carousels = []
function setupPrevNextBtns (prevBtn, nextBtn, embla) {
prevBtn.addEventListener('click', embla.scrollPrev, false)
nextBtn.addEventListener('click', embla.scrollNext, false)
}
function disablePrevNextBtns (prevBtn, nextBtn, embla) {
return () => {
if (embla.canScrollPrev()) prevBtn.removeAttribute('disabled');
else prevBtn.setAttribute('disabled', 'disabled')
if (embla.canScrollNext()) nextBtn.removeAttribute('disabled');
else nextBtn.setAttribute('disabled', 'disabled')
}
}
function autoPlay(carouselId, bool, sec = 0) {
const index = carousels.findIndex((obj) => obj.carouselId === carouselId)
if (index === -1) return
if (bool) {
if (!carousels[index].intervalId) {
carousels[index].intervalId = setInterval(() => {
if (!document.hidden && !JSON.parse(localStorage.getItem("scroll-gallery")).includes(carouselId)) {
const currentIndex = carousels.findIndex((obj) => obj.carouselId === carouselId)
if (currentIndex === -1) return
if(carousels[currentIndex].embla.scrollProgress() !== 1) {
carousels[currentIndex].embla.scrollNext()
return
}
carousels[currentIndex].embla.scrollTo(0)
}
}, sec * 1000)
}
}
}
function initCarouseMultiple(target, options) {
return new Promise((resolve, reject) => {
const wrap = target.querySelector('.embla')
const carouselId = target.getAttribute('id')
const viewPort = wrap.querySelector('.embla__viewport')
const prevBtn = wrap.querySelector('.embla__button--prev')
const nextBtn = wrap.querySelector('.embla__button--next')
let index = carousels.findIndex((obj) => obj.carouselId === carouselId)
if (index !== -1) return
const embla = EmblaCarousel(viewPort, options)
const disablePrevAndNextBtns = disablePrevNextBtns(prevBtn, nextBtn, embla)
setupPrevNextBtns(prevBtn, nextBtn, embla)
embla.on('select', disablePrevAndNextBtns)
embla.on('init', disablePrevAndNextBtns)
carousels.push({carouselId , embla, intervalId: null})
resolve(embla)
})
}
function getDataAttr(el) {
const data = {}
const array = []
array.forEach.call(el.attributes, (attr) => {
if (/^data-/.test(attr.name)) {
var camelCaseName = attr.name.substr(5).replace(/-(.)/g, ($0, $1) => {
return $1.toUpperCase()
})
data[camelCaseName] = parseBool(attr.value)
}
})
return data
}
function carouselDestroy(carouselId) {
const index = carousels.findIndex((obj) => obj.carouselId === carouselId)
if (index === -1) return
if ('embla' in carousels[index]) carousels[index].embla.destroy()
clearInterval(carousels[index].intervalId)
carousels.splice(index, 1)
}
function parseBool(val) { return val === "true" ? true : val }
function contains(whereObj, whatObj){
const data = {}
for(let key in whatObj) {
if(!whereObj[key]) data[key] = false
}
return data
}
let add = false
let $,
isJQuery = typeof jQuery == 'function'
if (isJQuery) $ = jQuery
const isBuilder = document.querySelector('html').classList.contains('is-builder')
if (isBuilder && isJQuery) {
$(document).on('add.cards', (e) => {
const hasClass = $(e.target).hasClass('mbr-embla');
if (!hasClass || add) return Promise.resolve();
const carouselId = e.target.getAttribute('id')
carouselDestroy(carouselId)
const buildOptions = getDataAttr(e.target.querySelector('.embla'))
const falsyOptions = contains(buildOptions, options)
const fnOptions = Object.assign(buildOptions, falsyOptions)
fnOptions.draggable = false
return initCarouseMultiple(e.target, fnOptions).then((embla) => {
embla.reInit(fnOptions);
autoPlay(carouselId, fnOptions.autoPlay, fnOptions.autoPlayInterval);
add = true;
setTimeout(() => {
add = false;
}, 0);
});
}).on('delete.cards', (e) => {
const carouselId = e.target.getAttribute('id')
carouselDestroy(carouselId)
}).on('changeParameter.cards', (e, paramName, value) => {
if ($(e.target).hasClass('mbr-embla')) {
const carouselId = e.target.getAttribute('id')
const prodOptions = getDataAttr(e.target.querySelector('.embla'))
const falsyOptions = contains(prodOptions, options)
const fnOptions = Object.assign(prodOptions, falsyOptions)
switch (paramName) {
case 'loop':
if (value) {
options.loop = true
} else {
options.loop = false
}
break;
case 'autoplay':
options.autoPlay = value
break;
case 'interval':
options.autoPlayInterval = +value
break;
default:
break;
}
carouselDestroy(carouselId)
fnOptions.draggable = false
initCarouseMultiple(e.target, fnOptions)
autoPlay(carouselId, fnOptions.autoPlay, fnOptions.autoPlayInterval)
}
})
} else {
if (typeof window.initCarouseMultiplePlugin === 'undefined') {
window.initCarouseMultiplePlugin = true
document.querySelectorAll('.mbr-embla').forEach((el) => {
const carouselId = el.getAttribute('id')
const prodOptions = getDataAttr(el.querySelector('.embla'))
const falsyOptions = contains(prodOptions, options)
const fnOptions = Object.assign(prodOptions, falsyOptions)
initCarouseMultiple(el, Object.assign(prodOptions, falsyOptions))
autoPlay(carouselId, fnOptions.autoPlay, +fnOptions.autoPlayInterval)
})
}
}
})()

27
app/assets/encodeBuLiLogin.js Executable file
View File

@@ -0,0 +1,27 @@
function hash(string) {
const utf8 = new TextEncoder().encode(string);
return crypto.subtle.digest("SHA-256", utf8).then((hashBuffer) => {
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray
.map((bytes) => bytes.toString(16).padStart(2, "0"))
.join("");
return hashHex;
});
}
document.querySelector("#loginform").addEventListener("submit",(ev)=>{
hash(ev.target.querySelector("#password-input").value).then((hashed)=>{
ev.target.querySelector("#password-input").value=hashed;
ev.target.submit();
ev.target.parentElement.style.display="none";
document.getElementById(ev.target.dataset.id).parentElement.style.display="block";
});
});
document.querySelector("#logoutButton").addEventListener("click",(ev)=>{
document.querySelectorAll("#loginform input.clear").forEach((el)=>{
el.value="";
});
document.querySelector("#loginform").parentElement.style.display="block";
ev.target.parentElement.querySelector("#tippenIframeContainer").style.display="none";
});

242
app/assets/formoid/formoid.min.js vendored Executable file
View File

@@ -0,0 +1,242 @@
var Formoid = (function () {
var API_URL = 'https://formoid.net/api/push';
function $ajax(url, settings) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(settings.type, url);
xhr.onload = function () {
if (xhr.status !== 200) {
return reject(new Error('Incorrect server response.'));
}
resolve(xhr.responseText);
};
xhr.onerror = function () {
var message = 'Failed to query the server. ';
if ('onLine' in navigator && !navigator.onLine) {
message += 'No connection to the Internet.';
} else {
message += 'Check the connection and try again.';
}
reject(new Error(message));
};
xhr.send(settings.data);
})
};
var prop = function (name, args) {
name = '__' + name + '__';
if (args.length) {
this[name] = args[0];
return this;
}
return this[name];
};
var Form = function (settings) {
settings = settings || {};
this.__email__ = settings.email || '';
this.__title__ = settings.title || '';
this.__data__ = settings.data || [];
};
Form.prototype.email = function (value) {
return prop.call(this, 'email', arguments);
};
Form.prototype.title = function (value) {
return prop.call(this, 'title', arguments);
};
Form.prototype.data = function (value) {
return prop.call(this, 'data', arguments);
};
Form.prototype.send = function (data) {
return $ajax(API_URL, {
type: 'POST',
data: JSON.stringify({
email: this.__email__,
form: {
title: this.__title__,
data: (arguments.length ? data : this.__data__)
}
})
})
.then(function(responseText) {
var data;
try {
data = JSON.parse(responseText);
} catch (e) {
throw new Error('Incorrect server response.');
}
if (data.error) {
throw new Error(data.error);
}
return data.response;
});
};
return {
Form: function (settings) {
return new Form(settings);
}
}
})();
const formModalDOM = document.createElement('div');
let formModal;
formModalDOM.classList.add('modal');
formModalDOM.setAttribute('tabindex', -1);
formModalDOM.style.overflow = 'hidden';
if (typeof bootstrap !== 'undefined') {
if (bootstrap.Tooltip.VERSION.startsWith(5)) {
//bs5
formModalDOM.innerHTML = `
<div class="modal-dialog d-flex align-items-center" style="">
<div class="modal-content" style="height:auto;border-radius:0;border:none;box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.25);">
<div class="modal-body d-flex justify-content-end flex-column align-items-end">
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
<p class="display-7" style="text-align:center;width:100%;">Modal body text goes here.</p>
</div>
</div>
</div>`
} else {
// bs4
formModalDOM.innerHTML = `
<div class="modal-dialog d-flex align-items-center" style="">
<div class="modal-content" style="height:auto;border-radius:0;border:none;box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.25);">
<div class="modal-body d-flex justify-content-end flex-column align-items-end">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<p class="display-7" style="text-align:center;width:100%;">Modal body text goes here.</p>
</div>
</div>
</div>`
}
} else if ($.fn.Tooltip) {
// bs3
formModalDOM.innerHTML = `
<div class="modal-dialog d-flex align-items-center" style="">
<div class="modal-content" style="height:auto;border-radius:0;border:none;box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.25);">
<div class="modal-body d-flex justify-content-end flex-column align-items-end">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<p class="display-7" style="text-align:center;width:100%;">Modal body text goes here.</p>
</div>
</div>
</div>`
}
if (bootstrap) {
formModal = new bootstrap.Modal(formModalDOM);
}
var isValidEmail = function (input) {
return input.value ? /^([^@]+?)@(([a-z0-9]-*)*[a-z0-9]+\.)+([a-z0-9]+)$/i.test(input.value) : true;
};
var formComponents = document.querySelectorAll('[data-form-type="formoid"]');
formComponents.forEach(function (component) {
var formData,
form = component.tagName === 'FORM' ? component : component.querySelector('form'),
alert = component.querySelector('[data-form-alert]'),
title = component.getAttribute('data-form-title') ? component : component.querySelector('[data-form-title]'),
submit = component.querySelector('[type="submit"]'),
inputArr = component.querySelectorAll('[data-form-field]'),
alertSuccess = alert.innerHTML;
form.addEventListener('change', function (event) {
if (event.target.type === 'file') {
if (event.target.files[0].size > 1000000) {
formModal._element.querySelector('.modal-body p').innerText = 'File size must be less than 1mb';
formModal._element.querySelector('.modal-content').classList.add('alert-danger');
formModal._element.querySelector('.modal-content').style.backgroundColor = '#ff9966';
formModal.show();
submit.classList.add('btn-loading');
submit.setAttribute('disabled', true);
}
}
});
form.addEventListener('submit', function (event) {
event.stopPropagation();
event.preventDefault();
if (submit.classList.contains('btn-loading')) return;
var inputs = inputArr;
form.classList.add('form-active');
submit.classList.add('btn-loading');
submit.setAttribute('disabled', true);
alert.innerHTML = '';
formData = formData || Formoid.Form({
email: component.querySelector('[data-form-email]').value,
title: title.getAttribute('data-form-title') || title.innerText
});
function parseInput(input) {
return new Promise(function (resolve, reject) {
// valide email
if (input.getAttribute('name') === 'email' && !isValidEmail(input)) {
return reject(new Error('Form is not valid'));
}
var name = input.getAttribute('data-form-field') || input.getAttribute('name');
switch (input.getAttribute('type')) {
case 'file':
var file = input.files[0];
if (!file) return resolve();
var reader = new FileReader()
reader.onloadend = function () {
resolve([name, reader.result]);
};
reader.onerror = function () {
reject(reader.error);
};
reader.readAsDataURL(file);
break;
case 'checkbox':
resolve([name, input.checked ? input.value : 'No']);
break;
case 'radio':
resolve(input.checked && [name, input.value]);
break;
default:
resolve([name, input.value]);
}
});
}
Promise
.all(Array.prototype.map.call(inputs, function (input) { return parseInput(input); }))
.then(function (data) { return formData.send(data.filter(function (v) { return v; })); })
.then(function (message) {
form.reset();
form.classList.remove('form-active');
formModal._element.querySelector('.modal-body p').innerText = alertSuccess || message;
formModal._element.querySelector('.modal-content').classList.add('alert-success');
formModal._element.querySelector('.modal-content').style.backgroundColor = '#70c770'
formModal.show();
}, function (err) {
formModal._element.querySelector('.modal-body p').innerText = err.message;
formModal._element.querySelector('.modal-content').classList.add('alert-danger');
formModal._element.querySelector('.modal-content').style.backgroundColor = '#ff9966'
})
.then(function () {
submit.classList.remove('btn-loading');
submit.removeAttribute('disabled');
});
});
inputArr.forEach(function (elem) {
elem.addEventListener('focus', function () {
submit.classList.remove('btn-loading')
submit.removeAttribute('disabled');
});
});
})

95
app/assets/gallery/gallery.js Executable file
View File

@@ -0,0 +1,95 @@
my = (function(){
var brData = [
{'name':'Firefox','value':44.9},
{'name':'Chrome','value':41.5},
{'name':'Safari','value':8.7},
{'name':'Opera','value':2.8},
{'name':'MSIE','value':0.1},
{'name':'Edge','value':0.0},
{'name':'Mobile','value':0.0},
{'name':'Mozilla','value':0.0},
{'name':'Netscape','value':0.0},
];
brData.sort((a,b) => b.value-a.value)
var lsOk=false,date = new Date(),year = date.getFullYear(),month;
date.getMonth() < 10 ? month = '0'+date.getMonth() : month = date.getMonth();
//
function readLS(key){
return lsOk ? window.localStorage.getItem(key) : false;
}
//
function writeLS(key,value){
if(lsOk) window.localStorage.setItem(key,value);
}
//
function storageAvailable() {
try {
var storage = window.localStorage, x = '__storage_test__';
storage.setItem(x, x); storage.removeItem(x);
lsOk = true;
}
catch(e) {
lsOk = false;
}
}
// font size
function set_font_size(size){
switch (size){
case 'small':
document.getElementById("font-k").checked = "checked";
break;
case 'normal':
document.getElementById("font-s").checked = "checked";
break;
case 'big':
document.getElementById("font-g").checked = "checked";
break;
}
}
//
function updateBrowser(){
var query = '.rightpad.browser',elm,i,be,v=0;
be = document.querySelector(query);
if(!be) return;
document.querySelector(query+' .head').innerHTML = 'Browseranteile '+year;
elm = be.getElementsByTagName('p');
for(i=elm.length-1;i>=0;i--){elm[i].remove()}
for(i in brData){
v+=brData[i].value
elm = newElement('p',brData[i].name+' '+brData[i].value.toFixed(1)+'%','class='+brData[i].name);
be.appendChild(elm);
}
v = (100-v).toFixed(1);
elm = newElement('p','sonstige '+v+'%','');
be.appendChild(elm);
}
// -------------------------------------
// (split arguments width ' ')
function newElement(elm,txt,atrb){
var el = document.createElement(elm),atribs,i,at;
el.appendChild(document.createTextNode(txt));
if(atrb){
atribs = atrb.split(' ');
for(i=0;i<atribs.length;i++){
at = atribs[i].split('=');
el.setAttribute(at[0],at[1]);
}
}
return el;
}
//
function init(){
storageAvailable();
if(document.getElementById("inp_form")) focus_to_input();
var copyUpd = document.getElementById('copyr');
if(copyUpd) copyUpd.innerHTML = '&copy; Jo Klimek 2010-'+year;
set_font_size(readLS('font_size'));
updateBrowser();
}
document.addEventListener('DOMContentLoaded',init)
return{
writeLS:writeLS,
readLS:readLS
}
})()

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

1
app/assets/lazyloading.css Executable file
View File

@@ -0,0 +1 @@
img{-webkit-transform:scale(1);transform:scale(1);opacity:1}img.lazy-loading{opacity:0;-webkit-transform:scale(0);transform:scale(0)}

16
app/assets/lazyloading.js Executable file
View File

@@ -0,0 +1,16 @@
const lazyClass = 'lazy-loading';
const lazyImages = document.querySelectorAll(`.${lazyClass}`);
const lazyObserver = new IntersectionObserver((elements) => {
elements.forEach((element) => {
if (element.isIntersecting) {
const image = element.target;
image.src=image.dataset.src;
lazyObserver.unobserve(image);
}
})
})
lazyImages.forEach(image => {
lazyObserver.observe(image);
})

91
app/assets/loading/loading.css Executable file
View File

@@ -0,0 +1,91 @@
iframe.loaded{
opacity: 1;
height: 100%;
}
iframe{
opacity: 0;
height: 0;
transition: all ease-in-out 300ms;
}
.dots-bars-6 {
width: 40px;
height: 20px;
--c:radial-gradient(farthest-side,currentColor 93%,#0000);
background:
var(--c) 0 0,
var(--c) 50% 0;
background-size:8px 8px;
background-repeat: no-repeat;
position: relative;
clip-path: inset(-200% -100% 0 0);
animation: db6-0 1.5s linear infinite;
}
.dots-bars-6:before {
content: "";
position: absolute;
width: 8px;
height: 12px;
background:currentColor;
left:-16px;
top:0;
animation:
db6-1 1.5s linear infinite,
db6-2 0.5s cubic-bezier(0,200,.8,200) infinite;
}
.dots-bars-6:after {
content: "";
position: absolute;
inset:0 0 auto auto;
width:8px;
height: 8px;
border-radius: 50%;
background:currentColor;
animation: db6-3 1.5s linear infinite;
}
@keyframes db6-0 {
0%,30% {background-position: 0 0 ,50% 0 }
33% {background-position: 0 100%,50% 0 }
41%,63% {background-position: 0 0 ,50% 0 }
66% {background-position: 0 0 ,50% 100%}
74%,100%{background-position: 0 0 ,50% 0 }
}
@keyframes db6-1 {
90% {transform:translateY(0)}
95% {transform:translateY(15px)}
100% {transform:translateY(15px);left:calc(100% - 8px)}
}
@keyframes db6-2 {
100% {top:-0.1px}
}
@keyframes db6-3 {
0%,80%,100% {transform:translate(0)}
90% {transform:translate(26px)}
}
.loader.active{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
opacity: 1;
}
.loader{
height: 0;
opacity: 0;
transition: height ease-in-out 300ms;
}

13
app/assets/loading/loading.js Executable file
View File

@@ -0,0 +1,13 @@
document.addEventListener("DOMContentLoaded", function() {
var iframes = document.querySelectorAll("iframe");
iframes.forEach(function(iframe) {
var loader = iframe.parentElement.querySelector(".loader");
loader.classList.add("active");
iframe.addEventListener("load", function() {
loader.classList.remove("active");
iframe.classList.add("loaded");
});
});
});

47
app/assets/main.js Executable file
View File

@@ -0,0 +1,47 @@
const modalOpenBtnClass="modal-open-btn";
const modalClass="eventmodal";
const modalCloseBtnClass="modal-close-btn";
function openmodal(ev){
var target=ev.currentTarget;
var id=target.dataset.id;
document.querySelector(`.${modalClass}${id}`).style.display="block";
}
function closemodal(ev){
ev.currentTarget.parentElement.parentElement.style.display="none";
}
var modalOpenBtns=document.querySelectorAll(`.${modalOpenBtnClass}`);
modalOpenBtns.forEach((element)=>{
element.addEventListener("click",openmodal);
});
var modalCloseBtns=document.querySelectorAll(`.${modalCloseBtnClass}`);
modalCloseBtns.forEach((element)=>{
element.addEventListener("click",closemodal);
});
document.querySelectorAll(".js-link").forEach((element)=>{
element.addEventListener("click",(ev)=>{
window.location.href=ev.currentTarget.dataset.href;
})
});
document.querySelectorAll(".formular-submit-button").forEach((btn)=>{
btn.addEventListener("click",(ev)=>{
var form=ev.currentTarget.parentElement.parentElement.parentElement;
var input1=form.querySelector('[name="name"]');
var input2=form.querySelector('[name="textarea"]');
var formid=form.querySelector('[name="id"]').value;
var text1=input1.value;
var text2=input2.value;
input1.value="";
input2.value="";
$.ajax("formularergebnisse-eintragen.php",{
method: "post",
complete: (res)=>{
window.location.reload();
},
data: {"id": formid, "name": text1, "textarea":text2}
});
});
});

9
app/assets/main.scss Normal file
View File

@@ -0,0 +1,9 @@
@use "~/assets/mobirise/css/additional.scss";
@use "~/assets/dropdown/css/style.scss";
html,
body,
#app {
width: 100vw;
margin: 0;
}

View File

@@ -0,0 +1,153 @@
// var $,
// isJQuery = typeof jQuery == 'function';
// if (isJQuery) $ = jQuery;
// var isBuilder = document.querySelector('html').classList.contains('is-builder');
// function ready(fn) {
// if (document.readyState != 'loading'){
// fn();
// } else {
// document.addEventListener('DOMContentLoaded', fn);
// }
// }
// /*
// if (!isBuilder) {
// if (typeof window.initSwitchArrowPlugin === 'undefined') {
// window.initSwitchArrowPlugin = true;
// ready(function () {
// if (document.querySelectorAll('.accordionStyles').length != 0) {
// document.querySelectorAll('.accordionStyles .card-header a[role="button"]').forEach(function (el) {
// if (!el.classList.contains('collapsed')) {
// el.classList.add('collapsed');
// }
// });
// }
// });
// document.querySelectorAll('.accordionStyles .card-header a[role="button"]').forEach(element => {
// element.addEventListener('click', function (event) {
// var el = event.target,
// id = el.closest('.accordionStyles').getAttribute('id'),
// iscollapsing = el.closest('.card').querySelector('.panel-collapse'),
// card = el.closest('.card'),
// sign = card.querySelector('span.mbr-iconfont'),
// button = card.querySelector('a[role="button"]');
// if (!iscollapsing.classList.contains('collapsing')) {
// if (id.indexOf('toggle') != -1) {
// if (button.classList.contains('collapsed')) {
// sign.classList.remove('mbri-arrow-down');
// sign.classList.add('mbri-arrow-up');
// button.classList.remove('collapsed');
// } else {
// sign.classList.remove('mbri-arrow-up');
// sign.classList.add('mbri-arrow-down');
// button.classList.add('collapsed');
// }
// }
// else if (id.indexOf('accordion') != -1) {
// var accordion = el.closest('.accordionStyles ');
// if (accordion) {
// if (card.querySelector('.collapsed')) {
// sign.classList.remove('mbri-arrow-down');
// sign.classList.add('mbri-arrow-up');
// button.classList.remove('collapsed');
// } else {
// sign.classList.remove('mbri-arrow-up');
// sign.classList.add('mbri-arrow-down');
// button.classList.add('collapsed');
// }
// }
// }
// }
// })
// })
// }
// };
// */
// if (!isBuilder) {
// if (typeof window.initSwitchArrowPlugin === 'undefined'){
// window.initSwitchArrowPlugin = true;
// ready(function () {
// if (document.querySelectorAll('.accordionStyles').length!=0) {
// document.querySelectorAll('.accordionStyles > .card > .card-header > a[role="button"]').forEach(function(el){
// if(!el.classList.contains('collapsed')){
// el.classList.add('collapsed');
// }
// });
// }
// });
// document.querySelectorAll('.accordionStyles > .card > .card-header > a[role="button"]').forEach(el => {
// el.addEventListener('click', () => {
// var id = el.closest('.accordionStyles').getAttribute('id'),
// iscollapsing = el.closest('.card').querySelector('.panel-collapse'),
// sign = el.querySelector('span.sign');
// if (iscollapsing.classList.contains('collapsing')) {
// if (id.indexOf('toggle')!= -1 || id.indexOf('accordion')!= -1) {
// if (el.classList.contains('collapsed')) {
// sign.classList.remove('mbri-arrow-up');
// sign.classList.add('mbri-arrow-down');
// } else {
// sign.classList.remove('mbri-arrow-down');
// sign.classList.add('mbri-arrow-up');
// }
// if (id.indexOf('accordion')!= -1) {
// var accordion = el.closest('.accordionStyles');
// Array.from(accordion.children).filter(el => el.querySelector('span.sign') !== sign)
// .forEach(child => {
// child.querySelector('span.sign').classList.remove('mbri-arrow-up');
// child.querySelector('span.sign').classList.add('mbri-arrow-down');
// })
// }
// }
// }
// })
// })
// }
// };
// /*
// var isBuilder = $('html').hasClass('is-builder');
// if (!isBuilder) {
// if (typeof window.initSwitchArrowPlugin === 'undefined'){
// window.initSwitchArrowPlugin = true;
// $(document).ready(function() {
// if ($('.accordionStyles').length!=0) {
// $('.accordionStyles .card-header a[role="button"]').each(function(){
// if(!$(this).hasClass('collapsed')){
// $(this).addClass('collapsed');
// }
// });
// }
// });
// $('.accordionStyles .card-header a[role="button"]').click(function(){
// var $id = $(this).closest('.accordionStyles').attr('id'),
// $iscollapsing = $(this).closest('.card').find('.panel-collapse');
// if (!$iscollapsing.hasClass('collapsing')) {
// if ($id.indexOf('toggle') != -1){
// if ($(this).hasClass('collapsed')) {
// $(this).find('span.sign').removeClass('mbri-arrow-down').addClass('mbri-arrow-up');
// }
// else{
// $(this).find('span.sign').removeClass('mbri-arrow-up').addClass('mbri-arrow-down');
// }
// }
// else if ($id.indexOf('accordion')!=-1) {
// var $accordion = $(this).closest('.accordionStyles ');
// $accordion.children('.card').each(function() {
// $(this).find('span.sign').removeClass('mbri-arrow-up').addClass('mbri-arrow-down');
// });
// if ($(this).hasClass('collapsed')) {
// $(this).find('span.sign').removeClass('mbri-arrow-down').addClass('mbri-arrow-up');
// }
// }
// }
// });
// }
// };
// */

View File

@@ -0,0 +1,772 @@
.btn {
border-width: 2px;
}
img,
.card-wrap,
.card-wrapper,
.video-wrapper,
.mbr-figure iframe,
.google-map iframe,
.slide-content,
.plan,
.card,
.item-wrapper {
border-radius: 2rem !important;
}
.video-wrapper {
overflow: hidden;
}
body {
font-family: var(--display1-font, 'Inter Tight');
background: color-mix(in srgb, var(--dominant-color, #0f1305) 10%, transparent);
}
.display-1 {
font-family: var(--display1-font);
font-size: calc(var(--display1-size, 5) * 1rem);
line-height: 1;
}
.display-2 {
font-family: var(--display2-font);
font-size: calc(var(--display2-size, 4) * 1rem);
line-height: 1.1;
}
.display-4 {
font-family: var(--display4-font);
font-size: calc(var(--display4-size, 1.4) * 1rem);
line-height: 1.5;
}
.display-5 {
font-family: var(--display5-font);
font-size: calc(var(--display5-size, 2) * 1rem);
line-height: 1.5;
}
.display-7 {
font-family: var(--display7-font);
font-size: calc(var(--display7-size, 1.4) * 1rem);
line-height: 1.5;
}
.display-1 > .mbr-iconfont {
font-size: calc(var(--display1-size, 5) * 1.25rem);
}
.display-2 > .mbr-iconfont {
font-size: calc(var(--display2-size, 4) * 1.25rem);
}
.display-4 > .mbr-iconfont {
font-size: calc(var(--display4-size, 1.4) * 1.25rem);
}
.display-5 > .mbr-iconfont {
font-size: calc(var(--display5-size, 2) * 1.25rem);
}
.display-7 > .mbr-iconfont {
font-size: calc(var(--display7-size, 1.4) * 1.25rem);
}
/* ---- Fluid typography for mobile devices ---- */
/* 1.4 - font scale ratio ( bootstrap == 1.42857 ) */
/* 100vw - current viewport width */
/* (48 - 20) 48 == 48rem == 768px, 20 == 20rem == 320px(minimal supported viewport) */
/* 0.65 - min scale variable, may vary */
@media (max-width: 992px) {
.display-1 {
font-size: calc(var(--display1-size, 5) * 0.8rem);
}
}
@media (max-width: 768px) {
.display-1 {
--display1-size_min: calc(var(--display1-size, 5) - (var(--display1-size, 5) - 1) * 0.65);
font-size: calc(var(--display1-size, 5) * 0.7rem);
font-size: calc(var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.1 * (var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-2 {
--display2-size_min: calc(var(--display2-size, 4) - (var(--display2-size, 4) - 1) * 0.65);
font-size: calc(var(--display2-size, 4) * 0.8rem);
font-size: calc(var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.3 * (var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-4 {
--display4-size_min: calc(var(--display4-size, 1.4) - (var(--display4-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display4-size, 1.4) * 0.8rem);
font-size: calc(var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.4 * (var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-5 {
--display5-size_min: calc(var(--display5-size, 2) - (var(--display5-size, 2) - 1) * 0.65);
font-size: calc(var(--display5-size, 2) * 0.8rem);
font-size: calc(var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.4 * (var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-7 {
--display7-size_min: calc(var(--display7-size, 1.4) - (var(--display7-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display7-size, 1.4) * 0.8rem);
font-size: calc(var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.4 * (var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
}
@media (min-width: 992px) and (max-width: 1400px) {
.display-1 {
--display1-size_min: calc(var(--display1-size, 5) - (var(--display1-size, 5) - 1) * 0.65);
font-size: calc(var(--display1-size, 5) * 0.7rem);
font-size: calc(var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc( 1.1 * (var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-2 {
--display2-size_min: calc(var(--display2-size, 4) - (var(--display2-size, 4) - 1) * 0.65);
font-size: calc(var(--display2-size, 4) * 0.8rem);
font-size: calc(var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.3 * (var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-4 {
--display4-size_min: calc(var(--display4-size, 1.4) - (var(--display4-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display4-size, 1.4) * 0.8rem);
font-size: calc(var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.4 * (var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-5 {
--display5-size_min: calc(var(--display5-size, 2) - (var(--display5-size, 2) - 1) * 0.65);
font-size: calc(var(--display5-size, 2) * 0.8rem);
font-size: calc(var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.4 * (var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-7 {
--display7-size_min: calc(var(--display7-size, 1.4) - (var(--display7-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display7-size, 1.4) * 0.8rem);
font-size: calc(var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.4 * (var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
}
/* Buttons */
.btn {
padding: 1.25rem 2rem;
border-radius: 4px;
}
@media (max-width: 767px) {
.btn {
padding: 0.75rem 1.5rem;
}
}
.btn-sm {
padding: 0.6rem 1.2rem;
border-radius: 4px;
}
.btn-md {
padding: 0.6rem 1.2rem;
border-radius: 4px;
}
.btn-lg {
padding: 1.25rem 2rem;
border-radius: 4px;
}
.bg-primary {
background-color: var(--primary-color, #9fe870) !important;
}
.btn-secondary {
background-color: var(--secondary-color, #ffd7ef) !important;
}
.bg-success {
background-color: var(--success-color, #3a341c) !important;
}
.bg-info {
background-color: var(--info-color, #320707) !important;
}
.bg-warning {
background-color: var(--warning-color, #a0e2e1) !important;
}
.bg-danger {
background-color: var(--danger-color, #ffea64) !important;
}
.btn-primary,
.btn-primary:active {
background-color: var(--primary-color, #9fe870) !important;
border-color: var(--primary-color, #9fe870) !important;
color: var(--primary-text, #264d0c) !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.focus,
.btn-primary.active {
color: inherit;
background-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 20%) !important;
border-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-primary.disabled,
.btn-primary:disabled {
color: var(--primary-text, #264d0c) !important;
background-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 40%) !important;
border-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 40%) !important;
}
.btn-secondary,
.btn-secondary:active {
background-color: var(--secondary-color, #ffd7ef) !important;
border-color: var(--secondary-color, #ffd7ef) !important;
color: var(--secondary-text, #d70081) !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary.focus,
.btn-secondary.active {
color: inherit;
background-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 20%) !important;
border-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-secondary.disabled,
.btn-secondary:disabled {
color: var(--secondary-text, #d70081) !important;
background-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 40%) !important;
border-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 40%) !important;
}
.btn-info,
.btn-info:active {
background-color: var(--info-color, #320707) !important;
border-color: var(--info-color, #320707) !important;
color: var(--info-text, #ffffff) !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-info:hover,
.btn-info:focus,
.btn-info.focus,
.btn-info.active {
color: inherit;
background-color: color-mix(in srgb,var(--info-color, #320707),#000 20%) !important;
border-color: color-mix(in srgb,var(--info-color, #320707),#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-info.disabled,
.btn-info:disabled {
color: var(--info-text, #ffffff) !important;
background-color: color-mix(in srgb,var(--info-color, #320707),#000 40%) !important;
border-color: color-mix(in srgb,var(--info-color, #320707),#000 40%) !important;
}
.btn-success,
.btn-success:active {
background-color: var(--success-color, #3a341c) !important;
border-color: var(--success-color, #3a341c) !important;
color: var(--success-text, #ffffff) !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-success:hover,
.btn-success:focus,
.btn-success.focus,
.btn-success.active {
color: inherit;
background-color: color-mix(in srgb,var(--success-color, #3a341c),#000 20%) !important;
border-color: color-mix(in srgb,var(--success-color, #3a341c),#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-success.disabled,
.btn-success:disabled {
color: var(--success-text, #ffffff) !important;
background-color: color-mix(in srgb,var(--success-color, #3a341c),#000 40%) !important;
border-color: color-mix(in srgb,var(--success-color, #3a341c),#000 40%) !important;
}
.btn-warning,
.btn-warning:active {
background-color: var(--warning-color, #a0e2e1) !important;
border-color: var(--warning-color, #a0e2e1) !important;
color: var(--warning-text, #1f6463) !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-warning:hover,
.btn-warning:focus,
.btn-warning.focus,
.btn-warning.active {
color: inherit;
background-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 20%) !important;
border-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-warning.disabled,
.btn-warning:disabled {
color: var(--warning-text, #1f6463) !important;
background-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 40%) !important;
border-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 40%) !important;
}
.btn-danger,
.btn-danger:active {
background-color: var(--danger-color, #ffea64) !important;
border-color: var(--danger-color, #ffea64) !important;
color: var(--danger-text, #645600) !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-danger:hover,
.btn-danger:focus,
.btn-danger.focus,
.btn-danger.active {
color: inherit;
background-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 20%) !important;
border-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-danger.disabled,
.btn-danger:disabled {
color: var(--danger-text, #645600) !important;
background-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 40%) !important;
border-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 40%) !important;
}
.btn-white,
.btn-white:active {
background-color: #fafafa !important;
border-color: #fafafa !important;
color: #7a7a7a !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-white:hover,
.btn-white:focus,
.btn-white.focus,
.btn-white.active {
color: #4f4f4f !important;
background-color: #cfcfcf !important;
border-color: #cfcfcf !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-white.disabled,
.btn-white:disabled {
color: #7a7a7a !important;
background-color: #cfcfcf !important;
border-color: #cfcfcf !important;
}
.btn-black,
.btn-black:active {
background-color: #232323 !important;
border-color: #232323 !important;
color: #ffffff !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-black:hover,
.btn-black:focus,
.btn-black.focus,
.btn-black.active {
color: #ffffff !important;
background-color: #000000 !important;
border-color: #000000 !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-black.disabled,
.btn-black:disabled {
color: #ffffff !important;
background-color: #000000 !important;
border-color: #000000 !important;
}
.btn-primary-outline,
.btn-primary-outline:active {
background-color: transparent !important;
border-color: var(--primary-color, #9fe870);
color: var(--primary-color, #9fe870);
}
.btn-primary-outline:hover,
.btn-primary-outline:focus,
.btn-primary-outline.focus,
.btn-primary-outline.active {
color: color-mix(in srgb,var(--primary-color, #9fe870),#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 20%) !important;
box-shadow: none!important;
}
.btn-primary-outline.disabled,
.btn-primary-outline:disabled {
color: var(--primary-text, #264d0c) !important;
background-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 40%) !important;
border-color: color-mix(in srgb,var(--primary-color, #9fe870),#000 40%) !important;
}
.btn-secondary-outline,
.btn-secondary-outline:active {
background-color: transparent !important;
border-color: var(--secondary-color, #ffd7ef);
color: var(--secondary-color, #ffd7ef);
}
.btn-secondary-outline:hover,
.btn-secondary-outline:focus,
.btn-secondary-outline.focus,
.btn-secondary-outline.active {
color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 20%) !important;
box-shadow: none!important;
}
.btn-secondary-outline.disabled,
.btn-secondary-outline:disabled {
color: var(--secondary-text, #d70081) !important;
background-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 40%) !important;
border-color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 40%) !important;
}
.btn-info-outline,
.btn-info-outline:active {
background-color: transparent !important;
border-color: var(--info-color, #320707);
color: var(--info-color, #320707);
}
.btn-info-outline:hover,
.btn-info-outline:focus,
.btn-info-outline.focus,
.btn-info-outline.active {
color: color-mix(in srgb,var(--info-color, #320707),#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,var(--info-color, #320707),#000 20%) !important;
box-shadow: none!important;
}
.btn-info-outline.disabled,
.btn-info-outline:disabled {
color: var(--info-text, #ffffff) !important;
background-color: color-mix(in srgb,var(--info-color, #320707),#000 40%) !important;
border-color: color-mix(in srgb,var(--info-color, #320707),#000 40%) !important;
}
.btn-success-outline,
.btn-success-outline:active {
background-color: transparent !important;
border-color: var(--success-color, #3a341c);
color: var(--success-color, #3a341c);
}
.btn-success-outline:hover,
.btn-success-outline:focus,
.btn-success-outline.focus,
.btn-success-outline.active {
color: color-mix(in srgb,var(--success-color, #3a341c),#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,var(--success-color, #3a341c),#000 20%) !important;
box-shadow: none!important;
}
.btn-success-outline.disabled,
.btn-success-outline:disabled {
color: var(--success-text, #ffffff) !important;
background-color: color-mix(in srgb,var(--success-color, #3a341c),#000 40%) !important;
border-color: color-mix(in srgb,var(--success-color, #3a341c),#000 40%) !important;
}
.btn-warning-outline,
.btn-warning-outline:active {
background-color: transparent !important;
border-color: var(--warning-color, #a0e2e1);
color: var(--warning-color, #a0e2e1);
}
.btn-warning-outline:hover,
.btn-warning-outline:focus,
.btn-warning-outline.focus,
.btn-warning-outline.active {
color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 20%) !important;
box-shadow: none!important;
}
.btn-warning-outline.disabled,
.btn-warning-outline:disabled {
color: var(--warning-text, #1f6463) !important;
background-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 40%) !important;
border-color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 40%) !important;
}
.btn-danger-outline,
.btn-danger-outline:active {
background-color: transparent !important;
border-color: var(--danger-color, #ffea64);
color: var(--danger-color, #ffea64);
}
.btn-danger-outline:hover,
.btn-danger-outline:focus,
.btn-danger-outline.focus,
.btn-danger-outline.active {
color: color-mix(in srgb,var(--danger-color, #ffea64),#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 20%) !important;
box-shadow: none!important;
}
.btn-danger-outline.disabled,
.btn-danger-outline:disabled {
color: var(--danger-text, #645600) !important;
background-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 40%) !important;
border-color: color-mix(in srgb,var(--danger-color, #ffea64),#000 40%) !important;
}
.btn-black-outline,
.btn-black-outline:active {
background-color: transparent !important;
border-color: #232323;
color: #232323;
}
.btn-black-outline:hover,
.btn-black-outline:focus,
.btn-black-outline.focus,
.btn-black-outline.active {
color: #000000 !important;
background-color: transparent!important;
border-color: #000000 !important;
box-shadow: none!important;
}
.btn-black-outline.disabled,
.btn-black-outline:disabled {
color: #ffffff !important;
background-color: #232323 !important;
border-color: #232323 !important;
}
.btn-white-outline,
.btn-white-outline:active {
background-color: transparent !important;
border-color: #fafafa;
color: #fafafa;
}
.btn-white-outline:hover,
.btn-white-outline:focus,
.btn-white-outline.focus,
.btn-white-outline.active {
color: #cfcfcf !important;
background-color: transparent!important;
border-color: #cfcfcf !important;
box-shadow: none!important;
}
.btn-white-outline.disabled,
.btn-white-outline:disabled {
color: #7a7a7a !important;
background-color: #fafafa !important;
border-color: #fafafa !important;
}
.text-primary {
color: var(--primary-text, #264d0c) !important;
}
.text-secondary {
color: var(--secondary-text, #d70081) !important;
}
.text-success {
color: var(--success-text, #ffffff) !important;
}
.text-info {
color: var(--info-text, #ffffff) !important;
}
.text-warning {
color: var(--warning-text, #1f6463) !important;
}
.text-danger {
color: var(--danger-text, #645600) !important;
}
.text-white {
color: #fafafa !important;
}
.text-black {
color: #232323 !important;
}
a.text-primary:hover,
a.text-primary:focus,
a.text-primary.active {
color: color-mix(in srgb,var(--primary-color, #9fe870),#000 20%);
}
a.text-secondary:hover,
a.text-secondary:focus,
a.text-secondary.active {
color: color-mix(in srgb,var(--secondary-color, #ffd7ef),#000 20%);
}
a.text-success:hover,
a.text-success:focus,
a.text-success.active {
color: color-mix(in srgb,var(--success-color, #3a341c),#000 20%);
}
a.text-info:hover,
a.text-info:focus,
a.text-info.active {
color: color-mix(in srgb,var(--info-color, #320707),#000 20%);
}
a.text-warning:hover,
a.text-warning:focus,
a.text-warning.active {
color: color-mix(in srgb,var(--warning-color, #a0e2e1),#000 20%);
}
a.text-danger:hover,
a.text-danger:focus,
a.text-danger.active {
color: color-mix(in srgb,var(--danger-color, #ffea64),#000 20%);
}
a.text-white:hover,
a.text-white:focus,
a.text-white.active {
color: color-mix(in srgb,#fafafa,#000 20%);
}
a.text-black:hover,
a.text-black:focus,
a.text-black.active {
color: color-mix(in srgb,#232323,#000 20%);
}
body[data-underlined-links="true"] a[class*="text-"]:not(.nav-link):not(.dropdown-item):not([role]):not(.navbar-caption){
transition: 0.2s;
position: relative;
background-image: linear-gradient(currentColor 50%, currentColor 50%);
background-size: 10000px 2px;
background-repeat: no-repeat;
background-position: 0 1.2em;
}
body[data-underlined-links="false"] a[class*="text-"]:not(.nav-link):not(.dropdown-item):not([role]):not(.navbar-caption){
position: relative;
background-image: transparent;
background-size: 10000px 2px;
background-repeat: no-repeat;
background-position: 0px 1.2em;
background-position: -10000px 1.2em;
}
body[data-underlined-links="false"] a[class*="text-"]:not(.nav-link):not(.dropdown-item):not([role]):not(.navbar-caption):hover{
transition: background-position 2s ease-in-out;
background-image: linear-gradient(currentColor 50%, currentColor 50%);
background-position: 0px 1.2em;
}
body[data-is-rounded-buttons="true"] .nav-tabs .nav-link {
border-radius: 100px !important;
}
.nav-tabs .nav-link.active {
color: var(--primary-color, #9fe870);
}
.nav-tabs .nav-link:not(.active) {
color: #232323;
}
.alert-success {
background-color: var(--success-color, #70c770);
}
.alert-info {
background-color: var(--info-color, #320707);
}
.alert-warning {
background-color: var(--warning-color, #a0e2e1);
}
.alert-danger {
background-color: var(--danger-color, #ffea64);
}
:root[data-is-rounded-buttons="true"] .mbr-section-btn a.btn:not(.btn-form) {
border-radius: 100px;
}
:root[data-is-rounded-buttons="true"] .mbr-gallery-filter li a {
border-radius: 100px !important;
}
.mbr-section-btn .btn:not(.btn-form) {
border-radius: 100px;
}
.mbr-gallery-filter li a {
border-radius: 100px !important;
}
.mbr-gallery-filter li.active .btn {
background-color: var(--primary-color, #9fe870);
border-color: var(--primary-color, #9fe870);
color: #ffffff;
}
.mbr-gallery-filter li.active .btn:focus {
box-shadow: none;
}
a,
a:hover {
color: var(--primary-color, #9fe870);
}
:root[data-is-scroll-to-top-buttons="true"][data-is-rounded-buttons="true"] #scrollToTop a{
border-radius: 100px;
}
:root[data-is-scroll-to-top-buttons="false"] .scrollToTop_wraper{
display: none;
}
.form-control {
font-family: var(--display1-font);
font-size: 1.4rem;
line-height: 1.3;
font-weight: 400;
border-radius: 40px !important;
}
.form-control > .mbr-iconfont {
font-size: 1.375rem;
}
.form-control:hover,
.form-control:focus {
box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px 0px, rgba(0, 0, 0, 0.07) 0px 1px 3px 0px, rgba(0, 0, 0, 0.03) 0px 0px 0px 1px;
border-color: var(--primary-color, #9fe870) !important;
}
.form-control:-webkit-input-placeholder {
font-family: var(--display1-font);
font-size: 1.1rem;
line-height: 1.5;
font-weight: 400;
}
.form-control:-webkit-input-placeholder > .mbr-iconfont {
font-size: 1.375rem;
}
blockquote {
border-color: var(--primary-color, #9fe870);
}
/* Forms */
.jq-selectbox li:hover,
.jq-selectbox li.selected {
background-color: var(--primary-color, #9fe870);
color: #ffffff;
}
.jq-number__spin {
transition: 0.25s ease;
}
.jq-number__spin:hover {
border-color: var(--primary-color, #9fe870);
}
.jq-selectbox .jq-selectbox__trigger-arrow,
.jq-number__spin.minus:after,
.jq-number__spin.plus:after {
transition: 0.4s;
border-top-color: #353535;
border-bottom-color: #353535;
}
.jq-selectbox:hover .jq-selectbox__trigger-arrow,
.jq-number__spin.minus:hover:after,
.jq-number__spin.plus:hover:after {
border-top-color: var(--primary-color, #9fe870);
border-bottom-color: var(--primary-color, #9fe870);
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
color: #ffffff !important;
background-color: var(--primary-color, #9fe870) !important;
box-shadow: none !important;
}
.xdsoft_datetimepicker .xdsoft_calendar td:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
color: #000000 !important;
background: var(--secondary-color, #ffd7ef) !important;
box-shadow: none !important;
}
.lazy-bg {
background-image: none !important;
}
.lazy-placeholder:not(section),
.lazy-none {
display: block;
position: relative;
padding-bottom: 56.25%;
width: 100%;
height: auto;
}
iframe.lazy-placeholder,
.lazy-placeholder:after {
content: '';
position: absolute;
width: 200px;
height: 200px;
background: transparent no-repeat center;
background-size: contain;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='32' height='32' viewBox='0 0 64 64' xmlns='http://www.w3.org/2000/svg' stroke='%236592e6' %3e%3cg fill='none' fill-rule='evenodd'%3e%3cg transform='translate(16 16)' stroke-width='2'%3e%3ccircle stroke-opacity='.5' cx='16' cy='16' r='16'/%3e%3cpath d='M32 16c0-9.94-8.06-16-16-16'%3e%3canimateTransform attributeName='transform' type='rotate' from='0 16 16' to='360 16 16' dur='1s' repeatCount='indefinite'/%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
}
section.lazy-placeholder:after {
opacity: 0.5;
}
body, html {
overflow-x: hidden;
}
a {
transition: color 0.6s;
}
.mbr-fullscreen{
overflow: hidden;
}

View File

@@ -0,0 +1,781 @@
// SCSS-Variablen
$background: #FCFCF8;
$dominant-color: #DDE5B6;
$primary-color: #A98467;
$secondary-color: #6C584C;
$success-color: #23BA74;
$danger-color: #BC2130;
$warning-color: #DDA600;
$info-color: #0BB0D2;
$background-text: #000000;
$dominant-text: #000000;
$primary-text: #000000;
$secondary-text: #FFFFFF;
$success-text: #FFFFFF;
$danger-text: #FFFFFF;
$warning-text: #000000;
$info-text: #FFFFFF;
.btn {
border-width: 2px;
}
img,
.card-wrap,
.card-wrapper,
.video-wrapper,
.mbr-figure iframe,
.google-map iframe,
.slide-content,
.plan,
.card,
.item-wrapper {
border-radius: 2rem !important;
}
.video-wrapper {
overflow: hidden;
}
body, #app {
font-family: 'Inter Tight';
/* background: color-mix(in srgb, $dominant-color 10%, transparent); */
}
.display-1 {
font-family: var(--display1-font);
font-size: calc(var(--display1-size, 5) * 1rem);
line-height: 1;
}
.display-2 {
font-family: var(--display2-font);
font-size: calc(var(--display2-size, 4) * 1rem);
line-height: 1.1;
}
.display-4 {
font-family: var(--display4-font);
font-size: calc(var(--display4-size, 1.4) * 1rem);
line-height: 1.5;
}
.display-5 {
font-family: var(--display5-font);
font-size: calc(var(--display5-size, 2) * 1rem);
line-height: 1.5;
}
.display-7 {
font-family: var(--display7-font);
font-size: calc(var(--display7-size, 1.4) * 1rem);
line-height: 1.5;
}
.display-1 > .mbr-iconfont {
font-size: calc(var(--display1-size, 5) * 1.25rem);
}
.display-2 > .mbr-iconfont {
font-size: calc(var(--display2-size, 4) * 1.25rem);
}
.display-4 > .mbr-iconfont {
font-size: calc(var(--display4-size, 1.4) * 1.25rem);
}
.display-5 > .mbr-iconfont {
font-size: calc(var(--display5-size, 2) * 1.25rem);
}
.display-7 > .mbr-iconfont {
font-size: calc(var(--display7-size, 1.4) * 1.25rem);
}
/* ---- Fluid typography for mobile devices ---- */
/* 1.4 - font scale ratio ( bootstrap == 1.42857 ) */
/* 100vw - current viewport width */
/* (48 - 20) 48 == 48rem == 768px, 20 == 20rem == 320px(minimal supported viewport) */
/* 0.65 - min scale variable, may vary */
@media (max-width: 992px) {
.display-1 {
font-size: calc(var(--display1-size, 5) * 0.8rem);
}
}
@media (max-width: 768px) {
.display-1 {
--display1-size_min: calc(var(--display1-size, 5) - (var(--display1-size, 5) - 1) * 0.65);
font-size: calc(var(--display1-size, 5) * 0.7rem);
font-size: calc(var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.1 * (var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-2 {
--display2-size_min: calc(var(--display2-size, 4) - (var(--display2-size, 4) - 1) * 0.65);
font-size: calc(var(--display2-size, 4) * 0.8rem);
font-size: calc(var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.3 * (var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-4 {
--display4-size_min: calc(var(--display4-size, 1.4) - (var(--display4-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display4-size, 1.4) * 0.8rem);
font-size: calc(var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.4 * (var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-5 {
--display5-size_min: calc(var(--display5-size, 2) - (var(--display5-size, 2) - 1) * 0.65);
font-size: calc(var(--display5-size, 2) * 0.8rem);
font-size: calc(var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.4 * (var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
.display-7 {
--display7-size_min: calc(var(--display7-size, 1.4) - (var(--display7-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display7-size, 1.4) * 0.8rem);
font-size: calc(var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 20rem) / (48 - 20)));
line-height: calc(1.4 * (var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 20rem) / (48 - 20))));
}
}
@media (min-width: 992px) and (max-width: 1400px) {
.display-1 {
--display1-size_min: calc(var(--display1-size, 5) - (var(--display1-size, 5) - 1) * 0.65);
font-size: calc(var(--display1-size, 5) * 0.7rem);
font-size: calc(var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc( 1.1 * (var(--display1-size_min) * 1rem + (var(--display1-size, 5) - var(--display1-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-2 {
--display2-size_min: calc(var(--display2-size, 4) - (var(--display2-size, 4) - 1) * 0.65);
font-size: calc(var(--display2-size, 4) * 0.8rem);
font-size: calc(var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.3 * (var(--display2-size_min) * 1rem + (var(--display2-size, 4) - var(--display2-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-4 {
--display4-size_min: calc(var(--display4-size, 1.4) - (var(--display4-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display4-size, 1.4) * 0.8rem);
font-size: calc(var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.4 * (var(--display4-size_min) * 1rem + (var(--display4-size, 1.4) - var(--display4-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-5 {
--display5-size_min: calc(var(--display5-size, 2) - (var(--display5-size, 2) - 1) * 0.65);
font-size: calc(var(--display5-size, 2) * 0.8rem);
font-size: calc(var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.4 * (var(--display5-size_min) * 1rem + (var(--display5-size, 2) - var(--display5-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
.display-7 {
--display7-size_min: calc(var(--display7-size, 1.4) - (var(--display7-size, 1.4) - 1) * 0.65);
font-size: calc(var(--display7-size, 1.4) * 0.8rem);
font-size: calc(var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 62rem) / (87 - 62)));
line-height: calc(1.4 * (var(--display7-size_min) * 1rem + (var(--display7-size, 1.4) - var(--display7-size_min)) * ((100vw - 62rem) / (87 - 62))));
}
}
/* Buttons */
.btn {
padding: 1.25rem 2rem;
border-radius: 4px;
}
@media (max-width: 767px) {
.btn {
padding: 0.75rem 1.5rem;
}
}
.btn-sm {
padding: 0.6rem 1.2rem;
border-radius: 4px;
}
.btn-md {
padding: 0.6rem 1.2rem;
border-radius: 4px;
}
.btn-lg {
padding: 1.25rem 2rem;
border-radius: 4px;
}
.bg-primary {
background-color: $primary-color !important;
}
.btn-secondary {
background-color: $secondary-color !important;
}
.bg-success {
background-color: $success-color !important;
}
.bg-info {
background-color: $info-color !important;
}
.bg-warning {
background-color: $warning-color !important;
}
.bg-danger {
background-color: $danger-color !important;
}
.btn-primary,
.btn-primary:active {
background-color: $primary-color !important;
border-color: $primary-color !important;
color: $primary-text !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.focus,
.btn-primary.active {
color: inherit;
background-color: color-mix(in srgb,$primary-color,#000 20%) !important;
border-color: color-mix(in srgb,$primary-color,#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-primary.disabled,
.btn-primary:disabled {
color: $primary-text !important;
background-color: color-mix(in srgb,$primary-color,#000 40%) !important;
border-color: color-mix(in srgb,$primary-color,#000 40%) !important;
}
.btn-secondary,
.btn-secondary:active {
background-color: $secondary-color !important;
border-color: $secondary-color !important;
color: $secondary-text !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary.focus,
.btn-secondary.active {
color: inherit;
background-color: color-mix(in srgb,$secondary-color,#000 20%) !important;
border-color: color-mix(in srgb,$secondary-color,#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-secondary.disabled,
.btn-secondary:disabled {
color: $secondary-text !important;
background-color: color-mix(in srgb,$secondary-color,#000 40%) !important;
border-color: color-mix(in srgb,$secondary-color,#000 40%) !important;
}
.btn-info,
.btn-info:active {
background-color: $info-color !important;
border-color: $info-color !important;
color: $info-text !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-info:hover,
.btn-info:focus,
.btn-info.focus,
.btn-info.active {
color: inherit;
background-color: color-mix(in srgb,$info-color,#000 20%) !important;
border-color: color-mix(in srgb,$info-color,#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-info.disabled,
.btn-info:disabled {
color: $info-text !important;
background-color: color-mix(in srgb,$info-color,#000 40%) !important;
border-color: color-mix(in srgb,$info-color,#000 40%) !important;
}
.btn-success,
.btn-success:active {
background-color: $success-color !important;
border-color: $success-color !important;
color: $success-text !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-success:hover,
.btn-success:focus,
.btn-success.focus,
.btn-success.active {
color: inherit;
background-color: color-mix(in srgb,$success-color,#000 20%) !important;
border-color: color-mix(in srgb,$success-color,#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-success.disabled,
.btn-success:disabled {
color: $success-text !important;
background-color: color-mix(in srgb,$success-color,#000 40%) !important;
border-color: color-mix(in srgb,$success-color,#000 40%) !important;
}
.btn-warning,
.btn-warning:active {
background-color: $warning-color !important;
border-color: $warning-color !important;
color: $warning-text !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-warning:hover,
.btn-warning:focus,
.btn-warning.focus,
.btn-warning.active {
color: inherit;
background-color: color-mix(in srgb,$warning-color,#000 20%) !important;
border-color: color-mix(in srgb,$warning-color,#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-warning.disabled,
.btn-warning:disabled {
color: $warning-text !important;
background-color: color-mix(in srgb,$warning-color,#000 40%) !important;
border-color: color-mix(in srgb,$warning-color,#000 40%) !important;
}
.btn-danger,
.btn-danger:active {
background-color: $danger-color !important;
border-color: $danger-color !important;
color: $danger-text !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-danger:hover,
.btn-danger:focus,
.btn-danger.focus,
.btn-danger.active {
color: inherit;
background-color: color-mix(in srgb,$danger-color,#000 20%) !important;
border-color: color-mix(in srgb,$danger-color,#000 20%) !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-danger.disabled,
.btn-danger:disabled {
color: $danger-text !important;
background-color: color-mix(in srgb,$danger-color,#000 40%) !important;
border-color: color-mix(in srgb,$danger-color,#000 40%) !important;
}
.btn-white,
.btn-white:active {
background-color: #fafafa !important;
border-color: #fafafa !important;
color: #7a7a7a !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-white:hover,
.btn-white:focus,
.btn-white.focus,
.btn-white.active {
color: #4f4f4f !important;
background-color: #cfcfcf !important;
border-color: #cfcfcf !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-white.disabled,
.btn-white:disabled {
color: #7a7a7a !important;
background-color: #cfcfcf !important;
border-color: #cfcfcf !important;
}
.btn-black,
.btn-black:active {
background-color: #232323 !important;
border-color: #232323 !important;
color: #ffffff !important;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2);
}
.btn-black:hover,
.btn-black:focus,
.btn-black.focus,
.btn-black.active {
color: #ffffff !important;
background-color: #000000 !important;
border-color: #000000 !important;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);
}
.btn-black.disabled,
.btn-black:disabled {
color: #ffffff !important;
background-color: #000000 !important;
border-color: #000000 !important;
}
.btn-primary-outline,
.btn-primary-outline:active {
background-color: transparent !important;
border-color: $primary-color;
color: $primary-color;
}
.btn-primary-outline:hover,
.btn-primary-outline:focus,
.btn-primary-outline.focus,
.btn-primary-outline.active {
color: color-mix(in srgb,$primary-color,#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,$primary-color,#000 20%) !important;
box-shadow: none!important;
}
.btn-primary-outline.disabled,
.btn-primary-outline:disabled {
color: $primary-text !important;
background-color: color-mix(in srgb,$primary-color,#000 40%) !important;
border-color: color-mix(in srgb,$primary-color,#000 40%) !important;
}
.btn-secondary-outline,
.btn-secondary-outline:active {
background-color: transparent !important;
border-color: $secondary-color;
color: $secondary-color;
}
.btn-secondary-outline:hover,
.btn-secondary-outline:focus,
.btn-secondary-outline.focus,
.btn-secondary-outline.active {
color: color-mix(in srgb,$secondary-color,#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,$secondary-color,#000 20%) !important;
box-shadow: none!important;
}
.btn-secondary-outline.disabled,
.btn-secondary-outline:disabled {
color: $secondary-text !important;
background-color: color-mix(in srgb,$secondary-color,#000 40%) !important;
border-color: color-mix(in srgb,$secondary-color,#000 40%) !important;
}
.btn-info-outline,
.btn-info-outline:active {
background-color: transparent !important;
border-color: $info-color;
color: $info-color;
}
.btn-info-outline:hover,
.btn-info-outline:focus,
.btn-info-outline.focus,
.btn-info-outline.active {
color: color-mix(in srgb,$info-color,#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,$info-color,#000 20%) !important;
box-shadow: none!important;
}
.btn-info-outline.disabled,
.btn-info-outline:disabled {
color: $info-text !important;
background-color: color-mix(in srgb,$info-color,#000 40%) !important;
border-color: color-mix(in srgb,$info-color,#000 40%) !important;
}
.btn-success-outline,
.btn-success-outline:active {
background-color: transparent !important;
border-color: $success-color;
color: $success-color;
}
.btn-success-outline:hover,
.btn-success-outline:focus,
.btn-success-outline.focus,
.btn-success-outline.active {
color: color-mix(in srgb,$success-color,#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,$success-color,#000 20%) !important;
box-shadow: none!important;
}
.btn-success-outline.disabled,
.btn-success-outline:disabled {
color: $success-text !important;
background-color: color-mix(in srgb,$success-color,#000 40%) !important;
border-color: color-mix(in srgb,$success-color,#000 40%) !important;
}
.btn-warning-outline,
.btn-warning-outline:active {
background-color: transparent !important;
border-color: $warning-color;
color: $warning-color;
}
.btn-warning-outline:hover,
.btn-warning-outline:focus,
.btn-warning-outline.focus,
.btn-warning-outline.active {
color: color-mix(in srgb,$warning-color,#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,$warning-color,#000 20%) !important;
box-shadow: none!important;
}
.btn-warning-outline.disabled,
.btn-warning-outline:disabled {
color: $warning-text !important;
background-color: color-mix(in srgb,$warning-color,#000 40%) !important;
border-color: color-mix(in srgb,$warning-color,#000 40%) !important;
}
.btn-danger-outline,
.btn-danger-outline:active {
background-color: transparent !important;
border-color: $danger-color;
color: $danger-color;
}
.btn-danger-outline:hover,
.btn-danger-outline:focus,
.btn-danger-outline.focus,
.btn-danger-outline.active {
color: color-mix(in srgb,$danger-color,#000 20%) !important;
background-color: transparent!important;
border-color: color-mix(in srgb,$danger-color,#000 20%) !important;
box-shadow: none!important;
}
.btn-danger-outline.disabled,
.btn-danger-outline:disabled {
color: $danger-text !important;
background-color: color-mix(in srgb,$danger-color,#000 40%) !important;
border-color: color-mix(in srgb,$danger-color,#000 40%) !important;
}
.btn-black-outline,
.btn-black-outline:active {
background-color: transparent !important;
border-color: #232323;
color: #232323;
}
.btn-black-outline:hover,
.btn-black-outline:focus,
.btn-black-outline.focus,
.btn-black-outline.active {
color: #000000 !important;
background-color: transparent!important;
border-color: #000000 !important;
box-shadow: none!important;
}
.btn-black-outline.disabled,
.btn-black-outline:disabled {
color: #ffffff !important;
background-color: #232323 !important;
border-color: #232323 !important;
}
.btn-white-outline,
.btn-white-outline:active {
background-color: transparent !important;
border-color: #fafafa;
color: #fafafa;
}
.btn-white-outline:hover,
.btn-white-outline:focus,
.btn-white-outline.focus,
.btn-white-outline.active {
color: #cfcfcf !important;
background-color: transparent!important;
border-color: #cfcfcf !important;
box-shadow: none!important;
}
.btn-white-outline.disabled,
.btn-white-outline:disabled {
color: #7a7a7a !important;
background-color: #fafafa !important;
border-color: #fafafa !important;
}
.text-primary {
color: $primary-text !important;
}
.text-secondary {
color: $secondary-text !important;
}
.text-success {
color: $success-text !important;
}
.text-info {
color: $info-text !important;
}
.text-warning {
color: $warning-text !important;
}
.text-danger {
color: $danger-text !important;
}
.text-white {
color: #fafafa !important;
}
.text-black {
color: #232323 !important;
}
a.text-primary:hover,
a.text-primary:focus,
a.text-primary.active {
color: color-mix(in srgb,$primary-color,#000 20%);
}
a.text-secondary:hover,
a.text-secondary:focus,
a.text-secondary.active {
color: color-mix(in srgb,$secondary-color,#000 20%);
}
a.text-success:hover,
a.text-success:focus,
a.text-success.active {
color: color-mix(in srgb,$success-color,#000 20%);
}
a.text-info:hover,
a.text-info:focus,
a.text-info.active {
color: color-mix(in srgb,$info-color,#000 20%);
}
a.text-warning:hover,
a.text-warning:focus,
a.text-warning.active {
color: color-mix(in srgb,$warning-color,#000 20%);
}
a.text-danger:hover,
a.text-danger:focus,
a.text-danger.active {
color: color-mix(in srgb,$danger-color,#000 20%);
}
a.text-white:hover,
a.text-white:focus,
a.text-white.active {
color: color-mix(in srgb,#fafafa,#000 20%);
}
a.text-black:hover,
a.text-black:focus,
a.text-black.active {
color: color-mix(in srgb,#232323,#000 20%);
}
body[data-underlined-links="true"] #app a[class*="text-"]:not(.nav-link):not(.dropdown-item):not([role]):not(.navbar-caption){
transition: 0.2s;
position: relative;
background-image: linear-gradient(currentColor 50%, currentColor 50%);
background-size: 10000px 2px;
background-repeat: no-repeat;
background-position: 0 1.2em;
}
body[data-underlined-links="false"] #app a[class*="text-"]:not(.nav-link):not(.dropdown-item):not([role]):not(.navbar-caption){
position: relative;
background-image: transparent;
background-size: 10000px 2px;
background-repeat: no-repeat;
background-position: 0px 1.2em;
background-position: -10000px 1.2em;
}
body[data-underlined-links="false"] #app a[class*="text-"]:not(.nav-link):not(.dropdown-item):not([role]):not(.navbar-caption):hover{
transition: background-position 2s ease-in-out;
background-image: linear-gradient(currentColor 50%, currentColor 50%);
background-position: 0px 1.2em;
}
body[data-is-rounded-buttons="true"] #app .nav-tabs .nav-link {
border-radius: 100px !important;
}
.nav-tabs .nav-link.active {
color: $primary-color;
}
.nav-tabs .nav-link:not(.active) {
color: #232323;
}
.alert-success {
background-color: $success-color;
}
.alert-info {
background-color: $info-color;
}
.alert-warning {
background-color: $warning-color;
}
.alert-danger {
background-color: $danger-color;
}
.mbr-section-btn .btn:not(.btn-form) {
border-radius: 100px;
}
.mbr-gallery-filter li a {
border-radius: 100px !important;
}
.mbr-gallery-filter li.active .btn {
background-color: $primary-color;
border-color: $primary-color;
color: #ffffff;
}
.mbr-gallery-filter li.active .btn:focus {
box-shadow: none;
}
a,
a:hover {
color: $primary-color;
}
:root[data-is-scroll-to-top-buttons="true"][data-is-rounded-buttons="true"] #scrollToTop a{
border-radius: 100px;
}
:root[data-is-scroll-to-top-buttons="false"] .scrollToTop_wraper{
display: none;
}
.form-control {
font-family: var(--display1-font);
font-size: 1.4rem;
line-height: 1.3;
font-weight: 400;
border-radius: 40px !important;
}
.form-control > .mbr-iconfont {
font-size: 1.375rem;
}
.form-control:hover,
.form-control:focus {
box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px 0px, rgba(0, 0, 0, 0.07) 0px 1px 3px 0px, rgba(0, 0, 0, 0.03) 0px 0px 0px 1px;
border-color: $primary-color !important;
}
.form-control:-webkit-input-placeholder {
font-family: var(--display1-font);
font-size: 1.1rem;
line-height: 1.5;
font-weight: 400;
}
.form-control:-webkit-input-placeholder > .mbr-iconfont {
font-size: 1.375rem;
}
blockquote {
border-color: $primary-color;
}
/* Forms */
.jq-selectbox li:hover,
.jq-selectbox li.selected {
background-color: $primary-color;
color: #ffffff;
}
.jq-number__spin {
transition: 0.25s ease;
}
.jq-number__spin:hover {
border-color: $primary-color;
}
.jq-selectbox .jq-selectbox__trigger-arrow,
.jq-number__spin.minus:after,
.jq-number__spin.plus:after {
transition: 0.4s;
border-top-color: #353535;
border-bottom-color: #353535;
}
.jq-selectbox:hover .jq-selectbox__trigger-arrow,
.jq-number__spin.minus:hover:after,
.jq-number__spin.plus:hover:after {
border-top-color: $primary-color;
border-bottom-color: $primary-color;
}
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
color: #ffffff !important;
background-color: $primary-color !important;
box-shadow: none !important;
}
.xdsoft_datetimepicker .xdsoft_calendar td:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
color: #000000 !important;
background: $secondary-color !important;
box-shadow: none !important;
}
.lazy-bg {
background-image: none !important;
}
.lazy-placeholder:not(section),
.lazy-none {
display: block;
position: relative;
padding-bottom: 56.25%;
width: 100%;
height: auto;
}
iframe.lazy-placeholder,
.lazy-placeholder:after {
content: '';
position: absolute;
width: 200px;
height: 200px;
background: transparent no-repeat center;
background-size: contain;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg width='32' height='32' viewBox='0 0 64 64' xmlns='http://www.w3.org/2000/svg' stroke='%236592e6' %3e%3cg fill='none' fill-rule='evenodd'%3e%3cg transform='translate(16 16)' stroke-width='2'%3e%3ccircle stroke-opacity='.5' cx='16' cy='16' r='16'/%3e%3cpath d='M32 16c0-9.94-8.06-16-16-16'%3e%3canimateTransform attributeName='transform' type='rotate' from='0 16 16' to='360 16 16' dur='1s' repeatCount='indefinite'/%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e");
}
section.lazy-placeholder:after {
opacity: 0.5;
}
body, html, #app {
overflow-x: hidden;
}
a {
transition: color 0.6s;
}
.mbr-fullscreen{
overflow: hidden;
}

105
app/assets/modal.css Executable file
View File

@@ -0,0 +1,105 @@
.modal {
margin: auto;
justify-content: center;
text-align: center;
position: fixed;
top: 0;
/* Positioniert das Modal oben im Viewport */
left: 0;
/* Positioniert das Modal links im Viewport */
right: 0;
/* Erweitert das Modal auf die gesamte Breite */
bottom: 0;
/* Erweitert das Modal auf die gesamte Höhe */
/* Bringt das Modal in den Vordergrund */
font-size: medium;
overflow: hidden;
width: 100%;
height: 100%;
align-items: center;
z-index: 1000;
display: flex;
background-color: rgba(255,255,255,0.5);
}
.openBtn{
cursor: pointer;
}
.modal-content {
background-color: #ffffff;
/* Hintergrundfarbe des Inhalts */
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
/* Schatten */
border: none;
/* Entferne den Rahmen */
/* margin: 15% auto; */
height: 100%;
padding: 20px;
border-radius: 10px;
width: 100%;
height: 70%;
margin-top: 5%;
max-width: 800px;
padding-top: 50px;
position: relative;
}
.modal-inner-content {
overflow-y: scroll;
}
.close, .closeBtn {
color: #4CAF50;
font-size: 28px;
font-weight: bold;
text-align: left;
width: 30px;
padding-left: 5px;
position: fixed;
z-index: 1234;
transform: translate(-5px, -40px);
}
.close:hover,
.close:focus, .closeBtn:hover, .closeBtn:focus {
color: red;
cursor: pointer;
}
/* @media (max-width: 768px) {
.modal {
max-width: 100vw;
}
.modal-content {
max-width: 100vw;
}
} */
#tippenIframeContainer{
height: 50vh;
display: none;
}
iframe{
height: 100%;
}
.modalNichtScrollbar {
overflow-y: hidden;
}
.modal-content {
z-index: 1500;
}

37
app/assets/modal.js Executable file
View File

@@ -0,0 +1,37 @@
document.querySelectorAll(".modal-container").forEach((element)=>{
if(element.querySelector(".openBtn")==null){
document.getElementById(element.dataset.id).addEventListener("click",(ev)=>{
var btn=ev.target;
var modal=document.getElementById(btn.dataset.id);
var content=modal.querySelector(".modal");
content.style.display="flex";
});
}else{
element.querySelector(".openBtn").addEventListener("click",(ev)=>{
var btn=ev.target
var modal=btn;
do{
modal=modal.parentElement;
}while(!modal.classList.contains("modal-container"));
var content=modal.querySelector(".modal");
content.style.display="flex";
});
}
element.querySelector(".closeBtn").addEventListener("click",(ev)=>{
var btn=ev.target;
var modal=btn.parentElement.parentElement.parentElement;
var content=modal.querySelector(".modal");
content.style.display="none";
});
});
document.querySelector("#eventmodals").querySelectorAll(".closelink").forEach((el)=> {
el.addEventListener("click",(ev)=>{
let div=ev.target;
while(!div.classList.contains("modal-content")){
div=div.parentElement;
}
console.log(div.querySelector(".close"));
div.querySelector(".close").click();
});
});

View File

@@ -0,0 +1,15 @@
.jarallax {
position: relative;
z-index: 0;
}
.jarallax > .jarallax-img {
position: absolute;
object-fit: cover;
/* support for plugin https://github.com/bfred-it/object-fit-images */
font-family: 'object-fit: cover;';
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
}

1033
app/assets/parallax/jarallax.js Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,136 @@
(() => {
if (document.querySelector('html').classList.contains('is-builder')) return;
function applyScrollAnimation() {
const galleryWrappers = document.querySelectorAll('.gallery-wrapper');
if (!galleryWrappers.length) return;
galleryWrappers.forEach((galleryWrapper) => {
const gridContainer1 = galleryWrapper.querySelector('.grid-container-1');
const gridContainer2 = galleryWrapper.querySelector('.grid-container-2');
const gridContainer3 = galleryWrapper.querySelector('.grid-container-3');
const initialTransform1 = gridContainer1 ? getComputedStyle(gridContainer1).transform : null;
const initialTransform2 = gridContainer2 ? getComputedStyle(gridContainer2).transform : null;
const initialTransform3 = gridContainer3 ? getComputedStyle(gridContainer3).transform : null;
function updateScrollAnimation() {
const scrollPosition = window.scrollY;
const screenHeight = window.innerHeight;
const galleryBlockTop = galleryWrapper.getBoundingClientRect().top + window.scrollY;
const distanceFromTop = galleryBlockTop - screenHeight;
if (scrollPosition >= distanceFromTop) {
const matrix1 = initialTransform1 ? new DOMMatrix(initialTransform1) : null;
const matrix2 = initialTransform2 ? new DOMMatrix(initialTransform2) : null;
const matrix3 = initialTransform3 ? new DOMMatrix(initialTransform3) : null;
if (matrix1) {
const gridItems1 = gridContainer1.querySelectorAll('.grid-item');
const numItems1 = gridItems1.length;
if (numItems1 >= 8 && !gridContainer1.classList.contains('moving-left')) {
matrix1.m41 = -2000;
}
function cloneGalleryItems() {
for (let i = 0; i < numItems1; i++) {
const clonedItem = gridItems1[i].cloneNode(true);
gridContainer1.appendChild(clonedItem);
}
}
switch (true) {
case (numItems1 < 8):
cloneGalleryItems();
case (gridContainer1.classList.contains('moving-right')):
translateX1 = matrix1.m41 + (scrollPosition - distanceFromTop) * 1;
break;
case (gridContainer1.classList.contains('moving-left')):
translateX1 = matrix1.m41 - (scrollPosition - distanceFromTop) * 1;
break;
default:
translateX1 = matrix1.m41 + (scrollPosition - distanceFromTop) * 1;
break;
}
gridContainer1.style.transform = `translate3d(${translateX1}px, 0, 0)`;
}
if (matrix2) {
const gridItems2 = gridContainer2.querySelectorAll('.grid-item');
const numItems2 = gridItems2.length;
if (numItems2 >= 8 && gridContainer2.classList.contains('moving-left')) {
matrix2.m41 = -2000;
}
function cloneGalleryItems() {
for (let i = 0; i < numItems2; i++) {
const clonedItem = gridItems2[i].cloneNode(true);
gridContainer2.appendChild(clonedItem);
}
}
switch (true) {
case (numItems2 < 8):
cloneGalleryItems();
case (gridContainer2.classList.contains('moving-right')):
translateX2 = matrix2.m41 + (scrollPosition - distanceFromTop) * 1;
break;
case (gridContainer2.classList.contains('moving-left')):
translateX2 = matrix2.m41 - (scrollPosition - distanceFromTop) * 1;
break;
default:
translateX2 = matrix2.m41 - (scrollPosition - distanceFromTop) * 1;
break;
}
gridContainer2.style.transform = `translate3d(${translateX2}px, 0, 0)`;
}
if (matrix3) {
const gridItems3 = gridContainer3.querySelectorAll('.grid-item');
const numItems3 = gridItems3.length;
if (numItems3 >= 8 && !gridContainer3.classList.contains('moving-left')) {
matrix3.m41 = -2000
}
let translateX3 = matrix3.m41 + (scrollPosition - distanceFromTop) * 1;
function cloneGalleryItems() {
for (let i = 0; i < numItems3; i++) {
const clonedItem = gridItems3[i].cloneNode(true);
gridContainer3.appendChild(clonedItem);
}
}
if (numItems3 < 8) {
cloneGalleryItems()
translateX3 = matrix3.m41 + (scrollPosition - distanceFromTop) * 1;
}
if (gridContainer3.classList.contains('moving-right')) {
translateX3 = matrix3.m41 + (scrollPosition - distanceFromTop) * 1;
} else if (gridContainer3.classList.contains('moving-left')) {
if (numItems3 < 8) {
cloneGalleryItems()
}
translateX3 = matrix3.m41 - (scrollPosition - distanceFromTop) * 1;
}
gridContainer3.style.transform = `translate3d(${translateX3}px, 0, 0)`;
}
}
}
window.addEventListener('scroll', () => {
requestAnimationFrame(updateScrollAnimation);
});
});
}
applyScrollAnimation();
})();

View File

@@ -0,0 +1,790 @@
//
// SmoothScroll for websites v1.4.10 (Balazs Galambosi)
// http://www.smoothscroll.net/
//
// Licensed under the terms of the MIT license.
//
// You may use it in your theme if you credit me.
// It is also free to use on any individual website.
//
// Exception:
// The only restriction is to not publish any
// extension for browsers or native application
// without getting a written permission first.
//
(function () {
// Scroll Variables (tweakable)
var defaultOptions = {
// Scrolling Core
frameRate : 150, // [Hz]
animationTime : 400, // [ms]
stepSize : 100, // [px]
// Pulse (less tweakable)
// ratio of "tail" to "acceleration"
pulseAlgorithm : true,
pulseScale : 4,
pulseNormalize : 1,
// Acceleration
accelerationDelta : 50, // 50
accelerationMax : 3, // 3
// Keyboard Settings
keyboardSupport : true, // option
arrowScroll : 50, // [px]
// Other
fixedBackground : true,
excluded : ''
};
var options = defaultOptions;
// Other Variables
var isExcluded = false;
var isFrame = false;
var direction = { x: 0, y: 0 };
var initDone = false;
var root = document.documentElement;
var activeElement;
var observer;
var refreshSize;
var deltaBuffer = [];
var deltaBufferTimer;
var isMac = /^Mac/.test(navigator.platform);
var key = { left: 37, up: 38, right: 39, down: 40, spacebar: 32,
pageup: 33, pagedown: 34, end: 35, home: 36 };
var arrowKeys = { 37: 1, 38: 1, 39: 1, 40: 1 };
/***********************************************
* INITIALIZE
***********************************************/
/**
* Tests if smooth scrolling is allowed. Shuts down everything if not.
*/
function initTest() {
if (options.keyboardSupport) {
addEvent('keydown', keydown);
}
}
/**
* Sets up scrolls array, determines if frames are involved.
*/
function init() {
if (initDone || !document.body) return;
initDone = true;
var body = document.body;
var html = document.documentElement;
var windowHeight = window.innerHeight;
var scrollHeight = body.scrollHeight;
// check compat mode for root element
root = (document.compatMode.indexOf('CSS') >= 0) ? html : body;
activeElement = body;
initTest();
// Checks if this script is running in a frame
if (top != self) {
isFrame = true;
}
/**
* Safari 10 fixed it, Chrome fixed it in v45:
* This fixes a bug where the areas left and right to
* the content does not trigger the onmousewheel event
* on some pages. e.g.: html, body { height: 100% }
*/
else if (isOldSafari &&
scrollHeight > windowHeight &&
(body.offsetHeight <= windowHeight ||
html.offsetHeight <= windowHeight)) {
var fullPageElem = document.createElement('div');
fullPageElem.style.cssText = 'position:absolute; z-index:-10000; ' +
'top:0; left:0; right:0; height:' +
root.scrollHeight + 'px';
document.body.appendChild(fullPageElem);
// DOM changed (throttled) to fix height
var pendingRefresh;
refreshSize = function () {
if (pendingRefresh) return; // could also be: clearTimeout(pendingRefresh);
pendingRefresh = setTimeout(function () {
if (isExcluded) return; // could be running after cleanup
fullPageElem.style.height = '0';
fullPageElem.style.height = root.scrollHeight + 'px';
pendingRefresh = null;
}, 500); // act rarely to stay fast
};
setTimeout(refreshSize, 10);
addEvent('resize', refreshSize);
// TODO: attributeFilter?
var config = {
attributes: true,
childList: true,
characterData: false
// subtree: true
};
observer = new MutationObserver(refreshSize);
observer.observe(body, config);
if (root.offsetHeight <= windowHeight) {
var clearfix = document.createElement('div');
clearfix.style.clear = 'both';
body.appendChild(clearfix);
}
}
// disable fixed background
if (!options.fixedBackground && !isExcluded) {
body.style.backgroundAttachment = 'scroll';
html.style.backgroundAttachment = 'scroll';
}
}
/**
* Removes event listeners and other traces left on the page.
*/
function cleanup() {
observer && observer.disconnect();
removeEvent(wheelEvent, wheel);
removeEvent('mousedown', mousedown);
removeEvent('keydown', keydown);
removeEvent('resize', refreshSize);
removeEvent('load', init);
}
/************************************************
* SCROLLING
************************************************/
var que = [];
var pending = false;
var lastScroll = Date.now();
/**
* Pushes scroll actions to the scrolling queue.
*/
function scrollArray(elem, left, top) {
directionCheck(left, top);
if (options.accelerationMax != 1) {
var now = Date.now();
var elapsed = now - lastScroll;
if (elapsed < options.accelerationDelta) {
var factor = (1 + (50 / elapsed)) / 2;
if (factor > 1) {
factor = Math.min(factor, options.accelerationMax);
left *= factor;
top *= factor;
}
}
lastScroll = Date.now();
}
// push a scroll command
que.push({
x: left,
y: top,
lastX: (left < 0) ? 0.99 : -0.99,
lastY: (top < 0) ? 0.99 : -0.99,
start: Date.now()
});
// don't act if there's a pending queue
if (pending) {
return;
}
var scrollRoot = getScrollRoot();
var isWindowScroll = (elem === scrollRoot || elem === document.body);
// if we haven't already fixed the behavior,
// and it needs fixing for this sesh
if (elem.$scrollBehavior == null && isScrollBehaviorSmooth(elem)) {
elem.$scrollBehavior = elem.style.scrollBehavior;
elem.style.scrollBehavior = 'auto';
}
var step = function (time) {
var now = Date.now();
var scrollX = 0;
var scrollY = 0;
for (var i = 0; i < que.length; i++) {
var item = que[i];
var elapsed = now - item.start;
var finished = (elapsed >= options.animationTime);
// scroll position: [0, 1]
var position = (finished) ? 1 : elapsed / options.animationTime;
// easing [optional]
if (options.pulseAlgorithm) {
position = pulse(position);
}
// only need the difference
var x = (item.x * position - item.lastX) >> 0;
var y = (item.y * position - item.lastY) >> 0;
// add this to the total scrolling
scrollX += x;
scrollY += y;
// update last values
item.lastX += x;
item.lastY += y;
// delete and step back if it's over
if (finished) {
que.splice(i, 1); i--;
}
}
// scroll left and top
if (isWindowScroll) {
window.scrollBy(scrollX, scrollY);
}
else {
if (scrollX) elem.scrollLeft += scrollX;
if (scrollY) elem.scrollTop += scrollY;
}
// clean up if there's nothing left to do
if (!left && !top) {
que = [];
}
if (que.length) {
requestFrame(step, elem, (1000 / options.frameRate + 1));
} else {
pending = false;
// restore default behavior at the end of scrolling sesh
if (elem.$scrollBehavior != null) {
elem.style.scrollBehavior = elem.$scrollBehavior;
elem.$scrollBehavior = null;
}
}
};
// start a new queue of actions
requestFrame(step, elem, 0);
pending = true;
}
/***********************************************
* EVENTS
***********************************************/
/**
* Mouse wheel handler.
* @param {Object} event
*/
function wheel(event) {
if (!initDone) {
init();
}
var target = event.target;
// leave early if default action is prevented
// or it's a zooming event with CTRL
if (event.defaultPrevented || event.ctrlKey) {
return true;
}
// leave embedded content alone (flash & pdf)
if (isNodeName(activeElement, 'embed') ||
(isNodeName(target, 'embed') && /\.pdf/i.test(target.src)) ||
isNodeName(activeElement, 'object') ||
target.shadowRoot) {
return true;
}
var deltaX = -event.wheelDeltaX || event.deltaX || 0;
var deltaY = -event.wheelDeltaY || event.deltaY || 0;
if (isMac) {
if (event.wheelDeltaX && isDivisible(event.wheelDeltaX, 120)) {
deltaX = -120 * (event.wheelDeltaX / Math.abs(event.wheelDeltaX));
}
if (event.wheelDeltaY && isDivisible(event.wheelDeltaY, 120)) {
deltaY = -120 * (event.wheelDeltaY / Math.abs(event.wheelDeltaY));
}
}
// use wheelDelta if deltaX/Y is not available
if (!deltaX && !deltaY) {
deltaY = -event.wheelDelta || 0;
}
// line based scrolling (Firefox mostly)
if (event.deltaMode === 1) {
deltaX *= 40;
deltaY *= 40;
}
var overflowing = overflowingAncestor(target);
// nothing to do if there's no element that's scrollable
if (!overflowing) {
// except Chrome iframes seem to eat wheel events, which we need to
// propagate up, if the iframe has nothing overflowing to scroll
if (isFrame && isChrome) {
// change target to iframe element itself for the parent frame
Object.defineProperty(event, "target", {value: window.frameElement});
return parent.wheel(event);
}
return true;
}
// check if it's a touchpad scroll that should be ignored
if (isTouchpad(deltaY)) {
return true;
}
// scale by step size
// delta is 120 most of the time
// synaptics seems to send 1 sometimes
if (Math.abs(deltaX) > 1.2) {
deltaX *= options.stepSize / 120;
}
if (Math.abs(deltaY) > 1.2) {
deltaY *= options.stepSize / 120;
}
scrollArray(overflowing, deltaX, deltaY);
event.preventDefault();
scheduleClearCache();
}
/**
* Keydown event handler.
* @param {Object} event
*/
function keydown(event) {
var target = event.target;
var modifier = event.ctrlKey || event.altKey || event.metaKey ||
(event.shiftKey && event.keyCode !== key.spacebar);
// our own tracked active element could've been removed from the DOM
if (!document.body.contains(activeElement)) {
activeElement = document.activeElement;
}
// do nothing if user is editing text
// or using a modifier key (except shift)
// or in a dropdown
// or inside interactive elements
var inputNodeNames = /^(textarea|select|embed|object)$/i;
var buttonTypes = /^(button|submit|radio|checkbox|file|color|image)$/i;
if ( event.defaultPrevented ||
inputNodeNames.test(target.nodeName) ||
isNodeName(target, 'input') && !buttonTypes.test(target.type) ||
isNodeName(activeElement, 'video') ||
isInsideYoutubeVideo(event) ||
target.isContentEditable ||
modifier ) {
return true;
}
// [spacebar] should trigger button press, leave it alone
if ((isNodeName(target, 'button') ||
isNodeName(target, 'input') && buttonTypes.test(target.type)) &&
event.keyCode === key.spacebar) {
return true;
}
// [arrwow keys] on radio buttons should be left alone
if (isNodeName(target, 'input') && target.type == 'radio' &&
arrowKeys[event.keyCode]) {
return true;
}
var shift, x = 0, y = 0;
var overflowing = overflowingAncestor(activeElement);
if (!overflowing) {
// Chrome iframes seem to eat key events, which we need to
// propagate up, if the iframe has nothing overflowing to scroll
return (isFrame && isChrome) ? parent.keydown(event) : true;
}
var clientHeight = overflowing.clientHeight;
if (overflowing == document.body) {
clientHeight = window.innerHeight;
}
switch (event.keyCode) {
case key.up:
y = -options.arrowScroll;
break;
case key.down:
y = options.arrowScroll;
break;
case key.spacebar: // (+ shift)
shift = event.shiftKey ? 1 : -1;
y = -shift * clientHeight * 0.9;
break;
case key.pageup:
y = -clientHeight * 0.9;
break;
case key.pagedown:
y = clientHeight * 0.9;
break;
case key.home:
if (overflowing == document.body && document.scrollingElement)
overflowing = document.scrollingElement;
y = -overflowing.scrollTop;
break;
case key.end:
var scroll = overflowing.scrollHeight - overflowing.scrollTop;
var scrollRemaining = scroll - clientHeight;
y = (scrollRemaining > 0) ? scrollRemaining + 10 : 0;
break;
case key.left:
x = -options.arrowScroll;
break;
case key.right:
x = options.arrowScroll;
break;
default:
return true; // a key we don't care about
}
scrollArray(overflowing, x, y);
event.preventDefault();
scheduleClearCache();
}
/**
* Mousedown event only for updating activeElement
*/
function mousedown(event) {
activeElement = event.target;
}
/***********************************************
* OVERFLOW
***********************************************/
var uniqueID = (function () {
var i = 0;
return function (el) {
return el.uniqueID || (el.uniqueID = i++);
};
})();
var cacheX = {}; // cleared out after a scrolling session
var cacheY = {}; // cleared out after a scrolling session
var clearCacheTimer;
var smoothBehaviorForElement = {};
//setInterval(function () { cache = {}; }, 10 * 1000);
function scheduleClearCache() {
clearTimeout(clearCacheTimer);
clearCacheTimer = setInterval(function () {
cacheX = cacheY = smoothBehaviorForElement = {};
}, 1*1000);
}
function setCache(elems, overflowing, x) {
var cache = x ? cacheX : cacheY;
for (var i = elems.length; i--;)
cache[uniqueID(elems[i])] = overflowing;
return overflowing;
}
function getCache(el, x) {
return (x ? cacheX : cacheY)[uniqueID(el)];
}
// (body) (root)
// | hidden | visible | scroll | auto |
// hidden | no | no | YES | YES |
// visible | no | YES | YES | YES |
// scroll | no | YES | YES | YES |
// auto | no | YES | YES | YES |
function overflowingAncestor(el) {
var elems = [];
var body = document.body;
var rootScrollHeight = root.scrollHeight;
do {
var cached = getCache(el, false);
if (cached) {
return setCache(elems, cached);
}
elems.push(el);
if (rootScrollHeight === el.scrollHeight) {
var topOverflowsNotHidden = overflowNotHidden(root) && overflowNotHidden(body);
var isOverflowCSS = topOverflowsNotHidden || overflowAutoOrScroll(root);
if (isFrame && isContentOverflowing(root) ||
!isFrame && isOverflowCSS) {
return setCache(elems, getScrollRoot());
}
} else if (isContentOverflowing(el) && overflowAutoOrScroll(el)) {
return setCache(elems, el);
}
} while ((el = el.parentElement));
}
function isContentOverflowing(el) {
return (el.clientHeight + 10 < el.scrollHeight);
}
// typically for <body> and <html>
function overflowNotHidden(el) {
var overflow = getComputedStyle(el, '').getPropertyValue('overflow-y');
return (overflow !== 'hidden');
}
// for all other elements
function overflowAutoOrScroll(el) {
var overflow = getComputedStyle(el, '').getPropertyValue('overflow-y');
return (overflow === 'scroll' || overflow === 'auto');
}
// for all other elements
function isScrollBehaviorSmooth(el) {
var id = uniqueID(el);
if (smoothBehaviorForElement[id] == null) {
var scrollBehavior = getComputedStyle(el, '')['scroll-behavior'];
smoothBehaviorForElement[id] = ('smooth' == scrollBehavior);
}
return smoothBehaviorForElement[id];
}
/***********************************************
* HELPERS
***********************************************/
function addEvent(type, fn, arg) {
window.addEventListener(type, fn, arg || false);
}
function removeEvent(type, fn, arg) {
window.removeEventListener(type, fn, arg || false);
}
function isNodeName(el, tag) {
return el && (el.nodeName||'').toLowerCase() === tag.toLowerCase();
}
function directionCheck(x, y) {
x = (x > 0) ? 1 : -1;
y = (y > 0) ? 1 : -1;
if (direction.x !== x || direction.y !== y) {
direction.x = x;
direction.y = y;
que = [];
lastScroll = 0;
}
}
if (window.localStorage && localStorage.SS_deltaBuffer) {
try { // #46 Safari throws in private browsing for localStorage
deltaBuffer = localStorage.SS_deltaBuffer.split(',');
} catch (e) { }
}
function isTouchpad(deltaY) {
if (!deltaY) return;
if (!deltaBuffer.length) {
deltaBuffer = [deltaY, deltaY, deltaY];
}
deltaY = Math.abs(deltaY);
deltaBuffer.push(deltaY);
deltaBuffer.shift();
clearTimeout(deltaBufferTimer);
deltaBufferTimer = setTimeout(function () {
try { // #46 Safari throws in private browsing for localStorage
localStorage.SS_deltaBuffer = deltaBuffer.join(',');
} catch (e) { }
}, 1000);
var dpiScaledWheelDelta = deltaY > 120 && allDeltasDivisableBy(deltaY); // win64
var tp = !allDeltasDivisableBy(120) && !allDeltasDivisableBy(100) && !dpiScaledWheelDelta;
if (deltaY < 50) return true;
return tp;
}
function isDivisible(n, divisor) {
return (Math.floor(n / divisor) == n / divisor);
}
function allDeltasDivisableBy(divisor) {
return (isDivisible(deltaBuffer[0], divisor) &&
isDivisible(deltaBuffer[1], divisor) &&
isDivisible(deltaBuffer[2], divisor));
}
function isInsideYoutubeVideo(event) {
var elem = event.target;
var isControl = false;
if (document.URL.indexOf ('www.youtube.com/watch') != -1) {
do {
isControl = (elem.classList &&
elem.classList.contains('html5-video-controls'));
if (isControl) break;
} while ((elem = elem.parentNode));
}
return isControl;
}
var requestFrame = (function () {
return (window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (callback, element, delay) {
window.setTimeout(callback, delay || (1000/60));
});
})();
var MutationObserver = (window.MutationObserver ||
window.WebKitMutationObserver ||
window.MozMutationObserver);
var getScrollRoot = (function() {
var SCROLL_ROOT = document.scrollingElement;
return function() {
if (!SCROLL_ROOT) {
var dummy = document.createElement('div');
dummy.style.cssText = 'height:10000px;width:1px;';
document.body.appendChild(dummy);
var bodyScrollTop = document.body.scrollTop;
var docElScrollTop = document.documentElement.scrollTop;
window.scrollBy(0, 3);
if (document.body.scrollTop != bodyScrollTop)
(SCROLL_ROOT = document.body);
else
(SCROLL_ROOT = document.documentElement);
window.scrollBy(0, -3);
document.body.removeChild(dummy);
}
return SCROLL_ROOT;
};
})();
/***********************************************
* PULSE (by Michael Herf)
***********************************************/
/**
* Viscous fluid with a pulse for part and decay for the rest.
* - Applies a fixed force over an interval (a damped acceleration), and
* - Lets the exponential bleed away the velocity over a longer interval
* - Michael Herf, http://stereopsis.com/stopping/
*/
function pulse_(x) {
var val, start, expx;
// test
x = x * options.pulseScale;
if (x < 1) { // acceleartion
val = x - (1 - Math.exp(-x));
} else { // tail
// the previous animation ended here:
start = Math.exp(-1);
// simple viscous drag
x -= 1;
expx = 1 - Math.exp(-x);
val = start + (expx * (1 - start));
}
return val * options.pulseNormalize;
}
function pulse(x) {
if (x >= 1) return 1;
if (x <= 0) return 0;
if (options.pulseNormalize == 1) {
options.pulseNormalize /= pulse_(1);
}
return pulse_(x);
}
/***********************************************
* FIRST RUN
***********************************************/
var userAgent = window.navigator.userAgent;
var isEdge = /Edge/.test(userAgent); // thank you MS
var isChrome = /chrome/i.test(userAgent) && !isEdge;
var isSafari = /safari/i.test(userAgent) && !isEdge;
var isMobile = /mobile/i.test(userAgent);
var isIEWin7 = /Windows NT 6.1/i.test(userAgent) && /rv:11/i.test(userAgent);
var isOldSafari = isSafari && (/Version\/8/i.test(userAgent) || /Version\/9/i.test(userAgent));
var isEnabledForBrowser = (isChrome || isSafari || isIEWin7) && !isMobile;
var supportsPassive = false;
try {
window.addEventListener("test", null, Object.defineProperty({}, 'passive', {
get: function () {
supportsPassive = true;
}
}));
} catch(e) {}
var wheelOpt = supportsPassive ? { passive: false } : false;
var wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel';
if (wheelEvent && isEnabledForBrowser) {
addEvent(wheelEvent, wheel, wheelOpt);
addEvent('mousedown', mousedown);
addEvent('load', init);
}
/***********************************************
* PUBLIC INTERFACE
***********************************************/
function SmoothScroll(optionsToSet) {
for (var key in optionsToSet)
if (defaultOptions.hasOwnProperty(key))
options[key] = optionsToSet[key];
}
SmoothScroll.destroy = cleanup;
if (window.SmoothScrollOptions) // async API
SmoothScroll(window.SmoothScrollOptions);
if (typeof define === 'function' && define.amd)
define(function() {
return SmoothScroll;
});
else if ('object' == typeof exports)
module.exports = SmoothScroll;
else
window.SmoothScroll = SmoothScroll;
})();

934
app/assets/socicon/css/styles.css Executable file
View File

@@ -0,0 +1,934 @@
@charset "UTF-8";
@font-face {
font-family: 'Socicon';
src: url('../fonts/socicon.eot');
src: url('../fonts/socicon.eot?#iefix') format('embedded-opentype'),
url('../fonts/socicon.woff2') format('woff2'),
url('../fonts/socicon.ttf') format('truetype'),
url('../fonts/socicon.woff') format('woff'),
url('../fonts/socicon.svg#socicon') format('svg');
font-weight: normal;
font-style: normal;
font-display: swap;
}
[data-icon]:before {
font-family: "socicon" !important;
content: attr(data-icon);
font-style: normal !important;
font-weight: normal !important;
font-variant: normal !important;
text-transform: none !important;
speak: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
[class^="socicon-"], [class*=" socicon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'Socicon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.socicon-eitaa:before {
content: "\e97c";
}
.socicon-soroush:before {
content: "\e97d";
}
.socicon-bale:before {
content: "\e97e";
}
.socicon-zazzle:before {
content: "\e97b";
}
.socicon-society6:before {
content: "\e97a";
}
.socicon-redbubble:before {
content: "\e979";
}
.socicon-avvo:before {
content: "\e978";
}
.socicon-stitcher:before {
content: "\e977";
}
.socicon-googlehangouts:before {
content: "\e974";
}
.socicon-dlive:before {
content: "\e975";
}
.socicon-vsco:before {
content: "\e976";
}
.socicon-flipboard:before {
content: "\e973";
}
.socicon-ubuntu:before {
content: "\e958";
}
.socicon-artstation:before {
content: "\e959";
}
.socicon-invision:before {
content: "\e95a";
}
.socicon-torial:before {
content: "\e95b";
}
.socicon-collectorz:before {
content: "\e95c";
}
.socicon-seenthis:before {
content: "\e95d";
}
.socicon-googleplaymusic:before {
content: "\e95e";
}
.socicon-debian:before {
content: "\e95f";
}
.socicon-filmfreeway:before {
content: "\e960";
}
.socicon-gnome:before {
content: "\e961";
}
.socicon-itchio:before {
content: "\e962";
}
.socicon-jamendo:before {
content: "\e963";
}
.socicon-mix:before {
content: "\e964";
}
.socicon-sharepoint:before {
content: "\e965";
}
.socicon-tinder:before {
content: "\e966";
}
.socicon-windguru:before {
content: "\e967";
}
.socicon-cdbaby:before {
content: "\e968";
}
.socicon-elementaryos:before {
content: "\e969";
}
.socicon-stage32:before {
content: "\e96a";
}
.socicon-tiktok:before {
content: "\e96b";
}
.socicon-gitter:before {
content: "\e96c";
}
.socicon-letterboxd:before {
content: "\e96d";
}
.socicon-threema:before {
content: "\e96e";
}
.socicon-splice:before {
content: "\e96f";
}
.socicon-metapop:before {
content: "\e970";
}
.socicon-naver:before {
content: "\e971";
}
.socicon-remote:before {
content: "\e972";
}
.socicon-internet:before {
content: "\e957";
}
.socicon-moddb:before {
content: "\e94b";
}
.socicon-indiedb:before {
content: "\e94c";
}
.socicon-traxsource:before {
content: "\e94d";
}
.socicon-gamefor:before {
content: "\e94e";
}
.socicon-pixiv:before {
content: "\e94f";
}
.socicon-myanimelist:before {
content: "\e950";
}
.socicon-blackberry:before {
content: "\e951";
}
.socicon-wickr:before {
content: "\e952";
}
.socicon-spip:before {
content: "\e953";
}
.socicon-napster:before {
content: "\e954";
}
.socicon-beatport:before {
content: "\e955";
}
.socicon-hackerone:before {
content: "\e956";
}
.socicon-hackernews:before {
content: "\e946";
}
.socicon-smashwords:before {
content: "\e947";
}
.socicon-kobo:before {
content: "\e948";
}
.socicon-bookbub:before {
content: "\e949";
}
.socicon-mailru:before {
content: "\e94a";
}
.socicon-gitlab:before {
content: "\e945";
}
.socicon-instructables:before {
content: "\e944";
}
.socicon-portfolio:before {
content: "\e943";
}
.socicon-codered:before {
content: "\e940";
}
.socicon-origin:before {
content: "\e941";
}
.socicon-nextdoor:before {
content: "\e942";
}
.socicon-udemy:before {
content: "\e93f";
}
.socicon-livemaster:before {
content: "\e93e";
}
.socicon-crunchbase:before {
content: "\e93b";
}
.socicon-homefy:before {
content: "\e93c";
}
.socicon-calendly:before {
content: "\e93d";
}
.socicon-realtor:before {
content: "\e90f";
}
.socicon-tidal:before {
content: "\e910";
}
.socicon-qobuz:before {
content: "\e911";
}
.socicon-natgeo:before {
content: "\e912";
}
.socicon-mastodon:before {
content: "\e913";
}
.socicon-unsplash:before {
content: "\e914";
}
.socicon-homeadvisor:before {
content: "\e915";
}
.socicon-angieslist:before {
content: "\e916";
}
.socicon-codepen:before {
content: "\e917";
}
.socicon-slack:before {
content: "\e918";
}
.socicon-openaigym:before {
content: "\e919";
}
.socicon-logmein:before {
content: "\e91a";
}
.socicon-fiverr:before {
content: "\e91b";
}
.socicon-gotomeeting:before {
content: "\e91c";
}
.socicon-aliexpress:before {
content: "\e91d";
}
.socicon-guru:before {
content: "\e91e";
}
.socicon-appstore:before {
content: "\e91f";
}
.socicon-homes:before {
content: "\e920";
}
.socicon-zoom:before {
content: "\e921";
}
.socicon-alibaba:before {
content: "\e922";
}
.socicon-craigslist:before {
content: "\e923";
}
.socicon-wix:before {
content: "\e924";
}
.socicon-redfin:before {
content: "\e925";
}
.socicon-googlecalendar:before {
content: "\e926";
}
.socicon-shopify:before {
content: "\e927";
}
.socicon-freelancer:before {
content: "\e928";
}
.socicon-seedrs:before {
content: "\e929";
}
.socicon-bing:before {
content: "\e92a";
}
.socicon-doodle:before {
content: "\e92b";
}
.socicon-bonanza:before {
content: "\e92c";
}
.socicon-squarespace:before {
content: "\e92d";
}
.socicon-toptal:before {
content: "\e92e";
}
.socicon-gust:before {
content: "\e92f";
}
.socicon-ask:before {
content: "\e930";
}
.socicon-trulia:before {
content: "\e931";
}
.socicon-loomly:before {
content: "\e932";
}
.socicon-ghost:before {
content: "\e933";
}
.socicon-upwork:before {
content: "\e934";
}
.socicon-fundable:before {
content: "\e935";
}
.socicon-booking:before {
content: "\e936";
}
.socicon-googlemaps:before {
content: "\e937";
}
.socicon-zillow:before {
content: "\e938";
}
.socicon-niconico:before {
content: "\e939";
}
.socicon-toneden:before {
content: "\e93a";
}
.socicon-augment:before {
content: "\e908";
}
.socicon-bitbucket:before {
content: "\e909";
}
.socicon-fyuse:before {
content: "\e90a";
}
.socicon-yt-gaming:before {
content: "\e90b";
}
.socicon-sketchfab:before {
content: "\e90c";
}
.socicon-mobcrush:before {
content: "\e90d";
}
.socicon-microsoft:before {
content: "\e90e";
}
.socicon-pandora:before {
content: "\e907";
}
.socicon-messenger:before {
content: "\e906";
}
.socicon-gamewisp:before {
content: "\e905";
}
.socicon-bloglovin:before {
content: "\e904";
}
.socicon-tunein:before {
content: "\e903";
}
.socicon-gamejolt:before {
content: "\e901";
}
.socicon-trello:before {
content: "\e902";
}
.socicon-spreadshirt:before {
content: "\e900";
}
.socicon-500px:before {
content: "\e000";
}
.socicon-8tracks:before {
content: "\e001";
}
.socicon-airbnb:before {
content: "\e002";
}
.socicon-alliance:before {
content: "\e003";
}
.socicon-amazon:before {
content: "\e004";
}
.socicon-amplement:before {
content: "\e005";
}
.socicon-android:before {
content: "\e006";
}
.socicon-angellist:before {
content: "\e007";
}
.socicon-apple:before {
content: "\e008";
}
.socicon-appnet:before {
content: "\e009";
}
.socicon-baidu:before {
content: "\e00a";
}
.socicon-bandcamp:before {
content: "\e00b";
}
.socicon-battlenet:before {
content: "\e00c";
}
.socicon-mixer:before {
content: "\e00d";
}
.socicon-bebee:before {
content: "\e00e";
}
.socicon-bebo:before {
content: "\e00f";
}
.socicon-behance:before {
content: "\e010";
}
.socicon-blizzard:before {
content: "\e011";
}
.socicon-blogger:before {
content: "\e012";
}
.socicon-buffer:before {
content: "\e013";
}
.socicon-chrome:before {
content: "\e014";
}
.socicon-coderwall:before {
content: "\e015";
}
.socicon-curse:before {
content: "\e016";
}
.socicon-dailymotion:before {
content: "\e017";
}
.socicon-deezer:before {
content: "\e018";
}
.socicon-delicious:before {
content: "\e019";
}
.socicon-deviantart:before {
content: "\e01a";
}
.socicon-diablo:before {
content: "\e01b";
}
.socicon-digg:before {
content: "\e01c";
}
.socicon-discord:before {
content: "\e01d";
}
.socicon-disqus:before {
content: "\e01e";
}
.socicon-douban:before {
content: "\e01f";
}
.socicon-draugiem:before {
content: "\e020";
}
.socicon-dribbble:before {
content: "\e021";
}
.socicon-drupal:before {
content: "\e022";
}
.socicon-ebay:before {
content: "\e023";
}
.socicon-ello:before {
content: "\e024";
}
.socicon-endomodo:before {
content: "\e025";
}
.socicon-envato:before {
content: "\e026";
}
.socicon-etsy:before {
content: "\e027";
}
.socicon-facebook:before {
content: "\e028";
}
.socicon-feedburner:before {
content: "\e029";
}
.socicon-filmweb:before {
content: "\e02a";
}
.socicon-firefox:before {
content: "\e02b";
}
.socicon-flattr:before {
content: "\e02c";
}
.socicon-flickr:before {
content: "\e02d";
}
.socicon-formulr:before {
content: "\e02e";
}
.socicon-forrst:before {
content: "\e02f";
}
.socicon-foursquare:before {
content: "\e030";
}
.socicon-friendfeed:before {
content: "\e031";
}
.socicon-github:before {
content: "\e032";
}
.socicon-goodreads:before {
content: "\e033";
}
.socicon-google:before {
content: "\e034";
}
.socicon-googlescholar:before {
content: "\e035";
}
.socicon-googlegroups:before {
content: "\e036";
}
.socicon-googlephotos:before {
content: "\e037";
}
.socicon-googleplus:before {
content: "\e038";
}
.socicon-grooveshark:before {
content: "\e039";
}
.socicon-hackerrank:before {
content: "\e03a";
}
.socicon-hearthstone:before {
content: "\e03b";
}
.socicon-hellocoton:before {
content: "\e03c";
}
.socicon-heroes:before {
content: "\e03d";
}
.socicon-smashcast:before {
content: "\e03e";
}
.socicon-horde:before {
content: "\e03f";
}
.socicon-houzz:before {
content: "\e040";
}
.socicon-icq:before {
content: "\e041";
}
.socicon-identica:before {
content: "\e042";
}
.socicon-imdb:before {
content: "\e043";
}
.socicon-instagram:before {
content: "\e044";
}
.socicon-issuu:before {
content: "\e045";
}
.socicon-istock:before {
content: "\e046";
}
.socicon-itunes:before {
content: "\e047";
}
.socicon-keybase:before {
content: "\e048";
}
.socicon-lanyrd:before {
content: "\e049";
}
.socicon-lastfm:before {
content: "\e04a";
}
.socicon-line:before {
content: "\e04b";
}
.socicon-linkedin:before {
content: "\e04c";
}
.socicon-livejournal:before {
content: "\e04d";
}
.socicon-lyft:before {
content: "\e04e";
}
.socicon-macos:before {
content: "\e04f";
}
.socicon-mail:before {
content: "\e050";
}
.socicon-medium:before {
content: "\e051";
}
.socicon-meetup:before {
content: "\e052";
}
.socicon-mixcloud:before {
content: "\e053";
}
.socicon-modelmayhem:before {
content: "\e054";
}
.socicon-mumble:before {
content: "\e055";
}
.socicon-myspace:before {
content: "\e056";
}
.socicon-newsvine:before {
content: "\e057";
}
.socicon-nintendo:before {
content: "\e058";
}
.socicon-npm:before {
content: "\e059";
}
.socicon-odnoklassniki:before {
content: "\e05a";
}
.socicon-openid:before {
content: "\e05b";
}
.socicon-opera:before {
content: "\e05c";
}
.socicon-outlook:before {
content: "\e05d";
}
.socicon-overwatch:before {
content: "\e05e";
}
.socicon-patreon:before {
content: "\e05f";
}
.socicon-paypal:before {
content: "\e060";
}
.socicon-periscope:before {
content: "\e061";
}
.socicon-persona:before {
content: "\e062";
}
.socicon-pinterest:before {
content: "\e063";
}
.socicon-play:before {
content: "\e064";
}
.socicon-player:before {
content: "\e065";
}
.socicon-playstation:before {
content: "\e066";
}
.socicon-pocket:before {
content: "\e067";
}
.socicon-qq:before {
content: "\e068";
}
.socicon-quora:before {
content: "\e069";
}
.socicon-raidcall:before {
content: "\e06a";
}
.socicon-ravelry:before {
content: "\e06b";
}
.socicon-reddit:before {
content: "\e06c";
}
.socicon-renren:before {
content: "\e06d";
}
.socicon-researchgate:before {
content: "\e06e";
}
.socicon-residentadvisor:before {
content: "\e06f";
}
.socicon-reverbnation:before {
content: "\e070";
}
.socicon-rss:before {
content: "\e071";
}
.socicon-sharethis:before {
content: "\e072";
}
.socicon-skype:before {
content: "\e073";
}
.socicon-slideshare:before {
content: "\e074";
}
.socicon-smugmug:before {
content: "\e075";
}
.socicon-snapchat:before {
content: "\e076";
}
.socicon-songkick:before {
content: "\e077";
}
.socicon-soundcloud:before {
content: "\e078";
}
.socicon-spotify:before {
content: "\e079";
}
.socicon-stackexchange:before {
content: "\e07a";
}
.socicon-stackoverflow:before {
content: "\e07b";
}
.socicon-starcraft:before {
content: "\e07c";
}
.socicon-stayfriends:before {
content: "\e07d";
}
.socicon-steam:before {
content: "\e07e";
}
.socicon-storehouse:before {
content: "\e07f";
}
.socicon-strava:before {
content: "\e080";
}
.socicon-streamjar:before {
content: "\e081";
}
.socicon-stumbleupon:before {
content: "\e082";
}
.socicon-swarm:before {
content: "\e083";
}
.socicon-teamspeak:before {
content: "\e084";
}
.socicon-teamviewer:before {
content: "\e085";
}
.socicon-technorati:before {
content: "\e086";
}
.socicon-telegram:before {
content: "\e087";
}
.socicon-tripadvisor:before {
content: "\e088";
}
.socicon-tripit:before {
content: "\e089";
}
.socicon-triplej:before {
content: "\e08a";
}
.socicon-tumblr:before {
content: "\e08b";
}
.socicon-twitch:before {
content: "\e08c";
}
.socicon-twitter:before {
content: "\e08d";
}
.socicon-uber:before {
content: "\e08e";
}
.socicon-ventrilo:before {
content: "\e08f";
}
.socicon-viadeo:before {
content: "\e090";
}
.socicon-viber:before {
content: "\e091";
}
.socicon-viewbug:before {
content: "\e092";
}
.socicon-vimeo:before {
content: "\e093";
}
.socicon-vine:before {
content: "\e094";
}
.socicon-vkontakte:before {
content: "\e095";
}
.socicon-warcraft:before {
content: "\e096";
}
.socicon-wechat:before {
content: "\e097";
}
.socicon-weibo:before {
content: "\e098";
}
.socicon-whatsapp:before {
content: "\e099";
}
.socicon-wikipedia:before {
content: "\e09a";
}
.socicon-windows:before {
content: "\e09b";
}
.socicon-wordpress:before {
content: "\e09c";
}
.socicon-wykop:before {
content: "\e09d";
}
.socicon-xbox:before {
content: "\e09e";
}
.socicon-xing:before {
content: "\e09f";
}
.socicon-yahoo:before {
content: "\e0a0";
}
.socicon-yammer:before {
content: "\e0a1";
}
.socicon-yandex:before {
content: "\e0a2";
}
.socicon-yelp:before {
content: "\e0a3";
}
.socicon-younow:before {
content: "\e0a4";
}
.socicon-youtube:before {
content: "\e0a5";
}
.socicon-zapier:before {
content: "\e0a6";
}
.socicon-zerply:before {
content: "\e0a7";
}
.socicon-zomato:before {
content: "\e0a8";
}
.socicon-zynga:before {
content: "\e0a9";
}

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

960
app/assets/theme/css/style.css Executable file
View File

@@ -0,0 +1,960 @@
@charset "UTF-8";
section {
background-color: #ffffff;
}
body.modal-open {
font-style: normal;
line-height: 1.5;
font-weight: 400;
color: #232323;
position: relative;
overflow: hidden; /* Verhindert Scrollen auf der Website */
}
button {
background-color: transparent;
border-color: transparent;
}
.embla__button,
.carousel-control {
background-color: #edefea !important;
opacity: 0.8 !important;
color: #464845 !important;
border-color: #edefea !important;
}
.carousel .close,
.modalWindow .close {
background-color: #edefea !important;
color: #464845 !important;
border-color: #edefea !important;
opacity: 0.8 !important;
}
.carousel .close:hover,
.modalWindow .close:hover {
opacity: 1 !important;
}
.carousel-indicators li {
background-color: #edefea !important;
border: 2px solid #464845 !important;
}
.carousel-indicators li:hover,
.carousel-indicators li:active {
opacity: 0.8 !important;
}
.embla__button:hover,
.carousel-control:hover {
background-color: #edefea !important;
opacity: 1 !important;
}
.modalWindow-video-container {
height: 80%;
}
section,
.container,
.container-fluid {
position: relative;
word-wrap: break-word;
}
a.mbr-iconfont:hover {
text-decoration: none;
}
.article .lead p,
.article .lead ul,
.article .lead ol,
.article .lead pre,
.article .lead blockquote {
margin-bottom: 0;
}
a {
font-style: normal;
font-weight: 400;
cursor: pointer;
}
a, a:hover {
text-decoration: none;
}
.mbr-section-title {
font-style: normal;
line-height: 1.3;
}
.mbr-section-subtitle {
line-height: 1.3;
}
.mbr-text {
font-style: normal;
line-height: 1.7;
}
h1,
h2,
h3,
h4,
h5,
h6,
.display-1,
.display-2,
.display-4,
.display-5,
.display-7,
span,
p,
a {
line-height: 1;
word-break: break-word;
word-wrap: break-word;
font-weight: 400;
}
b,
strong {
font-weight: bold;
}
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, input:-webkit-autofill:active {
transition-delay: 9999s;
-webkit-transition-property: background-color, color;
transition-property: background-color, color;
}
textarea[type=hidden] {
display: none;
}
section {
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
}
section .mbr-background-video,
section .mbr-background-video-preview {
position: absolute;
bottom: 0;
left: 0;
right: 0;
top: 0;
}
.hidden {
visibility: hidden;
}
.mbr-z-index20 {
z-index: 20;
}
/*! Base colors */
.mbr-white {
color: #ffffff;
}
.mbr-black {
color: #111111;
}
.mbr-bg-white {
background-color: #ffffff;
}
.mbr-bg-black {
background-color: #000000;
}
/*! Text-aligns */
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
/*! Font-weight */
.mbr-light {
font-weight: 300;
}
.mbr-regular {
font-weight: 400;
}
.mbr-semibold {
font-weight: 500;
}
.mbr-bold {
font-weight: 700;
}
/*! Media */
.media-content {
flex-basis: 100%;
}
.media-container-row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-content: center;
align-items: start;
}
.media-container-row .media-size-item {
width: 400px;
}
.media-container-column {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
align-content: center;
align-items: stretch;
}
.media-container-column > * {
width: 100%;
}
@media (min-width: 992px) {
.media-container-row {
flex-wrap: nowrap;
}
}
figure {
margin-bottom: 0;
overflow: hidden;
}
figure[mbr-media-size] {
transition: width 0.1s;
}
img,
iframe {
display: block;
width: 100%;
}
.card {
background-color: transparent;
border: none;
}
.card-box {
width: 100%;
}
.card-img {
text-align: center;
flex-shrink: 0;
-webkit-flex-shrink: 0;
}
.media {
max-width: 100%;
margin: 0 auto;
}
.mbr-figure {
align-self: center;
}
.media-container > div {
max-width: 100%;
}
.mbr-figure img,
.card-img img {
width: 100%;
}
@media (max-width: 991px) {
.media-size-item {
width: auto !important;
}
.media {
width: auto;
}
.mbr-figure {
width: 100% !important;
}
}
/*! Buttons */
.mbr-section-btn {
margin-left: -0.6rem;
margin-right: -0.6rem;
font-size: 0;
}
.btn {
font-weight: 600;
border-width: 1px;
font-style: normal;
margin: 0.6rem 0.6rem;
white-space: normal;
transition: all 0.2s ease-in-out;
display: inline-flex;
align-items: center;
justify-content: center;
word-break: break-word;
}
.btn-sm {
font-weight: 600;
letter-spacing: 0px;
transition: all 0.3s ease-in-out;
}
.btn-md {
font-weight: 600;
letter-spacing: 0px;
transition: all 0.3s ease-in-out;
}
.btn-lg {
font-weight: 600;
letter-spacing: 0px;
transition: all 0.3s ease-in-out;
}
.btn-form {
margin: 0;
}
.btn-form:hover {
cursor: pointer;
}
nav .mbr-section-btn {
margin-left: 0rem;
margin-right: 0rem;
}
/*! Btn icon margin */
.btn .mbr-iconfont,
.btn.btn-sm .mbr-iconfont {
order: 1;
cursor: pointer;
margin-left: 0.5rem;
vertical-align: sub;
}
.btn.btn-md .mbr-iconfont,
.btn.btn-md .mbr-iconfont {
margin-left: 0.8rem;
}
.mbr-regular {
font-weight: 400;
}
.mbr-semibold {
font-weight: 500;
}
.mbr-bold {
font-weight: 700;
}
[type=submit] {
-webkit-appearance: none;
}
/*! Full-screen */
.mbr-fullscreen .mbr-overlay {
min-height: 100vh;
}
.mbr-fullscreen {
display: flex;
display: -moz-flex;
display: -ms-flex;
display: -o-flex;
align-items: center;
min-height: 100vh;
padding-top: 3rem;
padding-bottom: 3rem;
}
/*! Map */
.map {
height: 25rem;
position: relative;
}
.map iframe {
width: 100%;
height: 100%;
}
/*! Scroll to top arrow */
.mbr-arrow-up {
bottom: 25px;
right: 90px;
position: fixed;
text-align: right;
z-index: 5000;
color: #ffffff;
font-size: 22px;
}
.mbr-arrow-up a {
background: rgba(0, 0, 0, 0.2);
border-radius: 50%;
color: #fff;
display: inline-block;
height: 60px;
width: 60px;
border: 2px solid #fff;
outline-style: none !important;
position: relative;
text-decoration: none;
transition: all 0.3s ease-in-out;
cursor: pointer;
text-align: center;
}
.mbr-arrow-up a:hover {
background-color: rgba(0, 0, 0, 0.4);
}
.mbr-arrow-up a i {
line-height: 60px;
}
.mbr-arrow-up-icon {
display: block;
color: #fff;
}
.mbr-arrow-up-icon::before {
content: "";
display: inline-block;
font-family: serif;
font-size: 22px;
line-height: 1;
font-style: normal;
position: relative;
top: 6px;
left: -4px;
transform: rotate(-90deg);
}
/*! Arrow Down */
.mbr-arrow {
position: absolute;
bottom: 45px;
left: 50%;
width: 60px;
height: 60px;
cursor: pointer;
background-color: rgba(80, 80, 80, 0.5);
border-radius: 50%;
transform: translateX(-50%);
}
@media (max-width: 767px) {
.mbr-arrow {
display: none;
}
}
.mbr-arrow > a {
display: inline-block;
text-decoration: none;
outline-style: none;
animation: arrowdown 1.7s ease-in-out infinite;
color: #ffffff;
}
.mbr-arrow > a > i {
position: absolute;
top: -2px;
left: 15px;
font-size: 2rem;
}
#scrollToTop a i::before {
content: "";
position: absolute;
display: block;
border-bottom: 2.5px solid #fff;
border-left: 2.5px solid #fff;
width: 27.8%;
height: 27.8%;
left: 50%;
top: 51%;
transform: translateY(-30%) translateX(-50%) rotate(135deg);
}
@keyframes arrowdown {
0% {
transform: translateY(0px);
}
50% {
transform: translateY(-5px);
}
100% {
transform: translateY(0px);
}
}
@media (max-width: 500px) {
.mbr-arrow-up {
left: 0;
right: 0;
text-align: center;
}
}
/*Gradients animation*/
@keyframes gradient-animation {
from {
background-position: 0% 100%;
animation-timing-function: ease-in-out;
}
to {
background-position: 100% 0%;
animation-timing-function: ease-in-out;
}
}
.bg-gradient {
background-size: 200% 200%;
animation: gradient-animation 5s infinite alternate;
-webkit-animation: gradient-animation 5s infinite alternate;
}
.menu .navbar-brand {
display: -webkit-flex;
}
.menu .navbar-brand span {
display: flex;
display: -webkit-flex;
}
.menu .navbar-brand .navbar-caption-wrap {
display: -webkit-flex;
}
.menu .navbar-brand .navbar-logo img {
display: -webkit-flex;
width: auto;
}
@media (min-width: 768px) and (max-width: 991px) {
.menu .navbar-toggleable-sm .navbar-nav {
display: -ms-flexbox;
}
}
@media (max-width: 991px) {
.menu .navbar-collapse {
max-height: 93.5vh;
}
.menu .navbar-collapse.show {
overflow: auto;
}
}
@media (min-width: 992px) {
.menu .navbar-nav.nav-dropdown {
display: -webkit-flex;
}
.menu .navbar-toggleable-sm .navbar-collapse {
display: -webkit-flex !important;
}
.menu .collapsed .navbar-collapse {
max-height: 93.5vh;
}
.menu .collapsed .navbar-collapse.show {
overflow: auto;
}
}
@media (max-width: 767px) {
.menu .navbar-collapse {
max-height: 80vh;
}
}
.nav-link .mbr-iconfont {
margin-right: 0.5rem;
}
.navbar {
display: -webkit-flex;
-webkit-flex-wrap: wrap;
-webkit-align-items: center;
-webkit-justify-content: space-between;
}
.navbar-collapse {
-webkit-flex-basis: 100%;
-webkit-flex-grow: 1;
-webkit-align-items: center;
}
.nav-dropdown .link {
padding: 0.667em 1.667em !important;
margin: 0 !important;
}
.nav {
display: -webkit-flex;
-webkit-flex-wrap: wrap;
}
.row {
display: -webkit-flex;
-webkit-flex-wrap: wrap;
}
.justify-content-center {
-webkit-justify-content: center;
}
.form-inline {
display: -webkit-flex;
}
.card-wrapper {
-webkit-flex: 1;
}
.carousel-control {
z-index: 10;
display: -webkit-flex;
}
.carousel-controls {
display: -webkit-flex;
}
.media {
display: -webkit-flex;
}
.form-group:focus {
outline: none;
}
.jq-selectbox__select {
padding: 7px 0;
position: relative;
}
.jq-selectbox__dropdown {
overflow: hidden;
border-radius: 10px;
position: absolute;
top: 100%;
left: 0 !important;
width: 100% !important;
}
.jq-selectbox__trigger-arrow {
right: 0;
transform: translateY(-50%);
}
.jq-selectbox li {
padding: 1.07em 0.5em;
}
input[type=range] {
padding-left: 0 !important;
padding-right: 0 !important;
}
.modal-dialog,
.modal-content {
height: 100%;
}
.modal-dialog .carousel-inner {
height: calc(100vh - 1.75rem);
}
@media (max-width: 575px) {
.modal-dialog .carousel-inner {
height: calc(100vh - 1rem);
}
}
.carousel-item {
text-align: center;
}
.carousel-item img {
margin: auto;
}
.navbar-toggler {
align-self: flex-start;
padding: 0.25rem 0.75rem;
font-size: 1.25rem;
line-height: 1;
background: transparent;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.navbar-toggler:focus,
.navbar-toggler:hover {
text-decoration: none;
box-shadow: none;
}
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
background: no-repeat center center;
background-size: 100% 100%;
}
.navbar-toggler-left {
position: absolute;
left: 1rem;
}
.navbar-toggler-right {
position: absolute;
right: 1rem;
}
.card-img {
width: auto;
}
.menu .navbar.collapsed:not(.beta-menu) {
flex-direction: column;
}
.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
display: flex;
}
.note-air-layout .dropup .dropdown-menu,
.note-air-layout .navbar-fixed-bottom .dropdown .dropdown-menu {
bottom: initial !important;
}
html,
body {
height: auto;
min-height: 100vh;
}
.dropup .dropdown-toggle::after {
display: none;
}
.form-asterisk {
font-family: initial;
position: absolute;
top: -2px;
font-weight: normal;
}
.form-control-label {
position: relative;
cursor: pointer;
margin-bottom: 0.357em;
padding: 0;
}
.alert {
color: #ffffff;
border-radius: 0;
border: 0;
font-size: 1.1rem;
line-height: 1.5;
margin-bottom: 1.875rem;
padding: 1.25rem;
position: relative;
text-align: center;
}
.alert.alert-form::after {
background-color: inherit;
bottom: -7px;
content: "";
display: block;
height: 14px;
left: 50%;
margin-left: -7px;
position: absolute;
transform: rotate(45deg);
width: 14px;
}
.form-control {
background-color: #ffffff;
background-clip: border-box;
color: #232323;
line-height: 1rem !important;
height: auto;
padding: 1.2rem 2rem;
transition: border-color 0.25s ease 0s;
border: 1px solid transparent !important;
border-radius: 4px;
box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px 0px, rgba(0, 0, 0, 0.07) 0px 1px 3px 0px, rgba(0, 0, 0, 0.03) 0px 0px 0px 1px;
}
.form-active .form-control:invalid {
border-color: red;
}
.row > * {
padding-right: 1rem;
padding-left: 1rem;
}
form .row {
margin-left: -0.6rem;
margin-right: -0.6rem;
}
form .row [class*=col] {
padding-left: 0.6rem;
padding-right: 0.6rem;
}
form .mbr-section-btn {
padding-left: 0.6rem;
padding-right: 0.6rem;
}
form .form-check-input {
margin-top: 0.5;
}
textarea.form-control {
line-height: 1.5rem !important;
}
.form-group {
margin-bottom: 1.2rem;
}
.form-control,
form .btn {
min-height: 48px;
}
.gdpr-block label span.textGDPR input[name=gdpr] {
top: 7px;
}
.form-control:focus {
box-shadow: none;
}
:focus {
outline: none;
}
.mbr-overlay {
background-color: #000;
bottom: 0;
left: 0;
opacity: 0.5;
position: absolute;
right: 0;
top: 0;
z-index: 0;
pointer-events: none;
}
blockquote {
font-style: italic;
padding: 3rem;
font-size: 1.09rem;
position: relative;
border-left: 3px solid;
}
ul,
ol,
pre,
blockquote {
margin-bottom: 2.3125rem;
}
.mt-4 {
margin-top: 2rem !important;
}
.mb-4 {
margin-bottom: 2rem !important;
}
.container,
.container-fluid {
padding-left: 16px;
padding-right: 16px;
}
.row {
margin-left: -16px;
margin-right: -16px;
}
.row > [class*=col] {
padding-left: 16px;
padding-right: 16px;
}
@media (min-width: 992px) {
.container-fluid {
padding-left: 32px;
padding-right: 32px;
}
}
@media (max-width: 991px) {
.mbr-container {
padding-left: 16px;
padding-right: 16px;
}
}
.app-video-wrapper > img {
opacity: 1;
}
.app-video-wrapper {
background: transparent;
}
.item {
position: relative;
}
.dropdown-menu .dropdown-menu {
left: 100%;
}
.dropdown-item + .dropdown-menu {
display: none;
}
.dropdown-item:hover + .dropdown-menu,
.dropdown-menu:hover {
display: block;
}
@media (min-aspect-ratio: 16/9) {
.mbr-video-foreground {
height: 300% !important;
top: -100% !important;
}
}
@media (max-aspect-ratio: 16/9) {
.mbr-video-foreground {
width: 300% !important;
left: -100% !important;
}
}

1698
app/assets/theme/js/script.js Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,498 @@
@font-face {
font-family: 'Moririse2';
font-display: swap;
src: url('mobirise2.eot?f2bix4');
src: url('mobirise2.eot?f2bix4#iefix') format('embedded-opentype'),
url('mobirise2.ttf?f2bix4') format('truetype'),
url('mobirise2.woff?f2bix4') format('woff'),
url('mobirise2.svg?f2bix4#mobirise2') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="mobi-"], [class*=" mobi-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'Moririse2' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.mobi-mbri-add-submenu:before {
content: "\e900";
}
.mobi-mbri-alert:before {
content: "\e901";
}
.mobi-mbri-align-center:before {
content: "\e902";
}
.mobi-mbri-align-justify:before {
content: "\e903";
}
.mobi-mbri-align-left:before {
content: "\e904";
}
.mobi-mbri-align-right:before {
content: "\e905";
}
.mobi-mbri-android:before {
content: "\e906";
}
.mobi-mbri-apple:before {
content: "\e907";
}
.mobi-mbri-arrow-down:before {
content: "\e908";
}
.mobi-mbri-arrow-next:before {
content: "\e909";
}
.mobi-mbri-arrow-prev:before {
content: "\e90a";
}
.mobi-mbri-arrow-up:before {
content: "\e90b";
}
.mobi-mbri-bold:before {
content: "\e90c";
}
.mobi-mbri-bookmark:before {
content: "\e90d";
}
.mobi-mbri-bootstrap:before {
content: "\e90e";
}
.mobi-mbri-briefcase:before {
content: "\e90f";
}
.mobi-mbri-browse:before {
content: "\e910";
}
.mobi-mbri-bulleted-list:before {
content: "\e911";
}
.mobi-mbri-calendar:before {
content: "\e912";
}
.mobi-mbri-camera:before {
content: "\e913";
}
.mobi-mbri-cart-add:before {
content: "\e914";
}
.mobi-mbri-cart-full:before {
content: "\e915";
}
.mobi-mbri-cash:before {
content: "\e916";
}
.mobi-mbri-change-style:before {
content: "\e917";
}
.mobi-mbri-chat:before {
content: "\e918";
}
.mobi-mbri-clock:before {
content: "\e919";
}
.mobi-mbri-close:before {
content: "\e91a";
}
.mobi-mbri-cloud:before {
content: "\e91b";
}
.mobi-mbri-code:before {
content: "\e91c";
}
.mobi-mbri-contact-form:before {
content: "\e91d";
}
.mobi-mbri-credit-card:before {
content: "\e91e";
}
.mobi-mbri-cursor-click:before {
content: "\e91f";
}
.mobi-mbri-cust-feedback:before {
content: "\e920";
}
.mobi-mbri-database:before {
content: "\e921";
}
.mobi-mbri-delivery:before {
content: "\e922";
}
.mobi-mbri-desktop:before {
content: "\e923";
}
.mobi-mbri-devices:before {
content: "\e924";
}
.mobi-mbri-down:before {
content: "\e925";
}
.mobi-mbri-download-2:before {
content: "\e926";
}
.mobi-mbri-download:before {
content: "\e927";
}
.mobi-mbri-drag-n-drop-2:before {
content: "\e928";
}
.mobi-mbri-drag-n-drop:before {
content: "\e929";
}
.mobi-mbri-edit-2:before {
content: "\e92a";
}
.mobi-mbri-edit:before {
content: "\e92b";
}
.mobi-mbri-error:before {
content: "\e92c";
}
.mobi-mbri-extension:before {
content: "\e92d";
}
.mobi-mbri-features:before {
content: "\e92e";
}
.mobi-mbri-file:before {
content: "\e92f";
}
.mobi-mbri-flag:before {
content: "\e930";
}
.mobi-mbri-folder:before {
content: "\e931";
}
.mobi-mbri-gift:before {
content: "\e932";
}
.mobi-mbri-github:before {
content: "\e933";
}
.mobi-mbri-globe-2:before {
content: "\e934";
}
.mobi-mbri-globe:before {
content: "\e935";
}
.mobi-mbri-growing-chart:before {
content: "\e936";
}
.mobi-mbri-hearth:before {
content: "\e937";
}
.mobi-mbri-help:before {
content: "\e938";
}
.mobi-mbri-home:before {
content: "\e939";
}
.mobi-mbri-hot-cup:before {
content: "\e93a";
}
.mobi-mbri-idea:before {
content: "\e93b";
}
.mobi-mbri-image-gallery:before {
content: "\e93c";
}
.mobi-mbri-image-slider:before {
content: "\e93d";
}
.mobi-mbri-info:before {
content: "\e93e";
}
.mobi-mbri-italic:before {
content: "\e93f";
}
.mobi-mbri-key:before {
content: "\e940";
}
.mobi-mbri-laptop:before {
content: "\e941";
}
.mobi-mbri-layers:before {
content: "\e942";
}
.mobi-mbri-left-right:before {
content: "\e943";
}
.mobi-mbri-left:before {
content: "\e944";
}
.mobi-mbri-letter:before {
content: "\e945";
}
.mobi-mbri-like:before {
content: "\e946";
}
.mobi-mbri-link:before {
content: "\e947";
}
.mobi-mbri-lock:before {
content: "\e948";
}
.mobi-mbri-login:before {
content: "\e949";
}
.mobi-mbri-logout:before {
content: "\e94a";
}
.mobi-mbri-magic-stick:before {
content: "\e94b";
}
.mobi-mbri-map-pin:before {
content: "\e94c";
}
.mobi-mbri-menu:before {
content: "\e94d";
}
.mobi-mbri-mobile-2:before {
content: "\e94e";
}
.mobi-mbri-mobile-horizontal:before {
content: "\e94f";
}
.mobi-mbri-mobile:before {
content: "\e950";
}
.mobi-mbri-mobirise:before {
content: "\e951";
}
.mobi-mbri-more-horizontal:before {
content: "\e952";
}
.mobi-mbri-more-vertical:before {
content: "\e953";
}
.mobi-mbri-music:before {
content: "\e954";
}
.mobi-mbri-new-file:before {
content: "\e955";
}
.mobi-mbri-numbered-list:before {
content: "\e956";
}
.mobi-mbri-opened-folder:before {
content: "\e957";
}
.mobi-mbri-pages:before {
content: "\e958";
}
.mobi-mbri-paper-plane:before {
content: "\e959";
}
.mobi-mbri-paperclip:before {
content: "\e95a";
}
.mobi-mbri-phone:before {
content: "\e95b";
}
.mobi-mbri-photo:before {
content: "\e95c";
}
.mobi-mbri-photos:before {
content: "\e95d";
}
.mobi-mbri-pin:before {
content: "\e95e";
}
.mobi-mbri-play:before {
content: "\e95f";
}
.mobi-mbri-plus:before {
content: "\e960";
}
.mobi-mbri-preview:before {
content: "\e961";
}
.mobi-mbri-print:before {
content: "\e962";
}
.mobi-mbri-protect:before {
content: "\e963";
}
.mobi-mbri-question:before {
content: "\e964";
}
.mobi-mbri-quote-left:before {
content: "\e965";
}
.mobi-mbri-quote-right:before {
content: "\e966";
}
.mobi-mbri-redo:before {
content: "\e967";
}
.mobi-mbri-refresh:before {
content: "\e968";
}
.mobi-mbri-responsive-2:before {
content: "\e969";
}
.mobi-mbri-responsive:before {
content: "\e96a";
}
.mobi-mbri-right:before {
content: "\e96b";
}
.mobi-mbri-rocket:before {
content: "\e96c";
}
.mobi-mbri-sad-face:before {
content: "\e96d";
}
.mobi-mbri-sale:before {
content: "\e96e";
}
.mobi-mbri-save:before {
content: "\e96f";
}
.mobi-mbri-search:before {
content: "\e970";
}
.mobi-mbri-setting-2:before {
content: "\e971";
}
.mobi-mbri-setting-3:before {
content: "\e972";
}
.mobi-mbri-setting:before {
content: "\e973";
}
.mobi-mbri-share:before {
content: "\e974";
}
.mobi-mbri-shopping-bag:before {
content: "\e975";
}
.mobi-mbri-shopping-basket:before {
content: "\e976";
}
.mobi-mbri-shopping-cart:before {
content: "\e977";
}
.mobi-mbri-sites:before {
content: "\e978";
}
.mobi-mbri-smile-face:before {
content: "\e979";
}
.mobi-mbri-speed:before {
content: "\e97a";
}
.mobi-mbri-star:before {
content: "\e97b";
}
.mobi-mbri-success:before {
content: "\e97c";
}
.mobi-mbri-sun:before {
content: "\e97d";
}
.mobi-mbri-sun2:before {
content: "\e97e";
}
.mobi-mbri-tablet-vertical:before {
content: "\e97f";
}
.mobi-mbri-tablet:before {
content: "\e980";
}
.mobi-mbri-target:before {
content: "\e981";
}
.mobi-mbri-timer:before {
content: "\e982";
}
.mobi-mbri-to-ftp:before {
content: "\e983";
}
.mobi-mbri-to-local-drive:before {
content: "\e984";
}
.mobi-mbri-touch-swipe:before {
content: "\e985";
}
.mobi-mbri-touch:before {
content: "\e986";
}
.mobi-mbri-trash:before {
content: "\e987";
}
.mobi-mbri-underline:before {
content: "\e988";
}
.mobi-mbri-undo:before {
content: "\e989";
}
.mobi-mbri-unlink:before {
content: "\e98a";
}
.mobi-mbri-unlock:before {
content: "\e98b";
}
.mobi-mbri-up-down:before {
content: "\e98c";
}
.mobi-mbri-up:before {
content: "\e98d";
}
.mobi-mbri-update:before {
content: "\e98e";
}
.mobi-mbri-upload-2:before {
content: "\e98f";
}
.mobi-mbri-upload:before {
content: "\e990";
}
.mobi-mbri-user-2:before {
content: "\e991";
}
.mobi-mbri-user:before {
content: "\e992";
}
.mobi-mbri-users:before {
content: "\e993";
}
.mobi-mbri-video-play:before {
content: "\e994";
}
.mobi-mbri-video:before {
content: "\e995";
}
.mobi-mbri-watch:before {
content: "\e996";
}
.mobi-mbri-website-theme-2:before {
content: "\e997";
}
.mobi-mbri-website-theme:before {
content: "\e998";
}
.mobi-mbri-wifi:before {
content: "\e999";
}
.mobi-mbri-windows:before {
content: "\e99a";
}
.mobi-mbri-zoom-in:before {
content: "\e99b";
}
.mobi-mbri-zoom-out:before {
content: "\e99c";
}

Binary file not shown.

View File

@@ -0,0 +1,167 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="mobirise-24px" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="mbri-add-submenu" d="M853.333 917.333h-853.333v-256h853.333v256zM768 746.667h-682.667v85.333h682.667v-85.333zM853.333 576h-853.333v-256h853.333v256zM768 405.333h-682.667v85.333h682.667v-85.333zM512 234.667v-256h512v256h-512zM938.667 64h-341.333v85.333h341.333v-85.333z" />
<glyph unicode="&#xe901;" glyph-name="mbri-alert" d="M810.667 192v341.333c0 166.4-132.267 298.667-298.667 298.667s-298.667-132.267-298.667-298.667v-341.333h-85.333v-85.333h256c0-72.533 55.467-128 128-128s128 55.467 128 128h256v85.333h-85.333zM512 64c-25.6 0-42.667 17.067-42.667 42.667h85.333c0-25.6-17.067-42.667-42.667-42.667zM725.333 192h-426.667v341.333c0 119.467 93.867 213.333 213.333 213.333s213.333-93.867 213.333-213.333v-341.333zM128 533.333h-85.333c0 123.733 46.933 243.2 136.533 332.8l59.733-59.733c-72.533-72.533-110.933-170.667-110.933-273.067zM981.333 533.333h-85.333c0 102.4-38.4 200.533-110.933 273.067l59.733 59.733c89.6-89.6 136.533-209.067 136.533-332.8z" />
<glyph unicode="&#xe902;" glyph-name="mbri-align-center" d="M768 704h-512v85.333h512v-85.333zM1024 576h-1024v-85.333h1024v85.333zM768 362.667h-512v-85.333h512v85.333zM1024 149.333h-1024v-85.333h1024v85.333z" />
<glyph unicode="&#xe903;" glyph-name="mbri-align-justify" d="M1024 704h-1024v85.333h1024v-85.333zM1024 576h-1024v-85.333h1024v85.333zM1024 362.667h-1024v-85.333h1024v85.333zM1024 149.333h-1024v-85.333h1024v85.333z" />
<glyph unicode="&#xe904;" glyph-name="mbri-align-left" d="M1024 704h-1024v85.333h1024v-85.333zM597.333 576h-597.333v-85.333h597.333v85.333zM1024 362.667h-1024v-85.333h1024v85.333zM597.333 149.333h-597.333v-85.333h597.333v85.333z" />
<glyph unicode="&#xe905;" glyph-name="mbri-align-right" d="M1024 721.067h-1024v68.267h1024v-68.267zM1024 584.533h-614.4v-68.267h614.4v68.267zM1024 379.733h-1024v-68.267h1024v68.267zM1024 174.933h-614.4v-68.267h614.4v68.267z" />
<glyph unicode="&#xe906;" glyph-name="mbri-android" d="M738.133 789.333l68.267 106.667-72.533 46.933-64-102.4c-51.2 21.333-102.4 34.133-157.867 34.133s-106.667-12.8-153.6-38.4l-68.267 102.4-68.267-42.667 64-106.667c-68.267-64-115.2-153.6-115.2-256v-469.333h128v-128h85.333v128h256v-128h85.333v128h128v469.333c0 102.4-46.933 192-115.2 256zM512 789.333c128 0 230.4-93.867 251.733-213.333h-503.467c21.333 119.467 123.733 213.333 251.733 213.333zM768 149.333h-512v341.333h512v-341.333zM42.667 448h85.333v-256h-85.333v256zM981.333 448v-256h-85.333v256h85.333z" />
<glyph unicode="&#xe907;" glyph-name="mbri-apple" d="M853.333 405.333c0 51.2 21.333 89.6 64 119.467l25.6 17.067-8.533 29.867c-17.067 51.2-51.2 93.867-98.133 123.733-46.933 34.133-102.4 51.2-153.6 51.2-34.133 0-59.733-12.8-81.067-21.333-25.6-12.8-51.2-21.333-89.6-21.333s-59.733 8.533-76.8 21.333c-21.333 8.533-46.933 21.333-93.867 21.333-72.533 0-136.533-29.867-183.467-85.333-46.933-59.733-72.533-149.333-72.533-256 0-102.4 34.133-217.6 89.6-315.733 25.6-42.667 51.2-81.067 81.067-106.667 29.867-29.867 59.733-46.933 85.333-46.933 46.933 0 72.533 8.533 102.4 21.333 0 0 42.667 21.333 68.267 21.333s42.667-8.533 64-17.067c0 0 59.733-25.6 106.667-25.6 25.6 0 59.733 21.333 72.533 29.867 21.333 17.067 46.933 42.667 72.533 72.533 51.2 59.733 89.6 132.267 106.667 200.533l8.533 29.867-25.6 17.067c-42.667 25.6-64 68.267-64 119.467zM759.467 89.6c-38.4-51.2-64-68.267-81.067-68.267-29.867 0-68.267 17.067-68.267 17.067-25.6 12.8-55.467 25.6-98.133 25.6s-102.4-25.6-102.4-25.6c-21.333-8.533-38.4-17.067-64-17.067-29.867 0-76.8 72.533-98.133 110.933-46.933 81.067-76.8 187.733-76.8 273.067 0 89.6 17.067 157.867 55.467 200.533 29.867 38.4 68.267 55.467 115.2 55.467 25.6 0 34.133-4.267 55.467-12.8 21.333-12.8 55.467-29.867 115.2-29.867 55.467 0 93.867 17.067 123.733 29.867 17.067 8.533 29.867 12.8 46.933 12.8 34.133 0 72.533-12.8 102.4-34.133 21.333-17.067 38.4-34.133 51.2-55.467-46.933-42.667-72.533-102.4-72.533-166.4 0-68.267 25.6-128 72.533-170.667-12.8-51.2-46.933-98.133-76.8-145.067zM541.867 759.467l-59.733 59.733 128 128 59.733-59.733-128-128z" />
<glyph unicode="&#xe908;" glyph-name="mbri-arrow-down" d="M59.733 763.733l452.267-452.267 452.267 452.267 59.733-59.733-512-512-512 512z" />
<glyph unicode="&#xe909;" glyph-name="mbri-arrow-next" d="M196.267-4.267l452.267 452.267-452.267 452.267 59.733 59.733 512-512-512-512z" />
<glyph unicode="&#xe90a;" glyph-name="mbri-arrow-prev" d="M827.733 900.267l-452.267-452.267 452.267-452.267-59.733-59.733-512 512 512 512z" />
<glyph unicode="&#xe90b;" glyph-name="mbri-arrow-up" d="M964.267 174.933l-452.267 452.267-452.267-452.267-59.733 59.733 512 512 512-512z" />
<glyph unicode="&#xe90c;" glyph-name="mbri-bold" d="M674.133 507.733c59.733 46.933 93.867 119.467 93.867 196.267 0 140.8-115.2 256-256 256h-298.667v-1024h341.333c166.4 0 298.667 132.267 298.667 298.667 0 119.467-72.533 226.133-179.2 273.067zM298.667 874.667h213.333c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667h-213.333v341.333zM554.667 21.333h-256v426.667h256c119.467 0 213.333-93.867 213.333-213.333s-93.867-213.333-213.333-213.333z" />
<glyph unicode="&#xe90d;" glyph-name="mbri-bookmark" d="M853.333-59.733l-341.333 243.2-341.333-243.2v1019.733h682.667v-1019.733zM512 285.867l256-183.467v772.267h-512v-772.267l256 183.467z" />
<glyph unicode="&#xe90e;" glyph-name="mbri-bootstrap" d="M0 960v-1024h1024v1024h-1024zM938.667 21.333h-853.333v853.333h853.333v-853.333zM725.333 320c0 64-34.133 115.2-85.333 145.067 25.6 29.867 42.667 68.267 42.667 110.933 0 93.867-76.8 170.667-170.667 170.667h-170.667v-597.333h213.333c93.867 0 170.667 76.8 170.667 170.667zM426.667 661.333h85.333c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333h-85.333v170.667zM426.667 405.333h128c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333h-128v170.667z" />
<glyph unicode="&#xe90f;" glyph-name="mbri-briefcase" d="M725.333 704v170.667h-426.667v-170.667h-298.667v-682.667h1024v682.667h-298.667zM384 789.333h256v-85.333h-256v85.333zM938.667 106.667h-853.333v298.667h853.333v-298.667zM938.667 490.667h-853.333v128h853.333v-128z" />
<glyph unicode="&#xe910;" glyph-name="mbri-browse" d="M0 832v-768h1024v768h-1024zM938.667 149.333h-853.333v426.667h853.333v-426.667zM938.667 661.333h-853.333v85.333h853.333v-85.333zM358.4 192l98.133 98.133c17.067-8.533 34.133-12.8 55.467-12.8 72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128c0-21.333 4.267-38.4 12.8-55.467l-98.133-98.133 59.733-59.733zM512 448c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667-42.667 17.067-42.667 42.667 17.067 42.667 42.667 42.667z" />
<glyph unicode="&#xe911;" glyph-name="mbri-bulleted-list" d="M128 661.333c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM128 832c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667zM128 320c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM128 490.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667zM128-21.333c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM128 149.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667zM1024 832h-682.667v-85.333h682.667v85.333zM1024 490.667h-682.667v-85.333h682.667v85.333zM1024 149.333h-682.667v-85.333h682.667v85.333z" />
<glyph unicode="&#xe912;" glyph-name="mbri-calendar" d="M810.667 832v42.667h-85.333v-42.667h-426.667v42.667h-85.333v-42.667h-213.333v-810.667h1024v810.667h-213.333zM938.667 106.667h-853.333v640h128v-42.667h85.333v42.667h426.667v-42.667h85.333v42.667h128v-640zM213.333 448h85.333v-85.333h-85.333v85.333zM384 448h85.333v-85.333h-85.333v85.333zM554.667 448h85.333v-85.333h-85.333v85.333zM725.333 448h85.333v-85.333h-85.333v85.333zM213.333 618.667h85.333v-85.333h-85.333v85.333zM384 618.667h85.333v-85.333h-85.333v85.333zM554.667 618.667h85.333v-85.333h-85.333v85.333zM725.333 618.667h85.333v-85.333h-85.333v85.333zM213.333 277.333h85.333v-85.333h-85.333v85.333zM384 277.333h85.333v-85.333h-85.333v85.333zM554.667 277.333h85.333v-85.333h-85.333v85.333zM725.333 277.333h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe913;" glyph-name="mbri-camera" d="M755.2 704l-42.667 128h-401.067l-42.667-128h-268.8v-640h1024v640h-268.8zM938.667 149.333h-853.333v469.333h243.2l42.667 128h281.6l42.667-128h243.2v-469.333zM512 618.667c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333 213.333 93.867 213.333 213.333-93.867 213.333-213.333 213.333zM512 277.333c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128z" />
<glyph unicode="&#xe914;" glyph-name="mbri-cart-add" d="M981.333 704l-51.2-384h-657.067l17.067-85.333h605.867v-85.333h-674.133l-128 640h-93.867v85.333h162.133l93.867-469.333h597.333l42.667 298.667zM341.333 106.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 106.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM695.467 750.933l59.733-59.733-200.533-200.533-200.533 200.533 59.733 59.733 98.133-98.133v307.2h85.333v-307.2l98.133 98.133z" />
<glyph unicode="&#xe915;" glyph-name="mbri-cart-full" d="M896 149.333h-674.133l-128 640h-93.867v85.333h162.133l34.133-170.667h785.067l-51.2-384h-657.067l17.067-85.333h605.867v-85.333zM256 405.333h597.333l29.867 213.333h-669.867l42.667-213.333zM341.333 106.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 106.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM810.667 874.667h-469.333v-85.333h469.333v85.333z" />
<glyph unicode="&#xe916;" glyph-name="mbri-cash" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667-192-426.667-426.667-426.667zM725.333 341.333c0-81.067-68.267-149.333-149.333-149.333h-21.333v-85.333h-85.333v85.333h-128v85.333h234.667c34.133 0 64 29.867 64 64s-29.867 64-64 64h-128c-81.067 0-149.333 68.267-149.333 149.333s68.267 149.333 149.333 149.333h21.333v85.333h85.333v-85.333h128v-85.333h-234.667c-34.133 0-64-29.867-64-64s29.867-64 64-64h128c81.067 0 149.333-68.267 149.333-149.333z" />
<glyph unicode="&#xe917;" glyph-name="mbri-change-style" d="M512 960c-281.6 0-512-230.4-512-512 0-68.267 12.8-119.467 34.133-153.6 21.333-38.4 55.467-59.733 93.867-59.733 68.267 0 128 59.733 128 128 0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333c-68.267 0-128-68.267-128-145.067 0-55.467 25.6-102.4 72.533-136.533 51.2-38.4 128-59.733 226.133-59.733 281.6 0 512 230.4 512 512s-230.4 512-512 512zM512 21.333c-98.133 0-149.333 21.333-174.933 42.667-34.133 21.333-38.4 46.933-38.4 68.267 0 29.867 21.333 59.733 42.667 59.733 93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667-170.667-76.8-170.667-170.667c0-21.333-21.333-42.667-42.667-42.667-4.267 0-12.8 0-21.333 17.067s-21.333 46.933-21.333 110.933c0 234.667 192 426.667 426.667 426.667s426.667-192 426.667-426.667-192-426.667-426.667-426.667zM725.333 170.667c0-34.133-29.867-64-64-64s-64 29.867-64 64 29.867 64 64 64 64-29.867 64-64zM512 768c0-34.133-29.867-64-64-64s-64 29.867-64 64 29.867 64 64 64 64-29.867 64-64zM597.333 725.333c0 34.133 29.867 64 64 64s64-29.867 64-64-29.867-64-64-64-64 29.867-64 64zM725.333 554.667c0 34.133 29.867 64 64 64s64-29.867 64-64-29.867-64-64-64-64 29.867-64 64zM853.333 341.333c0-34.133-29.867-64-64-64s-64 29.867-64 64 29.867 64 64 64 64-29.867 64-64z" />
<glyph unicode="&#xe918;" glyph-name="mbri-chat" d="M0-38.4v913.067h1024v-640h-750.933l-273.067-273.067zM85.333 789.333v-622.933l153.6 153.6h699.733v469.333h-853.333z" />
<glyph unicode="&#xe919;" glyph-name="mbri-clock" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667-192-426.667-426.667-426.667zM469.333 789.333h85.333v-384h-256v85.333h170.667v298.667z" />
<glyph unicode="&#xe91a;" glyph-name="mbri-close" d="M571.733 448l439.467-439.467-59.733-59.733-439.467 439.467-439.467-439.467-59.733 59.733 439.467 439.467-439.467 439.467 59.733 59.733 439.467-439.467 439.467 439.467 59.733-59.733-439.467-439.467z" />
<glyph unicode="&#xe91b;" glyph-name="mbri-cloud" d="M853.333 106.667h-597.333c-140.8 0-256 115.2-256 256 0 136.533 110.933 251.733 247.467 256 59.733 128 187.733 213.333 328.533 213.333 200.533 0 362.667-162.133 362.667-362.667 0-12.8 0-29.867-4.267-42.667 51.2-29.867 89.6-85.333 89.6-149.333 0-93.867-76.8-170.667-170.667-170.667zM256 533.333c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667h597.333c46.933 0 85.333 38.4 85.333 85.333 0 38.4-25.6 72.533-64 81.067l-38.4 12.8 8.533 38.4c4.267 21.333 8.533 42.667 8.533 59.733 0 153.6-123.733 277.333-277.333 277.333-115.2 0-221.867-72.533-260.267-183.467l-12.8-29.867h-46.933z" />
<glyph unicode="&#xe91c;" glyph-name="mbri-code" d="M260.267 588.8l-140.8-140.8 140.8-140.8-59.733-59.733-200.533 200.533 200.533 200.533 59.733-59.733zM823.467 648.533l-59.733-59.733 140.8-140.8-140.8-140.8 59.733-59.733 200.533 200.533-200.533 200.533zM345.6 166.4l76.8-34.133 256 597.333-76.8 34.133-256-597.333z" />
<glyph unicode="&#xe91d;" glyph-name="mbri-contact-form" d="M640 704h-426.667v85.333h426.667v-85.333zM640 618.667h-426.667v-85.333h426.667v85.333zM426.667 448h-213.333v-85.333h213.333v85.333zM810.667 345.6v-409.6h-768v1024h768v-324.267l68.267 68.267 145.067-145.067-213.333-213.333zM878.933 584.533l-366.933-366.933v-25.6h25.6l366.933 366.933-25.6 25.6zM725.333 260.267l-153.6-153.6h-145.067v145.067l298.667 298.667v324.267h-597.333v-853.333h597.333v238.933z" />
<glyph unicode="&#xe91e;" glyph-name="mbri-credit-card" d="M0 789.333v-640h1024v640h-1024zM938.667 234.667h-853.333v298.667h853.333v-298.667zM938.667 618.667h-853.333v85.333h853.333v-85.333zM512 320h-341.333v85.333h341.333v-85.333z" />
<glyph unicode="&#xe91f;" glyph-name="mbri-cursor-click" d="M998.4 234.667l-571.733 571.733v-802.133l200.533 200.533 102.4-238.933 76.8 34.133-102.4 234.667h294.4zM512 601.6l281.6-281.6h-170.667l-110.933-110.933v392.533zM512 874.667h-85.333v85.333h85.333v-85.333zM256 618.667h-85.333v85.333h85.333v-85.333zM682.667 704h85.333v-85.333h-85.333v85.333zM290.133 541.867l59.733-59.733-59.733-59.733-59.733 59.733 59.733 59.733zM648.533 780.8l-59.733 59.733 59.733 59.733 59.733-59.733-59.733-59.733zM290.133 904.533l59.733-59.733-59.733-64-64 59.733 64 64z" />
<glyph unicode="&#xe920;" glyph-name="mbri-cust-feedback" d="M0 874.667v-913.067l273.067 273.067h750.933v640h-1024zM938.667 320h-699.733l-153.6-153.6v622.933h853.333v-469.333zM469.333 388.267l-157.867 157.867 59.733 59.733 98.133-98.133 226.133 226.133 59.733-59.733-285.867-285.867z" />
<glyph unicode="&#xe921;" glyph-name="mbri-database" d="M512 960c-217.6 0-384-81.067-384-192v-640c0-110.933 166.4-192 384-192s384 81.067 384 192v640c0 110.933-166.4 192-384 192zM512 874.667c183.467 0 298.667-64 298.667-106.667s-115.2-106.667-298.667-106.667-298.667 64-298.667 106.667 115.2 106.667 298.667 106.667zM512 21.333c-183.467 0-298.667 64-298.667 106.667v89.6c68.267-42.667 174.933-68.267 298.667-68.267s230.4 25.6 298.667 68.267v-89.6c0-42.667-115.2-106.667-298.667-106.667zM512 234.667c-183.467 0-298.667 64-298.667 106.667v89.6c68.267-42.667 174.933-68.267 298.667-68.267s230.4 25.6 298.667 68.267v-89.6c0-42.667-115.2-106.667-298.667-106.667zM512 448c-183.467 0-298.667 64-298.667 106.667v89.6c68.267-42.667 174.933-68.267 298.667-68.267s230.4 25.6 298.667 68.267v-89.6c0-42.667-115.2-106.667-298.667-106.667z" />
<glyph unicode="&#xe922;" glyph-name="mbri-delivery" d="M640 832l-384-192v-430.933l384-192 384 192v430.933l-384 192zM887.467 614.4l-247.467-123.733-247.467 123.733 247.467 123.733 247.467-123.733zM341.333 546.133l256-128v-285.867l-256 128v285.867zM682.667 132.267v285.867l256 128v-285.867l-256-128zM0 661.333h170.667v-85.333h-170.667v85.333zM0 490.667h170.667v-85.333h-170.667v85.333zM0 320h170.667v-85.333h-170.667v85.333z" />
<glyph unicode="&#xe923;" glyph-name="mbri-desktop" d="M1024 192v682.667h-1024v-682.667h384v-85.333h-85.333v-85.333h426.667v85.333h-85.333v85.333h384zM554.667 106.667h-85.333v85.333h85.333v-85.333zM85.333 277.333v512h853.333v-512h-853.333z" />
<glyph unicode="&#xe924;" glyph-name="mbri-devices" d="M810.667 64h-85.333v85.333h85.333v-85.333zM981.333 618.667v-682.667h-938.667v1024h768v-341.333h170.667zM554.667 21.333v597.333h170.667v256h-597.333v-853.333h426.667zM896 533.333h-256v-512h256v512zM384 106.667h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe925;" glyph-name="mbri-down" d="M797.867 221.867l-285.867-285.867-285.867 285.867 59.733 59.733 183.467-183.467v861.867h85.333v-861.867l183.467 183.467 59.733-59.733z" />
<glyph unicode="&#xe926;" glyph-name="mbri-download-2" d="M652.8 196.267l59.733-59.733-200.533-200.533-200.533 200.533 59.733 59.733 98.133-98.133v477.867h85.333v-477.867l98.133 98.133zM844.8 661.333c-29.867 145.067-162.133 256-311.467 256-136.533 0-256-89.6-302.933-213.333h-17.067c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333h170.667v85.333h-170.667c-72.533 0-128 55.467-128 128s55.467 128 128 128h85.333l4.267 25.6c21.333 110.933 119.467 187.733 230.4 187.733 123.733 0 226.133-93.867 234.667-217.6v-38.4h64c59.733 0 106.667-46.933 106.667-106.667s-46.933-106.667-106.667-106.667h-192v-85.333h192c106.667 0 192 85.333 192 192 0 102.4-76.8 183.467-179.2 192z" />
<glyph unicode="&#xe927;" glyph-name="mbri-download" d="M285.867 452.267l-59.733-59.733 285.867-285.867 285.867 285.867-59.733 59.733-183.467-183.467v691.2h-85.333v-691.2l-183.467 183.467zM853.333 106.667v-85.333h-682.667v85.333h-85.333v-170.667h853.333v170.667h-85.333z" />
<glyph unicode="&#xe928;" glyph-name="mbri-drag-n-drop-2" d="M768 704v85.333h-85.333v-85.333h-426.667v-426.667h-85.333v-85.333h85.333v-256h768v768h-256zM938.667 21.333h-597.333v597.333h597.333v-597.333zM0 960h85.333v-85.333h-85.333v85.333zM256 874.667h-85.333v85.333h85.333v-85.333zM426.667 874.667h-85.333v85.333h85.333v-85.333zM597.333 874.667h-85.333v85.333h85.333v-85.333zM768 874.667h-85.333v85.333h85.333v-85.333zM0 789.333h85.333v-85.333h-85.333v85.333zM0 618.667h85.333v-85.333h-85.333v85.333zM0 448h85.333v-85.333h-85.333v85.333zM0 277.333h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe929;" glyph-name="mbri-drag-n-drop" d="M1024 448l-200.533-200.533-59.733 59.733 98.133 98.133h-307.2v-307.2l98.133 98.133 59.733-59.733-200.533-200.533-200.533 200.533 59.733 59.733 98.133-98.133v307.2h-307.2l98.133-98.133-59.733-59.733-200.533 200.533 200.533 200.533 59.733-59.733-98.133-98.133h307.2v307.2l-98.133-98.133-59.733 59.733 200.533 200.533 200.533-200.533-59.733-59.733-98.133 98.133v-307.2h307.2l-98.133 98.133 59.733 59.733 200.533-200.533z" />
<glyph unicode="&#xe92a;" glyph-name="mbri-edit-2" d="M708.267 960l-708.267-708.267v-315.733h315.733l708.267 708.267-315.733 315.733zM904.533 644.267l-102.4-102.4-196.267 196.267 102.4 102.4 196.267-196.267zM281.6 21.333h-196.267v196.267l460.8 460.8 196.267-196.267-460.8-460.8z" />
<glyph unicode="&#xe92b;" glyph-name="mbri-edit" d="M853.333 448h85.333v-512h-938.667v938.667h512v-85.333h-426.667v-768h768v426.667zM298.667 465.067l494.933 494.933 230.4-230.4-494.933-494.933h-230.4v230.4zM384 320h110.933l409.6 409.6-110.933 110.933-409.6-409.6v-110.933z" />
<glyph unicode="&#xe92c;" glyph-name="mbri-error" d="M490.667 960c-268.8 0-490.667-221.867-490.667-490.667s221.867-490.667 490.667-490.667 490.667 221.867 490.667 490.667-221.867 490.667-490.667 490.667zM490.667 64c-221.867 0-405.333 183.467-405.333 405.333s183.467 405.333 405.333 405.333 405.333-183.467 405.333-405.333-183.467-405.333-405.333-405.333zM755.2 674.133l-204.8-204.8 204.8-204.8-59.733-59.733-204.8 204.8-204.8-204.8-59.733 59.733 204.8 204.8-204.8 204.8 59.733 59.733 204.8-204.8 204.8 204.8 59.733-59.733z" />
<glyph unicode="&#xe92d;" glyph-name="mbri-extension" d="M853.333-64h-341.333v85.333c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-85.333h-341.333v341.333h85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333h-85.333v341.333h256c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667h256v-256c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667v-256zM597.333 21.333h170.667v256h85.333c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333h-85.333v256h-256v85.333c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333v-85.333h-256v-170.667c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667v-170.667h170.667c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667z" />
<glyph unicode="&#xe92e;" glyph-name="mbri-features" d="M0-64h426.667v426.667h-426.667v-426.667zM85.333 277.333h256v-256h-256v256zM0 448h426.667v426.667h-426.667v-426.667zM85.333 789.333h256v-256h-256v256zM512-64h426.667v426.667h-426.667v-426.667zM597.333 277.333h256v-256h-256v256zM669.867 627.2l-157.867 119.467h196.267l59.733 170.667 59.733-170.667h196.267l-157.867-119.467 59.733-179.2-157.867 110.933-157.867-110.933 59.733 179.2z" />
<glyph unicode="&#xe92f;" glyph-name="mbri-file" d="M614.4 960h-486.4v-1024h768v742.4l-281.6 281.6zM640 814.933l110.933-110.933h-110.933v110.933zM810.667 21.333h-597.333v853.333h341.333v-256h256v-597.333zM298.667 277.333h426.667v-85.333h-426.667v85.333zM298.667 448h426.667v-85.333h-426.667v85.333z" />
<glyph unicode="&#xe930;" glyph-name="mbri-flag" d="M938.667 960h-810.667v-1024h85.333v426.667h725.333l-149.333 298.667 149.333 298.667zM802.133 448h-588.8v426.667h588.8l-106.667-213.333 106.667-213.333z" />
<glyph unicode="&#xe931;" glyph-name="mbri-folder" d="M486.4 704l-128 128h-358.4v-810.667h1024v682.667h-537.6zM938.667 106.667h-853.333v640h238.933l128-128h486.4v-512z" />
<glyph unicode="&#xe932;" glyph-name="mbri-gift" d="M785.067 661.333c17.067 25.6 25.6 55.467 25.6 85.333 0 93.867-76.8 170.667-170.667 170.667-51.2 0-98.133-21.333-128-59.733-29.867 38.4-76.8 59.733-128 59.733-93.867 0-170.667-76.8-170.667-170.667 0-29.867 8.533-59.733 25.6-85.333h-238.933v-256h85.333v-469.333h853.333v469.333h85.333v256h-238.933zM554.667 746.667c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333h-85.333v85.333zM384 832c46.933 0 85.333-38.4 85.333-85.333v-85.333h-85.333c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333zM853.333 21.333h-682.667v384h682.667v-384zM938.667 490.667h-853.333v85.333h853.333v-85.333z" />
<glyph unicode="&#xe933;" glyph-name="mbri-github" d="M938.667 686.933v273.067l-226.133-93.867c-115.2 38.4-247.467 38.4-362.667 0l-221.867 93.867v-281.6c-29.867-46.933-42.667-93.867-42.667-145.067 0-132.267 98.133-251.733 256-307.2v-128c-98.133-25.6-128 17.067-162.133 76.8-29.867 46.933-64 102.4-136.533 102.4v-85.333c25.6 0 38.4-17.067 64-59.733 34.133-51.2 76.8-128 183.467-128 17.067 0 34.133 0 51.2 4.267v-72.533h384v290.133c157.867 55.467 256 174.933 256 307.2 0 55.467-12.8 106.667-42.667 153.6zM669.867 298.667l-29.867-12.8v-264.533h-213.333v264.533l-29.867 8.533c-136.533 42.667-226.133 136.533-226.133 238.933 0 38.4 12.8 72.533 34.133 110.933l8.533 8.533v179.2l136.533-55.467 17.067 4.267c106.667 38.4 230.4 38.4 337.067 0l17.067-4.267 132.267 55.467v-170.667l8.533-12.8c21.333-34.133 34.133-72.533 34.133-115.2 0-102.4-89.6-196.267-226.133-234.667z" />
<glyph unicode="&#xe934;" glyph-name="mbri-globe-2" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-51.2 0-110.933 81.067-140.8 204.8 93.867 12.8 192 12.8 285.867 0-34.133-123.733-93.867-204.8-145.067-204.8zM512 874.667c51.2 0 110.933-81.067 140.8-204.8-89.6-8.533-187.733-8.533-281.6 0 29.867 123.733 89.6 204.8 140.8 204.8zM341.333 448c0 51.2 4.267 98.133 8.533 140.8 55.467-8.533 106.667-12.8 162.133-12.8s106.667 4.267 162.133 12.8c8.533-42.667 8.533-89.6 8.533-140.8s-4.267-98.133-8.533-140.8c-106.667 12.8-217.6 12.8-320 0-8.533 42.667-12.8 89.6-12.8 140.8zM755.2 601.6c46.933 8.533 89.6 21.333 136.533 38.4 29.867-59.733 46.933-123.733 46.933-192s-17.067-132.267-46.933-192c-46.933 17.067-89.6 25.6-136.533 38.4 8.533 46.933 12.8 98.133 12.8 153.6s-4.267 106.667-12.8 153.6zM844.8 712.533c-34.133-12.8-68.267-21.333-106.667-25.6-12.8 59.733-34.133 110.933-59.733 153.6 68.267-29.867 123.733-72.533 166.4-128zM345.6 840.533c-25.6-42.667-46.933-93.867-64-153.6-34.133 4.267-68.267 12.8-102.4 25.6 42.667 55.467 98.133 98.133 166.4 128zM132.267 640c46.933-17.067 89.6-25.6 136.533-38.4-8.533-46.933-12.8-98.133-12.8-153.6s4.267-106.667 12.8-153.6c-46.933-8.533-89.6-21.333-136.533-38.4-29.867 59.733-46.933 123.733-46.933 192s17.067 132.267 46.933 192zM179.2 183.467c34.133 12.8 68.267 21.333 106.667 25.6 12.8-59.733 34.133-110.933 59.733-153.6-68.267 29.867-123.733 72.533-166.4 128zM678.4 55.467c25.6 42.667 46.933 93.867 59.733 153.6 34.133-8.533 72.533-17.067 106.667-25.6-42.667-55.467-98.133-98.133-166.4-128z" />
<glyph unicode="&#xe935;" glyph-name="mbri-globe" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM209.067 746.667h174.933c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-149.333c-59.733 0-106.667-46.933-106.667-106.667s46.933-106.667 106.667-106.667h21.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667h-162.133c-4.267 25.6-8.533 55.467-8.533 85.333 0 115.2 46.933 221.867 123.733 298.667zM119.467 277.333h136.533c72.533 0 128 55.467 128 128s-55.467 128-128 128h-21.333c-12.8 0-21.333 8.533-21.333 21.333s8.533 21.333 21.333 21.333h149.333c72.533 0 128 55.467 128 128s-55.467 128-128 128h-55.467c55.467 25.6 115.2 42.667 183.467 42.667 174.933 0 324.267-106.667 392.533-256h-179.2c-72.533 0-128-55.467-128-128s55.467-128 128-128h21.333c12.8 0 21.333-8.533 21.333-21.333s-8.533-21.333-21.333-21.333h-192c-72.533 0-128-55.467-128-128s55.467-128 128-128h140.8c-55.467-25.6-119.467-42.667-183.467-42.667-174.933 0-324.267 106.667-392.533 256zM814.933 149.333h-260.267c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h192c59.733 0 106.667 46.933 106.667 106.667s-46.933 106.667-106.667 106.667h-21.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667h204.8c4.267-25.6 8.533-55.467 8.533-85.333 0-115.2-46.933-221.867-123.733-298.667z" />
<glyph unicode="&#xe936;" glyph-name="mbri-growing-chart" d="M1024 832v-298.667h-85.333v153.6l-384-384-128 128-366.933-366.933-59.733 59.733 426.667 426.667 128-128 324.267 324.267h-153.6v85.333h298.667z" />
<glyph unicode="&#xe937;" glyph-name="mbri-hearth" d="M512-25.6l-422.4 422.4c-119.467 119.467-119.467 311.467 0 430.933 55.467 59.733 132.267 89.6 213.333 89.6h4.267c76.8 0 149.333-29.867 204.8-81.067 55.467 51.2 128 81.067 204.8 81.067 81.067 0 157.867-29.867 217.6-89.6s89.6-136.533 89.6-217.6c0-81.067-29.867-157.867-89.6-213.333l-422.4-422.4zM307.2 832c-59.733 0-115.2-21.333-157.867-64-85.333-85.333-85.333-226.133 0-311.467l362.667-362.667 362.667 362.667c42.667 42.667 64 98.133 64 153.6 0 59.733-21.333 115.2-64 157.867s-98.133 64-157.867 64-115.2-21.333-157.867-64l-46.933-51.2-51.2 51.2c-42.667 42.667-93.867 64-153.6 64z" />
<glyph unicode="&#xe938;" glyph-name="mbri-help" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667-192-426.667-426.667-426.667zM725.333 576c0-76.8-46.933-119.467-89.6-157.867s-81.067-68.267-81.067-140.8h-85.333c0 110.933 59.733 162.133 110.933 204.8 38.4 34.133 59.733 55.467 59.733 93.867 0 72.533-55.467 128-128 128s-128-55.467-128-128h-85.333c0 119.467 93.867 213.333 213.333 213.333s213.333-93.867 213.333-213.333zM469.333 192h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe939;" glyph-name="mbri-home" d="M512 883.2l-494.933-358.4 51.2-68.267 102.4 72.533v-507.733h682.667v507.733l102.4-76.8 51.2 68.267-494.933 362.667zM554.667 106.667h-85.333v213.333h85.333v-213.333zM768 106.667h-128v298.667h-256v-298.667h-128v486.4l256 187.733 256-187.733v-486.4z" />
<glyph unicode="&#xe93a;" glyph-name="mbri-hot-cup" d="M853.333 533.333h-42.667v128h-768v-469.333c0-140.8 115.2-256 256-256h256c128 0 230.4 93.867 251.733 213.333h46.933c93.867 0 170.667 76.8 170.667 170.667v42.667c0 93.867-76.8 170.667-170.667 170.667zM725.333 192c0-93.867-76.8-170.667-170.667-170.667h-256c-93.867 0-170.667 76.8-170.667 170.667v384h597.333v-384zM938.667 320c0-46.933-38.4-85.333-85.333-85.333h-42.667v213.333h42.667c46.933 0 85.333-38.4 85.333-85.333v-42.667zM384 746.667h-85.333v213.333h85.333v-213.333zM554.667 746.667h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe93b;" glyph-name="mbri-idea" d="M554.667 874.667h-85.333v85.333h85.333v-85.333zM42.667 448h85.333v85.333h-85.333v-85.333zM896 533.333v-85.333h85.333v85.333h-85.333zM268.8 793.6l-59.733 59.733-59.733-59.733 59.733-59.733 59.733 59.733zM755.2 187.733l59.733-59.733 59.733 59.733-59.733 59.733-59.733-59.733zM149.333 187.733l59.733-59.733 59.733 59.733-59.733 59.733-59.733-59.733zM755.2 793.6l59.733-59.733 59.733 59.733-59.733 59.733-59.733-59.733zM810.667 490.667c0-98.133-46.933-187.733-128-243.2v-140.8c0-93.867-76.8-170.667-170.667-170.667s-170.667 76.8-170.667 170.667v140.8c-81.067 55.467-128 149.333-128 243.2 0 166.4 132.267 298.667 298.667 298.667s298.667-132.267 298.667-298.667zM725.333 490.667c0 119.467-93.867 213.333-213.333 213.333s-213.333-93.867-213.333-213.333c0-76.8 42.667-145.067 106.667-183.467l21.333-12.8v-187.733c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333v187.733l21.333 12.8c64 38.4 106.667 106.667 106.667 183.467z" />
<glyph unicode="&#xe93c;" glyph-name="mbri-image-gallery" d="M1024 622.933l-554.667 251.733-72.533-157.867-396.8-179.2 256-558.933 349.867 162.133 162.133-76.8 256 558.933zM298.667 93.867l-183.467 401.067 226.133 102.4-128-277.333 290.133-132.267-204.8-93.867zM328.533 358.4l183.467 401.067 396.8-179.2-183.467-401.067-396.8 179.2z" />
<glyph unicode="&#xe93d;" glyph-name="mbri-image-slider" d="M0 960v-853.333h1024v853.333h-1024zM162.133 192l264.533 264.533 264.533-264.533h-529.067zM938.667 192h-128l-238.933 238.933 196.267 196.267 170.667-170.667v-264.533zM938.667 576l-170.667 170.667-256-256-85.333 85.333-341.333-341.333v640h853.333v-298.667zM256 576c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128zM256 746.667c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667-42.667 17.067-42.667 42.667 17.067 42.667 42.667 42.667zM469.333 21.333h85.333v-85.333h-85.333v85.333zM640 21.333h85.333v-85.333h-85.333v85.333zM298.667 21.333h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe93e;" glyph-name="mbri-info" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667-192-426.667-426.667-426.667zM554.667 661.333h-85.333v85.333h85.333v-85.333zM554.667 149.333h-85.333v426.667h85.333v-426.667z" />
<glyph unicode="&#xe93f;" glyph-name="mbri-italic" d="M507.733-64c-55.467 0-85.333 25.6-98.133 46.933-42.667 64-25.6 192 59.733 396.8 102.4 234.667 81.067 298.667 72.533 311.467-4.267 4.267-8.533 12.8-29.867 12.8-25.6 0-64-46.933-98.133-81.067l-59.733 55.467c46.933 55.467 98.133 110.933 157.867 110.933 55.467 0 85.333-25.6 102.4-51.2 42.667-68.267 25.6-192-64-392.533-98.133-238.933-76.8-298.667-68.267-315.733 0-4.267 8.533-8.533 25.6-8.533 25.6 0 64 46.933 98.133 81.067l64-55.467c-51.2-55.467-102.4-110.933-162.133-110.933zM576 960c-34.133 0-64-29.867-64-64s29.867-64 64-64 64 29.867 64 64-29.867 64-64 64z" />
<glyph unicode="&#xe940;" glyph-name="mbri-key" d="M422.4 490.667c-21.333 98.133-106.667 170.667-209.067 170.667-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333c102.4 0 187.733 72.533 209.067 170.667h302.933v-170.667h85.333v170.667h128v-170.667h85.333v256h-601.6zM213.333 320c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128z" />
<glyph unicode="&#xe941;" glyph-name="mbri-laptop" d="M938.667 277.333v512h-853.333v-512h-85.333v-213.333h1024v213.333h-85.333zM938.667 149.333h-853.333v42.667h853.333v-42.667zM170.667 704h682.667v-426.667h-682.667v426.667z" />
<glyph unicode="&#xe942;" glyph-name="mbri-layers" d="M1024 661.333l-512 298.667-512-298.667 512-298.667 512 298.667zM512 861.867l345.6-200.533-345.6-200.533-345.6 200.533 345.6 200.533zM960 533.333l46.933-72.533-494.933-311.467-490.667 311.467 42.667 72.533 448-281.6 448 281.6zM960 320l46.933-72.533-494.933-311.467-490.667 311.467 42.667 72.533 448-281.6 448 281.6z" />
<glyph unicode="&#xe943;" glyph-name="mbri-left-right" d="M678.4 674.133l59.733 59.733 285.867-285.867-285.867-285.867-59.733 59.733 183.467 183.467h-699.733l183.467-183.467-59.733-59.733-285.867 285.867 285.867 285.867 59.733-59.733-183.467-183.467h699.733l-183.467 183.467z" />
<glyph unicode="&#xe944;" glyph-name="mbri-left" d="M0 490.667l285.867-285.867 59.733 59.733-183.467 183.467h861.867v85.333h-861.867l183.467 183.467-59.733 59.733-285.867-285.867z" />
<glyph unicode="&#xe945;" glyph-name="mbri-letter" d="M0 789.333v-682.667h1024v682.667h-1024zM844.8 704l-332.8-200.533-332.8 200.533h665.6zM85.333 192v469.333l426.667-256 426.667 256v-469.333h-853.333z" />
<glyph unicode="&#xe946;" glyph-name="mbri-like" d="M665.6 533.333l59.733 119.467v264.533h-204.8l-46.933-192-132.267-157.867v51.2h-341.333v-640h341.333v46.933l72.533-46.933h460.8l149.333 554.667h-358.4zM256 64h-170.667v469.333h170.667v-469.333zM806.4 64h-366.933l-98.133 64v302.933l209.067 251.733 38.4 149.333h51.2v-162.133l-110.933-221.867h384l-106.667-384z" />
<glyph unicode="&#xe947;" glyph-name="mbri-link" d="M682.667 362.667l341.333 341.333-256 256-341.333-341.333 93.867-93.867-85.333-85.333-93.867 93.867-341.333-341.333 256-256 341.333 341.333-93.867 93.867 85.333 85.333 93.867-93.867zM469.333 277.333l-213.333-213.333-128 128 213.333 213.333 29.867-29.867-72.533-76.8 64-64 72.533 72.533 34.133-29.867zM554.667 618.667l213.333 213.333 128-128-213.333-213.333-29.867 29.867 72.533 76.8-64 64-72.533-72.533-34.133 29.867z" />
<glyph unicode="&#xe948;" glyph-name="mbri-lock" d="M768 533.333v170.667c0 140.8-115.2 256-256 256s-256-115.2-256-256v-170.667h-85.333v-597.333h682.667v597.333h-85.333zM341.333 704c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667v-170.667h-341.333v170.667zM768 21.333h-512v426.667h512v-426.667z" />
<glyph unicode="&#xe949;" glyph-name="mbri-login" d="M648.533 405.333h-605.867v85.333h605.867l-140.8 140.8 59.733 59.733 243.2-243.2-243.2-243.2-59.733 59.733 140.8 140.8zM341.333 960v-341.333h85.333v256h469.333v-853.333h-469.333v256h-85.333v-341.333h640v1024h-640z" />
<glyph unicode="&#xe94a;" glyph-name="mbri-logout" d="M861.867 405.333h-605.867v85.333h605.867l-140.8 140.8 59.733 59.733 243.2-243.2-243.2-243.2-59.733 59.733 140.8 140.8zM640 960v-341.333h-85.333v256h-469.333v-853.333h469.333v256h85.333v-341.333h-640v1024h640z" />
<glyph unicode="&#xe94b;" glyph-name="mbri-magic-stick" d="M682.667 789.333c-93.867 0-170.667-76.8-170.667-170.667 0-29.867 8.533-59.733 25.6-85.333l-537.6-537.6 59.733-59.733 537.6 537.6c25.6-17.067 55.467-25.6 85.333-25.6 93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667zM682.667 533.333c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM725.333 874.667h-85.333v85.333h85.333v-85.333zM640 362.667h85.333v-85.333h-85.333v85.333zM426.667 576h-85.333v85.333h85.333v-85.333zM1024 661.333v-85.333h-85.333v85.333h85.333zM891.733 768l-59.733 59.733 59.733 59.733 59.733-59.733-59.733-59.733zM891.733 469.333l59.733-59.733-59.733-59.733-59.733 59.733 59.733 59.733zM473.6 768l-64 59.733 59.733 59.733 59.733-59.733-55.467-59.733z" />
<glyph unicode="&#xe94c;" glyph-name="mbri-map-pin" d="M512 960c-213.333 0-384-170.667-384-384 0-315.733 345.6-610.133 358.4-618.667l25.6-21.333 25.6 21.333c12.8 8.533 358.4 302.933 358.4 618.667 0 213.333-170.667 384-384 384zM512 42.667c-76.8 68.267-298.667 307.2-298.667 533.333 0 166.4 132.267 298.667 298.667 298.667s298.667-132.267 298.667-298.667c0-226.133-221.867-465.067-298.667-533.333zM512 746.667c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667 170.667 76.8 170.667 170.667-76.8 170.667-170.667 170.667zM512 490.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" />
<glyph unicode="&#xe94d;" glyph-name="mbri-menu" d="M1024 746.667v-85.333h-1024v85.333h1024zM0 405.333h1024v85.333h-1024v-85.333zM0 149.333h1024v85.333h-1024v-85.333z" />
<glyph unicode="&#xe94e;" glyph-name="mbri-mobile-2" d="M213.333 960v-1024h597.333v1024h-597.333zM725.333 21.333h-426.667v853.333h426.667v-853.333zM554.667 64h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe94f;" glyph-name="mbri-mobile-horizontal" d="M1024 746.667h-1024v-597.333h1024v597.333zM85.333 234.667v426.667h853.333v-426.667h-853.333zM128 405.333v85.333h85.333v-85.333h-85.333z" />
<glyph unicode="&#xe950;" glyph-name="mbri-mobile" d="M213.333 960v-1024h597.333v1024h-597.333zM725.333 21.333h-426.667v853.333h426.667v-853.333zM597.333 746.667h-170.667v85.333h170.667v-85.333zM426.667 64h-85.333v85.333h85.333v-85.333zM597.333 149.333h85.333v-85.333h-85.333v85.333zM554.667 64h-85.333v85.333h85.333v-85.333zM426.667 192h-85.333v85.333h85.333v-85.333zM597.333 277.333h85.333v-85.333h-85.333v85.333zM554.667 192h-85.333v85.333h85.333v-85.333zM426.667 320h-85.333v85.333h85.333v-85.333zM597.333 405.333h85.333v-85.333h-85.333v85.333zM554.667 320h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe951;" glyph-name="mbri-mobirise" d="M682.667 789.333h-85.333v85.333h85.333v-85.333zM0 874.667h512v-853.333h-512v853.333zM85.333 106.667h341.333v682.667h-341.333v-682.667zM213.333 149.333h85.333v85.333h-85.333v-85.333zM938.667 490.667v-85.333h85.333v85.333h-85.333zM806.4 721.067l59.733-59.733 59.733 59.733-59.733 59.733-59.733-59.733zM806.4 174.933l59.733-59.733 59.733 59.733-59.733 59.733-59.733-59.733zM597.333 21.333h85.333v85.333h-85.333v-85.333zM597.333 704v-85.333c93.867 0 170.667-76.8 170.667-170.667s-76.8-170.667-170.667-170.667v-85.333c140.8 0 256 115.2 256 256s-115.2 256-256 256z" />
<glyph unicode="&#xe952;" glyph-name="mbri-more-horizontal" d="M256 448c0-46.933-38.4-85.333-85.333-85.333s-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333zM512 533.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM853.333 533.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" />
<glyph unicode="&#xe953;" glyph-name="mbri-more-vertical" d="M512 704c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM597.333 448c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333zM597.333 106.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333z" />
<glyph unicode="&#xe954;" glyph-name="mbri-music" d="M298.667 810.667v-627.2c-12.8 4.267-25.6 8.533-42.667 8.533-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128v507.733l426.667 106.667v-366.933c-12.8 4.267-25.6 8.533-42.667 8.533-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128v768l-597.333-149.333zM256 21.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667 42.667-17.067 42.667-42.667-17.067-42.667-42.667-42.667zM384 661.333v81.067l426.667 106.667v-81.067l-426.667-106.667zM768 149.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667 42.667-17.067 42.667-42.667-17.067-42.667-42.667-42.667z" />
<glyph unicode="&#xe955;" glyph-name="mbri-new-file" d="M614.4 960h-486.4v-1024h768v742.4l-281.6 281.6zM640 814.933l110.933-110.933h-110.933v110.933zM213.333 21.333v853.333h341.333v-256h256v-597.333h-597.333z" />
<glyph unicode="&#xe956;" glyph-name="mbri-numbered-list" d="M1024 832v-85.333h-597.333v85.333h597.333zM426.667 64h597.333v85.333h-597.333v-85.333zM426.667 405.333h597.333v85.333h-597.333v-85.333zM0 661.333h85.333v256h-85.333v-256zM0 320h85.333v256h-85.333v-256zM128 320h85.333v256h-85.333v-256zM0-21.333h85.333v256h-85.333v-256zM128-21.333h85.333v256h-85.333v-256zM256-21.333h85.333v256h-85.333v-256z" />
<glyph unicode="&#xe957;" glyph-name="mbri-opened-folder" d="M896 533.333v170.667h-409.6l-128 128h-358.4v-810.667h896l128 512h-128zM85.333 746.667h238.933l128-128h358.4v-85.333h-695.467l-29.867-123.733v337.067zM827.733 106.667h-729.6l85.333 341.333h733.867l-89.6-341.333z" />
<glyph unicode="&#xe958;" glyph-name="mbri-pages" d="M614.4 960h-358.4v-853.333h640v571.733l-281.6 281.6zM640 814.933l110.933-110.933h-110.933v110.933zM810.667 192h-469.333v682.667h213.333v-256h256v-426.667zM170.667 21.333h554.667v-85.333h-640v853.333h85.333v-768z" />
<glyph unicode="&#xe959;" glyph-name="mbri-paper-plane" d="M29.867 537.6l362.667-204.8 106.667-366.933 145.067 200.533 200.533-132.267 153.6 908.8-968.533-405.333zM221.867 524.8l529.067 226.133-332.8-332.8-196.267 106.667zM529.067 157.867l-29.867 106.667 72.533-46.933-42.667-59.733zM780.8 179.2l-285.867 192 379.733 379.733-93.867-571.733z" />
<glyph unicode="&#xe95a;" glyph-name="mbri-paperclip" d="M298.667-64c-76.8 0-153.6 29.867-209.067 85.333-59.733 59.733-89.6 132.267-89.6 213.333s29.867 153.6 89.6 209.067l443.733 452.267c42.667 42.667 93.867 64 149.333 64s110.933-21.333 149.333-64 64-93.867 64-149.333c0-55.467-21.333-110.933-64-149.333l-443.733-452.267c-51.2-51.2-132.267-51.2-179.2 0s-51.2 132.267 0 179.2l362.667 362.667 59.733-59.733-362.667-362.667c-17.067-17.067-17.067-42.667 0-59.733s42.667-17.067 59.733 0l443.733 452.267c25.6 21.333 38.4 55.467 38.4 89.6s-12.8 68.267-38.4 89.6c-46.933 46.933-132.267 46.933-179.2 0l-443.733-452.267c-42.667-42.667-64-93.867-64-149.333s21.333-110.933 64-149.333c81.067-81.067 217.6-81.067 302.933 0l384 384 59.733-59.733-384-384c-59.733-59.733-136.533-89.6-213.333-89.6z" />
<glyph unicode="&#xe95b;" glyph-name="mbri-phone" d="M806.4-64l-29.867 17.067c-162.133 89.6-307.2 192-439.467 324.267-128 128-234.667 273.067-320 435.2l-17.067 29.867 217.6 217.6 264.533-264.533-85.333-123.733 234.667-234.667 123.733 85.333 264.533-264.533-213.333-221.867zM396.8 332.8c119.467-115.2 247.467-213.333 392.533-294.4l115.2 115.2-153.6 153.6-123.733-85.333-337.067 337.067 85.333 123.733-157.867 157.867-110.933-115.2c81.067-145.067 174.933-273.067 290.133-392.533z" />
<glyph unicode="&#xe95c;" glyph-name="mbri-photo" d="M1024 960h-853.333v-853.333h853.333v853.333zM938.667 192h-682.667v682.667h682.667v-682.667zM0 746.667v-810.667h810.667v85.333h-725.333v725.333h-85.333zM371.2 230.4l-59.733 59.733 200.533 204.8 85.333-85.333 170.667 170.667 115.2-115.2-59.733-59.733-55.467 51.2-170.667-170.667-85.333 85.333-140.8-140.8zM341.333 725.333c0 34.133 29.867 64 64 64s64-29.867 64-64-29.867-64-64-64-64 29.867-64 64z" />
<glyph unicode="&#xe95d;" glyph-name="mbri-photos" d="M0 874.667v-853.333h1024v853.333h-1024zM938.667 789.333v-298.667l-170.667 170.667-256-256-85.333 85.333-341.333-341.333v640h853.333zM691.2 106.667h-529.067l264.533 264.533 264.533-264.533zM810.667 106.667l-238.933 238.933 196.267 196.267 170.667-170.667v-264.533h-128zM256 490.667c72.533 0 128 55.467 128 128s-55.467 128-128 128-128-55.467-128-128 55.467-128 128-128zM256 661.333c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-42.667-42.667-42.667 17.067-42.667 42.667 17.067 42.667 42.667 42.667z" />
<glyph unicode="&#xe95e;" glyph-name="mbri-pin" d="M691.2 960l-149.333-149.333 59.733-59.733-93.867-93.867-149.333-25.6-59.733 59.733-179.2-179.2 196.267-196.267-315.733-320 59.733-59.733 315.733 315.733 196.267-196.267 179.2 179.2-55.467 55.467 21.333 149.333 93.867 93.867 59.733-59.733 153.6 153.6-332.8 332.8zM571.733 174.933l-332.8 332.8 59.733 59.733 332.8-332.8-59.733-59.733zM814.933 657.067l-174.933-174.933-17.067-115.2-187.733 187.733 115.2 17.067 174.933 174.933-59.733 59.733 29.867 29.867 213.333-209.067-29.867-29.867-64 59.733z" />
<glyph unicode="&#xe95f;" glyph-name="mbri-play" d="M85.333-64v1024l853.333-512-853.333-512zM170.667 810.667v-721.067l597.333 358.4-597.333 362.667z" />
<glyph unicode="&#xe960;" glyph-name="mbri-plus" d="M1024 405.333h-469.333v-469.333h-85.333v469.333h-469.333v85.333h469.333v469.333h85.333v-469.333h469.333v-85.333z" />
<glyph unicode="&#xe961;" glyph-name="mbri-preview" d="M512 192c-187.733 0-366.933 85.333-490.667 230.4l-21.333 25.6 21.333 25.6c123.733 145.067 302.933 230.4 490.667 230.4s366.933-85.333 490.667-230.4l21.333-25.6-21.333-25.6c-123.733-145.067-302.933-230.4-490.667-230.4zM110.933 448c102.4-110.933 247.467-170.667 401.067-170.667s294.4 59.733 401.067 170.667c-102.4 110.933-247.467 170.667-401.067 170.667s-294.4-59.733-401.067-170.667zM512 320c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128zM512 490.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667 42.667 17.067 42.667 42.667-17.067 42.667-42.667 42.667z" />
<glyph unicode="&#xe962;" glyph-name="mbri-print" d="M0 704v-597.333h170.667v-170.667h682.667v170.667h170.667v597.333h-1024zM768 21.333h-512v256h512v-256zM938.667 192h-85.333v170.667h-682.667v-170.667h-85.333v426.667h853.333v-426.667zM256 789.333h-85.333v170.667h682.667v-170.667h-85.333v85.333h-512v-85.333zM853.333 448h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe963;" glyph-name="mbri-protect" d="M512-68.267l-17.067 4.267c-221.867 93.867-366.933 277.333-366.933 469.333v409.6l384 145.067 384-145.067v-409.6c0-192-145.067-375.467-366.933-465.067l-17.067-8.533zM213.333 755.2v-349.867c0-153.6 115.2-302.933 298.667-379.733 183.467 76.8 298.667 226.133 298.667 379.733v349.867l-298.667 110.933-298.667-110.933zM755.2 588.8l-59.733 59.733-226.133-226.133-98.133 98.133-59.733-59.733 157.867-157.867 285.867 285.867z" />
<glyph unicode="&#xe964;" glyph-name="mbri-question" d="M853.333 618.667c0-119.467-76.8-192-153.6-260.267-72.533-72.533-145.067-136.533-145.067-251.733h-85.333c0 153.6 93.867 238.933 174.933 311.467 64 64 123.733 119.467 123.733 200.533 0 140.8-115.2 256-256 256s-256-115.2-256-256h-85.333c0 187.733 153.6 341.333 341.333 341.333s341.333-153.6 341.333-341.333zM469.333-64h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe965;" glyph-name="mbri-quote-left" d="M345.6 849.067l-302.933-251.733v-490.667h426.667v426.667h-153.6l170.667 170.667-140.8 145.067zM384 448v-256h-256v362.667l209.067 174.933 29.867-25.6-153.6-153.6v-102.4h170.667zM998.4 704l-145.067 145.067-298.667-251.733v-490.667h426.667v426.667h-153.6l170.667 170.667zM896 448v-256h-256v362.667l209.067 174.933 29.867-25.6-153.6-153.6v-102.4h170.667z" />
<glyph unicode="&#xe966;" glyph-name="mbri-quote-right" d="M678.4 89.6l302.933 251.733v490.667h-426.667v-426.667h153.6l-170.667-170.667 140.8-145.067zM640 490.667v256h256v-362.667l-209.067-174.933-29.867 25.6 153.6 153.6v102.4h-170.667zM25.6 234.667l145.067-145.067 302.933 251.733v490.667h-430.933v-426.667h153.6l-170.667-170.667zM128 490.667v256h256v-362.667l-209.067-174.933-29.867 25.6 153.6 153.6v102.4h-170.667z" />
<glyph unicode="&#xe967;" glyph-name="mbri-redo" d="M0 290.133l85.333-25.6c21.333 68.267 59.733 136.533 115.2 187.733 170.667 166.4 452.267 166.4 627.2 0 38.4-38.4 68.267-85.333 93.867-132.267h-324.267v-85.333h426.667v426.667h-85.333v-209.067c-17.067 21.333-34.133 42.667-51.2 59.733-204.8 196.267-541.867 196.267-746.667 0-68.267-59.733-115.2-136.533-140.8-221.867z" />
<glyph unicode="&#xe968;" glyph-name="mbri-refresh" d="M640 704h217.6l-46.933 46.933c-162.133 166.4-435.2 166.4-601.6 0s-166.4-439.467 0-605.867c81.067-81.067 187.733-123.733 302.933-123.733s221.867 42.667 302.933 123.733l59.733-59.733c-102.4-98.133-230.4-149.333-362.667-149.333s-260.267 51.2-362.667 149.333c-200.533 200.533-200.533 524.8 0 725.333s524.8 200.533 725.333 0l21.333-21.333v170.667h85.333v-341.333h-341.333v85.333z" />
<glyph unicode="&#xe969;" glyph-name="mbri-responsive-2" d="M768 192h85.333v-85.333h-85.333zM938.667 661.333v256h-938.667v-640h426.667v-85.333h-170.667v-85.333h341.333v-128h426.667v682.667h-85.333zM85.333 362.667v469.333h768v-170.667h-256v-298.667h-512zM512 192v85.333h85.333v-85.333h-85.333zM938.667 64h-256v512h256v-512z" />
<glyph unicode="&#xe96a;" glyph-name="mbri-responsive" d="M938.667 746.667v170.667h-938.667v-682.667h597.333v-256h426.667v768h-85.333zM85.333 320v512h768v-85.333h-256v-426.667h-512zM938.667 64h-256v597.333h256v-597.333zM853.333 106.667h-85.333v85.333h85.333v-85.333zM128 618.667h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe96b;" glyph-name="mbri-right" d="M1024 490.667l-285.867-285.867-59.733 59.733 183.467 183.467h-861.867v85.333h861.867l-183.467 183.467 59.733 59.733 285.867-285.867z" />
<glyph unicode="&#xe96c;" glyph-name="mbri-rocket" d="M725.333 294.4v110.933c0 12.8 21.333 324.267-183.467 529.067l-29.867 25.6-29.867-29.867c-204.8-204.8-183.467-516.267-183.467-524.8v-115.2l-170.667-311.467 76.8-42.667 93.867 170.667v-85.333h170.667v-85.333h85.333v85.333h170.667v89.6l93.867-174.933 76.8 46.933-170.667 311.467zM640 405.333v-298.667h-85.333v170.667h-85.333v-170.667h-85.333v302.933c0 4.267-17.067 256 128 426.667 140.8-170.667 128-426.667 128-430.933zM512 618.667c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333z" />
<glyph unicode="&#xe96d;" glyph-name="mbri-sad-face" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667-192-426.667-426.667-426.667zM320 448c-34.133 0-64 29.867-64 64s29.867 64 64 64 64-29.867 64-64-29.867-64-64-64zM768 512c0-34.133-29.867-64-64-64s-64 29.867-64 64 29.867 64 64 64 64-29.867 64-64zM362.667 170.667l-59.733 59.733c115.2 115.2 307.2 115.2 422.4 0l-59.733-59.733c-85.333 85.333-221.867 85.333-302.933 0z" />
<glyph unicode="&#xe96e;" glyph-name="mbri-sale" d="M657.067 874.667h-102.4v85.333h-85.333v-85.333h-102.4l-196.267-196.267v-742.4h682.667v742.4l-196.267 196.267zM768 21.333h-512v622.933l145.067 145.067h68.267v-98.133c-25.6-12.8-42.667-42.667-42.667-72.533 0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 29.867-17.067 59.733-42.667 72.533v98.133h68.267l145.067-145.067v-622.933zM597.333 192h85.333v-85.333h-85.333v85.333zM426.667 362.667h-85.333v85.333h85.333v-85.333zM622.933 448l59.733-59.733-281.6-281.6-59.733 59.733 281.6 281.6z" />
<glyph unicode="&#xe96f;" glyph-name="mbri-save" d="M827.733 960h-827.733v-1024h1024v827.733l-196.267 196.267zM725.333 874.667v-170.667h-426.667v170.667h426.667zM938.667 21.333h-853.333v853.333h128v-256h597.333v238.933l128-128v-708.267zM512 448c-72.533 0-128-55.467-128-128s55.467-128 128-128 128 55.467 128 128-55.467 128-128 128zM512 277.333c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667 42.667-17.067 42.667-42.667-17.067-42.667-42.667-42.667z" />
<glyph unicode="&#xe970;" glyph-name="mbri-search" d="M1011.2 8.533l-401.067 401.067c46.933 59.733 72.533 132.267 72.533 209.067 0 187.733-153.6 341.333-341.333 341.333s-341.333-153.6-341.333-341.333 153.6-341.333 341.333-341.333c76.8 0 149.333 25.6 209.067 72.533l401.067-401.067 59.733 59.733zM341.333 362.667c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256z" />
<glyph unicode="&#xe971;" glyph-name="mbri-setting-2" d="M810.667 149.333h-42.667v85.333h42.667v725.333h85.333v-725.333h42.667v-85.333h-42.667v-213.333h-85.333v213.333zM469.333-64h85.333v725.333h42.667v85.333h-42.667v213.333h-85.333v-213.333h-42.667v-85.333h42.667v-725.333zM128-64h85.333v213.333h42.667v85.333h-42.667v725.333h-85.333v-725.333h-42.667v-85.333h42.667v-213.333z" />
<glyph unicode="&#xe972;" glyph-name="mbri-setting-3" d="M725.333 405.333c-55.467 0-102.4-34.133-119.467-85.333h-605.867v-85.333h605.867c17.067-51.2 64-85.333 119.467-85.333s102.4 34.133 119.467 85.333h179.2v85.333h-179.2c-17.067 51.2-64 85.333-119.467 85.333zM725.333 234.667c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667 42.667-17.067 42.667-42.667-17.067-42.667-42.667-42.667zM418.133 661.333c-17.067 51.2-64 85.333-119.467 85.333s-102.4-34.133-119.467-85.333h-179.2v-85.333h179.2c17.067-51.2 64-85.333 119.467-85.333s102.4 34.133 119.467 85.333h605.867v85.333h-605.867zM298.667 576c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667 42.667-17.067 42.667-42.667-17.067-42.667-42.667-42.667z" />
<glyph unicode="&#xe973;" glyph-name="mbri-setting" d="M1024 328.533v238.933l-123.733 29.867-8.533 21.333 68.267 106.667-170.667 170.667-106.667-68.267-25.6 8.533-25.6 123.733h-238.933l-29.867-123.733-21.333-8.533-106.667 68.267-170.667-170.667 68.267-106.667-8.533-21.333-123.733-29.867v-238.933l123.733-29.867 8.533-21.333-68.267-106.667 170.667-170.667 106.667 68.267 25.6-8.533 25.6-123.733h238.933l29.867 123.733 25.6 8.533 106.667-68.267 170.667 170.667-72.533 106.667 8.533 25.6 123.733 25.6zM849.067 183.467l-72.533-72.533-85.333 55.467-106.667-42.667-21.333-102.4h-102.4l-21.333 98.133-106.667 42.667-85.333-55.467-72.533 72.533 55.467 85.333-42.667 106.667-102.4 25.6v102.4l98.133 21.333 42.667 106.667-55.467 85.333 72.533 72.533 85.333-55.467 106.667 42.667 25.6 102.4h102.4l21.333-98.133 106.667-42.667 85.333 55.467 72.533-72.533-55.467-85.333 42.667-106.667 98.133-21.333v-102.4l-98.133-21.333-42.667-106.667 55.467-89.6zM512 661.333c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333 213.333 93.867 213.333 213.333-93.867 213.333-213.333 213.333zM512 320c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128z" />
<glyph unicode="&#xe974;" glyph-name="mbri-share" d="M0 17.067v132.267c0 281.6 260.267 516.267 597.333 550.4v192l401.067-401.067-401.067-401.067v230.4c-264.533-12.8-426.667-81.067-520.533-192-25.6-38.4-76.8-110.933-76.8-110.933zM682.667 686.933v-68.267h-38.4c-256-12.8-469.333-157.867-533.333-341.333 115.2 81.067 294.4 128 533.333 132.267h42.667v-110.933l196.267 196.267-200.533 192z" />
<glyph unicode="&#xe975;" glyph-name="mbri-shopping-bag" d="M891.733 704h-166.4v42.667c0 119.467-93.867 213.333-213.333 213.333s-213.333-93.867-213.333-213.333v-42.667h-166.4l-51.2-768h857.6l-46.933 768zM384 746.667c0 72.533 55.467 128 128 128s128-55.467 128-128v-42.667h-256v42.667zM174.933 21.333l34.133 597.333h89.6v-85.333h85.333v85.333h256v-85.333h85.333v85.333h89.6l38.4-597.333h-678.4z" />
<glyph unicode="&#xe976;" glyph-name="mbri-shopping-basket" d="M839.68 550.4l-194.56 389.12-61.44-30.72 180.907-358.4h-505.173l180.907 361.813-61.44 30.72-194.56-392.533h-184.32l116.053-614.4h791.893l116.053 614.4h-184.32zM853.333 4.267h-682.667l-88.747 477.867h860.16l-88.747-477.867z" />
<glyph unicode="&#xe977;" glyph-name="mbri-shopping-cart" d="M896 149.333h-674.133l-128 640h-93.867v85.333h162.133l34.133-170.667h785.067l-51.2-384h-657.067l17.067-85.333h605.867v-85.333zM256 405.333h597.333l29.867 213.333h-669.867l42.667-213.333zM341.333 106.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 106.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" />
<glyph unicode="&#xe978;" glyph-name="mbri-sites" d="M1024 192v682.667h-1024v-682.667h384v-85.333h-85.333v-85.333h426.667v85.333h-85.333v85.333h384zM554.667 106.667h-85.333v85.333h85.333v-85.333zM85.333 277.333v512h853.333v-512h-853.333zM512 661.333h341.333v-85.333h-341.333v85.333zM512 490.667h170.667v-85.333h-170.667v85.333zM170.667 405.333h256v256h-256v-256zM256 576h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe979;" glyph-name="mbri-smile-face" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512 21.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667-192-426.667-426.667-426.667zM661.333 298.667l59.733-59.733c-59.733-59.733-136.533-85.333-209.067-85.333-76.8 0-153.6 29.867-209.067 85.333l59.733 59.733c81.067-85.333 217.6-85.333 298.667 0zM320 448c-34.133 0-64 29.867-64 64s29.867 64 64 64 64-29.867 64-64-29.867-64-64-64zM768 512c0-34.133-29.867-64-64-64s-64 29.867-64 64 29.867 64 64 64 64-29.867 64-64z" />
<glyph unicode="&#xe97a;" glyph-name="mbri-speed" d="M874.667 42.667l-59.733 59.733c166.4 166.4 166.4 435.2 0 601.6-166.4 170.667-439.467 170.667-605.867 4.267s-166.4-439.467 0-605.867l-59.733-59.733c-200.533 200.533-200.533 524.8 0 725.333s524.8 200.533 725.333 0c200.533-200.533 200.533-524.8 0-725.333zM426.667 430.933l281.6-281.6 59.733 59.733-281.6 281.6-59.733-59.733z" />
<glyph unicode="&#xe97b;" glyph-name="mbri-star" d="M827.733-25.6l-315.733 230.4-315.733-230.4 119.467 371.2-315.733 230.4h392.533l119.467 371.2 119.467-371.2h392.533l-315.733-230.4 119.467-371.2zM512 311.467l153.6-110.933-59.733 179.2 153.6 110.933h-187.733l-59.733 179.2-59.733-179.2h-187.733l153.6-110.933-59.733-179.2 153.6 110.933z" />
<glyph unicode="&#xe97c;" glyph-name="mbri-success" d="M384 64l-384 384 59.733 59.733 324.267-324.267 580.267 580.267 59.733-59.733-640-640z" />
<glyph unicode="&#xe97d;" glyph-name="mbri-sun" d="M469.333 106.667h85.333v-170.667h-85.333v170.667zM554.667 960h-85.333v-170.667h85.333v170.667zM170.667 490.667h-170.667v-85.333h170.667v85.333zM853.333 490.667v-85.333h170.667v85.333h-170.667zM721.067 174.933l119.467-119.467 59.733 59.733-119.467 119.467-59.733-59.733zM302.933 721.067l-123.733 119.467-59.733-59.733 119.467-119.467 64 59.733zM119.467 115.2l59.733-59.733 119.467 119.467-59.733 59.733-119.467-119.467zM904.533 780.8l-59.733 59.733-119.467-119.467 59.733-59.733 119.467 119.467zM768 448c0-140.8-115.2-256-256-256s-256 115.2-256 256 115.2 256 256 256 256-115.2 256-256zM682.667 448c0 93.867-76.8 170.667-170.667 170.667s-170.667-76.8-170.667-170.667 76.8-170.667 170.667-170.667 170.667 76.8 170.667 170.667z" />
<glyph unicode="&#xe97e;" glyph-name="mbri-sun2" d="M512 789.333c-187.733 0-341.333-153.6-341.333-341.333s153.6-341.333 341.333-341.333 341.333 153.6 341.333 341.333-153.6 341.333-341.333 341.333zM512 192c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256zM554.667 874.667h-85.333v85.333h85.333v-85.333zM469.333 21.333h85.333v-85.333h-85.333v85.333zM0 490.667h85.333v-85.333h-85.333v85.333zM1024 490.667v-85.333h-85.333v85.333h85.333zM179.2 721.067l-59.733 59.733 59.733 59.733 59.733-59.733-59.733-59.733zM844.8 174.933l59.733-59.733-59.733-59.733-59.733 59.733 59.733 59.733zM179.2 174.933l59.733-59.733-59.733-59.733-59.733 59.733 59.733 59.733zM844.8 840.533l59.733-59.733-59.733-59.733-59.733 59.733 59.733 59.733z" />
<glyph unicode="&#xe97f;" glyph-name="mbri-tablet-vertical" d="M896-64h-768v1024h768v-1024zM213.333 21.333h597.333v853.333h-597.333v-853.333zM554.667 192h-85.333v-85.333h85.333v85.333z" />
<glyph unicode="&#xe980;" glyph-name="mbri-tablet" d="M0 64v768h1024v-768h-1024zM85.333 746.667v-597.333h853.333v597.333h-853.333zM256 405.333v85.333h-85.333v-85.333h85.333z" />
<glyph unicode="&#xe981;" glyph-name="mbri-target" d="M1024 490.667h-89.6c-21.333 200.533-179.2 362.667-379.733 379.733v89.6h-85.333v-89.6c-200.533-17.067-362.667-179.2-379.733-379.733h-89.6v-85.333h89.6c21.333-200.533 179.2-362.667 379.733-379.733v-89.6h85.333v89.6c200.533 21.333 362.667 179.2 379.733 379.733h89.6v85.333zM512 106.667c-187.733 0-341.333 153.6-341.333 341.333s153.6 341.333 341.333 341.333 341.333-153.6 341.333-341.333-153.6-341.333-341.333-341.333zM512 661.333c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333 213.333 93.867 213.333 213.333-93.867 213.333-213.333 213.333zM512 320c-72.533 0-128 55.467-128 128s55.467 128 128 128 128-55.467 128-128-55.467-128-128-128z" />
<glyph unicode="&#xe982;" glyph-name="mbri-timer" d="M840.533 631.467l85.333 85.333-59.733 59.733-85.333-85.333c-64 55.467-140.8 85.333-226.133 93.867v89.6h128v85.333h-341.333v-85.333h128v-89.6c-213.333-21.333-384-200.533-384-422.4 0-234.667 192-426.667 426.667-426.667s426.667 192 426.667 426.667c0 102.4-34.133 196.267-98.133 268.8zM512 21.333c-187.733 0-341.333 153.6-341.333 341.333s153.6 341.333 341.333 341.333 341.333-153.6 341.333-341.333-153.6-341.333-341.333-341.333zM469.333 618.667h85.333v-256h-85.333v256z" />
<glyph unicode="&#xe983;" glyph-name="mbri-to-ftp" d="M1024 149.333v640h-494.933l-170.667 170.667h-358.4v-810.667h469.333v-128h-469.333v-85.333h1024v85.333h-469.333v128h469.333zM85.333 874.667h238.933l170.667-170.667h443.733v-469.333h-853.333v640z" />
<glyph unicode="&#xe984;" glyph-name="mbri-to-local-drive" d="M887.467 789.333h-247.467v-85.333h179.2l115.2-426.667h-844.8l115.2 426.667h179.2v85.333h-247.467l-136.533-512v-341.333h1024v341.333l-136.533 512zM938.667 21.333h-853.333v170.667h853.333v-170.667zM328.533 665.6l140.8-140.8v435.2h85.333v-435.2l140.8 140.8 59.733-59.733-243.2-243.2-243.2 243.2 59.733 59.733z" />
<glyph unicode="&#xe985;" glyph-name="mbri-touch-swipe" d="M900.267 418.133l-260.267 64v221.867c0 72.533-55.467 128-128 128s-128-55.467-128-128v-324.267c-51.2 42.667-128 42.667-179.2-8.533-25.6-25.6-38.4-59.733-38.4-93.867s12.8-68.267 38.4-93.867l247.467-247.467h529.067v375.467c0 51.2-34.133 93.867-81.067 106.667zM896 21.333h-409.6l-221.867 221.867c-8.533 8.533-12.8 21.333-12.8 34.133s4.267 25.6 12.8 34.133c21.333 17.067 51.2 17.067 68.267 0l136.533-136.533v529.067c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-42.667v-290.133l324.267-81.067c8.533-4.267 17.067-12.8 17.067-21.333v-290.133zM861.867 661.333h-136.533v85.333h136.533l-55.467 55.467 59.733 59.733 157.867-157.867-157.867-157.867-59.733 59.733 55.467 55.467zM217.6 605.867l-59.733-59.733-157.867 157.867 157.867 157.867 59.733-59.733-55.467-55.467h136.533v-85.333h-136.533l55.467-55.467z" />
<glyph unicode="&#xe986;" glyph-name="mbri-touch" d="M298.667 704h-85.333c0 140.8 115.2 256 256 256s256-115.2 256-256h-85.333c0 93.867-76.8 170.667-170.667 170.667s-170.667-76.8-170.667-170.667zM938.667 311.467v-375.467h-529.067l-247.467 247.467c-25.6 25.6-38.4 59.733-38.4 93.867s12.8 68.267 38.4 93.867c51.2 51.2 128 51.2 179.2 8.533v324.267c0 72.533 55.467 128 128 128s128-55.467 128-128v-221.867l260.267-64c46.933-12.8 81.067-55.467 81.067-106.667zM853.333 311.467c0 8.533-8.533 17.067-17.067 21.333l-324.267 81.067v290.133c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667v-529.067l-136.533 136.533c-17.067 17.067-46.933 17.067-68.267 0-8.533-8.533-12.8-21.333-12.8-34.133s4.267-25.6 12.8-34.133l221.867-221.867h409.6v290.133z" />
<glyph unicode="&#xe987;" glyph-name="mbri-trash" d="M682.667 789.333v170.667h-341.333v-170.667h-256v-85.333h85.333l42.667-768h597.333l42.667 768h85.333v85.333h-256zM426.667 874.667h170.667v-85.333h-170.667v85.333zM729.6 21.333h-435.2l-34.133 682.667h507.733l-38.4-682.667z" />
<glyph unicode="&#xe988;" glyph-name="mbri-underline" d="M853.333 960v-512c0-187.733-153.6-341.333-341.333-341.333s-341.333 153.6-341.333 341.333v512h85.333v-512c0-140.8 115.2-256 256-256s256 115.2 256 256v512h85.333zM170.667-64h682.667v85.333h-682.667v-85.333z" />
<glyph unicode="&#xe989;" glyph-name="mbri-undo" d="M1024 290.133l-85.333-25.6c-21.333 68.267-59.733 136.533-115.2 187.733-170.667 166.4-452.267 166.4-627.2 0-38.4-38.4-68.267-85.333-93.867-132.267h324.267v-85.333h-426.667v426.667h85.333v-209.067c17.067 21.333 34.133 42.667 51.2 59.733 204.8 196.267 541.867 196.267 746.667 0 68.267-59.733 115.2-136.533 140.8-221.867z" />
<glyph unicode="&#xe98a;" glyph-name="mbri-unlink" d="M256 64l-128 128 234.667 234.667-64 64-298.667-298.667 256-256 298.667 298.667-64 64-234.667-234.667zM1024 704l-256 256-298.667-298.667 64-64 234.667 234.667 128-128-234.667-234.667 64-64 298.667 298.667zM426.667 832h-85.333v-128h85.333v128zM128 533.333h128v85.333h-128v-85.333zM597.333 64h85.333v128h-85.333v-128zM896 362.667h-128v-85.333h128v85.333z" />
<glyph unicode="&#xe98b;" glyph-name="mbri-unlock" d="M768 960c-140.8 0-256-115.2-256-256v-170.667h-512v-597.333h682.667v597.333h-85.333v170.667c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667v-85.333h85.333v85.333c0 140.8-115.2 256-256 256zM597.333 21.333h-512v426.667h512v-426.667z" />
<glyph unicode="&#xe98c;" glyph-name="mbri-up-down" d="M738.133 281.6l59.733-59.733-285.867-285.867-285.867 285.867 59.733 59.733 183.467-183.467v699.733l-183.467-183.467-59.733 59.733 285.867 285.867 285.867-285.867-59.733-59.733-183.467 183.467v-699.733l183.467 183.467z" />
<glyph unicode="&#xe98d;" glyph-name="mbri-up" d="M226.133 674.133l285.867 285.867 285.867-285.867-59.733-59.733-183.467 183.467v-861.867h-85.333v861.867l-183.467-183.467-59.733 59.733z" />
<glyph unicode="&#xe98e;" glyph-name="mbri-update" d="M725.333 238.933l59.733-59.733c-72.533-72.533-170.667-110.933-273.067-110.933-192 0-354.133 140.8-379.733 328.533l-59.733-59.733-59.733 59.733 157.867 153.6 157.867-157.867-59.733-59.733-46.933 46.933c29.867-132.267 149.333-230.4 290.133-230.4 81.067 0 153.6 29.867 213.333 89.6zM951.467 563.2l-59.733-59.733c-25.6 187.733-187.733 328.533-379.733 328.533-102.4 0-200.533-38.4-273.067-110.933l59.733-59.733c59.733 55.467 132.267 85.333 213.333 85.333 140.8 0 260.267-98.133 290.133-230.4l-46.933 46.933-59.733-59.733 157.867-157.867 157.867 157.867-59.733 59.733z" />
<glyph unicode="&#xe98f;" glyph-name="mbri-upload-2" d="M554.667 21.333h-85.333v477.867l-98.133-98.133-59.733 59.733 200.533 200.533 200.533-200.533-59.733-59.733-98.133 98.133v-477.867zM844.8 661.333c-29.867 145.067-162.133 256-311.467 256-136.533 0-256-89.6-302.933-213.333h-17.067c-119.467 0-213.333-93.867-213.333-213.333s93.867-213.333 213.333-213.333h170.667v85.333h-170.667c-72.533 0-128 55.467-128 128s55.467 128 128 128h85.333l4.267 25.6c21.333 110.933 119.467 187.733 230.4 187.733 123.733 0 226.133-93.867 234.667-217.6v-38.4h64c59.733 0 106.667-46.933 106.667-106.667s-46.933-106.667-106.667-106.667h-192v-85.333h192c106.667 0 192 85.333 192 192 0 102.4-76.8 183.467-179.2 192z" />
<glyph unicode="&#xe990;" glyph-name="mbri-upload" d="M285.867 614.4l-59.733 59.733 285.867 285.867 285.867-285.867-59.733-59.733-183.467 183.467v-691.2h-85.333v691.2l-183.467-183.467zM853.333 106.667v-85.333h-682.667v85.333h-85.333v-170.667h853.333v170.667h-85.333z" />
<glyph unicode="&#xe991;" glyph-name="mbri-user-2" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM256 106.667c0 140.8 115.2 256 256 256s256-115.2 256-256c-72.533-55.467-157.867-85.333-256-85.333s-183.467 34.133-256 85.333zM384 576c0 72.533 55.467 128 128 128s128-55.467 128-128-55.467-128-128-128-128 55.467-128 128zM844.8 179.2c-21.333 106.667-93.867 192-192 238.933 42.667 38.4 72.533 93.867 72.533 157.867 0 119.467-93.867 213.333-213.333 213.333s-213.333-93.867-213.333-213.333c0-64 29.867-119.467 72.533-157.867-98.133-46.933-166.4-132.267-192-238.933-59.733 72.533-93.867 166.4-93.867 268.8 0 234.667 192 426.667 426.667 426.667s426.667-192 426.667-426.667c0-102.4-34.133-196.267-93.867-268.8z" />
<glyph unicode="&#xe992;" glyph-name="mbri-user" d="M669.867 503.467c59.733 46.933 98.133 119.467 98.133 200.533 0 140.8-115.2 256-256 256s-256-115.2-256-256c0-81.067 38.4-153.6 98.133-200.533-157.867-64-268.8-217.6-268.8-396.8v-170.667h853.333v170.667c0 179.2-110.933 332.8-268.8 396.8zM341.333 704c0 93.867 76.8 170.667 170.667 170.667s170.667-76.8 170.667-170.667-76.8-170.667-170.667-170.667-170.667 76.8-170.667 170.667zM853.333 21.333h-682.667v85.333c0 187.733 153.6 341.333 341.333 341.333s341.333-153.6 341.333-341.333v-85.333z" />
<glyph unicode="&#xe993;" glyph-name="mbri-users" d="M840.533 460.8c34.133 34.133 55.467 85.333 55.467 136.533 0 106.667-85.333 192-192 192s-192-85.333-192-192c-17.067 12.8-38.4 25.6-59.733 34.133 34.133 34.133 59.733 85.333 59.733 136.533 0 106.667-85.333 192-192 192s-192-85.333-192-192c0-55.467 21.333-102.4 55.467-136.533-106.667-51.2-183.467-162.133-183.467-290.133v-234.667h384v-170.667h640v234.667c0 128-76.8 238.933-183.467 290.133zM704 704c59.733 0 106.667-46.933 106.667-106.667s-46.933-106.667-106.667-106.667-106.667 46.933-106.667 106.667 46.933 106.667 106.667 106.667zM213.333 768c0 59.733 46.933 106.667 106.667 106.667s106.667-46.933 106.667-106.667-46.933-106.667-106.667-106.667-106.667 46.933-106.667 106.667zM85.333 341.333c0 128 106.667 234.667 234.667 234.667 89.6 0 174.933-55.467 213.333-136.533-85.333-51.2-140.8-145.067-149.333-247.467h-298.667v149.333zM938.667 21.333h-469.333v149.333c0 128 106.667 234.667 234.667 234.667s234.667-106.667 234.667-234.667v-149.333z" />
<glyph unicode="&#xe994;" glyph-name="mbri-video-play" d="M0 832v-768h1024v768h-1024zM938.667 149.333h-853.333v597.333h853.333v-597.333zM384 661.333v-426.667l341.333 213.333-341.333 213.333zM469.333 499.2l89.6-51.2-89.6-51.2v102.4z" />
<glyph unicode="&#xe995;" glyph-name="mbri-video" d="M981.333 750.933l-256-213.333v209.067h-682.667v-597.333h682.667v209.067l256-213.333v605.867zM640 234.667h-512v426.667h512v-426.667zM896 324.267l-145.067 123.733 145.067 123.733v-247.467z" />
<glyph unicode="&#xe996;" glyph-name="mbri-watch" d="M469.333 618.667h85.333v-213.333h-170.667v85.333h85.333v128zM853.333 448c0-106.667-51.2-204.8-128-268.8l-51.2-243.2h-324.267l-51.2 243.2c-76.8 64-128 157.867-128 268.8 0 106.667 51.2 204.8 128 268.8l51.2 243.2h324.267l51.2-243.2c76.8-64 128-162.133 128-268.8zM396.8 768c38.4 12.8 76.8 21.333 115.2 21.333s76.8-8.533 115.2-21.333l-21.333 106.667h-187.733l-21.333-106.667zM627.2 128c-38.4-12.8-76.8-21.333-115.2-21.333s-76.8 8.533-115.2 21.333l21.333-106.667h187.733l21.333 106.667zM768 448c0 140.8-115.2 256-256 256s-256-115.2-256-256 115.2-256 256-256 256 115.2 256 256z" />
<glyph unicode="&#xe997;" glyph-name="mbri-website-theme-2" d="M640 576v384h-256v-384l-256-85.333v-554.667h768v554.667l-256 85.333zM810.667 21.333h-341.333v85.333h-85.333v-85.333h-170.667v256h597.333v-256zM810.667 362.667h-597.333v68.267l256 85.333v358.4h85.333v-358.4l256-85.333v-68.267z" />
<glyph unicode="&#xe998;" glyph-name="mbri-website-theme" d="M896-64h-768v640h-128v384h379.733l8.533-29.867c17.067-59.733 64-98.133 123.733-98.133s106.667 38.4 123.733 98.133l8.533 29.867h379.733v-384h-128v-640zM213.333 21.333h597.333v640h128v213.333h-230.4c-34.133-76.8-110.933-128-196.267-128s-162.133 51.2-196.267 128h-230.4v-213.333h128v-640z" />
<glyph unicode="&#xe999;" glyph-name="mbri-wifi" d="M631.467 226.133l-119.467-119.467-119.467 119.467c64 68.267 174.933 68.267 238.933 0zM149.333 469.333l59.733-59.733c166.4 166.4 439.467 166.4 605.867 0l59.733 59.733c-200.533 200.533-524.8 200.533-725.333 0zM268.8 349.867l59.733-59.733c51.2 46.933 115.2 72.533 183.467 72.533s132.267-25.6 179.2-76.8l59.733 59.733c-64 68.267-149.333 102.4-238.933 102.4s-174.933-34.133-243.2-98.133zM512 789.333c-183.467 0-354.133-72.533-482.133-200.533l59.733-59.733c110.933 110.933 264.533 174.933 422.4 174.933s311.467-64 422.4-174.933l59.733 59.733c-128 128-298.667 200.533-482.133 200.533z" />
<glyph unicode="&#xe99a;" glyph-name="mbri-windows" d="M0 785.067v-669.867l1024-140.8v947.2l-1024-136.533zM938.667 490.667h-422.4v277.333l422.4 59.733v-337.067zM430.933 755.2v-264.533h-345.6v217.6l345.6 46.933zM85.333 405.333h345.6v-264.533l-345.6 46.933v217.6zM516.267 128v277.333h422.4v-337.067l-422.4 59.733z" />
<glyph unicode="&#xe99b;" glyph-name="mbri-zoom-in" d="M610.133 409.6c46.933 59.733 72.533 132.267 72.533 209.067 0 187.733-153.6 341.333-341.333 341.333s-341.333-153.6-341.333-341.333 153.6-341.333 341.333-341.333c76.8 0 149.333 25.6 209.067 72.533l401.067-401.067 59.733 59.733-401.067 401.067zM341.333 362.667c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256zM384 661.333h128v-85.333h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128z" />
<glyph unicode="&#xe99c;" glyph-name="mbri-zoom-out" d="M1011.2 8.533l-401.067 401.067c46.933 59.733 72.533 132.267 72.533 209.067 0 187.733-153.6 341.333-341.333 341.333s-341.333-153.6-341.333-341.333 153.6-341.333 341.333-341.333c76.8 0 149.333 25.6 209.067 72.533l401.067-401.067 59.733 59.733zM341.333 362.667c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256zM170.667 661.333h341.333v-85.333h-341.333v85.333z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Binary file not shown.

737
app/assets/ytplayer/index.js Executable file
View File

@@ -0,0 +1,737 @@
/*! yt-player. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
var EventEmitter = function () {
this.events = {};
};
EventEmitter.prototype.on = function (event, listener) {
if (typeof this.events[event] !== 'object') {
this.events[event] = [];
}
this.events[event].push(listener);
};
EventEmitter.prototype.removeListener = function (event, listener) {
var idx;
if (typeof this.events[event] === 'object') {
idx = this.indexOf(this.events[event], listener);
if (idx > -1) {
this.events[event].splice(idx, 1);
}
}
};
EventEmitter.prototype.emit = function (event) {
var i, listeners, length, args = [].slice.call(arguments, 1);
if (typeof this.events[event] === 'object') {
listeners = this.events[event].slice();
length = listeners.length;
for (i = 0; i < length; i++) {
listeners[i].apply(this, args);
}
}
};
EventEmitter.prototype.once = function (event, listener) {
this.on(event, function g () {
this.removeListener(event, g);
listener.apply(this, arguments);
});
};
var loadScript = function (src, attrs, parentNode) {
return new Promise((resolve, reject) => {
var script = document.createElement('script')
script.async = true
script.src = src
for (var [k, v] of Object.entries(attrs || {})) {
script.setAttribute(k, v)
}
script.onload = () => {
script.onerror = script.onload = null
resolve(script)
}
script.onerror = () => {
script.onerror = script.onload = null
reject(new Error(`Failed to load ${src}`))
}
var node = parentNode || document.head || document.getElementsByTagName('head')[0]
node.appendChild(script)
})
}
var YOUTUBE_IFRAME_API_SRC = 'https://www.youtube.com/iframe_api'
var YOUTUBE_STATES = {
'-1': 'unstarted',
0: 'ended',
1: 'playing',
2: 'paused',
3: 'buffering',
5: 'cued'
}
var YOUTUBE_ERROR = {
// The request contains an invalid parameter value. For example, this error
// occurs if you specify a videoId that does not have 11 characters, or if the
// videoId contains invalid characters, such as exclamation points or asterisks.
INVALID_PARAM: 2,
// The requested content cannot be played in an HTML5 player or another error
// related to the HTML5 player has occurred.
HTML5_ERROR: 5,
// The video requested was not found. This error occurs when a video has been
// removed (for any reason) or has been marked as private.
NOT_FOUND: 100,
// The owner of the requested video does not allow it to be played in embedded
// players.
UNPLAYABLE_1: 101,
// This error is the same as 101. It's just a 101 error in disguise!
UNPLAYABLE_2: 150
}
var loadIframeAPICallbacks = []
/**
* YouTube Player. Exposes a better API, with nicer events.
* @param {HTMLElement|selector} element
*/
YouTubePlayer = class YouTubePlayer extends EventEmitter {
constructor (element, opts) {
super()
var elem = typeof element === 'string'
? document.querySelector(element)
: element
if (elem.id) {
this._id = elem.id // use existing element id
} else {
this._id = elem.id = 'ytplayer-' + Math.random().toString(16).slice(2, 8)
}
this._opts = Object.assign({
width: 640,
height: 360,
autoplay: false,
captions: undefined,
controls: true,
keyboard: true,
fullscreen: true,
annotations: true,
modestBranding: false,
related: true,
timeupdateFrequency: 1000,
playsInline: true,
start: 0
}, opts)
this.videoId = null
this.destroyed = false
this._api = null
this._autoplay = false // autoplay the first video?
this._player = null
this._ready = false // is player ready?
this._queue = []
this.replayInterval = []
this._interval = null
// Setup listeners for 'timeupdate' events. The YouTube Player does not fire
// 'timeupdate' events, so they are simulated using a setInterval().
this._startInterval = this._startInterval.bind(this)
this._stopInterval = this._stopInterval.bind(this)
this.on('playing', this._startInterval)
this.on('unstarted', this._stopInterval)
this.on('ended', this._stopInterval)
this.on('paused', this._stopInterval)
this.on('buffering', this._stopInterval)
this._loadIframeAPI((err, api) => {
if (err) return this._destroy(new Error('YouTube Iframe API failed to load'))
this._api = api
// If load(videoId, [autoplay, [size]]) was called before Iframe API
// loaded, ensure it gets called again now
if (this.videoId) this.load(this.videoId, this._autoplay, this._start)
})
}
indexOf (haystack, needle) {
var i = 0, length = haystack.length, idx = -1, found = false;
while (i < length && !found) {
if (haystack[i] === needle) {
idx = i;
found = true;
}
i++;
}
return idx;
}
load (videoId, autoplay = false, start = 0) {
if (this.destroyed) return
this._startOptimizeDisplayEvent()
this._optimizeDisplayHandler('center, center')
this.videoId = videoId
this._autoplay = autoplay
this._start = start
// If the Iframe API is not ready yet, do nothing. Once the Iframe API is
// ready, `load(this.videoId)` will be called.
if (!this._api) return
// If there is no player instance, create one.
if (!this._player) {
this._createPlayer(videoId)
return
}
// If the player instance is not ready yet, do nothing. Once the player
// instance is ready, `load(this.videoId)` will be called. This ensures that
// the last call to `load()` is the one that takes effect.
if (!this._ready) return
// If the player instance is ready, load the given `videoId`.
if (autoplay) {
this._player.loadVideoById(videoId, start)
} else {
this._player.cueVideoById(videoId, start)
}
}
play () {
if (this._ready) this._player.playVideo()
else this._queueCommand('play')
}
replayFrom(num) {
const find = this.replayInterval.find((obj) => {
return obj.iframeParent === this._player.i.parentNode
})
if (find || !num) return
this.replayInterval.push({
iframeParent: this._player.i.parentNode,
interval: setInterval(() => {
if (this._player.getCurrentTime() >= this._player.getDuration() - Number(num)) {
this.seek(0);
for (const [key, val] of this.replayInterval.entries()) {
if (Object.hasOwnProperty.call(this.replayInterval, key)) {
clearInterval(this.replayInterval[key].interval)
this.replayInterval.splice(key, 1)
}
}
}
}, Number(num) * 1000)
})
}
pause () {
if (this._ready) this._player.pauseVideo()
else this._queueCommand('pause')
}
stop () {
if (this._ready) this._player.stopVideo()
else this._queueCommand('stop')
}
seek (seconds) {
if (this._ready) this._player.seekTo(seconds, true)
else this._queueCommand('seek', seconds)
}
_optimizeDisplayHandler(anchor) {
if (!this._player) return
const YTPlayer = this._player.i
const YTPAlign = anchor.split(",");
if (YTPlayer) {
const win = {},
el = YTPlayer.parentElement;
if (el) {
const computedStyle = window.getComputedStyle(el),
outerHeight = el.clientHeight + parseFloat(computedStyle.marginTop, 10) + parseFloat(computedStyle.marginBottom, 10) + parseFloat(computedStyle.borderTopWidth, 10) + parseFloat(computedStyle.borderBottomWidth, 10),
outerWidth = el.clientWidth + parseFloat(computedStyle.marginLeft, 10) + parseFloat(computedStyle.marginRight, 10) + parseFloat(computedStyle.borderLeftWidth, 10) + parseFloat(computedStyle.borderRightWidth, 10),
ratio = 1.7,
vid = YTPlayer;
win.width = outerWidth;
win.height = outerHeight + 80;
vid.style.width = win.width + 'px';
vid.style.height = Math.ceil(parseFloat(vid.style.width, 10) / ratio) + 'px';
vid.style.marginTop = Math.ceil(-((parseFloat(vid.style.height, 10) - win.height) / 2)) + 'px';
vid.style.marginLeft = 0;
const lowest = parseFloat(vid.style.height, 10) < win.height;
if (lowest) {
vid.style.height = win.height + 'px',
vid.style.width = Math.ceil(parseFloat(vid.style.height, 10) * ratio) + 'px',
vid.style.marginTop = 0,
vid.style.marginLeft = Math.ceil(-((parseFloat(vid.style.width, 10) - win.width) / 2)) + 'px'
}
for (const align in YTPAlign)
if (YTPAlign.hasOwnProperty(align)) {
const al = YTPAlign[align].replace(/ /g, "");
switch (al) {
case "top":
vid.style.marginTop = lowest ? -((parseFloat(vid.style.height, 10) - win.height) / 2) + 'px' : 0;
break;
case "bottom":
vid.style.marginTop = lowest ? 0 : -(parseFloat(vid.style.height, 10) - win.height) + 'px';
break;
case "left":
vid.style.marginLeft = 0;
break;
case "right":
vid.style.marginLeft = lowest ? -(parseFloat(vid.style.width, 10) - win.width) : 0 + 'px';
break;
default:
parseFloat(vid.style.width, 10) > win.width && (vid.style.marginLeft = -((parseFloat(vid.style.width, 10) - win.width) / 2) + 'px')
}
}
}
}
}
stopResize () {
window.removeEventListener('resize', this._resizeListener)
this._resizeListener = null
}
stopReplay (iframeParent) {
for (const [key, val] of this.replayInterval.entries()) {
if (Object.hasOwnProperty.call(this.replayInterval, key)) {
if (iframeParent === this.replayInterval[key].iframeParent) {
clearInterval(this.replayInterval[key].interval);
this.replayInterval.splice(key, 1)
}
}
}
}
setVolume (volume) {
if (this._ready) this._player.setVolume(volume)
else this._queueCommand('setVolume', volume)
}
loadPlaylist () {
if (this._ready) this._player.loadPlaylist(this.videoId)
else this._queueCommand('loadPlaylist', this.videoId)
}
setLoop (bool) {
if (this._ready) this._player.setLoop(bool)
else this._queueCommand('setLoop', bool)
}
getVolume () {
return (this._ready && this._player.getVolume()) || 0
}
mute () {
if (this._ready) this._player.mute()
else this._queueCommand('mute')
}
unMute () {
if (this._ready) this._player.unMute()
else this._queueCommand('unMute')
}
isMuted () {
return (this._ready && this._player.isMuted()) || false
}
setSize (width, height) {
if (this._ready) this._player.setSize(width, height)
else this._queueCommand('setSize', width, height)
}
setPlaybackRate (rate) {
if (this._ready) this._player.setPlaybackRate(rate)
else this._queueCommand('setPlaybackRate', rate)
}
setPlaybackQuality (suggestedQuality) {
if (this._ready) this._player.setPlaybackQuality(suggestedQuality)
else this._queueCommand('setPlaybackQuality', suggestedQuality)
}
getPlaybackRate () {
return (this._ready && this._player.getPlaybackRate()) || 1
}
getAvailablePlaybackRates () {
return (this._ready && this._player.getAvailablePlaybackRates()) || [1]
}
getDuration () {
return (this._ready && this._player.getDuration()) || 0
}
getProgress () {
return (this._ready && this._player.getVideoLoadedFraction()) || 0
}
getState () {
return (this._ready && YOUTUBE_STATES[this._player.getPlayerState()]) || 'unstarted'
}
getCurrentTime () {
return (this._ready && this._player.getCurrentTime()) || 0
}
destroy () {
this._destroy()
}
_destroy (err) {
if (this.destroyed) return
this.destroyed = true
if (this._player) {
this._player.stopVideo && this._player.stopVideo()
this._player.destroy()
}
this.videoId = null
this._id = null
this._opts = null
this._api = null
this._player = null
this._ready = false
this._queue = null
this._stopInterval()
this.removeListener('playing', this._startInterval)
this.removeListener('paused', this._stopInterval)
this.removeListener('buffering', this._stopInterval)
this.removeListener('unstarted', this._stopInterval)
this.removeListener('ended', this._stopInterval)
if (err) this.emit('error', err)
}
_queueCommand (command, ...args) {
if (this.destroyed) return
this._queue.push([command, args])
}
_flushQueue () {
while (this._queue.length) {
var command = this._queue.shift()
this[command[0]].apply(this, command[1])
}
}
_loadIframeAPI (cb) {
// If API is loaded, there is nothing else to do
if (window.YT && typeof window.YT.Player === 'function') {
return cb(null, window.YT)
}
// Otherwise, queue callback until API is loaded
loadIframeAPICallbacks.push(cb)
var scripts = Array.from(document.getElementsByTagName('script'))
var isLoading = scripts.some(script => script.src === YOUTUBE_IFRAME_API_SRC)
// If API <script> tag is not present in the page, inject it. Ensures that
// if user includes a hardcoded <script> tag in HTML for performance, another
// one will not be added
if (!isLoading) {
loadScript(YOUTUBE_IFRAME_API_SRC).catch(err => {
while (loadIframeAPICallbacks.length) {
var loadCb = loadIframeAPICallbacks.shift()
loadCb(err)
}
})
}
var prevOnYouTubeIframeAPIReady = window.onYouTubeIframeAPIReady
window.onYouTubeIframeAPIReady = () => {
if (typeof prevOnYouTubeIframeAPIReady === 'function') {
prevOnYouTubeIframeAPIReady()
}
while (loadIframeAPICallbacks.length) {
var loadCb = loadIframeAPICallbacks.shift()
loadCb(null, window.YT)
}
}
}
_createPlayer (videoId) {
if (this.destroyed) return
var opts = this._opts
this._player = new this._api.Player(this._id, {
width: opts.width,
height: opts.height,
videoId: videoId,
// (Not part of documented API) This parameter controls the hostname that
// videos are loaded from. Set to `'https://www.youtube-nocookie.com'`
// for enhanced privacy.
host: opts.host,
playerVars: {
// This parameter specifies whether the initial video will automatically
// start to play when the player loads. Supported values are 0 or 1. The
// default value is 0.
autoplay: opts.autoplay ? 1 : 0,
mute: opts.mute ? 1 : 0,
// Setting the parameter's value to 1 causes closed captions to be shown
// by default, even if the user has turned captions off. The default
// behavior is based on user preference.
// cc_load_policy: opts.captions != null
// ? opts.captions !== false ? 1 : 0
// : undefined, // default to not setting this option
// Sets the player's interface language. The parameter value is an ISO
// 639-1 two-letter language code or a fully specified locale. For
// example, fr and fr-ca are both valid values. Other language input
// codes, such as IETF language tags (BCP 47) might also be handled
// properly.
hl: (opts.captions != null && opts.captions !== false)
? opts.captions
: undefined, // default to not setting this option
// This parameter specifies the default language that the player will
// use to display captions. Set the parameter's value to an ISO 639-1
// two-letter language code.
cc_lang_pref: (opts.captions != null && opts.captions !== false)
? opts.captions
: undefined, // default to not setting this option
// This parameter indicates whether the video player controls are
// displayed. For IFrame embeds that load a Flash player, it also defines
// when the controls display in the player as well as when the player
// will load. Supported values are:
// - controls=0 Player controls do not display in the player. For
// IFrame embeds, the Flash player loads immediately.
// - controls=1 (default) Player controls display in the player. For
// IFrame embeds, the controls display immediately and
// the Flash player also loads immediately.
// - controls=2 Player controls display in the player. For IFrame
// embeds, the controls display and the Flash player
// loads after the user initiates the video playback.
controls: opts.controls ? 2 : 0,
// Setting the parameter's value to 1 causes the player to not respond to
// keyboard controls. The default value is 0, which means that keyboard
// controls are enabled.
// disablekb: opts.keyboard ? 0 : 1,
// Setting the parameter's value to 1 enables the player to be
// controlled via IFrame or JavaScript Player API calls. The default
// value is 0, which means that the player cannot be controlled using
// those APIs.
enablejsapi: 1,
// Setting this parameter to 0 prevents the fullscreen button from
// displaying in the player. The default value is 1, which causes the
// fullscreen button to display.
allowfullscreen: true,
// Setting the parameter's value to 1 causes video annotations to be
// shown by default, whereas setting to 3 causes video annotations to not
// be shown by default. The default value is 1.
iv_load_policy: opts.annotations ? 1 : 3,
// This parameter lets you use a YouTube player that does not show a
// YouTube logo. Set the parameter value to 1 to prevent the YouTube logo
// from displaying in the control bar. Note that a small YouTube text
// label will still display in the upper-right corner of a paused video
// when the user's mouse pointer hovers over the player.
modestbranding: opts.modestBranding ? 1 : 0,
// This parameter provides an extra security measure for the IFrame API
// and is only supported for IFrame embeds. If you are using the IFrame
// API, which means you are setting the enablejsapi parameter value to 1,
// you should always specify your domain as the origin parameter value.
origin: '*',
// This parameter controls whether videos play inline or fullscreen in an
// HTML5 player on iOS. Valid values are:
// - 0: This value causes fullscreen playback. This is currently the
// default value, though the default is subject to change.
// - 1: This value causes inline playback for UIWebViews created with
// the allowsInlineMediaPlayback property set to TRUE.
// playsinline: opts.playsInline ? 1 : 0,
// This parameter indicates whether the player should show related
// videos from the same channel (0) or from any channel (1) when
// playback of the video ends. The default value is 1.
rel: opts.related ? 1 : 0,
// (Not part of documented API) Allow html elements with higher z-index
// to be shown on top of the YouTube player.
mode: 'transparent',
showinfo: 0,
html5: 1,
version: 3,
playerapiid: 'iframe_YTP_1624972482514'
// version=3&playerapiid=iframe_YTP_1624972482514
// This parameter causes the player to begin playing the video at the given number
// of seconds from the start of the video. The parameter value is a positive integer.
// Note that similar to the seek function, the player will look for the closest
// keyframe to the time you specify. This means that sometimes the play head may seek
// to just before the requested time, usually no more than around two seconds.
// start: opts.start
},
events: {
onReady: () => this._onReady(videoId),
onStateChange: (data) => this._onStateChange(data),
onPlaybackQualityChange: (data) => this._onPlaybackQualityChange(data),
onPlaybackRateChange: (data) => this._onPlaybackRateChange(data),
onError: (data) => this._onError(data)
}
})
}
/**
* This event fires when the player has finished loading and is ready to begin
* receiving API calls.
*/
_onReady (videoId) {
if (this.destroyed) return
this._ready = true
// Once the player is ready, always call `load(videoId, [autoplay, [size]])`
// to handle these possible cases:
//
// 1. `load(videoId, true)` was called before the player was ready. Ensure that
// the selected video starts to play.
//
// 2. `load(videoId, false)` was called before the player was ready. Now the
// player is ready and there's nothing to do.
//
// 3. `load(videoId, [autoplay])` was called multiple times before the player
// was ready. Therefore, the player was initialized with the wrong videoId,
// so load the latest videoId and potentially autoplay it.
this.load(this.videoId, this._autoplay, this._start)
this._flushQueue()
}
/**
* Called when the player's state changes. We emit friendly events so the user
* doesn't need to use YouTube's YT.PlayerState.* event constants.
*/
_onStateChange (data) {
if (this.destroyed) return
var state = YOUTUBE_STATES[data.data]
if (state) {
// Send a 'timeupdate' anytime the state changes. When the video halts for any
// reason ('paused', 'buffering', or 'ended') no further 'timeupdate' events
// should fire until the video unhalts.
if (['paused', 'buffering', 'ended'].includes(state)) this._onTimeupdate()
this.emit(state)
// When the video changes ('unstarted' or 'cued') or starts ('playing') then a
// 'timeupdate' should follow afterwards (never before!) to reset the time.
if (['unstarted', 'playing', 'cued'].includes(state)) this._onTimeupdate()
} else {
throw new Error('Unrecognized state change: ' + data)
}
}
/**
* This event fires whenever the video playback quality changes. Possible
* values are: 'small', 'medium', 'large', 'hd720', 'hd1080', 'highres'.
*/
_onPlaybackQualityChange (data) {
if (this.destroyed) return
this.emit('playbackQualityChange', data.data)
}
/**
* This event fires whenever the video playback rate changes.
*/
_onPlaybackRateChange (data) {
if (this.destroyed) return
this.emit('playbackRateChange', data.data)
}
/**
* This event fires if an error occurs in the player.
*/
_onError (data) {
if (this.destroyed) return
var code = data.data
// The HTML5_ERROR error occurs when the YouTube player needs to switch from
// HTML5 to Flash to show an ad. Ignore it.
if (code === YOUTUBE_ERROR.HTML5_ERROR) return
// The remaining error types occur when the YouTube player cannot play the
// given video. This is not a fatal error. Report it as unplayable so the user
// has an opportunity to play another video.
if (code === YOUTUBE_ERROR.UNPLAYABLE_1 ||
code === YOUTUBE_ERROR.UNPLAYABLE_2 ||
code === YOUTUBE_ERROR.NOT_FOUND ||
code === YOUTUBE_ERROR.INVALID_PARAM) {
return this.emit('unplayable', this.videoId)
}
// Unexpected error, does not match any known type
this._destroy(new Error('YouTube Player Error. Unknown error code: ' + code))
}
_startOptimizeDisplayEvent () {
if (this._resizeListener) return;
this._resizeListener = () => this._optimizeDisplayHandler('center, center')
window.addEventListener('resize', this._resizeListener);
}
/**
* This event fires when the time indicated by the `getCurrentTime()` method
* has been updated.
*/
_onTimeupdate () {
this.emit('timeupdate', this.getCurrentTime())
}
_startInterval () {
this._interval = setInterval(() => this._onTimeupdate(), this._opts.timeupdateFrequency)
}
_stopInterval () {
clearInterval(this._interval)
this._interval = null
}
}