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;
78 padding: 0.36rem 0.8rem;
80 background-color: #fff;
81 background-image: none;
82 border: 1px solid #ccc;
87 background-color: transparent;
88 color: rgba(0, 0, 0, .87);
90 border-bottom: 1px solid rgba(0, 0, 0, .26);
95 background-image: none;
100 select:not([multiple="multiple"]):focus,
103 height: calc(2rem + 1px);
105 border-color: #0099CC;
109 select[multiple="multiple"] {
119 text-decoration: underline;
136 box-shadow: 0 2px 5px rgba(0, 0, 0, .26);
137 transition: box-shadow .2s;
148 text-shadow: 0px 0px 2px #BBB;
153 text-decoration: none;
161 height: calc(100% - 4rem);
170 background-color: rgb(240, 240, 240);
174 .main > .loading > span {
182 .main > .loading > span > .loading-img:before {
186 .main > .loading > span > .loading-img {
187 animation: anim-rotate 2s infinite linear;
188 margin-right: 0.2rem;
189 display: inline-block;
192 @keyframes anim-rotate {
194 -webkit-transform: rotate(0);
195 -ms-transform: rotate(0);
196 transform: rotate(0);
199 -webkit-transform: rotate(360deg);
200 -ms-transform: rotate(360deg);
201 transform: rotate(360deg)
209 width: calc(0% + 17rem);
211 height: calc(100% - 4rem);
212 background-color: white;
220 width: calc(100% - 17rem);
223 background-color: #EEE;
226 .main-right > #maincontent {
227 background-color: #EEE;
243 header > .container {
245 padding: 0.5rem 1rem 0 1rem;
248 header > .container > .brand {
251 text-decoration: none;
253 vertical-align: text-bottom;
257 background-color: #FF7D60 !important;
269 font-family: inherit;
273 background-color: #FFF;
274 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
279 background-color: #f0ad4e;
280 border-color: #eea236;
287 #maincontent > .container > div:nth-child(1).alert-message.warning > a {
290 text-transform: none;
291 display: inline-block;
296 vertical-align: middle;
297 touch-action: manipulation;
299 -webkit-user-select: none;
300 -moz-user-select: none;
301 -ms-user-select: none;
303 background-image: none;
305 padding: 0.5rem 1rem;
307 line-height: 1.42857143;
309 background-color: #5bc0de;
310 border-color: #46b8da;
312 text-decoration: inherit;
315 .main > .main-left > .nav {
319 .main > .main-left > .nav > li a {
324 .main > .main-left > .nav > li:nth-last-child(1) {
329 .main > .main-left > .nav > li {
330 padding: 0.5rem 1rem;
334 .main > .main-left > .nav > .slide {
338 .main > .main-left > .nav > .slide > ul {
342 .main > .main-left > .nav > .slide > .menu {
344 padding: 0.5rem 1rem;
345 text-decoration: none;
350 .main > .main-left > .nav > li:hover,
351 .main > .main-left > .nav > .slide > .menu:hover {
355 .main > .main-left > .nav > .slide:hover {
359 .main > .main-left > .nav > .slide > .slide-menu > li {
360 padding: 0.4rem 2rem;
363 .main > .main-left > .nav > .slide > .slide-menu > .active {
364 background-color: #0099CC;
367 .main > .main-left > .nav > .slide > .slide-menu > li > a {
368 text-decoration: none;
372 .main > .main-left > .nav > .slide > .slide-menu > .active > a {
376 .main > .main-left > .nav > .slide > .slide-menu > li:hover {
380 .main > .main-left > .nav > .slide > .slide-menu > .active:hover {
381 background-color: #0099CC;
386 list-style-type: none;
389 #maincontent > .container {
390 margin: 0 2rem 1rem 2rem;
395 padding-bottom: 10px;
396 border-bottom: 1px solid #eee;
402 padding-bottom: 10px;
403 border-bottom: 1px solid #eee;
409 padding-bottom: 10px;
423 font-family: inherit;
430 background-color: #FFF;
431 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
433 -webkit-overflow-scrolling: touch;
437 display: none !important;
440 fieldset > fieldset {
453 padding-bottom: 2rem;
454 border-bottom: 1px solid #eee;
459 border-collapse: collapse;
461 border: 1px solid #eee;
464 table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th {
466 line-height: 1.42857143;
467 border-top: 1px solid #ddd;
472 .cbi-section-table-cell {
476 .cbi-section-table-row {
480 fieldset > table > tbody > tr:nth-of-type(odd) {
481 background-color: #f9f9f9;
484 /* fix progress bar */
491 width: 100% !important;
492 height: 1.4rem !important;
495 #swaptotal > div > div,
496 #swapfree > div > div,
497 #memfree > div > div,
498 #membuff > div > div,
500 #memtotal > div > div {
501 height: 1.4rem !important;
502 background-color: #0099CC !important;
505 /* fix multiple table */
511 .cbi-value-field table {
515 td > table > tbody > tr > td {
519 .cbi-value-field > table > tbody > tr > td {
526 -webkit-appearance: none;
527 text-transform: uppercase;
528 color: rgba(0, 0, 0, 0.87);
529 background-color: #F0F0F0;
530 transition: all 0.2s ease-in-out;
531 display: inline-block;
532 padding: 0.5rem 1rem;
534 border-radius: 0.2rem;
536 -ms-touch-action: manipulation;
537 touch-action: manipulation;
538 background-image: none;
540 vertical-align: middle;
542 -webkit-user-select: none;
543 -moz-user-select: none;
544 -ms-user-select: none;
547 width: auto !important;
553 color: rgba(0, 0, 0, 0.87);
555 text-decoration: none;
556 color: rgba(0, 0, 0, 0.87);
561 box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
565 box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
568 .cbi-button:disabled {
570 pointer-events: none;
575 form.inline + form.inline,
576 .cbi-button + .cbi-button {
582 color: #fff !important;
583 background-color: #f0ad4e !important;
584 border-color: #eea236 !important;
594 color: #fff !important;
595 background-color: #337ab7 !important;
596 border-color: #2e6da4 !important;
602 color: #fff !important;
603 background-color: #5bc0de !important;
604 border-color: #46b8da !important;
609 color: #fff !important;
610 background-color: #d9534f !important;
611 border-color: #d43f3a !important;
615 text-decoration: none;
622 padding-left: 0.5rem;
623 background-color: #FFFFFF;
628 display: inline-block;
629 padding: 0.9rem 0rem;
632 .cbi-tabmenu > li > a,
634 text-decoration: none;
636 padding: 0.9rem 1.5rem;
639 .tabs > li[class~="active"],
642 border-bottom: 0.2rem solid #0099CC;
644 margin-bottom: -0.18751rem;
647 .tabs > li[class~="active"] > a {
652 border-bottom: 0.18751rem solid #C9C9C9;
656 border-top: 1px solid #D4D4D4;
657 border-left: 1px solid #D4D4D4;
658 border-right: 1px solid #D4D4D4;
661 .cbi-tabmenu > li:hover {
662 background-color: #F1F1F1;
665 .cbi-tabmenu > li[class~="cbi-tab"] {
666 background-color: white;
670 background-color: #D4D4D4;
673 .cbi-section-node-tabbed {
676 border-bottom: 1px solid #D4D4D4;
677 border-left: 1px solid #D4D4D4;
678 border-right: 1px solid #D4D4D4;
681 .cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
682 background-color: #f9f9f9;
686 .cbi-value-description {
690 .cbi-value-helpicon > img {
694 .cbi-value-helpicon:before {
698 .cbi-value-description {
701 padding: 0.5rem 0 0 0;
705 word-wrap: break-word;
716 display: inline-block;
720 .cbi-section-table-descr > .cbi-section-table-cell,
721 .cbi-section-table-titles > .cbi-section-table-cell {
726 background-color: #eee;
729 .cbi-rowstyle-2 .cbi-button-up,
730 .cbi-rowstyle-2 .cbi-button-down{
731 background-color: #FFF !important;
734 .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
735 width: auto !important;
753 text-align: left !important;
757 text-align: right !important;
765 border-top: 1px solid #eee;
771 .cbi-value input[type="password"],
772 .cbi-value input[type="text"] {
777 .cbi-value-field .cbi-input-select {
782 display: inline-flex;
783 border-bottom: 1px solid #CCCCCC;
784 padding: 0.5rem 1rem;
785 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
786 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
787 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
797 .cbi-input-textarea {
802 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
815 background-color: #FFF;
816 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
823 font-family: monospace;
826 .uci-change-list ins,
827 .uci-change-legend-label ins {
828 text-decoration: none;
829 border: 1px solid #00FF00;
830 background-color: #CCFFCC;
835 .uci-change-list del,
836 .uci-change-legend-label del {
837 text-decoration: none;
838 border: 1px solid #FF0000;
839 background-color: #FFCCCC;
845 .uci-change-list var,
846 .uci-change-legend-label var {
847 text-decoration: none;
848 border: 1px solid #CCCCCC;
849 background-color: #EEEEEE;
855 .uci-change-list var ins,
856 .uci-change-list var del {
867 .uci-change-legend-label {
872 .uci-change-legend-label > ins,
873 .uci-change-legend-label > del,
874 .uci-change-legend-label > var {
882 .uci-change-legend-label var ins,
883 .uci-change-legend-label var del {
888 .uci-change-list var,
889 .uci-change-list del,
890 .uci-change-list ins {
898 border: 1px solid #D4D4D4 !important;
899 border-top: none !important;
903 border: 1px solid #999;
904 background-color: #f9f9f9;
912 padding: 0.2rem 0.5rem;
913 display: inline-block;
917 .zonebadge > .ifacebadge {
918 padding: 0.2rem 1rem;
920 border: 1px solid #6C6C6C;
923 .zonebadge > input[type="text"] {
924 padding: 0.16rem 1rem;
929 .cbi-value-field .cbi-input-checkbox,
930 .cbi-value-field .cbi-input-radio {
934 .cbi-section-table-row > .cbi-value-field .cbi-input-select {
938 .cbi-section-create > .cbi-button-add {
942 div.cbi-value var, td.cbi-value-field var {
954 display: inline-block;
956 padding: 0.2rem 0.3rem;
961 padding: 1rem 1rem 0 1rem;
962 border-top: 1px solid #CCC;
965 #diag-rc-output > pre {
966 background-color: #f5f5f5;
971 -moz-border-radius: 3px;
972 white-space: pre-wrap;
973 word-wrap: break-word;
979 input[name="traceroute"],
980 input[name="nslookup"] {
984 header > .container > .pull-right > * {
990 #xhr_poll_status > .label.success {
991 background-color: #14CE14;
995 padding: 0.3rem 0.8rem;
998 color: #ffffff !important;
999 text-transform: uppercase;
1000 white-space: nowrap;
1001 background-color: #bfbfbf;
1002 -webkit-border-radius: 3px;
1003 -moz-border-radius: 3px;
1006 text-decoration: none;
1010 background-color: #5BC0DE;
1021 background-color: rgba(0, 0, 0, 0.56);
1028 .node-main-login > .main > .main-left {
1032 .node-main-login > .main > .main-right {
1036 .node-main-login > .main fieldset {
1038 margin-bottom: 1rem;
1046 .node-main-login > .main .cbi-value-title {
1050 .node-main-login > .main #maincontent {
1055 .node-main-login > .main .container {
1056 display: inline-block;
1058 margin-top: 2rem !important;
1059 background-color: #FFF;
1060 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1064 .node-main-login > .main form > div:nth-last-child(1) {
1068 .node-main-login > .main .cbi-value {
1072 .node-main-login > .main .cbi-value > * {
1073 display: inline-block !important;
1076 .node-main-login > .main .cbi-input-user,
1077 .node-main-login > .main .cbi-input-password {
1081 .node-main-login footer {
1087 /* fix status overview */
1089 .node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) {
1090 white-space: normal;
1093 /* fix status processes */
1095 .node-status-processes > .main table tr td:nth-child(3) {
1096 white-space: normal;
1099 .node-status-iptables > .main div > .cbi-map > form {
1100 margin: 2rem 2rem 0 0;
1103 /* fix system reboot */
1105 .node-system-reboot > .main > .main-right p,
1106 .node-system-reboot > .main > .main-right h3 {
1110 /* fix Services Network Shares*/
1111 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title {
1112 margin-bottom: 1rem;
1115 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field {
1119 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description {
1123 /* fix System Software*/
1124 .node-system-packages > .main table tr td:nth-child(1) {
1125 width: auto !important;
1128 .node-system-packages > .main table tr td:nth-last-child(1) {
1129 white-space: normal;
1134 .node-system-packages > .main .cbi-tabmenu > li > a, .tabs > li > a {
1135 padding: 0.5rem 1rem;
1138 .node-system-packages > .main .cbi-value > pre {
1139 background-color: #eee;
1144 .cbi-tabmenu + .cbi-section {
1148 /* fix network firewall*/
1149 .node-network-firewall > .main .cbi-section-table-row > .cbi-value-field .cbi-input-select {
1153 .node-status-iptables fieldset,
1154 .node-system-packages fieldset,
1155 .node-system-flashops fieldset {
1159 .node-status-iptables .cbi-tabmenu,
1160 .node-system-packages .cbi-tabmenu,
1161 .node-system-flashops .cbi-tabmenu {
1163 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1166 #cbi-firewall-redirect table *,
1167 #cbi-network-switch_vlan table *,
1168 #cbi-firewall-zone table *{
1172 #cbi-firewall-redirect table input[type="text"],
1173 #cbi-network-switch_vlan table input[type="text"],
1174 #cbi-firewall-zone table input[type="text"]{
1178 #cbi-firewall-redirect table select,
1179 #cbi-network-switch_vlan table select,
1180 #cbi-firewall-zone table select{
1186 body.lang_pl.node-main-login .cbi-value-title {
1190 @media screen and (max-width: 1600px) {
1192 width: calc(0% + 15rem);
1196 width: calc(100% - 15rem);
1200 padding: 0.3rem 0.6rem;
1205 header > .container > .pull-right > * {
1210 padding: 0.2rem 0.6rem;
1215 padding-right: 0.6rem;
1222 .cbi-input-textarea {
1226 .node-status-iptables > .main fieldset li > a {
1227 padding: 0.3rem 0.6rem;
1231 @media screen and (max-width: 1280px) {
1236 header > .container {
1237 margin-top: 0.25rem;
1242 height: calc(100% - 3.5rem);
1246 width: calc(0% + 13rem);
1248 height: calc(100% - 3.5rem);
1252 width: calc(100% - 13rem);
1255 .cbi-tabmenu > li > a, .tabs > li > a {
1256 padding: 0.2rem 0.5rem;
1261 padding-bottom: 1rem;
1265 font-size: 0.8rem !important;
1266 width: 100% !important;
1269 .main > .main-left > .nav > li,
1270 .main > .main-left > .nav > li a,
1271 .main > .main-left > .nav > .slide > .menu {
1275 .main > .main-left > .nav > .slide > .slide-menu > li > a {
1280 @media screen and (max-width: 992px) {
1293 margin-right: 0.5rem;
1294 display: inline-block;
1302 .node-main-login .showSide {
1303 display: none !important;
1308 padding-right: 1rem;
1311 .node-network-diagnostics > .main .cbi-map fieldset > div * {
1312 width: 100% !important;
1315 .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] {
1316 margin: 3rem 0 0 0 !important;
1319 .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] {
1320 margin: 0 !important;
1323 .node-network-diagnostics > .main .cbi-map fieldset > div select,
1324 .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] {
1328 .node-network-diagnostics > .main .cbi-map fieldset > div {
1329 width: 100% !important;
1332 #diag-rc-output > pre {
1336 .node-main-login > .main .cbi-value-title {
1341 @media screen and (max-width: 480px) {
1351 #maincontent > .container {
1352 margin: 0 1rem 1.5rem 1rem;
1355 .main > .main-left > .nav > .slide > .menu {
1359 .main > .main-left > .nav > .slide > .slide-menu > li > a {
1365 min-width: 0rem !important;
1368 margin-bottom: 0.5rem;
1372 .cbi-value-field, .cbi-value-description {
1376 .cbi-value > .cbi-value-field {
1377 display: inline-block;
1380 .cbi-tabmenu > li, .tabs > li {
1381 padding: 0.6rem 0rem;
1384 .cbi-tabmenu > li > a, .tabs > li > a {
1385 padding: 0.2rem 0.3rem;
1389 .cbi-page-actions > div > input {
1393 .node-main-login > .main .container {
1394 padding: 0.5rem 1rem 2rem 1rem;
1397 .node-main-login > .main .cbi-value {
1401 .node-main-login > .main form > div:nth-last-child(1) {
1405 .node-main-login > .main .cbi-value-title {
1406 width: 100% !important;
1410 .node-main-login > .main fieldset {
1434 padding-bottom: 1rem;
1437 .node-system-packages > .main .cbi-value.cbi-value-last > div {
1438 width: 100% !important;
1441 .node-system-packages > .main .cbi-value .cbi-value-field input {
1445 .node-status-iptables > .main div > .cbi-map > form {
1446 position: static !important;
1450 font-weight: normal;
1453 font-family: inherit;
1458 background-color: #FFF;
1459 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1460 -webkit-overflow-scrolling: touch;
1463 .node-status-iptables > .main div > .cbi-map > form input[type="submit"]{
1464 width: 100% !important;
1468 .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"]{
1473 @media screen and (min-width: 992px) {
1474 .cbi-value input[type="password"],
1475 .cbi-value input[type="text"] {
1479 .cbi-value-field .cbi-input-select {
1484 @media screen and (min-width: 1280px) {
1485 .cbi-value input[type="password"],
1486 .cbi-value input[type="text"] {
1490 .cbi-value-field .cbi-input-select {
1495 @media screen and (min-width: 1600px) {
1496 .cbi-value input[type="password"],
1497 .cbi-value input[type="text"] {
1501 .cbi-value-field .cbi-input-select {