luci-theme-material: fix some severe styling issues
[oweals/luci.git] / themes / luci-theme-material / htdocs / luci-static / material / cascade.css
1 /**
2  *      Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
3  *
4  *      luci-theme-material
5  *              Copyright 2015 Lutty Yang <lutty@wcan.in>
6  *
7  *      Have a bug? Please create an issue here on GitHub!
8  *              https://github.com/LuttyYang/luci-theme-material/issues
9  *
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>
14  *
15  *      MUI:
16  *              https://github.com/muicss/mui
17  *
18  *      Menu and loading spinner icons from IcoMoon:
19  *              https://icomoon.io
20  *
21  *      Pure CSS ripple effect:
22  *              https://github.com/mladenplavsic/css-ripple-effect
23  *
24  *      Licensed to the public under the Apache License 2.0
25  */
26
27 /*
28  *      Include custom css
29  */
30 @import url("custom.css");
31
32 .table {
33         position: relative;
34         display: table;
35 }
36
37 .tr {
38         display: table-row;
39 }
40 .thead {
41         display: table-header-group;
42 }
43
44 .tbody {
45         display: table-row-group;
46 }
47
48 .tfoot {
49         display: table-footer-group;
50 }
51
52 .td,
53 .th {
54         line-height: normal;
55         display: table-cell;
56         padding: .5em;
57         text-align: center;
58         vertical-align: middle;
59 }
60
61 .th {
62         font-weight: bold;
63 }
64
65 .tr.placeholder {
66         height: 4em;
67 }
68
69 .tr.placeholder > .td {
70         line-height: 3;
71         position: absolute;
72         right: 0;
73         bottom: 0;
74         left: 0;
75         text-align: center !important;
76         background: inherit;
77 }
78
79 .td[width="33%"] {
80         padding: 1.1em;
81 }
82
83 .table[width="33%"],
84 .th[width="33%"],
85 .td[width="33%"] {
86         width: 33%;
87 }
88
89 .table[width="100%"],
90 .th[width="100%"],
91 .td[width="100%"] {
92         width: 100%;
93 }
94
95 .col-1 {
96         flex: 1 1 30px !important;
97 }
98
99 .col-2 {
100         flex: 2 2 60px !important;
101 }
102
103 .col-3 {
104         flex: 3 3 90px !important;
105 }
106
107 .col-4 {
108         flex: 4 4 120px !important;
109 }
110
111 .col-5 {
112         flex: 5 5 150px !important;
113 }
114
115 .col-6 {
116         flex: 6 6 180px !important;
117 }
118
119 .col-7 {
120         flex: 7 7 210px !important;
121 }
122
123 .col-8 {
124         flex: 8 8 240px !important;
125 }
126
127 .col-9 {
128         flex: 9 9 270px !important;
129 }
130
131 .col-10 {
132         flex: 10 10 300px !important;
133 }
134
135 * {
136         box-sizing: border-box;
137         margin: 0;
138         padding: 0;
139 }
140
141 .h1,
142 .h2,
143 .h3,
144 .h4,
145 .h5,
146 .h6,
147 h1,
148 h2,
149 h3,
150 h4,
151 h5,
152 h6 {
153         font-family: inherit;
154         font-weight: normal;
155         line-height: 1.1 !important;
156         color: inherit;
157 }
158
159 html {
160         overflow-y: hidden;
161         -webkit-text-size-adjust: 100%;
162         -ms-text-size-adjust: 100%;
163 }
164
165 body {
166         font-size: .8rem;
167         background-color: #eee;
168 }
169
170 html,
171 body {
172         font-family: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";
173         font-family: var(--font-body);
174         height: 100%;
175         margin: 0;
176         padding: 0;
177 }
178
179 select {
180         padding: .36rem .8rem;
181         color: #555;
182         border: thin solid #ccc;
183         background-color: #fff;
184         background-image: none;
185 }
186
187 .btn,
188 button,
189 select,
190 input,
191 .cbi-dropdown {
192         height: 1.8rem;
193         padding: 0;
194         color: rgba(0, 0, 0, .87);
195         border: 0;
196         border-bottom: 2px solid rgba(0, 0, 0, .26);
197         border-radius: 0;
198         outline: 0;
199         background-color: transparent;
200         background-image: none;
201         box-shadow: none;
202 }
203
204 select,
205 .cbi-dropdown {
206         width: inherit;
207         cursor: default;
208 }
209
210 select:not([multiple="multiple"]):focus,
211 input:not(.cbi-button):focus,
212 .cbi-dropdown:focus {
213         border-color: #09c;
214         border-color: var(--main-color);
215 }
216
217 select[multiple="multiple"] {
218         height: auto;
219 }
220
221 pre {
222         overflow: auto;
223 }
224
225 code {
226         font-size: 1rem;
227         font-size-adjust: .35;
228         padding: 1px 3px;
229         color: #101010;
230         border-radius: 2px;
231         background: #ddd;
232 }
233
234 abbr {
235         cursor: help;
236         text-decoration: underline;
237         color: #005470;
238 }
239
240 hr {
241         margin: 1rem 0;
242         opacity: .1;
243         border-color: #eee;
244 }
245
246 header,
247 .main {
248         position: absolute;
249         width: 100%;
250 }
251
252 header {
253         position: fixed;
254         z-index: 2000;
255         float: left;
256         height: 4rem;
257         transition: box-shadow .2s;
258         box-shadow: 0 2px 5px rgba(0, 0, 0, .26);
259 }
260
261 footer {
262         font-size: .8rem;
263         overflow: hidden;
264         padding: 1rem;
265         text-align: right;
266         white-space: nowrap;
267         color: #aaa;
268         text-shadow: 0 0 2px #bbb;
269 }
270
271 footer > a {
272         text-decoration: none;
273         color: #aaa;
274 }
275
276 small {
277         font-size: 90%;
278         line-height: 1.42857143;
279         white-space: normal;
280 }
281
282 .main {
283         position: relative;
284         top: 4rem;
285         bottom: 0;
286         overflow-y: auto;
287         height: 100%;
288         height: calc(100% - 4rem);
289 }
290
291 .main > .loading {
292         position: fixed;
293         z-index: 1000;
294         top: 0;
295         display: block;
296         width: 100%;
297         height: 100%;
298         pointer-events: none;
299         background-color: rgb(240, 240, 240);
300 }
301
302 .main > .loading > span {
303         font-family: monospace;
304         font-size: 2rem;
305         font-size-adjust: .35;
306         position: relative;
307         top: 12.5%;
308         display: block;
309         text-align: center;
310         color: #888;
311 }
312
313 .main > .loading > span > .loading-img {
314         position: relative;
315         top: .1rem;
316         left: .05rem;
317         display: inline-block;
318         width: 1.25rem;
319         height: 1.25rem;
320         margin-right: 1rem;
321         animation: anim-rotate 2s infinite linear;
322         background: url(./icons/spinner.svg) no-repeat center;
323 }
324
325 @keyframes anim-rotate {
326         0% {
327                 -webkit-transform: rotate(0);
328                 -ms-transform: rotate(0);
329                 transform: rotate(0);
330         }
331         100% {
332                 -webkit-transform: rotate(360deg);
333                 -ms-transform: rotate(360deg);
334                 transform: rotate(360deg);
335         }
336 }
337
338 .main-left {
339         position: fixed;
340         top: 4rem;
341         float: left;
342         overflow-x: auto;
343         width: 15%;
344         width: calc(0% + 15rem);
345         height: 100%;
346         height: calc(100% - 4rem);
347         background-color: #fff;
348         background-color: var(--menu-bg-color);
349 }
350
351 .main-right {
352         float: right;
353         width: 85%;
354         width: calc(100% - 15rem);
355         height: 100%;
356         background-color: #eee;
357 }
358
359 .main-right > #maincontent {
360         background-color: #eee;
361 }
362
363 .pull-right {
364         float: right;
365 }
366
367 .pull-left {
368         float: left;
369 }
370
371 .nowrap:not(.td) {
372         white-space: nowrap;
373 }
374
375 [disabled="disabled"] {
376         pointer-events: none;
377 }
378
379 header {
380         color: #fff;
381         color: var(--header-color);
382         background: #09c;
383         background: var(--header-bg);
384 }
385
386 header > .fill > .container {
387         margin-top: .5rem;
388         padding: .5rem 1rem 0 1rem;
389         -webkit-user-select: none;
390         -moz-user-select: none;
391         -ms-user-select: none;
392         user-select: none;
393 }
394
395 header > .fill > .container > #logo {
396         margin: 0 3.5rem 0 1.5rem;
397 }
398
399 header > .fill > .container > #logo > img {
400         width: calc(0% + 10rem);
401         margin-top: -.1rem;
402 }
403
404 header > .fill > .container > .brand {
405         font-size: 1.4rem;
406         position: absolute;
407         cursor: default;
408         vertical-align: text-bottom;
409         text-decoration: none;
410         color: #fff;
411         color: var(--header-color);
412 }
413
414 header > .fill > .container > .status {
415         position: absolute;
416         top: 25%;
417         right: 1em;
418         float: right;
419 }
420
421 header > .fill > .container > .status > * {
422         position: relative;
423         top: .2rem;
424         float: left;
425         margin-left: .3rem;
426         cursor: pointer;
427 }
428
429 #xhr_poll_status {
430         display: flex;
431 }
432
433 .danger {
434         background-color: #ff7d60 !important;
435 }
436
437 .warning {
438         background-color: #f0e68c !important;
439 }
440
441 .success {
442         background-color: #5cb85c !important;
443 }
444
445 .notice {
446         background-color: #5bc0de !important;
447 }
448
449 .error {
450         color: #f00;
451 }
452
453 .alert,
454 .alert-message {
455         font-weight: bold;
456         margin-bottom: 1em;
457         padding: 1rem;
458         border: 0;
459         border-radius: 0 !important;
460         background-color: #fff;
461         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
462         text-shadow: 1px 1px rgba(0, 0, 0, .1);
463 }
464
465 .alert-message > h4 {
466         font-size: 110%;
467         font-weight: bold;
468 }
469
470 .alert-message > * {
471         margin: .5rem 0;
472 }
473
474 .alert-message .btn {
475         padding: .3rem .6rem;
476 }
477
478 .container .alert,
479 .container .alert-message {
480         margin-top: 1rem;
481 }
482
483 .main > .main-left > .nav {
484         margin-top: .5rem;
485 }
486
487 .main > .main-left > .nav > li {
488         padding: .5rem 1rem;
489         cursor: pointer;
490         -webkit-user-select: none;
491         -moz-user-select: none;
492         -ms-user-select: none;
493         user-select: none;
494 }
495
496 .main > .main-left > .nav > li:last-child {
497         display: flex;
498         align-items: center;
499         margin: 2rem 0 1rem 0;
500         padding: 0 0 0 2rem;
501 }
502
503 .main > .main-left > .nav > li a {
504         display: block;
505         color: #5f6368;
506         color: var(--menu-color);
507 }
508
509 .main > .main-left > .nav > .slide {
510         padding: 0;
511 }
512
513 .main > .main-left > .nav > .slide > ul {
514         display: none;
515 }
516
517 .main > .main-left > .nav > .slide > .menu,
518 .main > .main-left > .nav > li > [data-title="Logout"] {
519         font-size: 1.15rem;
520         font-weight: 500;
521         display: flex;
522         align-items: center;
523         width: 100%;
524         padding: .5rem 1rem;
525         text-decoration: none;
526         color: #202124;
527         color: var(--main-menu-color);
528 }
529
530 .main > .main-left > .nav > .slide > .menu::before {
531         position: absolute;
532         right: 17px;
533         width: 16px;
534         height: 16px;
535         content: "";
536         background: url(./icons/arrow.svg) no-repeat;
537 }
538
539 .main > .main-left > .nav > .slide > .menu.active::before {
540         transform: rotate(-180deg);
541 }
542
543 body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before {
544         transition: transform .1s ease-in-out;
545 }
546
547 body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before {
548         transition: transform .2s ease-in-out;
549 }
550
551 .main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before {
552         display: none;
553 }
554
555 .main > .main-left > .nav > li:last-child::before {
556         position: absolute;
557         left: 14px;
558         width: 24px;
559         height: 24px;
560         content: url(./icons/logout.svg);
561 }
562
563 .main > .main-left > .nav > li:hover,
564 .main > .main-left > .nav > .slide > .menu:hover {
565         background: #d4d4d4;
566         background: var(--submenu-bg-hover);
567 }
568
569 .main > .main-left > .nav > .slide:hover {
570         background: none;
571 }
572
573 .main > .main-left > .nav > .slide > .slide-menu > li {
574         padding: .4rem 2rem;
575 }
576
577 .main > .main-left > .nav > .slide > .slide-menu > .active {
578         background-color: #09c;
579         background-color: var(--submenu-bg-hover-active);
580 }
581
582 .main > .main-left > .nav > .slide > .slide-menu > li > a {
583         white-space: nowrap;
584         text-decoration: none;
585 }
586
587 .main > .main-left > .nav > .slide > .slide-menu > .active > a {
588         color: #fff;
589 }
590
591 .main > .main-left > .nav > .slide > .slide-menu > li:hover {
592         background: #d4d4d4;
593         background: var(--submenu-bg-hover);
594 }
595
596 .main > .main-left > .nav > .slide > .slide-menu > li:not(.active):hover > a {
597         color: #202124;
598         color: var(--menu-color-hover);
599 }
600
601 .main > .main-left > .nav > .slide > .slide-menu > .active:hover {
602         background-color: #09c;
603         background-color: var(--main-color);
604 }
605
606 /* ripple effect */
607 .main > .main-left > .nav > .slide > .menu,
608 .main > .main-left > .nav > .slide > .slide-menu > li,
609 .main > .main-left > .nav > li:last-child {
610         position: relative;
611         overflow: hidden;
612         transform: translate3d(0, 0, 0);
613 }
614
615 .main > .main-left > .nav > .slide > .menu::after,
616 .main > .main-left > .nav > .slide > .slide-menu > li::after,
617 .main > .main-left > .nav > li:last-child::after {
618         position: absolute;
619         top: 0;
620         left: 0;
621         display: block;
622         width: 100%;
623         height: 100%;
624         content: "";
625         transition: transform .5s, opacity 1s;
626         transform: scale(10, 10);
627         pointer-events: none;
628         opacity: 0;
629         background-image: radial-gradient(circle, #000 10%, transparent 10.01%);
630         background-repeat: no-repeat;
631         background-position: 50%;
632 }
633
634 .main > .main-left > .nav > .slide > .menu:active::after,
635 .main > .main-left > .nav > .slide > .slide-menu > li:active::after,
636 .main > .main-left > .nav > li:last-child:active::after {
637         transition: 0s;
638         transform: scale(0, 0);
639         opacity: .2;
640 }
641
642 #maincontent > .container {
643         margin: 0 2rem 1rem 2rem;
644 }
645
646 ul {
647         line-height: normal;
648 }
649
650 li {
651         list-style-type: none;
652 }
653
654 h1 {
655         font-size: 2rem;
656         padding-bottom: 10px;
657         border-bottom: thin solid #eee;
658 }
659
660 h2 {
661         font-size: 1.8rem;
662         margin: 2rem 0 0 0;
663         padding-bottom: 10px;
664         border-bottom: thin solid #eee;
665 }
666
667 h3 {
668         font-size: 1.4rem;
669         margin: 2rem 0 0 0;
670         padding-bottom: 10px;
671 }
672
673 h4 {
674         font-size: 1.2rem;
675         margin: 2rem 0 0 0;
676         padding-bottom: 10px;
677 }
678
679 h5 {
680         font-size: 1rem;
681         margin: 2rem 0 0 0;
682         padding-bottom: 10px;
683 }
684
685 .cbi-section,
686 .cbi-section-error,
687 #iptables,
688 .Firewall form,
689 #cbi-network > .cbi-section-node,
690 #cbi-wireless > .cbi-section-node,
691 #cbi-wireless > #wifi_assoclist_table,
692 [data-tab-title],
693 [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
694 [data-page="admin-system-opkg"] #maincontent > .container {
695         font-family: inherit;
696         font-weight: normal;
697         font-style: normal;
698         line-height: normal;
699         min-width: inherit;
700         margin: 1rem 0 0 0;
701         padding: 2rem;
702         border: 0;
703         border-radius: 0;
704         background-color: #fff;
705         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
706 }
707
708 .cbi-modal .cbi-section,
709 .cbi-section .cbi-section {
710         padding: 0;
711         box-shadow: none;
712 }
713
714 .cbi-map-descr,
715 .cbi-section-descr {
716         font-size: small;
717         line-height: 1.42857143;
718         padding: .5rem;
719         color: #999;
720 }
721
722 .cbi-map-descr + fieldset {
723         margin-top: 1rem;
724 }
725
726 .cbi-section > legend {
727         display: none !important;
728 }
729
730 fieldset > fieldset,
731 .cbi-section > .cbi-section {
732         margin: 0;
733         padding: 0;
734         border: 0;
735         box-shadow: none;
736 }
737
738 .cbi-section > h3:first-child,
739 .panel-title {
740         font-size: 1.4rem;
741         line-height: 1;
742         display: block;
743         width: 100%;
744         margin: 0;
745         margin-bottom: .5rem;
746         padding-bottom: 1rem;
747         color: #404040;
748         border-bottom: thin solid #eee;
749 }
750
751 .cbi-section > h3:first-child,
752 .cbi-section > h4:first-child,
753 .cbi-section > p:first-child,
754 [data-tab-title] > h3:first-child,
755 [data-tab-title] > h4:first-child,
756 [data-tab-title] > p:first-child {
757         padding-top: 1rem;
758 }
759
760 table {
761         border-spacing: 0;
762         border-collapse: collapse;
763 }
764
765 table,
766 .table {
767         overflow-y: hidden;
768         width: 100%;
769         box-shadow: 0 0 0 1px #ddd;
770 }
771
772 table > tbody > tr > td,
773 table > tbody > tr > th,
774 table > tfoot > tr > td,
775 table > tfoot > tr > th,
776 table > thead > tr > td,
777 table > thead > tr > th,
778 .table > .tbody > .tr > .td,
779 .table > .tbody > .tr > .th,
780 .table > .tfoot > .tr > .td,
781 .table > .tfoot > .tr > .th,
782 .table > .thead > .tr > .td,
783 .table > .thead > .tr > .th,
784 .table > .tr > .td.cbi-value-field,
785 .table > .tr > .th.cbi-section-table-cell {
786         padding: .5rem;
787 }
788
789 .container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td {
790         padding: .6rem;
791 }
792
793 .cbi-section-table-cell {
794         line-height: 1.1;
795         align-self: flex-end;
796         flex: 1 1 auto;
797 }
798
799 tr > td,
800 tr > th,
801 .tr > .td,
802 .tr > .th,
803 .cbi-section-table-row::before,
804 #cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) {
805         border-top: thin solid #ddd;
806 }
807
808 #cbi-wireless .td,
809 #cbi-network .tr:first-child > .td,
810 .table[width="100%"] > .tr:first-child > .td,
811 [data-page="admin-network-diagnostics"] .tr > .td,
812 .tr.table-titles > .th,
813 .tr.cbi-section-table-titles > .th {
814         border-top: 0 !important;
815 }
816
817 .table[width="100%"] > .tr:first-child > .td {
818         margin: auto 0;
819 }
820
821 .cbi-section-table-row {
822         margin-bottom: 1rem;
823         text-align: center !important;
824         background: #f4f4f4;
825 }
826
827 .cbi-section-table-row:last-child {
828         margin-bottom: 0;
829 }
830
831 .cbi-section-table-row > .cbi-value-field .cbi-dropdown,
832 .cbi-section-table-row > .cbi-value-field .cbi-input-select,
833 .cbi-section-table-row > .cbi-value-field .cbi-input-text,
834 .cbi-section-table-row > .cbi-value-field .cbi-input-password {
835         width: 100%;
836 }
837
838 .cbi-section-table-row > .cbi-value-field [data-dynlist] > input,
839 .cbi-section-table-row > .cbi-value-field input.cbi-input-password {
840         width: calc(100% - 1.5rem);
841 }
842
843 .cbi-section-table-row .td {
844         text-align: center !important;
845 }
846
847 div > table > tbody > tr:nth-of-type(2n),
848 div > .table > .tr:nth-of-type(2n) {
849         background-color: #f9f9f9;
850 }
851
852 /* fix multiple table */
853 table table,
854 .table .table,
855 .cbi-value-field table,
856 .cbi-value-field .table,
857 td > table > tbody > tr > td,
858 .td > .table > .tbody > .tr > .td,
859 .cbi-value-field > table > tbody > tr > td,
860 .cbi-value-field > .table > .tbody > .tr > .td {
861         border: 0;
862 }
863
864 /* button style */
865 .btn,
866 .cbi-button,
867 .item::after {
868         font-size: .8rem;
869         display: inline-block;
870         width: auto !important;
871         padding: 0 .8rem;
872         cursor: pointer;
873         -webkit-user-select: none;
874         -moz-user-select: none;
875         -ms-user-select: none;
876         user-select: none;
877         transition: all .2s ease-in-out;
878         text-align: center;
879         vertical-align: middle;
880         white-space: nowrap;
881         text-decoration: none;
882         text-transform: uppercase;
883         color: rgba(0, 0, 0, .87);
884         border: 0;
885         border-radius: .2rem;
886         background-color: #f0f0f0;
887         background-image: none;
888         -webkit-appearance: none;
889         -ms-touch-action: manipulation;
890         touch-action: manipulation;
891 }
892
893 .cbi-button-up,
894 .cbi-button-down {
895         font-size: 1.2rem;
896         display: inline-block;
897         min-width: 0;
898         padding: .2rem .3rem;
899         color: transparent !important;
900         background: url(./icons/arrow.svg) no-repeat center;
901         background-size: 12px 20px;
902 }
903
904 .cbi-button-up {
905         transform: scaleY(-1);
906 }
907
908 .cbi-button:not(select) {
909         -webkit-appearance: none !important;
910 }
911
912 .cbi-button + .cbi-button {
913         margin-left: .6rem;
914 }
915
916 .btn:hover,
917 .btn:focus,
918 .btn:active,
919 .cbi-button:hover,
920 .cbi-button:focus,
921 .cbi-button:active,
922 .item:hover::after,
923 .item:focus::after,
924 .item:active::after,
925 .cbi-page-actions .cbi-button-apply + .cbi-button-save:hover,
926 .cbi-page-actions .cbi-button-apply + .cbi-button-save:focus,
927 .cbi-page-actions .cbi-button-apply + .cbi-button-save:active {
928         text-decoration: none;
929         outline: 0;
930 }
931
932 .btn:hover,
933 .btn:focus,
934 .cbi-button:hover,
935 .cbi-button:focus,
936 .item:hover::after,
937 .item:focus::after {
938         box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2);
939 }
940
941 .btn:active,
942 .cbi-button:active,
943 .item:active::after {
944         box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
945 }
946
947 .cbi-button-up:hover,
948 .cbi-button-up:focus {
949         box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2);
950 }
951
952 .cbi-button-up:active {
953         box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23);
954 }
955
956 .btn:disabled,
957 .cbi-button:disabled {
958         cursor: not-allowed;
959         pointer-events: none;
960         opacity: .5;
961         box-shadow: none;
962 }
963
964 /* gray */
965 .alert-message [class="btn"],
966 .modal div[class="btn"],
967 .cbi-button-find,
968 .cbi-button-link,
969 .cbi-button-up,
970 .cbi-button-down,
971 .cbi-button-neutral,
972 .cbi-button[name="zero"],
973 .cbi-button[name="restart"],
974 .cbi-button[onclick="hide_empty(this)"] {
975         font-weight: bold;
976         border: thin solid #bfbfbf;
977         background-color: #d4d4d4;
978 }
979
980 /* dark blue */
981 .btn.primary,
982 .cbi-page-actions .cbi-button-save,
983 .cbi-page-actions .cbi-button-apply + .cbi-button-save,
984 .cbi-button-add,
985 .cbi-button-save,
986 .cbi-button-positive,
987 .cbi-button-link,
988 .cbi-button[value="Enable"],
989 .cbi-button[value="Scan"],
990 .cbi-button[value^="Back"],
991 .cbi-button-neutral[onclick="handleConfig(event)"] {
992         font-weight: normal;
993         color: #fff;
994         border: thin solid #2e6da4;
995         background-color: #337ab7;
996 }
997
998 /* light blue */
999 .cbi-page-actions .cbi-button-apply,
1000 .cbi-section-actions .cbi-button-edit,
1001 .cbi-button-edit,
1002 .cbi-button-apply,
1003 .cbi-button-reload,
1004 .cbi-button-action,
1005 .cbi-button[value="Submit"],
1006 .cbi-button[value="Upload"],
1007 .cbi-button[value$="Apply"],
1008 .cbi-button[onclick="addKey(event)"] {
1009         font-weight: normal;
1010         color: #fff;
1011         border: thin solid #46b8da;
1012         background-color: #5bc0de;
1013 }
1014
1015 /* red */
1016 .btn.danger,
1017 .cbi-section-remove > .cbi-button,
1018 .cbi-button-remove,
1019 .cbi-button-reset,
1020 .cbi-button-negative,
1021 .cbi-button[value="Stop"],
1022 .cbi-button[value="Kill"],
1023 .cbi-button[onclick="reboot(this)"],
1024 .cbi-button-neutral[value="Restart"] {
1025         font-weight: normal;
1026         color: #fff;
1027         border: thin solid #d43f3a;
1028         background-color: #d9534f;
1029 }
1030
1031 /* yellow */
1032 .btn[value="Dismiss"],
1033 .cbi-button[value="Terminate"],
1034 .cbi-button[value="Reset"],
1035 .cbi-button[value="Disabled"],
1036 .cbi-button[onclick^="iface_reconnect"],
1037 .cbi-button[onclick="handleReset(event)"],
1038 .cbi-button-neutral[value="Disable"] {
1039         font-weight: normal;
1040         color: #fff;
1041         border: thin solid #eea236;
1042         background-color: #f0ad4e;
1043 }
1044
1045 /* green */
1046 .cbi-button-success,
1047 .cbi-button-download,
1048 .cbi-button[name="backup"],
1049 .cbi-button[value="Download"],
1050 .cbi-button[value="Save mtdblock"] {
1051         font-weight: normal;
1052         color: #fff;
1053         border: thin solid #4cae4c;
1054         background-color: #5cb85c;
1055 }
1056
1057 .cbi-page-actions .cbi-button-link:first-child {
1058         float: left;
1059 }
1060
1061 .a-to-btn {
1062         text-decoration: none;
1063 }
1064
1065 .cbi-value-field .cbi-button-add {
1066         font-weight: bold;
1067         margin: 9px 0 4px 3px;
1068         padding: 1px 6px;
1069 }
1070
1071 .tabs {
1072         margin: 0 -2rem;
1073         padding-left: .5rem;
1074         background-color: #fff;
1075 }
1076
1077 .tabs > li,
1078 .cbi-tabmenu > li {
1079         display: inline-block;
1080         padding: .55rem 0;
1081         cursor: pointer;
1082 }
1083
1084 .tabs > li {
1085         padding-bottom: .4rem;
1086         border-bottom: .2rem solid transparent;
1087 }
1088
1089 .tabs > li[class~="active"],
1090 .tabs > li:hover {
1091         border-bottom-color: #09c;
1092         border-bottom-color: var(--main-color);
1093 }
1094
1095 .tabs > li:hover {
1096         cursor: pointer;
1097         border-bottom-color: #c9c9c9;
1098 }
1099
1100 .tabs > li > a,
1101 .cbi-tabmenu > li > a {
1102         padding: .6rem .9rem;
1103         text-decoration: none;
1104         color: #404040;
1105 }
1106
1107 .tabs > li[class~="active"] > a {
1108         color: #09c;
1109         color: var(--main-color);
1110 }
1111
1112 .cbi-tabmenu {
1113         border: thin solid #d4d4d4;
1114         border-bottom: 0;
1115 }
1116
1117 .cbi-tabmenu > li:hover {
1118         background-color: #f1f1f1;
1119 }
1120
1121 .cbi-tabmenu > li[class~="cbi-tab"] {
1122         background-color: #fff;
1123 }
1124
1125 .cbi-tabmenu {
1126         background-color: #d4d4d4;
1127 }
1128
1129 .cbi-section .cbi-section-remove:nth-of-type(2n),
1130 .container > .cbi-section .cbi-section-node:nth-of-type(2n) {
1131         background-color: #f9f9f9;
1132 }
1133
1134 [data-tab-title] {
1135         overflow: hidden;
1136         height: 0;
1137         opacity: 0;
1138         margin: 0;
1139         padding: 0rem 1rem !important;
1140 }
1141
1142 [data-tab-active="true"] {
1143         overflow: visible;
1144         height: auto;
1145         opacity: 1;
1146         transition: opacity .25s ease-in;
1147         margin: inherit !important;
1148 }
1149
1150 .cbi-section[id] .cbi-section-remove:nth-of-type(4n+3),
1151 .cbi-section[id] .cbi-section-node:nth-of-type(4n+4) {
1152         background-color: #f9f9f9;
1153 }
1154
1155 .cbi-section-node-tabbed {
1156         margin-top: 0;
1157         padding: 0;
1158         border: thin solid #d4d4d4;
1159         border-top: 0;
1160 }
1161
1162 .cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
1163         background-color: #f9f9f9;
1164 }
1165
1166 .cbi-value-field,
1167 .cbi-value-description {
1168         line-height: 1.25;
1169         display: table-cell;
1170 }
1171
1172 .cbi-value-description {
1173         font-size: small;
1174         padding-top: .4rem;
1175         opacity: .5;
1176 }
1177
1178 .cbi-value-title {
1179         display: table-cell;
1180         float: left;
1181         width: 23rem;
1182         padding-top: .35rem;
1183         padding-right: 2rem;
1184         text-align: right;
1185         word-wrap: break-word;
1186 }
1187
1188 .cbi-value {
1189         display: inline-block;
1190         width: 100%;
1191         padding: .35rem 1rem .2rem 1rem;
1192 }
1193
1194 .cbi-value ul {
1195         line-height: 1.25;
1196 }
1197
1198 .cbi-value-field .cbi-dropdown,
1199 .cbi-value-field .cbi-input-select,
1200 .cbi-value input[type="text"],
1201 .cbi-value input[type="password"] {
1202         min-width: 25rem;
1203 }
1204
1205 #cbi-firewall-zone .cbi-input-select,
1206 #cbi-network-switch_vlan .cbi-input-select {
1207         min-width: 11rem;
1208 }
1209
1210 #cbi-network-switch_vlan .cbi-input-text {
1211         max-width: 3rem;
1212 }
1213
1214 .cbi-input-invalid {
1215         color: #f00;
1216         border-bottom-color: #f00;
1217 }
1218
1219 .cbi-section-error {
1220         font-weight: bold;
1221         line-height: 1.42857143;
1222         margin: 18px;
1223         padding: 6px;
1224         border: thin solid #f00;
1225         border-radius: 3px;
1226         background-color: #fce6e6;
1227 }
1228
1229 .cbi-section-error ul {
1230         margin: 0 0 0 20px;
1231 }
1232
1233 .cbi-section-error ul li {
1234         font-weight: bold;
1235         color: #f00;
1236 }
1237
1238 .td[data-title]::before {
1239         font-weight: bold;
1240         display: none;
1241         padding: .25rem 0;
1242         content: attr(data-title) ":\20";
1243         text-align: left;
1244         white-space: nowrap;
1245 }
1246
1247 .tr.placeholder .td[data-title]::before {
1248         display: none;
1249 }
1250
1251 .tr[data-title]::before,
1252 .tr.cbi-section-table-titles.named::before {
1253         font-weight: bold;
1254         display: table-cell;
1255         align-self: center;
1256         flex: 1 1 5%;
1257         padding: .25rem;
1258         content: attr(data-title) "\20";
1259         text-align: center;
1260         vertical-align: middle;
1261         white-space: normal;
1262         word-wrap: break-word;
1263 }
1264
1265 .cbi-rowstyle-1 {
1266         background-color: #f9f9f9;
1267 }
1268
1269 .cbi-rowstyle-2 {
1270         background-color: #eee;
1271 }
1272
1273 .cbi-rowstyle-2 .cbi-button-up,
1274 .cbi-rowstyle-2 .cbi-button-down,
1275 body:not(.Interfaces) .cbi-rowstyle-2:first-child {
1276         background-color: #fff !important;
1277 }
1278
1279 .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
1280         width: auto !important;
1281 }
1282
1283 .td.cbi-section-actions {
1284         text-align: right !important;
1285         vertical-align: middle;
1286 }
1287
1288 .td.cbi-section-actions > * {
1289         display: inline-flex;
1290 }
1291
1292 .td.cbi-section-actions > * > *,
1293 .td.cbi-section-actions > * > form > * {
1294         margin: 0 5px;
1295 }
1296
1297 .td.cbi-section-actions > * > form {
1298         display: inline-flex;
1299         margin: 0;
1300 }
1301
1302 /* lists */
1303 .cbi-dynlist {
1304         line-height: 1.3;
1305         flex-direction: column;
1306         min-height: 30px;
1307         cursor: text;
1308 }
1309
1310 .cbi-dynlist > .item {
1311         position: relative;
1312         max-width: 25rem;
1313         margin-right: 2em;
1314         padding: .5em .25em .25em 0;
1315         pointer-events: none;
1316         color: #666;
1317         border-bottom: 2px solid rgba(0, 0, 0, .26);
1318         outline: 0;
1319 }
1320
1321 .cbi-dynlist[name="sshkeys"] > .item {
1322         max-width: none;
1323 }
1324
1325 .cbi-dynlist > .item::after {
1326         font-weight: bold;
1327         position: absolute;
1328         right: -2em;
1329         bottom: 0;
1330         display: inline-flex;
1331         min-height: 17px;
1332         padding: 0 6px;
1333         content: "\00D7";
1334         pointer-events: auto;
1335         color: #fff;
1336         border: thin solid #d43f3a;
1337         background-color: #d9534f;
1338 }
1339
1340 .cbi-dynlist > .item > span {
1341         white-space: normal;
1342         word-break: break-word;
1343 }
1344
1345 .cbi-dynlist > .add-item {
1346         display: inline-flex;
1347         align-items: center;
1348         width: 100%;
1349         min-width: 16rem;
1350 }
1351
1352 .cbi-dynlist > .add-item:not([ondrop]) > input {
1353         overflow: hidden;
1354         width: 100%;
1355         min-width: 15rem;
1356         white-space: nowrap;
1357         text-overflow: ellipsis;
1358 }
1359
1360 .cbi-dynlist > .add-item[ondrop] > input {
1361         min-width: 13rem;
1362 }
1363
1364 .cbi-dynlist,
1365 .cbi-dropdown {
1366         position: relative;
1367         display: inline-flex;
1368         padding: 0;
1369 }
1370
1371 .cbi-dropdown[placeholder*="select"] {
1372         max-width: 25rem;
1373         height: auto;
1374         margin-top: -3px;
1375 }
1376
1377 .cbi-dropdown > ul {
1378         display: flex;
1379         overflow-x: hidden;
1380         overflow-y: auto;
1381         width: 100%;
1382         margin: 0 !important;
1383         padding: 0;
1384         list-style: none;
1385         outline: 0;
1386 }
1387
1388 .cbi-dropdown > ul.preview {
1389         display: none;
1390 }
1391
1392 .cbi-dropdown > .open {
1393         flex-basis: 15px;
1394 }
1395
1396 .cbi-dropdown > .open,
1397 .cbi-dropdown > .more {
1398         font-size: 1rem;
1399         font-weight: 900;
1400         line-height: 2;
1401         display: flex;
1402         flex-direction: column;
1403         flex-grow: 0;
1404         flex-shrink: 0;
1405         justify-content: center;
1406         padding: 0 .25em;
1407         cursor: default;
1408         text-align: center;
1409         outline: 0;
1410 }
1411
1412 .cbi-dropdown > .more,
1413 .cbi-dropdown > ul > li[placeholder] {
1414         font-weight: bold;
1415         display: none;
1416         color: #777;
1417         text-shadow: 1px 1px 0 #fff;
1418 }
1419
1420 .cbi-dropdown > ul > li {
1421         display: none;
1422         overflow: hidden;
1423         align-items: center;
1424         align-self: center;
1425         flex-grow: 1;
1426         flex-shrink: 1;
1427         min-height: 20px;
1428         padding: .25em;
1429         white-space: nowrap;
1430         text-overflow: ellipsis;
1431 }
1432
1433 .cbi-dropdown > ul > li .hide-open {
1434         display: initial;
1435 }
1436
1437 .cbi-dropdown > ul > li .hide-close {
1438         display: none;
1439 }
1440
1441 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1442         border-left: thin solid #ccc;
1443 }
1444
1445 .cbi-dropdown[empty] > ul {
1446         max-width: 1px;
1447 }
1448
1449 .cbi-dropdown > ul > li > form {
1450         display: none;
1451         margin: 0;
1452         padding: 0;
1453         pointer-events: none;
1454 }
1455
1456 .cbi-dropdown > ul > li img {
1457         margin-right: .25em;
1458         vertical-align: middle;
1459 }
1460
1461 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1462         height: auto;
1463         margin: 0;
1464 }
1465
1466 .cbi-dropdown > ul > li input[type="text"] {
1467         height: 20px;
1468 }
1469
1470 .cbi-dropdown[open] > ul.dropdown {
1471         position: absolute;
1472         z-index: 1100;
1473         display: block;
1474         width: auto;
1475         min-width: 100%;
1476         max-width: none;
1477         max-height: 200px !important;
1478         border: thin solid #918e8c;
1479         background: #f6f6f6;
1480         box-shadow: 0 0 4px #918e8c;
1481 }
1482
1483 .cbi-dropdown > ul > li[display],
1484 .cbi-dropdown[open] > ul.preview,
1485 .cbi-dropdown[open] > ul.dropdown > li,
1486 .cbi-dropdown[multiple] > ul > li > label,
1487 .cbi-dropdown[multiple][open] > ul.dropdown > li,
1488 .cbi-dropdown[multiple][more] > .more,
1489 .cbi-dropdown[multiple][empty] > .more {
1490         display: flex;
1491         align-items: center;
1492         flex-grow: 1;
1493 }
1494
1495 .cbi-dropdown[empty] > ul > li,
1496 .cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
1497 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1498         display: block;
1499 }
1500
1501 .cbi-dropdown[open] > ul.dropdown > li .hide-open {
1502         display: none;
1503 }
1504
1505 .cbi-dropdown[open] > ul.dropdown > li .hide-close {
1506         display: initial;
1507 }
1508
1509 .cbi-dropdown[open] > ul.dropdown > li {
1510         border-bottom: thin solid #ccc;
1511 }
1512
1513 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1514         background: #b0d0f0;
1515 }
1516
1517 .cbi-dropdown[open] > ul.dropdown > li.focus {
1518         background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
1519 }
1520
1521 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1522         margin-bottom: 0;
1523         border-bottom: 0;
1524 }
1525
1526 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1527         opacity: .7;
1528 }
1529
1530 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1531         width: 100%;
1532 }
1533
1534 .cbi-dropdown[disabled] {
1535         pointer-events: none;
1536         opacity: .6;
1537 }
1538
1539 .cbi-dropdown .zonebadge {
1540         width: 100%;
1541 }
1542
1543 .cbi-dropdown[open] .zonebadge {
1544         width: auto;
1545 }
1546
1547 /* progressbar */
1548 .cbi-progressbar {
1549         position: relative;
1550         min-width: 170px;
1551         height: 20px;
1552         margin: 6px 0;
1553         border: thin solid #999;
1554         background: #eee;
1555 }
1556
1557 .cbi-progressbar > div {
1558         width: 0;
1559         height: 100%;
1560         transition: width .25s ease-in;
1561         background: #5bc0de;
1562         background: var(--bar-bg);
1563 }
1564
1565 .cbi-progressbar::after {
1566         font-family: monospace;
1567         font-size: 1.3em;
1568         font-weight: bold;
1569         font-size-adjust: .38;
1570         line-height: normal;
1571         position: absolute;
1572         top: 2px;
1573         right: 0;
1574         bottom: 2px;
1575         left: 0;
1576         overflow: hidden;
1577         content: attr(title);
1578         text-align: center;
1579         white-space: pre;
1580         text-overflow: ellipsis;
1581         text-shadow: 0 0 2px #eee;
1582 }
1583
1584 #modal_overlay {
1585         position: fixed;
1586         z-index: 900;
1587         top: 4rem;
1588         right: 10000px;
1589         bottom: 0;
1590         left: -10000px;
1591         overflow-y: scroll;
1592         transition: opacity .125s ease-in;
1593         opacity: 0;
1594         background: rgba(0, 0, 0, .7);
1595         -webkit-overflow-scrolling: touch;
1596 }
1597
1598 .modal {
1599         display: flex;
1600         align-items: center;
1601         flex-wrap: wrap;
1602         width: 90%;
1603         min-width: 270px;
1604         max-width: 600px;
1605         min-height: 32px;
1606         max-height: 2400px;
1607         margin: 5em auto;
1608         padding: 1em;
1609         border-radius: 3px !important;
1610         background: #fff;
1611         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1612 }
1613
1614 .modal > * {
1615         line-height: normal;
1616         flex-basis: 100%;
1617         margin-bottom: .5em;
1618 }
1619
1620 .modal > pre,
1621 .modal > textarea {
1622         font-size: 1rem;
1623         font-size-adjust: .35;
1624         overflow: auto;
1625         margin-bottom: .5em;
1626         padding: 8.5px;
1627         cursor: auto;
1628         white-space: pre-wrap;
1629         color: #eee;
1630         outline: 0;
1631         background-color: #101010;
1632         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1633 }
1634
1635 .modal > h4 {
1636         margin: .5em 0;
1637 }
1638
1639 .modal ul {
1640         margin-left: 2.2em;
1641 }
1642
1643 .modal li {
1644         list-style-type: square;
1645         color: #808080;
1646 }
1647
1648 .modal p {
1649         padding-left: .25rem;
1650         word-break: break-word;
1651 }
1652
1653 .modal .label {
1654         font-size: .6rem;
1655         font-weight: normal;
1656         padding: .1rem .3rem;
1657         padding-bottom: 0;
1658         cursor: default;
1659         border-radius: 0;
1660 }
1661
1662 .modal .label.warning {
1663         background-color: #f0ad4e !important;
1664 }
1665
1666 .modal .btn {
1667         padding: .3rem .6rem;
1668 }
1669
1670 .modal .spinning {
1671         margin-bottom: 2em;
1672 }
1673
1674 .modal.cbi-modal {
1675         max-width: 90%;
1676         max-height: none;
1677 }
1678
1679 body.modal-overlay-active {
1680         overflow: hidden;
1681         height: 100vh;
1682 }
1683
1684 body.modal-overlay-active #modal_overlay {
1685         right: 0;
1686         left: 0;
1687         opacity: 1;
1688 }
1689
1690 .spinning {
1691         position: relative;
1692         padding-left: 32px !important;
1693 }
1694
1695 .spinning::before {
1696         position: absolute;
1697         top: 0;
1698         bottom: 0;
1699         left: .2em;
1700         width: 32px;
1701         content: "";
1702         background: url(../resources/icons/loading.gif) no-repeat center;
1703         background-size: 16px;
1704 }
1705
1706 /* luci */
1707 .hidden {
1708         display: none;
1709 }
1710
1711 .left,
1712 .left::before {
1713         text-align: left !important;
1714 }
1715
1716 .right,
1717 .right::before {
1718         text-align: right !important;
1719 }
1720
1721 .center,
1722 .center::before {
1723         text-align: center !important;
1724 }
1725
1726 .top {
1727         align-self: flex-start !important;
1728         vertical-align: top !important;
1729 }
1730
1731 .bottom {
1732         align-self: flex-end !important;
1733         vertical-align: bottom !important;
1734 }
1735
1736 .inline {
1737         display: inline;
1738 }
1739
1740 .cbi-page-actions {
1741         padding-top: 1rem;
1742         text-align: right;
1743 }
1744
1745 .cbi-page-actions > form[method="post"] {
1746         display: inline-block;
1747 }
1748
1749 .th[data-type="button"],
1750 .td[data-type="button"],
1751 .th[data-type="fvalue"],
1752 .td[data-type="fvalue"] {
1753         flex: 1 1 2em;
1754         text-align: center;
1755 }
1756
1757 .ifacebadge {
1758         display: inline-flex;
1759         padding: .5rem .8rem;
1760         border-bottom: thin solid #ccc;
1761         background: #eee;
1762         box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
1763 }
1764
1765 td > .ifacebadge,
1766 .td > .ifacebadge {
1767         font-size: .8rem;
1768         background-color: #f0f0f0;
1769 }
1770
1771 .ifacebadge > em,
1772 .ifacebadge > img {
1773         display: inline-block;
1774         align-self: flex-start;
1775         margin: 0 .2rem;
1776 }
1777
1778 .ifacebadge > img + img {
1779         margin: 0 .2rem 0 0;
1780 }
1781
1782 .network-status-table {
1783         display: flex;
1784         flex-wrap: wrap;
1785 }
1786
1787 .network-status-table .ifacebox {
1788         flex-grow: 1;
1789         margin: .5em;
1790 }
1791
1792 .network-status-table .ifacebox-body {
1793         display: flex;
1794         flex-direction: column;
1795         height: 100%;
1796 }
1797
1798 .network-status-table .ifacebox-body > span {
1799         flex: 10 10 auto;
1800         height: 100%;
1801 }
1802
1803 .network-status-table .ifacebox-body > div {
1804         display: flex;
1805         flex-wrap: wrap;
1806 }
1807
1808 .network-status-table .ifacebox-body .ifacebadge {
1809         align-items: center;
1810         flex: 1 1 auto;
1811         min-width: 220px;
1812         margin: .5em .25em 0 .25em;
1813         padding: .5em;
1814         background-color: #fff;
1815 }
1816
1817 /* textarea */
1818 .cbi-input-textarea {
1819         font-family: monospace;
1820         width: 100%;
1821         min-height: 14rem;
1822         padding: .8rem;
1823         color: #000;
1824 }
1825
1826 #syslog {
1827         font-size: small;
1828         line-height: 1.25;
1829         overflow-y: hidden;
1830         width: 100%;
1831         min-height: 15rem;
1832         padding: 1rem;
1833         resize: none;
1834         color: #eee;
1835         border: 0;
1836         border-radius: 0;
1837         background-color: #101010;
1838         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1839 }
1840
1841 #syslog:focus {
1842         outline: 0;
1843 }
1844
1845 /* config changes */
1846 .uci-change-list {
1847         font-family: monospace;
1848 }
1849
1850 .uci-change-list ins,
1851 .uci-change-legend-label ins {
1852         display: block;
1853         padding: 2px;
1854         text-decoration: none;
1855         border: thin solid #0f0;
1856         background-color: #cfc;
1857 }
1858
1859 .uci-change-list del,
1860 .uci-change-legend-label del {
1861         font-style: normal;
1862         display: block;
1863         padding: 2px;
1864         text-decoration: none;
1865         border: thin solid #f00;
1866         background-color: #fcc;
1867 }
1868
1869 .uci-change-list var,
1870 .uci-change-legend-label var {
1871         font-style: normal;
1872         display: block;
1873         padding: 2px;
1874         text-decoration: none;
1875         border: thin solid #ccc;
1876         background-color: #eee;
1877 }
1878
1879 .uci-change-list var ins,
1880 .uci-change-list var del {
1881         font-style: normal;
1882         padding: 0;
1883         white-space: pre;
1884         border: 0;
1885 }
1886
1887 .uci-change-legend {
1888         padding: 5px;
1889 }
1890
1891 .uci-change-legend-label {
1892         float: left;
1893         width: 150px;
1894 }
1895
1896 .uci-change-legend-label > ins,
1897 .uci-change-legend-label > del,
1898 .uci-change-legend-label > var {
1899         display: block;
1900         float: left;
1901         width: 10px;
1902         height: 10px;
1903         margin-right: 4px;
1904 }
1905
1906 .uci-change-legend-label var ins,
1907 .uci-change-legend-label var del {
1908         line-height: .4;
1909         border: 0;
1910 }
1911
1912 .uci-change-list var,
1913 .uci-change-list del,
1914 .uci-change-list ins {
1915         padding: .5rem;
1916 }
1917
1918 /* other fix */
1919 #iwsvg,
1920 #iwsvg2,
1921 #bwsvg {
1922         border: thin solid #d4d4d4 !important;
1923 }
1924
1925 #iwsvg,
1926 [data-page="admin-status-realtime-bandwidth"] #bwsvg {
1927         border-top: 0 !important;
1928 }
1929
1930 .ifacebox {
1931         line-height: 1.25;
1932         display: inline-flex;
1933         flex-direction: column;
1934         min-width: 100px;
1935         border-bottom: thin solid #ccc;
1936         background-color: #f9f9f9;
1937         box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2);
1938 }
1939
1940 .ifacebox-head {
1941         padding: .25em;
1942         background: #eee;
1943 }
1944
1945 .ifacebox-head.active {
1946         background: #5bc0de;
1947         background: var(--bar-bg);
1948 }
1949
1950 .ifacebox-body {
1951         padding: .25em;
1952 }
1953
1954 .cbi-image-button {
1955         margin-left: .5rem;
1956 }
1957
1958 .zonebadge {
1959         display: inline-block;
1960         padding: .2rem .5rem;
1961 }
1962
1963 .zonebadge .ifacebadge {
1964         margin: .1rem .2rem;
1965         padding: .2rem .3rem;
1966         border: thin solid #6c6c6c;
1967 }
1968
1969 .zonebadge > input[type="text"] {
1970         min-width: 10rem;
1971         margin-top: .3rem;
1972         padding: .16rem 1rem;
1973 }
1974
1975 .zonebadge > em,
1976 .zonebadge > strong {
1977         display: inline-block;
1978         margin: 0 .2rem;
1979 }
1980
1981 .cbi-value-field .cbi-input-checkbox,
1982 .cbi-value-field .cbi-input-radio {
1983         margin-top: .1rem;
1984 }
1985
1986 .cbi-value-field > ul > li {
1987         display: flex;
1988 }
1989
1990 .cbi-value-field > ul > li > label {
1991         margin-top: .5rem;
1992 }
1993
1994 .cbi-value-field > ul > li .ifacebadge {
1995         margin-top: -.5rem;
1996         margin-left: .4rem;
1997         background-color: #eee;
1998 }
1999
2000 .cbi-section-table-row > .cbi-value-field .cbi-dropdown {
2001         min-width: 7rem;
2002 }
2003
2004 .cbi-section-create {
2005         display: inline-flex;
2006         align-items: center;
2007         margin: .5rem -3px;
2008 }
2009
2010 .cbi-section-create > * {
2011         margin: .5rem;
2012 }
2013
2014 .cbi-section-remove {
2015         padding: .5rem;
2016 }
2017
2018 div.cbi-value var,
2019 td.cbi-value-field var,
2020 .td.cbi-value-field var {
2021         font-style: italic;
2022         color: #0069d6;
2023 }
2024
2025 .cbi-optionals {
2026         padding: 1rem 1rem 0 1rem;
2027         border-top: thin solid #ccc;
2028 }
2029
2030 .cbi-dropdown-container {
2031         position: relative;
2032 }
2033
2034 .cbi-tooltip-container,
2035 span[data-tooltip],
2036 span[data-tooltip] .label {
2037         cursor: help !important;
2038 }
2039
2040 .cbi-tooltip {
2041         position: absolute;
2042         z-index: 1000;
2043         left: -1000px;
2044         padding: 2px 5px;
2045         transition: opacity .25s ease-out;
2046         white-space: pre;
2047         pointer-events: none;
2048         opacity: 0;
2049         border-radius: 3px;
2050         background: #fff;
2051         box-shadow: 0 0 2px #444;
2052 }
2053
2054 .cbi-tooltip-container:hover .cbi-tooltip {
2055         left: auto;
2056         transition: opacity .25s ease-in;
2057         opacity: 1;
2058 }
2059
2060 .zonebadge .cbi-tooltip {
2061         margin: -1.5rem 0 0 -.5rem;
2062         padding: .25rem;
2063         background: inherit;
2064 }
2065
2066 .zonebadge-empty {
2067         color: #404040;
2068         background: repeating-linear-gradient(45deg, rgba(204, 204, 204, .5), rgba(204, 204, 204, .5) 5px, rgba(255, 255, 255, .5) 5px, rgba(255, 255, 255, .5) 10px);
2069 }
2070
2071 .zone-forwards {
2072         display: flex;
2073         min-width: 10rem;
2074 }
2075
2076 .zone-forwards > * {
2077         flex: 1 1 45%;
2078 }
2079
2080 .zone-forwards > span {
2081         flex-basis: 10%;
2082         padding: 0 .25rem;
2083         text-align: center;
2084 }
2085
2086 .zone-forwards .zone-src,
2087 .zone-forwards .zone-dest {
2088         display: flex;
2089         flex-direction: column;
2090 }
2091
2092 .label {
2093         font-size: .8rem;
2094         font-weight: bold;
2095         padding: .3rem .8rem;
2096         white-space: nowrap;
2097         text-decoration: none;
2098         text-transform: uppercase;
2099         color: #fff !important;
2100         border-radius: 3px;
2101         background-color: #bfbfbf;
2102         text-shadow: none;
2103 }
2104
2105 label > input[type="checkbox"],
2106 label > input[type="radio"] {
2107         position: relative;
2108         top: .4rem;
2109         right: .2rem;
2110         margin: 0;
2111         vertical-align: bottom;
2112 }
2113
2114 label[data-index][data-depends] {
2115         padding-right: 2em;
2116 }
2117
2118 .showSide {
2119         display: none;
2120 }
2121
2122 .darkMask {
2123         position: fixed;
2124         z-index: 99;
2125         display: none;
2126         width: 100%;
2127         height: 100%;
2128         content: "";
2129         background-color: rgba(0, 0, 0, .56);
2130 }
2131
2132 /* diagnostics */
2133 #diag-rc-output > pre,
2134 #command-rc-output > pre,
2135 [data-page="admin-services-wol"] .notice code {
2136         font-size: 1.2rem;
2137         font-size-adjust: .35;
2138         line-height: normal;
2139         display: block;
2140         overflow-y: hidden;
2141         width: 100%;
2142         padding: 8.5px;
2143         white-space: pre;
2144         color: #eee;
2145         background-color: #101010;
2146         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2147 }
2148
2149 [data-page="admin-network-diagnostics"] .table {
2150         box-shadow: none;
2151 }
2152
2153 input[name="ping"],
2154 input[name="traceroute"],
2155 input[name="nslookup"] {
2156         width: 80%;
2157 }
2158
2159 /* fix Main Login */
2160 .node-main-login > .main > .main-left {
2161         display: none;
2162 }
2163
2164 .node-main-login > .main > .main-right {
2165         width: 100%;
2166 }
2167
2168 .node-main-login > .main fieldset {
2169         display: inline;
2170         overflow: hidden;
2171         margin-bottom: 1rem;
2172         padding: .5rem;
2173         border: 0;
2174         background: none;
2175         box-shadow: none;
2176 }
2177
2178 .node-main-login > .main .cbi-value-title {
2179         width: 9.5rem;
2180 }
2181
2182 .node-main-login > .main #maincontent {
2183         text-align: center;
2184 }
2185
2186 .node-main-login > .main .container {
2187         display: inline-block;
2188         margin-top: 2rem !important;
2189         padding: 1rem 3.5rem 2rem;
2190         text-align: left;
2191         background-color: #fff;
2192         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2193 }
2194
2195 .node-main-login > .main form > div:last-child {
2196         float: right;
2197 }
2198
2199 .node-main-login > .main .cbi-value {
2200         display: block;
2201 }
2202
2203 .node-main-login > .main .cbi-value > * {
2204         display: inline-block !important;
2205 }
2206
2207 .node-main-login > .main .cbi-input-text {
2208         width: 100% !important;
2209         min-width: 15rem;
2210 }
2211
2212 .node-main-login .cbi-section {
2213         box-shadow: none;
2214 }
2215
2216 @media screen and (min-height: 585px) {
2217         .node-main-login footer {
2218                 position: absolute;
2219                 bottom: 0;
2220                 width: 100%;
2221         }
2222 }
2223
2224 /* fix status */
2225 .node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2),
2226 .node-status-processes > .main .table .tr .td:nth-child(3) {
2227         white-space: normal;
2228 }
2229
2230 /* fix system reboot */
2231 [data-page="admin-system-reboot"] p {
2232         padding-left: 2rem;
2233 }
2234
2235 [data-page="admin-system-reboot"] p > span {
2236         position: relative;
2237         top: .1rem;
2238         left: 1rem;
2239 }
2240
2241 /* samba */
2242 #cbi-samba [data-tab="template"] .cbi-value-field {
2243         display: block;
2244 }
2245
2246 #cbi-samba [data-tab="template"] .cbi-value-title {
2247         width: auto;
2248         padding-bottom: .6rem;
2249 }
2250
2251 /* software */
2252 .controls > * > .btn:not([aria-label$="page"]) {
2253         flex-grow: initial !important;
2254         margin-top: .1rem;
2255 }
2256
2257 .controls > #pager > .btn[aria-label$="page"] {
2258         font-size: 1.4rem;
2259         font-weight: bold;
2260 }
2261
2262 .controls > * > label {
2263         margin-bottom: .2rem;
2264 }
2265
2266 [data-page="admin-system-opkg"] div.btn {
2267         line-height: 3;
2268         display: inline;
2269         padding: .3rem .6rem;
2270 }
2271
2272 [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
2273 [data-page="admin-system-opkg"] #maincontent > .container {
2274         margin-top: 2rem;
2275         padding-top: .1rem;
2276 }
2277
2278 [data-page="admin-system-opkg"] #maincontent > .container {
2279         margin: 2rem;
2280         margin-bottom: 1rem;
2281 }
2282
2283 .td.version,
2284 .td.size {
2285         white-space: normal !important;
2286         word-break: break-word;
2287 }
2288
2289 .cbi-tabmenu + .cbi-section {
2290         margin-top: 0;
2291 }
2292
2293 /* wireless overview */
2294 #cbi-wireless > #wifi_assoclist_table > .tr {
2295         box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd;
2296 }
2297
2298 #cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td {
2299         right: 33px;
2300         bottom: 33px;
2301         left: 33px;
2302         border-top: thin solid #ddd !important;
2303 }
2304
2305 #cbi-wireless > #wifi_assoclist_table > .tr.table-titles {
2306         box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd;
2307 }
2308
2309 #cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th {
2310         border-bottom: thin solid #ddd;
2311         box-shadow: 0 -1px 0 0 #ddd;
2312 }
2313
2314 #wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] {
2315         width: 23rem;
2316 }
2317
2318 /* firewall */
2319 #iptables {
2320         margin: 0;
2321 }
2322
2323 .Firewall form {
2324         margin: 2rem 2rem 0 0;
2325         padding: 0;
2326         box-shadow: none;
2327 }
2328
2329 #cbi-firewall-redirect table *,
2330 #cbi-network-switch_vlan table *,
2331 #cbi-firewall-zone table * {
2332         font-size: small;
2333 }
2334
2335 #cbi-firewall-redirect table input[type="text"],
2336 #cbi-network-switch_vlan table input[type="text"],
2337 #cbi-firewall-zone table input[type="text"] {
2338         width: 5rem;
2339 }
2340
2341 #cbi-firewall-redirect table select,
2342 #cbi-network-switch_vlan table select,
2343 #cbi-firewall-zone table select {
2344         min-width: 3.5rem;
2345 }
2346
2347 #cbi-network-switch_vlan .th,
2348 #cbi-network-switch_vlan .td {
2349         flex-basis: 12%;
2350 }
2351
2352 #cbi-firewall-zone .table,
2353 #cbi-network-switch_vlan .table {
2354         display: block;
2355 }
2356
2357 #cbi-firewall-zone .td,
2358 #cbi-network-switch_vlan .td {
2359         width: 100%;
2360 }
2361
2362 /* applyreboot fix */
2363 #applyreboot-container {
2364         margin: 2rem;
2365 }
2366
2367 #applyreboot-section {
2368         line-height: 300%;
2369         margin: 2rem;
2370 }
2371
2372 /* openvpn bug fix */
2373 .OpenVPN a {
2374         line-height: initial !important;
2375 }
2376
2377 /* custom commands */
2378 .commandbox {
2379         width: 24% !important;
2380         margin: 10px 0 0 10px !important;
2381         padding: .5rem 1rem;
2382         border-bottom: thin solid #ccc;
2383         background: #eee;
2384         box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
2385 }
2386
2387 .commandbox h3 {
2388         line-height: normal !important;
2389         overflow: hidden;
2390         margin: 6px 0 !important;
2391         white-space: nowrap;
2392         text-overflow: ellipsis;
2393 }
2394
2395 .commandbox div {
2396         left: auto !important;
2397 }
2398
2399 .commandbox code {
2400         position: absolute;
2401         overflow: hidden;
2402         max-width: 60%;
2403         margin-left: 4px;
2404         padding: 2px 3px;
2405         white-space: nowrap;
2406         text-overflow: ellipsis;
2407 }
2408
2409 .commandbox code:hover {
2410         overflow-y: auto;
2411         max-height: 50px;
2412         white-space: normal;
2413 }
2414
2415 .commandbox p:first-of-type {
2416         margin-top: -6px;
2417 }
2418
2419 .commandbox p:nth-of-type(2) {
2420         margin-top: 2px;
2421 }
2422
2423 [data-page^="admin-system-commands"] .panel-title,
2424 [data-page^="command-cfg"] .mobile-hide,
2425 [data-page^="command-cfg"] .showSide {
2426         display: none;
2427 }
2428
2429 #command-rc-output .alert-message {
2430         line-height: 1.42857143;
2431         position: absolute;
2432         top: 40px;
2433         right: 32px;
2434         max-width: 40%;
2435         margin: 0;
2436         animation: anim-fade-in 1.5s forwards;
2437         word-break: break-word;
2438         opacity: 0;
2439 }
2440
2441 @keyframes anim-fade-in {
2442         100% {
2443                 opacity: 1;
2444         }
2445 }
2446
2447 /* IE hacks */
2448 @media all and (-ms-high-contrast: none) {
2449         .main > .main-left > .nav > .slide > .menu::before {
2450                 top: 30.25%;
2451         }
2452
2453         .main > .main-left > .nav > li:last-child::before {
2454                 top: 20%;
2455         }
2456
2457         .showSide::before {
2458                 top: -12px;
2459         }
2460 }
2461
2462 @media screen and (max-width: 1600px) {
2463         header > .fill > .container > #logo {
2464                 margin: 0 2.5rem 0 .5rem;
2465         }
2466
2467         .main-left {
2468                 width: calc(0% + 13rem);
2469         }
2470
2471         .main-right {
2472                 width: calc(100% - 13rem);
2473         }
2474
2475         .btn:not(button),
2476         .cbi-button {
2477                 font-size: .8rem;
2478                 padding: .3rem .6rem;
2479         }
2480
2481         .label {
2482                 padding: .2rem .6rem;
2483         }
2484
2485         fieldset,
2486         .cbi-section {
2487                 padding: 1rem;
2488         }
2489
2490         .cbi-value-title {
2491                 width: 15rem;
2492                 padding-right: .6rem;
2493         }
2494
2495         .cbi-value-field .cbi-dropdown,
2496         .cbi-value-field .cbi-input-select,
2497         .cbi-value input[type="text"],
2498         .cbi-value input[type="password"] {
2499                 min-width: 22rem;
2500         }
2501
2502         #cbi-firewall-zone .cbi-input-select {
2503                 min-width: 9rem;
2504         }
2505
2506         .cbi-input-textarea {
2507                 font-size: small;
2508         }
2509
2510         .node-admin-status > .main fieldset li > a {
2511                 padding: .3rem .6rem;
2512         }
2513 }
2514
2515 @media screen and (max-width: 1366px) {
2516         header {
2517                 height: 3.5rem;
2518         }
2519
2520         header > .fill > .container {
2521                 margin-top: .25rem;
2522                 cursor: default;
2523         }
2524
2525         .main {
2526                 top: 3.5rem;
2527                 height: calc(100% - 3.5rem);
2528         }
2529
2530         .main-left {
2531                 top: 3.5rem;
2532                 width: calc(0% + 13rem);
2533                 height: calc(100% - 3.5rem);
2534         }
2535
2536         .main-right {
2537                 width: calc(100% - 13rem);
2538         }
2539
2540         .tabs > li > a,
2541         .cbi-tabmenu > li > a {
2542                 padding: .2rem .5rem;
2543         }
2544
2545         .panel-title {
2546                 font-size: 1.1rem;
2547                 padding-bottom: 1rem;
2548         }
2549
2550         table {
2551                 font-size: .7rem !important;
2552                 width: 100% !important;
2553         }
2554
2555         .table .cbi-input-text {
2556                 width: 100%;
2557         }
2558
2559         .cbi-value-field .cbi-dropdown,
2560         .cbi-value-field .cbi-input-select,
2561         .cbi-value input[type="text"],
2562         .cbi-value input[type="password"] {
2563                 min-width: 19rem;
2564         }
2565
2566         #cbi-firewall-zone .cbi-input-select {
2567                 min-width: 4rem;
2568         }
2569
2570         .main > .main-left > .nav > li,
2571         .main > .main-left > .nav > li a,
2572         .main > .main-left > .nav > .slide > .menu,
2573         .main > .main-left > .nav > li > [data-title="Logout"] {
2574                 font-size: .9rem;
2575         }
2576
2577         .main > .main-left > .nav > .slide > .slide-menu > li > a {
2578                 font-size: .7rem;
2579         }
2580
2581         #modal_overlay {
2582                 top: 3.5rem;
2583         }
2584
2585         [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) {
2586                 display: block;
2587         }
2588
2589         [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),
2590         [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),
2591         [data-page="admin-network-hosts"] .table,
2592         [data-page="admin-network-routes"] .table {
2593                 overflow-y: visible;
2594         }
2595
2596         .commandbox {
2597                 width: 32% !important;
2598         }
2599 }
2600
2601 @media screen and (max-width: 1152px) {
2602         header > .fill > .container > #logo {
2603                 display: none;
2604         }
2605
2606         header > .fill > .container > .brand {
2607                 position: relative;
2608         }
2609
2610         html,
2611         .main {
2612                 overflow-y: visible;
2613         }
2614
2615         .main > .loading > span {
2616                 top: 25%;
2617         }
2618
2619         .main-left {
2620                 position: fixed;
2621                 z-index: 100;
2622                 width: 0;
2623         }
2624
2625         .main-right {
2626                 width: 100%;
2627         }
2628
2629         .showSide {
2630                 position: relative;
2631                 top: .18rem;
2632                 display: inline-flex;
2633                 align-items: center;
2634                 width: 1.6rem;
2635                 height: 1.6rem;
2636                 margin-right: .7rem;
2637                 cursor: pointer;
2638         }
2639
2640         .showSide::before {
2641                 position: absolute;
2642                 left: 1px;
2643                 width: 24px;
2644                 height: 24px;
2645                 content: "";
2646                 background: url(./icons/menu.svg) no-repeat center;
2647         }
2648
2649         body:not(.logged-in) .showSide {
2650                 visibility: hidden;
2651                 width: 0;
2652                 margin: 0;
2653         }
2654
2655         .node-main-login > .main .cbi-value-title {
2656                 text-align: left;
2657         }
2658
2659         .cbi-value-title {
2660                 width: 12rem;
2661                 padding-right: 1rem;
2662         }
2663
2664         .cbi-value-field .cbi-dropdown,
2665         .cbi-value-field .cbi-input-select,
2666         .cbi-value input[type="text"] {
2667                 width: 16rem;
2668                 min-width: 16rem;
2669         }
2670
2671         .cbi-value input[type="password"],
2672         .cbi-value input[name^="pw"],
2673         .cbi-value input[data-update="change"]:nth-child(2) {
2674                 width: 13rem !important;
2675                 min-width: 13rem;
2676         }
2677
2678         #diag-rc-output > pre,
2679         #command-rc-output > pre,
2680         [data-page="admin-services-wol"] .notice code {
2681                 font-size: 1rem;
2682         }
2683
2684         .table {
2685                 display: block;
2686         }
2687
2688         .Interfaces .table {
2689                 overflow-x: hidden;
2690         }
2691
2692         #packages.table {
2693                 display: grid;
2694         }
2695
2696         .tr {
2697                 display: flex;
2698                 flex-direction: row;
2699                 flex-wrap: wrap;
2700         }
2701
2702         .Overview .table[width="100%"] > .tr {
2703                 flex-wrap: nowrap;
2704         }
2705
2706         .tr.placeholder {
2707                 border-bottom: thin solid #ddd;
2708         }
2709
2710         .tr.placeholder > .td,
2711         #cbi-firewall .tr > .td,
2712         #cbi-network .tr:nth-child(2) > .td,
2713         .cbi-section #wifi_assoclist_table .tr > .td {
2714                 border-top: 0;
2715         }
2716
2717         .th,
2718         .td {
2719                 display: inline-block;
2720                 align-self: flex-start;
2721                 flex: 2 2 25%;
2722                 text-overflow: ellipsis;
2723                 word-wrap: break-word;
2724         }
2725
2726         .td select,
2727         .td input[type="text"] {
2728                 width: 100%;
2729                 word-wrap: normal;
2730         }
2731
2732         .td [data-dynlist] > input,
2733         .td input.cbi-input-password {
2734                 width: calc(100% - 1.5rem);
2735         }
2736
2737         .td[data-type="button"],
2738         .td[data-type="fvalue"] {
2739                 flex: 1 1 12.5%;
2740                 text-align: left;
2741         }
2742
2743         .th.cbi-value-field,
2744         .td.cbi-value-field,
2745         .th.cbi-section-table-cell,
2746         .td.cbi-section-table-cell {
2747                 flex-basis: auto;
2748                 padding-top: 1rem;
2749         }
2750
2751         .cbi-section-table-row {
2752                 display: flex;
2753                 flex-direction: row;
2754                 flex-wrap: wrap;
2755                 justify-content: space-between;
2756                 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2757         }
2758
2759         .td.cbi-value-field,
2760         .cbi-section-table-cell {
2761                 display: inline-block;
2762                 flex: 10 10 auto;
2763                 flex-basis: 50%;
2764                 text-align: center;
2765         }
2766
2767         .td.cbi-section-actions {
2768                 vertical-align: bottom;
2769         }
2770
2771         .tr.table-titles,
2772         .tr.cbi-section-table-titles,
2773         .tr.cbi-section-table-descr {
2774                 display: none;
2775         }
2776
2777         .tr[data-title]::before,
2778         .tr.cbi-section-table-titles.named::before {
2779                 font-size: .9rem;
2780                 display: block;
2781                 flex: 1 1 100%;
2782                 border-bottom: thin solid rgba(0, 0, 0, .26);
2783                 background: #90c0e0;
2784         }
2785
2786         .td[data-title],
2787         [data-page^="admin-status-realtime"] .td[id] {
2788                 text-align: left;
2789         }
2790
2791         .td[data-title]::before {
2792                 display: block;
2793         }
2794
2795         .cbi-button + .cbi-button {
2796                 margin-left: 0;
2797         }
2798
2799         .td.cbi-section-actions > * > *,
2800         .td.cbi-section-actions > * > form > * {
2801                 margin: 2.1px 3px;
2802         }
2803
2804         .Firewall form {
2805                 position: static !important;
2806                 margin: 0 0 2rem 0;
2807                 padding: 2rem;
2808                 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2809         }
2810
2811         .Firewall form input {
2812                 width: 100% !important;
2813                 margin: 0;
2814                 margin-top: 1rem;
2815         }
2816
2817         .Firewall .center,
2818         .Firewall .center::before {
2819                 text-align: left !important;
2820         }
2821
2822         .commandbox {
2823                 width: 100% !important;
2824                 margin-left: 0 !important;
2825         }
2826 }
2827
2828 @media screen and (max-width: 600px) {
2829         body {
2830                 font-size: .8rem;
2831         }
2832
2833         .cbi-progressbar::after {
2834                 font-size: .95em;
2835                 line-height: 1.5;
2836         }
2837
2838         fieldset,
2839         .cbi-section {
2840                 margin: 1rem 0 0 0;
2841         }
2842
2843         .tabs {
2844                 margin: 0 -1rem;
2845         }
2846
2847         #maincontent > .container {
2848                 margin: 0 1rem 1.5rem 1rem;
2849         }
2850
2851         .main > .main-left > .nav > .slide > .menu,
2852         .main > .main-left > .nav > li > [data-title="Logout"] {
2853                 font-size: 1.2rem;
2854         }
2855
2856         .main > .main-left > .nav > .slide > .slide-menu > li > a {
2857                 font-size: 1rem;
2858         }
2859
2860         .cbi-value-title {
2861                 display: block;
2862                 min-width: 0 !important;
2863                 margin: .5rem 0;
2864                 text-align: left;
2865         }
2866
2867         .cbi-value-title,
2868         .cbi-value-description,
2869         .cbi-value-field,
2870         .cbi-value-field .cbi-dropdown,
2871         .cbi-value-field .cbi-input-select,
2872         .cbi-value input[type="text"] {
2873                 width: 100%;
2874         }
2875
2876         .cbi-value > .cbi-value-field {
2877                 display: inline-block;
2878         }
2879
2880         .tabs > li > a,
2881         .cbi-tabmenu > li > a {
2882                 font-size: .9rem;
2883                 padding: .2rem .3rem;
2884         }
2885
2886         .cbi-page-actions > div > input {
2887                 display: none;
2888         }
2889
2890         .cbi-page-actions > .cbi-button {
2891                 margin-top: .2rem;
2892         }
2893
2894         .node-main-login > .main .container {
2895                 margin: 2rem 1.2rem 1.5rem 1.2rem !important;
2896                 padding: .3rem 1.7rem 2rem 1.6rem;
2897         }
2898
2899         .node-main-login > .main .cbi-value {
2900                 padding: 0;
2901         }
2902
2903         .node-main-login > .main form > div:last-child {
2904                 margin-top: 2rem;
2905         }
2906
2907         .node-main-login > .main .cbi-value-title {
2908                 font-size: 1.2rem;
2909                 width: 100% !important;
2910         }
2911
2912         .node-main-login > .main fieldset {
2913                 margin: 0;
2914                 padding: .5rem;
2915         }
2916
2917         .commandbox p:first-of-type {
2918                 margin-top: -8px;
2919         }
2920
2921         #syslog,
2922         #diag-rc-output > pre,
2923         #command-rc-output > pre,
2924         [data-page="admin-services-wol"] .notice code {
2925                 font-size: .8rem !important;
2926         }
2927
2928         h2 {
2929                 font-size: 2rem;
2930         }
2931
2932         .tabs > li > a {
2933                 font-size: .9rem;
2934         }
2935
2936         select,
2937         input {
2938                 font-size: .9rem;
2939         }
2940
2941         code {
2942                 font-size: .8rem;
2943         }
2944
2945         .mobile-hide {
2946                 display: none;
2947         }
2948
2949         .panel-title {
2950                 font-size: 1.4rem;
2951                 padding-bottom: 1rem;
2952         }
2953
2954         .node-system-packages > .main .cbi-value.cbi-value-last > div {
2955                 width: 100% !important;
2956         }
2957
2958         .node-system-packages > .main .cbi-value .cbi-value-field input {
2959                 width: 100%;
2960         }
2961
2962         .th,
2963         .td {
2964                 flex-basis: 50%;
2965         }
2966
2967         .td.cbi-value-field {
2968                 flex-basis: 100%;
2969         }
2970
2971         .td.cbi-value-field[data-type="button"],
2972         .td.cbi-value-field[data-type="fvalue"] {
2973                 flex-basis: 25%;
2974                 text-align: left;
2975         }
2976
2977         .tr[data-title]::before,
2978         .tr.cbi-section-table-titles.named::before {
2979                 font-size: 1rem;
2980         }
2981
2982         td > .ifacebadge,
2983         .td > .ifacebadge {
2984                 font-size: .62rem;
2985         }
2986
2987         #cbi-wireless > #wifi_assoclist_table .td {
2988                 overflow: hidden;
2989         }
2990
2991         #cbi-wireless > .cbi-section-node .td,
2992         .Interfaces .td.cbi-section-actions {
2993                 text-align: center !important;
2994         }
2995
2996         [data-page="admin-status-processes"] .td[data-title="Hang Up"]::before,
2997         [data-page="admin-status-processes"] .td[data-title="Terminate"]::before,
2998         [data-page="admin-status-processes"] .td[data-title="Kill"]::before {
2999                 display: none;
3000         }
3001
3002         .hide-sm,
3003         .hide-xs:not([data-title="MAC-Address"]) {
3004                 display: none;
3005         }
3006 }
3007
3008 @media screen and (min-width: 600px) {
3009         ::-webkit-scrollbar {
3010                 width: 10px;
3011                 height: 10px;
3012         }
3013
3014         ::-webkit-scrollbar,
3015         ::-webkit-scrollbar-corner {
3016                 background: transparent;
3017         }
3018
3019         ::-webkit-scrollbar-thumb {
3020                 background: #9e9e9e;
3021         }
3022
3023         ::-webkit-scrollbar-thumb:hover {
3024                 background: #757575;
3025         }
3026
3027         ::-webkit-scrollbar-thumb:active {
3028                 background: #424242;
3029         }
3030 }