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%;
72 background-color: #EEE;
79 font-family: Microsoft Yahei, WenQuanYi Micro Hei, sans-serif, "Helvetica Neue", Helvetica, Hiragino Sans GB;
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: 2px solid rgba(0, 0, 0, .26);
100 background-image: none;
105 select:not([multiple="multiple"]):focus,
107 border-color: #0099CC;
110 select[multiple="multiple"] {
120 text-decoration: underline;
137 box-shadow: 0 2px 5px rgba(0, 0, 0, .26);
138 transition: box-shadow .2s;
149 text-shadow: 0px 0px 2px #BBB;
154 text-decoration: none;
162 height: calc(100% - 4rem);
171 background-color: rgb(240, 240, 240);
175 .main > .loading > span {
183 .main > .loading > span > .loading-img:before {
187 .main > .loading > span > .loading-img {
188 animation: anim-rotate 2s infinite linear;
189 margin-right: 0.2rem;
190 display: inline-block;
193 @keyframes anim-rotate {
195 -webkit-transform: rotate(0);
196 -ms-transform: rotate(0);
197 transform: rotate(0);
200 -webkit-transform: rotate(360deg);
201 -ms-transform: rotate(360deg);
202 transform: rotate(360deg)
210 width: calc(0% + 15rem);
212 height: calc(100% - 4rem);
213 background-color: white;
220 width: calc(100% - 15rem);
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;
436 .cbi-map-descr + fieldset {
441 display: none !important;
444 fieldset > fieldset {
457 padding-bottom: 1rem;
458 border-bottom: 1px solid #eee;
463 border-collapse: collapse;
465 border: 1px solid #eee;
468 table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th {
470 border-top: 1px solid #ddd;
474 .cbi-section-table-cell {
478 .cbi-section-table-row {
482 fieldset > table > tbody > tr:nth-of-type(2n) {
483 background-color: #f9f9f9;
486 /* fix progress bar */
493 width: 100% !important;
494 height: 1.2rem !important;
497 #swaptotal > div > div,
498 #swapfree > div > div,
499 #memfree > div > div,
500 #membuff > div > div,
502 #memtotal > div > div {
503 height: 100% !important;
504 background-color: #0099CC !important;
507 /* fix multiple table */
513 .cbi-value-field table {
517 td > table > tbody > tr > td {
521 .cbi-value-field > table > tbody > tr > td {
528 -webkit-appearance: none;
529 text-transform: uppercase;
530 color: rgba(0, 0, 0, 0.87);
531 background-color: #F0F0F0;
532 transition: all 0.2s ease-in-out;
533 display: inline-block;
536 border-radius: 0.2rem;
538 -ms-touch-action: manipulation;
539 touch-action: manipulation;
540 background-image: none;
542 vertical-align: middle;
544 -webkit-user-select: none;
545 -moz-user-select: none;
546 -ms-user-select: none;
549 width: auto !important;
555 color: rgba(0, 0, 0, 0.87);
557 text-decoration: none;
558 color: rgba(0, 0, 0, 0.87);
563 box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
567 box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
570 .cbi-button:disabled {
572 pointer-events: none;
577 form.inline + form.inline,
578 .cbi-button + .cbi-button {
584 color: #fff !important;
585 background-color: #f0ad4e !important;
586 border-color: #eea236 !important;
596 color: #fff !important;
597 background-color: #337ab7 !important;
598 border-color: #2e6da4 !important;
604 color: #fff !important;
605 background-color: #5bc0de !important;
606 border-color: #46b8da !important;
610 .cbi-section-remove > .cbi-button,
612 color: #fff !important;
613 background-color: #d9534f !important;
614 border-color: #d43f3a !important;
618 text-decoration: none;
625 padding-left: 0.5rem;
626 background-color: #FFFFFF;
631 display: inline-block;
632 padding: 0.6rem 0rem;
635 .cbi-tabmenu > li > a,
637 text-decoration: none;
639 padding: 0.5rem 0.8rem;
642 .tabs > li[class~="active"],
645 border-bottom: 0.2rem solid #0099CC;
647 margin-bottom: -0.18751rem;
650 .tabs > li[class~="active"] > a {
655 border-bottom: 0.18751rem solid #C9C9C9;
659 border-top: 1px solid #D4D4D4;
660 border-left: 1px solid #D4D4D4;
661 border-right: 1px solid #D4D4D4;
664 .cbi-tabmenu > li:hover {
665 background-color: #F1F1F1;
668 .cbi-tabmenu > li[class~="cbi-tab"] {
669 background-color: white;
673 background-color: #D4D4D4;
676 .cbi-section-remove:nth-of-type(2n),
677 .cbi-section-node:nth-of-type(2n){
678 background-color: #f9f9f9;
681 .cbi-section-node-tabbed {
684 border-bottom: 1px solid #D4D4D4;
685 border-left: 1px solid #D4D4D4;
686 border-right: 1px solid #D4D4D4;
689 .cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
690 background-color: #f9f9f9;
694 .cbi-value-description {
699 .cbi-value-helpicon > img {
703 .cbi-value-helpicon:before {
707 .cbi-value-description {
710 padding: 0.5rem 0 0 0;
714 word-wrap: break-word;
724 padding: 0.3rem 1rem;
725 display: inline-block;
729 .cbi-section-table-descr > .cbi-section-table-cell,
730 .cbi-section-table-titles > .cbi-section-table-cell {
735 background-color: #eee;
738 .cbi-rowstyle-2 .cbi-button-up,
739 .cbi-rowstyle-2 .cbi-button-down {
740 background-color: #FFF !important;
743 .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
744 width: auto !important;
762 text-align: left !important;
766 text-align: right !important;
774 border-top: 1px solid #eee;
780 .cbi-value input[type="password"],
781 .cbi-value input[type="text"] {
786 .cbi-value-field .cbi-input-select {
791 display: inline-flex;
792 border-bottom: 1px solid #CCCCCC;
793 padding: 0.5rem 1rem;
794 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
795 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
796 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
800 background-color: #F0F0F0;
811 .cbi-input-textarea {
816 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
829 background-color: #FFF;
830 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
837 font-family: monospace;
840 .uci-change-list ins,
841 .uci-change-legend-label ins {
842 text-decoration: none;
843 border: 1px solid #00FF00;
844 background-color: #CCFFCC;
849 .uci-change-list del,
850 .uci-change-legend-label del {
851 text-decoration: none;
852 border: 1px solid #FF0000;
853 background-color: #FFCCCC;
859 .uci-change-list var,
860 .uci-change-legend-label var {
861 text-decoration: none;
862 border: 1px solid #CCCCCC;
863 background-color: #EEEEEE;
869 .uci-change-list var ins,
870 .uci-change-list var del {
881 .uci-change-legend-label {
886 .uci-change-legend-label > ins,
887 .uci-change-legend-label > del,
888 .uci-change-legend-label > var {
896 .uci-change-legend-label var ins,
897 .uci-change-legend-label var del {
902 .uci-change-list var,
903 .uci-change-list del,
904 .uci-change-list ins {
912 border: 1px solid #D4D4D4 !important;
913 border-top: none !important;
917 border: 1px solid #999;
918 background-color: #f9f9f9;
926 padding: 0.2rem 0.5rem;
927 display: inline-block;
931 .zonebadge > .ifacebadge {
932 padding: 0.2rem 1rem;
934 border: 1px solid #6C6C6C;
937 .zonebadge > input[type="text"] {
938 padding: 0.16rem 1rem;
943 .cbi-value-field .cbi-input-checkbox,
944 .cbi-value-field .cbi-input-radio {
949 .cbi-value-field > input + .cbi-value-description {
953 .cbi-value-field > ul > li {
957 .cbi-value-field > ul > li > label {
961 .cbi-value-field > ul > li .ifacebadge {
962 background-color: #eee;
967 .cbi-section-table-row > .cbi-value-field .cbi-input-select {
971 .cbi-section-create > .cbi-button-add {
975 .cbi-section-remove {
979 div.cbi-value var, td.cbi-value-field var {
987 line-height: 1.42857143;
992 display: inline-block;
994 padding: 0.2rem 0.3rem;
999 padding: 1rem 1rem 0 1rem;
1000 border-top: 1px solid #CCC;
1003 #diag-rc-output > pre {
1004 background-color: #f5f5f5;
1008 line-height: 1.5rem;
1009 -moz-border-radius: 3px;
1010 white-space: pre-wrap;
1011 word-wrap: break-word;
1017 input[name="traceroute"],
1018 input[name="nslookup"] {
1022 header > .container > .pull-right > * {
1028 #xhr_poll_status > .label.success {
1029 background-color: #14CE14;
1033 padding: 0.3rem 0.8rem;
1036 color: #ffffff !important;
1037 text-transform: uppercase;
1038 white-space: nowrap;
1039 background-color: #bfbfbf;
1040 -webkit-border-radius: 3px;
1041 -moz-border-radius: 3px;
1044 text-decoration: none;
1048 background-color: #5BC0DE;
1059 background-color: rgba(0, 0, 0, 0.56);
1066 .node-main-login > .main > .main-left {
1070 .node-main-login > .main > .main-right {
1074 .node-main-login > .main fieldset {
1076 margin-bottom: 1rem;
1084 .node-main-login > .main .cbi-value-title {
1088 .node-main-login > .main #maincontent {
1093 .node-main-login > .main .container {
1094 display: inline-block;
1096 margin-top: 2rem !important;
1097 background-color: #FFF;
1098 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1102 .node-main-login > .main form > div:nth-last-child(1) {
1106 .node-main-login > .main .cbi-value {
1110 .node-main-login > .main .cbi-value > * {
1111 display: inline-block !important;
1114 .node-main-login > .main .cbi-input-user,
1115 .node-main-login > .main .cbi-input-password {
1119 .node-main-login footer {
1125 /* fix status overview */
1127 .node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) {
1128 white-space: normal;
1131 /* fix status processes */
1133 .node-status-processes > .main table tr td:nth-child(3) {
1134 white-space: normal;
1137 .node-status-iptables > .main div > .cbi-map > form {
1138 margin: 2rem 2rem 0 0;
1141 /* fix system reboot */
1143 .node-system-reboot > .main > .main-right p,
1144 .node-system-reboot > .main > .main-right h3 {
1148 /* fix Services Network Shares*/
1149 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title {
1150 margin-bottom: 1rem;
1154 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field {
1158 .node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description {
1162 /* fix System Software*/
1163 .node-system-packages > .main table tr td:nth-child(1) {
1164 width: auto !important;
1167 .node-system-packages > .main table tr td:nth-last-child(1) {
1168 white-space: normal;
1173 .node-system-packages > .main .cbi-tabmenu > li > a, .tabs > li > a {
1174 padding: 0.5rem 0.8rem;
1177 .node-system-packages > .main .cbi-value > pre {
1178 background-color: #eee;
1183 .cbi-tabmenu + .cbi-section {
1187 /* fix network firewall*/
1188 .node-network-firewall > .main .cbi-section-table-row > .cbi-value-field .cbi-input-select {
1192 .node-status-iptables fieldset,
1193 .node-system-packages fieldset,
1194 .node-system-flashops fieldset {
1198 .node-status-iptables .cbi-tabmenu,
1199 .node-system-packages .cbi-tabmenu,
1200 .node-system-flashops .cbi-tabmenu {
1202 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1205 .node-system-flashops form.inline + form.inline {
1209 #cbi-firewall-redirect table *,
1210 #cbi-network-switch_vlan table *,
1211 #cbi-firewall-zone table * {
1215 #cbi-firewall-redirect table input[type="text"],
1216 #cbi-network-switch_vlan table input[type="text"],
1217 #cbi-firewall-zone table input[type="text"] {
1221 #cbi-firewall-redirect table select,
1222 #cbi-network-switch_vlan table select,
1223 #cbi-firewall-zone table select {
1228 body.lang_pl.node-main-login .cbi-value-title {
1232 @media screen and (max-width: 1600px) {
1234 width: calc(0% + 13rem);
1238 width: calc(100% - 13rem);
1242 padding: 0.3rem 0.6rem;
1246 header > .container > .pull-right > * {
1251 padding: 0.2rem 0.6rem;
1256 padding-right: 0.6rem;
1263 .cbi-input-textarea {
1267 .node-status-iptables > .main fieldset li > a {
1268 padding: 0.3rem 0.6rem;
1272 @media screen and (max-width: 1280px) {
1277 header > .container {
1278 margin-top: 0.25rem;
1283 height: calc(100% - 3.5rem);
1287 width: calc(0% + 13rem);
1289 height: calc(100% - 3.5rem);
1293 width: calc(100% - 13rem);
1296 .cbi-tabmenu > li > a, .tabs > li > a {
1297 padding: 0.2rem 0.5rem;
1302 padding-bottom: 1rem;
1306 font-size: 0.7rem !important;
1307 width: 100% !important;
1310 .main > .main-left > .nav > li,
1311 .main > .main-left > .nav > li a,
1312 .main > .main-left > .nav > .slide > .menu {
1316 .main > .main-left > .nav > .slide > .slide-menu > li > a {
1321 @media screen and (max-width: 992px) {
1334 margin-right: 0.5rem;
1335 display: inline-block;
1343 .node-main-login .showSide {
1344 display: none !important;
1349 padding-right: 1rem;
1352 .node-network-diagnostics > .main .cbi-map fieldset > div * {
1353 width: 100% !important;
1356 .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] {
1357 margin: 3rem 0 0 0 !important;
1360 .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] {
1361 margin: 0 !important;
1364 .node-network-diagnostics > .main .cbi-map fieldset > div select,
1365 .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] {
1369 .node-network-diagnostics > .main .cbi-map fieldset > div {
1370 width: 100% !important;
1373 #diag-rc-output > pre {
1377 .node-main-login > .main .cbi-value-title {
1382 @media screen and (max-width: 480px) {
1396 #maincontent > .container {
1397 margin: 0 1rem 1.5rem 1rem;
1400 .main > .main-left > .nav > .slide > .menu {
1404 .main > .main-left > .nav > .slide > .slide-menu > li > a {
1410 min-width: 0rem !important;
1413 margin-bottom: 0.5rem;
1417 .cbi-value-field, .cbi-value-description {
1421 .cbi-value > .cbi-value-field {
1422 display: inline-block;
1425 .cbi-tabmenu > li, .tabs > li {
1426 padding: 0.6rem 0rem;
1429 .cbi-tabmenu > li > a, .tabs > li > a {
1430 padding: 0.2rem 0.3rem;
1434 .cbi-page-actions > div > input {
1438 .node-main-login > .main .container {
1439 padding: 0.5rem 1rem 2rem 1rem;
1442 .node-main-login > .main .cbi-value {
1446 .node-main-login > .main form > div:nth-last-child(1) {
1450 .node-main-login > .main .cbi-value-title {
1451 width: 100% !important;
1455 .node-main-login > .main fieldset {
1479 padding-bottom: 1rem;
1482 .node-system-packages > .main .cbi-value.cbi-value-last > div {
1483 width: 100% !important;
1486 .node-system-packages > .main .cbi-value .cbi-value-field input {
1490 .node-status-iptables > .main div > .cbi-map > form {
1491 position: static !important;
1495 font-weight: normal;
1498 font-family: inherit;
1503 background-color: #FFF;
1504 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1505 -webkit-overflow-scrolling: touch;
1508 .node-status-iptables > .main div > .cbi-map > form input[type="submit"] {
1509 width: 100% !important;
1513 .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"] {
1518 @media screen and (min-width: 992px) {
1519 .cbi-value input[type="password"],
1520 .cbi-value input[type="text"] {
1524 .cbi-value-field .cbi-input-select {
1529 @media screen and (min-width: 1280px) {
1530 .cbi-value input[type="password"],
1531 .cbi-value input[type="text"] {
1535 .cbi-value-field .cbi-input-select {
1540 @media screen and (min-width: 1600px) {
1541 .cbi-value input[type="password"],
1542 .cbi-value input[type="text"] {
1546 .cbi-value-field .cbi-input-select {