diff --git a/html/css/dark.css b/html/css/dark.css
index 674a91ec1..d30257d0e 100644
--- a/html/css/dark.css
+++ b/html/css/dark.css
@@ -17,3 +17,80 @@
.twitter-typeahead .tt-hint {
border-color: #000 !important;
}
+
+.pace {
+ -webkit-pointer-events: none;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.pace-inactive {
+ display: none;
+}
+
+.pace .pace-progress {
+ background: #d9edf7;
+ position: fixed;
+ z-index: 2000;
+ top: 0;
+ right: 100%;
+ width: 100%;
+ height: 2px;
+}
+
+.pace .pace-progress-inner {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px #d9edf7, 0 0 5px #d9edf7;
+ opacity: 1.0;
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -moz-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ -o-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+}
+
+.pace .pace-activity {
+ display: block;
+ position: fixed;
+ z-index: 2000;
+ top: 16px;
+ right: 45px;
+ width: 20px;
+ height: 20px;
+ border: solid 2px transparent;
+ border-top-color: #29d;
+ border-left-color: #29d;
+ border-radius: 10px;
+ -webkit-animation: pace-spinner 400ms linear infinite;
+ -moz-animation: pace-spinner 400ms linear infinite;
+ -ms-animation: pace-spinner 400ms linear infinite;
+ -o-animation: pace-spinner 400ms linear infinite;
+ animation: pace-spinner 400ms linear infinite;
+}
+
+@-webkit-keyframes pace-spinner {
+ 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-moz-keyframes pace-spinner {
+ 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-o-keyframes pace-spinner {
+ 0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-ms-keyframes pace-spinner {
+ 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@keyframes pace-spinner {
+ 0% { transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); transform: rotate(360deg); }
+}
\ No newline at end of file
diff --git a/html/css/light.css b/html/css/light.css
index b2c3e9747..93f69e336 100644
--- a/html/css/light.css
+++ b/html/css/light.css
@@ -14,3 +14,79 @@
color: #357ebd;
}
+.pace {
+ -webkit-pointer-events: none;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.pace-inactive {
+ display: none;
+}
+
+.pace .pace-progress {
+ background: #29d;
+ position: fixed;
+ z-index: 2000;
+ top: 0;
+ right: 100%;
+ width: 100%;
+ height: 2px;
+}
+
+.pace .pace-progress-inner {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px #29d, 0 0 5px #29d;
+ opacity: 1.0;
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -moz-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ -o-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+}
+
+.pace .pace-activity {
+ display: block;
+ position: fixed;
+ z-index: 2000;
+ top: 16px;
+ right: 45px;
+ width: 20px;
+ height: 20px;
+ border: solid 2px transparent;
+ border-top-color: #29d;
+ border-left-color: #29d;
+ border-radius: 10px;
+ -webkit-animation: pace-spinner 400ms linear infinite;
+ -moz-animation: pace-spinner 400ms linear infinite;
+ -ms-animation: pace-spinner 400ms linear infinite;
+ -o-animation: pace-spinner 400ms linear infinite;
+ animation: pace-spinner 400ms linear infinite;
+}
+
+@-webkit-keyframes pace-spinner {
+ 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-moz-keyframes pace-spinner {
+ 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-o-keyframes pace-spinner {
+ 0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-ms-keyframes pace-spinner {
+ 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@keyframes pace-spinner {
+ 0% { transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); transform: rotate(360deg); }
+}
\ No newline at end of file
diff --git a/html/css/mono.css b/html/css/mono.css
index be4bcc262..4abf58977 100644
--- a/html/css/mono.css
+++ b/html/css/mono.css
@@ -17,3 +17,80 @@
.twitter-typeahead .tt-hint {
border-color: #000 !important;
}
+
+.pace {
+ -webkit-pointer-events: none;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.pace-inactive {
+ display: none;
+}
+
+.pace .pace-progress {
+ background: #d9edf7;
+ position: fixed;
+ z-index: 2000;
+ top: 0;
+ right: 100%;
+ width: 100%;
+ height: 2px;
+}
+
+.pace .pace-progress-inner {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px #d9edf7, 0 0 5px #d9edf7;
+ opacity: 1.0;
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -moz-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ -o-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+}
+
+.pace .pace-activity {
+ display: block;
+ position: fixed;
+ z-index: 2000;
+ top: 16px;
+ right: 45px;
+ width: 20px;
+ height: 20px;
+ border: solid 2px transparent;
+ border-top-color: #29d;
+ border-left-color: #29d;
+ border-radius: 10px;
+ -webkit-animation: pace-spinner 400ms linear infinite;
+ -moz-animation: pace-spinner 400ms linear infinite;
+ -ms-animation: pace-spinner 400ms linear infinite;
+ -o-animation: pace-spinner 400ms linear infinite;
+ animation: pace-spinner 400ms linear infinite;
+}
+
+@-webkit-keyframes pace-spinner {
+ 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-moz-keyframes pace-spinner {
+ 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-o-keyframes pace-spinner {
+ 0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@-ms-keyframes pace-spinner {
+ 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
+}
+@keyframes pace-spinner {
+ 0% { transform: rotate(0deg); transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); transform: rotate(360deg); }
+}
\ No newline at end of file
diff --git a/html/images/librenms_logo.png b/html/images/librenms_logo.png
index 3c999691c..fd33619da 100644
Binary files a/html/images/librenms_logo.png and b/html/images/librenms_logo.png differ
diff --git a/html/images/librenms_logo_dark.png b/html/images/librenms_logo_dark.png
index 3c999691c..fd33619da 100644
Binary files a/html/images/librenms_logo_dark.png and b/html/images/librenms_logo_dark.png differ
diff --git a/html/images/librenms_logo_mono.png b/html/images/librenms_logo_mono.png
index 3c999691c..fd33619da 100644
Binary files a/html/images/librenms_logo_mono.png and b/html/images/librenms_logo_mono.png differ
diff --git a/html/index.php b/html/index.php
index 9f2a84708..6e7c3cdc5 100644
--- a/html/index.php
+++ b/html/index.php
@@ -150,6 +150,7 @@ if (empty($config['favicon'])) {
+