/* -----------------------------------------------------------------------------
|
|
General
|
|
-------------------------------------------------------------------------- */
|
|
|
|
#menu .pure-menu-heading {
|
|
font-size: 100%;
|
|
padding: .5em .5em;
|
|
white-space: normal;
|
|
text-transform: initial;
|
|
}
|
|
|
|
.pure-g {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.pure-form legend {
|
|
font-weight: bold;
|
|
letter-spacing: 0;
|
|
margin: 10px 0 1em 0;
|
|
}
|
|
|
|
.pure-form .pure-g > label {
|
|
margin: .4em 0 .2em;
|
|
}
|
|
|
|
.pure-form input {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.pure-form input[type=text][disabled] {
|
|
color: #777777;
|
|
}
|
|
|
|
@media screen and (max-width: 32em) {
|
|
.header > h1 {
|
|
line-height: 100%;
|
|
font-size: 2em;
|
|
}
|
|
}
|
|
|
|
h2 {
|
|
font-size: 1em;
|
|
}
|
|
|
|
.panel {
|
|
display: none;
|
|
}
|
|
|
|
.block {
|
|
display: block;
|
|
}
|
|
|
|
.page {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.hint {
|
|
color: #ccc;
|
|
font-size: 80%;
|
|
margin: -10px 0 10px 0;
|
|
}
|
|
|
|
.hint a {
|
|
color:inherit;
|
|
}
|
|
|
|
legend.module,
|
|
.module {
|
|
display: none;
|
|
}
|
|
|
|
.template {
|
|
display: none;
|
|
}
|
|
|
|
input[name=upgrade] {
|
|
display: none;
|
|
}
|
|
|
|
select {
|
|
margin-bottom: 10px;
|
|
width: 100%;
|
|
}
|
|
|
|
input.center {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
div.center {
|
|
margin: .5em 0 1em;
|
|
}
|
|
|
|
.webmode {
|
|
display: none;
|
|
}
|
|
|
|
#password .content {
|
|
margin: 0 auto;
|
|
}
|
|
|
|
#layout .content {
|
|
margin: 0;
|
|
}
|
|
|
|
div.state {
|
|
border-top: 1px solid #eee;
|
|
margin-top: 20px;
|
|
padding-top: 30px;
|
|
}
|
|
|
|
.state div {
|
|
font-size: 80%;
|
|
}
|
|
|
|
.state span {
|
|
font-size: 80%;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.right {
|
|
text-align: right;
|
|
}
|
|
|
|
.pure-g span.terminal,
|
|
.pure-g textarea.terminal {
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 80%;
|
|
line-height: 100%;
|
|
background-color: #000;
|
|
color: #0F0;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Curtains
|
|
-------------------------------------------------------------------------- */
|
|
|
|
/* removeIf(!curtain) */
|
|
|
|
.curtain-div {
|
|
text-align: center;
|
|
}
|
|
|
|
.curtain-roller {
|
|
width: 300px;
|
|
height: 200px;
|
|
display: inline-block;
|
|
}
|
|
|
|
.curtain-button{
|
|
margin-left: 10px;
|
|
margin-right: 10px;
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
.reverse-range {
|
|
direction: rtl;
|
|
}
|
|
|
|
/* endRemoveIf(!curtain) */
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Buttons
|
|
-------------------------------------------------------------------------- */
|
|
|
|
.pure-button {
|
|
border-radius: 4px;
|
|
color: white;
|
|
letter-spacing: 0;
|
|
margin-bottom: 10px;
|
|
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
|
padding: 8px 8px;
|
|
}
|
|
|
|
.main-buttons {
|
|
margin: 20px auto;
|
|
text-align: center;
|
|
}
|
|
.main-buttons button {
|
|
width: 100px;
|
|
}
|
|
.button-del-schedule {
|
|
margin-top: 15px;
|
|
}
|
|
|
|
.button-reboot,
|
|
.button-reconnect,
|
|
.button-ha-del,
|
|
.button-rfb-forget,
|
|
.button-lightfox-clear,
|
|
.button-del-network,
|
|
.button-del-parent,
|
|
.button-del-schedule,
|
|
.button-dbg-clear,
|
|
.button-upgrade,
|
|
.button-clear-filters,
|
|
.button-clear-messages,
|
|
.button-clear-counts,
|
|
.button-settings-factory {
|
|
background: rgb(192, 0, 0); /* redish */
|
|
}
|
|
|
|
.button-update,
|
|
.button-update-password,
|
|
.button-add-network,
|
|
.button-add-mapping,
|
|
.button-add-rpnrule,
|
|
.button-add-rpntopic,
|
|
.button-upgrade-browse,
|
|
.button-rfb-learn,
|
|
.button-lightfox-learn,
|
|
.button-ha-add,
|
|
.button-ha-config,
|
|
.button-settings-backup,
|
|
.button-settings-restore,
|
|
.button-dbgcmd,
|
|
.button-apikey {
|
|
background: rgb(0, 192, 0); /* green */
|
|
}
|
|
|
|
.button-add-switch-schedule,
|
|
.button-add-light-schedule,
|
|
.button-add-curtain-schedule {
|
|
background: rgb(0, 192, 0); /* green */
|
|
display: none;
|
|
}
|
|
|
|
.button-more-network,
|
|
.button-more-schedule,
|
|
.button-wifi-scan,
|
|
.button-rfb-send {
|
|
background: rgb(255, 128, 0); /* orange */
|
|
}
|
|
|
|
.button-curtain-open,
|
|
.button-curtain-pause,
|
|
.button-curtain-close,
|
|
.button-generate-password {
|
|
background: rgb(66, 184, 221); /* blue */
|
|
}
|
|
|
|
.button-upgrade-browse,
|
|
.button-clear-filters,
|
|
.button-clear-messages,
|
|
.button-clear-counts,
|
|
.button-dbgcmd,
|
|
.button-ha-add,
|
|
.button-apikey,
|
|
.button-upgrade {
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.button-thermostat-reset-counters {
|
|
background: rgb(204, 139, 41);
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Sliders
|
|
-------------------------------------------------------------------------- */
|
|
|
|
input.slider {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
span.slider {
|
|
font-size: 70%;
|
|
letter-spacing: 0;
|
|
margin-left: 10px;
|
|
margin-top: 7px;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Checkboxes
|
|
-------------------------------------------------------------------------- */
|
|
|
|
.toggleWrapper {
|
|
overflow: hidden;
|
|
width: auto;
|
|
height: 30px;
|
|
margin: 0px 0px 10px 0px;
|
|
padding: 0px;
|
|
border-radius: 4px;
|
|
box-shadow: inset 1px 1px #CCC;
|
|
}
|
|
.toggleWrapper input {
|
|
position: absolute;
|
|
left: -99em;
|
|
}
|
|
label[for].toggle {
|
|
margin: 0px;
|
|
padding: 0px;
|
|
}
|
|
.toggle {
|
|
letter-spacing:normal;
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
position: relative;
|
|
width: 130px;
|
|
height: 100%;
|
|
background: #e9e9e9;
|
|
color: #a9a9a9;
|
|
border-radius: 4px;
|
|
-webkit-transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
}
|
|
.toggle:before,
|
|
.toggle:after {
|
|
position: absolute;
|
|
line-height: 30px;
|
|
font-size: .7em;
|
|
z-index: 2;
|
|
-webkit-transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
}
|
|
.toggle:before {
|
|
content: "NO";
|
|
left: 20px;
|
|
}
|
|
input[name="relay"] + .toggle:before {
|
|
content: "OFF";
|
|
}
|
|
input[name="thermostatMode"] + .toggle:before {
|
|
content: "Heater";
|
|
}
|
|
.toggle:after{
|
|
content: "YES";
|
|
right: 20px;
|
|
}
|
|
input[name="relay"] + .toggle:after {
|
|
content: "ON";
|
|
}
|
|
input[name="thermostatMode"] + .toggle:after {
|
|
content: "Cooler";
|
|
}
|
|
.toggle__handler {
|
|
display: inline-block;
|
|
position: relative;
|
|
z-index: 1;
|
|
background: #c00000;
|
|
width: 50%;
|
|
height: 100%;
|
|
border-radius: 4px;
|
|
border-top-right-radius: 0px;
|
|
border-bottom-right-radius: 0px;
|
|
top: 0px;
|
|
left: 0px;
|
|
-webkit-transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
-webkit-transform: translateX(0px);
|
|
transform: translateX(0px);
|
|
}
|
|
input:checked + .toggle:after {
|
|
color: #fff;
|
|
}
|
|
input:checked + .toggle:before {
|
|
color: #a9a9a9;
|
|
}
|
|
input + .toggle:before {
|
|
color: #fff;
|
|
}
|
|
input:checked + .toggle .toggle__handler {
|
|
width: 50%;
|
|
background: #00c000;
|
|
-webkit-transform: translateX(65px);
|
|
transform: translateX(65px);
|
|
border-color: #000;
|
|
border-top-left-radius: 0px;
|
|
border-bottom-left-radius: 0px;
|
|
border-top-right-radius: 4px;
|
|
border-bottom-right-radius: 4px;
|
|
}
|
|
input[name="thermostatMode"]:checked + .toggle .toggle__handler {
|
|
background: #00c0c0;
|
|
}
|
|
input[disabled] + .toggle .toggle__handler {
|
|
background: #ccc;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Loading
|
|
-------------------------------------------------------------------------- */
|
|
|
|
.loading {
|
|
background-image: url('images/loading.gif');
|
|
display: none;
|
|
height: 20px;
|
|
margin: 8px 0 0 10px;
|
|
width: 20px;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Menu
|
|
-------------------------------------------------------------------------- */
|
|
|
|
#menu .small {
|
|
font-size: 60%;
|
|
padding-left: 9px;
|
|
}
|
|
|
|
#menu div.footer {
|
|
color: #999;
|
|
font-size: 80%;
|
|
padding: 10px;
|
|
}
|
|
#menu div.footer a {
|
|
padding: 0;
|
|
text-decoration: none;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
RF Bridge panel
|
|
-------------------------------------------------------------------------- */
|
|
|
|
#panel-rfb fieldset {
|
|
margin: 10px 2px;
|
|
padding: 20px;
|
|
}
|
|
|
|
#panel-rfb input {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
#panel-rfb label {
|
|
padding-top: 5px;
|
|
}
|
|
|
|
#panel-rfb input {
|
|
text-align: center;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Admin panel
|
|
-------------------------------------------------------------------------- */
|
|
|
|
#upgrade-progress {
|
|
display: none;
|
|
height: 20px;
|
|
margin-top: 10px;
|
|
width: 100%;
|
|
}
|
|
|
|
#uploader,
|
|
#downloader {
|
|
display: none;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Wifi panel
|
|
-------------------------------------------------------------------------- */
|
|
|
|
#networks .pure-g,
|
|
#schedules .pure-g {
|
|
border-bottom: 1px solid #eee;
|
|
margin-bottom: 10px;
|
|
padding: 10px 0 10px 0;
|
|
}
|
|
|
|
#networks .more {
|
|
display: none;
|
|
}
|
|
|
|
#haConfig,
|
|
#scanResult {
|
|
margin-top: 10px;
|
|
display: none;
|
|
padding: 10px;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Table
|
|
-------------------------------------------------------------------------- */
|
|
|
|
.right {
|
|
text-align: right;
|
|
}
|
|
|
|
table.dataTable.display tbody td {
|
|
text-align: center;
|
|
}
|
|
|
|
#packets_filter {
|
|
display: none;
|
|
}
|
|
|
|
.filtered {
|
|
color: rgb(202, 60, 60);
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Logs
|
|
-------------------------------------------------------------------------- */
|
|
|
|
#weblog {
|
|
height: 400px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
Password input controls
|
|
-------------------------------------------------------------------------- */
|
|
.password-reveal {
|
|
font-family: EmojiSymbols,Segoe UI Symbol;
|
|
background: rgba(0,0,0,0);
|
|
display: inline-block;
|
|
float: right;
|
|
z-index: 50;
|
|
margin-top: 6px;
|
|
margin-left: -30px;
|
|
vertical-align: middle;
|
|
font-size: 1.2em;
|
|
height: 100%;
|
|
}
|
|
|
|
.password-reveal:after {
|
|
content: "👁";
|
|
}
|
|
|
|
input[type="password"] + .password-reveal {
|
|
color: rgba(205, 205, 205, 0.3);
|
|
}
|
|
|
|
input[type="text"] + .password-reveal {
|
|
color: rgba(66, 184, 221, 0.8);
|
|
}
|
|
|
|
.no-select {
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
input::-ms-clear,
|
|
input::-ms-reveal {
|
|
display: none;
|
|
}
|
|
|
|
/* css minifier must not combine these.
|
|
* style will not apply otherwise */
|
|
input::-ms-input-placeholder {
|
|
color: #ccd;
|
|
}
|
|
|
|
input::placeholder {
|
|
color: #ccc;
|
|
}
|