diff --git a/data/www/browserconfig.xml b/data/www/browserconfig.xml
index f4cc73a..5a2a2ba 100755
--- a/data/www/browserconfig.xml
+++ b/data/www/browserconfig.xml
@@ -1,2 +1,12 @@
-$spicyPurple
\ No newline at end of file
+
+
+
+
+
+
+
+ #333333
+
+
+
\ No newline at end of file
diff --git a/data/www/css/compiled/main.css b/data/www/css/compiled/main.css
index dcb09ed..d0384fc 100644
--- a/data/www/css/compiled/main.css
+++ b/data/www/css/compiled/main.css
@@ -1 +1 @@
-*{font-family:Roboto,Arial,"sans-serif"}html{height:100vh;margin:0;padding:0;display:flex;background-color:#0f0035;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}body{margin:0;padding:0;flex:1;background-color:#0f0035;color:#fff;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center}.tar{text-align:right}a{text-decoration:none}.col{display:flex;flex:1;flex-direction:column;align-self:stretch}header{text-align:center;display:flex;justify-content:flex-start;align-items:center;align-self:stretch;padding:0 25px}header .logo{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}header .logo a{color:inherit;display:flex;justify-content:center;align-items:center}header .logo img{width:32px;height:32px;margin-right:10px}header nav{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;flex:1}header nav ul{list-style:none;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}header nav ul li{margin:0 15px}header nav ul li.user-menu{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;border:1px solid rgb(14,239,95);padding:5px 15px;border-radius:4px;background:#0eef5f33}header nav ul li.user-menu .logout{color:#fff}header nav ul li.user-menu .username{margin-right:20px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;font-weight:700;color:#0eef5f}header nav ul li.user-menu .username i{margin-right:5px;font-size:12px}header nav ul li a{color:#fff9;text-decoration:none}header nav ul li a:hover,header nav ul li.active a{color:#fff}footer{align-self:stretch;justify-content:center;align-items:center;flex-direction:column;display:flex;padding:20px}footer .version{opacity:.3}.container{background:#0000001a;margin:auto;display:flex;align-self:stretch;flex-direction:column;justify-content:flex-start;align-items:center;flex:1;min-width:70%}@media only screen and (max-width: 1200px){.container{min-width:95%}}.container.expand{min-width:100%}@media only screen and (max-width: 1200px){.container.expand{min-width:100%}}select.select-item-picker,.btn,button{background-color:#fff;border-radius:5px;border:1px solid rgb(188,72,255);color:#251142;padding:10px 30px;text-decoration:none;margin:10px;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center;font-weight:400;font-size:14px;transition:.2s linear all}a.btn:hover,button:hover{color:#bc48ff}select.select-item-picker,button.purple{font-weight:700;border:1px solid rgb(105,47,189);color:#fff;background:#692fbd;background:linear-gradient(90deg,#bc48ff,#692fbd)}button.green{font-weight:700;color:#fff;border:1px solid rgb(14,239,95);background:linear-gradient(90deg,#3cf47e,#0bbf4c)}button.normal:hover{color:#fff;border-color:#692fbd;background:#692fbd;background:linear-gradient(90deg,#bc48ff,#692fbd)}button.green:hover,button.purple:hover{border:1px solid rgb(255,255,255)}.alert{margin:10px 30px 20px;padding:20px 50px;align-self:stretch;display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:4px}.alert-info{color:#464646;border:1px solid rgb(70,70,70);background:#46464633}.alert-success{color:#0eef5f;border:1px solid rgb(14,239,95);background:#0eef5f33}.alert-error{color:#ef0e5d;border:1px solid rgb(239,14,93);background:#ef0e5d33}.alert-icon{border-radius:4px;padding:3px 4px;min-width:18px;text-align:center}.modals{position:fixed;background:#0006;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center}.modals-outer{min-width:30%;display:flex;flex-direction:column;overflow:auto}.modals-outer .modal-close{color:#fff;font-size:30px;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin-bottom:20px;margin-top:0}.modals-inner{background:#fff;border-radius:10px;color:#333}.modals-inner .modal h2{border-bottom:1px solid rgb(153,153,153);padding:15px;margin:0}.modals-inner .modal h3{align-self:stretch;border-bottom:1px solid rgb(153,153,153);padding:15px;margin:0}.panel{background:#ffffff26;border-radius:5px;padding:0 25px 80px;margin:10px 25px;border-left:5px solid rgb(14,239,95);align-self:stretch}.panel.no-border{border:none}.panel h3{color:#fff}.panel-inactive{background:#fff;color:#999;border-color:#999}.panel-inactive h3{color:#1a1a1a}.panel table{width:100%;margin-top:30px;border-collapse:collapse;text-align:left;font-weight:400}.panel th{border-bottom:1px solid rgb(255,255,255);border-collapse:collapse;padding:10px;font-weight:400}.panel-inactive th{border-color:#999}.panel td{border-collapse:collapse;padding:10px}.panel td .td-secondary{font-size:14px;opacity:.6;margin-left:3px}.panel td a.item.sort{cursor:move}.panel td a.item-name{color:#fff}.panel-inactive td a.item-name{color:#999}.panel td a.item-name:hover{text-decoration:underline}.panel td.actions a{background:#fff;color:#333;border:1px solid rgb(153,153,153);border-radius:4px;padding:2px;width:35px;display:inline-block;text-align:center;margin:0 2px}.panel td.actions a:hover{color:#0eef5f;border-color:#0eef5f}.panel td.actions a.item-edit:hover{color:#bc48ff;border-color:#bc48ff}.panel td.actions a.item-delete:hover{color:#ef0e5d;border-color:#ef0e5d}.panel td.infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start}.panel td .inner{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.panel td div.badge{margin-right:5px;font-size:10px;font-weight:700}.panel a{color:#0eef5f;text-decoration:none}.panel a:hover{color:#0bbf4c}.panel.panel-menu{display:flex;flex:1;flex-direction:column;align-self:stretch;margin-right:0;border-color:#692fbd}.panel.panel-menu ul{flex:1;max-width:250px;display:flex;flex-direction:column;align-self:stretch;list-style:none;margin:0;padding:0}.panel.panel-menu ul li{margin:3px 0}.panel.panel-menu ul li a{padding:5px 15px;color:inherit;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex:1}.panel.panel-menu ul li:hover{color:#464646;font-weight:700}.panel.panel-menu ul li.active{color:#692fbd;background:#692fbd57;border-radius:4px;font-weight:700;border:1px solid rgb(105,47,189)}.panel.panel-menu ul li.active a{color:inherit}.pure-material-switch{z-index:0;position:relative;display:inline-block}.pure-material-switch>input{appearance:none;-moz-appearance:none;-webkit-appearance:none;z-index:-1;position:absolute;right:6px;top:-8px;display:block;margin:0;border-radius:50%;width:40px;height:40px;background-color:#00000061;outline:none;opacity:0;transform:scale(1);pointer-events:none;transition:opacity .3s .1s,transform .2s .1s}.pure-material-switch>span{display:inline-block;width:100%;cursor:pointer}.pure-material-switch>span:before{content:"";float:right;display:inline-block;margin:5px 0 5px 10px;border-radius:7px;width:36px;height:14px;background-color:#00000061;vertical-align:top;transition:background-color .2s,opacity .2s}.pure-material-switch>span:after{content:"";position:absolute;top:2px;right:16px;border-radius:50%;width:20px;height:20px;background-color:#fff;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-color .2s,transform .2s}.pure-material-switch>input:checked{right:-10px;background-color:#0eef5f}.pure-material-switch>input:checked+span:before{background-color:#0eef5f99}.pure-material-switch>input:checked+span:after{background-color:#0eef5f;transform:translate(16px)}.pure-material-switch:hover>input{opacity:.04}.pure-material-switch>input:focus{opacity:.12}.pure-material-switch:hover>input:focus{opacity:.16}.pure-material-switch>input:active{opacity:1;transform:scale(0);transition:transform 0s,opacity 0s}.pure-material-switch>input:active+span:before{background-color:#0eef5f99}.pure-material-switch>input:checked:active+span:before{background-color:#00000061}.pure-material-switch>input:disabled{opacity:0}.pure-material-switch>input:disabled+span{color:#000;opacity:.38;cursor:default}.pure-material-switch>input:disabled+span:before{background-color:#00000061}.pure-material-switch>input:checked:disabled+span:before{background-color:#0eef5f99}.login-page{max-width:600px;padding-top:50px}.card{background:#fff;border-radius:6px;padding:50px;color:#333}.card .form{padding:0}.card .form .form-group{margin:0 0 30px;padding:0}.card .form .form-group .widget{flex:1}.card .form .form-group label{text-align:left}.card button[type=submit]{margin:0 auto}.card h3{text-align:center;font-size:36px;margin:0 0 40px}span.empty{text-transform:uppercase;opacity:.5;color:#999}a.badge,.badge{display:flex;flex-direction:row;justify-content:center;align-items:center;padding:5px;border-radius:4px;font-size:12px;background:#ffffff1a;border:1px solid transparent;color:#fff}a.badge:hover{color:#fff;border:1px solid rgba(255,255,255,.4)}.panel-inactive .badge{background:#9999991a;color:#999}.panel-inactive a.badge:hover{color:#999;border:1px solid rgba(153,153,153,.2)}.badge.anonymous{opacity:.2}.explorer{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;align-self:stretch}.explorer .left{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;flex:1}.explorer .right{flex:3;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.explorer .panel-active{background:#fff;color:#999;border-color:#999}.explorer .panel-active h3{color:#0eef5f}.explorer .panel-inactive{background:#fff;color:#999;border-color:#999}.toolbar{display:flex;flex-direction:row;padding:0 25px;align-self:stretch}.toolbar h2{padding:0 25px 0 0}.toolbar .toolbar-actions{flex:1;display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.icon-right{margin:0 0 0 10px}.icon-left{margin:0 10px 0 0}.form{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:20px}.form .form-group{margin:10px 20px 5px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;flex:1}.form .form-group label{flex:1;padding:10px;text-align:right;margin-right:20px}.form .form-group .widget{flex:3;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch}.form .form-group input,.form .form-group select,.form .form-group textarea{flex:1;padding:10px 5px;border:1px solid #e6e6e6;border-radius:4px;width:auto}.form .form-group input[type=checkbox]{flex:0}.form .form-group .trigger{margin-right:10px}.form .form-group select.trigger{max-width:120px}.form .form-group span{margin-left:10px}.form .actions{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin-top:10px;align-self:stretch}.form .actions button.green,.form .actions button{font-size:18px}.form .actions button.green:hover{background:#fff;color:#0eef5f;border-color:#0eef5f}.form .actions button.btn-normal{color:#999;border-color:#999;font-size:18px;margin:0}.form .actions button.btn-normal:hover{color:#464646;border-color:#464646}.plugin-description{font-size:14px;margin-left:34px;color:#999}.panel-logs{padding-bottom:20px}.panel-logs pre{background:#000000e6;border:1px solid rgb(70,70,70);border-radius:4px;font-family:monospace;color:#f2f2f2;padding:20px;min-height:200px;max-height:500px;max-width:1100px;overflow:auto}
+@font-face{font-family:Sixtyfour;src:url(../../webfonts/Sixtyfour-Regular.ttf) format("truetype")}*{font-family:Work Sans,Roboto,Arial,"sans-serif";margin:0;padding:0;box-sizing:border-box}html{background-color:#111}body,html{height:100%;font-family:Arial,sans-serif}.container{display:flex;height:100vh}.chips-green{background-image:url(../../img/spot-green.png);background-repeat:no-repeat;width:100%;height:100%;position:absolute;z-index:-1;transform:translate(-20%) translateY(-20%)}.chips-red{background-image:url(../../img/spot-red.png);background-repeat:no-repeat;width:100%;height:100%;top:0;right:0;left:0;bottom:0;position:fixed;z-index:-1;transform:translate(-10%) translateY(40%)}.chips-blue{background-image:url(../../img/spot-blue.png);background-repeat:no-repeat;width:100%;height:100%;top:0;right:0;bottom:0;position:fixed;z-index:-1;transform:translate(80%) translateY(0)}main{flex:1;display:flex;flex-direction:column}main .context-bar{padding:10px;position:sticky;top:0;z-index:1000;max-height:80px;border-bottom:2px solid rgba(0,0,0,.2);display:flex;flex-direction:row;align-items:center}main .context-bar .context-menu{flex:1}main .context-bar .context-menu .inner{border-radius:4px;background:#777}main .context-bar .context-divider{width:1px;height:100%;background:#222;margin-left:20px;margin-right:20px}main .context-bar .context-user{display:flex;margin-right:20px}main .context-bar .context-user .trigger{color:#fff}main .context-bar .context-user .trigger .avatar{width:32px;height:32px;background:#ef0e5d;border-radius:4px;margin-right:10px;display:flex;flex-direction:row;justify-content:center;align-items:center;text-align:center;font-weight:700;font-size:14px;border:1px solid #444}main .context-bar .context-user .trigger i{margin-top:-5px;margin-left:10px}main .main-container{display:flex;flex:1;overflow:hidden}main .main-container .main-content{flex:2;overflow-y:auto;padding:20px;background-color:transparent}main .main-container .right-panel{flex:1;overflow-y:auto;padding:20px;background-color:transparent}menu{width:300px;background:#111;overflow-y:auto;overflow-x:visible;padding:20px;z-index:2000;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;border-right:2px solid rgba(0,0,0,.2)}menu h1.logo{margin:40px 0 0;align-self:stretch;display:flex}menu h1.logo a{text-align:center;text-shadow:0px 0 0 #fff,0px 2px 0 #444,0 0px 0 rgb(14,239,95),-0px 0 0 rgb(2,123,255),0 -0px 0 rgb(239,14,93);text-decoration:none;background:linear-gradient(90deg,#a0a0a0 0,#bebebe 46%,#dcdcdc);-webkit-background-clip:text;color:transparent;flex:1;font-family:Sixtyfour,Work Sans,Arial,"sans-serif";align-self:stretch;padding-right:3px;font-size:20px;text-transform:uppercase;transition:all .55s cubic-bezier(.19,1,.22,1);display:flex;flex-direction:row;justify-content:center;align-items:center;position:relative}menu h1.logo a img{flex-shrink:0;width:30px;margin-right:10px;position:absolute;left:5px;transition:all .55s cubic-bezier(.19,1,.22,1)}menu h1.logo a img.after{opacity:0}menu:hover h1.logo a{text-align:center;text-shadow:3px 0 0 #fff,3px 2px 0 #444,0 3px 0 rgb(14,239,95),-3px 0 0 rgb(2,123,255),0 -3px 0 rgb(239,14,93);text-decoration:none;background:linear-gradient(90deg,#a0a0a0 0,#bebebe 46%,#dcdcdc);-webkit-background-clip:text;color:transparent}menu:hover h1.logo a img.before{opacity:0}menu:hover h1.logo a img.after{animation-duration:.2s;animation-name:logotouch}menu nav{display:flex;align-self:stretch;flex:1}menu nav ul{margin:60px 0 20px;flex:1;align-self:flex-start;display:flex;flex-direction:column;list-style:none}menu nav ul li{align-self:stretch;overflow:hidden;position:relative;transition:all .55s cubic-bezier(.19,1,.22,1);margin:10px 0}menu nav ul li a{color:#ffffffe6;font-size:16px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;flex:1;padding-top:5px;padding-bottom:5px;padding-left:10px}menu nav ul li a i{color:#fff;opacity:.2;background:transparent;display:flex;justify-content:center;align-items:center;align-self:stretch;padding:10px;width:40px;border-radius:2px;text-align:center;margin-right:20px}menu nav ul li:after{background:#fff;content:"";height:195px;left:-200px;opacity:.2;position:absolute;top:-50px;transform:rotate(35deg);transition:all .55s cubic-bezier(.19,1,.22,1);width:50px;z-index:-2;cursor:pointer}menu nav ul li.active a{color:#027bff;font-weight:700}menu nav ul li.active a i{opacity:1;background:#ffffffe6;background:#017bff}menu nav ul li:hover{background:#027bff}menu nav ul li:hover:after{z-index:2;left:120%;transition:all .55s cubic-bezier(.19,1,.22,1)}menu nav ul li:hover a{color:#fff;font-weight:700}menu nav ul li:hover a i{color:#fff;opacity:1}menu footer{background:#ffffff03;padding:20px 0;display:flex;flex-direction:row;align-self:stretch;text-align:center;justify-content:center}menu footer p{color:#444}menu footer p.version a{color:#777;font-weight:700}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center}.tar{text-align:right}a{text-decoration:none}.col{display:flex;flex:1;flex-direction:column;align-self:stretch}.dropdown{position:relative;display:flex;align-self:stretch}.dropdown.dropdown-show ul.dropdown-menu{display:flex;flex-direction:column}.dropdown .trigger{cursor:pointer;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;flex:1}.dropdown ul.dropdown-menu{position:absolute;top:100%;left:0;display:none;background-color:#222;box-shadow:0 8px 16px #0003;z-index:1000;list-style-type:none;margin:0;overflow:hidden;border-radius:4px}.dropdown ul.dropdown-menu li{padding:8px 16px;cursor:pointer;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.dropdown ul.dropdown-menu li.danger:hover{background-color:#ef0e5d}.dropdown ul.dropdown-menu li:hover{background-color:#027bff}.dropdown ul.dropdown-menu li a{padding:8px 16px 8px 8px;color:#fff;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch}.dropdown ul.dropdown-menu li a i{margin-right:15px}@keyframes logotouch{0%{opacity:0}50%{opacity:1}to{opacity:0;left:27px}}
diff --git a/data/www/favicon.ico b/data/www/favicon.ico
old mode 100755
new mode 100644
index a62bf4f..303e026
Binary files a/data/www/favicon.ico and b/data/www/favicon.ico differ
diff --git a/data/www/favicon/android-icon-144x144.png b/data/www/favicon/android-icon-144x144.png
deleted file mode 100755
index 064017c..0000000
Binary files a/data/www/favicon/android-icon-144x144.png and /dev/null differ
diff --git a/data/www/favicon/android-icon-192x192.png b/data/www/favicon/android-icon-192x192.png
deleted file mode 100755
index 31056a9..0000000
Binary files a/data/www/favicon/android-icon-192x192.png and /dev/null differ
diff --git a/data/www/favicon/android-icon-36x36.png b/data/www/favicon/android-icon-36x36.png
deleted file mode 100755
index cd231f6..0000000
Binary files a/data/www/favicon/android-icon-36x36.png and /dev/null differ
diff --git a/data/www/favicon/android-icon-48x48.png b/data/www/favicon/android-icon-48x48.png
deleted file mode 100755
index e21be81..0000000
Binary files a/data/www/favicon/android-icon-48x48.png and /dev/null differ
diff --git a/data/www/favicon/android-icon-72x72.png b/data/www/favicon/android-icon-72x72.png
deleted file mode 100755
index 523ad00..0000000
Binary files a/data/www/favicon/android-icon-72x72.png and /dev/null differ
diff --git a/data/www/favicon/android-icon-96x96.png b/data/www/favicon/android-icon-96x96.png
deleted file mode 100755
index 234e8d0..0000000
Binary files a/data/www/favicon/android-icon-96x96.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-114x114.png b/data/www/favicon/apple-icon-114x114.png
deleted file mode 100755
index e6588d7..0000000
Binary files a/data/www/favicon/apple-icon-114x114.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-120x120.png b/data/www/favicon/apple-icon-120x120.png
deleted file mode 100755
index 6161e96..0000000
Binary files a/data/www/favicon/apple-icon-120x120.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-144x144.png b/data/www/favicon/apple-icon-144x144.png
deleted file mode 100755
index 064017c..0000000
Binary files a/data/www/favicon/apple-icon-144x144.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-152x152.png b/data/www/favicon/apple-icon-152x152.png
deleted file mode 100755
index 36ffbee..0000000
Binary files a/data/www/favicon/apple-icon-152x152.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-180x180.png b/data/www/favicon/apple-icon-180x180.png
deleted file mode 100755
index e5c39dd..0000000
Binary files a/data/www/favicon/apple-icon-180x180.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-57x57.png b/data/www/favicon/apple-icon-57x57.png
deleted file mode 100755
index 33d0ca7..0000000
Binary files a/data/www/favicon/apple-icon-57x57.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-60x60.png b/data/www/favicon/apple-icon-60x60.png
deleted file mode 100755
index f14448e..0000000
Binary files a/data/www/favicon/apple-icon-60x60.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-72x72.png b/data/www/favicon/apple-icon-72x72.png
deleted file mode 100755
index 523ad00..0000000
Binary files a/data/www/favicon/apple-icon-72x72.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-76x76.png b/data/www/favicon/apple-icon-76x76.png
deleted file mode 100755
index 1831d33..0000000
Binary files a/data/www/favicon/apple-icon-76x76.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon-precomposed.png b/data/www/favicon/apple-icon-precomposed.png
deleted file mode 100755
index 64dcd75..0000000
Binary files a/data/www/favicon/apple-icon-precomposed.png and /dev/null differ
diff --git a/data/www/favicon/apple-icon.png b/data/www/favicon/apple-icon.png
deleted file mode 100755
index 64dcd75..0000000
Binary files a/data/www/favicon/apple-icon.png and /dev/null differ
diff --git a/data/www/favicon/apple-touch-icon-114x114.png b/data/www/favicon/apple-touch-icon-114x114.png
new file mode 100644
index 0000000..cc9da95
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-114x114.png differ
diff --git a/data/www/favicon/apple-touch-icon-120x120.png b/data/www/favicon/apple-touch-icon-120x120.png
new file mode 100644
index 0000000..1279336
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-120x120.png differ
diff --git a/data/www/favicon/apple-touch-icon-144x144.png b/data/www/favicon/apple-touch-icon-144x144.png
new file mode 100644
index 0000000..efccd13
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-144x144.png differ
diff --git a/data/www/favicon/apple-touch-icon-152x152.png b/data/www/favicon/apple-touch-icon-152x152.png
new file mode 100644
index 0000000..9d5a77d
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-152x152.png differ
diff --git a/data/www/favicon/apple-touch-icon-57x57.png b/data/www/favicon/apple-touch-icon-57x57.png
new file mode 100644
index 0000000..19bf786
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-57x57.png differ
diff --git a/data/www/favicon/apple-touch-icon-60x60.png b/data/www/favicon/apple-touch-icon-60x60.png
new file mode 100644
index 0000000..caf8be7
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-60x60.png differ
diff --git a/data/www/favicon/apple-touch-icon-72x72.png b/data/www/favicon/apple-touch-icon-72x72.png
new file mode 100644
index 0000000..d7f236a
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-72x72.png differ
diff --git a/data/www/favicon/apple-touch-icon-76x76.png b/data/www/favicon/apple-touch-icon-76x76.png
new file mode 100644
index 0000000..5330e8e
Binary files /dev/null and b/data/www/favicon/apple-touch-icon-76x76.png differ
diff --git a/data/www/favicon/favicon-128.png b/data/www/favicon/favicon-128.png
new file mode 100644
index 0000000..8ecf686
Binary files /dev/null and b/data/www/favicon/favicon-128.png differ
diff --git a/data/www/favicon/favicon-16x16.png b/data/www/favicon/favicon-16x16.png
old mode 100755
new mode 100644
index d0ca706..9c9e35e
Binary files a/data/www/favicon/favicon-16x16.png and b/data/www/favicon/favicon-16x16.png differ
diff --git a/data/www/favicon/favicon-196x196.png b/data/www/favicon/favicon-196x196.png
new file mode 100644
index 0000000..0e8d797
Binary files /dev/null and b/data/www/favicon/favicon-196x196.png differ
diff --git a/data/www/favicon/favicon-32x32.png b/data/www/favicon/favicon-32x32.png
old mode 100755
new mode 100644
index 79d5f6c..823ee8a
Binary files a/data/www/favicon/favicon-32x32.png and b/data/www/favicon/favicon-32x32.png differ
diff --git a/data/www/favicon/favicon-96x96.png b/data/www/favicon/favicon-96x96.png
old mode 100755
new mode 100644
index cb6ffc1..935d8b1
Binary files a/data/www/favicon/favicon-96x96.png and b/data/www/favicon/favicon-96x96.png differ
diff --git a/data/www/favicon/favicon.ico b/data/www/favicon/favicon.ico
new file mode 100644
index 0000000..303e026
Binary files /dev/null and b/data/www/favicon/favicon.ico differ
diff --git a/data/www/favicon/ms-icon-144x144.png b/data/www/favicon/ms-icon-144x144.png
deleted file mode 100755
index 064017c..0000000
Binary files a/data/www/favicon/ms-icon-144x144.png and /dev/null differ
diff --git a/data/www/favicon/ms-icon-150x150.png b/data/www/favicon/ms-icon-150x150.png
deleted file mode 100755
index 7a0b4a4..0000000
Binary files a/data/www/favicon/ms-icon-150x150.png and /dev/null differ
diff --git a/data/www/favicon/ms-icon-310x310.png b/data/www/favicon/ms-icon-310x310.png
deleted file mode 100755
index 8ce084a..0000000
Binary files a/data/www/favicon/ms-icon-310x310.png and /dev/null differ
diff --git a/data/www/favicon/ms-icon-70x70.png b/data/www/favicon/ms-icon-70x70.png
deleted file mode 100755
index 4827ad2..0000000
Binary files a/data/www/favicon/ms-icon-70x70.png and /dev/null differ
diff --git a/data/www/favicon/mstile-144x144.png b/data/www/favicon/mstile-144x144.png
new file mode 100644
index 0000000..efccd13
Binary files /dev/null and b/data/www/favicon/mstile-144x144.png differ
diff --git a/data/www/favicon/mstile-150x150.png b/data/www/favicon/mstile-150x150.png
new file mode 100644
index 0000000..e8e3cf7
Binary files /dev/null and b/data/www/favicon/mstile-150x150.png differ
diff --git a/data/www/favicon/mstile-310x150.png b/data/www/favicon/mstile-310x150.png
new file mode 100644
index 0000000..c2234e5
Binary files /dev/null and b/data/www/favicon/mstile-310x150.png differ
diff --git a/data/www/favicon/mstile-310x310.png b/data/www/favicon/mstile-310x310.png
new file mode 100644
index 0000000..4f12053
Binary files /dev/null and b/data/www/favicon/mstile-310x310.png differ
diff --git a/data/www/favicon/mstile-70x70.png b/data/www/favicon/mstile-70x70.png
new file mode 100644
index 0000000..8ecf686
Binary files /dev/null and b/data/www/favicon/mstile-70x70.png differ
diff --git a/data/www/img/logo2.png b/data/www/img/logo2.png
new file mode 100644
index 0000000..11e9479
Binary files /dev/null and b/data/www/img/logo2.png differ
diff --git a/data/www/img/logo2white.png b/data/www/img/logo2white.png
new file mode 100644
index 0000000..346e042
Binary files /dev/null and b/data/www/img/logo2white.png differ
diff --git a/data/www/img/spot-blue.png b/data/www/img/spot-blue.png
new file mode 100644
index 0000000..8e06d77
Binary files /dev/null and b/data/www/img/spot-blue.png differ
diff --git a/data/www/img/spot-green.png b/data/www/img/spot-green.png
new file mode 100644
index 0000000..4c36215
Binary files /dev/null and b/data/www/img/spot-green.png differ
diff --git a/data/www/img/spot-purple-l.png b/data/www/img/spot-purple-l.png
new file mode 100644
index 0000000..d56705d
Binary files /dev/null and b/data/www/img/spot-purple-l.png differ
diff --git a/data/www/img/spot-purple-m.png b/data/www/img/spot-purple-m.png
new file mode 100644
index 0000000..84c4f5e
Binary files /dev/null and b/data/www/img/spot-purple-m.png differ
diff --git a/data/www/img/spot-red.png b/data/www/img/spot-red.png
new file mode 100644
index 0000000..35bcd4b
Binary files /dev/null and b/data/www/img/spot-red.png differ
diff --git a/data/www/js/global.js b/data/www/js/global.js
index a8c6dfa..0ee7497 100644
--- a/data/www/js/global.js
+++ b/data/www/js/global.js
@@ -10,7 +10,56 @@ const hideModal = function () {
$modalsRoot.addClass('hidden').find('form').trigger('reset');
};
+const hideDropdowns = function () {
+ $('.dropdown').removeClass('dropdown-show');
+};
+
jQuery(document).ready(function ($) {
+ $('.dropdown .trigger').on('click', function(event) {
+ event.stopPropagation();
+ var $dropdown = $(this).closest('.dropdown');
+ var $menu = $dropdown.find('ul.dropdown-menu');
+
+ $('.dropdown').not($dropdown).removeClass('dropdown-show');
+ $dropdown.toggleClass('dropdown-show');
+
+ // Adjust dropdown position to prevent overflow
+ var triggerHeight = $(this).outerHeight() + 20;
+ var triggerOffset = $(this).offset();
+ var menuWidth = $menu.outerWidth();
+ var windowWidth = $(window).width();
+ var menuHeight = $menu.outerHeight();
+ var windowHeight = $(window).height();
+
+ // Set the top position
+ $menu.css('top', triggerHeight + 'px');
+
+ // Adjust the left position to prevent overflow
+ if (triggerOffset.left + menuWidth > windowWidth) {
+ $menu.css('left', 'auto');
+ $menu.css('right', 0);
+ } else {
+ $menu.css('left', 0);
+ $menu.css('right', 'auto');
+ }
+
+ // Adjust the top position to prevent bottom overflow
+ var menuOffset = $menu.offset();
+ if (menuOffset.top + menuHeight > windowHeight) {
+ $menu.css('top', -menuHeight + 'px');
+ } else {
+ $menu.css('top', triggerHeight + 'px');
+ }
+ });
+
+ $(document).on('click', function() {
+ $('.dropdown').removeClass('dropdown-show');
+ });
+
+ $(window).on('resize', function() {
+ $('.dropdown.dropdown-show .trigger').trigger('click');
+ });
+
$(document).on('click', '.modal-close', function () {
hideModal();
});
@@ -18,6 +67,7 @@ jQuery(document).ready(function ($) {
$(document).keyup(function (e) {
if (e.key === "Escape") {
hideModal();
+ hideDropdowns();
}
});
diff --git a/data/www/scss/base/_fonts.scss b/data/www/scss/base/_fonts.scss
new file mode 100644
index 0000000..ce769b3
--- /dev/null
+++ b/data/www/scss/base/_fonts.scss
@@ -0,0 +1,4 @@
+@font-face {
+ font-family: 'Sixtyfour';
+ src: url('../../webfonts/Sixtyfour-Regular.ttf') format('truetype');
+}
\ No newline at end of file
diff --git a/data/www/scss/base/_html.scss b/data/www/scss/base/_html.scss
index 1225eb0..9db6f5c 100644
--- a/data/www/scss/base/_html.scss
+++ b/data/www/scss/base/_html.scss
@@ -1,29 +1,151 @@
* {
- font-family: 'Roboto', 'Arial', 'sans-serif';
+ font-family: 'Work Sans', 'Roboto', 'Arial', 'sans-serif';
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
}
html {
- height: 100vh;
- margin: 0;
- padding: 0;
- display: flex;
- background-color: $blueDark;
- flex-direction: column;
- justify-content: flex-start;
- align-items: flex-start;
- align-self: stretch;
+ background-color: #111;
}
-body {
- margin: 0;
- padding: 0;
- flex: 1;
- background-color: $blueDark;
- color: $white;
- display: flex;
- flex-direction: column;
- justify-content: flex-start;
- align-items: flex-start;
- align-self: stretch;
+body, html {
+ height: 100%;
+ font-family: Arial, sans-serif;
+}
+
+.container {
+ display: flex;
+ height: 100vh;
+}
+
+.chips-green {
+ background-image: url('../../img/spot-green.png');
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ z-index: -1;
+ transform: translateX(-20%) translateY(-20%);
+}
+
+.chips-red {
+ background-image: url('../../img/spot-red.png');
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ position: fixed;
+ z-index: -1;
+ transform: translateX(-10%) translateY(40%);
+}
+
+.chips-blue {
+ background-image: url('../../img/spot-blue.png');
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ position: fixed;
+ z-index: -1;
+ transform: translateX(80%) translateY(0%);
+}
+
+
+main {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .context-bar {
+ padding: 10px;
+ position: sticky;
+ top: 0;
+ z-index: 1000;
+ max-height: 80px;
+ border-bottom: 2px solid rgba(0, 0, 0, 0.2);
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ .context-menu {
+ flex: 1;
+
+ .inner {
+ border-radius: 4px;
+ background: #777;
+
+ ul {
+
+ li {
+
+ }
+ }
+ }
+ }
+
+ .context-divider {
+ width: 1px;
+ height: 100%;
+ background: #222;
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+
+ .context-user {
+ display: flex;
+ margin-right: 20px;
+
+ .trigger {
+ color: white;
+
+ .avatar {
+ width: 32px;
+ height: 32px;
+ background: $pinkyRed;
+ border-radius: 4px;
+ margin-right: 10px;
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ font-weight: bold;
+ font-size: 14px;
+ border: 1px solid #444;
+ }
+
+ i {
+ margin-top: -5px;
+ margin-left: 10px;
+ }
+ }
+ }
+ }
+
+ .main-container {
+ display: flex;
+ flex: 1;
+ overflow: hidden; /* Prevent main-container from overflowing */
+
+ .main-content {
+ flex: 2;
+ overflow-y: auto;
+ padding: 20px;
+ background-color: transparent;
+ }
+
+ .right-panel {
+ flex: 1;
+ overflow-y: auto;
+ padding: 20px;
+ background-color: transparent;
+ }
+ }
}
diff --git a/data/www/scss/base/_menu.scss b/data/www/scss/base/_menu.scss
new file mode 100644
index 0000000..bdb092a
--- /dev/null
+++ b/data/www/scss/base/_menu.scss
@@ -0,0 +1,190 @@
+
+menu {
+ width: 300px;
+ background: #111;
+ overflow-y: auto;
+ overflow-x: visible;
+ padding: 20px;
+ z-index: 2000;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: flex-start;
+ border-right: 2px solid rgba(0, 0, 0, 0.2);
+
+ h1.logo {
+ margin: 40px 0 0 0;
+ align-self: stretch;
+ display: flex;
+
+ a {
+ @include pixel-text(0);
+ flex: 1;
+ font-family: 'Sixtyfour', 'Work Sans', 'Arial', 'sans-serif';
+ align-self: stretch;
+ padding-right: 3px;
+ font-size: 20px;
+ text-transform: uppercase;
+ transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+
+ img {
+ flex-shrink: 0;
+ width: 30px;
+ margin-right: 10px;
+ position: absolute;
+ left: 5px;
+ transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
+
+ &.after {
+ opacity: 0;
+ }
+ }
+ }
+ }
+
+ &:hover {
+ h1.logo {
+ a {
+ @include pixel-text(3);
+
+ img {
+ &.before {
+ opacity: 0;
+ }
+
+ &.after {
+ animation-duration: 200ms;
+ animation-name: logotouch;
+ }
+ }
+ }
+ }
+ }
+
+ nav {
+ display: flex;
+ align-self: stretch;
+ flex: 1;
+
+
+ ul {
+ margin: 60px 0 20px 0;
+ flex: 1;
+ align-self: flex-start;
+ display: flex;
+ flex-direction: column;
+ list-style: none;
+
+ li {
+ align-self: stretch;
+ overflow: hidden;
+ position: relative;
+ transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
+ margin: 10px 0;
+
+ a {
+ color: rgba(255, 255, 255, 0.9);
+ font-size: 16px;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ align-self: stretch;
+ flex: 1;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-left: 10px;
+
+ i {
+ color: white;
+ opacity: .2;
+ background: transparent;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ align-self: stretch;
+ padding: 10px 10px;
+ width: 40px;
+ border-radius: 2px;
+ text-align: center;
+ margin-right: 20px;
+ }
+ }
+
+ &:after {
+ background: white;
+ content: "";
+ height: 195px;
+ left: -200px;
+ opacity: .2;
+ position: absolute;
+ top: -50px;
+ transform: rotate(35deg);
+ transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
+ width: 50px;
+ z-index: -2;
+ cursor: pointer;
+ }
+
+ &.active {
+ a {
+ color: $primary;
+ font-weight: bold;
+
+ i {
+ opacity: 1;
+ background: rgba(255, 255, 255, 0.9);
+ background: #017BFF;
+ }
+ }
+ }
+
+ &:hover {
+ background: $primary;
+
+ &:after {
+ z-index: 2;
+ left: 120%;
+ transition: all 550ms cubic-bezier(0.19, 1, 0.22, 1);
+ }
+
+ a {
+ color: white;
+ font-weight: bold;
+
+ i {
+ color: white;
+ opacity: 1;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ footer {
+ background: rgba(255, 255, 255, 0.01);
+ padding: 20px 0;
+ display: flex;
+ flex-direction: row;
+ align-self: stretch;
+ text-align: center;
+ justify-content: center;
+
+ p {
+ color: #444;
+
+ &.version {
+ a {
+ color: #777;
+ font-weight: bold;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/data/www/scss/components/_dropdown.scss b/data/www/scss/components/_dropdown.scss
new file mode 100644
index 0000000..80d7c1e
--- /dev/null
+++ b/data/www/scss/components/_dropdown.scss
@@ -0,0 +1,67 @@
+
+.dropdown {
+ position: relative;
+ display: flex;
+ align-self: stretch;
+
+
+ &.dropdown-show ul.dropdown-menu {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .trigger {
+ cursor: pointer;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ align-self: stretch;
+ flex: 1;
+ }
+
+ ul.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ display: none;
+ background-color: #222;
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
+ z-index: 1000;
+ list-style-type: none;
+ margin: 0;
+ overflow: hidden;
+ border-radius: 4px;
+
+ li {
+ padding: 8px 16px;
+ cursor: pointer;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+
+ &.danger:hover {
+ background-color: $danger;
+ }
+
+ &:hover {
+ background-color: $seaBlue;
+ }
+
+ a {
+ padding: 8px 16px 8px 8px;
+ color: white;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ align-self: stretch;
+
+ i {
+ margin-right: 15px;
+ }
+ }
+ }
+ }
+}
diff --git a/data/www/scss/components/_keyframes.scss b/data/www/scss/components/_keyframes.scss
new file mode 100644
index 0000000..8302029
--- /dev/null
+++ b/data/www/scss/components/_keyframes.scss
@@ -0,0 +1,12 @@
+@keyframes logotouch {
+ 0% {
+ opacity: 0;
+ }
+ 50% {
+ opacity: 1;
+ }
+ 100% {
+ opacity: 0;
+ left: 27px;
+ }
+}
diff --git a/data/www/scss/main.scss b/data/www/scss/main.scss
index cd7fe59..707cee2 100644
--- a/data/www/scss/main.scss
+++ b/data/www/scss/main.scss
@@ -3,31 +3,34 @@
@import 'utils/mixins';
// Import base styles
+@import 'base/fonts';
@import 'base/html';
-
+@import 'base/menu';
@import 'base/tachyons';
// Import layout styles
-@import 'layout/header';
-@import 'layout/footer';
-@import 'layout/container';
+//@import 'layout/header';
+//@import 'layout/footer';
+//@import 'layout/container';
// Import component styles
-@import 'components/buttons';
-@import 'components/alerts';
-@import 'components/modals';
-@import 'components/panels';
-@import 'components/switches';
-@import 'components/cards';
-@import 'components/empty';
-@import 'components/badges';
-@import 'components/explorer';
-@import 'components/toolbar';
-@import 'components/icons';
+@import 'components/dropdown';
+@import 'components/keyframes';
+//@import 'components/buttons';
+//@import 'components/alerts';
+//@import 'components/modals';
+//@import 'components/panels';
+//@import 'components/switches';
+//@import 'components/cards';
+//@import 'components/empty';
+//@import 'components/badges';
+//@import 'components/explorer';
+//@import 'components/toolbar';
+//@import 'components/icons';
// Import form styles
-@import 'forms/forms';
+//@import 'forms/forms';
// Import pages styles
-@import 'pages/settings';
-@import 'pages/sysinfo';
+//@import 'pages/settings';
+//@import 'pages/sysinfo';
diff --git a/data/www/scss/utils/_mixins.scss b/data/www/scss/utils/_mixins.scss
index e69de29..90a536e 100644
--- a/data/www/scss/utils/_mixins.scss
+++ b/data/www/scss/utils/_mixins.scss
@@ -0,0 +1,31 @@
+@mixin pixel-text($pixelOffset: 1) {
+ text-align: center;
+ text-shadow:
+ #{$pixelOffset}px 0 0 #fff,
+ #{$pixelOffset}px 2px 0 #444,
+ 0 #{$pixelOffset}px 0 $limeGreen,
+ -#{$pixelOffset}px 0 0 $seaBlue,
+ 0 -#{$pixelOffset}px 0 $pinkyRed;
+ text-decoration: none;
+ background: linear-gradient(90deg, #a0a0a0 0, #bebebe 46%, #dcdcdc 100%);
+ -webkit-background-clip: text;
+ color: transparent;
+}
+
+@mixin pixel-text-to-right($pixelOffset: 1) {
+ text-align: center;
+ text-shadow:
+ -#{$pixelOffset}px 0 0 #fff,
+ -#{$pixelOffset}px #{$pixelOffset*0.5}px 0 black,
+ #{$pixelOffset*2}px #{$pixelOffset}px 0 $limeGreen,
+ #{$pixelOffset*2}px 0 0 $seaBlue,
+ #{$pixelOffset*2}px -#{$pixelOffset}px 0 $pinkyRed;
+ text-decoration: none;
+ background: linear-gradient(90deg, #a0a0a0 0, #bebebe 46%, #dcdcdc 100%);
+ -webkit-background-clip: text;
+ color: transparent;
+}
+
+@mixin pixel-box($pixelOffset: 1) {
+ box-shadow: #{$pixelOffset}px 0 0 #fff, 0 #{$pixelOffset}px 0 $limeGreen, -#{$pixelOffset}px 0 0 $seaBlue, 0 -#{$pixelOffset}px 0 $pinkyRed;
+}
\ No newline at end of file
diff --git a/data/www/scss/utils/_variables.scss b/data/www/scss/utils/_variables.scss
index eae82c2..dcab5e2 100644
--- a/data/www/scss/utils/_variables.scss
+++ b/data/www/scss/utils/_variables.scss
@@ -1,5 +1,6 @@
// Raw Colors
$blueDark: rgb(15, 0, 53);
+$seaBlue: rgb(2, 123, 255);
$pinkyRed: rgb(239, 14, 93);
$limeGreen: rgb(14, 239, 95);
$bitterPurple: rgb(105, 47, 189);
@@ -11,4 +12,6 @@ $black: rgb(0, 0, 0);
// Type Colors
$success: $limeGreen;
-$danger: $pinkyRed;
\ No newline at end of file
+$danger: $pinkyRed;
+
+$primary: $seaBlue;
\ No newline at end of file
diff --git a/data/www/webfonts/Sixtyfour-Regular.ttf b/data/www/webfonts/Sixtyfour-Regular.ttf
new file mode 100644
index 0000000..861a9f4
Binary files /dev/null and b/data/www/webfonts/Sixtyfour-Regular.ttf differ
diff --git a/views/base.jinja.html b/views/base.jinja.html
index 26609bf..eaa1d5c 100755
--- a/views/base.jinja.html
+++ b/views/base.jinja.html
@@ -1,149 +1,243 @@
-
-
- Obscreen - {% block page_title %}{% endblock %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Obscreen - {% block page_title %}{% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% block add_css %}{% endblock %}
+ {{ HOOK(H_ROOT_CSS) }}
+
+
-
-
-
-
-
- {% block add_css %}{% endblock %}
- {{ HOOK(H_ROOT_CSS) }}
-
-
-
+{#
#}
+{#
#}
+{#
#}
- {% block header %}
-
-
-
- {% if not AUTH_ENABLED or (current_user and current_user.is_authenticated) %}
-