From 4383dc435a8d7ec98fa14442ce6ac9524d7f6fa3 Mon Sep 17 00:00:00 2001 From: jr-k Date: Sun, 21 Jul 2024 18:42:20 +0200 Subject: [PATCH] change logic --- .env.dist | 3 + Dockerfile | 4 +- README.md | 2 +- data/www/css/compiled/main-dark-mode.css | 2 +- data/www/css/compiled/main-light-mode.css | 2 +- data/www/js/slideshow/contents.js | 8 +- data/www/scss/components/_modals.scss | 1 + data/www/scss/forms/_forms.scss | 32 +-- docs/setup-run-on-rpi.md | 2 +- lang/en.json | 4 +- lang/es.json | 4 +- lang/fr.json | 4 +- lang/it.json | 4 +- src/Application.py | 7 + src/controller/ContentController.py | 33 +-- src/controller/PlayerController.py | 22 +- src/interface/ObController.py | 3 + src/manager/ConfigManager.py | 8 + src/manager/ContentManager.py | 21 ++ src/manager/ExternalStorageManager.py | 208 ------------------ src/model/enum/ContentType.py | 2 +- src/service/ExternalStorageServer.py | 103 +++++++++ src/service/ModelStore.py | 6 - system/10-obscreen-media-automount.rules | 25 +++ system/install-autorun-rpi.sh | 13 +- views/slideshow/contents/list.jinja.html | 1 - views/slideshow/contents/modal/add.jinja.html | 51 +++-- 27 files changed, 252 insertions(+), 323 deletions(-) delete mode 100644 src/manager/ExternalStorageManager.py create mode 100644 src/service/ExternalStorageServer.py create mode 100644 system/10-obscreen-media-automount.rules diff --git a/.env.dist b/.env.dist index 753fad3..9bab0c3 100755 --- a/.env.dist +++ b/.env.dist @@ -1,3 +1,6 @@ +DEMO=false DEBUG=false PORT=5000 +PORT_HTTP_EXTERNAL_STORAGE=5001 SECRET_KEY=ANY_SECRET_KEY_HERE + diff --git a/Dockerfile b/Dockerfile index 024e434..051e2ac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ FROM python:3.9.17-alpine3.17 -RUN apk add --no-cache --virtual .build-deps gcc musl-dev sqlite-dev build-base linux-headers +RUN apk add --no-cache --virtual .build-deps gcc musl-dev sqlite-dev exfat-fuse ntfs-3g build-base linux-headers WORKDIR /app COPY . . -RUN pip install -r requirements.txt && apk del .build-deps gcc musl-dev sqlite-dev build-base linux-headers +RUN pip install -r requirements.txt && apk del .build-deps gcc musl-dev sqlite-dev exfat-fuse ntfs-3g build-base linux-headers ENTRYPOINT ["python", "/app/obscreen.py"] diff --git a/README.md b/README.md index 1845a96..693e2af 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ If you value this project, please think about awarding it a ⭐. Thanks ! 🙏
-
Videos aren't playing why ?
+

Videos aren't playing why ?

This is "normal" behavior. Videos do not play automatically in Chrome because it requires user interaction with the page (a simple click inside the webpage is enough). If you open the console, you'll see the error: [Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first...](https://goo.gl/xX8pDD) diff --git a/data/www/css/compiled/main-dark-mode.css b/data/www/css/compiled/main-dark-mode.css index 578539d..7125de9 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 .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} +.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;max-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}.from-group-condition{flex-direction:column;align-self:stretch;justify-content:flex-start;align-items:flex-start;display:flex}.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;line-height:18px;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 76ef3f9..e9ef338 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 .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} +.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;max-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}.from-group-condition{flex-direction:column;align-self:stretch;justify-content:flex-start;align-items:flex-start;display:flex}.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;line-height:18px;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 6aa9497..709e5d8 100644 --- a/data/www/js/slideshow/contents.js +++ b/data/www/js/slideshow/contents.js @@ -11,18 +11,14 @@ jQuery(document).ready(function ($) { $form.find('.content-object-input').each(function() { const $input = $(this); const active = $input.attr('data-input-type') === inputType; - const $holder = $input.parents('.object-holder:eq(0)'); + const $holder = $input.parents('.from-group-condition: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; const color = optionAttributes['data-color'].value; - $form.find('.object-label').html(optionAttributes['data-object-label'].value); + $form.find('.object-label:visible').html(optionAttributes['data-object-label'].value); $('.type-icon').attr('class', 'type-icon fa ' + optionAttributes['data-icon'].value); $('.tab-select .widget').attr('class', 'widget ' + ('border-' + color) + ' ' + color); $form.find('button[type=submit]').attr('class', 'btn ' + ('btn-' + color)); diff --git a/data/www/scss/components/_modals.scss b/data/www/scss/components/_modals.scss index ab7c162..2f19963 100644 --- a/data/www/scss/components/_modals.scss +++ b/data/www/scss/components/_modals.scss @@ -34,6 +34,7 @@ .modals-outer { min-width: 464px; + max-width: 464px; display: flex; flex-direction: column; overflow: auto; diff --git a/data/www/scss/forms/_forms.scss b/data/www/scss/forms/_forms.scss index 0ea851e..6aeb845 100644 --- a/data/www/scss/forms/_forms.scss +++ b/data/www/scss/forms/_forms.scss @@ -25,6 +25,14 @@ form { } } +.from-group-condition { + flex-direction: column; + align-self: stretch; + justify-content: flex-start; + align-items: flex-start; + display: flex; +} + .form-group { display: flex; flex-direction: column; @@ -35,32 +43,10 @@ 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; font-size: 12px; + line-height: 18px; display: flex; flex-direction: row; justify-content: flex-start; diff --git a/docs/setup-run-on-rpi.md b/docs/setup-run-on-rpi.md index 3a9e7f3..59c2178 100644 --- a/docs/setup-run-on-rpi.md +++ b/docs/setup-run-on-rpi.md @@ -66,7 +66,7 @@ docker compose up --detach --pull=always ```bash # Install system dependencies sudo apt-get update -sudo apt-get install -y git python3-pip python3-venv libsqlite3-dev +sudo apt-get install -y git python3-pip python3-venv libsqlite3-dev exfat-fuse ntfs-3g # Get files cd ~ && git clone https://github.com/jr-k/obscreen.git && cd obscreen diff --git a/lang/en.json b/lang/en.json index c0038b5..dfdd22c 100644 --- a/lang/en.json +++ b/lang/en.json @@ -284,8 +284,8 @@ "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_external_storage_object_label": "Specify an existing directory path with displayable files within your removeable device", + "enum_content_type_external_storage_flashdrive_label": "Path relative to a removeable 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 2ddaec5..f1b13e7 100644 --- a/lang/es.json +++ b/lang/es.json @@ -285,8 +285,8 @@ "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_external_storage_object_label": "Especifique una ruta de directorio existente con archivos visualizables dentro de su dispositivo extraĂ­ble", + "enum_content_type_external_storage_flashdrive_label": "Ruta relativa a un dispositivo extraĂ­ble", "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 f7a3fed..6411218 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -286,8 +286,8 @@ "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_external_storage_object_label": "SpĂ©cifiez un chemin de rĂ©pertoire existant avec des fichiers affichables dans votre pĂ©riphĂ©rique amovible", + "enum_content_type_external_storage_flashdrive_label": "Chemin relatif Ă  un pĂ©riphĂ©rique amovible", "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 6d346b6..0eca744 100644 --- a/lang/it.json +++ b/lang/it.json @@ -285,8 +285,8 @@ "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_external_storage_object_label": "Specifica un percorso di directory esistente con file visualizzabili all'interno del tuo dispositivo rimovibile", + "enum_content_type_external_storage_flashdrive_label": "Percorso relativo ad un dispositivo rimovibile", "enum_content_type_url": "URL", "enum_content_type_video": "Video", "enum_content_type_picture": "Immagine", diff --git a/src/Application.py b/src/Application.py index 9ab0ae6..bbf1322 100644 --- a/src/Application.py +++ b/src/Application.py @@ -6,6 +6,7 @@ import threading from src.service.ModelStore import ModelStore from src.service.PluginStore import PluginStore from src.service.TemplateRenderer import TemplateRenderer +from src.service.ExternalStorageServer import ExternalStorageServer from src.service.WebServer import WebServer from src.model.enum.HookType import HookType @@ -18,6 +19,7 @@ class Application: self._model_store = ModelStore(self.get_plugins) self._template_renderer = TemplateRenderer(kernel=self, model_store=self._model_store, render_hook=self.render_hook) self._web_server = WebServer(kernel=self, model_store=self._model_store, template_renderer=self._template_renderer) + self._external_storage_server = ExternalStorageServer(kernel=self, model_store=self._model_store) logging.info("[{}] Starting application v{}...".format(self.get_name(), self.get_version())) self._plugin_store = PluginStore(kernel=self, model_store=self._model_store, template_renderer=self._template_renderer, web_server=self._web_server) @@ -29,6 +31,7 @@ class Application: if variable: self._model_store.variable().update_by_name(variable.name, variable.as_int() + 1) + self._external_storage_server.run() self._web_server.run() def signal_handler(self, signal, frame) -> None: @@ -59,3 +62,7 @@ class Application: self._model_store.lang().set_lang(lang) self._model_store.variable().reload() self._plugin_store.reload_lang() + + @property + def external_storage_server(self): + return self._external_storage_server diff --git a/src/controller/ContentController.py b/src/controller/ContentController.py index 8c75358..418cd40 100644 --- a/src/controller/ContentController.py +++ b/src/controller/ContentController.py @@ -9,6 +9,7 @@ from src.model.entity.Content import Content from src.model.enum.ContentType import ContentType from src.model.enum.FolderEntity import FolderEntity, FOLDER_ROOT_PATH from src.interface.ObController import ObController +from src.service.ExternalStorageServer import ExternalStorageServer from src.util.utils import str_to_enum, get_optional_string from src.util.UtilFile import randomize_filename @@ -48,8 +49,6 @@ 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() - print(external_storages[0] if len(external_storages) > 0 else 'none') return render_template( 'slideshow/contents/list.jinja.html', @@ -60,12 +59,7 @@ class ContentController(ObController): working_folder=working_folder, 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}, + enum_folder_entity=FolderEntity ) def slideshow_content_add(self): @@ -76,13 +70,6 @@ class ContentController(ObController): 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), @@ -253,21 +240,7 @@ class ContentController(ObController): if not content: return abort(404) - var_external_url = self._model_store.variable().get_one_by_name('external_url') - location = content.location - - 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) - elif content.has_file(): - location = "/{}".format(content.location) - elif content.type == ContentType.URL: - location = 'http://' + content.location if not content.location.startswith('http') else content.location - - return redirect(location) + return redirect(self._model_store.content().resolve_content_location(content)) def slideshow_content_delete_bulk_explr(self): working_folder_path, working_folder = self.get_working_folder() diff --git a/src/controller/PlayerController.py b/src/controller/PlayerController.py index cced6bf..0afef95 100644 --- a/src/controller/PlayerController.py +++ b/src/controller/PlayerController.py @@ -139,13 +139,21 @@ class PlayerController(ObController): if slide['type'] == ContentType.EXTERNAL_STORAGE.value: mount_point_dir = Path(slide['location']) - if True: #mount_point_dir.is_dir(): - for file in [Path('/Volumes/ESD-USB/obscreen/test/autumn.jpg'), Path('/Volumes/ESD-USB/obscreen/test/soundonly.jpg')]: #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) + logging.info(mount_point_dir) + if mount_point_dir.is_dir(): + logging.info('exist !') + for file in mount_point_dir.iterdir(): + logging.info(file) + if file.is_file() and not file.stem.startswith('.'): + logging.info("f is ok !") + slide['type'] = ContentType.guess_content_type_file(str(file.resolve())).value + slide['location'] = "{}/{}".format( + self._model_store.content().resolve_content_location(content), + file.name + ) + slide['name'] = file.stem + logging.info(slide.to_json()) + self._feed_playlist(playlist_loop, playlist_notifications, slide) else: self._feed_playlist(playlist_loop, playlist_notifications, slide) diff --git a/src/interface/ObController.py b/src/interface/ObController.py index 544cb0b..54270b6 100644 --- a/src/interface/ObController.py +++ b/src/interface/ObController.py @@ -42,3 +42,6 @@ class ObController(abc.ABC): def t(self, token) -> Union[Dict, str]: return self._model_store.lang().translate(token) + + def get_external_storage_server(self): + return self._kernel.external_storage_server diff --git a/src/manager/ConfigManager.py b/src/manager/ConfigManager.py index c036afc..16a7033 100644 --- a/src/manager/ConfigManager.py +++ b/src/manager/ConfigManager.py @@ -15,6 +15,8 @@ class ConfigManager: self._CONFIG = { 'version': None, 'demo': False, + 'port_http_external_storage': None, + 'bind_http_external_storage': '0.0.0.0', 'port': self.DEFAULT_PORT, 'bind': '0.0.0.0', 'debug': False, @@ -46,6 +48,8 @@ class ConfigManager: parser.add_argument('--log-level', '-ll', default=self._CONFIG['log_level'], help='Log Level') parser.add_argument('--log-stdout', '-ls', default=self._CONFIG['log_stdout'], action='store_true', help='Log to standard output') parser.add_argument('--demo', '-o', default=self._CONFIG['demo'], help='Demo mode to showcase obscreen in a sandbox') + parser.add_argument('--port-http-external-storage', '-bx', default=self._CONFIG['port_http_external_storage'], help='Port of http server serving external storage directory') + parser.add_argument('--bind-http-external-storage', '-px', default=self._CONFIG['bind_http_external_storage'], help='Bind address of http server serving external storage directory') parser.add_argument('--version', '-v', default=None, action='store_true', help='Get version number') return parser.parse_args() @@ -61,6 +65,10 @@ class ConfigManager: self._CONFIG['debug'] = args.debug if args.demo: self._CONFIG['demo'] = args.demo + if args.port_http_external_storage: + self._CONFIG['port_http_external_storage'] = args.port_http_external_storage + if args.bind_http_external_storage: + self._CONFIG['bind_http_external_storage'] = args.bind_http_external_storage if args.log_file: self._CONFIG['log_file'] = args.log_file if args.secret_key: diff --git a/src/manager/ContentManager.py b/src/manager/ContentManager.py index 7fc9f3a..5869d2b 100644 --- a/src/manager/ContentManager.py +++ b/src/manager/ContentManager.py @@ -216,3 +216,24 @@ class ContentManager(ModelManager): def count_contents_for_folder(self, folder_id: int) -> int: return len(self.get_contents(folder_id=folder_id)) + + def resolve_content_location(self, content: Content) -> str: + var_external_url = self._model_store.variable().get_one_by_name('external_url').as_string().strip().strip('/') + location = content.location + + if content.type == ContentType.EXTERNAL_STORAGE: + port_ex_st = self.get_external_storage_server().get_port() + if len(var_external_url) > 0: + location = "{}:{}/{}".format(var_external_url, port_ex_st, content.location.strip('/')) + else: + location = "http://localhost:{}/{}".format(port_ex_st, content.location.strip('/')) + elif content.type == ContentType.YOUTUBE: + location = "https://www.youtube.com/watch?v={}".format(content.location) + elif len(var_external_url) > 0 and content.has_file(): + location = "{}/{}".format(var_external_url.value, content.location) + elif content.has_file(): + location = "/{}".format(content.location) + elif content.type == ContentType.URL: + location = 'http://' + content.location if not content.location.startswith('http') else content.location + + return location \ No newline at end of file diff --git a/src/manager/ExternalStorageManager.py b/src/manager/ExternalStorageManager.py deleted file mode 100644 index 5b8786a..0000000 --- a/src/manager/ExternalStorageManager.py +++ /dev/null @@ -1,208 +0,0 @@ -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/enum/ContentType.py b/src/model/enum/ContentType.py index 70bf0af..5276ea7 100644 --- a/src/model/enum/ContentType.py +++ b/src/model/enum/ContentType.py @@ -19,7 +19,7 @@ class ContentInputType(Enum): elif value == ContentInputType.TEXT: return True elif value == ContentInputType.STORAGE: - return False + return True class ContentType(Enum): diff --git a/src/service/ExternalStorageServer.py b/src/service/ExternalStorageServer.py new file mode 100644 index 0000000..ca8d105 --- /dev/null +++ b/src/service/ExternalStorageServer.py @@ -0,0 +1,103 @@ +import os +import psutil +import platform +import logging +import http.server +import socketserver +import os +import signal +import sys +import socket +import threading + +from typing import Dict, Optional, List, Tuple, Union +from pathlib import Path + +from src.service.ModelStore import ModelStore +from src.model.entity.ExternalStorage import ExternalStorage + + +class ExternalStorageServer: + + MOUNTPOINT = Path("var/run/storage") + + def __init__(self, kernel, model_store: ModelStore): + self._kernel = kernel + self._model_store = model_store + + def get_directory(self): + return Path(self._kernel.get_project_dir(), self.MOUNTPOINT) + + def run(self): + port = self.get_port() + bind = self._model_store.config().map().get('bind_http_external_storage') + if not port: + return + + thread = threading.Thread(target=self._start, args=(self.get_directory(), port, bind)) + thread.daemon = True + thread.start() + + def get_port(self) -> Optional[int]: + port = self._model_store.config().map().get('port_http_external_storage') + return int(port) if port else None + + def _start(self, directory, port, bind): + class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): + def __init__(self, *args, **kwargs): + super().__init__(*args, directory=directory, **kwargs) + + Handler = CustomHTTPRequestHandler + + class ReusableTCPServer(socketserver.TCPServer): + allow_reuse_address = True + + with ReusableTCPServer((bind, port), Handler) as httpd: + logging.info("Serving external storage on dir://{}:{}".format(directory, port)) + httpd.serve_forever() + + @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 + + + @staticmethod + def get_external_storage_devices(): + return {storage.mount_point: "{} ({} - {}GB)".format( + storage.mount_point, + storage.logical_name, + storage.total_size_in_gigabytes() + ) for storage in ExternalStorageServer.list_usb_storage_devices()} \ No newline at end of file diff --git a/src/service/ModelStore.py b/src/service/ModelStore.py index a9a2858..86fbe48 100644 --- a/src/service/ModelStore.py +++ b/src/service/ModelStore.py @@ -12,7 +12,6 @@ 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: @@ -40,7 +39,6 @@ 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: @@ -49,9 +47,6 @@ 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 @@ -86,7 +81,6 @@ 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/system/10-obscreen-media-automount.rules b/system/10-obscreen-media-automount.rules new file mode 100644 index 0000000..d88377a --- /dev/null +++ b/system/10-obscreen-media-automount.rules @@ -0,0 +1,25 @@ +# normally we start at sdb to ignore the system hard drive but we're in rpi, sdcard is the system hard drive +KERNEL!="sd[a-z]*", GOTO="obscreen_automount_end" +ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="obscreen_automount_end" + +# import some useful filesystem info as variables +IMPORT{program}="/sbin/blkid -o udev -p %N" + +# set mountpoint directory output +ENV{dir_name}="/home/pi/obscreen/var/run/storage" +ACTION=="add", RUN+="/bin/mkdir -p '%E{dir_name}'" + +# global mount options +ACTION=="add", ENV{mount_options}="relatime" + +# filesystem-specific mount options (777/666 dir/file perms for ntfs/vfat) +ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},gid=100,dmask=000,fmask=111,utf8" + +# automount all other filesystems +ACTION=="add", ENV{ID_FS_TYPE}!="ntfs", RUN+="/usr/bin/systemd-mount --no-block --automount=yes --collect -o %E{mount_options} /dev/%k '%E{dir_name}'" + +# clean up after device removal +ACTION=="remove", ENV{dir_name}!="", RUN+="/usr/bin/systemd-umount '%E{dir_name}'" + +# exit +LABEL="obscreen_automount_end" \ No newline at end of file diff --git a/system/install-autorun-rpi.sh b/system/install-autorun-rpi.sh index bd28c70..8e8a093 100644 --- a/system/install-autorun-rpi.sh +++ b/system/install-autorun-rpi.sh @@ -59,11 +59,10 @@ sleep 3 # Update and install necessary packages apt update -apt install -y xinit xserver-xorg chromium-browser unclutter pulseaudio +apt install -y xinit xserver-xorg chromium-browser unclutter pulseaudio exfat-fuse ntfs-3g -# Add user to tty and video groups -usermod -aG tty $OWNER -usermod -aG video $OWNER +# Add user to tty, video and plugdev groups +usermod -aG tty,video,plugdev $OWNER # Configure Xwrapper touch /etc/X11/Xwrapper.config @@ -73,6 +72,12 @@ grep -qxF "needs_root_rights=yes" /etc/X11/Xwrapper.config || echo "needs_root_r # Create the systemd service to start Chromium in kiosk mode curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/obscreen-player.service | sed "s#/home/pi#$WORKING_DIR#g" | sed "s#=pi#=$OWNER#g" | tee /etc/systemd/system/obscreen-player.service +# Configure external storage automount +curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/10-obscreen-media-automount.rules | sed "s#/home/pi#$WORKING_DIR#g" | tee /etc/udev/rules.d/10-obscreen-media-automount.rules +udevadm control --reload-rules +systemctl restart udev +udevadm trigger + # Reload systemd, enable and start the service systemctl daemon-reload systemctl enable obscreen-player.service diff --git a/views/slideshow/contents/list.jinja.html b/views/slideshow/contents/list.jinja.html index a1dfb08..b1dc924 100644 --- a/views/slideshow/contents/list.jinja.html +++ b/views/slideshow/contents/list.jinja.html @@ -11,7 +11,6 @@ {% block add_js %}