/*
 Polychromatic is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 Polychromatic is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with Polychromatic. If not, see <http://www.gnu.org/licenses/>.

 Copyright (C) 2015-2017 Luke Horwell <luke@ubuntu-mate.org>
               2015-2016 Terry Cain <terry@terrys-home.co.uk>
*/
/************************
   Colour Scheme
*************************/
/************************
   Global
*************************/
/* Fonts */
@font-face {
  font-family: Play;
  src: url('lib/Play-Regular.ttf');
}
html,
body,
input,
button {
  font-family: 'Play', 'Ubuntu', 'DejaVu Sans', 'Open Sans', sans-serif;
}
/* Behave more like an application.
 * (Some elements may need selection activating manually) */
html,
body {
  width: 100%;
  height: 100%;
  background: -webkit-linear-gradient(#000000, #323232);
  -webkit-user-select: none;
  overflow: hidden;
  cursor: default;
}
img {
  -webkit-user-select: none;
  pointer-events: none;
}
h1,
h2,
h3,
h4,
h5 {
  font-family: 'Play', 'Ubuntu', 'DejaVu Sans', 'Open Sans', sans-serif;
  font-weight: lighter;
  color: lime;
  margin-top: 16px;
  margin-bottom: 16px;
}
p,
a,
button,
table,
td,
tr,
label,
.alert {
  font-family: 'Play', 'Ubuntu', 'DejaVu Sans', 'Open Sans', sans-serif;
  color: #888888;
  font-size: small;
}
hr {
  border-color: #2d2d2d;
}
.btn.disabled {
  color: #484848;
  border-color: black;
}
button {
  -webkit-appearance: none;
  background-color: transparent;
  margin: 0;
  padding: 0;
  text-align: left;
  align-items: flex-start;
  display: block;
}
button > label {
  top: 2px;
  position: relative;
}
.link:hover {
  cursor: pointer;
}
.alert {
  color: white;
  margin-bottom: 16px;
}
/************************
   Cursors
*************************/
.cursor-wait {
  cursor: wait;
}
.cursor-mode-set {
  cursor: url("../cursors/mode-set.gif"), crosshair;
}
.cursor-mode-picker {
  cursor: url("../cursors/mode-picker.gif"), copy;
}
.cursor-mode-clear {
  cursor: url("../cursors/mode-clear.gif"), not-allowed;
}
/************************
   Header
*************************/
#header {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 42px;
  padding: 8px;
  background-image: url('../img/header/generic.jpg');
  background-repeat: no-repeat;
  background-position: left -2px;
  background-size: 100%;
  font-weight: bold;
  border-bottom: 2px solid #2d2d2d;
}
#header.is-dynamic {
  background-image: none;
  border-bottom: 0;
}
#header > #dynamic {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 74px;
  padding: 8px;
  background-size: 100%;
  background-position: left -2px;
  z-index: -10;
  transition: all 0.2s ease-in-out;
}
#header > #dynamic.overview {
  background-image: url('../img/header/generic.jpg');
}
#header > #dynamic.keyboard {
  background-image: url('../img/header/keyboard.png');
}
#header > #dynamic.mouse {
  background-image: url('../img/header/mouse.png');
}
#header > #dynamic.mousemat {
  background-image: url('../img/header/mousemat.png');
}
#header > #dynamic.keypad {
  background-image: url('../img/header/keypad.png');
}
#header > #dynamic.headset {
  background-image: url('../img/header/headset.png');
}
#header > #dynamic.generic {
  background-image: url('../img/header/generic.jpg');
}
#header h3 {
  padding: 0px;
  margin: 0px;
  margin-top: 5px;
}
.header-options {
  position: absolute;
  top: 0;
  right: 0;
  margin-top: 16px;
  margin-right: 16px;
}
/************************
   Header - Spectrum
*************************/
#dynamic.spectrum,
img.spectrum {
  -webkit-animation-name: spectrum;
  -webkit-animation-duration: 10s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
}
@-webkit-keyframes spectrum {
  0% {
    background-color: #c500ff;
  }
  14% {
    background-color: #ff8900;
  }
  28% {
    background-color: #fbff00;
  }
  42% {
    background-color: #7cff00;
  }
  56% {
    background-color: #00ffd9;
  }
  70% {
    background-color: #005aff;
  }
  84% {
    background-color: #3d00ff;
  }
  100% {
    background-color: #c500ff;
  }
}
span.spectrum {
  -webkit-animation-name: spectrum-text;
  -webkit-animation-duration: 10s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
}
@-webkit-keyframes spectrum-text {
  0% {
    color: #c500ff;
  }
  14% {
    color: #ff8900;
  }
  28% {
    color: #fbff00;
  }
  42% {
    color: #7cff00;
  }
  56% {
    color: #00ffd9;
  }
  70% {
    color: #005aff;
  }
  84% {
    color: #3d00ff;
  }
  100% {
    color: #c500ff;
  }
}
/************************
   Header - Wave
*************************/
.header.wave {
  background-image: url('../img/header/wave.jpg') !important;
  background-repeat: repeat-x;
  -webkit-animation-name: wave;
  -webkit-animation-duration: 1.5s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  z-index: -1;
}
@-webkit-keyframes wave {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: 1000px 0;
  }
}
span.wave,
img.wave {
  -webkit-animation-duration: 2s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
}
span.wave {
  -webkit-animation-name: spectrum-text;
}
img.wave {
  -webkit-animation-name: spectrum;
}
/************************
   Content
*************************/
#content {
  position: fixed;
  width: auto;
  padding: 4px;
  top: 64px;
  bottom: 50px;
  left: 16px;
  right: 16px;
  overflow-y: scroll;
  color: #888888;
  font-size: 0.9em;
}
#content.has-tabs {
  top: 95px;
  padding: 0;
}
#content.has-sidebar {
  left: 0;
}
#content p {
  padding: 0px;
  margin: 0px;
}
#content td,
#content tr {
  color: #888888;
}
#content td {
  padding-left: 16px;
}
#content a {
  color: lime;
  font-style: underline;
}
#content.with-tabs {
  margin-top: 28px;
}
.center {
  text-align: center;
}
.left {
  float: left;
  width: 49%;
}
.content .center {
  text-align: center;
}
.right {
  float: right;
  width: 49%;
}
.small-text {
  font-size: 12px;
}
.mode-text {
  color: #06ff00;
  font-weight: bold;
}
input[type="checkbox"],
input[type="radio"] {
  vertical-align: middle;
  position: relative;
  bottom: 1px;
}
input[type="radio"] {
  bottom: 3px;
}
/************************
   Footer
*************************/
#footer {
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 32px;
  padding: 8px;
  background-color: #121212;
}
#footer p {
  margin: 0;
  padding: 0;
  margin-top: 8px;
  font-size: 13px;
}
#footer #footer-left {
  float: left;
  width: auto;
  margin-left: 8px;
  padding: 0;
  margin: 0;
}
#footer #footer-right {
  float: right;
  text-align: right;
  width: auto;
  padding: 0;
  margin: 0;
  margin-right: 20px;
}
#error {
  color: red;
}
#error .warning {
  color: #ffff00;
}
/************************
   Page Dialogues
*************************/
#overlay {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1;
}
.blur {
  -webkit-filter: blur(2px);
}
.dialog {
  position: fixed;
  margin: auto;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: black;
  border: 2px solid green;
  padding: 12px;
  box-shadow: -1px -1px 16px 16px rgba(0, 0, 0, 0.5);
  z-index: 10;
}
.dialog.blur {
  opacity: 0.8;
  -webkit-filter: blur(2px);
}
.dialog h3 {
  margin-top: 8px;
}
.dialog.serious {
  border: 2px solid #ee0000;
}
.dialog.serious h3 {
  color: red;
}
.dialog.serious .btn.primary {
  color: #ff2222;
}
.dialog.serious .btn.primary:hover {
  color: #ff5555;
}
.dialog.serious .btn.primary:active {
  color: white;
  background-color: #ff2222;
}
.dialog.serious .btn.primary:focus {
  border-color: #4d0000;
}
.dialog.warning {
  border: 2px solid #cccc00;
}
.dialog.warning h3 {
  color: #ffff00;
}
.dialog-buttons {
  float: right;
  text-align: right;
  position: absolute;
  bottom: 10px;
  right: 10px;
  width: 97%;
}
/* Dialog Sizes */
#dialog-new {
  width: 50%;
  height: 44%;
}
#dialog-rename {
  width: 50%;
  height: 44%;
}
#dialog-del {
  width: 40%;
  height: 20%;
}
#dialog-applauncher {
  width: 72%;
  height: 70%;
  z-index: 11;
}
#dialog-help {
  width: 60%;
  height: 37%;
}
/* Changelog */
#changelog-body {
  overflow: scroll;
  height: calc(100% - 80px);
  color: #888888;
  font-size: 0.9em;
}
#changelog-body a {
  color: lime;
  text-decoration: underline;
  cursor: pointer;
}
/* Dialog Animations */
.dialog.in {
  -webkit-animation-name: dialog-in;
  -webkit-animation-duration: 0.25s;
  -webkit-animation-timing-function: ease-in-out;
}
@-webkit-keyframes dialog-in {
  0% {
    opacity: 0;
    -webkit-transform: scale3d(0.8, 0.8, 0.8);
  }
  100% {
    opacity: 1;
  }
}
.dialog.out {
  -webkit-animation-name: dialog-out;
  -webkit-animation-duration: 0.25s;
  -webkit-animation-timing-function: ease-in-out;
}
@-webkit-keyframes dialog-out {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: scale3d(0.8, 0.8, 0.8);
  }
}
/* Dialog Multiple Fields */
.dialog > table {
  width: 100%;
}
.dialog > table > tbody > tr > th {
  text-align: left;
}
.dialog > table > tbody > tr > td {
  text-align: right;
}
/* Dialog Elements */
.preview-area {
  width: 95%;
  height: 28px;
  margin: 4px;
  padding: 4px;
  background-color: rgba(128, 128, 128, 0.4);
}
.preview-area > p {
  margin-top: 6px;
  margin-left: 4px;
  float: left;
  font-size: 14px;
  color: lime;
}
.preview-area > img {
  float: left;
  padding: 2px;
  margin-left: 4px;
  width: 24px;
  height: 24px;
}
/************************
   Elements
*************************/
.btn {
  width: auto;
  height: 30px;
  background-color: #323232;
  color: #ded9cb;
  display: inline-block;
  padding: 4px 16px;
  font-size: 14px;
  line-height: 0;
  vertical-align: middle;
  text-decoration: none;
  text-align: center;
  border: 2px solid #2d2d2d;
  -webkit-user-select: none;
  -webkit-appearance: none;
}
.btn:hover {
  color: #0da902;
}
.btn:active {
  background-color: #06ff00;
  color: black;
}
.btn.disabled {
  background-color: #191919;
  color: #484848;
  pointer-events: none;
}
.btn.serious {
  color: #ff2222;
}
.btn.serious:hover {
  color: #ff5555;
}
.btn.serious:active {
  color: white;
  background-color: #ff2222;
}
.btn.serious:focus {
  border-color: #4d0000;
}
.btn.active {
  background-color: green;
}
.colour-preview {
  display: inline-block;
  width: 150px;
  height: 24px;
}
.colour-icon {
  display: inline-block;
  width: 24px;
  height: 24px;
  cursor: pointer;
  border: 1px #888888 solid;
  margin: 2px;
}
.color-more-btn {
  display: inline-block;
  background-color: black;
  background: url('../img/ui/more-options.svg') no-repeat center 100%;
  width: 30px;
  height: 24px;
}
/* Switch Sliders */
.switch {
  position: relative;
  display: inline-block;
  width: 40px;
  height: 20px;
  border: 2px solid transparent;
}
.switch > input[type=checkbox] {
  display: none;
}
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: gray;
  -webkit-transition: .4s;
}
.slider:before {
  position: absolute;
  content: "";
  width: 12px;
  height: 12px;
  left: 4px;
  bottom: 2px;
  background-color: lightgray;
  -webkit-transition: .4s;
}
input:checked + .slider {
  background-color: green;
}
input:focus + .slider {
  box-shadow: 0 0 1px #06ff00;
}
input:checked + .slider:before {
  -webkit-transform: translateX(18px);
  background-color: lime;
}
/* Drop-down controls */
select {
  height: 28px;
  width: auto;
  padding: 4px;
  background-color: #323232;
  border: 2px solid #2d2d2d;
  color: lightgray;
  -webkit-appearance: none;
  background-image: url('../img/ui/dropdown.png');
  background-position: right;
  background-repeat: no-repeat;
  color: #888888;
  font-size: small;
}
/* Keyboard navigation - focused elements */
input,
a,
button,
div,
select {
  border: 2px solid transparent;
}
input:focus,
a:focus,
button:focus,
div:focus,
select:focus {
  border: 2px solid green !important;
}
/************************
   Keyboard
*************************/
#keyboard-container {
  width: 850px;
  height: 326px;
  /** Stops text selection and text cursor */
  -webkit-user-select: none;
  cursor: default;
}
/************************
   Profile Editor
*************************/
#profile-icon {
  width: 24px;
  height: 24px;
  float: left;
  margin-right: 8px;
}
/************************
   Control Overrides
*************************/
/* Scroll Bar */
::-webkit-scrollbar {
  width: 18px;
  height: 18px;
  z-index: 100;
}
::-webkit-scrollbar-thumb {
  height: 6px;
  border: 4px solid rgba(0, 0, 0, 0);
  background-clip: padding-box;
  -webkit-border-radius: 7px;
  background-color: rgba(255, 255, 255, 0.5);
  -webkit-box-shadow: inset -1px -1px 0px rgba(0, 0, 0, 0.05), inset 1px 1px 0px rgba(0, 0, 0, 0.05);
  z-index: 100;
}
::-webkit-scrollbar-button {
  width: 0;
  height: 0;
  display: none;
  z-index: 100;
}
::-webkit-scrollbar-corner {
  background-color: transparent;
  z-index: 100;
}
/* Input Ranges */
input[type='range'] {
  -webkit-appearance: none;
  background: #323232;
}
input[type='range']::-webkit-slider-thumb {
  -webkit-appearance: none;
  background: lime;
  height: 12px;
  width: 12px;
  border-radius: 4px;
}
/* Checkbox and radio buttons */
input[type='radio'],
input[type='checkbox'] {
  -webkit-appearance: none;
  margin: 0.5em;
  width: 16px;
  height: 16px;
  background-color: grey;
}
input[type='radio'] {
  border-radius: 100%;
}
label {
  margin-right: 1em;
}
input[type='radio']:hover,
input[type='checkbox']:hover {
  opacity: 0.8;
}
input[type='radio']:checked {
  background-color: lime !important;
  background-image: url('../img/ui/radio.svg');
  background-size: 16px;
  background-position: center;
}
input[type='checkbox']:checked {
  background-color: lime !important;
  background-image: url('../img/ui/checkbox.svg');
  background-size: 16px;
  background-position: center;
}
input.disabled {
  background-color: #484848 !important;
  pointer-events: none;
}
label.disabled {
  color: #484848 !important;
  pointer-events: none;
}
/************************
   Dropdown Menus
*************************/
.dropdown-btn {
  background-color: black;
  color: white;
  padding: 2px;
  border: 2px solid #2d2d2d;
  cursor: pointer;
  min-width: 200px;
  background-image: url("../img/ui/dropdown.png");
  background-position: right;
  background-repeat: no-repeat;
  display: inline-block;
  vertical-align: middle;
}
.dropdown-btn:hover,
.dropdown-btn:focus {
  color: green;
}
.dropdown-btn:focus {
  background-image: url("../img/ui/dropdown-hover.png");
}
.dropdown-btn > img,
.dropdown-content button img,
.dropdown-content button div {
  vertical-align: middle;
  padding-right: 2px;
  width: 24px;
  height: 24px;
}
.dropdown-content button .colour-item {
  vertical-align: middle;
  margin-right: 4px;
  width: 16px;
  height: 16px;
  display: inline-block;
}
.dropdown {
  position: relative;
  display: inline-block;
}
.dropdown-content {
  display: none;
  position: absolute;
  background-color: #181818;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 1;
}
.dropdown-content button {
  color: white;
  width: 100%;
  padding: 6px 4px;
  text-decoration: none;
  display: block;
}
.dropdown-content button:hover {
  background-color: #4c4c4c;
}
/************************
   Lighting Effect Options
*************************/
#fx-image {
  width: 35em;
  height: auto;
  left: 0;
  right: 0;
  bottom: 5em;
  position: fixed;
  margin: auto;
  filter: grayscale(1);
  opacity: 0.25;
  z-index: -10;
}
.fx-overlay {
  position: absolute;
  border: 1px solid green;
  background-color: rgba(0, 0, 0, 0.75);
  width: 220px;
  height: auto;
  padding: 1em;
}
.fx-overlay h4 {
  margin: 0 0 0.5em 0;
}
/* Brightness Overlay */
#fx-brightness {
  bottom: 1em;
  left: 0;
}
#fx-brightness img {
  width: 1.5em;
  height: auto;
  vertical-align: bottom;
}
#fx-brightness input[type="range"] {
  width: 9.6em;
}
#fx-brightness span {
  float: right;
  color: lime;
  font-size: 0.9em;
  margin: 0.05em 0;
}
/* DPI Overlay */
#fx-dpi {
  bottom: 1em;
  left: 17em;
  width: 16em;
}
#fx-dpi img {
  width: 1.5em;
  height: auto;
  vertical-align: bottom;
}
#fx-dpi span span,
#fx-poll-rate span {
  float: right;
  color: lime;
  font-size: 0.9em;
  margin: 0.05em 0;
  width: 3em;
  text-align: right;
}
#fx-dpi span input[type="range"],
#fx-poll-rate input[type="range"] {
  width: 9.6em;
}
/* Poll Rate Overlay */
#fx-poll-rate {
  bottom: 1em;
  left: 36em;
  width: 13em;
}
/* Lighting Overlay */
#fx-lighting {
  top: 1.5em;
  left: 0;
  width: 26em;
}
/************************
   Profile List
*************************/
#app-profiles {
  height: 230px;
  width: 100%;
  overflow-x: hidden;
  overflow-y: scroll;
  border: 0;
  background-color: rgba(34, 34, 34, 0.5);
}
.app-profile-item {
  width: 97%;
  height: 28px;
  margin: 4px;
  padding-top: 2px;
  padding-bottom: 2px;
  border: 1px solid transparent;
  color: #888888;
  cursor: default;
  vertical-align: middle;
  font-size: 16px;
}
.app-profile-item:hover {
  opacity: 0.8;
  background-color: #888888;
  color: white;
}
.app-profile-item.active {
  border: 1px solid lime;
  background-color: green;
  color: white;
}
.app-profile-item > img {
  width: 22px;
  height: 22px;
  margin-left: 4px;
  margin-right: 6px;
  float: left;
}
.app-profile-item > span {
  position: relative;
  top: 2px;
}
/************************
   Applications List
*************************/
#app-launchers {
  height: 70%;
  width: 100%;
  overflow-x: none;
  overflow-y: scroll;
}
.app-launcher-item {
  position: relative;
  width: 220px;
  height: 30px;
  margin: 4px;
  padding: 2px;
  border: 1px solid transparent;
  color: #888888;
  font-size: 16px;
  cursor: default;
  vertical-align: middle;
  float: left;
  white-space: nowrap;
  overflow: hidden;
  display: block;
  text-overflow: ellipsis;
}
.app-launcher-item:hover {
  opacity: 0.8;
  background-color: #888888;
  color: white;
}
.app-launcher-item.active {
  border: 1px solid lime;
  background-color: green;
  color: white;
}
.app-launcher-item > img {
  width: 22px;
  height: 22px;
  margin-left: 4px;
  margin-right: 4px;
  float: left;
}
/************************
   Tabs
*************************/
#tabs {
  position: fixed;
  top: 59px;
  left: 0;
  right: 0;
  width: calc(100% - 12px);
  height: 32px;
  padding: 0 4px;
  background-color: rgba(18, 18, 18, 0.8);
  border-bottom: 2px solid #323232;
  overflow-y: none;
  white-space: nowrap;
}
#tabs > button {
  display: inline-block;
  position: relative;
  top: 0px;
  height: 34px;
  text-align: center;
  width: auto;
  padding: 0 10px;
  border: 2px solid transparent !important;
  border-bottom: 2px solid #2d2d2d !important;
  color: white;
  -webkit-filter: grayscale(1);
  vertical-align: top;
}
#tabs > button:hover,
#tabs > button:focus {
  opacity: 0.8;
  border-bottom: 2px solid green !important;
}
#tabs > button.active {
  color: lime;
  border-bottom: 2px solid lime !important;
  -webkit-filter: grayscale(0);
}
#tabs > button > img {
  vertical-align: middle;
  width: 24px;
  height: 24px;
}
#tabs > button > span {
  vertical-align: middle;
  margin-left: 4px;
}
#tabs .tab-right {
  float: right;
}
#refresh-list {
  float: right;
  margin-right: 16px;
}
/************************
   Sidebar
*************************/
#sidebar {
  position: fixed;
  top: calc(95px);
  bottom: calc(48px);
  left: 0;
  width: 275px;
  display: inline-block;
  vertical-align: top;
  background-color: #000000;
}
#sidebar .sidebar-item {
  width: 100%;
  border-left: 3px solid #000000;
  border-bottom: 1px solid #2d2d2d;
  padding: 4px;
  transition: border-left 0.25s, padding-left 0.25s, background-color 0.25s, color 0.25s;
}
#sidebar .sidebar-item img {
  vertical-align: middle;
  padding: 0 4px;
  transition: filter 0.25s;
  width: 24px;
  height: 24px;
}
#sidebar .sidebar-item span {
  vertical-align: middle;
}
#sidebar .sidebar-item.active {
  border-left-color: #06ff00;
}
#sidebar .sidebar-item:hover,
#sidebar .sidebar-item:focus {
  background-color: #808080;
  color: #e6e6e6;
  border-left-color: white !important;
}
#sidebar .sidebar-item:hover img,
#sidebar .sidebar-item:focus img {
  filter: grayscale(1) brightness(1.5);
}
#sidebar .sidebar-item:active {
  border-color: transparent !important;
  border-left-color: white !important;
}
#sidebar-page {
  display: inline-block;
  vertical-align: top;
  margin-left: 275px;
  padding: 0em 1em;
  width: calc(100% - 275px - 2.3em);
}
/************************
   Loading Page
*************************/
.loading {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  -webkit-animation-name: spin;
  -webkit-animation-iteration-count: infinite;
  filter: blur(0.2em);
  width: 10em;
  height: auto;
}
#loading-1 {
  -webkit-animation-timing-function: cubic-bezier(0.54, 0.43, 0.43, 0.54);
  -webkit-animation-duration: 1.5s;
}
#loading-2 {
  -webkit-animation-timing-function: cubic-bezier(0.54, 0.43, 0.43, 0.54);
  -webkit-animation-duration: 2s;
}
#loading-3 {
  -webkit-animation-timing-function: cubic-bezier(0.54, 0.43, 0.43, 0.54);
  -webkit-animation-duration: 1.25s;
}
@-webkit-keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
#status-text {
  position: fixed;
  bottom: 12em;
  left: 0;
  right: 0;
  margin: auto;
  color: #888888;
  text-align: center;
  width: 400px;
  height: 1.3em;
}
/************************
   Progress Bar
*************************/
.progress {
  position: fixed;
  background-color: #191919;
  bottom: 10em;
  left: 0;
  right: 0;
  margin: auto;
  text-align: center;
  width: 300px;
  height: 5px;
}
.progress-inner {
  position: relative;
  background-color: rgba(0, 255, 0, 0.5);
  top: -2px;
  left: -2px;
  height: 4px;
  width: 0%;
}
.progress-inner.increasing {
  -webkit-animation: increasing 1s ease-in-out forwards;
}
@keyframes increasing {
  from {
    width: 0%;
  }
  to {
    width: 100%;
  }
}
/************************
   Error Page
*************************/
#error-page {
  text-align: center;
  line-height: 1.5em;
  -webkit-animation-name: error-page-entrance;
  -webkit-animation-duration: 0.5s;
  -webkit-animation-iteration-count: 1;
  -webkit-animation-timing-function: ease-out;
}
#error-page img {
  margin-top: 3em;
  width: auto;
  height: 150px;
}
#error-page h2.serious {
  color: red;
}
#error-page h2.warning {
  color: #ffff00;
}
#error-page p {
  text-align: center;
  max-height: 200px;
  overflow-y: auto;
}
#error-page p > code {
  color: lime;
}
#error-page a {
  text-decoration: underline;
}
#error-page a:hover {
  cursor: pointer;
  color: green;
}
#error-page #error-traceback {
  text-align: left;
  margin: auto;
  max-width: 80vw;
}
#error-page #error-traceback h5 {
  width: 100%;
}
#error-page #error-traceback pre {
  background-color: black;
  border-left: 2px solid green;
  color: white;
  padding: 0.5em;
  -webkit-user-select: all;
  cursor: text;
}
#error-page #error-traceback pre::selection {
  background: green;
  color: white;
}
#error-page #error-code {
  position: fixed;
  left: 20px;
  bottom: 64px;
  z-index: 1000;
  color: gray;
}
@-webkit-keyframes error-page-entrance {
  0% {
    transform: scale(0.9);
  }
  100% {
    transform: scale(1);
  }
}
/************************
   In-line Help Icons
*************************/
.macro-key {
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 0;
  background-image: url('../img/ui/macro-keys.svg');
  background-repeat: none;
  background-position: center;
  -webkit-filter: grayscale(1);
  vertical-align: middle;
}
.game-mode {
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 0;
  background-image: url('../img/ui/game-mode.svg');
  background-repeat: none;
  background-position: center;
  -webkit-filter: grayscale(1);
  vertical-align: middle;
}
/************************
   Overview Screens
*************************/
.device-card {
  position: relative;
  display: inline-block;
  width: 420px;
  height: 150px;
  margin: 12px;
  padding: 8px;
  background-color: black;
  box-shadow: 0px 0px 8px lime;
  border-radius: 8px;
  transition: 0.1s box-shadow ease-in-out;
}
.device-card:focus,
.device-card:hover {
  /*cursor: pointer;*/
  box-shadow: 0px 0px 16px lime;
}
.device-card > img {
  float: left;
  width: 130px;
  height: auto;
  padding: 6px;
  margin-right: 16px;
}
.device-card > p > img {
  position: relative;
  top: 6px;
  width: 22px;
  height: 22px;
}
.device-card .effect-status {
  float: left;
  top: 5px;
  position: relative;
  color: lime;
}
.device-card .brightness-status {
  float: right;
  top: 15px;
  position: relative;
}
/************************
   Preferences - General
*************************/
/* Labels and Controls */
.pref-input {
  background: black;
  border: 1px solid grey;
  color: white;
  width: 400px;
  height: 24px;
  float: left;
  vertical-align: middle;
}
.pref-input.path {
  font-family: "Ubuntu Mono", "Droid Sans Mono", "FreeMono", "Courier New", Courier, monospace;
}
.pref-label {
  color: #06ff00;
}
.pref-tray-preview {
  width: 22px;
  height: 22px;
  margin-left: 2px;
  margin-right: 4px;
}
/* About page specific */
.about-logo {
  float: left;
  margin: 1em;
  margin-left: 0;
  max-height: 50px;
  vertical-align: middle;
}
.about-text {
  float: left;
  margin: 0.6em 0;
  vertical-align: middle;
}
.about-update-status {
  color: lime;
  margin: 1em 0;
  font-size: small;
}
.about-label {
  clear: both;
  display: block;
  margin: 0.5em 0;
}
.about-label code {
  color: lime;
}
/************************
   Preferences - Colour Table
*************************/
#colour-table a {
  border: none;
}
.colour-table-item {
  width: 100%;
  margin: 0;
  height: 24px;
  padding-top: 2px;
  padding-bottom: 2px;
  border: 1px solid transparent;
  color: #888888;
  cursor: default;
  vertical-align: middle;
  font-size: 16px;
}
.colour-table-item > .preview {
  float: left;
  width: 20px;
  height: 20px;
}
.colour-table-item > .name {
  position: relative;
  top: 4px;
  left: 8px;
}
.colour-table-item > .value {
  float: right;
  color: dimgray;
  position: relative;
  top: 8px;
}
.colour-table-item:hover {
  opacity: 0.8;
  background-color: #888888;
}
.colour-table-item:hover > .name,
.colour-table-item:hover > .value {
  color: white;
}
.colour-table-item.active {
  border: 1px solid lime;
  background-color: green;
  color: white;
}
.colour-table-item.active > .name,
.colour-table-item.active > .value {
  color: white;
}
#colour-left {
  width: 300px;
  display: inline-block;
  vertical-align: top;
}
#colour-right {
  width: 300px;
  display: inline-block;
  vertical-align: top;
  padding-left: 1em;
}
#colour-right input {
  width: 250px;
  margin: 1em 0;
}
#colour-edit-preview {
  float: left;
}
/************************
   Preferences - Tray Icons
*************************/
.tray-uuid {
  width: 64px;
  height: 40px;
}
.tray-uuid > img {
  width: 24px;
  height: auto;
}
.tray-uuid.selected {
  border: 2px solid lime;
}
input.invalid {
  border: 1px solid red;
}
label.invalid {
  color: red;
  display: block;
  width: 100%;
  padding: 4px;
}
.gtk-preview-panel {
  display: inline-block;
  text-align: center;
  height: 24px;
  padding: 2px 16px;
}
.gtk-preview {
  height: 22px;
  width: 22px;
}
/************************
   Misc UI
*************************/
.loading-text {
  color: #888888;
  font-size: 0.9em;
}
