Merge branch 'master' into hlds

This commit is contained in:
Midgard 2020-01-22 20:40:28 +01:00
commit 894f9f0016
Signed by: midgard
GPG key ID: 511C112F1331BBB4
60 changed files with 2675 additions and 187 deletions

4
.gitignore vendored
View file

@ -68,5 +68,9 @@ app/config.py
*.sqlite
tmp/
<<<<<<< HEAD
.tern-port
# Do not add scss cache
*.sass-cache

View file

@ -40,6 +40,8 @@ Finally run the webserver with
python3 app/app.py runserver
Make sure to use localhost instead of 127.0.0.1 if you want to be able to login.
## Development
### Changing the database

View file

@ -73,7 +73,6 @@ def register_plugins(app: Flask) -> Manager:
app_manager = Manager(app)
app_manager.add_command("db", MigrateCommand)
app_manager.add_command("runserver", Server(port=8000))
# Add admin interface
init_admin(app, db)
@ -157,7 +156,7 @@ def add_template_filters(app: Flask) -> None:
minutes, seconds = divmod(remainder, 60)
time = "%02d:%02d:%02d" % (hours, minutes, seconds)
if show_text:
return "closes in " + time
return f"{time} left"
return time
@app.template_filter("year")

110
app/static/css/darkmode.css Normal file
View file

@ -0,0 +1,110 @@
:root {
/*Darkmode colors*/
--dGray0:#D0D0D8;
--dGray1:#8E8E93;
--dGray2:#636366;
--dGray3:#48484A;
--dGray4:#3A3A3C;
--dGray5:#2C2C2E;
--dGray6:#1C1C1E;
--dBlue:#0A84FF;
}
.table-hover tbody tr:hover{
background-color: var(--dGray3);
}
body{
background-color: var(--dGray5);
color: var(--dGray1);
}
a {
color: var(--dBlue);
}
.btn-primary {
color: var(--dGray6);
background-color: var(--dBlue);
}
.navbar {
background-color: var(--dGray6);
}
.navbar-default .navbar-nav .active a{
background-color: var(--dGray4);
color: var(--dGray1);
}
.navbar-default .navbar-nav .active a:hover{
background-color: var(--dGray3);
color: var(--dGray0);
}
.navbar-default .navbar-nav li a,.navbar-default .navbar-brand{
color: var(--dGray1);
}
.navbar-default .navbar-nav li a:hover,.navbar-default .navbar-brand:hover{
color: var(--dGray0);
}
hr{
border-top: 1px solid var(--dGray2);
}
h1, h2, h3, h4, h5, h6{
color: var(--dGray1);
}
.jumbotron, .darker {
background-color: var(--dGray4);
}
.table tbody tr td {
border-top: 1px solid var(--dGray3);
}
.table thead tr th {
border-bottom: 2px solid var(--dGray2);
}
.navbar-toggle .icon-bar {
background-color: var(--dGray0);
opacity: 0.5;
}
.select2-container--default .select2-selection--single{
background-color: var(--dGray3);
color: var(--dGray0);
}
.select2-container--default .select2-selection--single .select2-selection__rendered{
color: var(--dGray0);
}
.select2-results__option{
background-color: var(--dGray5);
color: var(--dGray0);
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: var(--dGray4);
color: var(--dGray0);
}
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover,
.bootstrap-datetimepicker-widget table td.day:hover,
.bootstrap-datetimepicker-widget table td.hour:hover,
.bootstrap-datetimepicker-widget table td.minute:hover,
.bootstrap-datetimepicker-widget table td span:hover,
.bootstrap-datetimepicker-widget table td.second:hover {
background: var(--dGray4);
}
.select2-container--default .select2-results__option[aria-selected=true]{
background-color: var(--dBlue);
color: var(--dGray0);
}
.select2-search{
background-color: var(--dGray2);
}
.select2-search input{
background-color: var(--dGray0);
}
.dropdown-menu{
background-color: var(--dGray5);
}
.form-control{
color: var(--dGray0);
}
.form-control::placeholder{
color: var(--dGray2);
}
.enter_darkmode>a {
text-align: center;
}

View file

@ -12,17 +12,20 @@
--FontFamily:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;
--FontSize:13px;
}
html {
height: 100%;
}
body {
padding-top: 70px;
background-color: var(--dGray5);
color: var(--dGray1);
height: 100%;
font-family: var(--FontFamily);
font-size: var(--FontSize);
}
.background{
position: absolute;
z-index: -1000;
@ -64,6 +67,15 @@ body {
padding-left: 20px;
}
.order_row {
background: var(--dGray4);
}
.time_data{
display: flex;
justify-content: space-between;
}
@media(min-width: 768px) and (max-width: 991px){
/* Make sure the small map in the location page has the same with as the block above */
.sm-no-side-padding {
@ -90,10 +102,6 @@ div.box:hover {
box-shadow: 2px 4px 4px -1px #888888;
}
.darkmode .table-hover tbody tr:hover{
background-color: var(--dGray3);
}
a.divLink {
position: absolute;
width: 100%;
@ -126,97 +134,96 @@ a.divLink {
display: none;
}
.darkmode {
background-color: var(--dGray5);
color: var(--dGray1);
.table-hover tbody tr:hover{
background-color: var(--dGray3);
}
.darkmode a {
a {
color: var(--dBlue);
}
.darkmode .btn-primary {
.btn-primary {
color: var(--dGray6);
background-color: var(--dBlue);
}
.darkmode .navbar {
.navbar {
background-color: var(--dGray6);
}
.darkmode .navbar-default .navbar-nav .active a{
.navbar-default .navbar-nav .active a{
background-color: var(--dGray4);
color: var(--dGray1);
}
.darkmode .navbar-default .navbar-nav .active a:hover{
.navbar-default .navbar-nav .active a:hover{
background-color: var(--dGray3);
color: var(--dGray0);
}
.darkmode .navbar-default .navbar-nav li a,.darkmode .navbar-default .navbar-brand{
.navbar-default .navbar-nav li a,.navbar-default .navbar-brand{
color: var(--dGray1);
}
.darkmode .navbar-default .navbar-nav li a:hover,.darkmode .navbar-default .navbar-brand:hover{
.navbar-default .navbar-nav li a:hover,.navbar-default .navbar-brand:hover{
color: var(--dGray0);
}
.darkmode hr{
hr{
border-top: 1px solid var(--dGray2);
}
.darkmode h1, .darkmode h2, .darkmode h3, .darkmode h4, .darkmode h5, .darkmode h6{
h1, h2, h3, h4, h5, h6{
color: var(--dGray1);
}
.darkmode .jumbotron, .darkmode .darker {
.jumbotron, .darker {
background-color: var(--dGray4);
}
.darkmode .table tbody tr td {
.table tbody tr td {
border-top: 1px solid var(--dGray3);
}
.darkmode .table thead tr th {
.table thead tr th {
border-bottom: 2px solid var(--dGray2);
}
.darkmode .navbar-toggle .icon-bar {
.navbar-toggle .icon-bar {
background-color: var(--dGray0);
opacity: 0.5;
}
.darkmode .select2-container--default .select2-selection--single{
.select2-container--default .select2-selection--single{
background-color: var(--dGray3);
color: var(--dGray0);
}
.darkmode .select2-container--default .select2-selection--single .select2-selection__rendered{
.select2-container--default .select2-selection--single .select2-selection__rendered{
color: var(--dGray0);
}
.darkmode .select2-results__option{
.select2-results__option{
background-color: var(--dGray5);
color: var(--dGray0);
}
.darkmode .select2-container--default .select2-results__option--highlighted[aria-selected] {
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: var(--dGray4);
color: var(--dGray0);
}
.darkmode .bootstrap-datetimepicker-widget table thead tr:first-child th:hover,
.darkmode .bootstrap-datetimepicker-widget table td.day:hover,
.darkmode .bootstrap-datetimepicker-widget table td.hour:hover,
.darkmode .bootstrap-datetimepicker-widget table td.minute:hover,
.darkmode .bootstrap-datetimepicker-widget table td span:hover,
.darkmode .bootstrap-datetimepicker-widget table td.second:hover {
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover,
.bootstrap-datetimepicker-widget table td.day:hover,
.bootstrap-datetimepicker-widget table td.hour:hover,
.bootstrap-datetimepicker-widget table td.minute:hover,
.bootstrap-datetimepicker-widget table td span:hover,
.bootstrap-datetimepicker-widget table td.second:hover {
background: var(--dGray4);
}
.darkmode .select2-container--default .select2-results__option[aria-selected=true]{
.select2-container--default .select2-results__option[aria-selected=true]{
background-color: var(--dBlue);
color: var(--dGray0);
}
.darkmode .select2-search{
.select2-search{
background-color: var(--dGray2);
}
.darkmode .select2-search input{
.select2-search input{
background-color: var(--dGray0);
}
.darkmode .dropdown-menu{
.dropdown-menu{
background-color: var(--dGray5);
}
.darkmode .form-control{
.form-control{
color: var(--dGray0);
}
.darkmode .form-control::placeholder{
.form-control::placeholder{
color: var(--dGray2);
}
.enter_darkmode>a {

View file

@ -0,0 +1,12 @@
/*Darkmode*/
:root {
/*Darkmode colors*/
--dGray0:#D0D0D8;
--dGray1:#8E8E93;
--dGray2:#636366;
--dGray3:#48484A;
--dGray4:#3A3A3C;
--dGray5:#2C2C2E;
--dGray6:#1C1C1E;
--dBlue:#0A84FF;
}

View file

@ -0,0 +1,4 @@
.background {
background-image: url("https://kelder.zeus.ugent.be/webcam/video/mjpg.cgi?profileid=2");
background-size: contain;
}

View file

@ -0,0 +1,16 @@
/*halloween*/
:root {
/*Darkmode colors*/
--dGray0:#FFEB65;
--dGray1:#F28705;
--dGray2:#F25C05;
--dGray3:#F27405;
--dGray4:#8C3D0F;
--dGray5:#260101;
--dGray6:#260101;
--dBlue:#D91604;
}
.table-hover tbody tr:hover{
background-image: url("static/images/themes/halloween/Halloween.jpeg");
}

View file

@ -0,0 +1,534 @@
@charset "UTF-8";
/*
¡¡¡ OPGELET !!!
Deze css bevat lelijke code.
Dit komt doordat bootstrap lelijk en oud is.
Ik zal later proberen de css te verbeteren en bootstrap weg te gooien.
Enige discretie is aangeraden.
---=§[ Arnhoudt ]§=---
*/
/*high performance kerstmis*/
:root {
/*Darkmode colors*/
--dGray0:#F28705;
--dGray1:white;
--dGray2:#590212;
--dGray3:#590212;
--dGray4:#274001;
--dGray5:#274001;
--dGray6:#F2778D;
--dBlue:#F2778D; }
body {
height: 100%;
font-family: Radikal,Optima,Segoe,Segoe UI,Candara,Calibri,Arial,sans-serif;
background-color: #2F0000; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_regular.ttf");
font-weight: normal; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_light.ttf");
font-weight: 200; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_medium.ttf");
font-weight: medium; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_bold.ttf");
font-weight: bold; }
.btn {
border-radius: 5rem;
color: white;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
background-image: linear-gradient(-40deg, #F53030, #F58B9E); }
.btn:hover {
background-image: linear-gradient(-40deg, #A81111, #FF4B33); }
.navbar {
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
padding: 1.5rem;
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
text-transform: capitalize; }
.nav > li > a {
padding-left: 1vw;
padding-right: 1vw; }
.main {
height: 90vh;
overflow: scroll;
padding-left: 0;
padding-right: 0;
width: 100%;
display: flex;
align-items: center;
flex-direction: column; }
.navbar .container {
width: 100%;
padding: 0 4vw; }
@media (min-width: 768px) {
.container {
width: 100%; } }
@media (min-width: 992px) {
.main .container, .main .orders {
width: 970px; } }
@media (min-width: 1200px) {
.main .container, .main .orders {
width: 1170px; } }
.main {
padding-top: 2.5rem; }
.order_data {
display: flex;
flex-direction: row;
width: 100%;
justify-content: space-between;
padding: 0 3rem;
align-items: baseline; }
.order_row {
background: transparent; }
.order_data h5 {
max-width: 60%;
padding-bottom: 3rem; }
.expand_button {
padding: 1rem 0rem;
margin-top: -1rem;
width: 70%;
margin-bottom: 1.5rem; }
.hi_im_haldis h2 {
display: none; }
.hi_im_haldis h3 {
width: 100%;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
text-align: center; }
.hi_im_haldis {
background: linear-gradient(70deg, rgba(203, 52, 68, 0.8), rgba(135, 32, 44, 0.8));
border-radius: 0;
width: 100%; }
.hi_im_haldis_wrapper {
width: 100%; }
.darker:nth-child(even) {
background-color: #B62937;
border-radius: 2rem; }
.darker:nth-child(odd) {
background-color: #821C25;
border-radius: 2rem; }
.darker {
padding: 1rem; }
.order_row:nth-child(even) .order_data {
background-color: #B62937;
border-radius: 2rem; }
.order_row:nth-child(odd) .order_data {
background-color: #821C25;
border-radius: 2rem; }
.order_row h5 {
font-weight: bold; }
.order_row {
margin-bottom: 3rem; }
h3 {
padding-bottom: 1rem; }
.home_sir {
font-weight: bold;
color: #F45D68; }
.expand_button_wrapper {
margin-top: -1rem;
width: 100%;
display: flex;
justify-content: center; }
.time_data {
text-align: right;
display: flex;
flex-direction: column;
justify-self: right; }
.navbar .navbar-nav .active a {
color: #ff9bae;
border-bottom: 1px solid #ff9bae;
padding-bottom: 1rem; }
.navbar-nav {
padding-left: 2rem; }
.jumbotron, .darker {
display: flex;
flex-direction: column;
border-radius: 4rem; }
.row > div > h5 {
font-weight: bold;
padding-top: 1.5rem;
font-size: 2.5rem; }
.row > div > .amount_of_orders {
font-weight: lighter;
font-size: 1.6rem; }
.row > div .time {
font-weight: lighter; }
.jumbotron {
background-color: transparent; }
.navbar-default .navbar-nav .active a, .navbar-default .navbar-nav .active a:hover {
background-color: transparent; }
.background {
-webkit-filter: blur(0px) brightness(80%);
-moz-filter: blur(0px) brightness(80%);
-o-filter: blur(0px) brightness(80%);
-ms-filter: blur(0px) brightness(80%);
filter: blur(0px) brightness(80%);
position: fixed;
top: 0;
left: 0; }
footer a {
color: #69E8FF; }
footer {
position: fixed;
bottom: 0;
width: 100%;
background: #CB3444;
height: 5rem;
display: flex;
align-items: center; }
footer > hr {
display: none; }
#mapid {
width: 100%; }
.order_overview, .order_order, .order_items, .order_ordered, .order_depts {
padding: 1rem 5rem 3rem 5rem; }
.order_overview {
width: 100%; }
.order_depts {
width: 100%;
margin-bottom: 10rem; }
.location_data, .location_products {
width: 100%; }
.location_products {
margin-bottom: 10rem; }
.locations_locations {
padding: 1rem 5rem 3rem 5rem; }
.background_wrapper {
position: absolute;
left: 0;
bottom: 5rem;
width: 100%;
height: 100%;
overflow: hidden; }
.christmas_background {
z-index: -101;
width: 300%;
height: 300%;
background: linear-gradient(-45deg, #2F0000, #C20A12);
animation: gradientBG 19s ease infinite; }
.sled {
width: 15rem;
height: 15rem;
transition: transform 2s ease-in 5s, rotate 1s ease-in-out 2s;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-image: url("static/images/themes/kerstmis/sled.svg"); }
.sled_wrapper {
top: 0.5rem;
left: -7.5rem;
position: absolute;
transform: translate(-50vw, 40vh) rotate(0deg);
width: 15rem;
height: 15rem;
animation: sled 29s ease-in-out infinite; }
.train_button:checked ~ .sled_wrapper:hover {
animation-play-state: paused; }
.train_button:checked ~ .sled_wrapper:hover .sled {
transform: translateY(100vh) rotate(90deg); }
.snowman_wrapper {
height: 17rem;
width: 10rem;
position: absolute;
bottom: 15rem;
left: -12rem;
animation: snowman 37s ease infinite;
transform-origin: right bottom; }
.snowman_head {
position: absolute;
top: 0;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_head.svg");
animation: snowman_head 2s ease infinite; }
.snowman_body {
position: absolute;
top: 9.5rem;
left: 0.5rem;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_body.svg"); }
.train_button:checked ~ .merry_christmas {
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-position: center;
background-image: url("static/images/themes/kerstmis/merry_christmas.svg");
background-size: 25vw;
background-repeat: no-repeat;
animation: merry_christmas 5s ease infinite; }
.train_button {
position: absolute;
transform: scaleX(20) scaleY(8) translateX(-100rem);
bottom: 5.5rem;
left: 7rem;
animation: follow_train 47s linear infinite;
opacity: 0; }
.train_wrapper {
position: absolute;
bottom: 0.5rem;
transform: translateX(-80vw);
animation: train 47s linear infinite; }
.wheel_big, .wheel_small {
position: absolute;
bottom: -0.4rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/wheel.svg"); }
.train {
position: absolute;
bottom: 0.5rem;
left: 30rem;
width: 30rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/train.svg");
animation: whobble 1s linear alternate-reverse infinite; }
.wheel_big {
width: 3.2rem;
height: 3.2rem; }
.wheel_small {
width: 2.5rem;
height: 2.5rem; }
.train .wheel1 {
animation: turn 2s linear infinite;
left: 3.5rem; }
.train .wheel2 {
animation: turn 2s linear infinite, -0.1s;
left: 7rem; }
.train .wheel3 {
animation: turn 2s linear infinite -0.3s;
left: 10.5rem; }
.train .wheel4 {
animation: turn 1.5s linear infinite -0.5s;
left: 13.9rem; }
.train .wheel5 {
animation: turn 1.5s linear infinite -0.7s;
left: 16.6rem; }
.zeus_wagon, .mc_wagon {
position: absolute;
bottom: 1.25rem;
width: 30rem;
height: 7.5rem;
background-repeat: no-repeat;
background-size: contain;
animation: whobble 1s linear alternate-reverse infinite; }
.mc_wagon {
background-image: url("static/images/themes/kerstmis/mc_wagon.svg");
left: 0rem; }
.zeus_wagon {
background-image: url("static/images/themes/kerstmis/zeus_wagon.svg");
left: 15rem; }
.zeus_wagon .wheel1, .mc_wagon .wheel1 {
animation: turn 2s linear infinite;
bottom: -1.1rem;
left: 2.2rem; }
.zeus_wagon .wheel2, .mc_wagon .wheel2 {
animation: turn 2s linear infinite, -0.1s;
bottom: -1.1rem;
left: 5.75rem; }
.zeus_wagon .wheel3, .mc_wagon .wheel3 {
animation: turn 2s linear infinite -0.3s;
bottom: -1.1rem;
left: 9.3rem; }
.snow {
border-radius: 50%;
opacity: 0.8;
position: absolute;
top: -100vh;
animation-name: fall;
animation-timing-function: linear;
animation-iteration-count: infinite; }
.layer1 {
width: 1rem;
height: 1rem;
filter: blur(1.5px);
box-shadow: 71vw 89.7vh 0 -0.13rem#fff,37.6vw 73.2vh 0 -0.46rem#fff,31.1vw 76.6vh 0 -0.42rem#fff,41.5vw 94vh 0 -0.3rem#fff,76.7vw 28.6vh 0 -0.18rem#fff,21.7vw 70.7vh 0 -0.34rem#fff,14.6vw 72.9vh 0 -0.04rem#fff,72vw 50vh 0 -0.12rem#fff,89.6vw 90.4vh 0 -0.45rem#fff,49.7vw 21.5vh 0 -0.02rem#fff,15.8vw 87.2vh 0 -0.04rem#fff,46.3vw 85.9vh 0 -0.24rem#fff,91.6vw 7.4vh 0 -0.11rem#fff,83.3vw 60.5vh 0 -0.06rem#fff,15.2vw 3.2vh 0 -0.31rem#fff,52.9vw 54.1vh 0 -0.48rem#fff,58.9vw 42.1vh 0 -0.07rem#fff,40.7vw 10.5vh 0 -0.25rem#fff,53.7vw 74.5vh 0 -0.33rem#fff,89vw 50.9vh 0 -0.2rem#fff,35vw 22.6vh 0 -0.2rem#fff,18.9vw 66.4vh 0 -0.33rem#fff,66.8vw 22.9vh 0 -0.05rem#fff,34.3vw 46.9vh 0 -0.26rem#fff,72.9vw 33.1vh 0 -0.25rem#fff,23.2vw 2.5vh 0 -0.16rem#fff,60.3vw 21.6vh 0 -0.35rem#fff,14.3vw 0.6vh 0 -0.09rem#fff,95.6vw 72.2vh 0 -0.03rem#fff,4vw 28.6vh 0 -0.17rem#fff,40.8vw 67.7vh 0 -0.16rem#fff,85vw 88.1vh 0 -0.41rem#fff,37.4vw 50.1vh 0 -0.07rem#fff,50.8vw 39.8vh 0 -0.01rem#fff,14.4vw 95.1vh 0 -0.23rem#fff,77.7vw 10.2vh 0 -0.14rem#fff,35.1vw 59vh 0 -0.03rem#fff,45.8vw 42.4vh 0 -0.37rem#fff,48.3vw 51.3vh 0 -0.45rem#fff,98.3vw 5.8vh 0 -0.26rem#fff,2.4vw 88vh 0 -0.17rem#fff,16vw 49.1vh 0 -0.39rem#fff,76.6vw 42.6vh 0 -0.25rem#fff,17.2vw 44.5vh 0 -0.1rem#fff,51.2vw 73.7vh 0 -0.33rem#fff,31.7vw 59.2vh 0 -0.47rem#fff,32.4vw 68.9vh 0 -0.07rem#fff,3.7vw 94.8vh 0 -0.33rem#fff,55.3vw 3.8vh 0 -0.24rem#fff,25.3vw 81.2vh 0 -0.21rem#fff,68.2vw 97.6vh 0 -0.27rem#fff,43.4vw 56.5vh 0 -0.06rem#fff,40.6vw 98.7vh 0 -0.49rem#fff,41.2vw 37.2vh 0 -0.22rem#fff,66.7vw 21.2vh 0 -0.32rem#fff,3.6vw 75.9vh 0 -0.04rem#fff,66.2vw 71.2vh 0 -0.33rem#fff,30.6vw 59.9vh 0 -0.02rem#fff,22.6vw 72.1vh 0 -0.02rem#fff,93.9vw 9.7vh 0 -0.19rem#fff,99.1vw 73.3vh 0 -0.07rem#fff,48.4vw 94.2vh 0 -0.33rem#fff,44.1vw 55.1vh 0 -0.35rem#fff,98.3vw 34vh 0 -0.07rem#fff,85.1vw 30.4vh 0 -0.42rem#fff,65.2vw 21.4vh 0 -0.05rem#fff,72.1vw 92.9vh 0 -0.48rem#fff,25.8vw 53.6vh 0 -0.02rem#fff,13.8vw 12.7vh 0 -0.26rem#fff,79.4vw 94.9vh 0 -0.06rem#fff,41.8vw 56.2vh 0 -0.31rem#fff,67.4vw 20.2vh 0 -0.34rem#fff,35.6vw 88.7vh 0 -0.1rem#fff,12.5vw 20.1vh 0 -0.06rem#fff,30.3vw 32.7vh 0 -0.34rem#fff,51.4vw 84.2vh 0 -0.15rem#fff,16.2vw 80.1vh 0 -0.31rem#fff,6.1vw 14.1vh 0 -0.41rem#fff,86.6vw 55.9vh 0 -0.41rem#fff,43.5vw 75.9vh 0 -0.45rem#fff,77.5vw 20.4vh 0 -0.12rem#fff,67.7vw 97.6vh 0 -0.08rem#fff,0.8vw 18.1vh 0 -0.33rem#fff,60.6vw 21.3vh 0 -0.19rem#fff,70.2vw 79.3vh 0 -0.26rem#fff,50.8vw 68.8vh 0 -0.35rem#fff,53.9vw 12.5vh 0 -0.39rem#fff,76.4vw 45.9vh 0 -0.12rem#fff,11.5vw 58.7vh 0 -0.31rem#fff,76.3vw 74.7vh 0 -0.4rem#fff,4.7vw 46.7vh 0 -0.39rem#fff,54.5vw 63.6vh 0 -0.28rem#fff,51.6vw 65.9vh 0 -0.3rem#fff,65.9vw 47.6vh 0 -0.08rem#fff,91.6vw 58.8vh 0 -0.12rem#fff,26.9vw 71.6vh 0 -0.36rem#fff,59.7vw 71.2vh 0 -0.37rem#fff,47.1vw 16.2vh 0 -0.14rem#fff,72.4vw 45.7vh 0 -0.06rem#fff,30.8vw 39.3vh 0 -0.38rem#fff;
animation-duration: 18s; }
.layer1.a {
animation-delay: -9s; }
.layer2 {
width: 0.8rem;
height: 0.8rem;
filter: blur(3px);
box-shadow: 71.8vw 15.9vh 0 -0.3rem#fff,4.2vw 8.1vh 0 -0.41rem#fff,67.5vw 49.2vh 0 -0.28rem#fff,72vw 97.8vh 0 -0.22rem#fff,78.1vw 28vh 0 -0.41rem#fff,34.2vw 51.7vh 0 -0.47rem#fff,37.9vw 76.5vh 0 -0.39rem#fff,92.6vw 36.3vh 0 -0.22rem#fff,59.9vw 8.6vh 0 -0.07rem#fff,32.5vw 74vh 0 -0.07rem#fff,75.7vw 81.6vh 0 -0.12rem#fff,1.7vw 18.5vh 0 -0.2rem#fff,12.3vw 64.7vh 0 -0.37rem#fff,83.9vw 47vh 0 -0.12rem#fff,33.8vw 21.3vh 0 -0.14rem#fff,6.5vw 92.5vh 0 -0.29rem#fff,72.2vw 60.8vh 0 -0.17rem#fff,38.4vw 16vh 0 -0.17rem#fff,23.9vw 58.4vh 0 -0.32rem#fff,40.2vw 52.4vh 0 -0.23rem#fff,48.9vw 74.6vh 0 -0.03rem#fff,61.5vw 36.1vh 0 -0.49rem#fff,60.9vw 94.5vh 0 -0.42rem#fff,2.8vw 59.7vh 0 -0.27rem#fff,62.6vw 32.4vh 0 -0.45rem#fff,91.3vw 18vh 0 -0.09rem#fff,35.9vw 35.5vh 0 -0.11rem#fff,60.2vw 95.5vh 0 -0.21rem#fff,19.8vw 46.5vh 0 -0.09rem#fff,57.7vw 20.7vh 0 -0.03rem#fff,69.8vw 33.8vh 0 -0.34rem#fff,69.1vw 71.5vh 0 -0.45rem#fff,70.5vw 87.9vh 0 -0.5rem#fff,77vw 34.9vh 0 -0.43rem#fff,35.6vw 28.7vh 0 -0.14rem#fff,28.6vw 22.7vh 0 -0.47rem#fff,46.3vw 7.1vh 0 -0.06rem#fff,66.6vw 92.6vh 0 -0.32rem#fff,96.5vw 19.1vh 0 -0.12rem#fff,24.6vw 45.5vh 0 -0.27rem#fff,71.6vw 85.8vh 0 -0.16rem#fff,1.1vw 44.9vh 0 -0.36rem#fff,94.4vw 84.2vh 0 -0.19rem#fff,92.2vw 20.2vh 0 -0.27rem#fff,42.5vw 66.1vh 0 -0.46rem#fff,70.8vw 98.4vh 0 -0.01rem#fff,71.7vw 99vh 0 -0.19rem#fff,0.2vw 34.1vh 0 -0.22rem#fff,87.3vw 30.7vh 0 -0.09rem#fff,80.3vw 93.8vh 0 -0.41rem#fff,72.2vw 8.3vh 0 -0.09rem#fff,27.1vw 46.1vh 0 -0.15rem#fff,10.2vw 93.6vh 0 -0.42rem#fff,76vw 51.5vh 0 -0.26rem#fff,28.7vw 76.3vh 0 -0.11rem#fff,85.1vw 21.2vh 0 -0.46rem#fff,25.9vw 82.2vh 0 -0.34rem#fff,32.3vw 69.8vh 0 -0.29rem#fff,97.3vw 56.8vh 0 -0.26rem#fff,48.2vw 29.6vh 0 -0.28rem#fff,76.2vw 61.9vh 0 -0.1rem#fff,62vw 96vh 0 -0.01rem#fff,76vw 79.9vh 0 -0.36rem#fff,59.9vw 86.8vh 0 -0.22rem#fff,72.8vw 92.3vh 0 -0.02rem#fff,62.7vw 55.9vh 0 -0.46rem#fff,81.1vw 53.3vh 0 -0.09rem#fff,42.4vw 20.2vh 0 -0.15rem#fff,72.7vw 95.8vh 0 -0.26rem#fff,67.6vw 11vh 0 -0.08rem#fff,62.5vw 99vh 0 -0.17rem#fff,52.7vw 46.1vh 0 -0.35rem#fff,49.7vw 73vh 0 -0.33rem#fff,1.9vw 25.1vh 0 -0.06rem#fff,25.6vw 11.6vh 0 -0.43rem#fff,9.7vw 28.4vh 0 -0.11rem#fff,52.1vw 87.4vh 0 -0.45rem#fff,94.6vw 3.6vh 0 -0.37rem#fff,67.5vw 67vh 0 -0.29rem#fff,45.4vw 34.9vh 0 -0.02rem#fff,41.6vw 99.6vh 0 -0.34rem#fff,26.3vw 53vh 0 -0.01rem#fff,41.2vw 73.7vh 0 -0.36rem#fff,6.9vw 29.5vh 0 -0.17rem#fff,25.1vw 39.2vh 0 -0.2rem#fff,93.2vw 58.2vh 0 -0.3rem#fff,93.2vw 58.2vh 0 -0.31rem#fff,91.7vw 29vh 0 -0.01rem#fff,90.1vw 25.4vh 0 -0.23rem#fff,12.2vw 98.7vh 0 -0.33rem#fff,88vw 73.3vh 0 -0.29rem#fff,91.5vw 61vh 0 -0.43rem#fff,96.1vw 70.8vh 0 -0.21rem#fff,98.2vw 55.4vh 0 -0.27rem#fff,15.2vw 59vh 0 -0.34rem#fff,66.3vw 83.5vh 0 -0.05rem#fff,49vw 8.5vh 0 -0.47rem#fff,93.3vw 91.7vh 0 -0.17rem#fff,15.4vw 35.4vh 0 -0.47rem#fff,14.3vw 48.5vh 0 -0.44rem#fff;
animation-duration: 24s; }
.layer2.a {
animation-delay: -12s; }
.layer3 {
width: 0.6rem;
height: 0.6rem;
filter: blur(6px);
box-shadow: 23.4vw 84.5vh 0 -0.38rem#fff,47.1vw 27.7vh 0 -0.23rem#fff,57.9vw 71.8vh 0 -0.09rem#fff,99vw 88.7vh 0 -0.37rem#fff,69vw 41.3vh 0 -0.14rem#fff,44.7vw 79.1vh 0 -0.4rem#fff,53.2vw 22.3vh 0 -0.5rem#fff,37.8vw 79.6vh 0 -0.08rem#fff,46.1vw 40.6vh 0 -0.2rem#fff,9.8vw 50.6vh 0 -0.05rem#fff,45.6vw 13.3vh 0 -0.02rem#fff,23.3vw 18.3vh 0 -0.32rem#fff,38.4vw 20.4vh 0 -0.22rem#fff,37.5vw 34.1vh 0 -0.21rem#fff,31vw 96.9vh 0 -0.1rem#fff,6.8vw 99vh 0 -0.49rem#fff,19.7vw 13.4vh 0 -0.28rem#fff,24vw 16.4vh 0 -0.09rem#fff,98.6vw 17.6vh 0 -0.08rem#fff,5.2vw 26.8vh 0 -0.35rem#fff,60.5vw 57.7vh 0 -0.34rem#fff,63.4vw 34.1vh 0 -0.46rem#fff,62.2vw 9.9vh 0 -0.13rem#fff,31.8vw 40vh 0 -0.19rem#fff,28vw 68.9vh 0 -0.33rem#fff,74.5vw 21.3vh 0 -0.32rem#fff,30.8vw 29.5vh 0 -0.25rem#fff,80.3vw 28vh 0 -0.12rem#fff,88.7vw 47.8vh 0 -0.33rem#fff,7.9vw 70.8vh 0 -0.46rem#fff,26.6vw 49.2vh 0 -0.04rem#fff,98.4vw 42.8vh 0 -0.09rem#fff,62.5vw 64.5vh 0 -0.48rem#fff,60.7vw 92.5vh 0 -0.13rem#fff,2.8vw 99.2vh 0 -0.49rem#fff,81.4vw 21.3vh 0 -0.4rem#fff,83.4vw 47.1vh 0 -0.46rem#fff,79.2vw 2.6vh 0 -0.17rem#fff,17.7vw 3.1vh 0 -0.12rem#fff,66.4vw 98.4vh 0 -0.34rem#fff,59.5vw 51.1vh 0 -0.2rem#fff,5.8vw 28.2vh 0 -0.41rem#fff,9.7vw 54vh 0 -0.48rem#fff,24.1vw 98.3vh 0 -0.29rem#fff,9.7vw 73.1vh 0 -0.44rem#fff,10vw 53.7vh 0 -0.5rem#fff,37.7vw 16.1vh 0 -0.31rem#fff,43.9vw 51.8vh 0 -0.29rem#fff,70.8vw 54vh 0 -0.19rem#fff,61.5vw 91vh 0 -0.41rem#fff,87.1vw 13.1vh 0 -0.22rem#fff,89.6vw 34.1vh 0 -0.25rem#fff,52.8vw 38.1vh 0 -0.33rem#fff,88.4vw 79.4vh 0 -0.22rem#fff,84.4vw 84.6vh 0 -0.1rem#fff,69.4vw 8.7vh 0 -0.46rem#fff,8.8vw 73.7vh 0 -0.19rem#fff,89.3vw 14.7vh 0 -0.1rem#fff,100vw 72.7vh 0 -0.2rem#fff,16.9vw 93.8vh 0 -0.22rem#fff,90.7vw 36.1vh 0 -0.43rem#fff,46.6vw 49.6vh 0 -0.21rem#fff,57.3vw 72.3vh 0 -0.03rem#fff,49.7vw 2vh 0 -0.15rem#fff,67vw 96.2vh 0 -0.47rem#fff,86vw 71.7vh 0 -0.11rem#fff,66vw 65.8vh 0 -0.32rem#fff,85.2vw 7.6vh 0 -0.12rem#fff,95.9vw 49.4vh 0 -0.15rem#fff,33.2vw 66.6vh 0 -0.14rem#fff,75.4vw 26.3vh 0 -0.02rem#fff,52.7vw 56vh 0 -0.11rem#fff,37.7vw 77vh 0 -0.18rem#fff,26.3vw 59.9vh 0 -0.18rem#fff,88.2vw 74.6vh 0 -0.39rem#fff,89.5vw 61.2vh 0 -0.48rem#fff,62vw 79.5vh 0 -0.4rem#fff,98.7vw 3.9vh 0 -0.01rem#fff,63.3vw 32vh 0 -0.43rem#fff,49.6vw 28.5vh 0 -0.09rem#fff,70vw 87vh 0 -0.05rem#fff,38.3vw 67.3vh 0 -0.49rem#fff,41.8vw 82.5vh 0 -0.36rem#fff,85.8vw 74vh 0 -0.07rem#fff,82.3vw 48.8vh 0 -0.11rem#fff,35.2vw 79.8vh 0 -0.4rem#fff,73.3vw 72.4vh 0 -0.36rem#fff,62.4vw 30.5vh 0 -0.14rem#fff,48.5vw 51.9vh 0 -0.03rem#fff,74.6vw 51.1vh 0 -0.35rem#fff,62.6vw 12.8vh 0 -0.33rem#fff,10vw 72.1vh 0 -0.2rem#fff,59vw 50.5vh 0 -0.04rem#fff,79.1vw 60.1vh 0 -0.34rem#fff,77.5vw 45.1vh 0 -0.23rem#fff,53vw 77.3vh 0 -0.4rem#fff,46.8vw 52.1vh 0 -0.44rem#fff,60.7vw 81vh 0 -0.17rem#fff,86.2vw 53.9vh 0 -0.01rem#fff,85.8vw 79.2vh 0 -0.39rem#fff;
animation-duration: 30s; }
.layer3.a {
animation-delay: -15s; }
@keyframes fall {
100% {
transform: translateY(200vh); } }
@keyframes gradientBG {
0% {
transform: translate(-10%, -10%); }
50% {
transform: translate(-60%, -60%); }
100% {
transform: translate(-10%, -10%); } }
@keyframes sled {
0% {
transform: translate(-50rem, 40vh) rotate(0deg); }
4% {
transform: translate(-50rem, 40vh) rotate(0deg); }
20% {
transform: translate(50vw, 10vh) rotate(20deg); }
36% {
transform: translate(150vw, 40vh) rotate(40deg); }
100% {
transform: translate(150vw, 40vh) rotate(40deg); } }
@keyframes train {
0% {
transform: translateX(-80rem); }
55% {
transform: translateX(-80rem); }
85% {
transform: translateX(100vw); }
100% {
transform: translateX(100vw); } }
@keyframes follow_train {
0% {
transform: translateX(-80rem) scaleX(20) scaleY(8); }
55% {
transform: translateX(-80rem) scaleX(20) scaleY(8); }
85% {
transform: translateX(100vw) scaleX(20) scaleY(8); }
100% {
transform: translateX(100vw) scaleX(20) scaleY(8); } }
@keyframes turn {
100% {
transform: rotate(360deg); } }
@keyframes whobble {
100% {
transform: translateY(0.5vh); } }
@keyframes snowman {
0% {
transform: rotate(0); }
20% {
transform: rotate(0); }
30% {
transform: rotate(80deg); }
54% {
transform: rotate(80deg); }
68% {
transform: rotate(0); }
100% {
transform: rotate(0); } }
@keyframes snowman_head {
0% {
transform: rotate(-3deg); }
50% {
transform: rotate(3deg); }
100% {
transform: rotate(-3deg); } }
@keyframes merry_christmas {
0% {
opacity: 0.8; }
50% {
opacity: 0.6; }
100% {
opacity: 0.8; } }
/*# sourceMappingURL=kerstmis.css.map */

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,662 @@
/*
¡¡¡ OPGELET !!!
Deze css bevat lelijke code.
Dit komt doordat bootstrap lelijk en oud is.
Ik zal later proberen de css te verbeteren en bootstrap weg te gooien.
Enige discretie is aangeraden.
---=§[ Arnhoudt ]§=---
*/
/*high performance kerstmis*/
:root {
/*Darkmode colors*/
--dGray0:#F28705;
--dGray1:white;
--dGray2:#590212;
--dGray3:#590212;
--dGray4:#274001;
--dGray5:#274001;
--dGray6:#F2778D;
--dBlue:#F2778D;
}
body{
height: 100%;
font-family: Radikal,Optima,Segoe,Segoe UI,Candara,Calibri,Arial,sans-serif;
background-color: #2F0000;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_regular.ttf');
font-weight: normal;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_light.ttf');
font-weight: 200;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_medium.ttf');
font-weight: medium;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_bold.ttf');
font-weight: bold;
}
.btn{
border-radius: 5rem;
color: white;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
background-image: linear-gradient(-40deg,#F53030, #F58B9E);
}
.btn:hover{
background-image: linear-gradient(-40deg, #A81111, #FF4B33);
}
.navbar {
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
padding: 1.5rem;
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
text-transform: capitalize;
}
.nav>li>a {
padding-left: 1vw;
padding-right: 1vw;
}
.main{
height: 90vh;
overflow: scroll;
padding-left: 0;
padding-right: 0;
width: 100%;
display: flex;
align-items: center;
flex-direction: column;
}
.navbar .container{
width: 100%;
padding: 0 4vw;
}
@media (min-width: 768px){
.container {
width: 100%;
}
}
@media (min-width: 992px){
.main .container, .main .orders {
width: 970px;
}
}
@media (min-width: 1200px){
.main .container, .main .orders {
width: 1170px;
}
}
.main{
padding-top: 2.5rem;
}
.order_data {
display: flex;
flex-direction: row;
width: 100%;
justify-content: space-between;
padding: 0 3rem;
align-items: baseline;
}
.order_row {
background: transparent;
}
.order_data h5{
max-width: 60%;
padding-bottom: 3rem;
}
.expand_button{
padding: 1rem 0rem;
margin-top: -1rem;
width: 70%;
margin-bottom: 1.5rem;
}
.hi_im_haldis h2{
display: none;
}
.hi_im_haldis h3 {
width: 100%;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
text-align: center;
}
.hi_im_haldis {
background: linear-gradient(70deg,rgba(203, 52, 68,0.8), rgba(135, 32, 44,0.8));
border-radius: 0;
width: 100%;
}
.hi_im_haldis_wrapper {
width: 100%;
}
.darker:nth-child(even){
background-color: #B62937;
border-radius: 2rem;
}
.darker:nth-child(odd){
background-color: #821C25;
border-radius: 2rem;
}
.darker{
padding: 1rem;
}
.order_row:nth-child(even) .order_data {
background-color: #B62937;
border-radius: 2rem;
}
.order_row:nth-child(odd) .order_data {
background-color: #821C25;
border-radius: 2rem;
}
.order_row h5{
font-weight: bold;
}
.order_row{
margin-bottom: 3rem;
}
h3{
padding-bottom: 1rem;
}
.home_sir {
font-weight: bold;
color: #F45D68;
}
.expand_button_wrapper{
margin-top: -1rem;
width: 100%;
display: flex;
justify-content: center;
}
.time_data {
text-align: right;
display: flex;
flex-direction: column;
justify-self: right;
}
.navbar .navbar-nav .active a{
color: rgb(255, 155, 174);
border-bottom: 1px solid rgb(255, 155, 174);
padding-bottom: 1rem;
}
.navbar-nav{
padding-left: 2rem;
}
.jumbotron, .darker {
display: flex;
flex-direction: column;
border-radius: 4rem;
}
.row>div>h5 {
font-weight: bold;
padding-top: 1.5rem;
font-size: 2.5rem;
}
.row>div>.amount_of_orders{
font-weight: lighter;
font-size: 1.6rem;
}
.row>div .time{
font-weight: lighter;
}
.jumbotron {
background-color: transparent;
}
.navbar-default .navbar-nav .active a, .navbar-default .navbar-nav .active a:hover{
background-color: transparent;
}
.background {
-webkit-filter: blur(0px) brightness(80%);
-moz-filter: blur(0px) brightness(80%);
-o-filter: blur(0px) brightness(80%);
-ms-filter: blur(0px) brightness(80%);
filter: blur(0px) brightness(80%);
position: fixed;
top: 0;
left: 0;
}
footer a{
color: #69E8FF;
}
footer{
position: fixed;
bottom: 0;
width: 100%;
background:#CB3444;
height: 5rem;
display: flex;
align-items: center;
}
footer>hr{
display: none;
}
#mapid {
width: 100%;
}
.order_overview, .order_order, .order_items, .order_ordered, .order_depts {
padding: 1rem 5rem 3rem 5rem;
}
.order_overview{
width: 100%;
}
.order_depts {
width: 100%;
margin-bottom: 10rem;
}
.location_data, .location_products {
width: 100%;
}
.location_products {
margin-bottom: 10rem;
}
.locations_locations {
padding: 1rem 5rem 3rem 5rem;
}
.background_wrapper {
position: absolute;
left: 0;
bottom: 5rem;
width: 100%;
height: 100%;
overflow: hidden;
}
.christmas_background{
z-index: -101;
width: 300%;
height: 300%;
background: linear-gradient(-45deg, #2F0000, #C20A12);
animation: gradientBG 19s ease infinite;
}
.sled {
width: 15rem;
height: 15rem;
transition: transform 2s ease-in 5s, rotate 1s ease-in-out 2s;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-image: url("static/images/themes/kerstmis/sled.svg");
}
.sled_wrapper{
top: 0.5rem;
left: -7.5rem;
position: absolute;
transform: translate(-50vw, 40vh) rotate(0deg);
width: 15rem;
height: 15rem;
animation: sled 29s ease-in-out infinite;
}
.train_button:checked ~ .sled_wrapper:hover{
animation-play-state: paused;
}
.train_button:checked ~ .sled_wrapper:hover .sled{
transform: translateY(100vh) rotate(90deg);
}
.snowman_wrapper{
height: 17rem;
width: 10rem;
position: absolute;
bottom: 15rem;
left: -12rem;
animation: snowman 37s ease infinite;
transform-origin: right bottom;
}
.snowman_head{
position: absolute;
top: 0;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_head.svg");
animation: snowman_head 2s ease infinite;
}
.snowman_body{
position: absolute;
top: 9.5rem;
left: 0.5rem;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_body.svg")
}
.train_button:checked ~ .merry_christmas{
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-position: center;;
background-image: url("static/images/themes/kerstmis/merry_christmas.svg");
background-size: 25vw;
background-repeat: no-repeat;
animation: merry_christmas 5s ease infinite;
}
.train_button {
position: absolute;
transform: scaleX(20) scaleY(8) translateX(-100rem);
bottom: 5.5rem;
left: 7rem;
animation: follow_train 47s linear infinite;
opacity: 0;
}
.train_wrapper{
position: absolute;
bottom: 0.5rem;
transform: translateX(-80vw);
animation: train 47s linear infinite;
}
.wheel_big, .wheel_small {
position: absolute;
bottom: -0.4rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/wheel.svg");
//transform: translate(0vw, 60vh);
}
.train {
position: absolute;
bottom: 0.5rem;
left: 30rem;
width: 30rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/train.svg");
animation: whobble 1s linear alternate-reverse infinite;
}
.wheel_big {
width: 3.2rem;
height: 3.2rem;
}
.wheel_small {
width: 2.5rem;
height: 2.5rem;
}
.train .wheel1 {
animation: turn 2s linear infinite;
left: 3.5rem;
}
.train .wheel2{
animation: turn 2s linear infinite, -0.1s;
left: 7rem;
}
.train .wheel3{
animation: turn 2s linear infinite -0.3s;
left: 10.5rem;
}
.train .wheel4{
animation: turn 1.5s linear infinite -0.5s;
left: 13.9rem;
}
.train .wheel5{
animation: turn 1.5s linear infinite -0.7s;
left: 16.6rem;
}
.zeus_wagon, .mc_wagon {
position: absolute;
bottom: 1.25rem;
width: 30rem;
height: 7.5rem;
background-repeat: no-repeat;
background-size: contain;
animation: whobble 1s linear alternate-reverse infinite;
}
.mc_wagon {
background-image: url("static/images/themes/kerstmis/mc_wagon.svg");
left: 0rem;
}
.zeus_wagon {
background-image: url("static/images/themes/kerstmis/zeus_wagon.svg");
left: 15rem;
}
.zeus_wagon .wheel1, .mc_wagon .wheel1 {
animation: turn 2s linear infinite;
bottom: -1.1rem;
left: 2.2rem;
}
.zeus_wagon .wheel2, .mc_wagon .wheel2{
animation: turn 2s linear infinite, -0.1s;
bottom: -1.1rem;
left: 5.75rem;
}
.zeus_wagon .wheel3, .mc_wagon .wheel3{
animation: turn 2s linear infinite -0.3s;
bottom: -1.1rem;
left: 9.3rem;
}
$s1:"";
$s2:"";
$s3:"";
@for $i from 1 through 100 {
$s1: $s1 + random(1000)*0.1vw + " " + random(1000)*0.1vh + " " + 0 + " " + random(50)*-0.01rem + #fff;
$s2: $s2 + random(1000)*0.1vw + " " + random(1000)*0.1vh + " " + 0 + " " + random(50)*-0.01rem + #fff;
$s3: $s3 + random(1000)*0.1vw + " " + random(1000)*0.1vh + " " + 0 + " " + random(50)*-0.01rem + #fff;
@if $i < 100 {
$s1: $s1 + ",";
$s2: $s2 + ",";
$s3: $s3 + ",";
}
}
.snow {
border-radius: 50%;
opacity: 0.8;
position: absolute;
top:-100vh;
animation-name: fall;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
.layer1 {
width: 1rem;
height: 1rem;
filter:blur(1.5px);
box-shadow: #{$s1};
animation-duration: 18s;
}
.layer1.a {
animation-delay: -9s;
}
.layer2 {
width: 0.8rem;
height: 0.8rem;
filter:blur(3px);
box-shadow: #{$s2};
animation-duration: 24s;
}
.layer2.a {
animation-delay: -12s;
}
.layer3 {
width: 0.6rem;
height: 0.6rem;
filter:blur(6px);
box-shadow: #{$s3};
animation-duration: 30s;
}
.layer3.a {
animation-delay: -15s;
}
@keyframes fall {
100% {transform: translateY(200vh); }
}
@keyframes gradientBG {
0% {
transform: translate(-10%,-10%);
}
50% {
transform: translate(-60%,-60%);
}
100% {
transform: translate(-10%,-10%);
}
}
@keyframes sled {
0% {
transform: translate(-50rem, 40vh) rotate(0deg);
}
4% {
transform: translate(-50rem, 40vh) rotate(0deg);
}
20% {
transform: translate(50vw,10vh) rotate(20deg);
}
36% {
transform: translate(150vw,40vh) rotate(40deg);
}
100% {
transform: translate(150vw,40vh) rotate(40deg);
}
}
@keyframes train {
0%{
transform: translateX(-80rem);
}
55%{
transform: translateX(-80rem);
}
85% {
transform: translateX(100vw);
}
100%{
transform: translateX(100vw);
}
}
@keyframes follow_train {
0%{
transform: translateX(-80rem) scaleX(20) scaleY(8);
}
55%{
transform: translateX(-80rem) scaleX(20) scaleY(8);
}
85%{
transform: translateX(100vw) scaleX(20) scaleY(8);
}
100% {
transform: translateX(100vw) scaleX(20) scaleY(8);
}
}
@keyframes turn {
100% {
transform: rotate(360deg);
}
}
@keyframes whobble {
100% {
transform: translateY(0.5vh);
}
}
@keyframes snowman {
0%{
transform: rotate(-0);
}
20%{
transform: rotate(-0);
}
30%{
transform: rotate(80deg);
}
54%{
transform: rotate(80deg);
}
68%{
transform: rotate(-0);
}
100%{
transform: rotate(-0);
}
}
@keyframes snowman_head {
0%{
transform: rotate(-3deg);
}
50% {
transform: rotate(3deg);
}
100% {
transform: rotate(-3deg);
}
}
@keyframes merry_christmas {
0%{
opacity: 0.8;
}
50% {
opacity: 0.6;
}
100% {
opacity: 0.8;
}
}

View file

@ -0,0 +1,12 @@
/*lightmode*/
:root {
/*Darkmode colors*/
--dGray0:#444444;
--dGray1:#666666;
--dGray2:#212121;
--dGray3:#ffffff;
--dGray4:#f9f9f9;
--dGray5:#ffffff;
--dGray6:#ffffff;
--dBlue:#0A84FF;
}

View file

@ -0,0 +1,16 @@
/*sinterklaas*/
:root {
/*Darkmode colors*/
--dGray0:#F2EB80;
--dGray1:#F2EF05;
--dGray2:#F2EF05;
--dGray3:#177EBF;
--dGray4:#0C6AA6;
--dGray5:#F20505;
--dGray6:#F50B00;
--dBlue:#35F546;
}
.background{
background-image: url("static/images/themes/sinterklaas/Sinterklaas.jpg");
}

View file

@ -0,0 +1,12 @@
/*Darkmode*/
:root {
/*Darkmode colors*/
--dGray0:#D0D0D8;
--dGray1:#8E8E93;
--dGray2:#636366;
--dGray3:#48484A;
--dGray4:#3A3A3C;
--dGray5:#2C2C2E;
--dGray6:#1C1C1E;
--dBlue:#0A84FF;
}

View file

@ -0,0 +1,4 @@
.background {
background-image: url("https://kelder.zeus.ugent.be/webcam/video/mjpg.cgi?profileid=2");
background-size: contain;
}

View file

@ -0,0 +1,16 @@
/*halloween*/
:root {
/*Darkmode colors*/
--dGray0:#FFEB65;
--dGray1:#F28705;
--dGray2:#F25C05;
--dGray3:#F27405;
--dGray4:#8C3D0F;
--dGray5:#260101;
--dGray6:#260101;
--dBlue:#D91604;
}
.table-hover tbody tr:hover{
background-image: url("static/images/themes/halloween/Halloween.jpeg");
}

View file

@ -0,0 +1,442 @@
@charset "UTF-8";
/*
¡¡¡ OPGELET !!!
Deze css bevat lelijke code.
Dit komt doordat bootstrap lelijk en oud is.
Ik zal later proberen de css te verbeteren en bootstrap weg te gooien.
Enige discretie is aangeraden.
---=§[ Arnhoudt ]§=---
*/
/*low performance kerstmis*/
:root {
/*Darkmode colors*/
--dGray0:#F28705;
--dGray1:white;
--dGray2:#590212;
--dGray3:#590212;
--dGray4:#274001;
--dGray5:#274001;
--dGray6:#F2778D;
--dBlue:#F2778D; }
body {
height: 100%;
font-family: Radikal,Optima,Segoe,Segoe UI,Candara,Calibri,Arial,sans-serif;
background-color: #2F0000; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_regular.ttf");
font-weight: normal; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_light.ttf");
font-weight: 200; }
@font-face {
font-family: Radikal;
src: url("static/fonts/radikal_bold.ttf");
font-weight: bold; }
.btn {
border-radius: 5rem;
color: white;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
background-image: linear-gradient(-40deg, #F53030, #F58B9E); }
.btn:hover {
background-image: linear-gradient(-40deg, #A81111, #FF4B33); }
.navbar {
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
padding: 1.5rem;
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
text-transform: capitalize; }
.nav > li > a {
padding-left: 1vw;
padding-right: 1vw; }
.main {
height: 90vh;
overflow: scroll;
padding-left: 0;
padding-right: 0;
width: 100%;
display: flex;
align-items: center;
flex-direction: column; }
.navbar .container {
width: 100%;
padding: 0 4vw; }
@media (min-width: 768px) {
.container {
width: 100%; } }
@media (min-width: 992px) {
.main .container, .main .orders {
width: 970px; } }
@media (min-width: 1200px) {
.main .container, .main .orders {
width: 1170px; } }
.main {
padding-top: 2.5rem; }
.order_data {
display: flex;
flex-direction: row;
width: 100%;
justify-content: space-between;
padding: 0 3rem;
align-items: baseline; }
.order_data h5 {
max-width: 60%;
padding-bottom: 3rem; }
.expand_button {
padding: 1rem 0rem;
margin-top: -1rem;
width: 70%;
margin-bottom: 1.5rem; }
.hi_im_haldis h2 {
display: none; }
.hi_im_haldis h3 {
width: 100%;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
text-align: center; }
.hi_im_haldis {
background: linear-gradient(70deg, rgba(203, 52, 68, 0.8), rgba(135, 32, 44, 0.8));
border-radius: 0;
width: 100%; }
.hi_im_haldis_wrapper {
width: 100%; }
.darker:nth-child(even) {
background-color: #B62937;
border-radius: 2rem; }
.darker:nth-child(odd) {
background-color: #821C25;
border-radius: 2rem; }
.darker {
padding: 1rem; }
.order_row:nth-child(even) .order_data {
background-color: #B62937;
border-radius: 2rem; }
.order_row {
background: transparent; }
.order_row:nth-child(odd) .order_data {
background-color: #821C25;
border-radius: 2rem; }
.order_row h5 {
font-weight: bold; }
.order_row {
margin-bottom: 3rem; }
h3 {
padding-bottom: 1rem; }
.home_sir {
font-weight: bold;
color: #F45D68; }
.expand_button_wrapper {
margin-top: -1rem;
width: 100%;
display: flex;
justify-content: center; }
.time_data {
text-align: right;
display: flex;
flex-direction: column;
justify-self: right; }
.navbar .navbar-nav .active a {
color: #ff9bae;
border-bottom: 1px solid #ff9bae;
padding-bottom: 1rem; }
.navbar-nav {
padding-left: 2rem; }
.jumbotron, .darker {
display: flex;
flex-direction: column;
border-radius: 4rem; }
.row > div > h5 {
font-weight: bold;
padding-top: 1.5rem;
font-size: 2.5rem; }
.row > div > .amount_of_orders {
font-weight: lighter;
font-size: 1.6rem; }
.row > div .time {
font-weight: lighter; }
.jumbotron {
background-color: transparent; }
.navbar-default .navbar-nav .active a, .navbar-default .navbar-nav .active a:hover {
background-color: transparent; }
.background {
-webkit-filter: blur(0px) brightness(80%);
-moz-filter: blur(0px) brightness(80%);
-o-filter: blur(0px) brightness(80%);
-ms-filter: blur(0px) brightness(80%);
filter: blur(0px) brightness(80%);
position: fixed;
top: 0;
left: 0; }
footer a {
color: #69E8FF; }
footer {
position: fixed;
bottom: 0;
width: 100%;
background: #CB3444;
height: 5rem;
display: flex;
align-items: center; }
footer > hr {
display: none; }
#mapid {
width: 100%; }
.order_overview, .order_order, .order_items, .order_ordered, .order_depts {
padding: 1rem 5rem 3rem 5rem; }
.order_overview {
width: 100%; }
.order_depts {
width: 100%;
margin-bottom: 10rem; }
.location_data, .location_products {
width: 100%; }
.location_products {
margin-bottom: 10rem; }
.locations_locations {
padding: 1rem 5rem 3rem 5rem; }
.background_wrapper {
position: absolute;
left: 0;
bottom: 5rem;
width: 100%;
height: 100%;
overflow: hidden; }
.christmas_background {
z-index: -101;
width: 300%;
height: 300%;
background: linear-gradient(-45deg, #2F0000, #C20A12); }
.sled {
width: 15rem;
height: 15rem;
transition: transform 2s ease-in 5s, rotate 1s ease-in-out 2s;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-image: url("static/images/themes/kerstmis/sled.svg"); }
.sled_wrapper {
top: 0.5rem;
left: -7.5rem;
position: absolute;
transform: translate(-50vw, 40vh) rotate(0deg);
width: 15rem;
height: 15rem;
animation: sled 29s ease-in-out infinite; }
.snowman_wrapper {
height: 17rem;
width: 10rem;
position: absolute;
bottom: 15rem;
left: -12rem;
animation: snowman 37s ease infinite;
transform-origin: right bottom; }
.snowman_head {
position: absolute;
top: 0;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_head.svg");
animation: snowman_head 2s ease infinite; }
.snowman_body {
position: absolute;
top: 9.5rem;
left: 0.5rem;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_body.svg"); }
.train_button {
visibility: hidden; }
.train_wrapper {
position: absolute;
bottom: 0.5rem;
transform: translateX(-80vw);
animation: train 47s linear infinite; }
.wheel_big, .wheel_small {
position: absolute;
bottom: -0.4rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/wheel.svg"); }
.train {
position: absolute;
bottom: 0.5rem;
left: 30rem;
width: 30rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/train.svg");
animation: whobble 1s linear alternate-reverse infinite; }
.wheel_big {
width: 3.2rem;
height: 3.2rem; }
.wheel_small {
width: 2.5rem;
height: 2.5rem; }
.train .wheel1 {
animation: turn 2s linear infinite;
left: 3.5rem; }
.train .wheel2 {
animation: turn 2s linear infinite, -0.1s;
left: 7rem; }
.train .wheel3 {
animation: turn 2s linear infinite -0.3s;
left: 10.5rem; }
.train .wheel4 {
animation: turn 1.5s linear infinite -0.5s;
left: 13.9rem; }
.train .wheel5 {
animation: turn 1.5s linear infinite -0.7s;
left: 16.6rem; }
.zeus_wagon, .mc_wagon {
position: absolute;
bottom: 1.25rem;
width: 30rem;
height: 7.5rem;
background-repeat: no-repeat;
background-size: contain;
animation: whobble 1s linear alternate-reverse infinite; }
.mc_wagon {
background-image: url("static/images/themes/kerstmis/mc_wagon.svg");
left: 0rem; }
.zeus_wagon {
background-image: url("static/images/themes/kerstmis/zeus_wagon.svg");
left: 15rem; }
.zeus_wagon .wheel1, .mc_wagon .wheel1 {
animation: turn 2s linear infinite;
bottom: -1.1rem;
left: 2.2rem; }
.zeus_wagon .wheel2, .mc_wagon .wheel2 {
animation: turn 2s linear infinite, -0.1s;
bottom: -1.1rem;
left: 5.75rem; }
.zeus_wagon .wheel3, .mc_wagon .wheel3 {
animation: turn 2s linear infinite -0.3s;
bottom: -1.1rem;
left: 9.3rem; }
@keyframes sled {
0% {
transform: translate(-50rem, 40vh) rotate(0deg); }
4% {
transform: translate(-50rem, 40vh) rotate(0deg); }
20% {
transform: translate(50vw, 10vh) rotate(20deg); }
36% {
transform: translate(150vw, 40vh) rotate(40deg); }
100% {
transform: translate(150vw, 40vh) rotate(40deg); } }
@keyframes train {
0% {
transform: translateX(-80rem); }
55% {
transform: translateX(-80rem); }
85% {
transform: translateX(100vw); }
100% {
transform: translateX(100vw); } }
@keyframes turn {
100% {
transform: rotate(360deg); } }
@keyframes whobble {
100% {
transform: translateY(0.5vh); } }
@keyframes snowman {
0% {
transform: rotate(0); }
20% {
transform: rotate(0); }
30% {
transform: rotate(80deg); }
54% {
transform: rotate(80deg); }
68% {
transform: rotate(0); }
100% {
transform: rotate(0); } }
@keyframes snowman_head {
0% {
transform: rotate(-3deg); }
50% {
transform: rotate(3deg); }
100% {
transform: rotate(-3deg); } }
/*# sourceMappingURL=kerstmis.css.map */

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,539 @@
/*
¡¡¡ OPGELET !!!
Deze css bevat lelijke code.
Dit komt doordat bootstrap lelijk en oud is.
Ik zal later proberen de css te verbeteren en bootstrap weg te gooien.
Enige discretie is aangeraden.
---=§[ Arnhoudt ]§=---
*/
/*low performance kerstmis*/
:root {
/*Darkmode colors*/
--dGray0:#F28705;
--dGray1:white;
--dGray2:#590212;
--dGray3:#590212;
--dGray4:#274001;
--dGray5:#274001;
--dGray6:#F2778D;
--dBlue:#F2778D;
}
body{
height: 100%;
font-family: Radikal,Optima,Segoe,Segoe UI,Candara,Calibri,Arial,sans-serif;
background-color: #2F0000;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_regular.ttf');
font-weight: normal;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_light.ttf');
font-weight: 200;
}
@font-face {
font-family: Radikal;
src: url('static/fonts/radikal_bold.ttf');
font-weight: bold;
}
.btn{
border-radius: 5rem;
color: white;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
background-image: linear-gradient(-40deg,#F53030, #F58B9E);
}
.btn:hover{
background-image: linear-gradient(-40deg, #A81111, #FF4B33);
}
.navbar {
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
padding: 1.5rem;
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
text-transform: capitalize;
}
.nav>li>a {
padding-left: 1vw;
padding-right: 1vw;
}
.main{
height: 90vh;
overflow: scroll;
padding-left: 0;
padding-right: 0;
width: 100%;
display: flex;
align-items: center;
flex-direction: column;
}
.navbar .container{
width: 100%;
padding: 0 4vw;
}
@media (min-width: 768px){
.container {
width: 100%;
}
}
@media (min-width: 992px){
.main .container, .main .orders {
width: 970px;
}
}
@media (min-width: 1200px){
.main .container, .main .orders {
width: 1170px;
}
}
.main{
padding-top: 2.5rem;
}
.order_data {
display: flex;
flex-direction: row;
width: 100%;
justify-content: space-between;
padding: 0 3rem;
align-items: baseline;
}
.order_data h5{
max-width: 60%;
padding-bottom: 3rem;
}
.expand_button{
padding: 1rem 0rem;
margin-top: -1rem;
width: 70%;
margin-bottom: 1.5rem;
}
.hi_im_haldis h2{
display: none;
}
.hi_im_haldis h3 {
width: 100%;
font-family: Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif;
text-align: center;
}
.hi_im_haldis {
background: linear-gradient(70deg,rgba(203, 52, 68,0.8), rgba(135, 32, 44,0.8));
border-radius: 0;
width: 100%;
}
.hi_im_haldis_wrapper {
width: 100%;
}
.darker:nth-child(even){
background-color: #B62937;
border-radius: 2rem;
}
.darker:nth-child(odd){
background-color: #821C25;
border-radius: 2rem;
}
.darker{
padding: 1rem;
}
.order_row:nth-child(even) .order_data {
background-color: #B62937;
border-radius: 2rem;
}
.order_row {
background: transparent;
}
.order_row:nth-child(odd) .order_data {
background-color: #821C25;
border-radius: 2rem;
}
.order_row h5{
font-weight: bold;
}
.order_row{
margin-bottom: 3rem;
}
h3{
padding-bottom: 1rem;
}
.home_sir {
font-weight: bold;
color: #F45D68;
}
.expand_button_wrapper{
margin-top: -1rem;
width: 100%;
display: flex;
justify-content: center;
}
.time_data {
text-align: right;
display: flex;
flex-direction: column;
justify-self: right;
}
.navbar .navbar-nav .active a{
color: rgb(255, 155, 174);
border-bottom: 1px solid rgb(255, 155, 174);
padding-bottom: 1rem;
}
.navbar-nav{
padding-left: 2rem;
}
.jumbotron, .darker {
display: flex;
flex-direction: column;
border-radius: 4rem;
}
.row>div>h5 {
font-weight: bold;
padding-top: 1.5rem;
font-size: 2.5rem;
}
.row>div>.amount_of_orders{
font-weight: lighter;
font-size: 1.6rem;
}
.row>div .time{
font-weight: lighter;
}
.jumbotron {
background-color: transparent;
}
.navbar-default .navbar-nav .active a, .navbar-default .navbar-nav .active a:hover{
background-color: transparent;
}
.background {
-webkit-filter: blur(0px) brightness(80%);
-moz-filter: blur(0px) brightness(80%);
-o-filter: blur(0px) brightness(80%);
-ms-filter: blur(0px) brightness(80%);
filter: blur(0px) brightness(80%);
position: fixed;
top: 0;
left: 0;
}
footer a{
color: #69E8FF;
}
footer{
position: fixed;
bottom: 0;
width: 100%;
background:#CB3444;
height: 5rem;
display: flex;
align-items: center;
}
footer>hr{
display: none;
}
#mapid {
width: 100%;
}
.order_overview, .order_order, .order_items, .order_ordered, .order_depts {
padding: 1rem 5rem 3rem 5rem;
}
.order_overview{
width: 100%;
}
.order_depts {
width: 100%;
margin-bottom: 10rem;
}
.location_data, .location_products {
width: 100%;
}
.location_products {
margin-bottom: 10rem;
}
.locations_locations {
padding: 1rem 5rem 3rem 5rem;
}
.background_wrapper {
position: absolute;
left: 0;
bottom: 5rem;
width: 100%;
height: 100%;
overflow: hidden;
}
.christmas_background{
z-index: -101;
width: 300%;
height: 300%;
background: linear-gradient(-45deg, #2F0000, #C20A12);
}
.sled {
width: 15rem;
height: 15rem;
transition: transform 2s ease-in 5s, rotate 1s ease-in-out 2s;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
background-image: url("static/images/themes/kerstmis/sled.svg");
}
.sled_wrapper{
top: 0.5rem;
left: -7.5rem;
position: absolute;
transform: translate(-50vw, 40vh) rotate(0deg);
width: 15rem;
height: 15rem;
animation: sled 29s ease-in-out infinite;
}
.snowman_wrapper{
height: 17rem;
width: 10rem;
position: absolute;
bottom: 15rem;
left: -12rem;
animation: snowman 37s ease infinite;
transform-origin: right bottom;
}
.snowman_head{
position: absolute;
top: 0;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_head.svg");
animation: snowman_head 2s ease infinite;
}
.snowman_body{
position: absolute;
top: 9.5rem;
left: 0.5rem;
width: 10rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/snowman_body.svg")
}
.train_button {
visibility: hidden;
}
.train_wrapper{
position: absolute;
bottom: 0.5rem;
transform: translateX(-80vw);
animation: train 47s linear infinite;
}
.wheel_big, .wheel_small {
position: absolute;
bottom: -0.4rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/wheel.svg");
//transform: translate(0vw, 60vh);
}
.train {
position: absolute;
bottom: 0.5rem;
left: 30rem;
width: 30rem;
height: 10rem;
background-repeat: no-repeat;
background-size: contain;
background-image: url("static/images/themes/kerstmis/train.svg");
animation: whobble 1s linear alternate-reverse infinite;
}
.wheel_big {
width: 3.2rem;
height: 3.2rem;
}
.wheel_small {
width: 2.5rem;
height: 2.5rem;
}
.train .wheel1 {
animation: turn 2s linear infinite;
left: 3.5rem;
}
.train .wheel2{
animation: turn 2s linear infinite, -0.1s;
left: 7rem;
}
.train .wheel3{
animation: turn 2s linear infinite -0.3s;
left: 10.5rem;
}
.train .wheel4{
animation: turn 1.5s linear infinite -0.5s;
left: 13.9rem;
}
.train .wheel5{
animation: turn 1.5s linear infinite -0.7s;
left: 16.6rem;
}
.zeus_wagon, .mc_wagon {
position: absolute;
bottom: 1.25rem;
width: 30rem;
height: 7.5rem;
background-repeat: no-repeat;
background-size: contain;
animation: whobble 1s linear alternate-reverse infinite;
}
.mc_wagon {
background-image: url("static/images/themes/kerstmis/mc_wagon.svg");
left: 0rem;
}
.zeus_wagon {
background-image: url("static/images/themes/kerstmis/zeus_wagon.svg");
left: 15rem;
}
.zeus_wagon .wheel1, .mc_wagon .wheel1 {
animation: turn 2s linear infinite;
bottom: -1.1rem;
left: 2.2rem;
}
.zeus_wagon .wheel2, .mc_wagon .wheel2{
animation: turn 2s linear infinite, -0.1s;
bottom: -1.1rem;
left: 5.75rem;
}
.zeus_wagon .wheel3, .mc_wagon .wheel3{
animation: turn 2s linear infinite -0.3s;
bottom: -1.1rem;
left: 9.3rem;
}
@keyframes sled {
0% {
transform: translate(-50rem, 40vh) rotate(0deg);
}
4% {
transform: translate(-50rem, 40vh) rotate(0deg);
}
20% {
transform: translate(50vw,10vh) rotate(20deg);
}
36% {
transform: translate(150vw,40vh) rotate(40deg);
}
100% {
transform: translate(150vw,40vh) rotate(40deg);
}
}
@keyframes train {
0%{
transform: translateX(-80rem);
}
55%{
transform: translateX(-80rem);
}
85% {
transform: translateX(100vw);
}
100%{
transform: translateX(100vw);
}
}
@keyframes turn {
100% {
transform: rotate(360deg);
}
}
@keyframes whobble {
100% {
transform: translateY(0.5vh);
}
}
@keyframes snowman {
0%{
transform: rotate(-0);
}
20%{
transform: rotate(-0);
}
30%{
transform: rotate(80deg);
}
54%{
transform: rotate(80deg);
}
68%{
transform: rotate(-0);
}
100%{
transform: rotate(-0);
}
}
@keyframes snowman_head {
0%{
transform: rotate(-3deg);
}
50% {
transform: rotate(3deg);
}
100% {
transform: rotate(-3deg);
}
}

View file

@ -0,0 +1,12 @@
/*lightmode*/
:root {
/*Darkmode colors*/
--dGray0:#444444;
--dGray1:#666666;
--dGray2:#212121;
--dGray3:#ffffff;
--dGray4:#f9f9f9;
--dGray5:#ffffff;
--dGray6:#ffffff;
--dBlue:#0A84FF;
}

View file

@ -0,0 +1,16 @@
/*sinterklaas*/
:root {
/*Darkmode colors*/
--dGray0:#F2EB80;
--dGray1:#F2EF05;
--dGray2:#F2EF05;
--dGray3:#177EBF;
--dGray4:#0C6AA6;
--dGray5:#F20505;
--dGray6:#F50B00;
--dBlue:#35F546;
}
.background{
background-image: url("static/images/themes/sinterklaas/Sinterklaas.jpg");
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

Before

Width:  |  Height:  |  Size: 993 KiB

After

Width:  |  Height:  |  Size: 993 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 578.64 581.47"><defs><style>.cls-1{fill:#fff;}</style></defs><title>snowman_body</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M276.6,533.73c-33.55-3.29-64.43-11.45-93.73-25.32Q103.48,470.8,59.6,394.66C40.92,362.13,30,327,26,289.79a173.71,173.71,0,0,1-1.35-22.93c.09-3.45,1.33-4.21,4.23-2.42,12.28,7.57,23.83,16,31.78,28.38,4.88,7.62,6.69,15.8,4.38,24.82-1.19,4.62-2.91,10.17,2.1,13.27s9.63-.51,13.57-3.57c14.39-11.16,25.46-25.39,35.8-40.14,17.38-24.82,32.18-51,40.24-80.51.83-3.05,1.39-6.17,2.09-9.25,1-4.46,1.83-4.71,5.45-1.69a63.52,63.52,0,0,1,19.48,70.62c-.85,2.41-3.51,5.48-1.73,7.23s4.82-1,7.27-1.75c14.64-4.78,29.5-8.34,45-8.05,12.83.24,24.13,3.31,30.05,16.42,1.25,2.76,3.5,5,7.1,4.48,3.34-.46,4.56-3,5.55-5.76a50.56,50.56,0,0,0,2.61-14.7c1.09-22.76-.7-45.28-6.36-67.4-1.05-4.1-.76-5.52,4.15-5.32,45.53,1.89,90.91.95,135.69-8.78,29.52-6.41,57.78-16.05,83-33.27,13.47-9.22,25.46-20,33.55-34.4,2.18-3.88,3.35-3.52,5.56-.13,16.7,25.67,29.17,53.28,35.8,83.13,20.63,92.88-.29,175.54-63.87,246.4C462.94,493.68,407,521.93,341.74,532c-4.43.69-8.91,1-13.37,1.73M352.9,313.11a26.85,26.85,0,0,0-1.72-2.12c-10.34-10.63-20.75-21.19-31-31.9-2.15-2.25-3.49-2.11-5.63,0-10.28,10.21-20.6,20.4-31.14,30.33-2.91,2.74-2.39,4.25.11,6.75,9.53,9.54,18.79,19.37,28.35,28.89,2.75,2.73,2.91,4.37,0,7.18C299.59,364,287.66,376.15,275.43,388c-2.85,2.75-2.78,4.42,0,7.19,12.13,12.13,23.95,24.58,36.1,36.69,3.22,3.22,3.89,5.2.13,8.7C301.54,450,292,460,282,469.53c-2.69,2.58-2.73,4.22-.08,6.87q15,15,29.63,30.42c2.54,2.67,4.16,2.8,6.83.1q14.92-15.1,30.32-29.75c2.77-2.62,2.84-4.13.2-6.77-10-10-19.72-20.32-29.76-30.3-2.83-2.81-2.77-4.51.07-7.23,12.74-12.22,25.21-24.74,38-36.91,3-2.82,2.68-4.36,0-7.07-11.88-11.91-23.44-24.15-35.38-36-3.38-3.36-3-5.34.26-8.4,9.7-9.14,19.12-18.57,28.63-27.9C351.61,315.68,352.8,314.91,352.9,313.11Zm180.21,268-.06.35.32-.15Z"/><path class="cls-1" d="M145.76,0c20.38.69,36.93,8.71,52.05,20.33a161.06,161.06,0,0,1,19.25,18.14c1.45,1.55,2.91,3.39-.39,4.43-15.79,5-24.4,17.3-31.5,31-9.72,18.79-15.12,39.07-20,59.52-4.37,18.47-8,37.1-11.1,55.82-3.37,20.1-10.42,38.87-20,56.76-14,26.15-30.57,50.39-51.66,71.38a44.18,44.18,0,0,1-8.52,6.9c-.82.5-1.7,1.32-2.74.78-1.36-.72-.79-2.07-.64-3.14.63-4.6,2-9.1,1.63-13.84-1-15-9.72-25.5-20.28-34.86-14.26-12.64-31-21.17-48.25-28.9-1.32-.59-3.35-.66-3.63-2.26-.35-2,1.87-2.51,3.14-3.39,22-15.19,33.71-36.1,35.71-62.8,1.25-16.6,1.16-33.25,2.57-49.85,2.89-34,16.5-63.12,38.45-88.76C91.52,23.7,104.63,12.08,121.37,5.13A73.07,73.07,0,0,1,145.76,0Z"/><path class="cls-1" d="M314,170c-14.85-.77-31.18-.69-47.41-2.68-2.09-.26-3.89-.68-5-2.69-13.61-24.63-28.2-48.79-37-75.75-2.48-7.61-4.29-15.4-4-23.53a27.43,27.43,0,0,1,2.58-11.11c3.21-6.63,7.18-8.09,13.75-4.8,16.51,8.26,33.81,14.2,52.11,16.7,52.73,7.23,99.75-5.86,140.4-40.49,11.29-9.62,11-9.79,23.27-1.49a257.43,257.43,0,0,1,65.13,63.5c3.28,4.55,3.33,7.89,0,12.35-11.59,15.57-26.55,27-43.28,36.38-28.48,15.92-59.48,23.95-91.44,28.84C360.74,168.67,338.11,169.45,314,170Z"/><path class="cls-1" d="M217.37,50C209.48,74,219.05,94.31,228,114.58a381.92,381.92,0,0,0,23.17,44.23c12.55,20.72,18.19,43.48,21,67.16,1.63,13.89,2.6,27.84,1,41.83-.33,2.91.2,7.21-2.47,8.1s-3.08-3.58-4.58-5.58c-7.62-10.1-18.6-12.37-30.14-12.9-13.27-.61-26.15,2.12-38.91,5.49-5.73,1.52-5.77,1.48-4.56-4.19,3.76-17.65,1.1-34.11-9.28-49.06-5.4-7.79-10.52-15.82-18.12-21.81-2.15-1.68-3.76-3.69-3.17-6.82,5.89-30.92,11.47-61.92,23-91.4,4.74-12.15,10.5-23.81,20.43-32.79C208.57,53.85,212,51.05,217.37,50Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 474.09 518.52"><defs><style>.cls-1{fill:#fff;}</style></defs><title>snowman_head</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M169.27,0c9.59,19.05,19.57,37.86,31.47,55.63,22.86,34.1,51.08,63.1,83.3,88.36,2.95,2.31,5.55,2.84,9.12,1.5,8.59-3.22,17.34-6.09,26.74-4.83,8.65,1.15,12.68,6.89,11.14,15.58-1.77,9.9-6.57,18.48-12,26.71-16.11,24.37-36.42,45.05-57.92,64.56-25.23,22.88-52.15,43.61-81.5,61-17.37,10.28-35.06,20-55.15,24.07a37.56,37.56,0,0,1-6.94.71c-13.51.21-18.73-6.71-15-19.87,2.67-9.43,7.54-17.8,13.23-25.63,2.61-3.58,2.83-6.27.82-10.29C89.75,223.7,52,179.14,4,143.08c-5.15-3.88-5.18-3.94-1-9A530.69,530.69,0,0,1,157.81,5.58C161,3.81,164.12,1.86,167.27,0Z"/><path class="cls-1" d="M141.2,352c0-4.66-.08-9.33,0-14,.06-2.41.73-4.45,3.41-5.51,35.76-14.09,66.81-35.85,96.54-59.67,27.25-21.82,52.51-45.7,73.9-73.43,2.55-3.3,4.94-6.72,7.19-10.21,1.64-2.55,3.5-3.41,6.64-3,75.22,10.14,133.9,68.65,143.73,143.45,12,91.32-52.1,175.3-143,187.38S154.47,465,142.22,374.46A107.1,107.1,0,0,1,141.2,352Zm278,13.86a13.37,13.37,0,0,0-2-1.15c-31.27-9.34-62.57-18.61-93.82-28-4.36-1.32-6.9.42-9.23,3.75-7.76,11.09-8.11,32.92-.77,44.39,2.38,3.73,5,4.87,9.55,3.77,23.29-5.7,46.66-11.06,70-16.54ZM315.63,462.46a7.05,7.05,0,0,0,1.61-.74,119.77,119.77,0,0,0,15.49-14.11c1.74-1.91.28-2.94-1.13-4-4.87-3.5-9.73-7-13.89-11.38-1.89-2-3.33-1.5-5,.22-4,4.08-8.61,7.33-13.11,10.76-2.52,1.92-4.42,1.7-6.32-.79-2.53-3.3-5.29-6.43-7.75-9.78-1.44-2-2.79-2.46-5-1.24-3.94,2.16-8,4.17-12,6.1-2.31,1.1-3,2.42-1.38,4.63,2.76,3.75,5.57,7.47,8.19,11.32,1.82,2.67,3.77,2.7,6.31,1.12,3.82-2.38,7.81-4.47,11.57-6.93,2.27-1.49,3.7-1.12,5.56.76,4.11,4.12,8.49,8,12.79,11.9A6.34,6.34,0,0,0,315.63,462.46ZM295.18,293.59c.06-10.32-7.65-18.23-17.81-18.26A17.7,17.7,0,0,0,259.45,293c-.09,10.39,7.44,18.36,17.59,18.6A17.79,17.79,0,0,0,295.18,293.59Zm56.54-18.27a18.15,18.15,0,1,0,18.18,18.09A18.42,18.42,0,0,0,351.72,275.32Zm49.53,156.41c1.79.46,3.22-.81,3.88-3,.91-2.92,3.89-6.13,1.94-8.75-2.09-2.82-6.48-1.85-9.85-2.45-2.63-.47-2.9,2.25-3.63,4-3.48,8.24-3.46,8.25-11.82,5.59a9.71,9.71,0,0,1-1.4-.5c-3.46-1.72-5.61-.85-7.53,2.69-5.51,10.13-5.62,9.92,5.51,13.33,3.6,1.1,5.77.44,7-3.1,2.45-7.26,6.22-12,14.77-8A5.27,5.27,0,0,0,401.25,431.73Zm-51.88-1.22a2.65,2.65,0,0,0-2.5,1.34c-3.25,4-6.47,8-9.76,12-1.51,1.83-.24,2.69,1.11,3.48,4.31,2.51,8.65,5,13,7.46,1.83,1.05,3.46,1.06,4.81-.8,2.92-4.05,5.88-8.08,8.76-12.15.75-1.07,1.78-2.59.16-3.47C359.82,435.62,354.57,433.11,349.37,430.51Zm-94.14-4.6c-4,1.71-10.14,1.12-11.9,4.94s2.65,7.69,4.7,11.39c.85,1.54,2.35,1.52,3.93,1.23,11.19-2,12.24-4,7.06-13.65-.47-.88-.89-1.78-1.4-2.63S256.36,425.43,255.23,425.91Zm-24.66,5.78c2.57-1.74,7.72.83,9.24-3.68,1-3-4.61-11.18-6.36-10.4-3.31,1.46-8.91-1.57-9.9,3.87C222.74,426,227.1,431.72,230.57,431.69Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 465 221"><defs><style>.cls-1{fill:#fff;}</style></defs><title>train</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M18,25h89a0,0,0,0,1,0,0V43a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0v0A18,18,0,0,1,18,25Z"/><rect class="cls-1" x="107" y="35" width="13" height="4"/><rect class="cls-1" x="117" y="35" width="4" height="17"/><rect class="cls-1" x="114" y="51" width="10" height="29"/><polygon class="cls-1" points="57 51 57 65.04 71.23 51 57 51"/><polygon class="cls-1" points="87 90 87 66.14 64.76 90 87 90"/><polygon class="cls-1" points="87 51 76.99 51 57 71.94 57 84.99 87 54.93 87 51"/><path class="cls-1" d="M11,43V98H25V47H47V98h55V43ZM91,94H53V48H91Z"/><rect class="cls-1" x="147" y="11" width="3" height="12"/><rect class="cls-1" x="145" y="22" width="5" height="58"/><rect class="cls-1" x="265" width="38" height="80"/><rect class="cls-1" x="262" width="44" height="5"/><rect class="cls-1" x="262" y="16" width="44" height="4"/><rect class="cls-1" x="303" y="50" width="3" height="10"/><rect class="cls-1" x="306" y="53" width="38" height="4"/><rect class="cls-1" x="340" y="56" width="3" height="24"/><rect class="cls-1" x="362" y="80" width="8" height="66"/><polygon class="cls-1" points="405 113.35 375 80.7 375 146 405 113.35"/><rect class="cls-1" x="47" y="145" width="97" height="7"/><path class="cls-1" d="M102,80V98h43v9H47v13h98v6H47v9h98v5h10V113H144v-5h91v2a9,9,0,0,1,9-9v45h-9v7H356V80Zm99,14V88H165V98H151V94h10V84h44v7h53v7h-3V94Zm58,52H249V101h10Zm15,0H264V101h10Zm15,0H279V101h10Zm15,0H294V101h10Zm15,0H309V101h10Zm15,0h-9V101a9,9,0,0,1,9,9Z"/><rect class="cls-1" x="177" y="112" width="12" height="27"/><rect class="cls-1" x="160" y="112" width="12" height="27"/><rect class="cls-1" x="194" y="112" width="12" height="27"/><rect class="cls-1" x="228" y="112" width="7" height="27"/><rect class="cls-1" x="211" y="112" width="12" height="27"/><rect class="cls-1" x="144" y="139" width="1" height="6"/><path class="cls-1" d="M11,105H25a0,0,0,0,1,0,0v63.8a4.2,4.2,0,0,1-4.2,4.2H15.2a4.2,4.2,0,0,1-4.2-4.2V105a0,0,0,0,1,0,0Z"/><rect class="cls-1" x="25" y="145" width="72" height="12"/><rect class="cls-1" x="59" y="157" width="4" height="64"/><rect class="cls-1" x="33" y="157" width="4" height="64"/><rect class="cls-1" x="37" y="157" width="22" height="54"/><rect class="cls-1" x="306" y="153" width="50" height="4"/><rect class="cls-1" x="344" y="153" width="61" height="20"/><path class="cls-1" d="M387,173h43a3,3,0,0,1,3,3v0a3,3,0,0,1-3,3H387a0,0,0,0,1,0,0v-6a0,0,0,0,1,0,0Z"/><path class="cls-1" d="M386,214h76a3,3,0,0,1,3,3v0a3,3,0,0,1-3,3H386a0,0,0,0,1,0,0v-6A0,0,0,0,1,386,214Z"/><rect class="cls-1" x="387" y="179" width="6" height="35"/><polygon class="cls-1" points="406 214 402 214 398 179 402 179 406 214"/><polyline class="cls-1" points="410.45 179 419.45 214 415.45 214 406.45 179"/><polygon class="cls-1" points="434.45 214 430.45 214 416.45 179 420.45 179 434.45 214"/><polyline class="cls-1" points="429.1 179 453.1 214 449.1 214 425.1 179"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54.13 54.13"><defs><style>.cls-1,.cls-2{fill:none;stroke:#fff;stroke-miterlimit:10;}.cls-1{stroke-width:3.95px;}.cls-2{stroke-width:2.32px;}</style></defs><title>wheel</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><circle class="cls-1" cx="27.06" cy="27.06" r="25.09"/><circle class="cls-2" cx="27.26" cy="27.45" r="6.95"/><line class="cls-2" x1="27.26" y1="1.98" x2="27.26" y2="20.5"/><line class="cls-2" x1="9.24" y1="9.44" x2="22.34" y2="22.54"/><line class="cls-2" x1="1.78" y1="27.45" x2="20.31" y2="27.45"/><line class="cls-2" x1="9.24" y1="45.46" x2="22.34" y2="32.36"/><line class="cls-2" x1="27.26" y1="52.92" x2="27.26" y2="34.4"/><line class="cls-2" x1="45.27" y1="45.46" x2="32.17" y2="32.36"/><line class="cls-2" x1="52.73" y1="27.45" x2="34.2" y2="27.45"/><line class="cls-2" x1="45.27" y1="9.44" x2="32.17" y2="22.54"/></g></g></svg>

After

Width:  |  Height:  |  Size: 936 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 157.5"><defs><style>.cls-1{fill:#fff;}</style></defs><title>zeus_wagon</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" y="60.5" width="15" height="97" rx="6.3"/><rect class="cls-1" y="127" width="36" height="16.5"/><path class="cls-1" d="M279,123.45h16.25a0,0,0,0,1,0,0v20.34a5.71,5.71,0,0,1-5.71,5.71h-4.84a5.71,5.71,0,0,1-5.71-5.71V123.45A0,0,0,0,1,279,123.45Z"/><path class="cls-1" d="M140.85,43.93q-1.65-1.77-5.13-1.77a8.26,8.26,0,0,0-5.32,1.67c-1.39,1.12-2.17,2.92-2.33,5.38h14.52A7.9,7.9,0,0,0,140.85,43.93Z"/><path class="cls-1" d="M185.75,81.66a9,9,0,0,0-2.51.37,10.21,10.21,0,0,0-2.47,1.07V96.64a6.87,6.87,0,0,0,1.84.43c.66.06,1.3.1,1.94.1a6.27,6.27,0,0,0,5.1-2q1.68-2,1.68-6T190,83.43A5,5,0,0,0,185.75,81.66Z"/><path class="cls-1" d="M279.12,0H20.88A20.88,20.88,0,0,0,0,20.88V128H300V20.88A20.88,20.88,0,0,0,279.12,0ZM153.82,36.25H165V53.56c0,1.77.06,3.23.17,4.4a7.72,7.72,0,0,0,.79,2.91,3.57,3.57,0,0,0,1.79,1.68,8.53,8.53,0,0,0,3.34.53,11.1,11.1,0,0,0,3.17-.53A13.43,13.43,0,0,0,177.66,61V36.25h11.22V71.16H177.66V67.3A32.33,32.33,0,0,1,172,70.89a14.17,14.17,0,0,1-6.15,1.23q-5.78,0-8.89-3.32T153.82,59Zm-25,47.34H77.07V72.06L107.73,34H78.56V22.05h48.56V33.79l-6.18,7.64a16.46,16.46,0,0,1,1.15-1.22q5.3-5,14.53-5.05,8.52,0,12.8,4.31t4.29,12.38v3.92H128.1a8.08,8.08,0,0,0,3.12,6.28q2.88,2.17,8.47,2.18A19,19,0,0,0,146.56,63a21.78,21.78,0,0,0,5.26-2.73h1.24v9a41.55,41.55,0,0,1-7.15,2.21,37.74,37.74,0,0,1-7.43.68q-10.5,0-16.1-4.72t-5.59-13.46q0-7.38,3.87-12.13L96.47,71.69h32.3ZM199.22,95a13.27,13.27,0,0,1-2.68,4.51,11.71,11.71,0,0,1-3.9,2.84,11.53,11.53,0,0,1-4.68,1,13.42,13.42,0,0,1-3.91-.5,17.71,17.71,0,0,1-3.28-1.38V112.7H172.1V76.63l-7.36,26.16h-8.33l-5-18.17-4.93,18.17h-8.41l-7.53-26.95h8.24L143,94.42l5.22-18.58h7l5,18.58,4.13-18.58h16.5v2.81a21.15,21.15,0,0,1,4.06-2.57,11,11,0,0,1,4.79-1,9.24,9.24,0,0,1,7.82,3.69q2.81,3.7,2.8,10.16A17.26,17.26,0,0,1,199.22,95Zm10.12,7.78h-8.66v-27h8.66Zm8.09-34q-4.86,3.31-13.28,3.31a37.9,37.9,0,0,1-8.45-.87,31.65,31.65,0,0,1-6.09-1.93v-9.2h1q.84.6,2,1.29a19.07,19.07,0,0,0,3.12,1.51,25.25,25.25,0,0,0,4,1.23,20.89,20.89,0,0,0,4.72.51,12.2,12.2,0,0,0,4.88-.73,2.33,2.33,0,0,0,1.59-2.16,2,2,0,0,0-.93-1.85,12.38,12.38,0,0,0-3.55-1.1c-.83-.19-2-.39-3.37-.61a37,37,0,0,1-3.87-.79,13.78,13.78,0,0,1-7.06-3.87,9.59,9.59,0,0,1-2.3-6.55q0-5,4.77-8.37t13-3.34a34.58,34.58,0,0,1,7.51.79,30.76,30.76,0,0,1,5.61,1.69V46.6h-1a22.68,22.68,0,0,0-5.67-2.78,20,20,0,0,0-6.46-1.07,12.35,12.35,0,0,0-4.55.74c-1.23.5-1.85,1.2-1.85,2.12A2.24,2.24,0,0,0,202,47.5a11.44,11.44,0,0,0,4,1.31c1.14.23,2.37.45,3.68.67s2.64.49,4,.82a12.45,12.45,0,0,1,6.52,3.62,9.17,9.17,0,0,1,2.12,6.17A10.12,10.12,0,0,1,217.43,68.81Z"/><path class="cls-1" d="M120.94,41.43c-.1.11-.19.23-.28.35Z"/><polygon class="cls-1" points="172.1 75.85 172.1 76.63 172.32 75.85 172.1 75.85"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View file

@ -0,0 +1,11 @@
function changeTheme() {
// Get the selected theme for the dropdown
var themes_select = document.getElementById("themes_select");
var selected_theme = themes_select.options[themes_select.selectedIndex].text;
// Update the theme cookie
document.cookie = "theme=" + escape(selected_theme) + "; Path=/;"
// Finally reload the page to let the new theme take effect
location.reload();
}

View file

@ -1,116 +0,0 @@
{
const init = () => {
const $darkmode = document.querySelector(".enter_darkmode");
if($darkmode) $darkmode.addEventListener("click", ()=>toggleBetween("lightmode", "darkmode"));
const $customThemes = document.querySelector(".custom__themes");
if($customThemes) $customThemes.addEventListener("click", ()=>toggleBetween("darkmode", "sinterklaas")); //TODO: Create automatic custom team selector
reloadTheme();
}
const toggleBetween = (first, second) => {
if(localStorage.getItem("theme") == second){
localStorage.setItem("theme", first)
}else{
localStorage.setItem("theme", second)
}
reloadTheme();
}
const reloadTheme = () => {
if (typeof(Storage) !== "undefined") {
if(localStorage.getItem("theme") !== null){
setTheme();
}else if((window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches)){
document.querySelector('body').classList.remove('lightmode');
document.querySelector('body').classList.add('darkmode');
}
} else {
console.log('You browser does not support local storage, no darkmode for you!' )
}
}
const setTheme = () =>{
document.querySelector('body').classList.add('darkmode');
switch(localStorage.getItem("theme")){
case "halloween":
setThemeHalloween();
break;
case "sinterklaas":
setThemeSinterklaas();
break;
case "darkmode":
setThemeDarkMode();
break;
case "lightmode":
default:
setThemeLightMode();
break;
}
}
//TODO: Use an external file to load themes
//TODO: Darkness and blur variables
const setThemeLightMode = () => {
let root = document.documentElement;
root.style.setProperty('--dGray6', "#ffffff"); //Dark color
root.style.setProperty('--dGray5', "#ffffff");
root.style.setProperty('--dGray4', "#f9f9f9");
root.style.setProperty('--dGray3', "#ffffff");
root.style.setProperty('--dGray2', "#212121");
root.style.setProperty('--dGray1', "#666666");
root.style.setProperty('--dGray0', "#444444"); //Light color
root.style.setProperty('--dBlue', "#0A84FF");
root.style.setProperty('--FontFamily', '"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif');
root.style.setProperty('--FontSize', '13px');
document.querySelector('.background').style.backgroundImage = 'none';
}
const setThemeDarkMode = () => {
let root = document.documentElement;
root.style.setProperty('--dGray6', "#1C1C1E"); //Dark color
root.style.setProperty('--dGray5', "#2C2C2E");
root.style.setProperty('--dGray4', "#3A3A3C");
root.style.setProperty('--dGray3', "#48484A");
root.style.setProperty('--dGray2', "#636366");
root.style.setProperty('--dGray1', "#8E8E93");
root.style.setProperty('--dGray0', "#E0E0E8"); //Light color
root.style.setProperty('--dBlue', "#0A84FF");
root.style.setProperty('--FontFamily', '"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif');
root.style.setProperty('--FontSize', '13px');
document.querySelector('.background').style.backgroundImage = 'none';
}
const setThemeHalloween = () => {
let root = document.documentElement;
root.style.setProperty('--dGray6', "#260101"); //Dark color
root.style.setProperty('--dGray5', "#260101");
root.style.setProperty('--dGray4', "#8C3D0F");
root.style.setProperty('--dGray3', "#F27405");
root.style.setProperty('--dGray2', "#F25C05");
root.style.setProperty('--dGray1', "#F28705");
root.style.setProperty('--dGray0', "#FFEB65"); //Light color
root.style.setProperty('--dBlue', "#D91604");
root.style.setProperty('--FontFamily', '"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif');
root.style.setProperty('--FontSize', '13px');
document.querySelector('.background').backgroundImage = "url('/static/images/Halloween.jpeg')";
}
const setThemeSinterklaas = () => {
let root = document.documentElement;
root.style.setProperty('--dGray6', "#F50B00"); //Dark color
root.style.setProperty('--dGray5', "#F20505");
root.style.setProperty('--dGray4', "#0C6AA6");
root.style.setProperty('--dGray3', "#177EBF");
root.style.setProperty('--dGray2', "#F2EF05");
root.style.setProperty('--dGray1', "#F2EF05");
root.style.setProperty('--dGray0', "#F2EB80"); //Light color
root.style.setProperty('--dBlue', "#35F546");
root.style.setProperty('--FontFamily', "cursive");
root.style.setProperty('--FontSize', "20px");
document.body.style.background = "#000000";
document.querySelector('.background').style.backgroundImage = "url('/static/images/Sinterklaas.jpg')";
}
init();
}

35
app/static/js/theme.js Normal file
View file

@ -0,0 +1,35 @@
{
const init = () =>{
document.cookie.split('; ').forEach(itCookie = cookie =>{ //I know that this is a shitty way of fixing things... But I'll try to fix it in the future.
if(cookie.split("=")[0] == "theme" && cookie.split("=")[1] == "darkmode"){
document.querySelector(".toggleDarkmode").innerHTML = "<a>Enter lightmode</a>"
document.querySelector(".toggleDarkmode").id = "lightmode";
}
if(cookie.split("=")[0] == "theme" && cookie.split("=")[1] == "customTheme"){
document.querySelector(".background").innerHTML = '<div class="background_wrapper"><div class="christmas_background"></div><div class="snow layer1 a"></div><div class="snow layer1"></div> <div class="snow layer2 a"></div><div class="snow layer2"></div><div class="snow layer3 a"></div><div class="snow layer3"></div><div class="snowman_wrapper"><div class="snowman_head"></div><div class="snowman_body"></div></div><div class="train_wrapper"><div class="whole_train"><div class="mc_wagon"><div class="wheel_big wheel1"></div><div class="wheel_big wheel2"></div><div class="wheel_big wheel3"></div></div><div class="zeus_wagon"><div class="wheel_big wheel1"></div><div class="wheel_big wheel2"></div><div class="wheel_big wheel3"></div></div><div class="train"><div class="wheel_big wheel1"></div><div class="wheel_big wheel2"></div><div class="wheel_big wheel3"></div><div class="wheel_small wheel4"></div><div class="wheel_small wheel5"></div></div></div></div><input type="checkbox" class="train_button"><div class="merry_christmas"></div><div class="sled_wrapper"><div class="sled"></div></div></div>';
}
if(cookie.split("=")[0] == "performance" && cookie.split("=")[1] == "highPerformance" && document.querySelector(".changePerformance")){
document.querySelector(".changePerformance").innerHTML = "enable low performance";
document.querySelector(".changePerformance").id = "lowPerformance";
}
});
document.querySelectorAll('.changeThemeButton').forEach(changeThemeButton= e => {e.addEventListener(`click`, handleClickChangeTheme)});
document.querySelectorAll('.changePerformance').forEach(changeThemeButton= e => {e.addEventListener(`click`, handleClickChangePerformance)});
}
const handleClickChangePerformance = e => {
document.cookie = "performance = "+e.currentTarget.id+";path=/";
location.reload();
}
const handleClickChangeTheme = e =>{
document.cookie = "theme = "+e.currentTarget.id+";path=/";
location.reload();
}
init();
}

View file

@ -4,13 +4,13 @@
$.ready(function(){
$('.time').each(function() {
var timeEl = $( this );
var time = timeEl.text().split(' ').slice(-1)[0].split(':');
var time = timeEl.text().split(' ')[0].split(':');
if (timeEl.text().indexOf('closed') < 0) {
window.setInterval(function () {
time = my_tick(time);
if (time !== "closed") {
timeS = "closes in " + ("0" + time[0]).slice(-2) + ":" + ("0" + time[1]).slice(-2) + ":" + ("0" + time[2]).slice(-2);
timeS = ("0" + time[0]).slice(-2) + ":" + ("0" + time[1]).slice(-2) + ":" + ("0" + time[2]).slice(-2) + " left";
} else {
timeS = "closed"
}

View file

@ -3,5 +3,5 @@
{% block container %}
<h1>About</h1>
<p>This is Haldis' about page. Doesn't he look good? Oh stop, you're making him blush.</p>
<p>Haldis is your friendly neighbourhood servant. He exists so lazy fucks like you and me don't need to keep tabs of who is ordering what from where.</p>
{% endblock %}

View file

@ -4,13 +4,13 @@
{% import "utils.html" as util -%}
{% block container %}
<div class="row">
<div class="jumbotron">
<div class="row hi_im_haldis_wrapper">
<div class="jumbotron hi_im_haldis">
<h2>Hi, I'm Haldis</h2>
<h3>What would you like to eat, sir?</h3>
<h3>What would you like to <span class="home_sir">eat</span>?</h3>
</div>
</div>
<div class="row">
<div class="row container">
<div class="col-sm-5">
{% if orders|count > 0 -%}
<h3>Open orders:</h3>

View file

@ -24,17 +24,20 @@ Haldis - {{ active_page|capitalize }}
{% block styles %}
{{ super() }}
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" media="screen">
<link rel="stylesheet" href="/css" media="screen">
<link rel="stylesheet" href="{{ url_for('static', filename='css/print.css') }}" media="print">
{% endblock %}
{% block scripts %}
{{ super() }}
<script type="text/javascript" src="{{ url_for('static', filename='js/darkmode.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/theme.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/timer.js') }}"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/customThemes.js') }}"></script>
{% endblock %}
{% block navbar %}
<div class="background"></div>
<div class="foreground"></div>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
@ -70,7 +73,7 @@ Haldis - {{ active_page|capitalize }}
{% block content -%}
{{ utils.flashed_messages(container=True) }}
<div class="container">
<div class="container main">
{% block container -%}
{%- endblock %}
</div>
@ -80,7 +83,7 @@ Haldis - {{ active_page|capitalize }}
<div class="container">
<div class="footerWrapper">
<div class="pull-left">Made with ❤ by <a href="http://zeus.ugent.be">Zeus WPI</a></div>
<div class="enter_darkmode"><a>Toggle darkmode</a></div>
<div class="changeThemeButton toggleDarkmode" id="darkmode"><a>Enter darkmode</a></div>
<div class="pull-right"><a href="http://github.com/ZeusWPI/Haldis">© {{ ""|year }}</a></div>
</div>
</div>

View file

@ -4,7 +4,7 @@
{% import "utils.html" as util %}
{% block container %}
<div class="row" xmlns="http://www.w3.org/1999/html">
<div class="row location_data" xmlns="http://www.w3.org/1999/html">
<div class="col-md-push-1 col-md-5 darker">
<h3>{{ location.name }}</h3>
<span class="glyphicon glyphicon-home"></span> {{ location.address }} <br/>
@ -20,7 +20,7 @@
{% endif %}
</div>
</div>
<div class="row">
<div class="row location_products">
<div class="col-md-push-1 col-md-10 darker">
<h3 id="order-title">Products</h3>
<table class="table table-hover table-condensed">

View file

@ -5,7 +5,7 @@
{% block container %}
<div class="row">
<div class="col-md-push-1 col-md-10 darker">
<div class="col-md-push-1 col-md-10 darker locations_locations">
<h3>Locations</h3>
<table class="table table-hover table-condensed">
<thead>

View file

@ -7,7 +7,7 @@
{% block container %}
<div class="row">
<div class="col-md-push-1 col-md-10 darker" id="info"><!-- Shitty html-->
<div class="col-md-push-1 col-md-10 darker order_overview" id="info"><!-- Shitty html -->
<h3 id="order-title">Order {{ order.id }}
<div class="pull-right">
{% if order.can_close(current_user.id) -%}
@ -36,7 +36,7 @@
total price: {{ total_price|euro }} {% if courier_or_admin %}- remaining debts: {{ debts|euro }}{% endif %}
</div>
{% if form -%}
<div class="col-md-push-1 col-md-10 darker" id="form">
<div class="col-md-push-1 col-md-10 darker order_order" id="form">
<h4>Order:</h4>
<form method="post" action="{{ url_for('order_bp.order_item_create', order_id=order.id) }}">
<span class="pull-right">
@ -68,7 +68,7 @@
{%- endif %}
</div>
<div class="row" id="items">
<div class="col-md-push-1 col-md-5 darker" id="items-list">
<div class="col-md-push-1 col-md-5 darker order_items" id="items-list">
<h3>Items</h3>
<table class="table table-hover table-condensed">
<thead>
@ -97,7 +97,7 @@
</tbody>
</table>
</div>
<div class="col-md-push-2 col-md-4 darker box" id="items-ordered">
<div class="col-md-push-2 col-md-4 darker box order_ordered" id="items-ordered">
<h3>Ordered products: {{ order.items.count() }}</h3>
<a class="divLink" href="{{ url_for('order_bp.items_showcase', order_id=order.id) }}"></a>
{% for key, value in order.group_by_product().items() -%}
@ -115,7 +115,7 @@
</div>
</div>
<div class="row">
<div class="col-md-push-1 col-md-5 darker" id="debts">
<div class="col-md-push-1 col-md-5 darker order_depts" id="debts">
<h3>Debts</h3>
<table class="table table-hover table-condensed">
<thead>

View file

@ -8,6 +8,7 @@ Haldis - Order {{ order.id }}
{% block styles %}
{{ super() }}
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" media="screen">
<link rel="stylesheet" href="/css" media="screen">
<link rel="stylesheet" href="{{ url_for('static', filename='css/print.css') }}" media="print">
{% endblock %}

View file

@ -5,7 +5,7 @@
{% import "utils.html" as util -%}
{% block container %}
<div class="row">
<div class="row orders">
<div class="col-md-5">
{% if orders|count > 0 -%}
<h3>Open orders:</h3>

View file

@ -4,5 +4,15 @@
{% block container %}
<h1>{{ current_user.username }}</h1>
<h3>Themes</h3>
<p><a class="custom__themes">enable custom themes</a></p>
<p><a class="changeThemeButton" id="customTheme">enable custom themes</a></p>
<p><a class="changePerformance" id="highPerformance">enable high performance</a></p>
<p>
<!-- Style attribute due to missing css -->
<select name="themes" id="themes_select" onchange="changeTheme()" style="width: 300px;">
<option disabled selected value> -- select a theme -- </option>
{% for theme in themes_list %}
<option value="{{ theme.optid }}">{{ theme }}</option>
{% endfor %}
</select>
</p>
{% endblock %}

View file

@ -1,15 +1,15 @@
{% macro render_order(order) -%}
<div class="row darker">
<div class="col-md-8 col-lg-9">
<div class="row darke order_row">
<div class="col-md-8 col-lg-9 order_data">
<h5>{{ order.location.name }}</h5>
<p>
<b class="amount_of_orders">{{ order.items.count() }} orders</b></p>
<p class="time_data">
{% if order.stoptime %}
<b>Closing time: </b>{{ order.stoptime.strftime("%H:%M") }} (<span class="time">{{ order.stoptime|countdown }}</span>)
<span><b>Closes </b>{{ order.stoptime.strftime("%H:%M") }}</span><span class="time">{{ order.stoptime|countdown }}</span>
{% else %}open{% endif %}<br/>
<b>Orders:</b> {{ order.items.count() }}</p>
</div>
<div class="col-md-4 col-lg-3">
<a class="btn btn-primary btn-block align-bottom" href="{{ url_for('order_bp.order_from_id', order_id=order.id) }}">Expand</a>
<div class="col-md-4 col-lg-3 expand_button_wrapper">
<a class="btn btn-primary btn-block align-bottom expand_button" href="{{ url_for('order_bp.order_from_id', order_id=order.id) }}">Expand</a>
</div>
</div>
{%- endmacro %}

View file

@ -2,9 +2,13 @@
import os
from datetime import datetime, timedelta
import yaml
from flask import Flask, render_template, make_response
from flask import request, jsonify
from flask import Blueprint, abort
from flask import current_app as app
from flask import render_template, send_from_directory, url_for
from flask import send_from_directory, url_for
from flask_login import login_required
from models import Location, Order
@ -26,6 +30,82 @@ def home() -> str:
)
def get_css_dict(css_path):
"Generate the dictionary with all the currently available themes and their names"
themes_dict = dict()
# Open the YAML file with all the themes.
path = os.path.join(app.root_path, "views/themes.yml")
with open(path, 'r') as stream:
data = yaml.safe_load(stream)
# Build a dictionary from the YAML file with all the themes and their attributes.
themes = {}
for item in data:
key = list(item.keys())[0]
themes[key] = item[key]
# Get the current date.
current_date = datetime.now()
current_year = current_date.year
# Check each theme in the dictionary and return the first one that is "correct"
for key, theme in themes.items():
if theme['type'] == 'static-date':
start_day, start_month = theme['start'].split('/')
start_date = datetime(year=current_year, day=int(
start_day), month=int(start_month))
end_day, end_month = theme['end'].split('/')
if int(start_month) > int(end_month):
current_year += 1
end_date = datetime(
year=current_year, day=int(end_day), month=int(end_month))
if start_date <= current_date <= end_date:
path = os.path.join(app.root_path, css_path, theme['file'])
themes_dict[key] = path
themes_dict['darkmode'] = os.path.join(
app.root_path, "static/css/themes/lowPerformance/darkmode.css")
themes_dict['lightmode'] = os.path.join(
app.root_path, "static/css/themes/lowPerformance/lightmode.css")
return themes_dict
def css_list():
"Generate the list of names of all the currently available themes"
if request.cookies.get('performance', '') == 'highPerformance':
css_path = 'static/css/themes/highPerformance/'
else:
css_path = 'static/css/themes/lowPerformance/'
return list(get_css_dict(css_path).keys())
@general_bp.route("/css")
def css():
"Generate the css"
if request.cookies.get('performance', '') == 'highPerformance':
css_path = 'static/css/themes/highPerformance/'
else:
css_path = 'static/css/themes/lowPerformance/'
cookie_theme = request.cookies.get('theme', '')
themes_dict = get_css_dict(css_path)
# TODO: Fix to work with default cookie value [customTheme]
if cookie_theme == "customTheme":
path = f"{css_path}ligtmode.css"
else:
path = themes_dict[cookie_theme]
f = open(path)
response = make_response(f.read())
response.headers['Content-Type'] = 'text/css'
f.close()
return response
@general_bp.route("/map")
def map_view() -> str:
"Generate the map view"
@ -59,7 +139,7 @@ def about() -> str:
@login_required
def profile() -> str:
"Generate the profile view"
return render_template("profile.html")
return render_template("profile.html", themes_list=css_list())
@general_bp.route("/favicon.ico")
@ -68,13 +148,13 @@ def favicon() -> str:
# pylint: disable=R1705
if not get_orders((Order.stoptime > datetime.now())):
return send_from_directory(
os.path.join(str(app.root_path), "static"),
os.path.join(app.root_path, "static"),
"favicon.ico",
mimetype="image/x-icon",
)
else:
return send_from_directory(
os.path.join(str(app.root_path), "static"),
os.path.join(app.root_path, "static"),
"favicon_orange.ico",
mimetype="image/x-icon",
)

22
app/views/themes.yml Normal file
View file

@ -0,0 +1,22 @@
# Seasonal themes for Haldis
- lightmode:
file: lightmode.css
type: default
- darkmode:
file: darkmode.css
type: default
- halloween:
file: halloween.css
type: static-date
start: 21/10
end: 10/11
- sinterklaas:
file: sinterklaas.css
type: static-date
start: 28/11
end: 5/12
- kerstmis:
file: kerstmis.css
type: static-date
start: 6/12
end: 06/01

View file

@ -31,7 +31,7 @@ def authorized() -> typing.Any:
request.args["error_description"],
)
if isinstance(resp, OAuthException):
return "Access denied: %s" % resp.message + "<br>" + str(resp.data)
return f"Access denied: {resp.message}<br>{resp.data}"
session["zeus_token"] = (resp["access_token"], "")
me = current_app.zeus.get("current_user/")

View file

@ -33,6 +33,7 @@ oauthlib==2.1.0 # via flask-oauthlib, requests-oauthlib
pymysql==0.9.3
python-dateutil==2.8.0 # via alembic
python-editor==1.0.4 # via alembic
PyYaml==5.1.2
requests-oauthlib==1.1.0 # via flask-oauthlib
requests==2.21.0 # via airbrake, requests-oauthlib
six==1.12.0 # via python-dateutil