/* ----------------------------------------------------------------------------- General -------------------------------------------------------------------------- */ #layout.initial { padding-left: 0; } #layout.initial .content { margin: 0 auto; } #layout.initial .menu-link, #layout.initial #menu { display: none; } #layout.initial .button-setup-password { display: inline-block; } #layout .button-setup-password { display: none; } #layout.initial .setup-password-initial { display: block; } #layout .setup-password-initial { display: none; } #menu .pure-menu-item.pure-menu-item:first-child { font-size: 100%; font-weight: 250; text-transform: uppercase; background: #333; } #menu .pure-menu-item.pure-menu-selected.pure-menu-item:first-child { background: #1f8dd6; } #menu .pure-menu-selected a { transition: all ease 0.6s; } .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; } } .header strong { font-weight: bold; } h2 { font-size: 1em; } .panel { display: none; } .block { display: block; } .page { margin-top: 10px; } .pure-form-aligned .pure-control-group label { text-align: left; } .pure-form-message, .pure-form-message-inline { color: #9e9e9e; font-size: 80%; } .pure-form-message a, .pure-form-message-inline a { color:inherit; } .module { display: none; } .maybe-hidden { display: none; } input[name=upgrade] { display: none; } select { margin-bottom: 10px; width: 100%; } select[multiple] { overflow-y: auto; resize: vertical; } summary { font-weight: bold; } input.center { margin-bottom: 0; } div.center { margin: .5em 0 1em; } span.hidden { content-visibility: hidden; } span.visible { content-visibility: visible; } .webmode { display: none; } #layout .content { margin: 0; } .state { border-top: 1px solid #eee; margin-top: 20px; padding-top: 30px; font-size: 80%; line-height: 28px; } .state label { width: 33%; } .state span { font-weight: bold; display: block; } .right { text-align: right; } .center { text-align: center; } /* ----------------------------------------------------------------------------- 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-reboot, .button-reconnect, .button-ha-disabled, .button-rfb-forget, .button-lightfox-clear, .button-del-settings-group, .button-dbg-clear, .button-upgrade, .button-clear-filters, .button-clear-messages, .button-clear-counts, .button-settings-factory, .button-settings-password, .button-setup-password.button-setup-lenient { background: rgb(192, 0, 0); /* redish */ } .button-setup-password, .button-add-settings-group, .button-upgrade-browse, .button-rfb-learn, .button-lightfox-learn, .button-ha-enabled, .button-settings-backup, .button-settings-restore, .button-garland-set-default, .button-cmd, .button-apikey, .button-emon-expected-calculate { background: rgb(0, 192, 0); /* green */ } .button-save { --save-background: grey; background: var(--save-background); } .button-wifi-scan, .button-more-parent, .button-simple-action, .button-rfb-save { background: rgb(255, 128, 0); /* orange */ } .button-curtain-open, .button-curtain-pause, .button-curtain-close, .button-emon-expected, .button-emon-expected-apply, .button-generate-password { background: rgb(66, 184, 221); /* blue */ } .button-upgrade-browse, .button-clear-filters, .button-clear-messages, .button-clear-counts, .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 w/ custom toggle-switch appearance Based on https://gist.github.com/yairEO/f5d36e4c038f986a3f5ddf18b6ca4266 Adjusted to allow for 'content' inside of '::before' and small attr tweaks -------------------------------------------------------------------------- */ input.checkbox-toggle { --toggle-text-color: white; --toggle-border-radius: 100px; --toggle-handle-size: .6em; --toggle-elem-size: 2em; --toggle-bg-size: 3em; --toggle-handle-gap: .2em; --toggle-color-off: #c00000; /* redish */ --toggle-color-on: #00c000; /* greenish */ --toggle-fg: var(--toggle-color-off); --toggle-bg: color-mix(in srgb, var(--toggle-fg) 20%, transparent); appearance: none; box-sizing: content-box; display: inline-flex; justify-content: center; padding-inline: 0 var(--toggle-bg-size); border: none; height: auto; width: auto; margin: 0; border-radius: var(--toggle-border-radius); background: var(--toggle-bg); transition: var(--toggle-duration, .2s) cubic-bezier(.65, 0, .5, 1); user-select: none; outline: thin solid color-mix(in srgb, var(--toggle-bg) 25%, rgba(0,0,0,.2)); cursor: pointer; } /* only ::before is used for content, adjust padding to move the toggle to a specific position */ input.checkbox-toggle:checked { padding-inline: var(--toggle-bg-size) 0; --toggle-fg: var(--toggle-color-on); } input.checkbox-toggle::before { text-align: center; color: var(--toggle-text-color); width: var(--toggle-elem-size); } /* checkboxes are usually allow DISABLING and ENABLING settings */ input.checkbox-toggle::before { content: "NO"; } input.checkbox-toggle:checked::before { content: "YES"; } input.checkbox-toggle::before { padding: var(--toggle-handle-size); margin: var(--toggle-handle-gap); background: var(--toggle-fg); border-radius: var(--toggle-border-radius); transition: inherit; } input.checkbox-toggle + .pure-form-message { margin-top: .625em; } input[disabled].checkbox-toggle { filter: grayscale(0.8); } /* ----------------------------------------------------------------------------- Loading -------------------------------------------------------------------------- */ .loading { display: none; height: 1em; margin: 8px 0 0 10px; width: 1em; animation: 3s linear infinite reverse loading; } @keyframes loading { to { rotate: 0deg; } from { rotate: 360deg; } } /* ----------------------------------------------------------------------------- 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; } /* ----------------------------------------------------------------------------- Admin panel -------------------------------------------------------------------------- */ #upgrade-progress { display: none; height: 20px; margin-top: 10px; width: 100%; } #error-notification, #uploader, #downloader { display: none; } #error-notification.show-error { display: inherit; white-space: pre-wrap; } /* ----------------------------------------------------------------------------- Wifi panel -------------------------------------------------------------------------- */ #networks .pure-g, #schedules .pure-g { border-bottom: 1px solid #eee; margin-bottom: 10px; padding: 10px 0 10px 0; } .schedule { margin-bottom: 10px; } .schedule .button-del-settings-group { margin-left: auto; } #networks .more { display: none; } #haConfig, #scanResult { margin-top: 10px; display: none; padding: 10px; } /* ----------------------------------------------------------------------------- Password input controls -------------------------------------------------------------------------- */ .password-reveal { font-family: EmojiSymbols,Segoe UI Symbol; background: rgba(0,0,0,0); position: absolute; display: inline-block; float: right; z-index: 50; margin-top: 0.3em; margin-left: -1.4em; vertical-align: middle; font-size: 1.2em; } .pure-form input[type="password"]:has(+ .password-reveal), .pure-form input[type="text"]:has(+ .password-reveal) { display: inline-block; } .password-reveal::before { 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; } #error-notification { width: 100%; box-shadow: 0 1px 2px 1px rgb(192 0 0 / 25%) }