Fork of the espurna firmware for `mhsw` switches
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

511 lines
9.6 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
5 years ago
6 years ago
6 years ago
5 years ago
  1. /* -----------------------------------------------------------------------------
  2. General
  3. -------------------------------------------------------------------------- */
  4. #menu .pure-menu-heading {
  5. font-size: 100%;
  6. padding: .5em .5em;
  7. white-space: normal;
  8. text-transform: initial;
  9. }
  10. .pure-g {
  11. margin-bottom: 0;
  12. }
  13. .pure-form legend {
  14. font-weight: bold;
  15. letter-spacing: 0;
  16. margin: 10px 0 1em 0;
  17. }
  18. .pure-form .pure-g > label {
  19. margin: .4em 0 .2em;
  20. }
  21. .pure-form input {
  22. margin-bottom: 10px;
  23. }
  24. .pure-form input[type=text][disabled] {
  25. color: #777777;
  26. }
  27. @media screen and (max-width: 32em) {
  28. .header > h1 {
  29. line-height: 100%;
  30. font-size: 2em;
  31. }
  32. }
  33. h2 {
  34. font-size: 1em;
  35. }
  36. .panel {
  37. display: none;
  38. }
  39. .block {
  40. display: block;
  41. }
  42. .page {
  43. margin-top: 10px;
  44. }
  45. .hint {
  46. color: #ccc;
  47. font-size: 80%;
  48. margin: -10px 0 10px 0;
  49. }
  50. .hint a {
  51. color:inherit;
  52. }
  53. legend.module,
  54. .module {
  55. display: none;
  56. }
  57. .template {
  58. display: none;
  59. }
  60. input[name=upgrade] {
  61. display: none;
  62. }
  63. select {
  64. margin-bottom: 10px;
  65. width: 100%;
  66. }
  67. input.center {
  68. margin-bottom: 0;
  69. }
  70. div.center {
  71. margin: .5em 0 1em;
  72. }
  73. .webmode {
  74. display: none;
  75. }
  76. #password .content {
  77. margin: 0 auto;
  78. }
  79. #layout .content {
  80. margin: 0;
  81. }
  82. div.state {
  83. border-top: 1px solid #eee;
  84. margin-top: 20px;
  85. padding-top: 30px;
  86. }
  87. .state div {
  88. font-size: 80%;
  89. }
  90. .state span {
  91. font-size: 80%;
  92. font-weight: bold;
  93. }
  94. .right {
  95. text-align: right;
  96. }
  97. .pure-g span.terminal,
  98. .pure-g textarea.terminal {
  99. font-family: 'Courier New', monospace;
  100. font-size: 80%;
  101. line-height: 100%;
  102. background-color: #000;
  103. color: #0F0;
  104. }
  105. /* -----------------------------------------------------------------------------
  106. Buttons
  107. -------------------------------------------------------------------------- */
  108. .pure-button {
  109. border-radius: 4px;
  110. color: white;
  111. letter-spacing: 0;
  112. margin-bottom: 10px;
  113. text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
  114. padding: 8px 8px;
  115. }
  116. .main-buttons {
  117. margin: 20px auto;
  118. text-align: center;
  119. }
  120. .main-buttons button {
  121. width: 100px;
  122. }
  123. .button-del-schedule {
  124. margin-top: 15px;
  125. }
  126. .button-reboot,
  127. .button-reconnect,
  128. .button-ha-del,
  129. .button-rfb-forget,
  130. .button-lightfox-clear,
  131. .button-del-network,
  132. .button-del-mapping,
  133. .button-del-schedule,
  134. .button-dbg-clear,
  135. .button-upgrade,
  136. .button-clear-filters,
  137. .button-clear-messages,
  138. .button-clear-counts,
  139. .button-settings-factory {
  140. background: rgb(192, 0, 0); /* redish */
  141. }
  142. .button-update,
  143. .button-update-password,
  144. .button-add-network,
  145. .button-add-mapping,
  146. .button-upgrade-browse,
  147. .button-rfb-learn,
  148. .button-lightfox-learn,
  149. .button-ha-add,
  150. .button-ha-config,
  151. .button-settings-backup,
  152. .button-settings-restore,
  153. .button-dbgcmd,
  154. .button-apikey {
  155. background: rgb(0, 192, 0); /* green */
  156. }
  157. .button-add-switch-schedule,
  158. .button-add-light-schedule {
  159. background: rgb(0, 192, 0); /* green */
  160. display: none;
  161. }
  162. .button-more-network,
  163. .button-more-schedule,
  164. .button-wifi-scan,
  165. .button-rfb-send {
  166. background: rgb(255, 128, 0); /* orange */
  167. }
  168. .button-generate-password {
  169. background: rgb(66, 184, 221); /* blue */
  170. }
  171. .button-upgrade-browse,
  172. .button-clear-filters,
  173. .button-clear-messages,
  174. .button-clear-counts,
  175. .button-dbgcmd,
  176. .button-ha-add,
  177. .button-apikey,
  178. .button-upgrade {
  179. margin-left: 5px;
  180. }
  181. .button-thermostat-reset-counters {
  182. background: rgb(204, 139, 41);
  183. }
  184. /* -----------------------------------------------------------------------------
  185. Sliders
  186. -------------------------------------------------------------------------- */
  187. input.slider {
  188. margin-top: 10px;
  189. }
  190. span.slider {
  191. font-size: 70%;
  192. letter-spacing: 0;
  193. margin-left: 10px;
  194. margin-top: 7px;
  195. }
  196. /* -----------------------------------------------------------------------------
  197. Checkboxes
  198. -------------------------------------------------------------------------- */
  199. .toggleWrapper {
  200. overflow: hidden;
  201. width: auto;
  202. height: 30px;
  203. margin: 0px 0px 10px 0px;
  204. padding: 0px;
  205. border-radius: 4px;
  206. box-shadow: inset 1px 1px #CCC;
  207. }
  208. .toggleWrapper input {
  209. position: absolute;
  210. left: -99em;
  211. }
  212. label[for].toggle {
  213. margin: 0px;
  214. padding: 0px;
  215. }
  216. .toggle {
  217. letter-spacing:normal;
  218. cursor: pointer;
  219. display: inline-block;
  220. position: relative;
  221. width: 130px;
  222. height: 100%;
  223. background: #e9e9e9;
  224. color: #a9a9a9;
  225. border-radius: 4px;
  226. -webkit-transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  227. transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  228. }
  229. .toggle:before,
  230. .toggle:after {
  231. position: absolute;
  232. line-height: 30px;
  233. font-size: .7em;
  234. z-index: 2;
  235. -webkit-transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  236. transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  237. }
  238. .toggle:before {
  239. content: "NO";
  240. left: 20px;
  241. }
  242. input[name="relay"] + .toggle:before {
  243. content: "OFF";
  244. }
  245. input[name="thermostatMode"] + .toggle:before {
  246. content: "Heater";
  247. }
  248. .toggle:after{
  249. content: "YES";
  250. right: 20px;
  251. }
  252. input[name="relay"] + .toggle:after {
  253. content: "ON";
  254. }
  255. input[name="thermostatMode"] + .toggle:after {
  256. content: "Cooler";
  257. }
  258. .toggle__handler {
  259. display: inline-block;
  260. position: relative;
  261. z-index: 1;
  262. background: #c00000;
  263. width: 50%;
  264. height: 100%;
  265. border-radius: 4px;
  266. border-top-right-radius: 0px;
  267. border-bottom-right-radius: 0px;
  268. top: 0px;
  269. left: 0px;
  270. -webkit-transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  271. transition: all 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
  272. -webkit-transform: translateX(0px);
  273. transform: translateX(0px);
  274. }
  275. input:checked + .toggle:after {
  276. color: #fff;
  277. }
  278. input:checked + .toggle:before {
  279. color: #a9a9a9;
  280. }
  281. input + .toggle:before {
  282. color: #fff;
  283. }
  284. input:checked + .toggle .toggle__handler {
  285. width: 50%;
  286. background: #00c000;
  287. -webkit-transform: translateX(65px);
  288. transform: translateX(65px);
  289. border-color: #000;
  290. border-top-left-radius: 0px;
  291. border-bottom-left-radius: 0px;
  292. border-top-right-radius: 4px;
  293. border-bottom-right-radius: 4px;
  294. }
  295. input[name="thermostatMode"]:checked + .toggle .toggle__handler {
  296. background: #00c0c0;
  297. }
  298. input[disabled] + .toggle .toggle__handler {
  299. background: #ccc;
  300. }
  301. /* -----------------------------------------------------------------------------
  302. Loading
  303. -------------------------------------------------------------------------- */
  304. .loading {
  305. background-image: url('images/loading.gif');
  306. display: none;
  307. height: 20px;
  308. margin: 8px 0 0 10px;
  309. width: 20px;
  310. }
  311. /* -----------------------------------------------------------------------------
  312. Menu
  313. -------------------------------------------------------------------------- */
  314. #menu .small {
  315. font-size: 60%;
  316. padding-left: 9px;
  317. }
  318. #menu div.footer {
  319. color: #999;
  320. font-size: 80%;
  321. padding: 10px;
  322. }
  323. #menu div.footer a {
  324. padding: 0;
  325. text-decoration: none;
  326. }
  327. /* -----------------------------------------------------------------------------
  328. RF Bridge panel
  329. -------------------------------------------------------------------------- */
  330. #panel-rfb fieldset {
  331. margin: 10px 2px;
  332. padding: 20px;
  333. }
  334. #panel-rfb input {
  335. margin-right: 5px;
  336. }
  337. #panel-rfb label {
  338. padding-top: 5px;
  339. }
  340. #panel-rfb input {
  341. text-align: center;
  342. }
  343. /* -----------------------------------------------------------------------------
  344. Admin panel
  345. -------------------------------------------------------------------------- */
  346. #upgrade-progress {
  347. display: none;
  348. height: 20px;
  349. margin-top: 10px;
  350. width: 100%;
  351. }
  352. #uploader,
  353. #downloader {
  354. display: none;
  355. }
  356. /* -----------------------------------------------------------------------------
  357. Wifi panel
  358. -------------------------------------------------------------------------- */
  359. #networks .pure-g,
  360. #schedules .pure-g {
  361. border-bottom: 1px solid #eee;
  362. margin-bottom: 10px;
  363. padding: 10px 0 10px 0;
  364. }
  365. #networks .more {
  366. display: none;
  367. }
  368. #haConfig,
  369. #scanResult {
  370. margin-top: 10px;
  371. display: none;
  372. padding: 10px;
  373. }
  374. /* -----------------------------------------------------------------------------
  375. Table
  376. -------------------------------------------------------------------------- */
  377. .right {
  378. text-align: right;
  379. }
  380. table.dataTable.display tbody td {
  381. text-align: center;
  382. }
  383. #packets_filter {
  384. display: none;
  385. }
  386. .filtered {
  387. color: rgb(202, 60, 60);
  388. }
  389. /* -----------------------------------------------------------------------------
  390. Logs
  391. -------------------------------------------------------------------------- */
  392. #weblog {
  393. height: 400px;
  394. margin-bottom: 10px;
  395. }
  396. /* -----------------------------------------------------------------------------
  397. Password input controls
  398. -------------------------------------------------------------------------- */
  399. .password-reveal {
  400. font-family: EmojiSymbols,Segoe UI Symbol;
  401. background: rgba(0,0,0,0);
  402. display: inline-block;
  403. float: right;
  404. z-index: 50;
  405. margin-top: 6px;
  406. margin-left: -30px;
  407. vertical-align: middle;
  408. font-size: 1.2em;
  409. height: 100%;
  410. }
  411. .password-reveal:after {
  412. content: "👁";
  413. }
  414. input[type="password"] + .password-reveal {
  415. color: rgba(205, 205, 205, 0.3);
  416. }
  417. input[type="text"] + .password-reveal {
  418. color: rgba(66, 184, 221, 0.8);
  419. }
  420. .no-select {
  421. -webkit-user-select: none;
  422. -moz-user-select: none;
  423. -ms-user-select: none;
  424. user-select: none;
  425. }
  426. input::-ms-clear,
  427. input::-ms-reveal {
  428. display: none;
  429. }
  430. /* css minifier must not combine these.
  431. * style will not apply otherwise */
  432. input::-ms-input-placeholder {
  433. color: #ccd;
  434. }
  435. input::placeholder {
  436. color: #ccc;
  437. }