From b7231a35a57b6db6d8a5fb45b9dfea6f2909a161 Mon Sep 17 00:00:00 2001 From: jr-k Date: Sun, 21 Jul 2024 01:25:40 +0200 Subject: [PATCH] ok --- .gitignore | 1 + data/www/css/compiled/main-dark-mode.css | 2 +- data/www/css/compiled/main-light-mode.css | 2 +- data/www/js/slideshow/contents.js | 17 +- data/www/scss/forms/_forms.scss | 22 ++ lang/en.json | 4 + lang/es.json | 4 + lang/fr.json | 4 + lang/it.json | 4 + src/controller/ContentController.py | 23 +- src/controller/PlayerController.py | 72 +++--- src/manager/ContentManager.py | 2 +- src/manager/ExternalStorageManager.py | 208 ++++++++++++++++++ src/model/entity/ExternalStorage.py | 141 ++++++++++++ src/model/enum/ContentType.py | 14 +- src/service/ModelStore.py | 6 + views/player/player.jinja.html | 3 +- views/slideshow/contents/list.jinja.html | 1 + views/slideshow/contents/modal/add.jinja.html | 20 +- 19 files changed, 500 insertions(+), 50 deletions(-) create mode 100644 src/manager/ExternalStorageManager.py create mode 100644 src/model/entity/ExternalStorage.py diff --git a/.gitignore b/.gitignore index 2c1c2aa..f72b903 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ var/run/* .env venv/ node_modules +tmp.py \ No newline at end of file diff --git a/data/www/css/compiled/main-dark-mode.css b/data/www/css/compiled/main-dark-mode.css index fae3ceb..578539d 100644 --- a/data/www/css/compiled/main-dark-mode.css +++ b/data/www/css/compiled/main-dark-mode.css @@ -1 +1 @@ -.warning{color:#e56723!important}.bg-warning{background-color:#e56723!important}.border-warning{border-color:#e56723!important}.info{color:#027bff!important}.bg-info{background-color:#027bff!important}.border-info{border-color:#027bff!important}.info-alt{color:#075cb7!important}.bg-info-alt{background-color:#075cb7!important}.border-info-alt{border-color:#075cb7!important}.success{color:#0eef5f!important}.bg-success{background-color:#0eef5f!important}.border-success{border-color:#0eef5f!important}.success-alt{color:#11a948!important}.bg-success-alt{background-color:#11a948!important}.border-success-alt{border-color:#11a948!important}.error{color:#ef0e5d!important}.bg-error{background-color:#ef0e5d!important}.border-error{border-color:#ef0e5d!important}.error-alt{color:#c20941!important}.bg-error-alt{background-color:#c20941!important}.border-error-alt{border-color:#c20941!important}.danger{color:#ef0e5d!important}.bg-danger{background-color:#ef0e5d!important}.border-danger{border-color:#ef0e5d!important}.danger-alt{color:#c20941!important}.bg-danger-alt{background-color:#c20941!important}.border-danger-alt{border-color:#c20941!important}.purple{color:#bc48ff!important}.bg-purple{background-color:#bc48ff!important}.border-purple{border-color:#bc48ff!important}.purple-alt{color:#692fbd!important}.bg-purple-alt{background-color:#692fbd!important}.border-purple-alt{border-color:#692fbd!important}.neutral{color:#464646!important}.bg-neutral{background-color:#464646!important}.border-neutral{border-color:#464646!important}.yellow{color:#e5a123!important}.bg-yellow{background-color:#e5a123!important}.border-yellow{border-color:#e5a123!important}.white{color:#fff!important}.bg-white{background-color:#fff!important}.border-white{border-color:#fff!important}.black{color:#000!important}.bg-black{background-color:#000!important}.border-black{border-color:#000!important}.youtube{color:#fd3c01!important}.bg-youtube{background-color:#fd3c01!important}.border-youtube{border-color:#fd3c01!important}.raspbian{color:#b61240!important}.bg-raspbian{background-color:#b61240!important}.border-raspbian{border-color:#b61240!important}.windows{color:#12a7e3!important}.bg-windows{background-color:#12a7e3!important}.border-windows{border-color:#12a7e3!important}.macos{color:#b3bcc2!important}.bg-macos{background-color:#b3bcc2!important}.border-macos{border-color:#b3bcc2!important}.debian{color:#cf084e!important}.bg-debian{background-color:#cf084e!important}.border-debian{border-color:#cf084e!important}.fedora{color:#52a2da!important}.bg-fedora{background-color:#52a2da!important}.border-fedora{border-color:#52a2da!important}.ubuntu{color:#d64514!important}.bg-ubuntu{background-color:#d64514!important}.border-ubuntu{border-color:#d64514!important}.suse{color:#6fb425!important}.bg-suse{background-color:#6fb425!important}.border-suse{border-color:#6fb425!important}.redhat{color:#c60200!important}.bg-redhat{background-color:#c60200!important}.border-redhat{border-color:#c60200!important}.centos{color:#9b4c88!important}.bg-centos{background-color:#9b4c88!important}.border-centos{border-color:#9b4c88!important}.other{color:#e5a123!important}.bg-other{background-color:#e5a123!important}.border-other{border-color:#e5a123!important}button.btn-warning,.btn.btn-warning{background:#e56723;box-shadow:0 2px #913e11}button.btn-warning:hover,.btn.btn-warning:hover{box-shadow:0 2px 0 1px #913e11 inset}button.btn-warning:focus,.btn.btn-warning:focus{background:#913e11}button.btn-wire-warning,.btn.btn-wire-warning{background:transparent;box-shadow:none;border:2px solid rgb(229,103,35);color:#fffc}button.btn-wire-warning i.btn-match,.btn.btn-wire-warning i.btn-match{color:#e56723}button.btn-wire-warning:hover,.btn.btn-wire-warning:hover{background:#e567230d;border-color:#be5117;color:#be5117;box-shadow:none}button.btn-wire-warning:focus,.btn.btn-wire-warning:focus{border-color:#913e11;background:transparent}button.btn-info,.btn.btn-info{background:#027bff;box-shadow:0 2px #004a9b}button.btn-info:hover,.btn.btn-info:hover{box-shadow:0 2px 0 1px #004a9b inset}button.btn-info:focus,.btn.btn-info:focus{background:#004a9b}button.btn-wire-info,.btn.btn-wire-info{background:transparent;box-shadow:none;border:2px solid rgb(2,123,255);color:#fffc}button.btn-wire-info i.btn-match,.btn.btn-wire-info i.btn-match{color:#027bff}button.btn-wire-info:hover,.btn.btn-wire-info:hover{background:#027bff0d;border-color:#0063ce;color:#0063ce;box-shadow:none}button.btn-wire-info:focus,.btn.btn-wire-info:focus{border-color:#004a9b;background:transparent}button.btn-info-alt,.btn.btn-info-alt{background:#075cb7;box-shadow:0 2px #032b55}button.btn-info-alt:hover,.btn.btn-info-alt:hover{box-shadow:0 2px 0 1px #032b55 inset}button.btn-info-alt:focus,.btn.btn-info-alt:focus{background:#032b55}button.btn-wire-info-alt,.btn.btn-wire-info-alt{background:transparent;box-shadow:none;border:2px solid rgb(7,92,183);color:#fffc}button.btn-wire-info-alt i.btn-match,.btn.btn-wire-info-alt i.btn-match{color:#075cb7}button.btn-wire-info-alt:hover,.btn.btn-wire-info-alt:hover{background:#075cb70d;border-color:#054386;color:#054386;box-shadow:none}button.btn-wire-info-alt:focus,.btn.btn-wire-info-alt:focus{border-color:#032b55;background:transparent}button.btn-success,.btn.btn-success{background:#0eef5f;box-shadow:0 2px #088f39}button.btn-success:hover,.btn.btn-success:hover{box-shadow:0 2px 0 1px #088f39 inset}button.btn-success:focus,.btn.btn-success:focus{background:#088f39}button.btn-wire-success,.btn.btn-wire-success{background:transparent;box-shadow:none;border:2px solid rgb(14,239,95);color:#fffc}button.btn-wire-success i.btn-match,.btn.btn-wire-success i.btn-match{color:#0eef5f}button.btn-wire-success:hover,.btn.btn-wire-success:hover{background:#0eef5f0d;border-color:#0bbf4c;color:#0bbf4c;box-shadow:none}button.btn-wire-success:focus,.btn.btn-wire-success:focus{border-color:#088f39;background:transparent}button.btn-success-alt,.btn.btn-success-alt{background:#11a948;box-shadow:0 2px #084c21}button.btn-success-alt:hover,.btn.btn-success-alt:hover{box-shadow:0 2px 0 1px #084c21 inset}button.btn-success-alt:focus,.btn.btn-success-alt:focus{background:#084c21}button.btn-wire-success-alt,.btn.btn-wire-success-alt{background:transparent;box-shadow:none;border:2px solid rgb(17,169,72);color:#fffc}button.btn-wire-success-alt i.btn-match,.btn.btn-wire-success-alt i.btn-match{color:#11a948}button.btn-wire-success-alt:hover,.btn.btn-wire-success-alt:hover{background:#11a9480d;border-color:#0c7b34;color:#0c7b34;box-shadow:none}button.btn-wire-success-alt:focus,.btn.btn-wire-success-alt:focus{border-color:#084c21;background:transparent}button.btn-error,.btn.btn-error{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-error:hover,.btn.btn-error:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-error:focus,.btn.btn-error:focus{background:#8f0838}button.btn-wire-error,.btn.btn-wire-error{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#fffc}button.btn-wire-error i.btn-match,.btn.btn-wire-error i.btn-match{color:#ef0e5d}button.btn-wire-error:hover,.btn.btn-wire-error:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-error:focus,.btn.btn-wire-error:focus{border-color:#8f0838;background:transparent}button.btn-error-alt,.btn.btn-error-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-error-alt:hover,.btn.btn-error-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-error-alt:focus,.btn.btn-error-alt:focus{background:#610420}button.btn-wire-error-alt,.btn.btn-wire-error-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#fffc}button.btn-wire-error-alt i.btn-match,.btn.btn-wire-error-alt i.btn-match{color:#c20941}button.btn-wire-error-alt:hover,.btn.btn-wire-error-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-error-alt:focus,.btn.btn-wire-error-alt:focus{border-color:#610420;background:transparent}button.btn-danger,.btn.btn-danger{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-danger:hover,.btn.btn-danger:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-danger:focus,.btn.btn-danger:focus{background:#8f0838}button.btn-wire-danger,.btn.btn-wire-danger{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#fffc}button.btn-wire-danger i.btn-match,.btn.btn-wire-danger i.btn-match{color:#ef0e5d}button.btn-wire-danger:hover,.btn.btn-wire-danger:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-danger:focus,.btn.btn-wire-danger:focus{border-color:#8f0838;background:transparent}button.btn-danger-alt,.btn.btn-danger-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-danger-alt:hover,.btn.btn-danger-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-danger-alt:focus,.btn.btn-danger-alt:focus{background:#610420}button.btn-wire-danger-alt,.btn.btn-wire-danger-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#fffc}button.btn-wire-danger-alt i.btn-match,.btn.btn-wire-danger-alt i.btn-match{color:#c20941}button.btn-wire-danger-alt:hover,.btn.btn-wire-danger-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-danger-alt:focus,.btn.btn-wire-danger-alt:focus{border-color:#610420;background:transparent}button.btn-purple,.btn.btn-purple{background:#bc48ff;box-shadow:0 2px #8f00e1}button.btn-purple:hover,.btn.btn-purple:hover{box-shadow:0 2px 0 1px #8f00e1 inset}button.btn-purple:focus,.btn.btn-purple:focus{background:#8f00e1}button.btn-wire-purple,.btn.btn-wire-purple{background:transparent;box-shadow:none;border:2px solid rgb(188,72,255);color:#fffc}button.btn-wire-purple i.btn-match,.btn.btn-wire-purple i.btn-match{color:#bc48ff}button.btn-wire-purple:hover,.btn.btn-wire-purple:hover{background:#bc48ff0d;border-color:#a915ff;color:#a915ff;box-shadow:none}button.btn-wire-purple:focus,.btn.btn-wire-purple:focus{border-color:#8f00e1;background:transparent}button.btn-purple-alt,.btn.btn-purple-alt{background:#692fbd;box-shadow:0 2px #3c1b6b}button.btn-purple-alt:hover,.btn.btn-purple-alt:hover{box-shadow:0 2px 0 1px #3c1b6b inset}button.btn-purple-alt:focus,.btn.btn-purple-alt:focus{background:#3c1b6b}button.btn-wire-purple-alt,.btn.btn-wire-purple-alt{background:transparent;box-shadow:none;border:2px solid rgb(105,47,189);color:#fffc}button.btn-wire-purple-alt i.btn-match,.btn.btn-wire-purple-alt i.btn-match{color:#692fbd}button.btn-wire-purple-alt:hover,.btn.btn-wire-purple-alt:hover{background:#692fbd0d;border-color:#522594;color:#522594;box-shadow:none}button.btn-wire-purple-alt:focus,.btn.btn-wire-purple-alt:focus{border-color:#3c1b6b;background:transparent}button.btn-neutral,.btn.btn-neutral{background:#464646;box-shadow:0 2px #131313}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #131313 inset}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#131313}button.btn-wire-neutral,.btn.btn-wire-neutral{background:transparent;box-shadow:none;border:2px solid rgb(70,70,70);color:#fffc}button.btn-wire-neutral i.btn-match,.btn.btn-wire-neutral i.btn-match{color:#464646}button.btn-wire-neutral:hover,.btn.btn-wire-neutral:hover{background:#4646460d;border-color:#2d2d2d;color:#2d2d2d;box-shadow:none}button.btn-wire-neutral:focus,.btn.btn-wire-neutral:focus{border-color:#131313;background:transparent}button.btn-yellow,.btn.btn-yellow{background:#e5a123;box-shadow:0 2px #916411}button.btn-yellow:hover,.btn.btn-yellow:hover{box-shadow:0 2px 0 1px #916411 inset}button.btn-yellow:focus,.btn.btn-yellow:focus{background:#916411}button.btn-wire-yellow,.btn.btn-wire-yellow{background:transparent;box-shadow:none;border:2px solid rgb(229,161,35);color:#fffc}button.btn-wire-yellow i.btn-match,.btn.btn-wire-yellow i.btn-match{color:#e5a123}button.btn-wire-yellow:hover,.btn.btn-wire-yellow:hover{background:#e5a1230d;border-color:#be8417;color:#be8417;box-shadow:none}button.btn-wire-yellow:focus,.btn.btn-wire-yellow:focus{border-color:#916411;background:transparent}button.btn-white,.btn.btn-white{background:#fff;box-shadow:0 2px #ccc}button.btn-white:hover,.btn.btn-white:hover{box-shadow:0 2px 0 1px #ccc inset}button.btn-white:focus,.btn.btn-white:focus{background:#ccc}button.btn-wire-white,.btn.btn-wire-white{background:transparent;box-shadow:none;border:2px solid rgb(255,255,255);color:#fffc}button.btn-wire-white i.btn-match,.btn.btn-wire-white i.btn-match{color:#fff}button.btn-wire-white:hover,.btn.btn-wire-white:hover{background:#ffffff0d;border-color:#e6e6e6;color:#e6e6e6;box-shadow:none}button.btn-wire-white:focus,.btn.btn-wire-white:focus{border-color:#ccc;background:transparent}button.btn-black,.btn.btn-black{background:#000;box-shadow:0 2px #000}button.btn-black:hover,.btn.btn-black:hover{box-shadow:0 2px 0 1px #000 inset}button.btn-black:focus,.btn.btn-black:focus{background:#000}button.btn-wire-black,.btn.btn-wire-black{background:transparent;box-shadow:none;border:2px solid rgb(0,0,0);color:#fffc}button.btn-wire-black i.btn-match,.btn.btn-wire-black i.btn-match{color:#000}button.btn-wire-black:hover,.btn.btn-wire-black:hover{background:#0000000d;border-color:#000;color:#000;box-shadow:none}button.btn-wire-black:focus,.btn.btn-wire-black:focus{border-color:#000;background:transparent}button.btn-youtube,.btn.btn-youtube{background:#fd3c01;box-shadow:0 2px #972401}button.btn-youtube:hover,.btn.btn-youtube:hover{box-shadow:0 2px 0 1px #972401 inset}button.btn-youtube:focus,.btn.btn-youtube:focus{background:#972401}button.btn-wire-youtube,.btn.btn-wire-youtube{background:transparent;box-shadow:none;border:2px solid rgb(253,60,1);color:#fffc}button.btn-wire-youtube i.btn-match,.btn.btn-wire-youtube i.btn-match{color:#fd3c01}button.btn-wire-youtube:hover,.btn.btn-wire-youtube:hover{background:#fd3c010d;border-color:#ca3001;color:#ca3001;box-shadow:none}button.btn-wire-youtube:focus,.btn.btn-wire-youtube:focus{border-color:#972401;background:transparent}button.btn-raspbian,.btn.btn-raspbian{background:#b61240;box-shadow:0 2px #59091f}button.btn-raspbian:hover,.btn.btn-raspbian:hover{box-shadow:0 2px 0 1px #59091f inset}button.btn-raspbian:focus,.btn.btn-raspbian:focus{background:#59091f}button.btn-wire-raspbian,.btn.btn-wire-raspbian{background:transparent;box-shadow:none;border:2px solid rgb(182,18,64);color:#fffc}button.btn-wire-raspbian i.btn-match,.btn.btn-wire-raspbian i.btn-match{color:#b61240}button.btn-wire-raspbian:hover,.btn.btn-wire-raspbian:hover{background:#b612400d;border-color:#880d30;color:#880d30;box-shadow:none}button.btn-wire-raspbian:focus,.btn.btn-wire-raspbian:focus{border-color:#59091f;background:transparent}button.btn-windows,.btn.btn-windows{background:#12a7e3;box-shadow:0 2px #0b6184}button.btn-windows:hover,.btn.btn-windows:hover{box-shadow:0 2px 0 1px #0b6184 inset}button.btn-windows:focus,.btn.btn-windows:focus{background:#0b6184}button.btn-wire-windows,.btn.btn-wire-windows{background:transparent;box-shadow:none;border:2px solid rgb(18,167,227);color:#fffc}button.btn-wire-windows i.btn-match,.btn.btn-wire-windows i.btn-match{color:#12a7e3}button.btn-wire-windows:hover,.btn.btn-wire-windows:hover{background:#12a7e30d;border-color:#0e84b4;color:#0e84b4;box-shadow:none}button.btn-wire-windows:focus,.btn.btn-wire-windows:focus{border-color:#0b6184;background:transparent}button.btn-macos,.btn.btn-macos{background:#b3bcc2;box-shadow:0 2px #7a8a95}button.btn-macos:hover,.btn.btn-macos:hover{box-shadow:0 2px 0 1px #7a8a95 inset}button.btn-macos:focus,.btn.btn-macos:focus{background:#7a8a95}button.btn-wire-macos,.btn.btn-wire-macos{background:transparent;box-shadow:none;border:2px solid rgb(179,188,194);color:#fffc}button.btn-wire-macos i.btn-match,.btn.btn-wire-macos i.btn-match{color:#b3bcc2}button.btn-wire-macos:hover,.btn.btn-wire-macos:hover{background:#b3bcc20d;border-color:#97a3ab;color:#97a3ab;box-shadow:none}button.btn-wire-macos:focus,.btn.btn-wire-macos:focus{border-color:#7a8a95;background:transparent}button.btn-debian,.btn.btn-debian{background:#cf084e;box-shadow:0 2px #6d0429}button.btn-debian:hover,.btn.btn-debian:hover{box-shadow:0 2px 0 1px #6d0429 inset}button.btn-debian:focus,.btn.btn-debian:focus{background:#6d0429}button.btn-wire-debian,.btn.btn-wire-debian{background:transparent;box-shadow:none;border:2px solid rgb(207,8,78);color:#fffc}button.btn-wire-debian i.btn-match,.btn.btn-wire-debian i.btn-match{color:#cf084e}button.btn-wire-debian:hover,.btn.btn-wire-debian:hover{background:#cf084e0d;border-color:#9e063b;color:#9e063b;box-shadow:none}button.btn-wire-debian:focus,.btn.btn-wire-debian:focus{border-color:#6d0429;background:transparent}button.btn-fedora,.btn.btn-fedora{background:#52a2da;box-shadow:0 2px #236ea3}button.btn-fedora:hover,.btn.btn-fedora:hover{box-shadow:0 2px 0 1px #236ea3 inset}button.btn-fedora:focus,.btn.btn-fedora:focus{background:#236ea3}button.btn-wire-fedora,.btn.btn-wire-fedora{background:transparent;box-shadow:none;border:2px solid rgb(82,162,218);color:#fffc}button.btn-wire-fedora i.btn-match,.btn.btn-wire-fedora i.btn-match{color:#52a2da}button.btn-wire-fedora:hover,.btn.btn-wire-fedora:hover{background:#52a2da0d;border-color:#2c8bcd;color:#2c8bcd;box-shadow:none}button.btn-wire-fedora:focus,.btn.btn-wire-fedora:focus{border-color:#236ea3;background:transparent}button.btn-ubuntu,.btn.btn-ubuntu{background:#d64514;box-shadow:0 2px #79270b}button.btn-ubuntu:hover,.btn.btn-ubuntu:hover{box-shadow:0 2px 0 1px #79270b inset}button.btn-ubuntu:focus,.btn.btn-ubuntu:focus{background:#79270b}button.btn-wire-ubuntu,.btn.btn-wire-ubuntu{background:transparent;box-shadow:none;border:2px solid rgb(214,69,20);color:#fffc}button.btn-wire-ubuntu i.btn-match,.btn.btn-wire-ubuntu i.btn-match{color:#d64514}button.btn-wire-ubuntu:hover,.btn.btn-wire-ubuntu:hover{background:#d645140d;border-color:#a73610;color:#a73610;box-shadow:none}button.btn-wire-ubuntu:focus,.btn.btn-wire-ubuntu:focus{border-color:#79270b;background:transparent}button.btn-suse,.btn.btn-suse{background:#6fb425;box-shadow:0 2px #3b5f14}button.btn-suse:hover,.btn.btn-suse:hover{box-shadow:0 2px 0 1px #3b5f14 inset}button.btn-suse:focus,.btn.btn-suse:focus{background:#3b5f14}button.btn-wire-suse,.btn.btn-wire-suse{background:transparent;box-shadow:none;border:2px solid rgb(111,180,37);color:#fffc}button.btn-wire-suse i.btn-match,.btn.btn-wire-suse i.btn-match{color:#6fb425}button.btn-wire-suse:hover,.btn.btn-wire-suse:hover{background:#6fb4250d;border-color:#558a1c;color:#558a1c;box-shadow:none}button.btn-wire-suse:focus,.btn.btn-wire-suse:focus{border-color:#3b5f14;background:transparent}button.btn-redhat,.btn.btn-redhat{background:#c60200;box-shadow:0 2px #600100}button.btn-redhat:hover,.btn.btn-redhat:hover{box-shadow:0 2px 0 1px #600100 inset}button.btn-redhat:focus,.btn.btn-redhat:focus{background:#600100}button.btn-wire-redhat,.btn.btn-wire-redhat{background:transparent;box-shadow:none;border:2px solid rgb(198,2,0);color:#fffc}button.btn-wire-redhat i.btn-match,.btn.btn-wire-redhat i.btn-match{color:#c60200}button.btn-wire-redhat:hover,.btn.btn-wire-redhat:hover{background:#c602000d;border-color:#930100;color:#930100;box-shadow:none}button.btn-wire-redhat:focus,.btn.btn-wire-redhat:focus{border-color:#600100;background:transparent}button.btn-centos,.btn.btn-centos{background:#9b4c88;box-shadow:0 2px #572a4c}button.btn-centos:hover,.btn.btn-centos:hover{box-shadow:0 2px 0 1px #572a4c inset}button.btn-centos:focus,.btn.btn-centos:focus{background:#572a4c}button.btn-wire-centos,.btn.btn-wire-centos{background:transparent;box-shadow:none;border:2px solid rgb(155,76,136);color:#fffc}button.btn-wire-centos i.btn-match,.btn.btn-wire-centos i.btn-match{color:#9b4c88}button.btn-wire-centos:hover,.btn.btn-wire-centos:hover{background:#9b4c880d;border-color:#793b6a;color:#793b6a;box-shadow:none}button.btn-wire-centos:focus,.btn.btn-wire-centos:focus{border-color:#572a4c;background:transparent}button.btn-other,.btn.btn-other{background:#e5a123;box-shadow:0 2px #916411}button.btn-other:hover,.btn.btn-other:hover{box-shadow:0 2px 0 1px #916411 inset}button.btn-other:focus,.btn.btn-other:focus{background:#916411}button.btn-wire-other,.btn.btn-wire-other{background:transparent;box-shadow:none;border:2px solid rgb(229,161,35);color:#fffc}button.btn-wire-other i.btn-match,.btn.btn-wire-other i.btn-match{color:#e5a123}button.btn-wire-other:hover,.btn.btn-wire-other:hover{background:#e5a1230d;border-color:#be8417;color:#be8417;box-shadow:none}button.btn-wire-other:focus,.btn.btn-wire-other:focus{border-color:#916411;background:transparent}.alert.alert-warning{color:#e56723;background:#e5672333}.alert.alert-info{color:#027bff;background:#027bff33}.alert.alert-info-alt{color:#075cb7;background:#075cb733}.alert.alert-success{color:#0eef5f;background:#0eef5f33}.alert.alert-success-alt{color:#11a948;background:#11a94833}.alert.alert-error{color:#ef0e5d;background:#ef0e5d33}.alert.alert-error-alt{color:#c20941;background:#c2094133}.alert.alert-danger{color:#ef0e5d;background:#ef0e5d33}.alert.alert-danger-alt{color:#c20941;background:#c2094133}.alert.alert-purple{color:#bc48ff;background:#bc48ff33}.alert.alert-purple-alt{color:#692fbd;background:#692fbd33}.alert.alert-neutral{color:#464646;background:#46464633}.alert.alert-yellow{color:#e5a123;background:#e5a12333}.alert.alert-white{color:#fff;background:#fff3}.alert.alert-black{color:#000;background:#0003}.alert.alert-youtube{color:#fd3c01;background:#fd3c0133}.alert.alert-raspbian{color:#b61240;background:#b6124033}.alert.alert-windows{color:#12a7e3;background:#12a7e333}.alert.alert-macos{color:#b3bcc2;background:#b3bcc233}.alert.alert-debian{color:#cf084e;background:#cf084e33}.alert.alert-fedora{color:#52a2da;background:#52a2da33}.alert.alert-ubuntu{color:#d64514;background:#d6451433}.alert.alert-suse{color:#6fb425;background:#6fb42533}.alert.alert-redhat{color:#c60200;background:#c6020033}.alert.alert-centos{color:#9b4c88;background:#9b4c8833}.alert.alert-other{color:#e5a123;background:#e5a12333}@font-face{font-family:Sixtyfour;src:url(../../webfonts/Sixtyfour-Regular.ttf) format("truetype")}*{font-family: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}.horizontal{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}main{flex:1;display:flex;flex-direction:column}main .main-container{display:flex;flex-direction:column;flex:1;overflow:hidden;align-self:stretch}main .main-container .top-content{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:10px 10px 10px 15px;background:transparent;border-bottom:1px solid #222}main .main-container .top-content h1{color:#fff;font-weight:600;font-size:24px}main .main-container .top-content .top-actions{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}main .main-container .top-content .top-actions.align-right{justify-content:flex-end;margin-right:10px}main .main-container .top-content .top-actions .btn:first-child{margin-left:0!important}main .main-container .top-content .top-actions .btn,main .main-container .top-content .top-actions button{margin-left:10px}main .main-container .bottom-content{display:flex;flex-direction:row;align-self:stretch;justify-content:flex-start;align-items:flex-start;flex:1;overflow-y:auto;background:radial-gradient(circle at 0% 53%,rgba(239,14,93,.8) 10%,transparent 45%),radial-gradient(circle at 135% 53%,rgba(2,123,255,.8) 10%,transparent 95%),radial-gradient(circle at 50% 80%,rgba(14,239,95,.8) 40%,transparent 95%)}main .main-container .bottom-content .page-content{flex:2;overflow-y:auto;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;background:#000c;padding:5px}main .main-container .bottom-content .page-content .inner{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:0 10px 40px;background:#111;align-self:stretch}main .main-container .bottom-content .page-panel{flex:1;overflow-y:auto;align-self:stretch;background:#111;border-top:none}main .main-container .bottom-content .page-panel.left-panel{border-right:1px solid #222;border-left:none}main .main-container .bottom-content .page-panel.left-panel.explr-explorer{flex:.5;overflow-y:auto;padding:0;background:#111;box-shadow:1px 1px .5px .5px inset #0003;max-width:250px}main .main-container .bottom-content .page-panel.right-panel{border-left:1px solid #222;border-right:none}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center!important}.tar{text-align:right!important}a{text-decoration:none}.normal{font-weight:400!important}.bold{font-weight:700!important}.col{display:flex;flex:1;flex-direction:column;align-self:stretch}main .context-bar{padding:10px;position:sticky;top:0;z-index:1000;max-height:80px;border-bottom:1px solid #222;display:flex;flex-direction:row;align-items:center}main .context-bar .context-menu{flex:1}main .context-bar .context-menu .inner{display:flex}main .context-bar .context-menu .inner ul.pills{margin:0}main .context-bar .context-divider{width:1px;height:100%;background:#222;margin-left:20px;margin-right:20px}main .context-bar .contex-tail{margin-right:20px}main .context-bar .contex-tail .btn{margin-right:0}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;border-radius:4px;background:#aaa;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;color:#000}main .context-bar .context-user .trigger i{margin-top:-5px;margin-left:10px}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:1px solid #222;min-width:64px}menu h1.logo{margin:40px 0 0 10px;align-self:stretch;display:flex}menu h1.logo a{text-align:center;text-shadow:0px 0 0 rgb(255,255,255),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;color:#fff}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 rgb(255,255,255),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;border-radius:4px}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:4px;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;color:#fff;background:#ffffffe6;background:#027bff}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}.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;transition:all .55s cubic-bezier(.19,1,.22,1)}.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}}@keyframes shakednd{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}button,.btn{position:relative;padding:10px 10px 8px;font-size:14px;color:#fff;cursor:pointer;border:none;border-radius:4px;background:#027bff;box-shadow:0 2px #004a9b;font-weight:700;letter-spacing:-.5px;margin-top:-2px;min-width:38px;min-height:34px;text-align:center;justify-content:center}button i.icon-left,.btn i.icon-left{margin-right:5px}button:hover,.btn:hover{box-shadow:0 2px 0 1px #004a9b inset;color:#fffc}button:focus,.btn:focus{background:#004a9b;color:#ffffff80;box-shadow:none}button.btn-pixel,.btn.btn-pixel{background:#ccc;border:1px solid transparent;transition:all .55s cubic-bezier(.19,1,.22,1);text-transform:uppercase;font-size:12px;box-shadow:4px 0 #fff,0 4px #0eef5f,-4px 0 #027bff,0 -4px #ef0e5d;color:#222;overflow:hidden}button.btn-pixel:hover,.btn.btn-pixel:hover{box-shadow:6px 0 #fff,0 6px #0eef5f,-6px 0 #027bff,0 -6px #ef0e5d;text-align:center;text-shadow:4px 0 0 rgb(255,255,255),4px 2px 0 #444,0 4px 0 rgb(14,239,95),-4px 0 0 rgb(2,123,255),0 -4px 0 rgb(239,14,93);text-decoration:none;background:linear-gradient(90deg,#a0a0a0 0,#bebebe 46%,#dcdcdc);-webkit-background-clip:text;color:transparent}button.btn-neutral,.btn.btn-neutral{color:#fff;background:#555;box-shadow:0 2px #3c3c3c;border:1px solid transparent}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #222 inset;background:#3c3c3c}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#222;border:1px solid #AAA}button .btn-wire-neutral,.btn .btn-wire-neutral{background:transparent;border:2px solid #555;color:#fffc;box-shadow:none}button .btn-wire-neutral:hover,.btn .btn-wire-neutral:hover{background:#5555550d;border-color:#3c3c3c;color:#3c3c3c;box-shadow:none}button .btn-wire-neutral:focus,.btn .btn-wire-neutral:focus{border-color:#222;background:transparent}button.btn-naked,.btn.btn-naked{background:transparent;box-shadow:none;border:1px solid transparent;color:#fff}button.btn-naked:hover,.btn.btn-naked:hover{box-shadow:0 2px 0 1px #222 inset;background:#3c3c3c;color:#fff}button.btn-naked:focus,.btn.btn-naked:focus{background:#222;border:1px solid #AAA}button i.main,.btn i.main{font-size:18px}button sup,button sub,.btn sup,.btn sub{position:absolute;top:-4px;right:-4px;background:#777;border-bottom:2px solid #555;color:red;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}button sup i,button sub i,.btn sup i,.btn sub i{color:#fff;font-size:10px}button.btn-double-icon,.btn.btn-double-icon{margin-right:5px}button.disabled,.btn.disabled{cursor:default}.alert{padding:20px;align-self:stretch;display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:4px}.alert i{margin-right:13px}.alert a{color:inherit;margin-left:4px;margin-right:4px;text-decoration:underline}ul.explr-tree{height:100%!important}ul.explr-tree ul{padding-top:0!important}ul.explr-tree li{position:relative}ul.explr-tree li span{color:#555;font-size:13px;padding-left:5px;cursor:pointer}ul.explr-tree li span.explr-plus,ul.explr-tree li span.explr-minus{z-index:1}ul.explr-tree li span.explr-plus:hover,ul.explr-tree li span.explr-minus:hover{color:#aaa}ul.explr-tree li i.main{font-size:14px}ul.explr-tree li sup,ul.explr-tree li sub{position:absolute;top:0;left:5px;background:#777;border-bottom:2px solid #555;border-radius:4px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-tree li sup i,ul.explr-tree li sub i{color:#fff;font-size:4px!important;margin-bottom:0}ul.explr-tree li a{color:#fff;padding-right:80px;margin-top:2px}ul.explr-tree li a:hover{color:#fff}ul.explr-tree li a.active{background:#ffffff1a;border-radius:4px;font-weight:700;text-decoration:underline;margin-left:35px;padding-left:5px;margin-right:10px}.explr-multiselection-actions,.explr-selection-actions{display:none;flex-direction:row;justify-content:flex-end;align-items:center;flex:1}.explr-multiselection-actions button,.explr-selection-actions button{display:none}body.explr-selection-actionable .explr-selection-actions,body.explr-selection-actionable.explr-selection-folder .explr-selection-actions button.explr-selection-folder,body.explr-selection-actionable.explr-selection-entity .explr-selection-actions button.explr-selection-entity,body.explr-multiselection-actionable .explr-multiselection-actions,body.explr-multiselection-actionable.explr-multiselection-folder .explr-multiselection-actions button.explr-multiselection-folder,body.explr-multiselection-actionable.explr-multiselection-entity .explr-multiselection-actions button.explr-multiselection-entity{display:flex}.selectable-zone{flex:1;align-self:stretch;border:1px solid transparent}ul.explr-dirview{display:flex;flex-direction:row;flex-wrap:wrap}ul.explr-dirview li{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;flex-shrink:0;margin:10px;min-width:100px;min-height:130px;padding-top:5px;border:1px solid transparent;border-radius:4px}ul.explr-dirview li.renaming a span{display:none}ul.explr-dirview li.renaming a form{display:block}ul.explr-dirview li.highlight-drop{border:1px dotted rgba(2,123,255,.4);background:#027bff4d}ul.explr-dirview li.highlight-clicked{border:1px dotted rgba(255,255,255,.2);background:#ffffff1a}ul.explr-dirview li a{color:#bbb;text-decoration:none;flex:1;text-align:center;font-size:12px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;max-width:84px;min-width:84px;position:relative}ul.explr-dirview li a.with-thumbnail .img-holder{width:64px;height:64px;background:#171717;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;margin-bottom:12px}ul.explr-dirview li a.with-thumbnail .img-holder img{max-height:100%;max-width:100%}ul.explr-dirview li a.with-thumbnail i{font-size:24px;position:absolute;top:-4px;left:-4px;text-shadow:0 .5px .5px #777}ul.explr-dirview li a i{font-size:64px;margin-bottom:12px;border-radius:8px}ul.explr-dirview li a sup,ul.explr-dirview li a sub{position:absolute;top:-2px;right:0;background:#777;border-bottom:2px solid #555;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-dirview li a sup i,ul.explr-dirview li a sub i{color:#fff;font-size:10px;margin-bottom:0}ul.explr-dirview li a input{width:100%;padding:0 3px}ul.explr-dirview li a input:focus{outline:none}ul.explr-dirview li a:hover{opacity:.8}ul.explr-dirview li a form{display:none}ul.explr-dirview li.new-folder a{color:#027bff}ul.explr-dirview li.new-folder a form{display:block}ul.explr-dirview .ui-draggable-dragging{z-index:20}ul.explr-dirview .ui-draggable-dragging a{opacity:1!important}.modal-explr-picker h2{margin-top:0}.modal-explr-picker .explr-tree{width:400px;max-width:400px;max-height:300px;overflow:auto;background:#222;padding:10px 20px;border-radius:4px;margin-top:15px}.content-explr-picker{cursor:pointer}.selection-rectangle{position:absolute;border:1px solid rgb(0,153,255);background-color:#0099ff1a;pointer-events:none;z-index:1000}ul.pills{background:#222;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #0003;border:1px solid #222;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0}ul.pills li.divider{margin:0 20px;width:1px;height:100%;background:#333}ul.pills li:hover a{opacity:.9}ul.pills li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#fff;overflow:hidden;padding-right:30px;text-align:center;background:#0003;margin-right:5px;transition:all .25s cubic-bezier(.19,1,.22,1)}ul.pills li a span{display:flex;justify-content:center;align-items:center;margin-right:20px;height:42px;background:#0003;width:42px}ul.pills li.active a{color:#333;background:#ccc;font-weight:700}ul.pills li:hover a{color:#fff;background:#027bff}ul.pills li:last-child a{margin-right:0}.breadcrumb-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;border-bottom:1px solid #222;background:transparent;padding:10px}.breadcrumb-container ul.breadcrumb{background:#222;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #0003;border:1px solid #222;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0;overflow-x:auto;max-width:65vw;white-space:nowrap}.breadcrumb-container ul.breadcrumb li{display:inline-block}.breadcrumb-container ul.breadcrumb li.divider{margin:0 5px}.breadcrumb-container ul.breadcrumb li.divider i{color:#aaa}.breadcrumb-container ul.breadcrumb li span,.breadcrumb-container ul.breadcrumb li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#fff;text-align:center;padding:0 3px}.breadcrumb-container ul.breadcrumb li span i,.breadcrumb-container ul.breadcrumb li a i{margin-right:5px}.breadcrumb-container ul.breadcrumb li:hover a{color:#fff;background:#027bff}.breadcrumb-container ul.breadcrumb li:last-child a{margin-right:0}.pickers,.modals{position:fixed;background:#0006;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10000}.pickers.pickers .modals-outer .modals-inner .modal h2,.modals.pickers .modals-outer .modals-inner .modal h2{font-size:14px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.pickers .modals-outer,.modals .modals-outer{min-width:464px;display:flex;flex-direction:column;overflow:auto;padding-bottom:2px}.pickers .modals-outer .modals-inner,.modals .modals-outer .modals-inner{background:#111;border-radius:10px;color:#333;padding:40px;box-shadow:0 2px #222;border:1px solid #222}.pickers .modals-outer .modals-inner .modal h2,.modals .modals-outer .modals-inner .modal h2{padding:0;margin:0 0 30px;font-weight:400;color:#999}.pickers .modals-outer .modals-inner .modal h3,.modals .modals-outer .modals-inner .modal h3{align-self:stretch;margin:0 0 10px;font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#fff;padding-bottom:10px;text-decoration:none}.pickers .modals-outer .modals-inner .modal h3.divide,.modals .modals-outer .modals-inner .modal h3.divide{border-top:1px solid #222;margin-top:20px;padding-top:20px}.toast{visibility:hidden;min-width:250px;margin-left:-125px;background-color:#333;color:#fff;text-align:center;border-radius:4px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px;border:2px dashed #222}.toast.show{visibility:visible;-webkit-animation:fadein .5s,fadeout .5s 2.5s;animation:fadein .5s,fadeout .5s 2.5s}@-webkit-keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@-webkit-keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}@keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}body.dragover .shakeondrag{animation:shakednd .1s linear alternate infinite}.btn-super-upload-busy,.btn-super-upload{display:flex;flex-direction:row;justify-content:center;align-items:center;margin-left:10px;position:relative}.btn-super-upload-busy.btn-super-upload-busy,.btn-super-upload.btn-super-upload-busy{border:none!important}.btn-super-upload-busy .unprogress,.btn-super-upload .unprogress{display:block}.btn-super-upload-busy .progress,.btn-super-upload .progress{display:none;width:200px;height:10px;background:#666;border-radius:4px;flex-direction:row;justify-content:flex-start;align-items:center}.btn-super-upload-busy .progress .progress-bar,.btn-super-upload .progress .progress-bar{border-radius:4px;background-color:#027bff;height:100%}.btn-super-upload-busy .progress .percent,.btn-super-upload .progress .percent{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;bottom:0;top:2px;font-size:15px;color:#fff;text-shadow:0 0 2px rgb(0,0,0)}.btn-super-upload-busy.uploading .progress,.btn-super-upload.uploading .progress{display:block}.btn-super-upload-busy.uploading .unprogress,.btn-super-upload.uploading .unprogress{display:none}.panes{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.panes .pane-section,.panes tbody{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:1px 1px 28px;background:#111;border-radius:4px;border:4px solid rgba(255,255,255,.05)}.panes .pane-section:hover,.panes tbody:hover,.panes .pane-section:hover tr.title-item,.panes tbody:hover tr.title-item{border-color:#027bff0d}.panes .pane-section .pane-item,.panes .pane-section tr,.panes tbody .pane-item,.panes tbody tr{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:8px 18px;background:#222}.panes .pane-section .pane-item:nth-child(odd),.panes .pane-section tr:nth-child(odd),.panes tbody .pane-item:nth-child(odd),.panes tbody tr:nth-child(odd){background-color:#111}.panes .pane-section .pane-item:nth-child(odd) td.description,.panes .pane-section tr:nth-child(odd) td.description,.panes tbody .pane-item:nth-child(odd) td.description,.panes tbody tr:nth-child(odd) td.description{color:#ffffffb3}.panes .pane-section .pane-item:nth-child(2n),.panes .pane-section tr:nth-child(2n),.panes tbody .pane-item:nth-child(2n),.panes tbody tr:nth-child(2n){background-color:#141414}.panes .pane-section .pane-item .pane-cell,.panes .pane-section .pane-item td,.panes .pane-section tr .pane-cell,.panes .pane-section tr td,.panes tbody .pane-item .pane-cell,.panes tbody .pane-item td,.panes tbody tr .pane-cell,.panes tbody tr td{color:#888;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex:1;font-size:14px}.panes .pane-section .pane-item .pane-cell.vertical,.panes .pane-section .pane-item td.vertical,.panes .pane-section tr .pane-cell.vertical,.panes .pane-section tr td.vertical,.panes tbody .pane-item .pane-cell.vertical,.panes tbody .pane-item td.vertical,.panes tbody tr .pane-cell.vertical,.panes tbody tr td.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.panes .pane-section .pane-item .pane-cell.description,.panes .pane-section .pane-item td.description,.panes .pane-section tr .pane-cell.description,.panes .pane-section tr td.description,.panes tbody .pane-item .pane-cell.description,.panes tbody .pane-item td.description,.panes tbody tr .pane-cell.description,.panes tbody tr td.description{align-self:stretch}.panes .pane-section .pane-item .pane-cell.value,.panes .pane-section .pane-item td.value,.panes .pane-section tr .pane-cell.value,.panes .pane-section tr td.value,.panes tbody .pane-item .pane-cell.value,.panes tbody .pane-item td.value,.panes tbody tr .pane-cell.value,.panes tbody tr td.value{flex:0;margin-left:20px;word-break:break-all;flex-basis:auto}.panes .pane-section .pane-item .pane-cell.value i.icon-legend,.panes .pane-section .pane-item td.value i.icon-legend,.panes .pane-section tr .pane-cell.value i.icon-legend,.panes .pane-section tr td.value i.icon-legend,.panes tbody .pane-item .pane-cell.value i.icon-legend,.panes tbody .pane-item td.value i.icon-legend,.panes tbody tr .pane-cell.value i.icon-legend,.panes tbody tr td.value i.icon-legend{font-size:10px;margin-right:10px}.panes .pane-section .pane-item .pane-cell.value i.icon-value,.panes .pane-section .pane-item td.value i.icon-value,.panes .pane-section tr .pane-cell.value i.icon-value,.panes .pane-section tr td.value i.icon-value,.panes tbody .pane-item .pane-cell.value i.icon-value,.panes tbody .pane-item td.value i.icon-value,.panes tbody tr .pane-cell.value i.icon-value,.panes tbody tr td.value i.icon-value{padding:2px 2px 1px;border-radius:2px;width:16px;text-align:center}.panes .pane-section .pane-item.title-item,.panes .pane-section tr.title-item,.panes tbody .pane-item.title-item,.panes tbody tr.title-item{border-bottom:1px solid #222}.panes .pane-section .pane-item.title-item td,.panes .pane-section tr.title-item td,.panes tbody .pane-item.title-item td,.panes tbody tr.title-item td{color:#027bffe6;font-size:16px;font-weight:700}.panes .pane-section .pane-item.title-item td i,.panes .pane-section tr.title-item td i,.panes tbody .pane-item.title-item td i,.panes tbody tr.title-item td i{margin-right:10px}.panes .pane-section .pane-item.title-item td .more,.panes .pane-section tr.title-item td .more,.panes tbody .pane-item.title-item td .more,.panes tbody tr.title-item td .more{flex:1;text-align:right;font-size:12px;color:#888;font-weight:400;font-style:italic}.panes .pane-section .pane-item.variable-item,.panes .pane-section tr.variable-item,.panes tbody .pane-item.variable-item,.panes tbody tr.variable-item{cursor:pointer}.panes .pane-section .pane-item.variable-item:hover,.panes .pane-section tr.variable-item:hover,.panes tbody .pane-item.variable-item:hover,.panes tbody tr.variable-item:hover{background-color:#027bff0d}.panes .pane-section .pane-item.variable-item:hover td,.panes .pane-section tr.variable-item:hover td,.panes tbody .pane-item.variable-item:hover td,.panes tbody tr.variable-item:hover td{font-weight:700;color:#fff}.panes .pane-section .pane-item.variable-item:hover td i.icon-legend,.panes .pane-section tr.variable-item:hover td i.icon-legend,.panes tbody .pane-item.variable-item:hover td i.icon-legend,.panes tbody tr.variable-item:hover td i.icon-legend{color:#fff}.panes .pane-section .pane-item.variable-item:hover td span,.panes .pane-section .pane-item.variable-item:hover td i.icon-value,.panes .pane-section tr.variable-item:hover td span,.panes .pane-section tr.variable-item:hover td i.icon-value,.panes tbody .pane-item.variable-item:hover td span,.panes tbody .pane-item.variable-item:hover td i.icon-value,.panes tbody tr.variable-item:hover td span,.panes tbody tr.variable-item:hover td i.icon-value{background-color:#ffffff4d;color:#fff}.panes .pane-section .pane-item.variable-item:hover td.description,.panes .pane-section tr.variable-item:hover td.description,.panes tbody .pane-item.variable-item:hover td.description,.panes tbody tr.variable-item:hover td.description{color:#027bff}.tiles{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;align-self:stretch}.tiles .tiles-inner{display:flex;flex:1;flex-direction:column;flex-wrap:nowrap;justify-content:flex-start;align-items:flex-start;align-self:stretch;padding:2px}.tiles .tiles-inner .tile-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#fff;margin:1px;padding:15px 10px 15px 15px;border-radius:4px;border-bottom:1px solid transparent}.tiles .tiles-inner .tile-item:hover,.tiles .tiles-inner .tile-item.active{border-left:4px solid rgb(2,123,255);border-radius:4px;border-bottom:2px solid #171717;background:#222;color:#027bff}.tiles .tiles-inner .tile-item:hover:hover,.tiles .tiles-inner .tile-item.active:hover{opacity:1}.tiles .tiles-inner .tile-item:hover.disabled,.tiles .tiles-inner .tile-item.active.disabled{border-left-color:#444;color:#fff}.tiles .tiles-inner .tile-item:hover.starred,.tiles .tiles-inner .tile-item.active.starred{border-left-color:#e5a123;color:#e5a123}.tiles .tiles-inner .tile-item:hover.starred .tile-tail .head-icon i,.tiles .tiles-inner .tile-item.active.starred .tile-tail .head-icon i{opacity:1;color:#e5a123;font-size:8px}.tiles .tiles-inner .tile-item.starred .tile-tail .head-icon i{font-size:8px;color:#e5a123}.tiles .tiles-inner .tile-item.disabled .tile-body{opacity:.3}.tiles .tiles-inner .tile-item.disabled .tile-tail .head-icon i{color:#444;opacity:.4}.tiles .tiles-inner .tile-item .tile-tail{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin-left:10px;min-width:10px}.tiles .tiles-inner .tile-item .tile-tail .head-icon{flex:1;display:flex;text-align:right;flex-direction:row;justify-content:center;align-items:center;align-self:stretch}.tiles .tiles-inner .tile-item .tile-tail .head-icon i{font-size:6px;display:flex}.tiles .tiles-inner .tile-item .tile-tail .status-icons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.tiles .tiles-inner .tile-item .tile-tail .status-icons i{font-size:16px;margin-left:10px}.tiles .tiles-inner .tile-item .tile-body{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;font-size:15px;font-weight:400;letter-spacing:.8px;line-height:22px;margin:0;flex-wrap:nowrap}.tiles .tiles-inner .tile-item .tile-body i{font-size:8px;margin-right:5px}.tiles .tiles-inner .tile-item .tile-metrics{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin:0}.tiles .tiles-inner .tile-item .tile-metrics .foot-span span,.tiles .tiles-inner .tile-item .tile-metrics .foot-span{opacity:.8;font-size:13px;font-family:Courier New}span.empty{background:#e5a1234d;color:#e5a123;text-transform:lowercase;border-radius:2px;padding:2px 4px;font-weight:700}.inner-empty{display:flex;flex:1;flex-direction:column;align-self:stretch;justify-content:center;align-items:center}.inner-empty i{font-size:90px;opacity:.3;text-shadow:0 -1px #333,0 0px .5px #444}.toggle{position:relative;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.toggle input{display:none}.toggle input:checked+label{background:#027bff;border:1px solid rgba(255,255,255,.1);box-shadow:0 2px 2px #222 inset}.toggle input:checked+label:after{content:"";display:block;border-radius:50%;margin-left:21px;width:18px;height:18px;transition:.2s;background:#9bcbff;box-shadow:0 2px #0063ce}.toggle label{width:44px;height:26px;border-radius:15px;background:#222;cursor:pointer;border:1px solid rgba(255,255,255,.1);box-shadow:0 2px 2px #111 inset}.toggle label:after{content:"";display:block;border-radius:50%;width:18px;height:18px;margin:3px;background:#777;box-shadow:0 2px #555555e6;transition:.2s}.form-holder{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.form-holder form{max-width:434px}form{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}form .alert{padding:8px 15px;font-size:14px;margin:0 0 25px}.form-group{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;width:100%;flex:1;margin-bottom:20px}.form-group label{flex:1;font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.form-group label.btn-upload{color:#fff;font-size:14px;flex:0;flex-basis:auto;margin-top:5px}.form-group label.btn-upload input[type=file]{display:none}.form-group label.btn-upload input[type=text]{margin-bottom:2px;margin-left:10px}.form-group label.btn-upload span.btn{padding-right:20px}.form-group label.btn-upload i{margin-left:3px;margin-right:10px}.form-group .widget{margin-top:10px;align-self:stretch;display:flex;flex-direction:row}.form-group .widget .btn{margin-left:10px}.form-group .widget.widget-unit select,.form-group .widget.widget-unit input{flex-grow:0;background:none;box-shadow:none;border:none;border-bottom:1px solid #333;border-radius:0;max-width:80px;padding-left:0;color:#fff;text-align:center}.form-group .widget.widget-unit span{font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-left:5px;color:#555}.form-group .widget div{color:#ffffffb3;font-size:14px}.form-group .widget select,.form-group .widget input,.form-group .widget textarea{outline:none;padding:8px 0 5px 8px;border-radius:2px;border:1px solid rgba(255,255,255,.05);flex:1;background:#555;box-shadow:0 2px 1px #444,0 4px 2px #333 inset;color:#ddd;font-size:14px}.form-group .widget select.input-naked,.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.input-naked,.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.input-naked,.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{color:#555;background:none;box-shadow:none;border:none;border-bottom:1px solid #333;border-radius:0}.form-group .widget select.input-naked,.form-group .widget input.input-naked,.form-group .widget textarea.input-naked{padding-left:0;color:#bbb}.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{border:none;background:#000;border-radius:4px;padding-left:10px}.form-group.tab-select{border-bottom:1px solid #444;display:flex;flex-direction:row;position:relative;height:48px;padding:48px 0 0;flex:0;flex-basis:auto}.form-group.tab-select .widget{height:49px;margin-top:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;position:absolute;top:0;left:0;border-bottom:2px solid rgb(2,123,255);color:#027bff}.form-group.tab-select .widget select{border:none;background:none;box-shadow:none;padding:10px 35px 10px 10px;margin:0;color:inherit;appearance:none;-moz-appearance:none;-webkit-appearance:none;text-align:left;font-weight:700;cursor:pointer;border-radius:4px 4px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;z-index:2}.form-group.tab-select .widget i{margin-left:10px;margin-right:0}.form-group.tab-select .widget i.triangle{margin-top:-4px;margin-left:0;position:absolute;right:10px}.form-group.form-group-horizontal{margin:10px 0 20px;flex-direction:row;justify-content:flex-start;align-items:center}.form-group.form-group-horizontal .widget{margin:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.actions{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin:20px 0 0}.actions.actions-intermediate{margin:0}.actions button{margin-left:25px}.actions.actions-left{justify-content:flex-start}.actions.actions-left .btn{margin-left:0;margin-right:25px}.actions.actions-right{justify-content:flex-end}.actions.actions-right .btn{margin-left:10px;margin-right:0}.actions.actions-center{justify-content:center}.actions.actions-center .btn{margin-left:0;margin-right:0}.view-content-list main .main-container .page-content .inner{padding-bottom:10px}.view-content-list main .main-container .content-object-input{margin-bottom:6px}.view-content-list.dragover main .main-container .inner .dropzone{border-radius:4px;background:#ffffff1a;border:1px dashed rgba(255,255,255,.5)}.view-content-edit main .main-container .bottom-content .page-content{flex:1}.view-content-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px;flex:1}.view-content-edit main .main-container .bottom-content .page-panel.right-panel{flex:2;align-self:stretch;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start;align-items:center;padding:20px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3{color:#fff;padding:10px 10px 10px 0;margin-bottom:20px;font-size:16px;align-self:stretch;margin-left:-8px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 span{border-width:1px;border-style:solid;border-radius:4px;padding:4px 10px;margin-left:5px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 i{font-size:16px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper{display:flex;flex-direction:column;width:100%;position:relative;padding-top:56.25%;overflow:hidden;border-radius:4px;outline:4px solid rgba(255,255,255,.1)}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.view-logs-list main .main-container .bottom-content .page-content .inner{padding-top:8px;padding-bottom:8px}.view-logs-list main .main-container .bottom-content .page-content .logs{flex:1;display:flex;flex-direction:column;align-self:stretch}.view-logs-list main .main-container .bottom-content .page-content .logs pre{flex:1;background:#000000e6;border:1px solid rgba(85,85,85,.5);border-radius:4px;font-family:monospace;color:#f2f2f2;padding:20px;overflow:auto;align-self:stretch}.view-node-player-edit main .main-container .bottom-content .page-content{flex:1}.view-node-player-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px}.view-player-group-list main .main-container .players-holder ul.players{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #222;border-radius:4px;padding:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .head{display:flex;flex-direction:column;justify-content:center;align-items:center;color:#999;font-size:10px;padding:10px;cursor:default}.view-player-group-list main .main-container .players-holder ul.players li.player-item:hover .infos .title{color:#fff}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px;flex:1;max-width:180px;background:#000;border:1px solid #333;border-radius:4px;padding:3px 7px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .title{font-size:13px;color:#aaa;display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body{display:block;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#1b1b1b;padding:10px;align-self:stretch;flex:1;border-radius:4px;color:#ccc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px;font-size:12px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body span{opacity:.5;margin-right:7px;font-size:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a{color:#fff}.view-playlist-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.view-playlist-list main .main-container .modal-playlist-qrcode h2{text-align:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic{text-align:center;display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic img{border:4px solid #555;border-radius:4px}.view-playlist-list main .main-container .modal-slide h2{font-size:20px}.view-playlist-list main .main-container .modal-slide input[disabled]{color:#aaa}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select{margin-right:5px}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input{font-size:12px;max-width:50%}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input.datetimepicker{margin-left:5px;padding-left:0}.view-playlist-list main .main-container .bottom-content .page-content{flex:1}.view-playlist-list main .main-container .bottom-content .page-content.with-right-panel{flex:.5}.view-playlist-list main .main-container .bottom-content .page-content .inner{padding:0}.view-playlist-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#ddd;text-decoration:none;margin:0 0 20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder{margin:20px 20px 20px 10px;flex:1}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder{margin:20px 0 0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder form{max-width:initial}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder .form-group{flex-grow:0;margin-bottom:5px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#fff;padding-bottom:10px;text-decoration:none}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4.divide{border-top:1px solid #222;margin-top:20px;padding-top:20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic{margin-top:10px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic img{border:1px dashed #555;padding:5px;border-radius:4px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview{background:#000;border:1px solid rgba(255,255,255,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview iframe{flex:1;align-self:stretch}.view-playlist-list main .main-container .bottom-content .page-content .inner .slides-holder{align-self:stretch;border-right:1px solid #222;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-playlist-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-player-group-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.view-player-group-list main .main-container .bottom-content .page-content{flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner{padding:0}.view-player-group-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#ddd;text-decoration:none;margin:0 0 20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder{margin:20px 20px 20px 10px;flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder{margin:20px 0 0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder form{max-width:initial}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder .form-group{flex-grow:0;margin-bottom:15px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#fff;padding-bottom:10px;text-decoration:none}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4.divide{border-top:1px solid #222;margin-top:20px;padding-top:20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview{background:#000;border:1px solid rgba(255,255,255,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview iframe{flex:1;align-self:stretch}.view-player-group-list main .main-container .bottom-content .page-content .inner .players-holder{align-self:stretch;border-right:1px solid #222;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-player-group-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-playlist-list main .main-container .page-content .inner h3.divide{margin-top:50px}.view-playlist-list main .main-container .slides-holder ul.slides{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #222;border-radius:4px;padding:10px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .title{color:#333}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .type i{color:#333!important}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .body{opacity:0}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort{display:flex;flex-direction:column;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a{color:#999;font-size:10px;padding:10px;cursor:move}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a:hover{color:#027bff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px;flex:1;max-width:120px;background:#000;border:1px solid #333;border-radius:4px;padding:3px 7px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos:hover .title{color:#fff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .title{display:block;word-break:break-all;font-size:13px;color:#aaa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#1b1b1b;padding:10px;align-self:stretch;flex:1;border-radius:4px;font-size:13px;color:#fff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;max-width:315px;overflow-x:auto;white-space:nowrap}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-bottom:8px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .prefix,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .prefix{margin-left:5px;margin-right:5px;font-size:12px;color:#ddd}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .cron-description,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .cron-description{display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-left:5px;font-size:10px;opacity:.5}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a{color:#fff}.view-plugins-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-settings-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list .reboot{color:#ccc}.view-login main .main-container{position:relative}.view-login main .main-container .alert{position:absolute;top:0;left:0;right:0}.view-login main .main-container .login-content{display:flex;flex:1;flex-direction:column;justify-content:center;align-items:center}.view-login main .main-container .login-content .form-holder{width:400px;display:flex;justify-content:center;align-items:center;align-self:stretch;margin-left:auto;margin-right:auto}.view-login main .main-container .login-content .form-holder .card{display:flex;justify-content:center;align-items:center;align-self:stretch;border-radius:6px;padding:50px;color:#333}.view-login main .main-container .login-content .form-holder .card form{padding:0;flex:1;display:flex;justify-content:center;align-items:center;align-self:stretch}.view-login main .main-container .login-content .form-holder .card form .actions{margin-top:10px}.view-login main .main-container .login-content .form-holder .card form .actions .btn{padding-left:20px;padding-right:20px}.view-auth-user-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item.disabled .tile-body{opacity:.3;text-decoration-line:line-through}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item .tile-tail a:last-child{margin-left:10px} +.warning{color:#e56723!important}.bg-warning{background-color:#e56723!important}.border-warning{border-color:#e56723!important}.info{color:#027bff!important}.bg-info{background-color:#027bff!important}.border-info{border-color:#027bff!important}.info-alt{color:#075cb7!important}.bg-info-alt{background-color:#075cb7!important}.border-info-alt{border-color:#075cb7!important}.success{color:#0eef5f!important}.bg-success{background-color:#0eef5f!important}.border-success{border-color:#0eef5f!important}.success-alt{color:#11a948!important}.bg-success-alt{background-color:#11a948!important}.border-success-alt{border-color:#11a948!important}.error{color:#ef0e5d!important}.bg-error{background-color:#ef0e5d!important}.border-error{border-color:#ef0e5d!important}.error-alt{color:#c20941!important}.bg-error-alt{background-color:#c20941!important}.border-error-alt{border-color:#c20941!important}.danger{color:#ef0e5d!important}.bg-danger{background-color:#ef0e5d!important}.border-danger{border-color:#ef0e5d!important}.danger-alt{color:#c20941!important}.bg-danger-alt{background-color:#c20941!important}.border-danger-alt{border-color:#c20941!important}.purple{color:#bc48ff!important}.bg-purple{background-color:#bc48ff!important}.border-purple{border-color:#bc48ff!important}.purple-alt{color:#692fbd!important}.bg-purple-alt{background-color:#692fbd!important}.border-purple-alt{border-color:#692fbd!important}.neutral{color:#464646!important}.bg-neutral{background-color:#464646!important}.border-neutral{border-color:#464646!important}.yellow{color:#e5a123!important}.bg-yellow{background-color:#e5a123!important}.border-yellow{border-color:#e5a123!important}.white{color:#fff!important}.bg-white{background-color:#fff!important}.border-white{border-color:#fff!important}.black{color:#000!important}.bg-black{background-color:#000!important}.border-black{border-color:#000!important}.youtube{color:#fd3c01!important}.bg-youtube{background-color:#fd3c01!important}.border-youtube{border-color:#fd3c01!important}.raspbian{color:#b61240!important}.bg-raspbian{background-color:#b61240!important}.border-raspbian{border-color:#b61240!important}.windows{color:#12a7e3!important}.bg-windows{background-color:#12a7e3!important}.border-windows{border-color:#12a7e3!important}.macos{color:#b3bcc2!important}.bg-macos{background-color:#b3bcc2!important}.border-macos{border-color:#b3bcc2!important}.debian{color:#cf084e!important}.bg-debian{background-color:#cf084e!important}.border-debian{border-color:#cf084e!important}.fedora{color:#52a2da!important}.bg-fedora{background-color:#52a2da!important}.border-fedora{border-color:#52a2da!important}.ubuntu{color:#d64514!important}.bg-ubuntu{background-color:#d64514!important}.border-ubuntu{border-color:#d64514!important}.suse{color:#6fb425!important}.bg-suse{background-color:#6fb425!important}.border-suse{border-color:#6fb425!important}.redhat{color:#c60200!important}.bg-redhat{background-color:#c60200!important}.border-redhat{border-color:#c60200!important}.centos{color:#9b4c88!important}.bg-centos{background-color:#9b4c88!important}.border-centos{border-color:#9b4c88!important}.other{color:#e5a123!important}.bg-other{background-color:#e5a123!important}.border-other{border-color:#e5a123!important}button.btn-warning,.btn.btn-warning{background:#e56723;box-shadow:0 2px #913e11}button.btn-warning:hover,.btn.btn-warning:hover{box-shadow:0 2px 0 1px #913e11 inset}button.btn-warning:focus,.btn.btn-warning:focus{background:#913e11}button.btn-wire-warning,.btn.btn-wire-warning{background:transparent;box-shadow:none;border:2px solid rgb(229,103,35);color:#fffc}button.btn-wire-warning i.btn-match,.btn.btn-wire-warning i.btn-match{color:#e56723}button.btn-wire-warning:hover,.btn.btn-wire-warning:hover{background:#e567230d;border-color:#be5117;color:#be5117;box-shadow:none}button.btn-wire-warning:focus,.btn.btn-wire-warning:focus{border-color:#913e11;background:transparent}button.btn-info,.btn.btn-info{background:#027bff;box-shadow:0 2px #004a9b}button.btn-info:hover,.btn.btn-info:hover{box-shadow:0 2px 0 1px #004a9b inset}button.btn-info:focus,.btn.btn-info:focus{background:#004a9b}button.btn-wire-info,.btn.btn-wire-info{background:transparent;box-shadow:none;border:2px solid rgb(2,123,255);color:#fffc}button.btn-wire-info i.btn-match,.btn.btn-wire-info i.btn-match{color:#027bff}button.btn-wire-info:hover,.btn.btn-wire-info:hover{background:#027bff0d;border-color:#0063ce;color:#0063ce;box-shadow:none}button.btn-wire-info:focus,.btn.btn-wire-info:focus{border-color:#004a9b;background:transparent}button.btn-info-alt,.btn.btn-info-alt{background:#075cb7;box-shadow:0 2px #032b55}button.btn-info-alt:hover,.btn.btn-info-alt:hover{box-shadow:0 2px 0 1px #032b55 inset}button.btn-info-alt:focus,.btn.btn-info-alt:focus{background:#032b55}button.btn-wire-info-alt,.btn.btn-wire-info-alt{background:transparent;box-shadow:none;border:2px solid rgb(7,92,183);color:#fffc}button.btn-wire-info-alt i.btn-match,.btn.btn-wire-info-alt i.btn-match{color:#075cb7}button.btn-wire-info-alt:hover,.btn.btn-wire-info-alt:hover{background:#075cb70d;border-color:#054386;color:#054386;box-shadow:none}button.btn-wire-info-alt:focus,.btn.btn-wire-info-alt:focus{border-color:#032b55;background:transparent}button.btn-success,.btn.btn-success{background:#0eef5f;box-shadow:0 2px #088f39}button.btn-success:hover,.btn.btn-success:hover{box-shadow:0 2px 0 1px #088f39 inset}button.btn-success:focus,.btn.btn-success:focus{background:#088f39}button.btn-wire-success,.btn.btn-wire-success{background:transparent;box-shadow:none;border:2px solid rgb(14,239,95);color:#fffc}button.btn-wire-success i.btn-match,.btn.btn-wire-success i.btn-match{color:#0eef5f}button.btn-wire-success:hover,.btn.btn-wire-success:hover{background:#0eef5f0d;border-color:#0bbf4c;color:#0bbf4c;box-shadow:none}button.btn-wire-success:focus,.btn.btn-wire-success:focus{border-color:#088f39;background:transparent}button.btn-success-alt,.btn.btn-success-alt{background:#11a948;box-shadow:0 2px #084c21}button.btn-success-alt:hover,.btn.btn-success-alt:hover{box-shadow:0 2px 0 1px #084c21 inset}button.btn-success-alt:focus,.btn.btn-success-alt:focus{background:#084c21}button.btn-wire-success-alt,.btn.btn-wire-success-alt{background:transparent;box-shadow:none;border:2px solid rgb(17,169,72);color:#fffc}button.btn-wire-success-alt i.btn-match,.btn.btn-wire-success-alt i.btn-match{color:#11a948}button.btn-wire-success-alt:hover,.btn.btn-wire-success-alt:hover{background:#11a9480d;border-color:#0c7b34;color:#0c7b34;box-shadow:none}button.btn-wire-success-alt:focus,.btn.btn-wire-success-alt:focus{border-color:#084c21;background:transparent}button.btn-error,.btn.btn-error{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-error:hover,.btn.btn-error:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-error:focus,.btn.btn-error:focus{background:#8f0838}button.btn-wire-error,.btn.btn-wire-error{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#fffc}button.btn-wire-error i.btn-match,.btn.btn-wire-error i.btn-match{color:#ef0e5d}button.btn-wire-error:hover,.btn.btn-wire-error:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-error:focus,.btn.btn-wire-error:focus{border-color:#8f0838;background:transparent}button.btn-error-alt,.btn.btn-error-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-error-alt:hover,.btn.btn-error-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-error-alt:focus,.btn.btn-error-alt:focus{background:#610420}button.btn-wire-error-alt,.btn.btn-wire-error-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#fffc}button.btn-wire-error-alt i.btn-match,.btn.btn-wire-error-alt i.btn-match{color:#c20941}button.btn-wire-error-alt:hover,.btn.btn-wire-error-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-error-alt:focus,.btn.btn-wire-error-alt:focus{border-color:#610420;background:transparent}button.btn-danger,.btn.btn-danger{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-danger:hover,.btn.btn-danger:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-danger:focus,.btn.btn-danger:focus{background:#8f0838}button.btn-wire-danger,.btn.btn-wire-danger{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#fffc}button.btn-wire-danger i.btn-match,.btn.btn-wire-danger i.btn-match{color:#ef0e5d}button.btn-wire-danger:hover,.btn.btn-wire-danger:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-danger:focus,.btn.btn-wire-danger:focus{border-color:#8f0838;background:transparent}button.btn-danger-alt,.btn.btn-danger-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-danger-alt:hover,.btn.btn-danger-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-danger-alt:focus,.btn.btn-danger-alt:focus{background:#610420}button.btn-wire-danger-alt,.btn.btn-wire-danger-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#fffc}button.btn-wire-danger-alt i.btn-match,.btn.btn-wire-danger-alt i.btn-match{color:#c20941}button.btn-wire-danger-alt:hover,.btn.btn-wire-danger-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-danger-alt:focus,.btn.btn-wire-danger-alt:focus{border-color:#610420;background:transparent}button.btn-purple,.btn.btn-purple{background:#bc48ff;box-shadow:0 2px #8f00e1}button.btn-purple:hover,.btn.btn-purple:hover{box-shadow:0 2px 0 1px #8f00e1 inset}button.btn-purple:focus,.btn.btn-purple:focus{background:#8f00e1}button.btn-wire-purple,.btn.btn-wire-purple{background:transparent;box-shadow:none;border:2px solid rgb(188,72,255);color:#fffc}button.btn-wire-purple i.btn-match,.btn.btn-wire-purple i.btn-match{color:#bc48ff}button.btn-wire-purple:hover,.btn.btn-wire-purple:hover{background:#bc48ff0d;border-color:#a915ff;color:#a915ff;box-shadow:none}button.btn-wire-purple:focus,.btn.btn-wire-purple:focus{border-color:#8f00e1;background:transparent}button.btn-purple-alt,.btn.btn-purple-alt{background:#692fbd;box-shadow:0 2px #3c1b6b}button.btn-purple-alt:hover,.btn.btn-purple-alt:hover{box-shadow:0 2px 0 1px #3c1b6b inset}button.btn-purple-alt:focus,.btn.btn-purple-alt:focus{background:#3c1b6b}button.btn-wire-purple-alt,.btn.btn-wire-purple-alt{background:transparent;box-shadow:none;border:2px solid rgb(105,47,189);color:#fffc}button.btn-wire-purple-alt i.btn-match,.btn.btn-wire-purple-alt i.btn-match{color:#692fbd}button.btn-wire-purple-alt:hover,.btn.btn-wire-purple-alt:hover{background:#692fbd0d;border-color:#522594;color:#522594;box-shadow:none}button.btn-wire-purple-alt:focus,.btn.btn-wire-purple-alt:focus{border-color:#3c1b6b;background:transparent}button.btn-neutral,.btn.btn-neutral{background:#464646;box-shadow:0 2px #131313}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #131313 inset}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#131313}button.btn-wire-neutral,.btn.btn-wire-neutral{background:transparent;box-shadow:none;border:2px solid rgb(70,70,70);color:#fffc}button.btn-wire-neutral i.btn-match,.btn.btn-wire-neutral i.btn-match{color:#464646}button.btn-wire-neutral:hover,.btn.btn-wire-neutral:hover{background:#4646460d;border-color:#2d2d2d;color:#2d2d2d;box-shadow:none}button.btn-wire-neutral:focus,.btn.btn-wire-neutral:focus{border-color:#131313;background:transparent}button.btn-yellow,.btn.btn-yellow{background:#e5a123;box-shadow:0 2px #916411}button.btn-yellow:hover,.btn.btn-yellow:hover{box-shadow:0 2px 0 1px #916411 inset}button.btn-yellow:focus,.btn.btn-yellow:focus{background:#916411}button.btn-wire-yellow,.btn.btn-wire-yellow{background:transparent;box-shadow:none;border:2px solid rgb(229,161,35);color:#fffc}button.btn-wire-yellow i.btn-match,.btn.btn-wire-yellow i.btn-match{color:#e5a123}button.btn-wire-yellow:hover,.btn.btn-wire-yellow:hover{background:#e5a1230d;border-color:#be8417;color:#be8417;box-shadow:none}button.btn-wire-yellow:focus,.btn.btn-wire-yellow:focus{border-color:#916411;background:transparent}button.btn-white,.btn.btn-white{background:#fff;box-shadow:0 2px #ccc}button.btn-white:hover,.btn.btn-white:hover{box-shadow:0 2px 0 1px #ccc inset}button.btn-white:focus,.btn.btn-white:focus{background:#ccc}button.btn-wire-white,.btn.btn-wire-white{background:transparent;box-shadow:none;border:2px solid rgb(255,255,255);color:#fffc}button.btn-wire-white i.btn-match,.btn.btn-wire-white i.btn-match{color:#fff}button.btn-wire-white:hover,.btn.btn-wire-white:hover{background:#ffffff0d;border-color:#e6e6e6;color:#e6e6e6;box-shadow:none}button.btn-wire-white:focus,.btn.btn-wire-white:focus{border-color:#ccc;background:transparent}button.btn-black,.btn.btn-black{background:#000;box-shadow:0 2px #000}button.btn-black:hover,.btn.btn-black:hover{box-shadow:0 2px 0 1px #000 inset}button.btn-black:focus,.btn.btn-black:focus{background:#000}button.btn-wire-black,.btn.btn-wire-black{background:transparent;box-shadow:none;border:2px solid rgb(0,0,0);color:#fffc}button.btn-wire-black i.btn-match,.btn.btn-wire-black i.btn-match{color:#000}button.btn-wire-black:hover,.btn.btn-wire-black:hover{background:#0000000d;border-color:#000;color:#000;box-shadow:none}button.btn-wire-black:focus,.btn.btn-wire-black:focus{border-color:#000;background:transparent}button.btn-youtube,.btn.btn-youtube{background:#fd3c01;box-shadow:0 2px #972401}button.btn-youtube:hover,.btn.btn-youtube:hover{box-shadow:0 2px 0 1px #972401 inset}button.btn-youtube:focus,.btn.btn-youtube:focus{background:#972401}button.btn-wire-youtube,.btn.btn-wire-youtube{background:transparent;box-shadow:none;border:2px solid rgb(253,60,1);color:#fffc}button.btn-wire-youtube i.btn-match,.btn.btn-wire-youtube i.btn-match{color:#fd3c01}button.btn-wire-youtube:hover,.btn.btn-wire-youtube:hover{background:#fd3c010d;border-color:#ca3001;color:#ca3001;box-shadow:none}button.btn-wire-youtube:focus,.btn.btn-wire-youtube:focus{border-color:#972401;background:transparent}button.btn-raspbian,.btn.btn-raspbian{background:#b61240;box-shadow:0 2px #59091f}button.btn-raspbian:hover,.btn.btn-raspbian:hover{box-shadow:0 2px 0 1px #59091f inset}button.btn-raspbian:focus,.btn.btn-raspbian:focus{background:#59091f}button.btn-wire-raspbian,.btn.btn-wire-raspbian{background:transparent;box-shadow:none;border:2px solid rgb(182,18,64);color:#fffc}button.btn-wire-raspbian i.btn-match,.btn.btn-wire-raspbian i.btn-match{color:#b61240}button.btn-wire-raspbian:hover,.btn.btn-wire-raspbian:hover{background:#b612400d;border-color:#880d30;color:#880d30;box-shadow:none}button.btn-wire-raspbian:focus,.btn.btn-wire-raspbian:focus{border-color:#59091f;background:transparent}button.btn-windows,.btn.btn-windows{background:#12a7e3;box-shadow:0 2px #0b6184}button.btn-windows:hover,.btn.btn-windows:hover{box-shadow:0 2px 0 1px #0b6184 inset}button.btn-windows:focus,.btn.btn-windows:focus{background:#0b6184}button.btn-wire-windows,.btn.btn-wire-windows{background:transparent;box-shadow:none;border:2px solid rgb(18,167,227);color:#fffc}button.btn-wire-windows i.btn-match,.btn.btn-wire-windows i.btn-match{color:#12a7e3}button.btn-wire-windows:hover,.btn.btn-wire-windows:hover{background:#12a7e30d;border-color:#0e84b4;color:#0e84b4;box-shadow:none}button.btn-wire-windows:focus,.btn.btn-wire-windows:focus{border-color:#0b6184;background:transparent}button.btn-macos,.btn.btn-macos{background:#b3bcc2;box-shadow:0 2px #7a8a95}button.btn-macos:hover,.btn.btn-macos:hover{box-shadow:0 2px 0 1px #7a8a95 inset}button.btn-macos:focus,.btn.btn-macos:focus{background:#7a8a95}button.btn-wire-macos,.btn.btn-wire-macos{background:transparent;box-shadow:none;border:2px solid rgb(179,188,194);color:#fffc}button.btn-wire-macos i.btn-match,.btn.btn-wire-macos i.btn-match{color:#b3bcc2}button.btn-wire-macos:hover,.btn.btn-wire-macos:hover{background:#b3bcc20d;border-color:#97a3ab;color:#97a3ab;box-shadow:none}button.btn-wire-macos:focus,.btn.btn-wire-macos:focus{border-color:#7a8a95;background:transparent}button.btn-debian,.btn.btn-debian{background:#cf084e;box-shadow:0 2px #6d0429}button.btn-debian:hover,.btn.btn-debian:hover{box-shadow:0 2px 0 1px #6d0429 inset}button.btn-debian:focus,.btn.btn-debian:focus{background:#6d0429}button.btn-wire-debian,.btn.btn-wire-debian{background:transparent;box-shadow:none;border:2px solid rgb(207,8,78);color:#fffc}button.btn-wire-debian i.btn-match,.btn.btn-wire-debian i.btn-match{color:#cf084e}button.btn-wire-debian:hover,.btn.btn-wire-debian:hover{background:#cf084e0d;border-color:#9e063b;color:#9e063b;box-shadow:none}button.btn-wire-debian:focus,.btn.btn-wire-debian:focus{border-color:#6d0429;background:transparent}button.btn-fedora,.btn.btn-fedora{background:#52a2da;box-shadow:0 2px #236ea3}button.btn-fedora:hover,.btn.btn-fedora:hover{box-shadow:0 2px 0 1px #236ea3 inset}button.btn-fedora:focus,.btn.btn-fedora:focus{background:#236ea3}button.btn-wire-fedora,.btn.btn-wire-fedora{background:transparent;box-shadow:none;border:2px solid rgb(82,162,218);color:#fffc}button.btn-wire-fedora i.btn-match,.btn.btn-wire-fedora i.btn-match{color:#52a2da}button.btn-wire-fedora:hover,.btn.btn-wire-fedora:hover{background:#52a2da0d;border-color:#2c8bcd;color:#2c8bcd;box-shadow:none}button.btn-wire-fedora:focus,.btn.btn-wire-fedora:focus{border-color:#236ea3;background:transparent}button.btn-ubuntu,.btn.btn-ubuntu{background:#d64514;box-shadow:0 2px #79270b}button.btn-ubuntu:hover,.btn.btn-ubuntu:hover{box-shadow:0 2px 0 1px #79270b inset}button.btn-ubuntu:focus,.btn.btn-ubuntu:focus{background:#79270b}button.btn-wire-ubuntu,.btn.btn-wire-ubuntu{background:transparent;box-shadow:none;border:2px solid rgb(214,69,20);color:#fffc}button.btn-wire-ubuntu i.btn-match,.btn.btn-wire-ubuntu i.btn-match{color:#d64514}button.btn-wire-ubuntu:hover,.btn.btn-wire-ubuntu:hover{background:#d645140d;border-color:#a73610;color:#a73610;box-shadow:none}button.btn-wire-ubuntu:focus,.btn.btn-wire-ubuntu:focus{border-color:#79270b;background:transparent}button.btn-suse,.btn.btn-suse{background:#6fb425;box-shadow:0 2px #3b5f14}button.btn-suse:hover,.btn.btn-suse:hover{box-shadow:0 2px 0 1px #3b5f14 inset}button.btn-suse:focus,.btn.btn-suse:focus{background:#3b5f14}button.btn-wire-suse,.btn.btn-wire-suse{background:transparent;box-shadow:none;border:2px solid rgb(111,180,37);color:#fffc}button.btn-wire-suse i.btn-match,.btn.btn-wire-suse i.btn-match{color:#6fb425}button.btn-wire-suse:hover,.btn.btn-wire-suse:hover{background:#6fb4250d;border-color:#558a1c;color:#558a1c;box-shadow:none}button.btn-wire-suse:focus,.btn.btn-wire-suse:focus{border-color:#3b5f14;background:transparent}button.btn-redhat,.btn.btn-redhat{background:#c60200;box-shadow:0 2px #600100}button.btn-redhat:hover,.btn.btn-redhat:hover{box-shadow:0 2px 0 1px #600100 inset}button.btn-redhat:focus,.btn.btn-redhat:focus{background:#600100}button.btn-wire-redhat,.btn.btn-wire-redhat{background:transparent;box-shadow:none;border:2px solid rgb(198,2,0);color:#fffc}button.btn-wire-redhat i.btn-match,.btn.btn-wire-redhat i.btn-match{color:#c60200}button.btn-wire-redhat:hover,.btn.btn-wire-redhat:hover{background:#c602000d;border-color:#930100;color:#930100;box-shadow:none}button.btn-wire-redhat:focus,.btn.btn-wire-redhat:focus{border-color:#600100;background:transparent}button.btn-centos,.btn.btn-centos{background:#9b4c88;box-shadow:0 2px #572a4c}button.btn-centos:hover,.btn.btn-centos:hover{box-shadow:0 2px 0 1px #572a4c inset}button.btn-centos:focus,.btn.btn-centos:focus{background:#572a4c}button.btn-wire-centos,.btn.btn-wire-centos{background:transparent;box-shadow:none;border:2px solid rgb(155,76,136);color:#fffc}button.btn-wire-centos i.btn-match,.btn.btn-wire-centos i.btn-match{color:#9b4c88}button.btn-wire-centos:hover,.btn.btn-wire-centos:hover{background:#9b4c880d;border-color:#793b6a;color:#793b6a;box-shadow:none}button.btn-wire-centos:focus,.btn.btn-wire-centos:focus{border-color:#572a4c;background:transparent}button.btn-other,.btn.btn-other{background:#e5a123;box-shadow:0 2px #916411}button.btn-other:hover,.btn.btn-other:hover{box-shadow:0 2px 0 1px #916411 inset}button.btn-other:focus,.btn.btn-other:focus{background:#916411}button.btn-wire-other,.btn.btn-wire-other{background:transparent;box-shadow:none;border:2px solid rgb(229,161,35);color:#fffc}button.btn-wire-other i.btn-match,.btn.btn-wire-other i.btn-match{color:#e5a123}button.btn-wire-other:hover,.btn.btn-wire-other:hover{background:#e5a1230d;border-color:#be8417;color:#be8417;box-shadow:none}button.btn-wire-other:focus,.btn.btn-wire-other:focus{border-color:#916411;background:transparent}.alert.alert-warning{color:#e56723;background:#e5672333}.alert.alert-info{color:#027bff;background:#027bff33}.alert.alert-info-alt{color:#075cb7;background:#075cb733}.alert.alert-success{color:#0eef5f;background:#0eef5f33}.alert.alert-success-alt{color:#11a948;background:#11a94833}.alert.alert-error{color:#ef0e5d;background:#ef0e5d33}.alert.alert-error-alt{color:#c20941;background:#c2094133}.alert.alert-danger{color:#ef0e5d;background:#ef0e5d33}.alert.alert-danger-alt{color:#c20941;background:#c2094133}.alert.alert-purple{color:#bc48ff;background:#bc48ff33}.alert.alert-purple-alt{color:#692fbd;background:#692fbd33}.alert.alert-neutral{color:#464646;background:#46464633}.alert.alert-yellow{color:#e5a123;background:#e5a12333}.alert.alert-white{color:#fff;background:#fff3}.alert.alert-black{color:#000;background:#0003}.alert.alert-youtube{color:#fd3c01;background:#fd3c0133}.alert.alert-raspbian{color:#b61240;background:#b6124033}.alert.alert-windows{color:#12a7e3;background:#12a7e333}.alert.alert-macos{color:#b3bcc2;background:#b3bcc233}.alert.alert-debian{color:#cf084e;background:#cf084e33}.alert.alert-fedora{color:#52a2da;background:#52a2da33}.alert.alert-ubuntu{color:#d64514;background:#d6451433}.alert.alert-suse{color:#6fb425;background:#6fb42533}.alert.alert-redhat{color:#c60200;background:#c6020033}.alert.alert-centos{color:#9b4c88;background:#9b4c8833}.alert.alert-other{color:#e5a123;background:#e5a12333}@font-face{font-family:Sixtyfour;src:url(../../webfonts/Sixtyfour-Regular.ttf) format("truetype")}*{font-family: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}.horizontal{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}main{flex:1;display:flex;flex-direction:column}main .main-container{display:flex;flex-direction:column;flex:1;overflow:hidden;align-self:stretch}main .main-container .top-content{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:10px 10px 10px 15px;background:transparent;border-bottom:1px solid #222}main .main-container .top-content h1{color:#fff;font-weight:600;font-size:24px}main .main-container .top-content .top-actions{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}main .main-container .top-content .top-actions.align-right{justify-content:flex-end;margin-right:10px}main .main-container .top-content .top-actions .btn:first-child{margin-left:0!important}main .main-container .top-content .top-actions .btn,main .main-container .top-content .top-actions button{margin-left:10px}main .main-container .bottom-content{display:flex;flex-direction:row;align-self:stretch;justify-content:flex-start;align-items:flex-start;flex:1;overflow-y:auto;background:radial-gradient(circle at 0% 53%,rgba(239,14,93,.8) 10%,transparent 45%),radial-gradient(circle at 135% 53%,rgba(2,123,255,.8) 10%,transparent 95%),radial-gradient(circle at 50% 80%,rgba(14,239,95,.8) 40%,transparent 95%)}main .main-container .bottom-content .page-content{flex:2;overflow-y:auto;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;background:#000c;padding:5px}main .main-container .bottom-content .page-content .inner{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:0 10px 40px;background:#111;align-self:stretch}main .main-container .bottom-content .page-panel{flex:1;overflow-y:auto;align-self:stretch;background:#111;border-top:none}main .main-container .bottom-content .page-panel.left-panel{border-right:1px solid #222;border-left:none}main .main-container .bottom-content .page-panel.left-panel.explr-explorer{flex:.5;overflow-y:auto;padding:0;background:#111;box-shadow:1px 1px .5px .5px inset #0003;max-width:250px}main .main-container .bottom-content .page-panel.right-panel{border-left:1px solid #222;border-right:none}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center!important}.tar{text-align:right!important}a{text-decoration:none}.normal{font-weight:400!important}.bold{font-weight:700!important}.col{display:flex;flex:1;flex-direction:column;align-self:stretch}main .context-bar{padding:10px;position:sticky;top:0;z-index:1000;max-height:80px;border-bottom:1px solid #222;display:flex;flex-direction:row;align-items:center}main .context-bar .context-menu{flex:1}main .context-bar .context-menu .inner{display:flex}main .context-bar .context-menu .inner ul.pills{margin:0}main .context-bar .context-divider{width:1px;height:100%;background:#222;margin-left:20px;margin-right:20px}main .context-bar .contex-tail{margin-right:20px}main .context-bar .contex-tail .btn{margin-right:0}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;border-radius:4px;background:#aaa;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;color:#000}main .context-bar .context-user .trigger i{margin-top:-5px;margin-left:10px}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:1px solid #222;min-width:64px}menu h1.logo{margin:40px 0 0 10px;align-self:stretch;display:flex}menu h1.logo a{text-align:center;text-shadow:0px 0 0 rgb(255,255,255),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;color:#fff}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 rgb(255,255,255),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;border-radius:4px}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:4px;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;color:#fff;background:#ffffffe6;background:#027bff}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}.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;transition:all .55s cubic-bezier(.19,1,.22,1)}.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}}@keyframes shakednd{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}button,.btn{position:relative;padding:10px 10px 8px;font-size:14px;color:#fff;cursor:pointer;border:none;border-radius:4px;background:#027bff;box-shadow:0 2px #004a9b;font-weight:700;letter-spacing:-.5px;margin-top:-2px;min-width:38px;min-height:34px;text-align:center;justify-content:center}button i.icon-left,.btn i.icon-left{margin-right:5px}button:hover,.btn:hover{box-shadow:0 2px 0 1px #004a9b inset;color:#fffc}button:focus,.btn:focus{background:#004a9b;color:#ffffff80;box-shadow:none}button.btn-pixel,.btn.btn-pixel{background:#ccc;border:1px solid transparent;transition:all .55s cubic-bezier(.19,1,.22,1);text-transform:uppercase;font-size:12px;box-shadow:4px 0 #fff,0 4px #0eef5f,-4px 0 #027bff,0 -4px #ef0e5d;color:#222;overflow:hidden}button.btn-pixel:hover,.btn.btn-pixel:hover{box-shadow:6px 0 #fff,0 6px #0eef5f,-6px 0 #027bff,0 -6px #ef0e5d;text-align:center;text-shadow:4px 0 0 rgb(255,255,255),4px 2px 0 #444,0 4px 0 rgb(14,239,95),-4px 0 0 rgb(2,123,255),0 -4px 0 rgb(239,14,93);text-decoration:none;background:linear-gradient(90deg,#a0a0a0 0,#bebebe 46%,#dcdcdc);-webkit-background-clip:text;color:transparent}button.btn-neutral,.btn.btn-neutral{color:#fff;background:#555;box-shadow:0 2px #3c3c3c;border:1px solid transparent}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #222 inset;background:#3c3c3c}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#222;border:1px solid #AAA}button .btn-wire-neutral,.btn .btn-wire-neutral{background:transparent;border:2px solid #555;color:#fffc;box-shadow:none}button .btn-wire-neutral:hover,.btn .btn-wire-neutral:hover{background:#5555550d;border-color:#3c3c3c;color:#3c3c3c;box-shadow:none}button .btn-wire-neutral:focus,.btn .btn-wire-neutral:focus{border-color:#222;background:transparent}button.btn-naked,.btn.btn-naked{background:transparent;box-shadow:none;border:1px solid transparent;color:#fff}button.btn-naked:hover,.btn.btn-naked:hover{box-shadow:0 2px 0 1px #222 inset;background:#3c3c3c;color:#fff}button.btn-naked:focus,.btn.btn-naked:focus{background:#222;border:1px solid #AAA}button i.main,.btn i.main{font-size:18px}button sup,button sub,.btn sup,.btn sub{position:absolute;top:-4px;right:-4px;background:#777;border-bottom:2px solid #555;color:red;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}button sup i,button sub i,.btn sup i,.btn sub i{color:#fff;font-size:10px}button.btn-double-icon,.btn.btn-double-icon{margin-right:5px}button.disabled,.btn.disabled{cursor:default}.alert{padding:20px;align-self:stretch;display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:4px}.alert i{margin-right:13px}.alert a{color:inherit;margin-left:4px;margin-right:4px;text-decoration:underline}ul.explr-tree{height:100%!important}ul.explr-tree ul{padding-top:0!important}ul.explr-tree li{position:relative}ul.explr-tree li span{color:#555;font-size:13px;padding-left:5px;cursor:pointer}ul.explr-tree li span.explr-plus,ul.explr-tree li span.explr-minus{z-index:1}ul.explr-tree li span.explr-plus:hover,ul.explr-tree li span.explr-minus:hover{color:#aaa}ul.explr-tree li i.main{font-size:14px}ul.explr-tree li sup,ul.explr-tree li sub{position:absolute;top:0;left:5px;background:#777;border-bottom:2px solid #555;border-radius:4px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-tree li sup i,ul.explr-tree li sub i{color:#fff;font-size:4px!important;margin-bottom:0}ul.explr-tree li a{color:#fff;padding-right:80px;margin-top:2px}ul.explr-tree li a:hover{color:#fff}ul.explr-tree li a.active{background:#ffffff1a;border-radius:4px;font-weight:700;text-decoration:underline;margin-left:35px;padding-left:5px;margin-right:10px}.explr-multiselection-actions,.explr-selection-actions{display:none;flex-direction:row;justify-content:flex-end;align-items:center;flex:1}.explr-multiselection-actions button,.explr-selection-actions button{display:none}body.explr-selection-actionable .explr-selection-actions,body.explr-selection-actionable.explr-selection-folder .explr-selection-actions button.explr-selection-folder,body.explr-selection-actionable.explr-selection-entity .explr-selection-actions button.explr-selection-entity,body.explr-multiselection-actionable .explr-multiselection-actions,body.explr-multiselection-actionable.explr-multiselection-folder .explr-multiselection-actions button.explr-multiselection-folder,body.explr-multiselection-actionable.explr-multiselection-entity .explr-multiselection-actions button.explr-multiselection-entity{display:flex}.selectable-zone{flex:1;align-self:stretch;border:1px solid transparent}ul.explr-dirview{display:flex;flex-direction:row;flex-wrap:wrap}ul.explr-dirview li{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;flex-shrink:0;margin:10px;min-width:100px;min-height:130px;padding-top:5px;border:1px solid transparent;border-radius:4px}ul.explr-dirview li.renaming a span{display:none}ul.explr-dirview li.renaming a form{display:block}ul.explr-dirview li.highlight-drop{border:1px dotted rgba(2,123,255,.4);background:#027bff4d}ul.explr-dirview li.highlight-clicked{border:1px dotted rgba(255,255,255,.2);background:#ffffff1a}ul.explr-dirview li a{color:#bbb;text-decoration:none;flex:1;text-align:center;font-size:12px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;max-width:84px;min-width:84px;position:relative}ul.explr-dirview li a.with-thumbnail .img-holder{width:64px;height:64px;background:#171717;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;margin-bottom:12px}ul.explr-dirview li a.with-thumbnail .img-holder img{max-height:100%;max-width:100%}ul.explr-dirview li a.with-thumbnail i{font-size:24px;position:absolute;top:-4px;left:-4px;text-shadow:0 .5px .5px #777}ul.explr-dirview li a i{font-size:64px;margin-bottom:12px;border-radius:8px}ul.explr-dirview li a sup,ul.explr-dirview li a sub{position:absolute;top:-2px;right:0;background:#777;border-bottom:2px solid #555;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-dirview li a sup i,ul.explr-dirview li a sub i{color:#fff;font-size:10px;margin-bottom:0}ul.explr-dirview li a input{width:100%;padding:0 3px}ul.explr-dirview li a input:focus{outline:none}ul.explr-dirview li a:hover{opacity:.8}ul.explr-dirview li a form{display:none}ul.explr-dirview li.new-folder a{color:#027bff}ul.explr-dirview li.new-folder a form{display:block}ul.explr-dirview .ui-draggable-dragging{z-index:20}ul.explr-dirview .ui-draggable-dragging a{opacity:1!important}.modal-explr-picker h2{margin-top:0}.modal-explr-picker .explr-tree{width:400px;max-width:400px;max-height:300px;overflow:auto;background:#222;padding:10px 20px;border-radius:4px;margin-top:15px}.content-explr-picker{cursor:pointer}.selection-rectangle{position:absolute;border:1px solid rgb(0,153,255);background-color:#0099ff1a;pointer-events:none;z-index:1000}ul.pills{background:#222;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #0003;border:1px solid #222;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0}ul.pills li.divider{margin:0 20px;width:1px;height:100%;background:#333}ul.pills li:hover a{opacity:.9}ul.pills li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#fff;overflow:hidden;padding-right:30px;text-align:center;background:#0003;margin-right:5px;transition:all .25s cubic-bezier(.19,1,.22,1)}ul.pills li a span{display:flex;justify-content:center;align-items:center;margin-right:20px;height:42px;background:#0003;width:42px}ul.pills li.active a{color:#333;background:#ccc;font-weight:700}ul.pills li:hover a{color:#fff;background:#027bff}ul.pills li:last-child a{margin-right:0}.breadcrumb-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;border-bottom:1px solid #222;background:transparent;padding:10px}.breadcrumb-container ul.breadcrumb{background:#222;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #0003;border:1px solid #222;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0;overflow-x:auto;max-width:65vw;white-space:nowrap}.breadcrumb-container ul.breadcrumb li{display:inline-block}.breadcrumb-container ul.breadcrumb li.divider{margin:0 5px}.breadcrumb-container ul.breadcrumb li.divider i{color:#aaa}.breadcrumb-container ul.breadcrumb li span,.breadcrumb-container ul.breadcrumb li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#fff;text-align:center;padding:0 3px}.breadcrumb-container ul.breadcrumb li span i,.breadcrumb-container ul.breadcrumb li a i{margin-right:5px}.breadcrumb-container ul.breadcrumb li:hover a{color:#fff;background:#027bff}.breadcrumb-container ul.breadcrumb li:last-child a{margin-right:0}.pickers,.modals{position:fixed;background:#0006;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10000}.pickers.pickers .modals-outer .modals-inner .modal h2,.modals.pickers .modals-outer .modals-inner .modal h2{font-size:14px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.pickers .modals-outer,.modals .modals-outer{min-width:464px;display:flex;flex-direction:column;overflow:auto;padding-bottom:2px}.pickers .modals-outer .modals-inner,.modals .modals-outer .modals-inner{background:#111;border-radius:10px;color:#333;padding:40px;box-shadow:0 2px #222;border:1px solid #222}.pickers .modals-outer .modals-inner .modal h2,.modals .modals-outer .modals-inner .modal h2{padding:0;margin:0 0 30px;font-weight:400;color:#999}.pickers .modals-outer .modals-inner .modal h3,.modals .modals-outer .modals-inner .modal h3{align-self:stretch;margin:0 0 10px;font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#fff;padding-bottom:10px;text-decoration:none}.pickers .modals-outer .modals-inner .modal h3.divide,.modals .modals-outer .modals-inner .modal h3.divide{border-top:1px solid #222;margin-top:20px;padding-top:20px}.toast{visibility:hidden;min-width:250px;margin-left:-125px;background-color:#333;color:#fff;text-align:center;border-radius:4px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px;border:2px dashed #222}.toast.show{visibility:visible;-webkit-animation:fadein .5s,fadeout .5s 2.5s;animation:fadein .5s,fadeout .5s 2.5s}@-webkit-keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@-webkit-keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}@keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}body.dragover .shakeondrag{animation:shakednd .1s linear alternate infinite}.btn-super-upload-busy,.btn-super-upload{display:flex;flex-direction:row;justify-content:center;align-items:center;margin-left:10px;position:relative}.btn-super-upload-busy.btn-super-upload-busy,.btn-super-upload.btn-super-upload-busy{border:none!important}.btn-super-upload-busy .unprogress,.btn-super-upload .unprogress{display:block}.btn-super-upload-busy .progress,.btn-super-upload .progress{display:none;width:200px;height:10px;background:#666;border-radius:4px;flex-direction:row;justify-content:flex-start;align-items:center}.btn-super-upload-busy .progress .progress-bar,.btn-super-upload .progress .progress-bar{border-radius:4px;background-color:#027bff;height:100%}.btn-super-upload-busy .progress .percent,.btn-super-upload .progress .percent{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;bottom:0;top:2px;font-size:15px;color:#fff;text-shadow:0 0 2px rgb(0,0,0)}.btn-super-upload-busy.uploading .progress,.btn-super-upload.uploading .progress{display:block}.btn-super-upload-busy.uploading .unprogress,.btn-super-upload.uploading .unprogress{display:none}.panes{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.panes .pane-section,.panes tbody{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:1px 1px 28px;background:#111;border-radius:4px;border:4px solid rgba(255,255,255,.05)}.panes .pane-section:hover,.panes tbody:hover,.panes .pane-section:hover tr.title-item,.panes tbody:hover tr.title-item{border-color:#027bff0d}.panes .pane-section .pane-item,.panes .pane-section tr,.panes tbody .pane-item,.panes tbody tr{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:8px 18px;background:#222}.panes .pane-section .pane-item:nth-child(odd),.panes .pane-section tr:nth-child(odd),.panes tbody .pane-item:nth-child(odd),.panes tbody tr:nth-child(odd){background-color:#111}.panes .pane-section .pane-item:nth-child(odd) td.description,.panes .pane-section tr:nth-child(odd) td.description,.panes tbody .pane-item:nth-child(odd) td.description,.panes tbody tr:nth-child(odd) td.description{color:#ffffffb3}.panes .pane-section .pane-item:nth-child(2n),.panes .pane-section tr:nth-child(2n),.panes tbody .pane-item:nth-child(2n),.panes tbody tr:nth-child(2n){background-color:#141414}.panes .pane-section .pane-item .pane-cell,.panes .pane-section .pane-item td,.panes .pane-section tr .pane-cell,.panes .pane-section tr td,.panes tbody .pane-item .pane-cell,.panes tbody .pane-item td,.panes tbody tr .pane-cell,.panes tbody tr td{color:#888;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex:1;font-size:14px}.panes .pane-section .pane-item .pane-cell.vertical,.panes .pane-section .pane-item td.vertical,.panes .pane-section tr .pane-cell.vertical,.panes .pane-section tr td.vertical,.panes tbody .pane-item .pane-cell.vertical,.panes tbody .pane-item td.vertical,.panes tbody tr .pane-cell.vertical,.panes tbody tr td.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.panes .pane-section .pane-item .pane-cell.description,.panes .pane-section .pane-item td.description,.panes .pane-section tr .pane-cell.description,.panes .pane-section tr td.description,.panes tbody .pane-item .pane-cell.description,.panes tbody .pane-item td.description,.panes tbody tr .pane-cell.description,.panes tbody tr td.description{align-self:stretch}.panes .pane-section .pane-item .pane-cell.value,.panes .pane-section .pane-item td.value,.panes .pane-section tr .pane-cell.value,.panes .pane-section tr td.value,.panes tbody .pane-item .pane-cell.value,.panes tbody .pane-item td.value,.panes tbody tr .pane-cell.value,.panes tbody tr td.value{flex:0;margin-left:20px;word-break:break-all;flex-basis:auto}.panes .pane-section .pane-item .pane-cell.value i.icon-legend,.panes .pane-section .pane-item td.value i.icon-legend,.panes .pane-section tr .pane-cell.value i.icon-legend,.panes .pane-section tr td.value i.icon-legend,.panes tbody .pane-item .pane-cell.value i.icon-legend,.panes tbody .pane-item td.value i.icon-legend,.panes tbody tr .pane-cell.value i.icon-legend,.panes tbody tr td.value i.icon-legend{font-size:10px;margin-right:10px}.panes .pane-section .pane-item .pane-cell.value i.icon-value,.panes .pane-section .pane-item td.value i.icon-value,.panes .pane-section tr .pane-cell.value i.icon-value,.panes .pane-section tr td.value i.icon-value,.panes tbody .pane-item .pane-cell.value i.icon-value,.panes tbody .pane-item td.value i.icon-value,.panes tbody tr .pane-cell.value i.icon-value,.panes tbody tr td.value i.icon-value{padding:2px 2px 1px;border-radius:2px;width:16px;text-align:center}.panes .pane-section .pane-item.title-item,.panes .pane-section tr.title-item,.panes tbody .pane-item.title-item,.panes tbody tr.title-item{border-bottom:1px solid #222}.panes .pane-section .pane-item.title-item td,.panes .pane-section tr.title-item td,.panes tbody .pane-item.title-item td,.panes tbody tr.title-item td{color:#027bffe6;font-size:16px;font-weight:700}.panes .pane-section .pane-item.title-item td i,.panes .pane-section tr.title-item td i,.panes tbody .pane-item.title-item td i,.panes tbody tr.title-item td i{margin-right:10px}.panes .pane-section .pane-item.title-item td .more,.panes .pane-section tr.title-item td .more,.panes tbody .pane-item.title-item td .more,.panes tbody tr.title-item td .more{flex:1;text-align:right;font-size:12px;color:#888;font-weight:400;font-style:italic}.panes .pane-section .pane-item.variable-item,.panes .pane-section tr.variable-item,.panes tbody .pane-item.variable-item,.panes tbody tr.variable-item{cursor:pointer}.panes .pane-section .pane-item.variable-item:hover,.panes .pane-section tr.variable-item:hover,.panes tbody .pane-item.variable-item:hover,.panes tbody tr.variable-item:hover{background-color:#027bff0d}.panes .pane-section .pane-item.variable-item:hover td,.panes .pane-section tr.variable-item:hover td,.panes tbody .pane-item.variable-item:hover td,.panes tbody tr.variable-item:hover td{font-weight:700;color:#fff}.panes .pane-section .pane-item.variable-item:hover td i.icon-legend,.panes .pane-section tr.variable-item:hover td i.icon-legend,.panes tbody .pane-item.variable-item:hover td i.icon-legend,.panes tbody tr.variable-item:hover td i.icon-legend{color:#fff}.panes .pane-section .pane-item.variable-item:hover td span,.panes .pane-section .pane-item.variable-item:hover td i.icon-value,.panes .pane-section tr.variable-item:hover td span,.panes .pane-section tr.variable-item:hover td i.icon-value,.panes tbody .pane-item.variable-item:hover td span,.panes tbody .pane-item.variable-item:hover td i.icon-value,.panes tbody tr.variable-item:hover td span,.panes tbody tr.variable-item:hover td i.icon-value{background-color:#ffffff4d;color:#fff}.panes .pane-section .pane-item.variable-item:hover td.description,.panes .pane-section tr.variable-item:hover td.description,.panes tbody .pane-item.variable-item:hover td.description,.panes tbody tr.variable-item:hover td.description{color:#027bff}.tiles{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;align-self:stretch}.tiles .tiles-inner{display:flex;flex:1;flex-direction:column;flex-wrap:nowrap;justify-content:flex-start;align-items:flex-start;align-self:stretch;padding:2px}.tiles .tiles-inner .tile-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#fff;margin:1px;padding:15px 10px 15px 15px;border-radius:4px;border-bottom:1px solid transparent}.tiles .tiles-inner .tile-item:hover,.tiles .tiles-inner .tile-item.active{border-left:4px solid rgb(2,123,255);border-radius:4px;border-bottom:2px solid #171717;background:#222;color:#027bff}.tiles .tiles-inner .tile-item:hover:hover,.tiles .tiles-inner .tile-item.active:hover{opacity:1}.tiles .tiles-inner .tile-item:hover.disabled,.tiles .tiles-inner .tile-item.active.disabled{border-left-color:#444;color:#fff}.tiles .tiles-inner .tile-item:hover.starred,.tiles .tiles-inner .tile-item.active.starred{border-left-color:#e5a123;color:#e5a123}.tiles .tiles-inner .tile-item:hover.starred .tile-tail .head-icon i,.tiles .tiles-inner .tile-item.active.starred .tile-tail .head-icon i{opacity:1;color:#e5a123;font-size:8px}.tiles .tiles-inner .tile-item.starred .tile-tail .head-icon i{font-size:8px;color:#e5a123}.tiles .tiles-inner .tile-item.disabled .tile-body{opacity:.3}.tiles .tiles-inner .tile-item.disabled .tile-tail .head-icon i{color:#444;opacity:.4}.tiles .tiles-inner .tile-item .tile-tail{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin-left:10px;min-width:10px}.tiles .tiles-inner .tile-item .tile-tail .head-icon{flex:1;display:flex;text-align:right;flex-direction:row;justify-content:center;align-items:center;align-self:stretch}.tiles .tiles-inner .tile-item .tile-tail .head-icon i{font-size:6px;display:flex}.tiles .tiles-inner .tile-item .tile-tail .status-icons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.tiles .tiles-inner .tile-item .tile-tail .status-icons i{font-size:16px;margin-left:10px}.tiles .tiles-inner .tile-item .tile-body{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;font-size:15px;font-weight:400;letter-spacing:.8px;line-height:22px;margin:0;flex-wrap:nowrap}.tiles .tiles-inner .tile-item .tile-body i{font-size:8px;margin-right:5px}.tiles .tiles-inner .tile-item .tile-metrics{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin:0}.tiles .tiles-inner .tile-item .tile-metrics .foot-span span,.tiles .tiles-inner .tile-item .tile-metrics .foot-span{opacity:.8;font-size:13px;font-family:Courier New}span.empty{background:#e5a1234d;color:#e5a123;text-transform:lowercase;border-radius:2px;padding:2px 4px;font-weight:700}.inner-empty{display:flex;flex:1;flex-direction:column;align-self:stretch;justify-content:center;align-items:center}.inner-empty i{font-size:90px;opacity:.3;text-shadow:0 -1px #333,0 0px .5px #444}.toggle{position:relative;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.toggle input{display:none}.toggle input:checked+label{background:#027bff;border:1px solid rgba(255,255,255,.1);box-shadow:0 2px 2px #222 inset}.toggle input:checked+label:after{content:"";display:block;border-radius:50%;margin-left:21px;width:18px;height:18px;transition:.2s;background:#9bcbff;box-shadow:0 2px #0063ce}.toggle label{width:44px;height:26px;border-radius:15px;background:#222;cursor:pointer;border:1px solid rgba(255,255,255,.1);box-shadow:0 2px 2px #111 inset}.toggle label:after{content:"";display:block;border-radius:50%;width:18px;height:18px;margin:3px;background:#777;box-shadow:0 2px #555555e6;transition:.2s}.form-holder{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.form-holder form{max-width:434px}form{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}form .alert{padding:8px 15px;font-size:14px;margin:0 0 25px}.form-group{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;width:100%;flex:1;margin-bottom:20px}.form-group .object-holder{flex-direction:column;align-self:stretch;justify-content:flex-start;align-items:flex-start;display:flex;flex:1}.form-group .object-holder input,.form-group .object-holder select,.form-group .object-holder textarea{flex:1;align-self:stretch}.form-group .object-holder .form-group label{margin-top:20px;margin-bottom:8px}.form-group label{flex:1;font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.form-group label.btn-upload{color:#fff;font-size:14px;flex:0;flex-basis:auto;margin-top:5px}.form-group label.btn-upload input[type=file]{display:none}.form-group label.btn-upload input[type=text]{margin-bottom:2px;margin-left:10px}.form-group label.btn-upload span.btn{padding-right:20px}.form-group label.btn-upload i{margin-left:3px;margin-right:10px}.form-group .widget{margin-top:10px;align-self:stretch;display:flex;flex-direction:row}.form-group .widget .btn{margin-left:10px}.form-group .widget.widget-unit select,.form-group .widget.widget-unit input{flex-grow:0;background:none;box-shadow:none;border:none;border-bottom:1px solid #333;border-radius:0;max-width:80px;padding-left:0;color:#fff;text-align:center}.form-group .widget.widget-unit span{font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-left:5px;color:#555}.form-group .widget div{color:#ffffffb3;font-size:14px}.form-group .widget select,.form-group .widget input,.form-group .widget textarea{outline:none;padding:8px 0 5px 8px;border-radius:2px;border:1px solid rgba(255,255,255,.05);flex:1;background:#555;box-shadow:0 2px 1px #444,0 4px 2px #333 inset;color:#ddd;font-size:14px}.form-group .widget select.input-naked,.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.input-naked,.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.input-naked,.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{color:#555;background:none;box-shadow:none;border:none;border-bottom:1px solid #333;border-radius:0}.form-group .widget select.input-naked,.form-group .widget input.input-naked,.form-group .widget textarea.input-naked{padding-left:0;color:#bbb}.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{border:none;background:#000;border-radius:4px;padding-left:10px}.form-group.tab-select{border-bottom:1px solid #444;display:flex;flex-direction:row;position:relative;height:48px;padding:48px 0 0;flex:0;flex-basis:auto}.form-group.tab-select .widget{height:49px;margin-top:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;position:absolute;top:0;left:0;border-bottom:2px solid rgb(2,123,255);color:#027bff}.form-group.tab-select .widget select{border:none;background:none;box-shadow:none;padding:10px 35px 10px 10px;margin:0;color:inherit;appearance:none;-moz-appearance:none;-webkit-appearance:none;text-align:left;font-weight:700;cursor:pointer;border-radius:4px 4px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;z-index:2}.form-group.tab-select .widget i{margin-left:10px;margin-right:0}.form-group.tab-select .widget i.triangle{margin-top:-4px;margin-left:0;position:absolute;right:10px}.form-group.form-group-horizontal{margin:10px 0 20px;flex-direction:row;justify-content:flex-start;align-items:center}.form-group.form-group-horizontal .widget{margin:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.actions{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin:20px 0 0}.actions.actions-intermediate{margin:0}.actions button{margin-left:25px}.actions.actions-left{justify-content:flex-start}.actions.actions-left .btn{margin-left:0;margin-right:25px}.actions.actions-right{justify-content:flex-end}.actions.actions-right .btn{margin-left:10px;margin-right:0}.actions.actions-center{justify-content:center}.actions.actions-center .btn{margin-left:0;margin-right:0}.view-content-list main .main-container .page-content .inner{padding-bottom:10px}.view-content-list main .main-container .content-object-input{margin-bottom:6px}.view-content-list.dragover main .main-container .inner .dropzone{border-radius:4px;background:#ffffff1a;border:1px dashed rgba(255,255,255,.5)}.view-content-edit main .main-container .bottom-content .page-content{flex:1}.view-content-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px;flex:1}.view-content-edit main .main-container .bottom-content .page-panel.right-panel{flex:2;align-self:stretch;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start;align-items:center;padding:20px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3{color:#fff;padding:10px 10px 10px 0;margin-bottom:20px;font-size:16px;align-self:stretch;margin-left:-8px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 span{border-width:1px;border-style:solid;border-radius:4px;padding:4px 10px;margin-left:5px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 i{font-size:16px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper{display:flex;flex-direction:column;width:100%;position:relative;padding-top:56.25%;overflow:hidden;border-radius:4px;outline:4px solid rgba(255,255,255,.1)}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.view-logs-list main .main-container .bottom-content .page-content .inner{padding-top:8px;padding-bottom:8px}.view-logs-list main .main-container .bottom-content .page-content .logs{flex:1;display:flex;flex-direction:column;align-self:stretch}.view-logs-list main .main-container .bottom-content .page-content .logs pre{flex:1;background:#000000e6;border:1px solid rgba(85,85,85,.5);border-radius:4px;font-family:monospace;color:#f2f2f2;padding:20px;overflow:auto;align-self:stretch}.view-node-player-edit main .main-container .bottom-content .page-content{flex:1}.view-node-player-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px}.view-player-group-list main .main-container .players-holder ul.players{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #222;border-radius:4px;padding:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .head{display:flex;flex-direction:column;justify-content:center;align-items:center;color:#999;font-size:10px;padding:10px;cursor:default}.view-player-group-list main .main-container .players-holder ul.players li.player-item:hover .infos .title{color:#fff}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px;flex:1;max-width:180px;background:#000;border:1px solid #333;border-radius:4px;padding:3px 7px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .title{font-size:13px;color:#aaa;display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body{display:block;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#1b1b1b;padding:10px;align-self:stretch;flex:1;border-radius:4px;color:#ccc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px;font-size:12px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body span{opacity:.5;margin-right:7px;font-size:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a{color:#fff}.view-playlist-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.view-playlist-list main .main-container .modal-playlist-qrcode h2{text-align:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic{text-align:center;display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic img{border:4px solid #555;border-radius:4px}.view-playlist-list main .main-container .modal-slide h2{font-size:20px}.view-playlist-list main .main-container .modal-slide input[disabled]{color:#aaa}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select{margin-right:5px}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input{font-size:12px;max-width:50%}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input.datetimepicker{margin-left:5px;padding-left:0}.view-playlist-list main .main-container .bottom-content .page-content{flex:1}.view-playlist-list main .main-container .bottom-content .page-content.with-right-panel{flex:.5}.view-playlist-list main .main-container .bottom-content .page-content .inner{padding:0}.view-playlist-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#ddd;text-decoration:none;margin:0 0 20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder{margin:20px 20px 20px 10px;flex:1}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder{margin:20px 0 0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder form{max-width:initial}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder .form-group{flex-grow:0;margin-bottom:5px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#fff;padding-bottom:10px;text-decoration:none}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4.divide{border-top:1px solid #222;margin-top:20px;padding-top:20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic{margin-top:10px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic img{border:1px dashed #555;padding:5px;border-radius:4px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview{background:#000;border:1px solid rgba(255,255,255,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview iframe{flex:1;align-self:stretch}.view-playlist-list main .main-container .bottom-content .page-content .inner .slides-holder{align-self:stretch;border-right:1px solid #222;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-playlist-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-player-group-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#666}.view-player-group-list main .main-container .bottom-content .page-content{flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner{padding:0}.view-player-group-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#ddd;text-decoration:none;margin:0 0 20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder{margin:20px 20px 20px 10px;flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder{margin:20px 0 0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder form{max-width:initial}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder .form-group{flex-grow:0;margin-bottom:15px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#fff;padding-bottom:10px;text-decoration:none}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4.divide{border-top:1px solid #222;margin-top:20px;padding-top:20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview{background:#000;border:1px solid rgba(255,255,255,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview iframe{flex:1;align-self:stretch}.view-player-group-list main .main-container .bottom-content .page-content .inner .players-holder{align-self:stretch;border-right:1px solid #222;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-player-group-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-playlist-list main .main-container .page-content .inner h3.divide{margin-top:50px}.view-playlist-list main .main-container .slides-holder ul.slides{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #222;border-radius:4px;padding:10px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .title{color:#333}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .type i{color:#333!important}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .body{opacity:0}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort{display:flex;flex-direction:column;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a{color:#999;font-size:10px;padding:10px;cursor:move}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a:hover{color:#027bff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px;flex:1;max-width:120px;background:#000;border:1px solid #333;border-radius:4px;padding:3px 7px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos:hover .title{color:#fff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .title{display:block;word-break:break-all;font-size:13px;color:#aaa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#aaa;font-size:12px;margin-right:5px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#1b1b1b;padding:10px;align-self:stretch;flex:1;border-radius:4px;font-size:13px;color:#fff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;max-width:315px;overflow-x:auto;white-space:nowrap}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-bottom:8px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .prefix,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .prefix{margin-left:5px;margin-right:5px;font-size:12px;color:#ddd}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .cron-description,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .cron-description{display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-left:5px;font-size:10px;opacity:.5}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a{color:#fff}.view-plugins-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-settings-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list .reboot{color:#ccc}.view-login main .main-container{position:relative}.view-login main .main-container .alert{position:absolute;top:0;left:0;right:0}.view-login main .main-container .login-content{display:flex;flex:1;flex-direction:column;justify-content:center;align-items:center}.view-login main .main-container .login-content .form-holder{width:400px;display:flex;justify-content:center;align-items:center;align-self:stretch;margin-left:auto;margin-right:auto}.view-login main .main-container .login-content .form-holder .card{display:flex;justify-content:center;align-items:center;align-self:stretch;border-radius:6px;padding:50px;color:#333}.view-login main .main-container .login-content .form-holder .card form{padding:0;flex:1;display:flex;justify-content:center;align-items:center;align-self:stretch}.view-login main .main-container .login-content .form-holder .card form .actions{margin-top:10px}.view-login main .main-container .login-content .form-holder .card form .actions .btn{padding-left:20px;padding-right:20px}.view-auth-user-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item.disabled .tile-body{opacity:.3;text-decoration-line:line-through}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item .tile-tail a:last-child{margin-left:10px} diff --git a/data/www/css/compiled/main-light-mode.css b/data/www/css/compiled/main-light-mode.css index 4c286c1..76ef3f9 100644 --- a/data/www/css/compiled/main-light-mode.css +++ b/data/www/css/compiled/main-light-mode.css @@ -1 +1 @@ -.warning{color:#e56723!important}.bg-warning{background-color:#e56723!important}.border-warning{border-color:#e56723!important}.info{color:#027bff!important}.bg-info{background-color:#027bff!important}.border-info{border-color:#027bff!important}.info-alt{color:#075cb7!important}.bg-info-alt{background-color:#075cb7!important}.border-info-alt{border-color:#075cb7!important}.success{color:#11a948!important}.bg-success{background-color:#11a948!important}.border-success{border-color:#11a948!important}.success-alt{color:#11a948!important}.bg-success-alt{background-color:#11a948!important}.border-success-alt{border-color:#11a948!important}.error{color:#ef0e5d!important}.bg-error{background-color:#ef0e5d!important}.border-error{border-color:#ef0e5d!important}.error-alt{color:#c20941!important}.bg-error-alt{background-color:#c20941!important}.border-error-alt{border-color:#c20941!important}.danger{color:#ef0e5d!important}.bg-danger{background-color:#ef0e5d!important}.border-danger{border-color:#ef0e5d!important}.danger-alt{color:#c20941!important}.bg-danger-alt{background-color:#c20941!important}.border-danger-alt{border-color:#c20941!important}.purple{color:#bc48ff!important}.bg-purple{background-color:#bc48ff!important}.border-purple{border-color:#bc48ff!important}.purple-alt{color:#692fbd!important}.bg-purple-alt{background-color:#692fbd!important}.border-purple-alt{border-color:#692fbd!important}.neutral{color:#464646!important}.bg-neutral{background-color:#464646!important}.border-neutral{border-color:#464646!important}.yellow{color:#ffa70a!important}.bg-yellow{background-color:#ffa70a!important}.border-yellow{border-color:#ffa70a!important}.white{color:#fff!important}.bg-white{background-color:#fff!important}.border-white{border-color:#fff!important}.black{color:#000!important}.bg-black{background-color:#000!important}.border-black{border-color:#000!important}.youtube{color:#fd3c01!important}.bg-youtube{background-color:#fd3c01!important}.border-youtube{border-color:#fd3c01!important}.raspbian{color:#b61240!important}.bg-raspbian{background-color:#b61240!important}.border-raspbian{border-color:#b61240!important}.windows{color:#12a7e3!important}.bg-windows{background-color:#12a7e3!important}.border-windows{border-color:#12a7e3!important}.macos{color:#b3bcc2!important}.bg-macos{background-color:#b3bcc2!important}.border-macos{border-color:#b3bcc2!important}.debian{color:#cf084e!important}.bg-debian{background-color:#cf084e!important}.border-debian{border-color:#cf084e!important}.fedora{color:#52a2da!important}.bg-fedora{background-color:#52a2da!important}.border-fedora{border-color:#52a2da!important}.ubuntu{color:#d64514!important}.bg-ubuntu{background-color:#d64514!important}.border-ubuntu{border-color:#d64514!important}.suse{color:#6fb425!important}.bg-suse{background-color:#6fb425!important}.border-suse{border-color:#6fb425!important}.redhat{color:#c60200!important}.bg-redhat{background-color:#c60200!important}.border-redhat{border-color:#c60200!important}.centos{color:#9b4c88!important}.bg-centos{background-color:#9b4c88!important}.border-centos{border-color:#9b4c88!important}.other{color:#ffa70a!important}.bg-other{background-color:#ffa70a!important}.border-other{border-color:#ffa70a!important}button.btn-warning,.btn.btn-warning{background:#e56723;box-shadow:0 2px #913e11}button.btn-warning:hover,.btn.btn-warning:hover{box-shadow:0 2px 0 1px #913e11 inset}button.btn-warning:focus,.btn.btn-warning:focus{background:#913e11}button.btn-wire-warning,.btn.btn-wire-warning{background:transparent;box-shadow:none;border:2px solid rgb(229,103,35);color:#000c}button.btn-wire-warning i.btn-match,.btn.btn-wire-warning i.btn-match{color:#e56723}button.btn-wire-warning:hover,.btn.btn-wire-warning:hover{background:#e567230d;border-color:#be5117;color:#be5117;box-shadow:none}button.btn-wire-warning:focus,.btn.btn-wire-warning:focus{border-color:#913e11;background:transparent}button.btn-info,.btn.btn-info{background:#027bff;box-shadow:0 2px #004a9b}button.btn-info:hover,.btn.btn-info:hover{box-shadow:0 2px 0 1px #004a9b inset}button.btn-info:focus,.btn.btn-info:focus{background:#004a9b}button.btn-wire-info,.btn.btn-wire-info{background:transparent;box-shadow:none;border:2px solid rgb(2,123,255);color:#000c}button.btn-wire-info i.btn-match,.btn.btn-wire-info i.btn-match{color:#027bff}button.btn-wire-info:hover,.btn.btn-wire-info:hover{background:#027bff0d;border-color:#0063ce;color:#0063ce;box-shadow:none}button.btn-wire-info:focus,.btn.btn-wire-info:focus{border-color:#004a9b;background:transparent}button.btn-info-alt,.btn.btn-info-alt{background:#075cb7;box-shadow:0 2px #032b55}button.btn-info-alt:hover,.btn.btn-info-alt:hover{box-shadow:0 2px 0 1px #032b55 inset}button.btn-info-alt:focus,.btn.btn-info-alt:focus{background:#032b55}button.btn-wire-info-alt,.btn.btn-wire-info-alt{background:transparent;box-shadow:none;border:2px solid rgb(7,92,183);color:#000c}button.btn-wire-info-alt i.btn-match,.btn.btn-wire-info-alt i.btn-match{color:#075cb7}button.btn-wire-info-alt:hover,.btn.btn-wire-info-alt:hover{background:#075cb70d;border-color:#054386;color:#054386;box-shadow:none}button.btn-wire-info-alt:focus,.btn.btn-wire-info-alt:focus{border-color:#032b55;background:transparent}button.btn-success,.btn.btn-success{background:#11a948;box-shadow:0 2px #084c21}button.btn-success:hover,.btn.btn-success:hover{box-shadow:0 2px 0 1px #084c21 inset}button.btn-success:focus,.btn.btn-success:focus{background:#084c21}button.btn-wire-success,.btn.btn-wire-success{background:transparent;box-shadow:none;border:2px solid rgb(17,169,72);color:#000c}button.btn-wire-success i.btn-match,.btn.btn-wire-success i.btn-match{color:#11a948}button.btn-wire-success:hover,.btn.btn-wire-success:hover{background:#11a9480d;border-color:#0c7b34;color:#0c7b34;box-shadow:none}button.btn-wire-success:focus,.btn.btn-wire-success:focus{border-color:#084c21;background:transparent}button.btn-success-alt,.btn.btn-success-alt{background:#11a948;box-shadow:0 2px #084c21}button.btn-success-alt:hover,.btn.btn-success-alt:hover{box-shadow:0 2px 0 1px #084c21 inset}button.btn-success-alt:focus,.btn.btn-success-alt:focus{background:#084c21}button.btn-wire-success-alt,.btn.btn-wire-success-alt{background:transparent;box-shadow:none;border:2px solid rgb(17,169,72);color:#000c}button.btn-wire-success-alt i.btn-match,.btn.btn-wire-success-alt i.btn-match{color:#11a948}button.btn-wire-success-alt:hover,.btn.btn-wire-success-alt:hover{background:#11a9480d;border-color:#0c7b34;color:#0c7b34;box-shadow:none}button.btn-wire-success-alt:focus,.btn.btn-wire-success-alt:focus{border-color:#084c21;background:transparent}button.btn-error,.btn.btn-error{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-error:hover,.btn.btn-error:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-error:focus,.btn.btn-error:focus{background:#8f0838}button.btn-wire-error,.btn.btn-wire-error{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#000c}button.btn-wire-error i.btn-match,.btn.btn-wire-error i.btn-match{color:#ef0e5d}button.btn-wire-error:hover,.btn.btn-wire-error:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-error:focus,.btn.btn-wire-error:focus{border-color:#8f0838;background:transparent}button.btn-error-alt,.btn.btn-error-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-error-alt:hover,.btn.btn-error-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-error-alt:focus,.btn.btn-error-alt:focus{background:#610420}button.btn-wire-error-alt,.btn.btn-wire-error-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#000c}button.btn-wire-error-alt i.btn-match,.btn.btn-wire-error-alt i.btn-match{color:#c20941}button.btn-wire-error-alt:hover,.btn.btn-wire-error-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-error-alt:focus,.btn.btn-wire-error-alt:focus{border-color:#610420;background:transparent}button.btn-danger,.btn.btn-danger{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-danger:hover,.btn.btn-danger:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-danger:focus,.btn.btn-danger:focus{background:#8f0838}button.btn-wire-danger,.btn.btn-wire-danger{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#000c}button.btn-wire-danger i.btn-match,.btn.btn-wire-danger i.btn-match{color:#ef0e5d}button.btn-wire-danger:hover,.btn.btn-wire-danger:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-danger:focus,.btn.btn-wire-danger:focus{border-color:#8f0838;background:transparent}button.btn-danger-alt,.btn.btn-danger-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-danger-alt:hover,.btn.btn-danger-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-danger-alt:focus,.btn.btn-danger-alt:focus{background:#610420}button.btn-wire-danger-alt,.btn.btn-wire-danger-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#000c}button.btn-wire-danger-alt i.btn-match,.btn.btn-wire-danger-alt i.btn-match{color:#c20941}button.btn-wire-danger-alt:hover,.btn.btn-wire-danger-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-danger-alt:focus,.btn.btn-wire-danger-alt:focus{border-color:#610420;background:transparent}button.btn-purple,.btn.btn-purple{background:#bc48ff;box-shadow:0 2px #8f00e1}button.btn-purple:hover,.btn.btn-purple:hover{box-shadow:0 2px 0 1px #8f00e1 inset}button.btn-purple:focus,.btn.btn-purple:focus{background:#8f00e1}button.btn-wire-purple,.btn.btn-wire-purple{background:transparent;box-shadow:none;border:2px solid rgb(188,72,255);color:#000c}button.btn-wire-purple i.btn-match,.btn.btn-wire-purple i.btn-match{color:#bc48ff}button.btn-wire-purple:hover,.btn.btn-wire-purple:hover{background:#bc48ff0d;border-color:#a915ff;color:#a915ff;box-shadow:none}button.btn-wire-purple:focus,.btn.btn-wire-purple:focus{border-color:#8f00e1;background:transparent}button.btn-purple-alt,.btn.btn-purple-alt{background:#692fbd;box-shadow:0 2px #3c1b6b}button.btn-purple-alt:hover,.btn.btn-purple-alt:hover{box-shadow:0 2px 0 1px #3c1b6b inset}button.btn-purple-alt:focus,.btn.btn-purple-alt:focus{background:#3c1b6b}button.btn-wire-purple-alt,.btn.btn-wire-purple-alt{background:transparent;box-shadow:none;border:2px solid rgb(105,47,189);color:#000c}button.btn-wire-purple-alt i.btn-match,.btn.btn-wire-purple-alt i.btn-match{color:#692fbd}button.btn-wire-purple-alt:hover,.btn.btn-wire-purple-alt:hover{background:#692fbd0d;border-color:#522594;color:#522594;box-shadow:none}button.btn-wire-purple-alt:focus,.btn.btn-wire-purple-alt:focus{border-color:#3c1b6b;background:transparent}button.btn-neutral,.btn.btn-neutral{background:#464646;box-shadow:0 2px #131313}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #131313 inset}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#131313}button.btn-wire-neutral,.btn.btn-wire-neutral{background:transparent;box-shadow:none;border:2px solid rgb(70,70,70);color:#000c}button.btn-wire-neutral i.btn-match,.btn.btn-wire-neutral i.btn-match{color:#464646}button.btn-wire-neutral:hover,.btn.btn-wire-neutral:hover{background:#4646460d;border-color:#2d2d2d;color:#2d2d2d;box-shadow:none}button.btn-wire-neutral:focus,.btn.btn-wire-neutral:focus{border-color:#131313;background:transparent}button.btn-yellow,.btn.btn-yellow{background:#ffa70a;box-shadow:0 2px #a36800}button.btn-yellow:hover,.btn.btn-yellow:hover{box-shadow:0 2px 0 1px #a36800 inset}button.btn-yellow:focus,.btn.btn-yellow:focus{background:#a36800}button.btn-wire-yellow,.btn.btn-wire-yellow{background:transparent;box-shadow:none;border:2px solid rgb(255,167,10);color:#000c}button.btn-wire-yellow i.btn-match,.btn.btn-wire-yellow i.btn-match{color:#ffa70a}button.btn-wire-yellow:hover,.btn.btn-wire-yellow:hover{background:#ffa70a0d;border-color:#d68900;color:#d68900;box-shadow:none}button.btn-wire-yellow:focus,.btn.btn-wire-yellow:focus{border-color:#a36800;background:transparent}button.btn-white,.btn.btn-white{background:#fff;box-shadow:0 2px #ccc}button.btn-white:hover,.btn.btn-white:hover{box-shadow:0 2px 0 1px #ccc inset}button.btn-white:focus,.btn.btn-white:focus{background:#ccc}button.btn-wire-white,.btn.btn-wire-white{background:transparent;box-shadow:none;border:2px solid rgb(255,255,255);color:#000c}button.btn-wire-white i.btn-match,.btn.btn-wire-white i.btn-match{color:#fff}button.btn-wire-white:hover,.btn.btn-wire-white:hover{background:#ffffff0d;border-color:#e6e6e6;color:#e6e6e6;box-shadow:none}button.btn-wire-white:focus,.btn.btn-wire-white:focus{border-color:#ccc;background:transparent}button.btn-black,.btn.btn-black{background:#000;box-shadow:0 2px #000}button.btn-black:hover,.btn.btn-black:hover{box-shadow:0 2px 0 1px #000 inset}button.btn-black:focus,.btn.btn-black:focus{background:#000}button.btn-wire-black,.btn.btn-wire-black{background:transparent;box-shadow:none;border:2px solid rgb(0,0,0);color:#000c}button.btn-wire-black i.btn-match,.btn.btn-wire-black i.btn-match{color:#000}button.btn-wire-black:hover,.btn.btn-wire-black:hover{background:#0000000d;border-color:#000;color:#000;box-shadow:none}button.btn-wire-black:focus,.btn.btn-wire-black:focus{border-color:#000;background:transparent}button.btn-youtube,.btn.btn-youtube{background:#fd3c01;box-shadow:0 2px #972401}button.btn-youtube:hover,.btn.btn-youtube:hover{box-shadow:0 2px 0 1px #972401 inset}button.btn-youtube:focus,.btn.btn-youtube:focus{background:#972401}button.btn-wire-youtube,.btn.btn-wire-youtube{background:transparent;box-shadow:none;border:2px solid rgb(253,60,1);color:#000c}button.btn-wire-youtube i.btn-match,.btn.btn-wire-youtube i.btn-match{color:#fd3c01}button.btn-wire-youtube:hover,.btn.btn-wire-youtube:hover{background:#fd3c010d;border-color:#ca3001;color:#ca3001;box-shadow:none}button.btn-wire-youtube:focus,.btn.btn-wire-youtube:focus{border-color:#972401;background:transparent}button.btn-raspbian,.btn.btn-raspbian{background:#b61240;box-shadow:0 2px #59091f}button.btn-raspbian:hover,.btn.btn-raspbian:hover{box-shadow:0 2px 0 1px #59091f inset}button.btn-raspbian:focus,.btn.btn-raspbian:focus{background:#59091f}button.btn-wire-raspbian,.btn.btn-wire-raspbian{background:transparent;box-shadow:none;border:2px solid rgb(182,18,64);color:#000c}button.btn-wire-raspbian i.btn-match,.btn.btn-wire-raspbian i.btn-match{color:#b61240}button.btn-wire-raspbian:hover,.btn.btn-wire-raspbian:hover{background:#b612400d;border-color:#880d30;color:#880d30;box-shadow:none}button.btn-wire-raspbian:focus,.btn.btn-wire-raspbian:focus{border-color:#59091f;background:transparent}button.btn-windows,.btn.btn-windows{background:#12a7e3;box-shadow:0 2px #0b6184}button.btn-windows:hover,.btn.btn-windows:hover{box-shadow:0 2px 0 1px #0b6184 inset}button.btn-windows:focus,.btn.btn-windows:focus{background:#0b6184}button.btn-wire-windows,.btn.btn-wire-windows{background:transparent;box-shadow:none;border:2px solid rgb(18,167,227);color:#000c}button.btn-wire-windows i.btn-match,.btn.btn-wire-windows i.btn-match{color:#12a7e3}button.btn-wire-windows:hover,.btn.btn-wire-windows:hover{background:#12a7e30d;border-color:#0e84b4;color:#0e84b4;box-shadow:none}button.btn-wire-windows:focus,.btn.btn-wire-windows:focus{border-color:#0b6184;background:transparent}button.btn-macos,.btn.btn-macos{background:#b3bcc2;box-shadow:0 2px #7a8a95}button.btn-macos:hover,.btn.btn-macos:hover{box-shadow:0 2px 0 1px #7a8a95 inset}button.btn-macos:focus,.btn.btn-macos:focus{background:#7a8a95}button.btn-wire-macos,.btn.btn-wire-macos{background:transparent;box-shadow:none;border:2px solid rgb(179,188,194);color:#000c}button.btn-wire-macos i.btn-match,.btn.btn-wire-macos i.btn-match{color:#b3bcc2}button.btn-wire-macos:hover,.btn.btn-wire-macos:hover{background:#b3bcc20d;border-color:#97a3ab;color:#97a3ab;box-shadow:none}button.btn-wire-macos:focus,.btn.btn-wire-macos:focus{border-color:#7a8a95;background:transparent}button.btn-debian,.btn.btn-debian{background:#cf084e;box-shadow:0 2px #6d0429}button.btn-debian:hover,.btn.btn-debian:hover{box-shadow:0 2px 0 1px #6d0429 inset}button.btn-debian:focus,.btn.btn-debian:focus{background:#6d0429}button.btn-wire-debian,.btn.btn-wire-debian{background:transparent;box-shadow:none;border:2px solid rgb(207,8,78);color:#000c}button.btn-wire-debian i.btn-match,.btn.btn-wire-debian i.btn-match{color:#cf084e}button.btn-wire-debian:hover,.btn.btn-wire-debian:hover{background:#cf084e0d;border-color:#9e063b;color:#9e063b;box-shadow:none}button.btn-wire-debian:focus,.btn.btn-wire-debian:focus{border-color:#6d0429;background:transparent}button.btn-fedora,.btn.btn-fedora{background:#52a2da;box-shadow:0 2px #236ea3}button.btn-fedora:hover,.btn.btn-fedora:hover{box-shadow:0 2px 0 1px #236ea3 inset}button.btn-fedora:focus,.btn.btn-fedora:focus{background:#236ea3}button.btn-wire-fedora,.btn.btn-wire-fedora{background:transparent;box-shadow:none;border:2px solid rgb(82,162,218);color:#000c}button.btn-wire-fedora i.btn-match,.btn.btn-wire-fedora i.btn-match{color:#52a2da}button.btn-wire-fedora:hover,.btn.btn-wire-fedora:hover{background:#52a2da0d;border-color:#2c8bcd;color:#2c8bcd;box-shadow:none}button.btn-wire-fedora:focus,.btn.btn-wire-fedora:focus{border-color:#236ea3;background:transparent}button.btn-ubuntu,.btn.btn-ubuntu{background:#d64514;box-shadow:0 2px #79270b}button.btn-ubuntu:hover,.btn.btn-ubuntu:hover{box-shadow:0 2px 0 1px #79270b inset}button.btn-ubuntu:focus,.btn.btn-ubuntu:focus{background:#79270b}button.btn-wire-ubuntu,.btn.btn-wire-ubuntu{background:transparent;box-shadow:none;border:2px solid rgb(214,69,20);color:#000c}button.btn-wire-ubuntu i.btn-match,.btn.btn-wire-ubuntu i.btn-match{color:#d64514}button.btn-wire-ubuntu:hover,.btn.btn-wire-ubuntu:hover{background:#d645140d;border-color:#a73610;color:#a73610;box-shadow:none}button.btn-wire-ubuntu:focus,.btn.btn-wire-ubuntu:focus{border-color:#79270b;background:transparent}button.btn-suse,.btn.btn-suse{background:#6fb425;box-shadow:0 2px #3b5f14}button.btn-suse:hover,.btn.btn-suse:hover{box-shadow:0 2px 0 1px #3b5f14 inset}button.btn-suse:focus,.btn.btn-suse:focus{background:#3b5f14}button.btn-wire-suse,.btn.btn-wire-suse{background:transparent;box-shadow:none;border:2px solid rgb(111,180,37);color:#000c}button.btn-wire-suse i.btn-match,.btn.btn-wire-suse i.btn-match{color:#6fb425}button.btn-wire-suse:hover,.btn.btn-wire-suse:hover{background:#6fb4250d;border-color:#558a1c;color:#558a1c;box-shadow:none}button.btn-wire-suse:focus,.btn.btn-wire-suse:focus{border-color:#3b5f14;background:transparent}button.btn-redhat,.btn.btn-redhat{background:#c60200;box-shadow:0 2px #600100}button.btn-redhat:hover,.btn.btn-redhat:hover{box-shadow:0 2px 0 1px #600100 inset}button.btn-redhat:focus,.btn.btn-redhat:focus{background:#600100}button.btn-wire-redhat,.btn.btn-wire-redhat{background:transparent;box-shadow:none;border:2px solid rgb(198,2,0);color:#000c}button.btn-wire-redhat i.btn-match,.btn.btn-wire-redhat i.btn-match{color:#c60200}button.btn-wire-redhat:hover,.btn.btn-wire-redhat:hover{background:#c602000d;border-color:#930100;color:#930100;box-shadow:none}button.btn-wire-redhat:focus,.btn.btn-wire-redhat:focus{border-color:#600100;background:transparent}button.btn-centos,.btn.btn-centos{background:#9b4c88;box-shadow:0 2px #572a4c}button.btn-centos:hover,.btn.btn-centos:hover{box-shadow:0 2px 0 1px #572a4c inset}button.btn-centos:focus,.btn.btn-centos:focus{background:#572a4c}button.btn-wire-centos,.btn.btn-wire-centos{background:transparent;box-shadow:none;border:2px solid rgb(155,76,136);color:#000c}button.btn-wire-centos i.btn-match,.btn.btn-wire-centos i.btn-match{color:#9b4c88}button.btn-wire-centos:hover,.btn.btn-wire-centos:hover{background:#9b4c880d;border-color:#793b6a;color:#793b6a;box-shadow:none}button.btn-wire-centos:focus,.btn.btn-wire-centos:focus{border-color:#572a4c;background:transparent}button.btn-other,.btn.btn-other{background:#ffa70a;box-shadow:0 2px #a36800}button.btn-other:hover,.btn.btn-other:hover{box-shadow:0 2px 0 1px #a36800 inset}button.btn-other:focus,.btn.btn-other:focus{background:#a36800}button.btn-wire-other,.btn.btn-wire-other{background:transparent;box-shadow:none;border:2px solid rgb(255,167,10);color:#000c}button.btn-wire-other i.btn-match,.btn.btn-wire-other i.btn-match{color:#ffa70a}button.btn-wire-other:hover,.btn.btn-wire-other:hover{background:#ffa70a0d;border-color:#d68900;color:#d68900;box-shadow:none}button.btn-wire-other:focus,.btn.btn-wire-other:focus{border-color:#a36800;background:transparent}.alert.alert-warning{color:#e56723;background:#e5672333}.alert.alert-info{color:#027bff;background:#027bff33}.alert.alert-info-alt{color:#075cb7;background:#075cb733}.alert.alert-success,.alert.alert-success-alt{color:#11a948;background:#11a94833}.alert.alert-error{color:#ef0e5d;background:#ef0e5d33}.alert.alert-error-alt{color:#c20941;background:#c2094133}.alert.alert-danger{color:#ef0e5d;background:#ef0e5d33}.alert.alert-danger-alt{color:#c20941;background:#c2094133}.alert.alert-purple{color:#bc48ff;background:#bc48ff33}.alert.alert-purple-alt{color:#692fbd;background:#692fbd33}.alert.alert-neutral{color:#464646;background:#46464633}.alert.alert-yellow{color:#ffa70a;background:#ffa70a33}.alert.alert-white{color:#fff;background:#fff3}.alert.alert-black{color:#000;background:#0003}.alert.alert-youtube{color:#fd3c01;background:#fd3c0133}.alert.alert-raspbian{color:#b61240;background:#b6124033}.alert.alert-windows{color:#12a7e3;background:#12a7e333}.alert.alert-macos{color:#b3bcc2;background:#b3bcc233}.alert.alert-debian{color:#cf084e;background:#cf084e33}.alert.alert-fedora{color:#52a2da;background:#52a2da33}.alert.alert-ubuntu{color:#d64514;background:#d6451433}.alert.alert-suse{color:#6fb425;background:#6fb42533}.alert.alert-redhat{color:#c60200;background:#c6020033}.alert.alert-centos{color:#9b4c88;background:#9b4c8833}.alert.alert-other{color:#ffa70a;background:#ffa70a33}@font-face{font-family:Sixtyfour;src:url(../../webfonts/Sixtyfour-Regular.ttf) format("truetype")}*{font-family:Roboto,Arial,"sans-serif";margin:0;padding:0;box-sizing:border-box}html{background-color:#eee}body,html{height:100%;font-family:Arial,sans-serif}.container{display:flex;height:100vh}.horizontal{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}main{flex:1;display:flex;flex-direction:column}main .main-container{display:flex;flex-direction:column;flex:1;overflow:hidden;align-self:stretch}main .main-container .top-content{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:10px 10px 10px 15px;background:transparent;border-bottom:1px solid #DDD}main .main-container .top-content h1{color:#000;font-weight:600;font-size:24px}main .main-container .top-content .top-actions{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}main .main-container .top-content .top-actions.align-right{justify-content:flex-end;margin-right:10px}main .main-container .top-content .top-actions .btn:first-child{margin-left:0!important}main .main-container .top-content .top-actions .btn,main .main-container .top-content .top-actions button{margin-left:10px}main .main-container .bottom-content{display:flex;flex-direction:row;align-self:stretch;justify-content:flex-start;align-items:flex-start;flex:1;overflow-y:auto;background:radial-gradient(circle at 0% 53%,rgba(239,14,93,.8) 10%,transparent 45%),radial-gradient(circle at 135% 53%,rgba(2,123,255,.8) 10%,transparent 95%),radial-gradient(circle at 50% 80%,rgba(17,169,72,.8) 40%,transparent 95%)}main .main-container .bottom-content .page-content{flex:2;overflow-y:auto;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;background:#fffc;padding:5px}main .main-container .bottom-content .page-content .inner{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:0 10px 40px;background:#eee;align-self:stretch}main .main-container .bottom-content .page-panel{flex:1;overflow-y:auto;align-self:stretch;background:#eee;border-top:none}main .main-container .bottom-content .page-panel.left-panel{border-right:1px solid #DDD;border-left:none}main .main-container .bottom-content .page-panel.left-panel.explr-explorer{flex:.5;overflow-y:auto;padding:0;background:#eee;box-shadow:1px 1px .5px .5px inset #fff3;max-width:250px}main .main-container .bottom-content .page-panel.right-panel{border-left:1px solid #DDD;border-right:none}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center!important}.tar{text-align:right!important}a{text-decoration:none}.normal{font-weight:400!important}.bold{font-weight:700!important}.col{display:flex;flex:1;flex-direction:column;align-self:stretch}main .context-bar{padding:10px;position:sticky;top:0;z-index:1000;max-height:80px;border-bottom:1px solid #DDD;display:flex;flex-direction:row;align-items:center}main .context-bar .context-menu{flex:1}main .context-bar .context-menu .inner{display:flex}main .context-bar .context-menu .inner ul.pills{margin:0}main .context-bar .context-divider{width:1px;height:100%;background:#ddd;margin-left:20px;margin-right:20px}main .context-bar .contex-tail{margin-right:20px}main .context-bar .contex-tail .btn{margin-right:0}main .context-bar .context-user{display:flex;margin-right:20px}main .context-bar .context-user .trigger{color:#000}main .context-bar .context-user .trigger .avatar{width:32px;height:32px;border-radius:4px;background:#555;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 #BBB;color:#fff}main .context-bar .context-user .trigger i{margin-top:-5px;margin-left:10px}menu{width:300px;background:#eee;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:1px solid #DDD;min-width:64px}menu h1.logo{margin:40px 0 0 10px;align-self:stretch;display:flex}menu h1.logo a{text-align:center;text-shadow:0px 0 0 rgb(255,255,255),0px 2px 0 #BBB,0 0px 0 rgb(17,169,72),-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;color:#fff}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 rgb(255,255,255),3px 2px 0 #BBB,0 3px 0 rgb(17,169,72),-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;border-radius:4px}menu nav ul li a{color:#000000e6;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:#000;opacity:.2;background:transparent;display:flex;justify-content:center;align-items:center;align-self:stretch;padding:10px;width:40px;border-radius:4px;text-align:center;margin-right:20px}menu nav ul li:after{background:#000;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;color:#fff;background:#000000e6;background:#027bff}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:#00000003;padding:20px 0;display:flex;flex-direction:row;align-self:stretch;text-align:center;justify-content:center}menu footer p{color:#bbb}menu footer p.version a{color:#888;font-weight:700}.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:#ddd;box-shadow:0 8px 16px #fff3;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;transition:all .55s cubic-bezier(.19,1,.22,1)}.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:#000;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}}@keyframes shakednd{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}button,.btn{position:relative;padding:10px 10px 8px;font-size:14px;color:#fff;cursor:pointer;border:none;border-radius:4px;background:#027bff;box-shadow:0 2px #004a9b;font-weight:700;letter-spacing:-.5px;margin-top:-2px;min-width:38px;min-height:34px;text-align:center;justify-content:center}button i.icon-left,.btn i.icon-left{margin-right:5px}button:hover,.btn:hover{box-shadow:0 2px 0 1px #004a9b inset;color:#fffc}button:focus,.btn:focus{background:#004a9b;color:#ffffff80;box-shadow:none}button.btn-pixel,.btn.btn-pixel{background:#333;border:1px solid transparent;transition:all .55s cubic-bezier(.19,1,.22,1);text-transform:uppercase;font-size:12px;box-shadow:4px 0 #fff,0 4px #11a948,-4px 0 #027bff,0 -4px #ef0e5d;color:#ddd;overflow:hidden}button.btn-pixel:hover,.btn.btn-pixel:hover{box-shadow:6px 0 #fff,0 6px #11a948,-6px 0 #027bff,0 -6px #ef0e5d;text-align:center;text-shadow:4px 0 0 rgb(255,255,255),4px 2px 0 #BBB,0 4px 0 rgb(17,169,72),-4px 0 0 rgb(2,123,255),0 -4px 0 rgb(239,14,93);text-decoration:none;background:linear-gradient(90deg,#a0a0a0 0,#bebebe 46%,#dcdcdc);-webkit-background-clip:text;color:transparent}button.btn-neutral,.btn.btn-neutral{color:#fff;background:#aaa;box-shadow:0 2px #919191;border:1px solid transparent}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #222 inset;background:#919191}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#777;border:1px solid #555}button .btn-wire-neutral,.btn .btn-wire-neutral{background:transparent;border:2px solid #AAA;color:#fffc;box-shadow:none}button .btn-wire-neutral:hover,.btn .btn-wire-neutral:hover{background:#aaaaaa0d;border-color:#919191;color:#919191;box-shadow:none}button .btn-wire-neutral:focus,.btn .btn-wire-neutral:focus{border-color:#777;background:transparent}button.btn-naked,.btn.btn-naked{background:transparent;box-shadow:none;border:1px solid transparent;color:#000}button.btn-naked:hover,.btn.btn-naked:hover{box-shadow:0 2px 0 1px #222 inset;background:#919191;color:#fff}button.btn-naked:focus,.btn.btn-naked:focus{background:#777;border:1px solid #555}button i.main,.btn i.main{font-size:18px}button sup,button sub,.btn sup,.btn sub{position:absolute;top:-4px;right:-4px;background:#888;border-bottom:2px solid #AAA;color:red;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}button sup i,button sub i,.btn sup i,.btn sub i{color:#fff;font-size:10px}button.btn-double-icon,.btn.btn-double-icon{margin-right:5px}button.disabled,.btn.disabled{cursor:default}.alert{padding:20px;align-self:stretch;display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:4px}.alert i{margin-right:13px}.alert a{color:inherit;margin-left:4px;margin-right:4px;text-decoration:underline}ul.explr-tree{height:100%!important}ul.explr-tree ul{padding-top:0!important}ul.explr-tree li{position:relative}ul.explr-tree li span{color:#aaa;font-size:13px;padding-left:5px;cursor:pointer}ul.explr-tree li span.explr-plus,ul.explr-tree li span.explr-minus{z-index:1}ul.explr-tree li span.explr-plus:hover,ul.explr-tree li span.explr-minus:hover{color:#555}ul.explr-tree li i.main{font-size:14px}ul.explr-tree li sup,ul.explr-tree li sub{position:absolute;top:0;left:5px;background:#888;border-bottom:2px solid #AAA;border-radius:4px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-tree li sup i,ul.explr-tree li sub i{color:#fff;font-size:4px!important;margin-bottom:0}ul.explr-tree li a{color:#000;padding-right:80px;margin-top:2px}ul.explr-tree li a:hover{color:#000}ul.explr-tree li a.active{background:#0000001a;border-radius:4px;font-weight:700;text-decoration:underline;margin-left:35px;padding-left:5px;margin-right:10px}.explr-multiselection-actions,.explr-selection-actions{display:none;flex-direction:row;justify-content:flex-end;align-items:center;flex:1}.explr-multiselection-actions button,.explr-selection-actions button{display:none}body.explr-selection-actionable .explr-selection-actions,body.explr-selection-actionable.explr-selection-folder .explr-selection-actions button.explr-selection-folder,body.explr-selection-actionable.explr-selection-entity .explr-selection-actions button.explr-selection-entity,body.explr-multiselection-actionable .explr-multiselection-actions,body.explr-multiselection-actionable.explr-multiselection-folder .explr-multiselection-actions button.explr-multiselection-folder,body.explr-multiselection-actionable.explr-multiselection-entity .explr-multiselection-actions button.explr-multiselection-entity{display:flex}.selectable-zone{flex:1;align-self:stretch;border:1px solid transparent}ul.explr-dirview{display:flex;flex-direction:row;flex-wrap:wrap}ul.explr-dirview li{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;flex-shrink:0;margin:10px;min-width:100px;min-height:130px;padding-top:5px;border:1px solid transparent;border-radius:4px}ul.explr-dirview li.renaming a span{display:none}ul.explr-dirview li.renaming a form{display:block}ul.explr-dirview li.highlight-drop{border:1px dotted rgba(2,123,255,.4);background:#027bff4d}ul.explr-dirview li.highlight-clicked{border:1px dotted rgba(0,0,0,.2);background:#0000001a}ul.explr-dirview li a{color:#444;text-decoration:none;flex:1;text-align:center;font-size:12px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;max-width:84px;min-width:84px;position:relative}ul.explr-dirview li a.with-thumbnail .img-holder{width:64px;height:64px;background:#e7e7e7;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;margin-bottom:12px}ul.explr-dirview li a.with-thumbnail .img-holder img{max-height:100%;max-width:100%}ul.explr-dirview li a.with-thumbnail i{font-size:24px;position:absolute;top:-4px;left:-4px;text-shadow:0 .5px .5px #888}ul.explr-dirview li a i{font-size:64px;margin-bottom:12px;border-radius:8px}ul.explr-dirview li a sup,ul.explr-dirview li a sub{position:absolute;top:-2px;right:0;background:#888;border-bottom:2px solid #AAA;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-dirview li a sup i,ul.explr-dirview li a sub i{color:#fff;font-size:10px;margin-bottom:0}ul.explr-dirview li a input{width:100%;padding:0 3px}ul.explr-dirview li a input:focus{outline:none}ul.explr-dirview li a:hover{opacity:.8}ul.explr-dirview li a form{display:none}ul.explr-dirview li.new-folder a{color:#027bff}ul.explr-dirview li.new-folder a form{display:block}ul.explr-dirview .ui-draggable-dragging{z-index:20}ul.explr-dirview .ui-draggable-dragging a{opacity:1!important}.modal-explr-picker h2{margin-top:0}.modal-explr-picker .explr-tree{width:400px;max-width:400px;max-height:300px;overflow:auto;background:#ddd;padding:10px 20px;border-radius:4px;margin-top:15px}.content-explr-picker{cursor:pointer}.selection-rectangle{position:absolute;border:1px solid rgb(0,153,255);background-color:#0099ff1a;pointer-events:none;z-index:1000}ul.pills{background:#ddd;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #fff3;border:1px solid #DDD;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0}ul.pills li.divider{margin:0 20px;width:1px;height:100%;background:#ccc}ul.pills li:hover a{opacity:.9}ul.pills li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#000;overflow:hidden;padding-right:30px;text-align:center;background:#fff3;margin-right:5px;transition:all .25s cubic-bezier(.19,1,.22,1)}ul.pills li a span{display:flex;justify-content:center;align-items:center;margin-right:20px;height:42px;background:#fff3;width:42px}ul.pills li.active a{color:#ccc;background:#333;font-weight:700}ul.pills li:hover a{color:#fff;background:#027bff}ul.pills li:last-child a{margin-right:0}.breadcrumb-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;border-bottom:1px solid #DDD;background:transparent;padding:10px}.breadcrumb-container ul.breadcrumb{background:#ddd;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #fff3;border:1px solid #DDD;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0;overflow-x:auto;max-width:65vw;white-space:nowrap}.breadcrumb-container ul.breadcrumb li{display:inline-block}.breadcrumb-container ul.breadcrumb li.divider{margin:0 5px}.breadcrumb-container ul.breadcrumb li.divider i{color:#555}.breadcrumb-container ul.breadcrumb li span,.breadcrumb-container ul.breadcrumb li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#000;text-align:center;padding:0 3px}.breadcrumb-container ul.breadcrumb li span i,.breadcrumb-container ul.breadcrumb li a i{margin-right:5px}.breadcrumb-container ul.breadcrumb li:hover a{color:#000;background:#027bff}.breadcrumb-container ul.breadcrumb li:last-child a{margin-right:0}.pickers,.modals{position:fixed;background:#0006;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10000}.pickers.pickers .modals-outer .modals-inner .modal h2,.modals.pickers .modals-outer .modals-inner .modal h2{font-size:14px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.pickers .modals-outer,.modals .modals-outer{min-width:464px;display:flex;flex-direction:column;overflow:auto;padding-bottom:2px}.pickers .modals-outer .modals-inner,.modals .modals-outer .modals-inner{background:#eee;border-radius:10px;color:#fff;padding:40px;box-shadow:0 2px #ddd;border:1px solid #DDD}.pickers .modals-outer .modals-inner .modal h2,.modals .modals-outer .modals-inner .modal h2{padding:0;margin:0 0 30px;font-weight:400;color:#666}.pickers .modals-outer .modals-inner .modal h3,.modals .modals-outer .modals-inner .modal h3{align-self:stretch;margin:0 0 10px;font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#000;padding-bottom:10px;text-decoration:none}.pickers .modals-outer .modals-inner .modal h3.divide,.modals .modals-outer .modals-inner .modal h3.divide{border-top:1px solid #DDD;margin-top:20px;padding-top:20px}.toast{visibility:hidden;min-width:250px;margin-left:-125px;background-color:#ccc;color:#000;text-align:center;border-radius:4px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px;border:2px dashed #DDD}.toast.show{visibility:visible;-webkit-animation:fadein .5s,fadeout .5s 2.5s;animation:fadein .5s,fadeout .5s 2.5s}@-webkit-keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@-webkit-keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}@keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}body.dragover .shakeondrag{animation:shakednd .1s linear alternate infinite}.btn-super-upload-busy,.btn-super-upload{display:flex;flex-direction:row;justify-content:center;align-items:center;margin-left:10px;position:relative}.btn-super-upload-busy.btn-super-upload-busy,.btn-super-upload.btn-super-upload-busy{border:none!important}.btn-super-upload-busy .unprogress,.btn-super-upload .unprogress{display:block}.btn-super-upload-busy .progress,.btn-super-upload .progress{display:none;width:200px;height:10px;background:#999;border-radius:4px;flex-direction:row;justify-content:flex-start;align-items:center}.btn-super-upload-busy .progress .progress-bar,.btn-super-upload .progress .progress-bar{border-radius:4px;background-color:#027bff;height:100%}.btn-super-upload-busy .progress .percent,.btn-super-upload .progress .percent{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;bottom:0;top:2px;font-size:15px;color:#fff;text-shadow:0 0 2px rgb(0,0,0)}.btn-super-upload-busy.uploading .progress,.btn-super-upload.uploading .progress{display:block}.btn-super-upload-busy.uploading .unprogress,.btn-super-upload.uploading .unprogress{display:none}.panes{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.panes .pane-section,.panes tbody{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:1px 1px 28px;background:#eee;border-radius:4px;border:4px solid rgba(0,0,0,.05)}.panes .pane-section:hover,.panes tbody:hover,.panes .pane-section:hover tr.title-item,.panes tbody:hover tr.title-item{border-color:#027bff0d}.panes .pane-section .pane-item,.panes .pane-section tr,.panes tbody .pane-item,.panes tbody tr{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:8px 18px;background:#ddd}.panes .pane-section .pane-item:nth-child(odd),.panes .pane-section tr:nth-child(odd),.panes tbody .pane-item:nth-child(odd),.panes tbody tr:nth-child(odd){background-color:#eee}.panes .pane-section .pane-item:nth-child(odd) td.description,.panes .pane-section tr:nth-child(odd) td.description,.panes tbody .pane-item:nth-child(odd) td.description,.panes tbody tr:nth-child(odd) td.description{color:#000000b3}.panes .pane-section .pane-item:nth-child(2n),.panes .pane-section tr:nth-child(2n),.panes tbody .pane-item:nth-child(2n),.panes tbody tr:nth-child(2n){background-color:#e4e4e4}.panes .pane-section .pane-item .pane-cell,.panes .pane-section .pane-item td,.panes .pane-section tr .pane-cell,.panes .pane-section tr td,.panes tbody .pane-item .pane-cell,.panes tbody .pane-item td,.panes tbody tr .pane-cell,.panes tbody tr td{color:#777;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex:1;font-size:14px}.panes .pane-section .pane-item .pane-cell.vertical,.panes .pane-section .pane-item td.vertical,.panes .pane-section tr .pane-cell.vertical,.panes .pane-section tr td.vertical,.panes tbody .pane-item .pane-cell.vertical,.panes tbody .pane-item td.vertical,.panes tbody tr .pane-cell.vertical,.panes tbody tr td.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.panes .pane-section .pane-item .pane-cell.description,.panes .pane-section .pane-item td.description,.panes .pane-section tr .pane-cell.description,.panes .pane-section tr td.description,.panes tbody .pane-item .pane-cell.description,.panes tbody .pane-item td.description,.panes tbody tr .pane-cell.description,.panes tbody tr td.description{align-self:stretch}.panes .pane-section .pane-item .pane-cell.value,.panes .pane-section .pane-item td.value,.panes .pane-section tr .pane-cell.value,.panes .pane-section tr td.value,.panes tbody .pane-item .pane-cell.value,.panes tbody .pane-item td.value,.panes tbody tr .pane-cell.value,.panes tbody tr td.value{flex:0;margin-left:20px;word-break:break-all;flex-basis:auto}.panes .pane-section .pane-item .pane-cell.value i.icon-legend,.panes .pane-section .pane-item td.value i.icon-legend,.panes .pane-section tr .pane-cell.value i.icon-legend,.panes .pane-section tr td.value i.icon-legend,.panes tbody .pane-item .pane-cell.value i.icon-legend,.panes tbody .pane-item td.value i.icon-legend,.panes tbody tr .pane-cell.value i.icon-legend,.panes tbody tr td.value i.icon-legend{font-size:10px;margin-right:10px}.panes .pane-section .pane-item .pane-cell.value i.icon-value,.panes .pane-section .pane-item td.value i.icon-value,.panes .pane-section tr .pane-cell.value i.icon-value,.panes .pane-section tr td.value i.icon-value,.panes tbody .pane-item .pane-cell.value i.icon-value,.panes tbody .pane-item td.value i.icon-value,.panes tbody tr .pane-cell.value i.icon-value,.panes tbody tr td.value i.icon-value{padding:2px 2px 1px;border-radius:2px;width:16px;text-align:center}.panes .pane-section .pane-item.title-item,.panes .pane-section tr.title-item,.panes tbody .pane-item.title-item,.panes tbody tr.title-item{border-bottom:1px solid #DDD}.panes .pane-section .pane-item.title-item td,.panes .pane-section tr.title-item td,.panes tbody .pane-item.title-item td,.panes tbody tr.title-item td{color:#027bffe6;font-size:16px;font-weight:700}.panes .pane-section .pane-item.title-item td i,.panes .pane-section tr.title-item td i,.panes tbody .pane-item.title-item td i,.panes tbody tr.title-item td i{margin-right:10px}.panes .pane-section .pane-item.title-item td .more,.panes .pane-section tr.title-item td .more,.panes tbody .pane-item.title-item td .more,.panes tbody tr.title-item td .more{flex:1;text-align:right;font-size:12px;color:#777;font-weight:400;font-style:italic}.panes .pane-section .pane-item.variable-item,.panes .pane-section tr.variable-item,.panes tbody .pane-item.variable-item,.panes tbody tr.variable-item{cursor:pointer}.panes .pane-section .pane-item.variable-item:hover,.panes .pane-section tr.variable-item:hover,.panes tbody .pane-item.variable-item:hover,.panes tbody tr.variable-item:hover{background-color:#027bff0d}.panes .pane-section .pane-item.variable-item:hover td,.panes .pane-section tr.variable-item:hover td,.panes tbody .pane-item.variable-item:hover td,.panes tbody tr.variable-item:hover td{font-weight:700;color:#000}.panes .pane-section .pane-item.variable-item:hover td i.icon-legend,.panes .pane-section tr.variable-item:hover td i.icon-legend,.panes tbody .pane-item.variable-item:hover td i.icon-legend,.panes tbody tr.variable-item:hover td i.icon-legend{color:#000}.panes .pane-section .pane-item.variable-item:hover td span,.panes .pane-section .pane-item.variable-item:hover td i.icon-value,.panes .pane-section tr.variable-item:hover td span,.panes .pane-section tr.variable-item:hover td i.icon-value,.panes tbody .pane-item.variable-item:hover td span,.panes tbody .pane-item.variable-item:hover td i.icon-value,.panes tbody tr.variable-item:hover td span,.panes tbody tr.variable-item:hover td i.icon-value{background-color:#0000004d;color:#000}.panes .pane-section .pane-item.variable-item:hover td.description,.panes .pane-section tr.variable-item:hover td.description,.panes tbody .pane-item.variable-item:hover td.description,.panes tbody tr.variable-item:hover td.description{color:#027bff}.tiles{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;align-self:stretch}.tiles .tiles-inner{display:flex;flex:1;flex-direction:column;flex-wrap:nowrap;justify-content:flex-start;align-items:flex-start;align-self:stretch;padding:2px}.tiles .tiles-inner .tile-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#000;margin:1px;padding:15px 10px 15px 15px;border-radius:4px;border-bottom:1px solid transparent}.tiles .tiles-inner .tile-item:hover,.tiles .tiles-inner .tile-item.active{border-left:4px solid rgb(2,123,255);border-radius:4px;border-bottom:2px solid #E7E7E7;background:#ddd;color:#027bff}.tiles .tiles-inner .tile-item:hover:hover,.tiles .tiles-inner .tile-item.active:hover{opacity:1}.tiles .tiles-inner .tile-item:hover.disabled,.tiles .tiles-inner .tile-item.active.disabled{border-left-color:#bbb;color:#000}.tiles .tiles-inner .tile-item:hover.starred,.tiles .tiles-inner .tile-item.active.starred{border-left-color:#ffa70a;color:#ffa70a}.tiles .tiles-inner .tile-item:hover.starred .tile-tail .head-icon i,.tiles .tiles-inner .tile-item.active.starred .tile-tail .head-icon i{opacity:1;color:#ffa70a;font-size:8px}.tiles .tiles-inner .tile-item.starred .tile-tail .head-icon i{font-size:8px;color:#ffa70a}.tiles .tiles-inner .tile-item.disabled .tile-body{opacity:.3}.tiles .tiles-inner .tile-item.disabled .tile-tail .head-icon i{color:#bbb;opacity:.4}.tiles .tiles-inner .tile-item .tile-tail{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin-left:10px;min-width:10px}.tiles .tiles-inner .tile-item .tile-tail .head-icon{flex:1;display:flex;text-align:right;flex-direction:row;justify-content:center;align-items:center;align-self:stretch}.tiles .tiles-inner .tile-item .tile-tail .head-icon i{font-size:6px;display:flex}.tiles .tiles-inner .tile-item .tile-tail .status-icons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.tiles .tiles-inner .tile-item .tile-tail .status-icons i{font-size:16px;margin-left:10px}.tiles .tiles-inner .tile-item .tile-body{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;font-size:15px;font-weight:400;letter-spacing:.8px;line-height:22px;margin:0;flex-wrap:nowrap}.tiles .tiles-inner .tile-item .tile-body i{font-size:8px;margin-right:5px}.tiles .tiles-inner .tile-item .tile-metrics{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin:0}.tiles .tiles-inner .tile-item .tile-metrics .foot-span span,.tiles .tiles-inner .tile-item .tile-metrics .foot-span{opacity:.8;font-size:13px;font-family:Courier New}span.empty{background:#ffa70a4d;color:#ffa70a;text-transform:lowercase;border-radius:2px;padding:2px 4px;font-weight:700}.inner-empty{display:flex;flex:1;flex-direction:column;align-self:stretch;justify-content:center;align-items:center}.inner-empty i{font-size:90px;opacity:.3;text-shadow:0 -1px #CCC,0 0px .5px #BBB}.toggle{position:relative;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.toggle input{display:none}.toggle input:checked+label{background:#027bff;border:1px solid rgba(0,0,0,.1);box-shadow:0 2px 2px #222 inset}.toggle input:checked+label:after{content:"";display:block;border-radius:50%;margin-left:21px;width:18px;height:18px;transition:.2s;background:#9bcbff;box-shadow:0 2px #0063ce}.toggle label{width:44px;height:26px;border-radius:15px;background:#ddd;cursor:pointer;border:1px solid rgba(0,0,0,.1);box-shadow:0 2px 2px #111 inset}.toggle label:after{content:"";display:block;border-radius:50%;width:18px;height:18px;margin:3px;background:#888;box-shadow:0 2px #555555e6;transition:.2s}.form-holder{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.form-holder form{max-width:434px}form{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}form .alert{padding:8px 15px;font-size:14px;margin:0 0 25px}.form-group{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;width:100%;flex:1;margin-bottom:20px}.form-group label{flex:1;font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.form-group label.btn-upload{color:#000;font-size:14px;flex:0;flex-basis:auto;margin-top:5px}.form-group label.btn-upload input[type=file]{display:none}.form-group label.btn-upload input[type=text]{margin-bottom:2px;margin-left:10px}.form-group label.btn-upload span.btn{padding-right:20px}.form-group label.btn-upload i{margin-left:3px;margin-right:10px}.form-group .widget{margin-top:10px;align-self:stretch;display:flex;flex-direction:row}.form-group .widget .btn{margin-left:10px}.form-group .widget.widget-unit select,.form-group .widget.widget-unit input{flex-grow:0;background:none;box-shadow:none;border:none;border-bottom:1px solid #CCC;border-radius:0;max-width:80px;padding-left:0;color:#000;text-align:center}.form-group .widget.widget-unit span{font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-left:5px;color:#aaa}.form-group .widget div{color:#000000b3;font-size:14px}.form-group .widget select,.form-group .widget input,.form-group .widget textarea{outline:none;padding:8px 0 5px 8px;border-radius:2px;border:1px solid rgba(0,0,0,.05);flex:1;background:#aaa;box-shadow:0 2px 1px #bbb,0 4px 2px #ccc inset;color:#222;font-size:14px}.form-group .widget select.input-naked,.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.input-naked,.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.input-naked,.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{color:#aaa;background:none;box-shadow:none;border:none;border-bottom:1px solid #CCC;border-radius:0}.form-group .widget select.input-naked,.form-group .widget input.input-naked,.form-group .widget textarea.input-naked{padding-left:0;color:#444}.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{border:none;background:#fff;border-radius:4px;padding-left:10px}.form-group.tab-select{border-bottom:1px solid #BBB;display:flex;flex-direction:row;position:relative;height:48px;padding:48px 0 0;flex:0;flex-basis:auto}.form-group.tab-select .widget{height:49px;margin-top:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;position:absolute;top:0;left:0;border-bottom:2px solid rgb(2,123,255);color:#027bff}.form-group.tab-select .widget select{border:none;background:none;box-shadow:none;padding:10px 35px 10px 10px;margin:0;color:inherit;appearance:none;-moz-appearance:none;-webkit-appearance:none;text-align:left;font-weight:700;cursor:pointer;border-radius:4px 4px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;z-index:2}.form-group.tab-select .widget i{margin-left:10px;margin-right:0}.form-group.tab-select .widget i.triangle{margin-top:-4px;margin-left:0;position:absolute;right:10px}.form-group.form-group-horizontal{margin:10px 0 20px;flex-direction:row;justify-content:flex-start;align-items:center}.form-group.form-group-horizontal .widget{margin:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.actions{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin:20px 0 0}.actions.actions-intermediate{margin:0}.actions button{margin-left:25px}.actions.actions-left{justify-content:flex-start}.actions.actions-left .btn{margin-left:0;margin-right:25px}.actions.actions-right{justify-content:flex-end}.actions.actions-right .btn{margin-left:10px;margin-right:0}.actions.actions-center{justify-content:center}.actions.actions-center .btn{margin-left:0;margin-right:0}.view-content-list main .main-container .page-content .inner{padding-bottom:10px}.view-content-list main .main-container .content-object-input{margin-bottom:6px}.view-content-list.dragover main .main-container .inner .dropzone{border-radius:4px;background:#0000001a;border:1px dashed rgba(0,0,0,.5)}.view-content-edit main .main-container .bottom-content .page-content{flex:1}.view-content-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px;flex:1}.view-content-edit main .main-container .bottom-content .page-panel.right-panel{flex:2;align-self:stretch;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start;align-items:center;padding:20px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3{color:#000;padding:10px 10px 10px 0;margin-bottom:20px;font-size:16px;align-self:stretch;margin-left:-8px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 span{border-width:1px;border-style:solid;border-radius:4px;padding:4px 10px;margin-left:5px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 i{font-size:16px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper{display:flex;flex-direction:column;width:100%;position:relative;padding-top:56.25%;overflow:hidden;border-radius:4px;outline:4px solid rgba(0,0,0,.1)}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.view-logs-list main .main-container .bottom-content .page-content .inner{padding-top:8px;padding-bottom:8px}.view-logs-list main .main-container .bottom-content .page-content .logs{flex:1;display:flex;flex-direction:column;align-self:stretch}.view-logs-list main .main-container .bottom-content .page-content .logs pre{flex:1;background:#000000e6;border:1px solid rgba(85,85,85,.5);border-radius:4px;font-family:monospace;color:#f2f2f2;padding:20px;overflow:auto;align-self:stretch}.view-node-player-edit main .main-container .bottom-content .page-content{flex:1}.view-node-player-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px}.view-player-group-list main .main-container .players-holder ul.players{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #DDD;border-radius:4px;padding:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .head{display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666;font-size:10px;padding:10px;cursor:default}.view-player-group-list main .main-container .players-holder ul.players li.player-item:hover .infos .title{color:#000}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px;flex:1;max-width:180px;background:#fff;border:1px solid #CCC;border-radius:4px;padding:3px 7px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .title{font-size:13px;color:#555;display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body{display:block;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#ebebeb;padding:10px;align-self:stretch;flex:1;border-radius:4px;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px;font-size:12px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body span{opacity:.5;margin-right:7px;font-size:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a{color:#000}.view-playlist-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.view-playlist-list main .main-container .modal-playlist-qrcode h2{text-align:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic{text-align:center;display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic img{border:4px solid #AAA;border-radius:4px}.view-playlist-list main .main-container .modal-slide h2{font-size:20px}.view-playlist-list main .main-container .modal-slide input[disabled]{color:#555}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select{margin-right:5px}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input{font-size:12px;max-width:50%}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input.datetimepicker{margin-left:5px;padding-left:0}.view-playlist-list main .main-container .bottom-content .page-content{flex:1}.view-playlist-list main .main-container .bottom-content .page-content.with-right-panel{flex:.5}.view-playlist-list main .main-container .bottom-content .page-content .inner{padding:0}.view-playlist-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#222;text-decoration:none;margin:0 0 20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder{margin:20px 20px 20px 10px;flex:1}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder{margin:20px 0 0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder form{max-width:initial}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder .form-group{flex-grow:0;margin-bottom:5px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#000;padding-bottom:10px;text-decoration:none}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4.divide{border-top:1px solid #DDD;margin-top:20px;padding-top:20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic{margin-top:10px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic img{border:1px dashed #AAA;padding:5px;border-radius:4px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview{background:#000;border:1px solid rgba(0,0,0,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview iframe{flex:1;align-self:stretch}.view-playlist-list main .main-container .bottom-content .page-content .inner .slides-holder{align-self:stretch;border-right:1px solid #DDD;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-playlist-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-player-group-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.view-player-group-list main .main-container .bottom-content .page-content{flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner{padding:0}.view-player-group-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#222;text-decoration:none;margin:0 0 20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder{margin:20px 20px 20px 10px;flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder{margin:20px 0 0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder form{max-width:initial}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder .form-group{flex-grow:0;margin-bottom:15px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#000;padding-bottom:10px;text-decoration:none}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4.divide{border-top:1px solid #DDD;margin-top:20px;padding-top:20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview{background:#000;border:1px solid rgba(0,0,0,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview iframe{flex:1;align-self:stretch}.view-player-group-list main .main-container .bottom-content .page-content .inner .players-holder{align-self:stretch;border-right:1px solid #DDD;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-player-group-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-playlist-list main .main-container .page-content .inner h3.divide{margin-top:50px}.view-playlist-list main .main-container .slides-holder ul.slides{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #DDD;border-radius:4px;padding:10px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .title{color:#ccc}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .type i{color:#ccc!important}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .body{opacity:0}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort{display:flex;flex-direction:column;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a{color:#666;font-size:10px;padding:10px;cursor:move}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a:hover{color:#027bff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px;flex:1;max-width:120px;background:#fff;border:1px solid #CCC;border-radius:4px;padding:3px 7px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos:hover .title{color:#000}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .title{display:block;word-break:break-all;font-size:13px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#ebebeb;padding:10px;align-self:stretch;flex:1;border-radius:4px;font-size:13px;color:#000}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;max-width:315px;overflow-x:auto;white-space:nowrap}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-bottom:8px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .prefix,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .prefix{margin-left:5px;margin-right:5px;font-size:12px;color:#222}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .cron-description,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .cron-description{display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-left:5px;font-size:10px;opacity:.5}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a{color:#000}.view-plugins-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-settings-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list .reboot{color:#333}.view-login main .main-container{position:relative}.view-login main .main-container .alert{position:absolute;top:0;left:0;right:0}.view-login main .main-container .login-content{display:flex;flex:1;flex-direction:column;justify-content:center;align-items:center}.view-login main .main-container .login-content .form-holder{width:400px;display:flex;justify-content:center;align-items:center;align-self:stretch;margin-left:auto;margin-right:auto}.view-login main .main-container .login-content .form-holder .card{display:flex;justify-content:center;align-items:center;align-self:stretch;border-radius:6px;padding:50px;color:#fff}.view-login main .main-container .login-content .form-holder .card form{padding:0;flex:1;display:flex;justify-content:center;align-items:center;align-self:stretch}.view-login main .main-container .login-content .form-holder .card form .actions{margin-top:10px}.view-login main .main-container .login-content .form-holder .card form .actions .btn{padding-left:20px;padding-right:20px}.view-auth-user-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item.disabled .tile-body{opacity:.3;text-decoration-line:line-through}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item .tile-tail a:last-child{margin-left:10px}menu h1.logo a{color:#666}menu:hover h1.logo a{color:transparent}ul.explr-dirview li a i{color:#027bff}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #666 inset}button.btn-naked,.btn.btn-naked{color:#777}button.btn-naked:hover,.btn.btn-naked:hover{box-shadow:0 2px 0 1px #666 inset}.tiles .tiles-inner .tile-item:hover,.tiles .tiles-inner .tile-item.active{background:#fff}.panes .pane-section .pane-item:nth-child(odd),.panes .pane-section tr:nth-child(odd),.panes tbody .pane-item:nth-child(odd),.panes tbody tr:nth-child(odd){background-color:#e4e4e4}.panes .pane-section .pane-item:nth-child(2n),.panes .pane-section tr:nth-child(2n),.panes tbody .pane-item:nth-child(2n),.panes tbody tr:nth-child(2n){background-color:#eee}.form-group .widget select,.form-group .widget input,.form-group .widget textarea{box-shadow:0 2px 1px #aaa,0 4px 2px #aaa inset;color:#555;background:#ccc}.toggle label{box-shadow:0 2px 2px #aaa inset}.toggle label:after{box-shadow:0 2px #aaaaaae6}.modal-explr-picker .explr-tree{background:#fff}ul.pills{box-shadow:1px 1px .5px .5px inset #aaa3}ul.pills li a{color:#444}ul.pills li.active a{color:#fff;background:#027bff}.breadcrumb-container ul.breadcrumb{box-shadow:1px 1px .5px .5px inset #aaa3}.breadcrumb-container ul.breadcrumb li a,.breadcrumb-container ul.breadcrumb li span,.breadcrumb-container ul.breadcrumb li{color:#444}.breadcrumb-container ul.breadcrumb li:hover a{color:#fff}.breadcrumb-container ul.breadcrumb li.divider i{color:#bbb}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview,.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview{border-color:#ccc}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body{background:#ddd}.dropdown ul.dropdown-menu li.danger:hover a{color:#fff}.inner-empty i{color:#bbb;text-shadow:0 -1px #777,0 0px .5px #444}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a{color:#888}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a:hover,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a:hover{color:#fff} +.warning{color:#e56723!important}.bg-warning{background-color:#e56723!important}.border-warning{border-color:#e56723!important}.info{color:#027bff!important}.bg-info{background-color:#027bff!important}.border-info{border-color:#027bff!important}.info-alt{color:#075cb7!important}.bg-info-alt{background-color:#075cb7!important}.border-info-alt{border-color:#075cb7!important}.success{color:#11a948!important}.bg-success{background-color:#11a948!important}.border-success{border-color:#11a948!important}.success-alt{color:#11a948!important}.bg-success-alt{background-color:#11a948!important}.border-success-alt{border-color:#11a948!important}.error{color:#ef0e5d!important}.bg-error{background-color:#ef0e5d!important}.border-error{border-color:#ef0e5d!important}.error-alt{color:#c20941!important}.bg-error-alt{background-color:#c20941!important}.border-error-alt{border-color:#c20941!important}.danger{color:#ef0e5d!important}.bg-danger{background-color:#ef0e5d!important}.border-danger{border-color:#ef0e5d!important}.danger-alt{color:#c20941!important}.bg-danger-alt{background-color:#c20941!important}.border-danger-alt{border-color:#c20941!important}.purple{color:#bc48ff!important}.bg-purple{background-color:#bc48ff!important}.border-purple{border-color:#bc48ff!important}.purple-alt{color:#692fbd!important}.bg-purple-alt{background-color:#692fbd!important}.border-purple-alt{border-color:#692fbd!important}.neutral{color:#464646!important}.bg-neutral{background-color:#464646!important}.border-neutral{border-color:#464646!important}.yellow{color:#ffa70a!important}.bg-yellow{background-color:#ffa70a!important}.border-yellow{border-color:#ffa70a!important}.white{color:#fff!important}.bg-white{background-color:#fff!important}.border-white{border-color:#fff!important}.black{color:#000!important}.bg-black{background-color:#000!important}.border-black{border-color:#000!important}.youtube{color:#fd3c01!important}.bg-youtube{background-color:#fd3c01!important}.border-youtube{border-color:#fd3c01!important}.raspbian{color:#b61240!important}.bg-raspbian{background-color:#b61240!important}.border-raspbian{border-color:#b61240!important}.windows{color:#12a7e3!important}.bg-windows{background-color:#12a7e3!important}.border-windows{border-color:#12a7e3!important}.macos{color:#b3bcc2!important}.bg-macos{background-color:#b3bcc2!important}.border-macos{border-color:#b3bcc2!important}.debian{color:#cf084e!important}.bg-debian{background-color:#cf084e!important}.border-debian{border-color:#cf084e!important}.fedora{color:#52a2da!important}.bg-fedora{background-color:#52a2da!important}.border-fedora{border-color:#52a2da!important}.ubuntu{color:#d64514!important}.bg-ubuntu{background-color:#d64514!important}.border-ubuntu{border-color:#d64514!important}.suse{color:#6fb425!important}.bg-suse{background-color:#6fb425!important}.border-suse{border-color:#6fb425!important}.redhat{color:#c60200!important}.bg-redhat{background-color:#c60200!important}.border-redhat{border-color:#c60200!important}.centos{color:#9b4c88!important}.bg-centos{background-color:#9b4c88!important}.border-centos{border-color:#9b4c88!important}.other{color:#ffa70a!important}.bg-other{background-color:#ffa70a!important}.border-other{border-color:#ffa70a!important}button.btn-warning,.btn.btn-warning{background:#e56723;box-shadow:0 2px #913e11}button.btn-warning:hover,.btn.btn-warning:hover{box-shadow:0 2px 0 1px #913e11 inset}button.btn-warning:focus,.btn.btn-warning:focus{background:#913e11}button.btn-wire-warning,.btn.btn-wire-warning{background:transparent;box-shadow:none;border:2px solid rgb(229,103,35);color:#000c}button.btn-wire-warning i.btn-match,.btn.btn-wire-warning i.btn-match{color:#e56723}button.btn-wire-warning:hover,.btn.btn-wire-warning:hover{background:#e567230d;border-color:#be5117;color:#be5117;box-shadow:none}button.btn-wire-warning:focus,.btn.btn-wire-warning:focus{border-color:#913e11;background:transparent}button.btn-info,.btn.btn-info{background:#027bff;box-shadow:0 2px #004a9b}button.btn-info:hover,.btn.btn-info:hover{box-shadow:0 2px 0 1px #004a9b inset}button.btn-info:focus,.btn.btn-info:focus{background:#004a9b}button.btn-wire-info,.btn.btn-wire-info{background:transparent;box-shadow:none;border:2px solid rgb(2,123,255);color:#000c}button.btn-wire-info i.btn-match,.btn.btn-wire-info i.btn-match{color:#027bff}button.btn-wire-info:hover,.btn.btn-wire-info:hover{background:#027bff0d;border-color:#0063ce;color:#0063ce;box-shadow:none}button.btn-wire-info:focus,.btn.btn-wire-info:focus{border-color:#004a9b;background:transparent}button.btn-info-alt,.btn.btn-info-alt{background:#075cb7;box-shadow:0 2px #032b55}button.btn-info-alt:hover,.btn.btn-info-alt:hover{box-shadow:0 2px 0 1px #032b55 inset}button.btn-info-alt:focus,.btn.btn-info-alt:focus{background:#032b55}button.btn-wire-info-alt,.btn.btn-wire-info-alt{background:transparent;box-shadow:none;border:2px solid rgb(7,92,183);color:#000c}button.btn-wire-info-alt i.btn-match,.btn.btn-wire-info-alt i.btn-match{color:#075cb7}button.btn-wire-info-alt:hover,.btn.btn-wire-info-alt:hover{background:#075cb70d;border-color:#054386;color:#054386;box-shadow:none}button.btn-wire-info-alt:focus,.btn.btn-wire-info-alt:focus{border-color:#032b55;background:transparent}button.btn-success,.btn.btn-success{background:#11a948;box-shadow:0 2px #084c21}button.btn-success:hover,.btn.btn-success:hover{box-shadow:0 2px 0 1px #084c21 inset}button.btn-success:focus,.btn.btn-success:focus{background:#084c21}button.btn-wire-success,.btn.btn-wire-success{background:transparent;box-shadow:none;border:2px solid rgb(17,169,72);color:#000c}button.btn-wire-success i.btn-match,.btn.btn-wire-success i.btn-match{color:#11a948}button.btn-wire-success:hover,.btn.btn-wire-success:hover{background:#11a9480d;border-color:#0c7b34;color:#0c7b34;box-shadow:none}button.btn-wire-success:focus,.btn.btn-wire-success:focus{border-color:#084c21;background:transparent}button.btn-success-alt,.btn.btn-success-alt{background:#11a948;box-shadow:0 2px #084c21}button.btn-success-alt:hover,.btn.btn-success-alt:hover{box-shadow:0 2px 0 1px #084c21 inset}button.btn-success-alt:focus,.btn.btn-success-alt:focus{background:#084c21}button.btn-wire-success-alt,.btn.btn-wire-success-alt{background:transparent;box-shadow:none;border:2px solid rgb(17,169,72);color:#000c}button.btn-wire-success-alt i.btn-match,.btn.btn-wire-success-alt i.btn-match{color:#11a948}button.btn-wire-success-alt:hover,.btn.btn-wire-success-alt:hover{background:#11a9480d;border-color:#0c7b34;color:#0c7b34;box-shadow:none}button.btn-wire-success-alt:focus,.btn.btn-wire-success-alt:focus{border-color:#084c21;background:transparent}button.btn-error,.btn.btn-error{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-error:hover,.btn.btn-error:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-error:focus,.btn.btn-error:focus{background:#8f0838}button.btn-wire-error,.btn.btn-wire-error{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#000c}button.btn-wire-error i.btn-match,.btn.btn-wire-error i.btn-match{color:#ef0e5d}button.btn-wire-error:hover,.btn.btn-wire-error:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-error:focus,.btn.btn-wire-error:focus{border-color:#8f0838;background:transparent}button.btn-error-alt,.btn.btn-error-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-error-alt:hover,.btn.btn-error-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-error-alt:focus,.btn.btn-error-alt:focus{background:#610420}button.btn-wire-error-alt,.btn.btn-wire-error-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#000c}button.btn-wire-error-alt i.btn-match,.btn.btn-wire-error-alt i.btn-match{color:#c20941}button.btn-wire-error-alt:hover,.btn.btn-wire-error-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-error-alt:focus,.btn.btn-wire-error-alt:focus{border-color:#610420;background:transparent}button.btn-danger,.btn.btn-danger{background:#ef0e5d;box-shadow:0 2px #8f0838}button.btn-danger:hover,.btn.btn-danger:hover{box-shadow:0 2px 0 1px #8f0838 inset}button.btn-danger:focus,.btn.btn-danger:focus{background:#8f0838}button.btn-wire-danger,.btn.btn-wire-danger{background:transparent;box-shadow:none;border:2px solid rgb(239,14,93);color:#000c}button.btn-wire-danger i.btn-match,.btn.btn-wire-danger i.btn-match{color:#ef0e5d}button.btn-wire-danger:hover,.btn.btn-wire-danger:hover{background:#ef0e5d0d;border-color:#bf0b4a;color:#bf0b4a;box-shadow:none}button.btn-wire-danger:focus,.btn.btn-wire-danger:focus{border-color:#8f0838;background:transparent}button.btn-danger-alt,.btn.btn-danger-alt{background:#c20941;box-shadow:0 2px #610420}button.btn-danger-alt:hover,.btn.btn-danger-alt:hover{box-shadow:0 2px 0 1px #610420 inset}button.btn-danger-alt:focus,.btn.btn-danger-alt:focus{background:#610420}button.btn-wire-danger-alt,.btn.btn-wire-danger-alt{background:transparent;box-shadow:none;border:2px solid rgb(194,9,65);color:#000c}button.btn-wire-danger-alt i.btn-match,.btn.btn-wire-danger-alt i.btn-match{color:#c20941}button.btn-wire-danger-alt:hover,.btn.btn-wire-danger-alt:hover{background:#c209410d;border-color:#910731;color:#910731;box-shadow:none}button.btn-wire-danger-alt:focus,.btn.btn-wire-danger-alt:focus{border-color:#610420;background:transparent}button.btn-purple,.btn.btn-purple{background:#bc48ff;box-shadow:0 2px #8f00e1}button.btn-purple:hover,.btn.btn-purple:hover{box-shadow:0 2px 0 1px #8f00e1 inset}button.btn-purple:focus,.btn.btn-purple:focus{background:#8f00e1}button.btn-wire-purple,.btn.btn-wire-purple{background:transparent;box-shadow:none;border:2px solid rgb(188,72,255);color:#000c}button.btn-wire-purple i.btn-match,.btn.btn-wire-purple i.btn-match{color:#bc48ff}button.btn-wire-purple:hover,.btn.btn-wire-purple:hover{background:#bc48ff0d;border-color:#a915ff;color:#a915ff;box-shadow:none}button.btn-wire-purple:focus,.btn.btn-wire-purple:focus{border-color:#8f00e1;background:transparent}button.btn-purple-alt,.btn.btn-purple-alt{background:#692fbd;box-shadow:0 2px #3c1b6b}button.btn-purple-alt:hover,.btn.btn-purple-alt:hover{box-shadow:0 2px 0 1px #3c1b6b inset}button.btn-purple-alt:focus,.btn.btn-purple-alt:focus{background:#3c1b6b}button.btn-wire-purple-alt,.btn.btn-wire-purple-alt{background:transparent;box-shadow:none;border:2px solid rgb(105,47,189);color:#000c}button.btn-wire-purple-alt i.btn-match,.btn.btn-wire-purple-alt i.btn-match{color:#692fbd}button.btn-wire-purple-alt:hover,.btn.btn-wire-purple-alt:hover{background:#692fbd0d;border-color:#522594;color:#522594;box-shadow:none}button.btn-wire-purple-alt:focus,.btn.btn-wire-purple-alt:focus{border-color:#3c1b6b;background:transparent}button.btn-neutral,.btn.btn-neutral{background:#464646;box-shadow:0 2px #131313}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #131313 inset}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#131313}button.btn-wire-neutral,.btn.btn-wire-neutral{background:transparent;box-shadow:none;border:2px solid rgb(70,70,70);color:#000c}button.btn-wire-neutral i.btn-match,.btn.btn-wire-neutral i.btn-match{color:#464646}button.btn-wire-neutral:hover,.btn.btn-wire-neutral:hover{background:#4646460d;border-color:#2d2d2d;color:#2d2d2d;box-shadow:none}button.btn-wire-neutral:focus,.btn.btn-wire-neutral:focus{border-color:#131313;background:transparent}button.btn-yellow,.btn.btn-yellow{background:#ffa70a;box-shadow:0 2px #a36800}button.btn-yellow:hover,.btn.btn-yellow:hover{box-shadow:0 2px 0 1px #a36800 inset}button.btn-yellow:focus,.btn.btn-yellow:focus{background:#a36800}button.btn-wire-yellow,.btn.btn-wire-yellow{background:transparent;box-shadow:none;border:2px solid rgb(255,167,10);color:#000c}button.btn-wire-yellow i.btn-match,.btn.btn-wire-yellow i.btn-match{color:#ffa70a}button.btn-wire-yellow:hover,.btn.btn-wire-yellow:hover{background:#ffa70a0d;border-color:#d68900;color:#d68900;box-shadow:none}button.btn-wire-yellow:focus,.btn.btn-wire-yellow:focus{border-color:#a36800;background:transparent}button.btn-white,.btn.btn-white{background:#fff;box-shadow:0 2px #ccc}button.btn-white:hover,.btn.btn-white:hover{box-shadow:0 2px 0 1px #ccc inset}button.btn-white:focus,.btn.btn-white:focus{background:#ccc}button.btn-wire-white,.btn.btn-wire-white{background:transparent;box-shadow:none;border:2px solid rgb(255,255,255);color:#000c}button.btn-wire-white i.btn-match,.btn.btn-wire-white i.btn-match{color:#fff}button.btn-wire-white:hover,.btn.btn-wire-white:hover{background:#ffffff0d;border-color:#e6e6e6;color:#e6e6e6;box-shadow:none}button.btn-wire-white:focus,.btn.btn-wire-white:focus{border-color:#ccc;background:transparent}button.btn-black,.btn.btn-black{background:#000;box-shadow:0 2px #000}button.btn-black:hover,.btn.btn-black:hover{box-shadow:0 2px 0 1px #000 inset}button.btn-black:focus,.btn.btn-black:focus{background:#000}button.btn-wire-black,.btn.btn-wire-black{background:transparent;box-shadow:none;border:2px solid rgb(0,0,0);color:#000c}button.btn-wire-black i.btn-match,.btn.btn-wire-black i.btn-match{color:#000}button.btn-wire-black:hover,.btn.btn-wire-black:hover{background:#0000000d;border-color:#000;color:#000;box-shadow:none}button.btn-wire-black:focus,.btn.btn-wire-black:focus{border-color:#000;background:transparent}button.btn-youtube,.btn.btn-youtube{background:#fd3c01;box-shadow:0 2px #972401}button.btn-youtube:hover,.btn.btn-youtube:hover{box-shadow:0 2px 0 1px #972401 inset}button.btn-youtube:focus,.btn.btn-youtube:focus{background:#972401}button.btn-wire-youtube,.btn.btn-wire-youtube{background:transparent;box-shadow:none;border:2px solid rgb(253,60,1);color:#000c}button.btn-wire-youtube i.btn-match,.btn.btn-wire-youtube i.btn-match{color:#fd3c01}button.btn-wire-youtube:hover,.btn.btn-wire-youtube:hover{background:#fd3c010d;border-color:#ca3001;color:#ca3001;box-shadow:none}button.btn-wire-youtube:focus,.btn.btn-wire-youtube:focus{border-color:#972401;background:transparent}button.btn-raspbian,.btn.btn-raspbian{background:#b61240;box-shadow:0 2px #59091f}button.btn-raspbian:hover,.btn.btn-raspbian:hover{box-shadow:0 2px 0 1px #59091f inset}button.btn-raspbian:focus,.btn.btn-raspbian:focus{background:#59091f}button.btn-wire-raspbian,.btn.btn-wire-raspbian{background:transparent;box-shadow:none;border:2px solid rgb(182,18,64);color:#000c}button.btn-wire-raspbian i.btn-match,.btn.btn-wire-raspbian i.btn-match{color:#b61240}button.btn-wire-raspbian:hover,.btn.btn-wire-raspbian:hover{background:#b612400d;border-color:#880d30;color:#880d30;box-shadow:none}button.btn-wire-raspbian:focus,.btn.btn-wire-raspbian:focus{border-color:#59091f;background:transparent}button.btn-windows,.btn.btn-windows{background:#12a7e3;box-shadow:0 2px #0b6184}button.btn-windows:hover,.btn.btn-windows:hover{box-shadow:0 2px 0 1px #0b6184 inset}button.btn-windows:focus,.btn.btn-windows:focus{background:#0b6184}button.btn-wire-windows,.btn.btn-wire-windows{background:transparent;box-shadow:none;border:2px solid rgb(18,167,227);color:#000c}button.btn-wire-windows i.btn-match,.btn.btn-wire-windows i.btn-match{color:#12a7e3}button.btn-wire-windows:hover,.btn.btn-wire-windows:hover{background:#12a7e30d;border-color:#0e84b4;color:#0e84b4;box-shadow:none}button.btn-wire-windows:focus,.btn.btn-wire-windows:focus{border-color:#0b6184;background:transparent}button.btn-macos,.btn.btn-macos{background:#b3bcc2;box-shadow:0 2px #7a8a95}button.btn-macos:hover,.btn.btn-macos:hover{box-shadow:0 2px 0 1px #7a8a95 inset}button.btn-macos:focus,.btn.btn-macos:focus{background:#7a8a95}button.btn-wire-macos,.btn.btn-wire-macos{background:transparent;box-shadow:none;border:2px solid rgb(179,188,194);color:#000c}button.btn-wire-macos i.btn-match,.btn.btn-wire-macos i.btn-match{color:#b3bcc2}button.btn-wire-macos:hover,.btn.btn-wire-macos:hover{background:#b3bcc20d;border-color:#97a3ab;color:#97a3ab;box-shadow:none}button.btn-wire-macos:focus,.btn.btn-wire-macos:focus{border-color:#7a8a95;background:transparent}button.btn-debian,.btn.btn-debian{background:#cf084e;box-shadow:0 2px #6d0429}button.btn-debian:hover,.btn.btn-debian:hover{box-shadow:0 2px 0 1px #6d0429 inset}button.btn-debian:focus,.btn.btn-debian:focus{background:#6d0429}button.btn-wire-debian,.btn.btn-wire-debian{background:transparent;box-shadow:none;border:2px solid rgb(207,8,78);color:#000c}button.btn-wire-debian i.btn-match,.btn.btn-wire-debian i.btn-match{color:#cf084e}button.btn-wire-debian:hover,.btn.btn-wire-debian:hover{background:#cf084e0d;border-color:#9e063b;color:#9e063b;box-shadow:none}button.btn-wire-debian:focus,.btn.btn-wire-debian:focus{border-color:#6d0429;background:transparent}button.btn-fedora,.btn.btn-fedora{background:#52a2da;box-shadow:0 2px #236ea3}button.btn-fedora:hover,.btn.btn-fedora:hover{box-shadow:0 2px 0 1px #236ea3 inset}button.btn-fedora:focus,.btn.btn-fedora:focus{background:#236ea3}button.btn-wire-fedora,.btn.btn-wire-fedora{background:transparent;box-shadow:none;border:2px solid rgb(82,162,218);color:#000c}button.btn-wire-fedora i.btn-match,.btn.btn-wire-fedora i.btn-match{color:#52a2da}button.btn-wire-fedora:hover,.btn.btn-wire-fedora:hover{background:#52a2da0d;border-color:#2c8bcd;color:#2c8bcd;box-shadow:none}button.btn-wire-fedora:focus,.btn.btn-wire-fedora:focus{border-color:#236ea3;background:transparent}button.btn-ubuntu,.btn.btn-ubuntu{background:#d64514;box-shadow:0 2px #79270b}button.btn-ubuntu:hover,.btn.btn-ubuntu:hover{box-shadow:0 2px 0 1px #79270b inset}button.btn-ubuntu:focus,.btn.btn-ubuntu:focus{background:#79270b}button.btn-wire-ubuntu,.btn.btn-wire-ubuntu{background:transparent;box-shadow:none;border:2px solid rgb(214,69,20);color:#000c}button.btn-wire-ubuntu i.btn-match,.btn.btn-wire-ubuntu i.btn-match{color:#d64514}button.btn-wire-ubuntu:hover,.btn.btn-wire-ubuntu:hover{background:#d645140d;border-color:#a73610;color:#a73610;box-shadow:none}button.btn-wire-ubuntu:focus,.btn.btn-wire-ubuntu:focus{border-color:#79270b;background:transparent}button.btn-suse,.btn.btn-suse{background:#6fb425;box-shadow:0 2px #3b5f14}button.btn-suse:hover,.btn.btn-suse:hover{box-shadow:0 2px 0 1px #3b5f14 inset}button.btn-suse:focus,.btn.btn-suse:focus{background:#3b5f14}button.btn-wire-suse,.btn.btn-wire-suse{background:transparent;box-shadow:none;border:2px solid rgb(111,180,37);color:#000c}button.btn-wire-suse i.btn-match,.btn.btn-wire-suse i.btn-match{color:#6fb425}button.btn-wire-suse:hover,.btn.btn-wire-suse:hover{background:#6fb4250d;border-color:#558a1c;color:#558a1c;box-shadow:none}button.btn-wire-suse:focus,.btn.btn-wire-suse:focus{border-color:#3b5f14;background:transparent}button.btn-redhat,.btn.btn-redhat{background:#c60200;box-shadow:0 2px #600100}button.btn-redhat:hover,.btn.btn-redhat:hover{box-shadow:0 2px 0 1px #600100 inset}button.btn-redhat:focus,.btn.btn-redhat:focus{background:#600100}button.btn-wire-redhat,.btn.btn-wire-redhat{background:transparent;box-shadow:none;border:2px solid rgb(198,2,0);color:#000c}button.btn-wire-redhat i.btn-match,.btn.btn-wire-redhat i.btn-match{color:#c60200}button.btn-wire-redhat:hover,.btn.btn-wire-redhat:hover{background:#c602000d;border-color:#930100;color:#930100;box-shadow:none}button.btn-wire-redhat:focus,.btn.btn-wire-redhat:focus{border-color:#600100;background:transparent}button.btn-centos,.btn.btn-centos{background:#9b4c88;box-shadow:0 2px #572a4c}button.btn-centos:hover,.btn.btn-centos:hover{box-shadow:0 2px 0 1px #572a4c inset}button.btn-centos:focus,.btn.btn-centos:focus{background:#572a4c}button.btn-wire-centos,.btn.btn-wire-centos{background:transparent;box-shadow:none;border:2px solid rgb(155,76,136);color:#000c}button.btn-wire-centos i.btn-match,.btn.btn-wire-centos i.btn-match{color:#9b4c88}button.btn-wire-centos:hover,.btn.btn-wire-centos:hover{background:#9b4c880d;border-color:#793b6a;color:#793b6a;box-shadow:none}button.btn-wire-centos:focus,.btn.btn-wire-centos:focus{border-color:#572a4c;background:transparent}button.btn-other,.btn.btn-other{background:#ffa70a;box-shadow:0 2px #a36800}button.btn-other:hover,.btn.btn-other:hover{box-shadow:0 2px 0 1px #a36800 inset}button.btn-other:focus,.btn.btn-other:focus{background:#a36800}button.btn-wire-other,.btn.btn-wire-other{background:transparent;box-shadow:none;border:2px solid rgb(255,167,10);color:#000c}button.btn-wire-other i.btn-match,.btn.btn-wire-other i.btn-match{color:#ffa70a}button.btn-wire-other:hover,.btn.btn-wire-other:hover{background:#ffa70a0d;border-color:#d68900;color:#d68900;box-shadow:none}button.btn-wire-other:focus,.btn.btn-wire-other:focus{border-color:#a36800;background:transparent}.alert.alert-warning{color:#e56723;background:#e5672333}.alert.alert-info{color:#027bff;background:#027bff33}.alert.alert-info-alt{color:#075cb7;background:#075cb733}.alert.alert-success,.alert.alert-success-alt{color:#11a948;background:#11a94833}.alert.alert-error{color:#ef0e5d;background:#ef0e5d33}.alert.alert-error-alt{color:#c20941;background:#c2094133}.alert.alert-danger{color:#ef0e5d;background:#ef0e5d33}.alert.alert-danger-alt{color:#c20941;background:#c2094133}.alert.alert-purple{color:#bc48ff;background:#bc48ff33}.alert.alert-purple-alt{color:#692fbd;background:#692fbd33}.alert.alert-neutral{color:#464646;background:#46464633}.alert.alert-yellow{color:#ffa70a;background:#ffa70a33}.alert.alert-white{color:#fff;background:#fff3}.alert.alert-black{color:#000;background:#0003}.alert.alert-youtube{color:#fd3c01;background:#fd3c0133}.alert.alert-raspbian{color:#b61240;background:#b6124033}.alert.alert-windows{color:#12a7e3;background:#12a7e333}.alert.alert-macos{color:#b3bcc2;background:#b3bcc233}.alert.alert-debian{color:#cf084e;background:#cf084e33}.alert.alert-fedora{color:#52a2da;background:#52a2da33}.alert.alert-ubuntu{color:#d64514;background:#d6451433}.alert.alert-suse{color:#6fb425;background:#6fb42533}.alert.alert-redhat{color:#c60200;background:#c6020033}.alert.alert-centos{color:#9b4c88;background:#9b4c8833}.alert.alert-other{color:#ffa70a;background:#ffa70a33}@font-face{font-family:Sixtyfour;src:url(../../webfonts/Sixtyfour-Regular.ttf) format("truetype")}*{font-family:Roboto,Arial,"sans-serif";margin:0;padding:0;box-sizing:border-box}html{background-color:#eee}body,html{height:100%;font-family:Arial,sans-serif}.container{display:flex;height:100vh}.horizontal{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;align-self:stretch}main{flex:1;display:flex;flex-direction:column}main .main-container{display:flex;flex-direction:column;flex:1;overflow:hidden;align-self:stretch}main .main-container .top-content{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:10px 10px 10px 15px;background:transparent;border-bottom:1px solid #DDD}main .main-container .top-content h1{color:#000;font-weight:600;font-size:24px}main .main-container .top-content .top-actions{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}main .main-container .top-content .top-actions.align-right{justify-content:flex-end;margin-right:10px}main .main-container .top-content .top-actions .btn:first-child{margin-left:0!important}main .main-container .top-content .top-actions .btn,main .main-container .top-content .top-actions button{margin-left:10px}main .main-container .bottom-content{display:flex;flex-direction:row;align-self:stretch;justify-content:flex-start;align-items:flex-start;flex:1;overflow-y:auto;background:radial-gradient(circle at 0% 53%,rgba(239,14,93,.8) 10%,transparent 45%),radial-gradient(circle at 135% 53%,rgba(2,123,255,.8) 10%,transparent 95%),radial-gradient(circle at 50% 80%,rgba(17,169,72,.8) 40%,transparent 95%)}main .main-container .bottom-content .page-content{flex:2;overflow-y:auto;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;background:#fffc;padding:5px}main .main-container .bottom-content .page-content .inner{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:0 10px 40px;background:#eee;align-self:stretch}main .main-container .bottom-content .page-panel{flex:1;overflow-y:auto;align-self:stretch;background:#eee;border-top:none}main .main-container .bottom-content .page-panel.left-panel{border-right:1px solid #DDD;border-left:none}main .main-container .bottom-content .page-panel.left-panel.explr-explorer{flex:.5;overflow-y:auto;padding:0;background:#eee;box-shadow:1px 1px .5px .5px inset #fff3;max-width:250px}main .main-container .bottom-content .page-panel.right-panel{border-left:1px solid #DDD;border-right:none}.invisible{visibility:hidden!important}.hidden{display:none!important}.tac{text-align:center!important}.tar{text-align:right!important}a{text-decoration:none}.normal{font-weight:400!important}.bold{font-weight:700!important}.col{display:flex;flex:1;flex-direction:column;align-self:stretch}main .context-bar{padding:10px;position:sticky;top:0;z-index:1000;max-height:80px;border-bottom:1px solid #DDD;display:flex;flex-direction:row;align-items:center}main .context-bar .context-menu{flex:1}main .context-bar .context-menu .inner{display:flex}main .context-bar .context-menu .inner ul.pills{margin:0}main .context-bar .context-divider{width:1px;height:100%;background:#ddd;margin-left:20px;margin-right:20px}main .context-bar .contex-tail{margin-right:20px}main .context-bar .contex-tail .btn{margin-right:0}main .context-bar .context-user{display:flex;margin-right:20px}main .context-bar .context-user .trigger{color:#000}main .context-bar .context-user .trigger .avatar{width:32px;height:32px;border-radius:4px;background:#555;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 #BBB;color:#fff}main .context-bar .context-user .trigger i{margin-top:-5px;margin-left:10px}menu{width:300px;background:#eee;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:1px solid #DDD;min-width:64px}menu h1.logo{margin:40px 0 0 10px;align-self:stretch;display:flex}menu h1.logo a{text-align:center;text-shadow:0px 0 0 rgb(255,255,255),0px 2px 0 #BBB,0 0px 0 rgb(17,169,72),-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;color:#fff}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 rgb(255,255,255),3px 2px 0 #BBB,0 3px 0 rgb(17,169,72),-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;border-radius:4px}menu nav ul li a{color:#000000e6;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:#000;opacity:.2;background:transparent;display:flex;justify-content:center;align-items:center;align-self:stretch;padding:10px;width:40px;border-radius:4px;text-align:center;margin-right:20px}menu nav ul li:after{background:#000;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;color:#fff;background:#000000e6;background:#027bff}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:#00000003;padding:20px 0;display:flex;flex-direction:row;align-self:stretch;text-align:center;justify-content:center}menu footer p{color:#bbb}menu footer p.version a{color:#888;font-weight:700}.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:#ddd;box-shadow:0 8px 16px #fff3;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;transition:all .55s cubic-bezier(.19,1,.22,1)}.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:#000;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}}@keyframes shakednd{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}button,.btn{position:relative;padding:10px 10px 8px;font-size:14px;color:#fff;cursor:pointer;border:none;border-radius:4px;background:#027bff;box-shadow:0 2px #004a9b;font-weight:700;letter-spacing:-.5px;margin-top:-2px;min-width:38px;min-height:34px;text-align:center;justify-content:center}button i.icon-left,.btn i.icon-left{margin-right:5px}button:hover,.btn:hover{box-shadow:0 2px 0 1px #004a9b inset;color:#fffc}button:focus,.btn:focus{background:#004a9b;color:#ffffff80;box-shadow:none}button.btn-pixel,.btn.btn-pixel{background:#333;border:1px solid transparent;transition:all .55s cubic-bezier(.19,1,.22,1);text-transform:uppercase;font-size:12px;box-shadow:4px 0 #fff,0 4px #11a948,-4px 0 #027bff,0 -4px #ef0e5d;color:#ddd;overflow:hidden}button.btn-pixel:hover,.btn.btn-pixel:hover{box-shadow:6px 0 #fff,0 6px #11a948,-6px 0 #027bff,0 -6px #ef0e5d;text-align:center;text-shadow:4px 0 0 rgb(255,255,255),4px 2px 0 #BBB,0 4px 0 rgb(17,169,72),-4px 0 0 rgb(2,123,255),0 -4px 0 rgb(239,14,93);text-decoration:none;background:linear-gradient(90deg,#a0a0a0 0,#bebebe 46%,#dcdcdc);-webkit-background-clip:text;color:transparent}button.btn-neutral,.btn.btn-neutral{color:#fff;background:#aaa;box-shadow:0 2px #919191;border:1px solid transparent}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #222 inset;background:#919191}button.btn-neutral:focus,.btn.btn-neutral:focus{background:#777;border:1px solid #555}button .btn-wire-neutral,.btn .btn-wire-neutral{background:transparent;border:2px solid #AAA;color:#fffc;box-shadow:none}button .btn-wire-neutral:hover,.btn .btn-wire-neutral:hover{background:#aaaaaa0d;border-color:#919191;color:#919191;box-shadow:none}button .btn-wire-neutral:focus,.btn .btn-wire-neutral:focus{border-color:#777;background:transparent}button.btn-naked,.btn.btn-naked{background:transparent;box-shadow:none;border:1px solid transparent;color:#000}button.btn-naked:hover,.btn.btn-naked:hover{box-shadow:0 2px 0 1px #222 inset;background:#919191;color:#fff}button.btn-naked:focus,.btn.btn-naked:focus{background:#777;border:1px solid #555}button i.main,.btn i.main{font-size:18px}button sup,button sub,.btn sup,.btn sub{position:absolute;top:-4px;right:-4px;background:#888;border-bottom:2px solid #AAA;color:red;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}button sup i,button sub i,.btn sup i,.btn sub i{color:#fff;font-size:10px}button.btn-double-icon,.btn.btn-double-icon{margin-right:5px}button.disabled,.btn.disabled{cursor:default}.alert{padding:20px;align-self:stretch;display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:4px}.alert i{margin-right:13px}.alert a{color:inherit;margin-left:4px;margin-right:4px;text-decoration:underline}ul.explr-tree{height:100%!important}ul.explr-tree ul{padding-top:0!important}ul.explr-tree li{position:relative}ul.explr-tree li span{color:#aaa;font-size:13px;padding-left:5px;cursor:pointer}ul.explr-tree li span.explr-plus,ul.explr-tree li span.explr-minus{z-index:1}ul.explr-tree li span.explr-plus:hover,ul.explr-tree li span.explr-minus:hover{color:#555}ul.explr-tree li i.main{font-size:14px}ul.explr-tree li sup,ul.explr-tree li sub{position:absolute;top:0;left:5px;background:#888;border-bottom:2px solid #AAA;border-radius:4px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-tree li sup i,ul.explr-tree li sub i{color:#fff;font-size:4px!important;margin-bottom:0}ul.explr-tree li a{color:#000;padding-right:80px;margin-top:2px}ul.explr-tree li a:hover{color:#000}ul.explr-tree li a.active{background:#0000001a;border-radius:4px;font-weight:700;text-decoration:underline;margin-left:35px;padding-left:5px;margin-right:10px}.explr-multiselection-actions,.explr-selection-actions{display:none;flex-direction:row;justify-content:flex-end;align-items:center;flex:1}.explr-multiselection-actions button,.explr-selection-actions button{display:none}body.explr-selection-actionable .explr-selection-actions,body.explr-selection-actionable.explr-selection-folder .explr-selection-actions button.explr-selection-folder,body.explr-selection-actionable.explr-selection-entity .explr-selection-actions button.explr-selection-entity,body.explr-multiselection-actionable .explr-multiselection-actions,body.explr-multiselection-actionable.explr-multiselection-folder .explr-multiselection-actions button.explr-multiselection-folder,body.explr-multiselection-actionable.explr-multiselection-entity .explr-multiselection-actions button.explr-multiselection-entity{display:flex}.selectable-zone{flex:1;align-self:stretch;border:1px solid transparent}ul.explr-dirview{display:flex;flex-direction:row;flex-wrap:wrap}ul.explr-dirview li{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;flex-shrink:0;margin:10px;min-width:100px;min-height:130px;padding-top:5px;border:1px solid transparent;border-radius:4px}ul.explr-dirview li.renaming a span{display:none}ul.explr-dirview li.renaming a form{display:block}ul.explr-dirview li.highlight-drop{border:1px dotted rgba(2,123,255,.4);background:#027bff4d}ul.explr-dirview li.highlight-clicked{border:1px dotted rgba(0,0,0,.2);background:#0000001a}ul.explr-dirview li a{color:#444;text-decoration:none;flex:1;text-align:center;font-size:12px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;max-width:84px;min-width:84px;position:relative}ul.explr-dirview li a.with-thumbnail .img-holder{width:64px;height:64px;background:#e7e7e7;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;margin-bottom:12px}ul.explr-dirview li a.with-thumbnail .img-holder img{max-height:100%;max-width:100%}ul.explr-dirview li a.with-thumbnail i{font-size:24px;position:absolute;top:-4px;left:-4px;text-shadow:0 .5px .5px #888}ul.explr-dirview li a i{font-size:64px;margin-bottom:12px;border-radius:8px}ul.explr-dirview li a sup,ul.explr-dirview li a sub{position:absolute;top:-2px;right:0;background:#888;border-bottom:2px solid #AAA;border-radius:4px;width:16px;height:16px;text-align:center;display:flex;justify-content:center;align-items:center;padding-top:2px;padding-bottom:1px}ul.explr-dirview li a sup i,ul.explr-dirview li a sub i{color:#fff;font-size:10px;margin-bottom:0}ul.explr-dirview li a input{width:100%;padding:0 3px}ul.explr-dirview li a input:focus{outline:none}ul.explr-dirview li a:hover{opacity:.8}ul.explr-dirview li a form{display:none}ul.explr-dirview li.new-folder a{color:#027bff}ul.explr-dirview li.new-folder a form{display:block}ul.explr-dirview .ui-draggable-dragging{z-index:20}ul.explr-dirview .ui-draggable-dragging a{opacity:1!important}.modal-explr-picker h2{margin-top:0}.modal-explr-picker .explr-tree{width:400px;max-width:400px;max-height:300px;overflow:auto;background:#ddd;padding:10px 20px;border-radius:4px;margin-top:15px}.content-explr-picker{cursor:pointer}.selection-rectangle{position:absolute;border:1px solid rgb(0,153,255);background-color:#0099ff1a;pointer-events:none;z-index:1000}ul.pills{background:#ddd;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #fff3;border:1px solid #DDD;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0}ul.pills li.divider{margin:0 20px;width:1px;height:100%;background:#ccc}ul.pills li:hover a{opacity:.9}ul.pills li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#000;overflow:hidden;padding-right:30px;text-align:center;background:#fff3;margin-right:5px;transition:all .25s cubic-bezier(.19,1,.22,1)}ul.pills li a span{display:flex;justify-content:center;align-items:center;margin-right:20px;height:42px;background:#fff3;width:42px}ul.pills li.active a{color:#ccc;background:#333;font-weight:700}ul.pills li:hover a{color:#fff;background:#027bff}ul.pills li:last-child a{margin-right:0}.breadcrumb-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;border-bottom:1px solid #DDD;background:transparent;padding:10px}.breadcrumb-container ul.breadcrumb{background:#ddd;padding:6px 4px 5px;box-shadow:1px 1px .5px .5px inset #fff3;border:1px solid #DDD;border-radius:4px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;list-style:none;margin:0;overflow-x:auto;max-width:65vw;white-space:nowrap}.breadcrumb-container ul.breadcrumb li{display:inline-block}.breadcrumb-container ul.breadcrumb li.divider{margin:0 5px}.breadcrumb-container ul.breadcrumb li.divider i{color:#555}.breadcrumb-container ul.breadcrumb li span,.breadcrumb-container ul.breadcrumb li a{border-radius:4px;display:flex;flex-direction:row;justify-content:center;align-items:center;color:#000;text-align:center;padding:0 3px}.breadcrumb-container ul.breadcrumb li span i,.breadcrumb-container ul.breadcrumb li a i{margin-right:5px}.breadcrumb-container ul.breadcrumb li:hover a{color:#000;background:#027bff}.breadcrumb-container ul.breadcrumb li:last-child a{margin-right:0}.pickers,.modals{position:fixed;background:#0006;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:10000}.pickers.pickers .modals-outer .modals-inner .modal h2,.modals.pickers .modals-outer .modals-inner .modal h2{font-size:14px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.pickers .modals-outer,.modals .modals-outer{min-width:464px;display:flex;flex-direction:column;overflow:auto;padding-bottom:2px}.pickers .modals-outer .modals-inner,.modals .modals-outer .modals-inner{background:#eee;border-radius:10px;color:#fff;padding:40px;box-shadow:0 2px #ddd;border:1px solid #DDD}.pickers .modals-outer .modals-inner .modal h2,.modals .modals-outer .modals-inner .modal h2{padding:0;margin:0 0 30px;font-weight:400;color:#666}.pickers .modals-outer .modals-inner .modal h3,.modals .modals-outer .modals-inner .modal h3{align-self:stretch;margin:0 0 10px;font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#000;padding-bottom:10px;text-decoration:none}.pickers .modals-outer .modals-inner .modal h3.divide,.modals .modals-outer .modals-inner .modal h3.divide{border-top:1px solid #DDD;margin-top:20px;padding-top:20px}.toast{visibility:hidden;min-width:250px;margin-left:-125px;background-color:#ccc;color:#000;text-align:center;border-radius:4px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px;border:2px dashed #DDD}.toast.show{visibility:visible;-webkit-animation:fadein .5s,fadeout .5s 2.5s;animation:fadein .5s,fadeout .5s 2.5s}@-webkit-keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@keyframes fadein{0%{bottom:0;opacity:0}to{bottom:30px;opacity:1}}@-webkit-keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}@keyframes fadeout{0%{bottom:30px;opacity:1}to{bottom:0;opacity:0}}body.dragover .shakeondrag{animation:shakednd .1s linear alternate infinite}.btn-super-upload-busy,.btn-super-upload{display:flex;flex-direction:row;justify-content:center;align-items:center;margin-left:10px;position:relative}.btn-super-upload-busy.btn-super-upload-busy,.btn-super-upload.btn-super-upload-busy{border:none!important}.btn-super-upload-busy .unprogress,.btn-super-upload .unprogress{display:block}.btn-super-upload-busy .progress,.btn-super-upload .progress{display:none;width:200px;height:10px;background:#999;border-radius:4px;flex-direction:row;justify-content:flex-start;align-items:center}.btn-super-upload-busy .progress .progress-bar,.btn-super-upload .progress .progress-bar{border-radius:4px;background-color:#027bff;height:100%}.btn-super-upload-busy .progress .percent,.btn-super-upload .progress .percent{display:flex;justify-content:center;align-items:center;position:absolute;left:0;right:0;bottom:0;top:2px;font-size:15px;color:#fff;text-shadow:0 0 2px rgb(0,0,0)}.btn-super-upload-busy.uploading .progress,.btn-super-upload.uploading .progress{display:block}.btn-super-upload-busy.uploading .unprogress,.btn-super-upload.uploading .unprogress{display:none}.panes{flex:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.panes .pane-section,.panes tbody{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:1px 1px 28px;background:#eee;border-radius:4px;border:4px solid rgba(0,0,0,.05)}.panes .pane-section:hover,.panes tbody:hover,.panes .pane-section:hover tr.title-item,.panes tbody:hover tr.title-item{border-color:#027bff0d}.panes .pane-section .pane-item,.panes .pane-section tr,.panes tbody .pane-item,.panes tbody tr{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;padding:8px 18px;background:#ddd}.panes .pane-section .pane-item:nth-child(odd),.panes .pane-section tr:nth-child(odd),.panes tbody .pane-item:nth-child(odd),.panes tbody tr:nth-child(odd){background-color:#eee}.panes .pane-section .pane-item:nth-child(odd) td.description,.panes .pane-section tr:nth-child(odd) td.description,.panes tbody .pane-item:nth-child(odd) td.description,.panes tbody tr:nth-child(odd) td.description{color:#000000b3}.panes .pane-section .pane-item:nth-child(2n),.panes .pane-section tr:nth-child(2n),.panes tbody .pane-item:nth-child(2n),.panes tbody tr:nth-child(2n){background-color:#e4e4e4}.panes .pane-section .pane-item .pane-cell,.panes .pane-section .pane-item td,.panes .pane-section tr .pane-cell,.panes .pane-section tr td,.panes tbody .pane-item .pane-cell,.panes tbody .pane-item td,.panes tbody tr .pane-cell,.panes tbody tr td{color:#777;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex:1;font-size:14px}.panes .pane-section .pane-item .pane-cell.vertical,.panes .pane-section .pane-item td.vertical,.panes .pane-section tr .pane-cell.vertical,.panes .pane-section tr td.vertical,.panes tbody .pane-item .pane-cell.vertical,.panes tbody .pane-item td.vertical,.panes tbody tr .pane-cell.vertical,.panes tbody tr td.vertical{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.panes .pane-section .pane-item .pane-cell.description,.panes .pane-section .pane-item td.description,.panes .pane-section tr .pane-cell.description,.panes .pane-section tr td.description,.panes tbody .pane-item .pane-cell.description,.panes tbody .pane-item td.description,.panes tbody tr .pane-cell.description,.panes tbody tr td.description{align-self:stretch}.panes .pane-section .pane-item .pane-cell.value,.panes .pane-section .pane-item td.value,.panes .pane-section tr .pane-cell.value,.panes .pane-section tr td.value,.panes tbody .pane-item .pane-cell.value,.panes tbody .pane-item td.value,.panes tbody tr .pane-cell.value,.panes tbody tr td.value{flex:0;margin-left:20px;word-break:break-all;flex-basis:auto}.panes .pane-section .pane-item .pane-cell.value i.icon-legend,.panes .pane-section .pane-item td.value i.icon-legend,.panes .pane-section tr .pane-cell.value i.icon-legend,.panes .pane-section tr td.value i.icon-legend,.panes tbody .pane-item .pane-cell.value i.icon-legend,.panes tbody .pane-item td.value i.icon-legend,.panes tbody tr .pane-cell.value i.icon-legend,.panes tbody tr td.value i.icon-legend{font-size:10px;margin-right:10px}.panes .pane-section .pane-item .pane-cell.value i.icon-value,.panes .pane-section .pane-item td.value i.icon-value,.panes .pane-section tr .pane-cell.value i.icon-value,.panes .pane-section tr td.value i.icon-value,.panes tbody .pane-item .pane-cell.value i.icon-value,.panes tbody .pane-item td.value i.icon-value,.panes tbody tr .pane-cell.value i.icon-value,.panes tbody tr td.value i.icon-value{padding:2px 2px 1px;border-radius:2px;width:16px;text-align:center}.panes .pane-section .pane-item.title-item,.panes .pane-section tr.title-item,.panes tbody .pane-item.title-item,.panes tbody tr.title-item{border-bottom:1px solid #DDD}.panes .pane-section .pane-item.title-item td,.panes .pane-section tr.title-item td,.panes tbody .pane-item.title-item td,.panes tbody tr.title-item td{color:#027bffe6;font-size:16px;font-weight:700}.panes .pane-section .pane-item.title-item td i,.panes .pane-section tr.title-item td i,.panes tbody .pane-item.title-item td i,.panes tbody tr.title-item td i{margin-right:10px}.panes .pane-section .pane-item.title-item td .more,.panes .pane-section tr.title-item td .more,.panes tbody .pane-item.title-item td .more,.panes tbody tr.title-item td .more{flex:1;text-align:right;font-size:12px;color:#777;font-weight:400;font-style:italic}.panes .pane-section .pane-item.variable-item,.panes .pane-section tr.variable-item,.panes tbody .pane-item.variable-item,.panes tbody tr.variable-item{cursor:pointer}.panes .pane-section .pane-item.variable-item:hover,.panes .pane-section tr.variable-item:hover,.panes tbody .pane-item.variable-item:hover,.panes tbody tr.variable-item:hover{background-color:#027bff0d}.panes .pane-section .pane-item.variable-item:hover td,.panes .pane-section tr.variable-item:hover td,.panes tbody .pane-item.variable-item:hover td,.panes tbody tr.variable-item:hover td{font-weight:700;color:#000}.panes .pane-section .pane-item.variable-item:hover td i.icon-legend,.panes .pane-section tr.variable-item:hover td i.icon-legend,.panes tbody .pane-item.variable-item:hover td i.icon-legend,.panes tbody tr.variable-item:hover td i.icon-legend{color:#000}.panes .pane-section .pane-item.variable-item:hover td span,.panes .pane-section .pane-item.variable-item:hover td i.icon-value,.panes .pane-section tr.variable-item:hover td span,.panes .pane-section tr.variable-item:hover td i.icon-value,.panes tbody .pane-item.variable-item:hover td span,.panes tbody .pane-item.variable-item:hover td i.icon-value,.panes tbody tr.variable-item:hover td span,.panes tbody tr.variable-item:hover td i.icon-value{background-color:#0000004d;color:#000}.panes .pane-section .pane-item.variable-item:hover td.description,.panes .pane-section tr.variable-item:hover td.description,.panes tbody .pane-item.variable-item:hover td.description,.panes tbody tr.variable-item:hover td.description{color:#027bff}.tiles{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-start;align-self:stretch}.tiles .tiles-inner{display:flex;flex:1;flex-direction:column;flex-wrap:nowrap;justify-content:flex-start;align-items:flex-start;align-self:stretch;padding:2px}.tiles .tiles-inner .tile-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#000;margin:1px;padding:15px 10px 15px 15px;border-radius:4px;border-bottom:1px solid transparent}.tiles .tiles-inner .tile-item:hover,.tiles .tiles-inner .tile-item.active{border-left:4px solid rgb(2,123,255);border-radius:4px;border-bottom:2px solid #E7E7E7;background:#ddd;color:#027bff}.tiles .tiles-inner .tile-item:hover:hover,.tiles .tiles-inner .tile-item.active:hover{opacity:1}.tiles .tiles-inner .tile-item:hover.disabled,.tiles .tiles-inner .tile-item.active.disabled{border-left-color:#bbb;color:#000}.tiles .tiles-inner .tile-item:hover.starred,.tiles .tiles-inner .tile-item.active.starred{border-left-color:#ffa70a;color:#ffa70a}.tiles .tiles-inner .tile-item:hover.starred .tile-tail .head-icon i,.tiles .tiles-inner .tile-item.active.starred .tile-tail .head-icon i{opacity:1;color:#ffa70a;font-size:8px}.tiles .tiles-inner .tile-item.starred .tile-tail .head-icon i{font-size:8px;color:#ffa70a}.tiles .tiles-inner .tile-item.disabled .tile-body{opacity:.3}.tiles .tiles-inner .tile-item.disabled .tile-tail .head-icon i{color:#bbb;opacity:.4}.tiles .tiles-inner .tile-item .tile-tail{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin-left:10px;min-width:10px}.tiles .tiles-inner .tile-item .tile-tail .head-icon{flex:1;display:flex;text-align:right;flex-direction:row;justify-content:center;align-items:center;align-self:stretch}.tiles .tiles-inner .tile-item .tile-tail .head-icon i{font-size:6px;display:flex}.tiles .tiles-inner .tile-item .tile-tail .status-icons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.tiles .tiles-inner .tile-item .tile-tail .status-icons i{font-size:16px;margin-left:10px}.tiles .tiles-inner .tile-item .tile-body{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;font-size:15px;font-weight:400;letter-spacing:.8px;line-height:22px;margin:0;flex-wrap:nowrap}.tiles .tiles-inner .tile-item .tile-body i{font-size:8px;margin-right:5px}.tiles .tiles-inner .tile-item .tile-metrics{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin:0}.tiles .tiles-inner .tile-item .tile-metrics .foot-span span,.tiles .tiles-inner .tile-item .tile-metrics .foot-span{opacity:.8;font-size:13px;font-family:Courier New}span.empty{background:#ffa70a4d;color:#ffa70a;text-transform:lowercase;border-radius:2px;padding:2px 4px;font-weight:700}.inner-empty{display:flex;flex:1;flex-direction:column;align-self:stretch;justify-content:center;align-items:center}.inner-empty i{font-size:90px;opacity:.3;text-shadow:0 -1px #CCC,0 0px .5px #BBB}.toggle{position:relative;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.toggle input{display:none}.toggle input:checked+label{background:#027bff;border:1px solid rgba(0,0,0,.1);box-shadow:0 2px 2px #222 inset}.toggle input:checked+label:after{content:"";display:block;border-radius:50%;margin-left:21px;width:18px;height:18px;transition:.2s;background:#9bcbff;box-shadow:0 2px #0063ce}.toggle label{width:44px;height:26px;border-radius:15px;background:#ddd;cursor:pointer;border:1px solid rgba(0,0,0,.1);box-shadow:0 2px 2px #111 inset}.toggle label:after{content:"";display:block;border-radius:50%;width:18px;height:18px;margin:3px;background:#888;box-shadow:0 2px #555555e6;transition:.2s}.form-holder{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}.form-holder form{max-width:434px}form{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch}form .alert{padding:8px 15px;font-size:14px;margin:0 0 25px}.form-group{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;width:100%;flex:1;margin-bottom:20px}.form-group .object-holder{flex-direction:column;align-self:stretch;justify-content:flex-start;align-items:flex-start;display:flex;flex:1}.form-group .object-holder input,.form-group .object-holder select,.form-group .object-holder textarea{flex:1;align-self:stretch}.form-group .object-holder .form-group label{margin-top:20px;margin-bottom:8px}.form-group label{flex:1;font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.form-group label.btn-upload{color:#000;font-size:14px;flex:0;flex-basis:auto;margin-top:5px}.form-group label.btn-upload input[type=file]{display:none}.form-group label.btn-upload input[type=text]{margin-bottom:2px;margin-left:10px}.form-group label.btn-upload span.btn{padding-right:20px}.form-group label.btn-upload i{margin-left:3px;margin-right:10px}.form-group .widget{margin-top:10px;align-self:stretch;display:flex;flex-direction:row}.form-group .widget .btn{margin-left:10px}.form-group .widget.widget-unit select,.form-group .widget.widget-unit input{flex-grow:0;background:none;box-shadow:none;border:none;border-bottom:1px solid #CCC;border-radius:0;max-width:80px;padding-left:0;color:#000;text-align:center}.form-group .widget.widget-unit span{font-size:12px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-left:5px;color:#aaa}.form-group .widget div{color:#000000b3;font-size:14px}.form-group .widget select,.form-group .widget input,.form-group .widget textarea{outline:none;padding:8px 0 5px 8px;border-radius:2px;border:1px solid rgba(0,0,0,.05);flex:1;background:#aaa;box-shadow:0 2px 1px #bbb,0 4px 2px #ccc inset;color:#222;font-size:14px}.form-group .widget select.input-naked,.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.input-naked,.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.input-naked,.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{color:#aaa;background:none;box-shadow:none;border:none;border-bottom:1px solid #CCC;border-radius:0}.form-group .widget select.input-naked,.form-group .widget input.input-naked,.form-group .widget textarea.input-naked{padding-left:0;color:#444}.form-group .widget select.disabled,.form-group .widget select[disabled],.form-group .widget input.disabled,.form-group .widget input[disabled],.form-group .widget textarea.disabled,.form-group .widget textarea[disabled]{border:none;background:#fff;border-radius:4px;padding-left:10px}.form-group.tab-select{border-bottom:1px solid #BBB;display:flex;flex-direction:row;position:relative;height:48px;padding:48px 0 0;flex:0;flex-basis:auto}.form-group.tab-select .widget{height:49px;margin-top:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;position:absolute;top:0;left:0;border-bottom:2px solid rgb(2,123,255);color:#027bff}.form-group.tab-select .widget select{border:none;background:none;box-shadow:none;padding:10px 35px 10px 10px;margin:0;color:inherit;appearance:none;-moz-appearance:none;-webkit-appearance:none;text-align:left;font-weight:700;cursor:pointer;border-radius:4px 4px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;z-index:2}.form-group.tab-select .widget i{margin-left:10px;margin-right:0}.form-group.tab-select .widget i.triangle{margin-top:-4px;margin-left:0;position:absolute;right:10px}.form-group.form-group-horizontal{margin:10px 0 20px;flex-direction:row;justify-content:flex-start;align-items:center}.form-group.form-group-horizontal .widget{margin:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.actions{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;align-self:stretch;margin:20px 0 0}.actions.actions-intermediate{margin:0}.actions button{margin-left:25px}.actions.actions-left{justify-content:flex-start}.actions.actions-left .btn{margin-left:0;margin-right:25px}.actions.actions-right{justify-content:flex-end}.actions.actions-right .btn{margin-left:10px;margin-right:0}.actions.actions-center{justify-content:center}.actions.actions-center .btn{margin-left:0;margin-right:0}.view-content-list main .main-container .page-content .inner{padding-bottom:10px}.view-content-list main .main-container .content-object-input{margin-bottom:6px}.view-content-list.dragover main .main-container .inner .dropzone{border-radius:4px;background:#0000001a;border:1px dashed rgba(0,0,0,.5)}.view-content-edit main .main-container .bottom-content .page-content{flex:1}.view-content-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px;flex:1}.view-content-edit main .main-container .bottom-content .page-panel.right-panel{flex:2;align-self:stretch;display:flex;flex-direction:column;overflow:hidden;justify-content:flex-start;align-items:center;padding:20px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3{color:#000;padding:10px 10px 10px 0;margin-bottom:20px;font-size:16px;align-self:stretch;margin-left:-8px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 span{border-width:1px;border-style:solid;border-radius:4px;padding:4px 10px;margin-left:5px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel h3 i{font-size:16px}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper{display:flex;flex-direction:column;width:100%;position:relative;padding-top:56.25%;overflow:hidden;border-radius:4px;outline:4px solid rgba(0,0,0,.1)}.view-content-edit main .main-container .bottom-content .page-panel.right-panel .iframe-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.view-logs-list main .main-container .bottom-content .page-content .inner{padding-top:8px;padding-bottom:8px}.view-logs-list main .main-container .bottom-content .page-content .logs{flex:1;display:flex;flex-direction:column;align-self:stretch}.view-logs-list main .main-container .bottom-content .page-content .logs pre{flex:1;background:#000000e6;border:1px solid rgba(85,85,85,.5);border-radius:4px;font-family:monospace;color:#f2f2f2;padding:20px;overflow:auto;align-self:stretch}.view-node-player-edit main .main-container .bottom-content .page-content{flex:1}.view-node-player-edit main .main-container .bottom-content .page-content .form-holder{margin:20px 20px 20px 10px}.view-player-group-list main .main-container .players-holder ul.players{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #DDD;border-radius:4px;padding:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .head{display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666;font-size:10px;padding:10px;cursor:default}.view-player-group-list main .main-container .players-holder ul.players li.player-item:hover .infos .title{color:#000}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px;flex:1;max-width:180px;background:#fff;border:1px solid #CCC;border-radius:4px;padding:3px 7px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .title{font-size:13px;color:#555;display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-player-group-list main .main-container .players-holder ul.players li.player-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body{display:block;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#ebebeb;padding:10px;align-self:stretch;flex:1;border-radius:4px;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px;font-size:12px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body span{opacity:.5;margin-right:7px;font-size:10px}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a{color:#000}.view-playlist-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.view-playlist-list main .main-container .modal-playlist-qrcode h2{text-align:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic{text-align:center;display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .modal-playlist-qrcode .qrcode-pic img{border:4px solid #AAA;border-radius:4px}.view-playlist-list main .main-container .modal-slide h2{font-size:20px}.view-playlist-list main .main-container .modal-slide input[disabled]{color:#555}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select{margin-right:5px}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input{font-size:12px;max-width:50%}.view-playlist-list main .main-container .modal-slide .slide-schedule-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-group input.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group select.datetimepicker,.view-playlist-list main .main-container .modal-slide .slide-schedule-end-group input.datetimepicker{margin-left:5px;padding-left:0}.view-playlist-list main .main-container .bottom-content .page-content{flex:1}.view-playlist-list main .main-container .bottom-content .page-content.with-right-panel{flex:.5}.view-playlist-list main .main-container .bottom-content .page-content .inner{padding:0}.view-playlist-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#222;text-decoration:none;margin:0 0 20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder{margin:20px 20px 20px 10px;flex:1}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder{margin:20px 0 0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder form{max-width:initial}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .form-holder .form-group{flex-grow:0;margin-bottom:5px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#000;padding-bottom:10px;text-decoration:none}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder h4.divide{border-top:1px solid #DDD;margin-top:20px;padding-top:20px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic{margin-top:10px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .qrcode-pic img{border:1px dashed #AAA;padding:5px;border-radius:4px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview{background:#000;border:1px solid rgba(0,0,0,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview iframe{flex:1;align-self:stretch}.view-playlist-list main .main-container .bottom-content .page-content .inner .slides-holder{align-self:stretch;border-right:1px solid #DDD;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-playlist-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-player-group-list main .main-container p{font-size:12px;line-height:18px;display:flex;margin-bottom:5px;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#999}.view-player-group-list main .main-container .bottom-content .page-content{flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner{padding:0}.view-player-group-list main .main-container .bottom-content .page-content .inner h3{font-size:16px;font-weight:500;color:#222;text-decoration:none;margin:0 0 20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder{margin:20px 20px 20px 10px;flex:1}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder{margin:20px 0 0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder form{max-width:initial}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .form-holder .form-group{flex-grow:0;margin-bottom:15px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview-holder .form-group{flex-grow:0;margin-bottom:0}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4{font-size:14px;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;color:#000;padding-bottom:10px;text-decoration:none}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder h4.divide{border-top:1px solid #DDD;margin-top:20px;padding-top:20px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview{background:#000;border:1px solid rgba(0,0,0,.3);border-radius:4px;justify-content:center;align-items:center;align-self:stretch;display:flex;margin:10px 0 20px;height:300px}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview iframe{flex:1;align-self:stretch}.view-player-group-list main .main-container .bottom-content .page-content .inner .players-holder{align-self:stretch;border-right:1px solid #DDD;margin:20px 10px 20px 20px;padding-right:20px;flex:1.3}.view-player-group-list main .main-container .bottom-content .page-panel.left-panel{flex:.3;max-width:initial;justify-content:center;align-items:center;display:flex}.view-playlist-list main .main-container .page-content .inner h3.divide{margin-top:50px}.view-playlist-list main .main-container .slides-holder ul.slides{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;align-self:stretch;margin:10px 0 0;border:1px dashed #DDD;border-radius:4px;padding:10px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;align-self:stretch;margin:0 0 2px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .title{color:#ccc}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .infos .type i{color:#ccc!important}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item.disabled .body{opacity:0}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort{display:flex;flex-direction:column;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a{color:#666;font-size:10px;padding:10px;cursor:move}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .sort a:hover{color:#027bff}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px;flex:1;max-width:120px;background:#fff;border:1px solid #CCC;border-radius:4px;padding:3px 7px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos:hover .title{color:#000}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .title{display:block;word-break:break-all;font-size:13px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .infos .type{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;color:#555;font-size:12px;margin-right:5px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin:0 10px;background:#ebebeb;padding:10px;align-self:stretch;flex:1;border-radius:4px;font-size:13px;color:#000}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;flex:1;max-width:315px;overflow-x:auto;white-space:nowrap}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-bottom:8px}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .prefix,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .prefix{margin-left:5px;margin-right:5px;font-size:12px;color:#222}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .start .cron-description,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body .range .end .cron-description{display:block;word-break:break-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-left:5px;font-size:10px;opacity:.5}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail{display:flex;flex-direction:row;justify-content:center;align-items:center}.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a{color:#000}.view-plugins-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-settings-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-sysinfo-list .reboot{color:#333}.view-login main .main-container{position:relative}.view-login main .main-container .alert{position:absolute;top:0;left:0;right:0}.view-login main .main-container .login-content{display:flex;flex:1;flex-direction:column;justify-content:center;align-items:center}.view-login main .main-container .login-content .form-holder{width:400px;display:flex;justify-content:center;align-items:center;align-self:stretch;margin-left:auto;margin-right:auto}.view-login main .main-container .login-content .form-holder .card{display:flex;justify-content:center;align-items:center;align-self:stretch;border-radius:6px;padding:50px;color:#fff}.view-login main .main-container .login-content .form-holder .card form{padding:0;flex:1;display:flex;justify-content:center;align-items:center;align-self:stretch}.view-login main .main-container .login-content .form-holder .card form .actions{margin-top:10px}.view-login main .main-container .login-content .form-holder .card form .actions .btn{padding-left:20px;padding-right:20px}.view-auth-user-list main .main-container .bottom-content .page-content .inner{padding:10px}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item.disabled .tile-body{opacity:.3;text-decoration-line:line-through}.view-auth-user-list main .main-container .bottom-content .page-content .inner .tile-item .tile-tail a:last-child{margin-left:10px}menu h1.logo a{color:#666}menu:hover h1.logo a{color:transparent}ul.explr-dirview li a i{color:#027bff}button.btn-neutral:hover,.btn.btn-neutral:hover{box-shadow:0 2px 0 1px #666 inset}button.btn-naked,.btn.btn-naked{color:#777}button.btn-naked:hover,.btn.btn-naked:hover{box-shadow:0 2px 0 1px #666 inset}.tiles .tiles-inner .tile-item:hover,.tiles .tiles-inner .tile-item.active{background:#fff}.panes .pane-section .pane-item:nth-child(odd),.panes .pane-section tr:nth-child(odd),.panes tbody .pane-item:nth-child(odd),.panes tbody tr:nth-child(odd){background-color:#e4e4e4}.panes .pane-section .pane-item:nth-child(2n),.panes .pane-section tr:nth-child(2n),.panes tbody .pane-item:nth-child(2n),.panes tbody tr:nth-child(2n){background-color:#eee}.form-group .widget select,.form-group .widget input,.form-group .widget textarea{box-shadow:0 2px 1px #aaa,0 4px 2px #aaa inset;color:#555;background:#ccc}.toggle label{box-shadow:0 2px 2px #aaa inset}.toggle label:after{box-shadow:0 2px #aaaaaae6}.modal-explr-picker .explr-tree{background:#fff}ul.pills{box-shadow:1px 1px .5px .5px inset #aaa3}ul.pills li a{color:#444}ul.pills li.active a{color:#fff;background:#027bff}.breadcrumb-container ul.breadcrumb{box-shadow:1px 1px .5px .5px inset #aaa3}.breadcrumb-container ul.breadcrumb li a,.breadcrumb-container ul.breadcrumb li span,.breadcrumb-container ul.breadcrumb li{color:#444}.breadcrumb-container ul.breadcrumb li:hover a{color:#fff}.breadcrumb-container ul.breadcrumb li.divider i{color:#bbb}.view-player-group-list main .main-container .bottom-content .page-content .inner .node-player-group-holder .preview,.view-playlist-list main .main-container .bottom-content .page-content .inner .playlist-holder .preview{border-color:#ccc}.view-player-group-list main .main-container .players-holder ul.players li.player-item .body,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .body{background:#ddd}.dropdown ul.dropdown-menu li.danger:hover a{color:#fff}.inner-empty i{color:#bbb;text-shadow:0 -1px #777,0 0px .5px #444}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a{color:#888}.view-player-group-list main .main-container .players-holder ul.players li.player-item .tail a:hover,.view-playlist-list main .main-container .slides-holder ul.slides li.slide-item .tail a:hover{color:#fff} diff --git a/data/www/js/slideshow/contents.js b/data/www/js/slideshow/contents.js index 4666ecc..6aa9497 100644 --- a/data/www/js/slideshow/contents.js +++ b/data/www/js/slideshow/contents.js @@ -9,14 +9,15 @@ jQuery(document).ready(function ($) { }).data('input'); $form.find('.content-object-input').each(function() { - const active = $(this).attr('data-input-type') === inputType; - - if ($(this).is('input[type=file]')) { - $(this).prop('disabled', !active).prop('required', active); - $(this).parents('label:eq(0)').toggleClass('hidden', !active); - } else { - $(this).prop('disabled', !active).prop('required', active).toggleClass('hidden', !active); - } + const $input = $(this); + const active = $input.attr('data-input-type') === inputType; + const $holder = $input.parents('.object-holder:eq(0)'); + $holder.find('input, select, textarea').prop('disabled', !active).prop('required', active).toggleClass('hidden', !active); + $holder.toggleClass('hidden', !active); + console.log(active) + console.log($input) + if (active) + console.log($holder) }); const optionAttributes = $selectedOption.get(0).attributes; diff --git a/data/www/scss/forms/_forms.scss b/data/www/scss/forms/_forms.scss index 1323570..0ea851e 100644 --- a/data/www/scss/forms/_forms.scss +++ b/data/www/scss/forms/_forms.scss @@ -35,6 +35,28 @@ form { flex: 1; margin-bottom: 20px; + .object-holder { + flex-direction: column; + align-self: stretch; + justify-content: flex-start; + align-items: flex-start; + display: flex; + flex: 1; + + input, + select, + textarea { + flex: 1; + align-self: stretch; + } + + .form-group { + label { + margin-top: 20px; + margin-bottom: 8px; + } + } + } label { flex: 1; diff --git a/lang/en.json b/lang/en.json index 763ac5f..c0038b5 100644 --- a/lang/en.json +++ b/lang/en.json @@ -226,6 +226,7 @@ "basic_month_10": "October", "basic_month_11": "November", "basic_month_12": "December", + "common_bad_directory_path": "Directory does not exist in the specified path", "common_bad_file_type": "Bad file type uploaded", "common_restart_needed": "Please restart obscreen studio (or restart the device) for the changes to take effect", "common_pick_element": "Pick an element", @@ -282,6 +283,9 @@ "enum_application_language_french": "French", "enum_application_language_italian": "Italian", "enum_application_language_spanish": "Spanish", + "enum_content_type_external_storage": "External Storage", + "enum_content_type_external_storage_object_label": "Choose an external storage drive", + "enum_content_type_external_storage_target_path_label": "Write an existing directory path inside your storage device", "enum_content_type_url": "URL", "enum_content_type_video": "Video", "enum_content_type_picture": "Picture", diff --git a/lang/es.json b/lang/es.json index 5e1ff90..2ddaec5 100644 --- a/lang/es.json +++ b/lang/es.json @@ -227,6 +227,7 @@ "basic_month_10": "Octubre", "basic_month_11": "Noviembre", "basic_month_12": "Diciembre", + "common_bad_directory_path": "El directorio no existe en la ruta especificada", "common_bad_file_type": "Tipo de archivo incorrecto cargado", "common_restart_needed": "Reinicie obscreen studio (o reinicie el dispositivo) para que los cambios surtan efecto", "common_pick_element": "Elige un elemento", @@ -283,6 +284,9 @@ "enum_application_language_french": "Francés", "enum_application_language_italian": "Italiano", "enum_application_language_spanish": "Español", + "enum_content_type_external_storage": "Almacenamiento externo", + "enum_content_type_external_storage_object_label": "Elija una unidad de almacenamiento externa", + "enum_content_type_external_storage_target_path_label": "Escribe una ruta de directorio existente dentro de tu dispositivo de almacenamiento", "enum_content_type_url": "URL", "enum_content_type_video": "Video", "enum_content_type_picture": "Imagen", diff --git a/lang/fr.json b/lang/fr.json index 0d7de64..f7a3fed 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -228,6 +228,7 @@ "basic_month_10": "Octobre", "basic_month_11": "Novembre", "basic_month_12": "Décembre", + "common_bad_directory_path": "Le dossier n'existe pas dans le chemin indiqué", "common_bad_file_type": "Type de fichier uploadé incorrect", "common_restart_needed": "Veuillez redémarrer obscreen studio (ou redémarrer l'appareil) pour que les changements soient pris en compte", "common_pick_element": "Choisissez un élément", @@ -284,6 +285,9 @@ "enum_application_language_french": "Français", "enum_application_language_italian": "Italien", "enum_application_language_spanish": "Espagnol", + "enum_content_type_external_storage": "Stockage externe", + "enum_content_type_external_storage_object_label": "Choisissez un disque de stockage externe", + "enum_content_type_external_storage_target_path_label": "Écrivez un chemin de répertoire existant dans votre périphérique de stockage", "enum_content_type_url": "URL", "enum_content_type_video": "Vidéo", "enum_content_type_picture": "Image", diff --git a/lang/it.json b/lang/it.json index 15f364b..6d346b6 100644 --- a/lang/it.json +++ b/lang/it.json @@ -227,6 +227,7 @@ "basic_month_10": "Ottobre", "basic_month_11": "Novembre", "basic_month_12": "Dicembre", + "common_bad_directory_path": "La directory non esiste nel percorso specificato", "common_bad_file_type": "Tipo di file caricato non valido", "common_restart_needed": "Riavvia obscreen studio (o riavvia il dispositivo) affinché le modifiche abbiano effetto", "common_pick_element": "Scegli un elemento", @@ -283,6 +284,9 @@ "enum_application_language_french": "Francese", "enum_application_language_italian": "Italiano", "enum_application_language_spanish": "Spagnolo", + "enum_content_type_external_storage": "Archiviazione esterna", + "enum_content_type_external_storage_object_label": "Scegli un'unità di archiviazione esterna", + "enum_content_type_external_storage_target_path_label": "Écrivez un chemin de répertoire existant dans votre périphérique de stockage", "enum_content_type_url": "URL", "enum_content_type_video": "Video", "enum_content_type_picture": "Immagine", diff --git a/src/controller/ContentController.py b/src/controller/ContentController.py index 9fc1ac4..83ca0eb 100644 --- a/src/controller/ContentController.py +++ b/src/controller/ContentController.py @@ -48,6 +48,7 @@ class ContentController(ObController): self._model_store.variable().update_by_name('last_pillmenu_slideshow', 'slideshow_content_list') working_folder_path, working_folder = self.get_working_folder() slides_with_content = self._model_store.slide().get_all_indexed(attribute='content_id', multiple=True) + external_storages = self._model_store.external_storage().list_usb_storage_devices() return render_template( 'slideshow/contents/list.jinja.html', @@ -59,6 +60,11 @@ class ContentController(ObController): working_folder_children=self._model_store.folder().get_children(folder=working_folder, entity=FolderEntity.CONTENT, sort='created_at', ascending=False), enum_content_type=ContentType, enum_folder_entity=FolderEntity, + external_storages={storage.mount_point: "{} ({} - {}GB)".format( + storage.mount_point, + storage.logical_name, + storage.total_size_in_gigabytes() + ) for storage in external_storages}, ) def slideshow_content_add(self): @@ -67,12 +73,21 @@ class ContentController(ObController): "path": working_folder_path, } + location = request.form['object'] if 'object' in request.form else None + + if 'storage' in request.form: + location = "{}/{}".format(request.form['storage'], location.strip('/')) + + if not os.path.exists(location): + route_args["error"] = "common_bad_directory_path" + return redirect(url_for('slideshow_content_list', **route_args)) + content = self._model_store.content().add_form_raw( name=request.form['name'], type=str_to_enum(request.form['type'], ContentType), request_files=request.files, upload_dir=self._app.config['UPLOAD_FOLDER'], - location=request.form['object'] if 'object' in request.form else None, + location=location, folder_id=working_folder.id if working_folder else None ) @@ -87,7 +102,7 @@ class ContentController(ObController): for key in request.files: files = request.files.getlist(key) for file in files: - type = ContentType.guess_content_type_file(file) + type = ContentType.guess_content_type_file(file.filename) name = file.filename.rsplit('.', 1)[0] if type: @@ -240,7 +255,9 @@ class ContentController(ObController): var_external_url = self._model_store.variable().get_one_by_name('external_url') location = content.location - if content.type == ContentType.YOUTUBE: + if content.type == ContentType.EXTERNAL_STORAGE: + location = "file://{}".format(location) + elif content.type == ContentType.YOUTUBE: location = "https://www.youtube.com/watch?v={}".format(content.location) elif len(var_external_url.as_string().strip()) > 0 and content.has_file(): location = "{}/{}".format(var_external_url.value, content.location) diff --git a/src/controller/PlayerController.py b/src/controller/PlayerController.py index 1fd3e26..e1a72b9 100644 --- a/src/controller/PlayerController.py +++ b/src/controller/PlayerController.py @@ -2,10 +2,12 @@ import json import logging from datetime import datetime -from typing import Optional +from typing import Optional, List, Dict from flask import Flask, render_template, redirect, request, url_for, send_from_directory, jsonify, abort +from pathlib import Path from src.model.entity.Slide import Slide +from src.model.enum.ContentType import ContentType from src.exceptions.NoFallbackPlaylistException import NoFallbackPlaylistException from src.service.ModelStore import ModelStore from src.interface.ObController import ObController @@ -123,39 +125,28 @@ class PlayerController(ObController): playlist_notifications = [] for slide in slides: - if slide['content_id']: - if int(slide['content_id']) not in contents: - continue - - content = contents[int(slide['content_id'])].to_dict() - slide['name'] = content['name'] - slide['location'] = content['location'] - slide['type'] = content['type'] - else: + if not slide['content_id']: continue - has_valid_start_date = 'cron_schedule' in slide and slide['cron_schedule'] and get_safe_cron_descriptor(slide['cron_schedule']) and is_cron_calendar_moment(slide['cron_schedule']) - has_valid_end_date = 'cron_schedule_end' in slide and slide['cron_schedule_end'] and get_safe_cron_descriptor(slide['cron_schedule_end']) and is_cron_calendar_moment(slide['cron_schedule_end']) + if int(slide['content_id']) not in contents: + continue - if slide['is_notification']: - if has_valid_start_date: - playlist_notifications.append(slide) - else: - logging.warn('Slide \'{}\' is a notification but start date is invalid'.format(slide['name'])) + content = contents[int(slide['content_id'])].to_dict() + slide['name'] = content['name'] + slide['location'] = content['location'] + slide['type'] = content['type'] + + if slide['type'] == ContentType.EXTERNAL_STORAGE.value: + mount_point_dir = Path(slide['location']) + if mount_point_dir.is_dir(): + for file in mount_point_dir.iterdir(): + if file.is_file() and not file.stem.startswith('.'): + slide['type'] = ContentType.guess_content_type_file(str(file.resolve())).value + slide['location'] = "file://{}".format(str(file.resolve())) + slide['name'] = file.stem + self._feed_playlist(playlist_loop, playlist_notifications, slide) else: - if has_valid_start_date: - start_date = get_cron_date_time(slide['cron_schedule'], object=True) - if datetime.now() <= start_date: - continue - - if has_valid_end_date: - end_date = get_cron_date_time(slide['cron_schedule_end'], object=True) - if datetime.now() >= end_date: - continue - - playlist_loop.append(slide) - else: - playlist_loop.append(slide) + self._feed_playlist(playlist_loop, playlist_notifications, slide) playlists = { 'playlist_id': playlist.id if playlist else None, @@ -167,3 +158,24 @@ class PlayerController(ObController): } return playlists + + def _feed_playlist(self, loop: List, notifications: List, slide: Dict) -> None: + has_valid_start_date = 'cron_schedule' in slide and slide['cron_schedule'] and get_safe_cron_descriptor(slide['cron_schedule']) and is_cron_calendar_moment(slide['cron_schedule']) + has_valid_end_date = 'cron_schedule_end' in slide and slide['cron_schedule_end'] and get_safe_cron_descriptor(slide['cron_schedule_end']) and is_cron_calendar_moment(slide['cron_schedule_end']) + + if slide['is_notification']: + if has_valid_start_date: + return notifications.append(slide) + return logging.warn('Slide \'{}\' is a notification but start date is invalid'.format(slide['name'])) + + if has_valid_start_date: + start_date = get_cron_date_time(slide['cron_schedule'], object=True) + if datetime.now() <= start_date: + return + + if has_valid_end_date: + end_date = get_cron_date_time(slide['cron_schedule_end'], object=True) + if datetime.now() >= end_date: + return + + loop.append(slide) diff --git a/src/manager/ContentManager.py b/src/manager/ContentManager.py index 31e624f..7fc9f3a 100644 --- a/src/manager/ContentManager.py +++ b/src/manager/ContentManager.py @@ -177,7 +177,7 @@ class ContentManager(ModelManager): if not object or object.filename == '': return None - guessed_type = ContentType.guess_content_type_file(object) + guessed_type = ContentType.guess_content_type_file(object.filename) if not guessed_type or guessed_type != type: return None diff --git a/src/manager/ExternalStorageManager.py b/src/manager/ExternalStorageManager.py new file mode 100644 index 0000000..5b8786a --- /dev/null +++ b/src/manager/ExternalStorageManager.py @@ -0,0 +1,208 @@ +import os +import psutil +import platform +import logging + +from typing import Dict, Optional, List, Tuple, Union +from werkzeug.datastructures import FileStorage + +from src.model.entity.ExternalStorage import ExternalStorage +from src.util.utils import get_yt_video_id +from src.manager.DatabaseManager import DatabaseManager +from src.manager.LangManager import LangManager +from src.manager.UserManager import UserManager +from src.manager.VariableManager import VariableManager +from src.service.ModelManager import ModelManager +from src.util.UtilFile import randomize_filename + + +class ExternalStorageManager(ModelManager): + + TABLE_NAME = "external_storage" + TABLE_MODEL = [ + "uuid CHAR(255)", + "total_size INTEGER", + "logical_name TEXT", + "mount_point TEXT", + "content_id INTEGER", + "created_by CHAR(255)", + "updated_by CHAR(255)", + "created_at INTEGER", + "updated_at INTEGER" + ] + + def __init__(self, lang_manager: LangManager, database_manager: DatabaseManager, user_manager: UserManager, variable_manager: VariableManager): + super().__init__(lang_manager, database_manager, user_manager, variable_manager) + self._db = database_manager.open(self.TABLE_NAME, self.TABLE_MODEL) + + def hydrate_object(self, raw_external_storage: dict, id: int = None) -> ExternalStorage: + if id: + raw_external_storage['id'] = id + + [raw_external_storage, user_tracker_edits] = self.user_manager.initialize_user_trackers(raw_external_storage) + + if len(user_tracker_edits) > 0: + self._db.update_by_id(self.TABLE_NAME, raw_external_storage['id'], user_tracker_edits) + + return ExternalStorage(**raw_external_storage) + + def hydrate_list(self, raw_external_storages: list) -> List[ExternalStorage]: + return [self.hydrate_object(raw_external_storage) for raw_external_storage in raw_external_storages] + + def get(self, id: int) -> Optional[ExternalStorage]: + object = self._db.get_by_id(self.TABLE_NAME, id) + return self.hydrate_object(object, id) if object else None + + def get_by(self, query, sort: Optional[str] = None) -> List[ExternalStorage]: + return self.hydrate_list(self._db.get_by_query(self.TABLE_NAME, query=query, sort=sort)) + + def get_one_by(self, query) -> Optional[ExternalStorage]: + object = self._db.get_one_by_query(self.TABLE_NAME, query=query) + + if not object: + return None + + return self.hydrate_object(object) + + def get_all(self, sort: Optional[str] = 'created_at', ascending=False) -> List[ExternalStorage]: + return self.hydrate_list(self._db.get_all(table_name=self.TABLE_NAME, sort=sort, ascending=ascending)) + + def get_all_indexed(self, attribute: str = 'id', multiple=False) -> Dict[str, ExternalStorage]: + index = {} + + for item in self.get_external_storages(): + id = getattr(item, attribute) + if multiple: + if id not in index: + index[id] = [] + index[id].append(item) + else: + index[id] = item + + return index + + def forget_for_user(self, user_id: int): + external_storages = self.get_by("created_by = '{}' or updated_by = '{}'".format(user_id, user_id)) + edits_external_storages = self.user_manager.forget_user_for_entity(external_storages, user_id) + + for external_storage_id, edits in edits_external_storages.items(): + self._db.update_by_id(self.TABLE_NAME, external_storage_id, edits) + + def get_external_storages(self, content_id: Optional[int] = None) -> List[ExternalStorage]: + query = " 1=1 " + + if content_id: + query = "{} {}".format(query, "AND content_id = {}".format(content_id)) + + return self.get_by(query=query) + + def pre_add(self, external_storage: Dict) -> Dict: + self.user_manager.track_user_on_create(external_storage) + self.user_manager.track_user_on_update(external_storage) + return external_storage + + def pre_update(self, external_storage: Dict) -> Dict: + self.user_manager.track_user_on_update(external_storage) + return external_storage + + def pre_delete(self, external_storage_id: str) -> str: + return external_storage_id + + def post_add(self, external_storage_id: str) -> str: + return external_storage_id + + def post_update(self, external_storage_id: str) -> str: + return external_storage_id + + def post_updates(self): + pass + + def post_delete(self, external_storage_id: str) -> str: + return external_storage_id + + def update_form(self, id: int, logical_name: Optional[str] = None, mount_point: Optional[str] = None, content_id: Optional[int] = None, total_size: Optional[int] = None) -> ExternalStorage: + external_storage = self.get(id) + + if not external_storage: + return + + form = { + "total_size": total_size if total_size else external_storage.total_size, + "logical_name": logical_name if logical_name else external_storage.logical_name, + "mount_point": mount_point if mount_point else external_storage.mount_point, + "content_id": content_id if content_id else external_storage.content_id, + } + + self._db.update_by_id(self.TABLE_NAME, id, self.pre_update(form)) + self.post_update(id) + return self.get(id) + + def add_form(self, external_storage: Union[ExternalStorage, Dict]) -> None: + form = external_storage + + if not isinstance(external_storage, dict): + form = external_storage.to_dict() + del form['id'] + + self._db.add(self.TABLE_NAME, self.pre_add(form)) + self.post_add(external_storage.id) + + def add_form_raw(self, logical_name: Optional[str] = None, mount_point: Optional[str] = None, content_id: Optional[int] = None, total_size: Optional[int] = None) -> ExternalStorage: + external_storage = ExternalStorage( + logical_name=logical_name, + mount_point=mount_point, + content_id=content_id, + total_size=total_size, + ) + + self.add_form(external_storage) + return self.get_one_by(query="uuid = '{}'".format(external_storage.uuid)) + + def delete(self, id: int) -> None: + external_storage = self.get(id) + + if external_storage: + self.pre_delete(id) + self._db.delete_by_id(self.TABLE_NAME, id) + self.post_delete(id) + + def to_dict(self, external_storages: List[ExternalStorage]) -> List[Dict]: + return [external_storage.to_dict() for external_storage in external_storages] + + @staticmethod + def list_usb_storage_devices() -> List[ExternalStorage]: + os_type = platform.system() + partitions = psutil.disk_partitions() + removable_devices = [] + for partition in partitions: + if 'dontbrowse' in partition.opts: + continue + + if os_type == "Windows": + if 'removable' in partition.opts: + removable_devices.append(partition) + else: + if '/media' in partition.mountpoint or '/run/media' in partition.mountpoint or '/mnt' in partition.mountpoint or '/Volumes' in partition.mountpoint: + removable_devices.append(partition) + + if not removable_devices: + return {} + + storages = [] + + for device in removable_devices: + try: + usage = psutil.disk_usage(device.mountpoint) + # total_size = usage.total / (1024 ** 3) + external_storage = ExternalStorage( + logical_name=device.device, + mount_point=device.mountpoint, + content_id=None, + total_size=usage.total, + ) + storages.append(external_storage) + except Exception as e: + logging.error(f"Could not retrieve size for device {device.device}: {e}") + + return storages + diff --git a/src/model/entity/ExternalStorage.py b/src/model/entity/ExternalStorage.py new file mode 100644 index 0000000..b39a8fe --- /dev/null +++ b/src/model/entity/ExternalStorage.py @@ -0,0 +1,141 @@ +import json +import time +import uuid +import math + +from typing import Optional, Union + +from src.model.enum.FolderEntity import FolderEntity +from src.util.utils import str_to_enum + + +class ExternalStorage: + + def __init__(self, uuid: str = '', total_size: int = 0, logical_name: str = '', mount_point: str = '', content_id: Optional[int] = None, id: Optional[int] = None, created_by: Optional[str] = None, updated_by: Optional[str] = None, created_at: Optional[int] = None, updated_at: Optional[int] = None): + self._uuid = uuid if uuid else self.generate_and_set_uuid() + self._id = id if id else None + self._total_size = total_size + self._logical_name = logical_name + self._mount_point = mount_point + self._content_id = content_id + self._created_by = created_by if created_by else None + self._updated_by = updated_by if updated_by else None + self._created_at = int(created_at if created_at else time.time()) + self._updated_at = int(updated_at if updated_at else time.time()) + + def generate_and_set_uuid(self) -> str: + self._uuid = str(uuid.uuid4()) + + return self._uuid + + @property + def id(self) -> Optional[int]: + return self._id + + @property + def uuid(self) -> str: + return self._uuid + + @uuid.setter + def uuid(self, value: str): + self._uuid = value + + @property + def content_id(self) -> Optional[int]: + return self._content_id + + @content_id.setter + def content_id(self, value: Optional[int]): + self._content_id = value + + @property + def total_size(self) -> int: + return self._total_size + + @total_size.setter + def total_size(self, value: int): + self._total_size = value + + @property + def logical_name(self) -> str: + return self._logical_name + + @logical_name.setter + def logical_name(self, value: str): + self._logical_name = value + + @property + def mount_point(self) -> str: + return self._mount_point + + @mount_point.setter + def mount_point(self, value: str): + self._mount_point = value + + @property + def created_by(self) -> str: + return self._created_by + + @created_by.setter + def created_by(self, value: str): + self._created_by = value + + @property + def updated_by(self) -> str: + return self._updated_by + + @updated_by.setter + def updated_by(self, value: str): + self._updated_by = value + + @property + def created_at(self) -> int: + return self._created_at + + @created_at.setter + def created_at(self, value: int): + self._created_at = value + + @property + def updated_at(self) -> int: + return self._updated_at + + @updated_at.setter + def updated_at(self, value: int): + self._updated_at = value + + def __str__(self) -> str: + return f"ExternalStorage(" \ + f"id='{self.id}',\n" \ + f"uuid='{self.uuid}',\n" \ + f"total_size='{self.total_size}',\n" \ + f"logical_name='{self.logical_name}',\n" \ + f"mount_point='{self.mount_point}',\n" \ + f"content_id='{self.content_id}',\n" \ + f"created_by='{self.created_by}',\n" \ + f"updated_by='{self.updated_by}',\n" \ + f"created_at='{self.created_at}',\n" \ + f"updated_at='{self.updated_at}',\n" \ + f")" + + def to_json(self) -> str: + return json.dumps(self.to_dict()) + + def to_dict(self) -> dict: + return { + "id": self.id, + "uuid": self.uuid, + "total_size": self.total_size, + "logical_name": self.logical_name, + "mount_point": self.mount_point, + "content_id": self.content_id, + "created_by": self.created_by, + "updated_by": self.updated_by, + "created_at": self.created_at, + "updated_at": self.updated_at, + } + + def total_size_in_gigabytes(self) -> str: + return f"{self.total_size / (1024 ** 3):.2f}" + + diff --git a/src/model/enum/ContentType.py b/src/model/enum/ContentType.py index 7e988c5..70bf0af 100644 --- a/src/model/enum/ContentType.py +++ b/src/model/enum/ContentType.py @@ -10,6 +10,7 @@ class ContentInputType(Enum): UPLOAD = 'upload' TEXT = 'text' + STORAGE = 'storage' @staticmethod def is_editable(value: Enum) -> bool: @@ -17,18 +18,21 @@ class ContentInputType(Enum): return False elif value == ContentInputType.TEXT: return True + elif value == ContentInputType.STORAGE: + return False class ContentType(Enum): + EXTERNAL_STORAGE = 'external_storage' PICTURE = 'picture' URL = 'url' YOUTUBE = 'youtube' VIDEO = 'video' @staticmethod - def guess_content_type_file(file): - mime_type, _ = mimetypes.guess_type(file.filename) + def guess_content_type_file(filename: str): + mime_type, _ = mimetypes.guess_type(filename) if mime_type in [ 'image/gif', @@ -55,6 +59,8 @@ class ContentType(Enum): return ContentInputType.TEXT elif value == ContentType.URL: return ContentInputType.TEXT + elif value == ContentType.EXTERNAL_STORAGE: + return ContentInputType.STORAGE @staticmethod def get_fa_icon(value: Union[Enum, str]) -> str: @@ -69,6 +75,8 @@ class ContentType(Enum): return 'fa-brands fa-youtube' elif value == ContentType.URL: return 'fa-link' + elif value == ContentType.EXTERNAL_STORAGE: + return 'fa-brands fa-usb' return 'fa-file' @@ -85,5 +93,7 @@ class ContentType(Enum): return 'youtube' elif value == ContentType.URL: return 'danger' + elif value == ContentType.EXTERNAL_STORAGE: + return 'other' return 'neutral' diff --git a/src/service/ModelStore.py b/src/service/ModelStore.py index 86fbe48..a9a2858 100644 --- a/src/service/ModelStore.py +++ b/src/service/ModelStore.py @@ -12,6 +12,7 @@ from src.manager.LangManager import LangManager from src.manager.DatabaseManager import DatabaseManager from src.manager.ConfigManager import ConfigManager from src.manager.LoggingManager import LoggingManager +from src.manager.ExternalStorageManager import ExternalStorageManager class ModelStore: @@ -39,6 +40,7 @@ class ModelStore: self._playlist_manager = PlaylistManager(lang_manager=self._lang_manager, database_manager=self._database_manager, user_manager=self._user_manager, variable_manager=self._variable_manager) self._slide_manager = SlideManager(lang_manager=self._lang_manager, database_manager=self._database_manager, user_manager=self._user_manager, variable_manager=self._variable_manager) self._content_manager = ContentManager(lang_manager=self._lang_manager, database_manager=self._database_manager, user_manager=self._user_manager, variable_manager=self._variable_manager) + self._external_storage_manager = ExternalStorageManager(lang_manager=self._lang_manager, database_manager=self._database_manager, user_manager=self._user_manager, variable_manager=self._variable_manager) self._variable_manager.reload() def logging(self) -> LoggingManager: @@ -47,6 +49,9 @@ class ModelStore: def config(self) -> ConfigManager: return self._config_manager + def external_storage(self) -> ExternalStorageManager: + return self._external_storage_manager + def variable(self) -> VariableManager: return self._variable_manager @@ -81,6 +86,7 @@ class ModelStore: return self._get_plugins() def on_user_delete(self, user_id: int) -> None: + self._external_storage_manager.forget_for_user(user_id) self._playlist_manager.forget_for_user(user_id) self._folder_manager.forget_for_user(user_id) self._node_player_group_manager.forget_for_user(user_id) diff --git a/views/player/player.jinja.html b/views/player/player.jinja.html index 7af513b..e94a99a 100755 --- a/views/player/player.jinja.html +++ b/views/player/player.jinja.html @@ -327,7 +327,8 @@ } const loadPicture = function(element, callbackReady, item) { - element.innerHTML = ``; + const hasScheme = item.location.indexOf('://') >= 0; + element.innerHTML = ``; callbackReady(function() {}); }; diff --git a/views/slideshow/contents/list.jinja.html b/views/slideshow/contents/list.jinja.html index b1dc924..a1dfb08 100644 --- a/views/slideshow/contents/list.jinja.html +++ b/views/slideshow/contents/list.jinja.html @@ -11,6 +11,7 @@ {% block add_js %}