2 * Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
5 * Copyright 2015 Lutty Yang <lutty@wcan.in>
7 * Have a bug? Please create an issue here on GitHub!
8 * https://github.com/LuttyYang/luci-theme-material/issues
10 * luci-theme-bootstrap:
11 * Copyright 2008 Steven Barth <steven@midlink.org>
12 * Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
13 * Copyright 2012 David Menting <david@nut-bolt.nl>
16 * https://github.com/muicss/mui
18 * Licensed to the public under the Apache License 2.0
22 * Font generate by Icomoon<icomoon.io>
25 font-family: 'icomoon';
26 src: url('../fonts/font.eot');
27 src: url('../fonts/font.eot') format('embedded-opentype'),
28 url('../fonts/font.ttf') format('truetype'),
29 url('../fonts/font.woff') format('woff'),
30 url('../fonts/font.svg') format('svg');
39 .main > .loading > span {
40 font-family: 'icomoon' !important;
42 font-style: normal !important;
43 font-weight: normal !important;
44 font-variant: normal !important;
45 text-transform: none !important;
48 -webkit-font-smoothing: antialiased;
49 -moz-osx-font-smoothing: grayscale;
55 box-sizing: border-box;
58 .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
66 -webkit-text-size-adjust: 100%;
67 -ms-text-size-adjust: 100%;
74 font-family: "Helvetica Neue", Helvetica, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif;
75 font-size: 62.5%; /* font-size 1rem = 10px on default browser settings */
79 font-size: 1.3rem; /* 1.3rem = 13px */
83 padding: 0.36rem 0.8rem;
85 background-color: #fff;
86 background-image: none;
87 border: 1px solid #ccc;
92 background-color: transparent;
93 color: rgba(0, 0, 0, .87);
95 border-bottom: 1px solid rgba(0, 0, 0, .26);
100 background-image: none;
105 select:not([multiple="multiple"]):focus,
108 height: calc(2rem + 1px);
110 border-color: #0099CC;
114 select[multiple="multiple"] {
124 text-decoration: underline;
141 box-shadow: 0 2px 5px rgba(0, 0, 0, .26);
142 transition: box-shadow .2s;
153 text-shadow: 0px 0px 2px #BBB;
158 text-decoration: none;
166 height: calc(100% - 4rem);
175 background-color: rgb(240, 240, 240);
179 .main > .loading > span {
187 .main > .loading > span > .loading-img:before {
191 .main > .loading > span > .loading-img {
192 animation: anim-rotate 2s infinite linear;
193 margin-right: 0.2rem;
194 display: inline-block;
197 @keyframes anim-rotate {
199 -webkit-transform: rotate(0);
200 -ms-transform: rotate(0);
201 transform: rotate(0);
204 -webkit-transform: rotate(360deg);
205 -ms-transform: rotate(360deg);
206 transform: rotate(360deg)
214 width: calc(0% + 17rem);
216 height: calc(100% - 4rem);
217 background-color: white;
225 width: calc(100% - 17rem);
228 background-color: #EEE;
231 .main-right > #maincontent {
232 background-color: #EEE;
248 header > .container {
250 padding: 0.5rem 1rem 0 1rem;
253 header > .container > .brand {
256 text-decoration: none;
258 vertical-align: text-bottom;
262 background-color: #FF7D60 !important;
274 font-family: inherit;
278 background-color: #FFF;
279 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
284 background-color: #f0ad4e;
285 border-color: #eea236;
292 #maincontent > .container > div:nth-child(1).alert-message.warning > a {
295 text-transform: none;
296 display: inline-block;
301 vertical-align: middle;
302 touch-action: manipulation;
304 -webkit-user-select: none;
305 -moz-user-select: none;
306 -ms-user-select: none;
308 background-image: none;
310 padding: 0.5rem 1rem;
312 line-height: 1.42857143;
314 background-color: #5bc0de;
315 border-color: #46b8da;
317 text-decoration: inherit;
320 .main > .main-left > .nav {
324 .main > .main-left > .nav > li a {
329 .main > .main-left > .nav > li:nth-last-child(1) {
334 .main > .main-left > .nav > li {
335 padding: 0.5rem 1rem;
339 .main > .main-left > .nav > .slide {
343 .main > .main-left > .nav > .slide > ul {
347 .main > .main-left > .nav > .slide > .menu {
349 padding: 0.5rem 1rem;
350 text-decoration: none;
355 .main > .main-left > .nav > li:hover,
356 .main > .main-left > .nav > .slide > .menu:hover {
360 .main > .main-left > .nav > .slide:hover {
364 .main > .main-left > .nav > .slide > .slide-menu > li {
365 padding: 0.4rem 2rem;
368 .main > .main-left > .nav > .slide > .slide-menu > .active {
369 background-color: #0099CC;
372 .main > .main-left > .nav > .slide > .slide-menu > li > a {
373 text-decoration: none;
377 .main > .main-left > .nav > .slide > .slide-menu > .active > a {
381 .main > .main-left > .nav > .slide > .slide-menu > li:hover {
385 .main > .main-left > .nav > .slide > .slide-menu > .active:hover {
386 background-color: #0099CC;
391 list-style-type: none;
394 #maincontent > .container {
395 margin: 0 2rem 1rem 2rem;
400 padding-bottom: 10px;
401 border-bottom: 1px solid #eee;
407 padding-bottom: 10px;
408 border-bottom: 1px solid #eee;
414 padding-bottom: 10px;
428 font-family: inherit;
435 background-color: #FFF;
436 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
438 -webkit-overflow-scrolling: touch;
442 display: none !important;
445 fieldset > fieldset {
458 padding-bottom: 2rem;
459 border-bottom: 1px solid #eee;
464 border-collapse: collapse;
466 border: 1px solid #eee;
469 table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th {
471 line-height: 1.42857143;
472 border-top: 1px solid #ddd;
477 .cbi-section-table-cell {
481 .cbi-section-table-row {
485 fieldset > table > tbody > tr:nth-of-type(odd) {
486 background-color: #f9f9f9;
489 /* fix progress bar */
496 width: 100% !important;
497 height: 1.4rem !important;
500 #swaptotal > div > div,
501 #swapfree > div > div,
502 #memfree > div > div,
503 #membuff > div > div,
505 #memtotal > div > div {
506 height: 1.4rem !important;
507 background-color: #0099CC !important;
510 /* fix multiple table */
516 .cbi-value-field table {
520 td > table > tbody > tr > td {
524 .cbi-value-field > table > tbody > tr > td {
531 -webkit-appearance: none;
532 text-transform: uppercase;
533 color: rgba(0, 0, 0, 0.87);
534 background-color: #F0F0F0;
535 transition: all 0.2s ease-in-out;
536 display: inline-block;
537 padding: 0.5rem 1rem;
539 border-radius: 0.2rem;
541 -ms-touch-action: manipulation;
542 touch-action: manipulation;
543 background-image: none;
545 vertical-align: middle;
547 -webkit-user-select: none;
548 -moz-user-select: none;
549 -ms-user-select: none;
552 width: auto !important;
558 color: rgba(0, 0, 0, 0.87);
560 text-decoration: none;
561 color: rgba(0, 0, 0, 0.87);
566 box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
570 box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
573 .cbi-button:disabled {
575 pointer-events: none;
580 form.inline + form.inline,
581 .cbi-button + .cbi-button {
587 color: #fff !important;
588 background-color: #f0ad4e !important;
589 border-color: #eea236 !important;
599 color: #fff !important;
600 background-color: #337ab7 !important;
601 border-color: #2e6da4 !important;
607 color: #fff !important;
608 background-color: #5bc0de !important;
609 border-color: #46b8da !important;
614 color: #fff !important;
615 background-color: #d9534f !important;
616 border-color: #d43f3a !important;
620 text-decoration: none;
627 padding-left: 0.5rem;
628 background-color: #FFFFFF;
633 display: inline-block;
634 padding: 0.9rem 0rem;
637 .cbi-tabmenu > li > a,
639 text-decoration: none;
641 padding: 0.9rem 1.5rem;
644 .tabs > li[class~="active"],
647 border-bottom: 0.2rem solid #0099CC;
649 margin-bottom: -0.18751rem;
652 .tabs > li[class~="active"] > a {
657 border-bottom: 0.18751rem solid #C9C9C9;
661 border-top: 1px solid #D4D4D4;
662 border-left: 1px solid #D4D4D4;
663 border-right: 1px solid #D4D4D4;
666 .cbi-tabmenu > li:hover {
667 background-color: #F1F1F1;
670 .cbi-tabmenu > li[class~="cbi-tab"] {
671 background-color: white;
675 background-color: #D4D4D4;
678 .cbi-section-node-tabbed {
681 border-bottom: 1px solid #D4D4D4;
682 border-left: 1px solid #D4D4D4;
683 border-right: 1px solid #D4D4D4;
686 .cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
687 background-color: #f9f9f9;
691 .cbi-value-description {
695 .cbi-value-helpicon > img {
699 .cbi-value-helpicon:before {
703 .cbi-value-description {
706 padding: 0.5rem 0 0 0;
710 word-wrap: break-word;
721 display: inline-block;
725 .cbi-section-table-descr > .cbi-section-table-cell,
726 .cbi-section-table-titles > .cbi-section-table-cell {
731 background-color: #eee;
734 .cbi-rowstyle-2 .cbi-button-up,
735 .cbi-rowstyle-2 .cbi-button-down{
736 background-color: #FFF !important;
739 .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
740 width: auto !important;
758 text-align: left !important;
762 text-align: right !important;
770 border-top: 1px solid #eee;
776 .cbi-value input[type="password"],
777 .cbi-value input[type="text"] {
782 .cbi-value-field .cbi-input-select {
787 display: inline-flex;
788 border-bottom: 1px solid #CCCCCC;
789 padding: 0.5rem 1rem;
790 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
791 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
792 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
802 .cbi-input-textarea {
807 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
820 background-color: #FFF;
821 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
828 font-family: monospace;
831 .uci-change-list ins,
832 .uci-change-legend-label ins {
833 text-decoration: none;
834 border: 1px solid #00FF00;
835 background-color: #CCFFCC;
840 .uci-change-list del,
841 .uci-change-legend-label del {
842 text-decoration: none;
843 border: 1px solid #FF0000;
844 background-color: #FFCCCC;
850 .uci-change-list var,
851 .uci-change-legend-label var {
852 text-decoration: none;
853 border: 1px solid #CCCCCC;
854 background-color: #EEEEEE;
860 .uci-change-list var ins,
861 .uci-change-list var del {
872 .uci-change-legend-label {
877 .uci-change-legend-label > ins,
878 .uci-change-legend-label > del,
879 .uci-change-legend-label > var {
887 .uci-change-legend-label var ins,
888 .uci-change-legend-label var del {
893 .uci-change-list var,
894 .uci-change-list del,
895 .uci-change-list ins {
903 border: 1px solid #D4D4D4 !important;
904 border-top: none !important;
908 border: 1px solid #999;
909 background-color: #f9f9f9;
917 padding: 0.2rem 0.5rem;
918 display: inline-block;
922 .zonebadge > .ifacebadge {
923 padding: 0.2rem 1rem;
925 border: 1px solid #6C6C6C;
928 .zonebadge > input[type="text"] {
929 padding: 0.16rem 1rem;
934 .cbi-value-field .cbi-input-checkbox,
935 .cbi-value-field .cbi-input-radio {
939 .cbi-section-table-row > .cbi-value-field .cbi-input-select {
943 .cbi-section-create > .cbi-button-add {
947 div.cbi-value var, td.cbi-value-field var {
959 display: inline-block;
961 padding: 0.2rem 0.3rem;
966 padding: 1rem 1rem 0 1rem;
967 border-top: 1px solid #CCC;
970 #diag-rc-output > pre {
971 background-color: #f5f5f5;
976 -moz-border-radius: 3px;
977 white-space: pre-wrap;
978 word-wrap: break-word;
984 input[name="traceroute"],
985 input[name="nslookup"] {
989 header > .container > .pull-right > * {
995 #xhr_poll_status > .label.success {
996 background-color: #14CE14;
1000 padding: 0.3rem 0.8rem;
1003 color: #ffffff !important;
1004 text-transform: uppercase;
1005 white-space: nowrap;
1006 background-color: #bfbfbf;
1007 -webkit-border-radius: 3px;
1008 -moz-border-radius: 3px;
1011 text-decoration: none;
1015 background-color: #5BC0DE;
1026 background-color: rgba(0, 0, 0, 0.56);
1033 .node-main-login > .main > .main-left {
1037 .node-main-login > .main > .main-right {
1041 .node-main-login > .main fieldset {
1043 margin-bottom: 1rem;
1051 .node-main-login > .main .cbi-value-title {
1055 .node-main-login > .main #maincontent {
1060 .node-main-login > .main .container {
1061 display: inline-block;
1063 margin-top: 2rem !important;
1064 background-color: #FFF;
1065 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1069 .node-main-login > .main form > div:nth-last-child(1) {
1073 .node-main-login > .main .cbi-value {
1077 .node-main-login > .main .cbi-value > * {
1078 display: inline-block !important;
1081 .node-main-login > .main .cbi-input-user,
1082 .node-main-login > .main .cbi-input-password {
1086 .node-main-login footer {
1092 /* fix status overview */
1094 .node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) {
1095 white-space: normal;
1098 /* fix status processes */
1100 .node-status-processes > .main table tr td:nth-child(3) {
1101 white-space: normal;
1104 .node-status-iptables > .main div > .cbi-map > form {
1105 margin: 2rem 2rem 0 0;
1108 /* fix system reboot */
1110 .node-system-reboot > .main > .main-right p,
1111 .node-system-reboot > .main > .main-right h3 {
1115 /* fix Services Network Shares*/
1116 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title {
1117 margin-bottom: 1rem;
1120 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field {
1124 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description {
1128 /* fix System Software*/
1129 .node-system-packages > .main table tr td:nth-child(1) {
1130 width: auto !important;
1133 .node-system-packages > .main table tr td:nth-last-child(1) {
1134 white-space: normal;
1139 .node-system-packages > .main .cbi-tabmenu > li > a, .tabs > li > a {
1140 padding: 0.5rem 1rem;
1143 .node-system-packages > .main .cbi-value > pre {
1144 background-color: #eee;
1149 .cbi-tabmenu + .cbi-section {
1153 /* fix network firewall*/
1154 .node-network-firewall > .main .cbi-section-table-row > .cbi-value-field .cbi-input-select {
1158 .node-status-iptables fieldset,
1159 .node-system-packages fieldset,
1160 .node-system-flashops fieldset {
1164 .node-status-iptables .cbi-tabmenu,
1165 .node-system-packages .cbi-tabmenu,
1166 .node-system-flashops .cbi-tabmenu {
1168 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1171 #cbi-firewall-redirect table *,
1172 #cbi-network-switch_vlan table *,
1173 #cbi-firewall-zone table *{
1177 #cbi-firewall-redirect table input[type="text"],
1178 #cbi-network-switch_vlan table input[type="text"],
1179 #cbi-firewall-zone table input[type="text"]{
1183 #cbi-firewall-redirect table select,
1184 #cbi-network-switch_vlan table select,
1185 #cbi-firewall-zone table select{
1191 body.lang_pl.node-main-login .cbi-value-title {
1195 @media screen and (max-width: 1600px) {
1197 width: calc(0% + 15rem);
1201 width: calc(100% - 15rem);
1205 padding: 0.3rem 0.6rem;
1210 header > .container > .pull-right > * {
1215 padding: 0.2rem 0.6rem;
1220 padding-right: 0.6rem;
1227 .cbi-input-textarea {
1231 .node-status-iptables > .main fieldset li > a {
1232 padding: 0.3rem 0.6rem;
1236 @media screen and (max-width: 1280px) {
1241 header > .container {
1242 margin-top: 0.25rem;
1247 height: calc(100% - 3.5rem);
1251 width: calc(0% + 13rem);
1253 height: calc(100% - 3.5rem);
1257 width: calc(100% - 13rem);
1260 .cbi-tabmenu > li > a, .tabs > li > a {
1261 padding: 0.2rem 0.5rem;
1266 padding-bottom: 1rem;
1270 font-size: 0.8rem !important;
1271 width: 100% !important;
1274 .main > .main-left > .nav > li,
1275 .main > .main-left > .nav > li a,
1276 .main > .main-left > .nav > .slide > .menu {
1280 .main > .main-left > .nav > .slide > .slide-menu > li > a {
1285 @media screen and (max-width: 992px) {
1298 margin-right: 0.5rem;
1299 display: inline-block;
1307 .node-main-login .showSide {
1308 display: none !important;
1313 padding-right: 1rem;
1316 .node-network-diagnostics > .main .cbi-map fieldset > div * {
1317 width: 100% !important;
1320 .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] {
1321 margin: 3rem 0 0 0 !important;
1324 .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] {
1325 margin: 0 !important;
1328 .node-network-diagnostics > .main .cbi-map fieldset > div select,
1329 .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] {
1333 .node-network-diagnostics > .main .cbi-map fieldset > div {
1334 width: 100% !important;
1337 #diag-rc-output > pre {
1341 .node-main-login > .main .cbi-value-title {
1346 @media screen and (max-width: 480px) {
1356 #maincontent > .container {
1357 margin: 0 1rem 1.5rem 1rem;
1360 .main > .main-left > .nav > .slide > .menu {
1364 .main > .main-left > .nav > .slide > .slide-menu > li > a {
1370 min-width: 0rem !important;
1373 margin-bottom: 0.5rem;
1377 .cbi-value-field, .cbi-value-description {
1381 .cbi-value > .cbi-value-field {
1382 display: inline-block;
1385 .cbi-tabmenu > li, .tabs > li {
1386 padding: 0.6rem 0rem;
1389 .cbi-tabmenu > li > a, .tabs > li > a {
1390 padding: 0.2rem 0.3rem;
1394 .cbi-page-actions > div > input {
1398 .node-main-login > .main .container {
1399 padding: 0.5rem 1rem 2rem 1rem;
1402 .node-main-login > .main .cbi-value {
1406 .node-main-login > .main form > div:nth-last-child(1) {
1410 .node-main-login > .main .cbi-value-title {
1411 width: 100% !important;
1415 .node-main-login > .main fieldset {
1439 padding-bottom: 1rem;
1442 .node-system-packages > .main .cbi-value.cbi-value-last > div {
1443 width: 100% !important;
1446 .node-system-packages > .main .cbi-value .cbi-value-field input {
1450 .node-status-iptables > .main div > .cbi-map > form {
1451 position: static !important;
1455 font-weight: normal;
1458 font-family: inherit;
1463 background-color: #FFF;
1464 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1465 -webkit-overflow-scrolling: touch;
1468 .node-status-iptables > .main div > .cbi-map > form input[type="submit"]{
1469 width: 100% !important;
1473 .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"]{
1478 @media screen and (min-width: 992px) {
1479 .cbi-value input[type="password"],
1480 .cbi-value input[type="text"] {
1484 .cbi-value-field .cbi-input-select {
1489 @media screen and (min-width: 1280px) {
1490 .cbi-value input[type="password"],
1491 .cbi-value input[type="text"] {
1495 .cbi-value-field .cbi-input-select {
1500 @media screen and (min-width: 1600px) {
1501 .cbi-value input[type="password"],
1502 .cbi-value input[type="text"] {
1506 .cbi-value-field .cbi-input-select {