luci-theme-material: show logo also on login page
[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-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
693 [data-page="admin-system-opkg"] #maincontent > .container {
694         font-family: inherit;
695         font-weight: normal;
696         font-style: normal;
697         line-height: normal;
698         min-width: inherit;
699         margin: 1rem 0 0 0;
700         padding: 2rem;
701         border: 0;
702         border-radius: 0;
703         background-color: #fff;
704         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
705 }
706
707 .cbi-map-descr,
708 .cbi-section-descr {
709         font-size: small;
710         line-height: 1.42857143;
711         padding: .5rem;
712         color: #999;
713 }
714
715 .cbi-map-descr + fieldset {
716         margin-top: 1rem;
717 }
718
719 .cbi-section > legend {
720         display: none !important;
721 }
722
723 fieldset > fieldset,
724 .cbi-section > .cbi-section {
725         margin: 0;
726         padding: 0;
727         border: 0;
728         box-shadow: none;
729 }
730
731 .cbi-section > h3:first-child,
732 .panel-title {
733         font-size: 1.4rem;
734         line-height: 1;
735         display: block;
736         width: 100%;
737         margin: 0;
738         margin-bottom: .5rem;
739         padding-bottom: 1rem;
740         color: #404040;
741         border-bottom: thin solid #eee;
742 }
743
744 table {
745         border-spacing: 0;
746         border-collapse: collapse;
747 }
748
749 table,
750 .table {
751         overflow-y: hidden;
752         width: 100%;
753         box-shadow: 0 0 0 1px #ddd;
754 }
755
756 table > tbody > tr > td,
757 table > tbody > tr > th,
758 table > tfoot > tr > td,
759 table > tfoot > tr > th,
760 table > thead > tr > td,
761 table > thead > tr > th,
762 .table > .tbody > .tr > .td,
763 .table > .tbody > .tr > .th,
764 .table > .tfoot > .tr > .td,
765 .table > .tfoot > .tr > .th,
766 .table > .thead > .tr > .td,
767 .table > .thead > .tr > .th,
768 .table > .tr > .td.cbi-value-field,
769 .table > .tr > .th.cbi-section-table-cell {
770         padding: .5rem;
771 }
772
773 .container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td {
774         padding: .6rem;
775 }
776
777 .cbi-section-table-cell {
778         line-height: 1.1;
779         align-self: flex-end;
780         flex: 1 1 auto;
781 }
782
783 tr > td,
784 tr > th,
785 .tr > .td,
786 .tr > .th,
787 .cbi-section-table-row::before,
788 #cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) {
789         border-top: thin solid #ddd;
790 }
791
792 #cbi-wireless .td,
793 #cbi-network .tr:first-child > .td,
794 .table[width="100%"] > .tr:first-child > .td,
795 [data-page="admin-network-diagnostics"] .tr > .td,
796 .tr.table-titles > .th,
797 .tr.cbi-section-table-titles > .th {
798         border-top: 0 !important;
799 }
800
801 .table[width="100%"] > .tr:first-child > .td {
802         margin: auto 0;
803 }
804
805 .cbi-section-table-row {
806         margin-bottom: 1rem;
807         text-align: center !important;
808         background: #f4f4f4;
809 }
810
811 .cbi-section-table-row:last-child {
812         margin-bottom: 0;
813 }
814
815 .cbi-section-table-row > .cbi-value-field .cbi-dropdown,
816 .cbi-section-table-row > .cbi-value-field .cbi-input-select,
817 .cbi-section-table-row > .cbi-value-field .cbi-input-text,
818 .cbi-section-table-row > .cbi-value-field .cbi-input-password {
819         width: 100%;
820 }
821
822 .cbi-section-table-row > .cbi-value-field [data-dynlist] > input,
823 .cbi-section-table-row > .cbi-value-field input.cbi-input-password {
824         width: calc(100% - 1.5rem);
825 }
826
827 .cbi-section-table-row .td {
828         text-align: center !important;
829 }
830
831 div > table > tbody > tr:nth-of-type(2n),
832 div > .table > .tr:nth-of-type(2n) {
833         background-color: #f9f9f9;
834 }
835
836 /* fix multiple table */
837 table table,
838 .table .table,
839 .cbi-value-field table,
840 .cbi-value-field .table,
841 td > table > tbody > tr > td,
842 .td > .table > .tbody > .tr > .td,
843 .cbi-value-field > table > tbody > tr > td,
844 .cbi-value-field > .table > .tbody > .tr > .td {
845         border: 0;
846 }
847
848 /* button style */
849 .btn,
850 .cbi-button,
851 .item::after {
852         font-size: .8rem;
853         display: inline-block;
854         width: auto !important;
855         padding: 0 .8rem;
856         cursor: pointer;
857         -webkit-user-select: none;
858         -moz-user-select: none;
859         -ms-user-select: none;
860         user-select: none;
861         transition: all .2s ease-in-out;
862         text-align: center;
863         vertical-align: middle;
864         white-space: nowrap;
865         text-decoration: none;
866         text-transform: uppercase;
867         color: rgba(0, 0, 0, .87);
868         border: 0;
869         border-radius: .2rem;
870         background-color: #f0f0f0;
871         background-image: none;
872         -webkit-appearance: none;
873         -ms-touch-action: manipulation;
874         touch-action: manipulation;
875 }
876
877 .cbi-button-up,
878 .cbi-button-down {
879         font-size: 1.2rem;
880         display: inline-block;
881         min-width: 0;
882         padding: .2rem .3rem;
883         color: transparent !important;
884         background: url(./icons/arrow.svg) no-repeat center;
885         background-size: 12px 20px;
886 }
887
888 .cbi-button-up {
889         transform: scaleY(-1);
890 }
891
892 .cbi-button:not(select) {
893         -webkit-appearance: none !important;
894 }
895
896 .cbi-button + .cbi-button {
897         margin-left: .6rem;
898 }
899
900 .btn:hover,
901 .btn:focus,
902 .btn:active,
903 .cbi-button:hover,
904 .cbi-button:focus,
905 .cbi-button:active,
906 .item:hover::after,
907 .item:focus::after,
908 .item:active::after,
909 .cbi-page-actions .cbi-button-apply + .cbi-button-save:hover,
910 .cbi-page-actions .cbi-button-apply + .cbi-button-save:focus,
911 .cbi-page-actions .cbi-button-apply + .cbi-button-save:active {
912         text-decoration: none;
913         outline: 0;
914 }
915
916 .btn:hover,
917 .btn:focus,
918 .cbi-button:hover,
919 .cbi-button:focus,
920 .item:hover::after,
921 .item:focus::after {
922         box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2);
923 }
924
925 .btn:active,
926 .cbi-button:active,
927 .item:active::after {
928         box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
929 }
930
931 .cbi-button-up:hover,
932 .cbi-button-up:focus {
933         box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2);
934 }
935
936 .cbi-button-up:active {
937         box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23);
938 }
939
940 .btn:disabled,
941 .cbi-button:disabled {
942         cursor: not-allowed;
943         pointer-events: none;
944         opacity: .5;
945         box-shadow: none;
946 }
947
948 /* gray */
949 .alert-message [class="btn"],
950 .modal div[class="btn"],
951 .cbi-button-find,
952 .cbi-button-link,
953 .cbi-button-up,
954 .cbi-button-down,
955 .cbi-button-neutral,
956 .cbi-button[name="zero"],
957 .cbi-button[name="restart"],
958 .cbi-button[onclick="hide_empty(this)"] {
959         font-weight: bold;
960         border: thin solid #bfbfbf;
961         background-color: #d4d4d4;
962 }
963
964 /* dark blue */
965 .btn.primary,
966 .cbi-page-actions .cbi-button-save,
967 .cbi-page-actions .cbi-button-apply + .cbi-button-save,
968 .cbi-button-add,
969 .cbi-button-save,
970 .cbi-button-positive,
971 .cbi-button-link,
972 .cbi-button[value="Enable"],
973 .cbi-button[value="Scan"],
974 .cbi-button[value^="Back"],
975 .cbi-button-neutral[onclick="handleConfig(event)"] {
976         font-weight: normal;
977         color: #fff;
978         border: thin solid #2e6da4;
979         background-color: #337ab7;
980 }
981
982 /* light blue */
983 .cbi-page-actions .cbi-button-apply,
984 .cbi-section-actions .cbi-button-edit,
985 .cbi-button-edit,
986 .cbi-button-apply,
987 .cbi-button-reload,
988 .cbi-button-action,
989 .cbi-button[value="Submit"],
990 .cbi-button[value="Upload"],
991 .cbi-button[value$="Apply"],
992 .cbi-button[onclick="addKey(event)"] {
993         font-weight: normal;
994         color: #fff;
995         border: thin solid #46b8da;
996         background-color: #5bc0de;
997 }
998
999 /* red */
1000 .btn.danger,
1001 .cbi-section-remove > .cbi-button,
1002 .cbi-button-remove,
1003 .cbi-button-reset,
1004 .cbi-button-negative,
1005 .cbi-button[value="Stop"],
1006 .cbi-button[value="Kill"],
1007 .cbi-button[onclick="reboot(this)"],
1008 .cbi-button-neutral[value="Restart"] {
1009         font-weight: normal;
1010         color: #fff;
1011         border: thin solid #d43f3a;
1012         background-color: #d9534f;
1013 }
1014
1015 /* yellow */
1016 .btn[value="Dismiss"],
1017 .cbi-button[value="Terminate"],
1018 .cbi-button[value="Reset"],
1019 .cbi-button[value="Disabled"],
1020 .cbi-button[onclick^="iface_reconnect"],
1021 .cbi-button[onclick="handleReset(event)"],
1022 .cbi-button-neutral[value="Disable"] {
1023         font-weight: normal;
1024         color: #fff;
1025         border: thin solid #eea236;
1026         background-color: #f0ad4e;
1027 }
1028
1029 /* green */
1030 .cbi-button-success,
1031 .cbi-button-download,
1032 .cbi-button[name="backup"],
1033 .cbi-button[value="Download"],
1034 .cbi-button[value="Save mtdblock"] {
1035         font-weight: normal;
1036         color: #fff;
1037         border: thin solid #4cae4c;
1038         background-color: #5cb85c;
1039 }
1040
1041 .cbi-page-actions .cbi-button-link:first-child {
1042         float: left;
1043 }
1044
1045 .a-to-btn {
1046         text-decoration: none;
1047 }
1048
1049 .cbi-value-field .cbi-button-add {
1050         font-weight: bold;
1051         margin: 9px 0 4px 3px;
1052         padding: 1px 6px;
1053 }
1054
1055 .tabs {
1056         margin: 0 -2rem;
1057         padding-left: .5rem;
1058         background-color: #fff;
1059 }
1060
1061 .tabs > li,
1062 .cbi-tabmenu > li {
1063         display: inline-block;
1064         padding: .55rem 0;
1065         cursor: pointer;
1066 }
1067
1068 .tabs > li {
1069         padding-bottom: .4rem;
1070         border-bottom: .2rem solid transparent;
1071 }
1072
1073 .tabs > li[class~="active"],
1074 .tabs > li:hover {
1075         border-bottom-color: #09c;
1076         border-bottom-color: var(--main-color);
1077 }
1078
1079 .tabs > li:hover {
1080         cursor: pointer;
1081         border-bottom-color: #c9c9c9;
1082 }
1083
1084 .tabs > li > a,
1085 .cbi-tabmenu > li > a {
1086         padding: .6rem .9rem;
1087         text-decoration: none;
1088         color: #404040;
1089 }
1090
1091 .tabs > li[class~="active"] > a {
1092         color: #09c;
1093         color: var(--main-color);
1094 }
1095
1096 .cbi-tabmenu {
1097         border: thin solid #d4d4d4;
1098         border-bottom: 0;
1099 }
1100
1101 .cbi-tabmenu > li:hover {
1102         background-color: #f1f1f1;
1103 }
1104
1105 .cbi-tabmenu > li[class~="cbi-tab"] {
1106         background-color: #fff;
1107 }
1108
1109 .cbi-tabmenu {
1110         background-color: #d4d4d4;
1111 }
1112
1113 .cbi-section .cbi-section-remove:nth-of-type(2n),
1114 .container > .cbi-section .cbi-section-node:nth-of-type(2n) {
1115         background-color: #f9f9f9;
1116 }
1117
1118 [data-tab-title] {
1119         overflow: hidden;
1120         height: 0;
1121         opacity: 0;
1122 }
1123
1124 [data-tab-active="true"] {
1125         overflow: visible;
1126         height: auto;
1127         opacity: 1;
1128         transition: opacity .25s ease-in;
1129 }
1130
1131 .cbi-section[id] .cbi-section-remove:nth-of-type(4n+3),
1132 .cbi-section[id] .cbi-section-node:nth-of-type(4n+4) {
1133         background-color: #f9f9f9;
1134 }
1135
1136 .cbi-section-node-tabbed {
1137         margin-top: 0;
1138         padding: 0;
1139         border: thin solid #d4d4d4;
1140         border-top: 0;
1141 }
1142
1143 .cbi-tabcontainer > .cbi-value:nth-of-type(2n) {
1144         background-color: #f9f9f9;
1145 }
1146
1147 .cbi-value-field,
1148 .cbi-value-description {
1149         line-height: 1.25;
1150         display: table-cell;
1151 }
1152
1153 .cbi-value-description {
1154         font-size: small;
1155         padding-top: .4rem;
1156         opacity: .5;
1157 }
1158
1159 .cbi-value-title {
1160         display: table-cell;
1161         float: left;
1162         width: 23rem;
1163         padding-top: .35rem;
1164         padding-right: 2rem;
1165         text-align: right;
1166         word-wrap: break-word;
1167 }
1168
1169 .cbi-value {
1170         display: inline-block;
1171         width: 100%;
1172         padding: .35rem 1rem .2rem 1rem;
1173 }
1174
1175 .cbi-value ul {
1176         line-height: 1.25;
1177 }
1178
1179 .cbi-value-field .cbi-dropdown,
1180 .cbi-value-field .cbi-input-select,
1181 .cbi-value input[type="text"],
1182 .cbi-value input[type="password"] {
1183         min-width: 25rem;
1184 }
1185
1186 #cbi-firewall-zone .cbi-input-select,
1187 #cbi-network-switch_vlan .cbi-input-select {
1188         min-width: 11rem;
1189 }
1190
1191 #cbi-network-switch_vlan .cbi-input-text {
1192         max-width: 3rem;
1193 }
1194
1195 .cbi-input-invalid {
1196         color: #f00;
1197         border-bottom-color: #f00;
1198 }
1199
1200 .cbi-section-error {
1201         font-weight: bold;
1202         line-height: 1.42857143;
1203         margin: 18px;
1204         padding: 6px;
1205         border: thin solid #f00;
1206         border-radius: 3px;
1207         background-color: #fce6e6;
1208 }
1209
1210 .cbi-section-error ul {
1211         margin: 0 0 0 20px;
1212 }
1213
1214 .cbi-section-error ul li {
1215         font-weight: bold;
1216         color: #f00;
1217 }
1218
1219 .td[data-title]::before {
1220         font-weight: bold;
1221         display: none;
1222         padding: .25rem 0;
1223         content: attr(data-title) ":\20";
1224         text-align: left;
1225         white-space: nowrap;
1226 }
1227
1228 .tr.placeholder .td[data-title]::before {
1229         display: none;
1230 }
1231
1232 .tr[data-title]::before,
1233 .tr.cbi-section-table-titles.named::before {
1234         font-weight: bold;
1235         display: table-cell;
1236         align-self: center;
1237         flex: 1 1 5%;
1238         padding: .25rem;
1239         content: attr(data-title) "\20";
1240         text-align: center;
1241         vertical-align: middle;
1242         white-space: normal;
1243         word-wrap: break-word;
1244 }
1245
1246 .cbi-rowstyle-1 {
1247         background-color: #f9f9f9;
1248 }
1249
1250 .cbi-rowstyle-2 {
1251         background-color: #eee;
1252 }
1253
1254 .cbi-rowstyle-2 .cbi-button-up,
1255 .cbi-rowstyle-2 .cbi-button-down,
1256 body:not(.Interfaces) .cbi-rowstyle-2:first-child {
1257         background-color: #fff !important;
1258 }
1259
1260 .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell {
1261         width: auto !important;
1262 }
1263
1264 .td.cbi-section-actions {
1265         text-align: right !important;
1266         vertical-align: middle;
1267 }
1268
1269 .td.cbi-section-actions > * {
1270         display: inline-flex;
1271 }
1272
1273 .td.cbi-section-actions > * > *,
1274 .td.cbi-section-actions > * > form > * {
1275         margin: 0 5px;
1276 }
1277
1278 .td.cbi-section-actions > * > form {
1279         display: inline-flex;
1280         margin: 0;
1281 }
1282
1283 /* lists */
1284 .cbi-dynlist {
1285         line-height: 1.3;
1286         flex-direction: column;
1287         min-height: 30px;
1288         cursor: text;
1289 }
1290
1291 .cbi-dynlist > .item {
1292         position: relative;
1293         max-width: 25rem;
1294         margin-right: 2em;
1295         padding: .5em .25em .25em 0;
1296         pointer-events: none;
1297         color: #666;
1298         border-bottom: 2px solid rgba(0, 0, 0, .26);
1299         outline: 0;
1300 }
1301
1302 .cbi-dynlist[name="sshkeys"] > .item {
1303         max-width: none;
1304 }
1305
1306 .cbi-dynlist > .item::after {
1307         font-weight: bold;
1308         position: absolute;
1309         right: -2em;
1310         bottom: 0;
1311         display: inline-flex;
1312         min-height: 17px;
1313         padding: 0 6px;
1314         content: "\00D7";
1315         pointer-events: auto;
1316         color: #fff;
1317         border: thin solid #d43f3a;
1318         background-color: #d9534f;
1319 }
1320
1321 .cbi-dynlist > .item > span {
1322         white-space: normal;
1323         word-break: break-word;
1324 }
1325
1326 .cbi-dynlist > .add-item {
1327         display: inline-flex;
1328         align-items: center;
1329         width: 100%;
1330         min-width: 16rem;
1331 }
1332
1333 .cbi-dynlist > .add-item:not([ondrop]) > input {
1334         overflow: hidden;
1335         width: 100%;
1336         min-width: 15rem;
1337         white-space: nowrap;
1338         text-overflow: ellipsis;
1339 }
1340
1341 .cbi-dynlist > .add-item[ondrop] > input {
1342         min-width: 13rem;
1343 }
1344
1345 .cbi-dynlist,
1346 .cbi-dropdown {
1347         position: relative;
1348         display: inline-flex;
1349         padding: 0;
1350 }
1351
1352 .cbi-dropdown[placeholder*="select"] {
1353         max-width: 25rem;
1354         height: auto;
1355         margin-top: -3px;
1356 }
1357
1358 .cbi-dropdown > ul {
1359         display: flex;
1360         overflow-x: hidden;
1361         overflow-y: auto;
1362         width: 100%;
1363         margin: 0 !important;
1364         padding: 0;
1365         list-style: none;
1366         outline: 0;
1367 }
1368
1369 .cbi-dropdown > ul.preview {
1370         display: none;
1371 }
1372
1373 .cbi-dropdown > .open {
1374         flex-basis: 15px;
1375 }
1376
1377 .cbi-dropdown > .open,
1378 .cbi-dropdown > .more {
1379         font-size: 1rem;
1380         font-weight: 900;
1381         line-height: 2;
1382         display: flex;
1383         flex-direction: column;
1384         flex-grow: 0;
1385         flex-shrink: 0;
1386         justify-content: center;
1387         padding: 0 .25em;
1388         cursor: default;
1389         text-align: center;
1390         outline: 0;
1391 }
1392
1393 .cbi-dropdown > .more,
1394 .cbi-dropdown > ul > li[placeholder] {
1395         font-weight: bold;
1396         display: none;
1397         color: #777;
1398         text-shadow: 1px 1px 0 #fff;
1399 }
1400
1401 .cbi-dropdown > ul > li {
1402         display: none;
1403         overflow: hidden;
1404         align-items: center;
1405         align-self: center;
1406         flex-grow: 1;
1407         flex-shrink: 1;
1408         min-height: 20px;
1409         padding: .25em;
1410         white-space: nowrap;
1411         text-overflow: ellipsis;
1412 }
1413
1414 .cbi-dropdown > ul > li .hide-open {
1415         display: initial;
1416 }
1417
1418 .cbi-dropdown > ul > li .hide-close {
1419         display: none;
1420 }
1421
1422 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1423         border-left: thin solid #ccc;
1424 }
1425
1426 .cbi-dropdown[empty] > ul {
1427         max-width: 1px;
1428 }
1429
1430 .cbi-dropdown > ul > li > form {
1431         display: none;
1432         margin: 0;
1433         padding: 0;
1434         pointer-events: none;
1435 }
1436
1437 .cbi-dropdown > ul > li img {
1438         margin-right: .25em;
1439         vertical-align: middle;
1440 }
1441
1442 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1443         height: auto;
1444         margin: 0;
1445 }
1446
1447 .cbi-dropdown > ul > li input[type="text"] {
1448         height: 20px;
1449 }
1450
1451 .cbi-dropdown[open] > ul.dropdown {
1452         position: absolute;
1453         z-index: 1100;
1454         display: block;
1455         width: auto;
1456         min-width: 100%;
1457         max-width: none;
1458         max-height: 200px !important;
1459         border: thin solid #918e8c;
1460         background: #f6f6f6;
1461         box-shadow: 0 0 4px #918e8c;
1462 }
1463
1464 .cbi-dropdown > ul > li[display],
1465 .cbi-dropdown[open] > ul.preview,
1466 .cbi-dropdown[open] > ul.dropdown > li,
1467 .cbi-dropdown[multiple] > ul > li > label,
1468 .cbi-dropdown[multiple][open] > ul.dropdown > li,
1469 .cbi-dropdown[multiple][more] > .more,
1470 .cbi-dropdown[multiple][empty] > .more {
1471         display: flex;
1472         align-items: center;
1473         flex-grow: 1;
1474 }
1475
1476 .cbi-dropdown[empty] > ul > li,
1477 .cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
1478 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1479         display: block;
1480 }
1481
1482 .cbi-dropdown[open] > ul.dropdown > li .hide-open {
1483         display: none;
1484 }
1485
1486 .cbi-dropdown[open] > ul.dropdown > li .hide-close {
1487         display: initial;
1488 }
1489
1490 .cbi-dropdown[open] > ul.dropdown > li {
1491         border-bottom: thin solid #ccc;
1492 }
1493
1494 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1495         background: #b0d0f0;
1496 }
1497
1498 .cbi-dropdown[open] > ul.dropdown > li.focus {
1499         background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
1500 }
1501
1502 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1503         margin-bottom: 0;
1504         border-bottom: 0;
1505 }
1506
1507 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1508         opacity: .7;
1509 }
1510
1511 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1512         width: 100%;
1513 }
1514
1515 .cbi-dropdown[disabled] {
1516         pointer-events: none;
1517         opacity: .6;
1518 }
1519
1520 .cbi-dropdown .zonebadge {
1521         width: 100%;
1522 }
1523
1524 .cbi-dropdown[open] .zonebadge {
1525         width: auto;
1526 }
1527
1528 /* progressbar */
1529 .cbi-progressbar {
1530         position: relative;
1531         min-width: 170px;
1532         height: 20px;
1533         margin: 6px 0;
1534         border: thin solid #999;
1535         background: #eee;
1536 }
1537
1538 .cbi-progressbar > div {
1539         width: 0;
1540         height: 100%;
1541         transition: width .25s ease-in;
1542         background: #5bc0de;
1543         background: var(--bar-bg);
1544 }
1545
1546 .cbi-progressbar::after {
1547         font-family: monospace;
1548         font-size: 1.3em;
1549         font-weight: bold;
1550         font-size-adjust: .38;
1551         line-height: normal;
1552         position: absolute;
1553         top: 2px;
1554         right: 0;
1555         bottom: 2px;
1556         left: 0;
1557         overflow: hidden;
1558         content: attr(title);
1559         text-align: center;
1560         white-space: pre;
1561         text-overflow: ellipsis;
1562         text-shadow: 0 0 2px #eee;
1563 }
1564
1565 #modal_overlay {
1566         position: fixed;
1567         z-index: 900;
1568         top: 4rem;
1569         right: 10000px;
1570         bottom: 0;
1571         left: -10000px;
1572         overflow-y: scroll;
1573         transition: opacity .125s ease-in;
1574         opacity: 0;
1575         background: rgba(0, 0, 0, .7);
1576         -webkit-overflow-scrolling: touch;
1577 }
1578
1579 .modal {
1580         display: flex;
1581         align-items: center;
1582         flex-wrap: wrap;
1583         width: 90%;
1584         min-width: 270px;
1585         max-width: 600px;
1586         min-height: 32px;
1587         max-height: 2400px;
1588         margin: 5em auto;
1589         padding: 1em;
1590         border-radius: 3px !important;
1591         background: #fff;
1592         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1593 }
1594
1595 .modal > * {
1596         line-height: normal;
1597         flex-basis: 100%;
1598 }
1599
1600 .modal > pre,
1601 .modal > textarea {
1602         font-size: 1rem;
1603         font-size-adjust: .35;
1604         overflow: auto;
1605         margin-bottom: .5em;
1606         padding: 8.5px;
1607         cursor: auto;
1608         white-space: pre-wrap;
1609         color: #eee;
1610         outline: 0;
1611         background-color: #101010;
1612         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1613 }
1614
1615 .modal > h4 {
1616         margin: .5em 0;
1617 }
1618
1619 .modal ul {
1620         margin-left: 2.2em;
1621 }
1622
1623 .modal li {
1624         list-style-type: square;
1625         color: #808080;
1626 }
1627
1628 .modal p {
1629         padding-left: .25rem;
1630         word-break: break-word;
1631 }
1632
1633 .modal .label {
1634         font-size: .6rem;
1635         font-weight: normal;
1636         padding: .1rem .3rem;
1637         padding-bottom: 0;
1638         cursor: default;
1639         border-radius: 0;
1640 }
1641
1642 .modal .label.warning {
1643         background-color: #f0ad4e !important;
1644 }
1645
1646 .modal .btn {
1647         padding: .3rem .6rem;
1648 }
1649
1650 .modal .spinning {
1651         margin-bottom: 2em;
1652 }
1653
1654 body.modal-overlay-active {
1655         overflow: hidden;
1656         height: 100vh;
1657 }
1658
1659 body.modal-overlay-active #modal_overlay {
1660         right: 0;
1661         left: 0;
1662         opacity: 1;
1663 }
1664
1665 .spinning {
1666         position: relative;
1667         padding-left: 32px !important;
1668 }
1669
1670 .spinning::before {
1671         position: absolute;
1672         top: 0;
1673         bottom: 0;
1674         left: .2em;
1675         width: 32px;
1676         content: "";
1677         background: url(../resources/icons/loading.gif) no-repeat center;
1678         background-size: 16px;
1679 }
1680
1681 /* luci */
1682 .hidden {
1683         display: none;
1684 }
1685
1686 .left,
1687 .left::before {
1688         text-align: left !important;
1689 }
1690
1691 .right,
1692 .right::before {
1693         text-align: right !important;
1694 }
1695
1696 .center,
1697 .center::before {
1698         text-align: center !important;
1699 }
1700
1701 .top {
1702         align-self: flex-start !important;
1703         vertical-align: top !important;
1704 }
1705
1706 .bottom {
1707         align-self: flex-end !important;
1708         vertical-align: bottom !important;
1709 }
1710
1711 .inline {
1712         display: inline;
1713 }
1714
1715 .cbi-page-actions {
1716         padding-top: 1rem;
1717         text-align: right;
1718 }
1719
1720 .cbi-page-actions > form[method="post"] {
1721         display: inline-block;
1722 }
1723
1724 .th[data-type="button"],
1725 .td[data-type="button"],
1726 .th[data-type="fvalue"],
1727 .td[data-type="fvalue"] {
1728         flex: 1 1 2em;
1729         text-align: center;
1730 }
1731
1732 .ifacebadge {
1733         display: inline-flex;
1734         padding: .5rem .8rem;
1735         border-bottom: thin solid #ccc;
1736         background: #eee;
1737         box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
1738 }
1739
1740 td > .ifacebadge,
1741 .td > .ifacebadge {
1742         font-size: .8rem;
1743         background-color: #f0f0f0;
1744 }
1745
1746 .ifacebadge > em,
1747 .ifacebadge > img {
1748         display: inline-block;
1749         align-self: flex-start;
1750         margin: 0 .2rem;
1751 }
1752
1753 .ifacebadge > img + img {
1754         margin: 0 .2rem 0 0;
1755 }
1756
1757 .network-status-table {
1758         display: flex;
1759         flex-wrap: wrap;
1760 }
1761
1762 .network-status-table .ifacebox {
1763         flex-grow: 1;
1764         margin: .5em;
1765 }
1766
1767 .network-status-table .ifacebox-body {
1768         display: flex;
1769         flex-direction: column;
1770         height: 100%;
1771 }
1772
1773 .network-status-table .ifacebox-body > span {
1774         flex: 10 10 auto;
1775         height: 100%;
1776 }
1777
1778 .network-status-table .ifacebox-body > div {
1779         display: flex;
1780         flex-wrap: wrap;
1781 }
1782
1783 .network-status-table .ifacebox-body .ifacebadge {
1784         align-items: center;
1785         flex: 1 1 auto;
1786         min-width: 220px;
1787         margin: .5em .25em 0 .25em;
1788         padding: .5em;
1789         background-color: #fff;
1790 }
1791
1792 /* textarea */
1793 .cbi-input-textarea {
1794         font-family: monospace;
1795         width: 100%;
1796         min-height: 14rem;
1797         padding: .8rem;
1798         color: #000;
1799 }
1800
1801 #syslog {
1802         font-size: small;
1803         line-height: 1.25;
1804         overflow-y: hidden;
1805         width: 100%;
1806         min-height: 15rem;
1807         padding: 1rem;
1808         resize: none;
1809         color: #eee;
1810         border: 0;
1811         border-radius: 0;
1812         background-color: #101010;
1813         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
1814 }
1815
1816 #syslog:focus {
1817         outline: 0;
1818 }
1819
1820 /* config changes */
1821 .uci-change-list {
1822         font-family: monospace;
1823 }
1824
1825 .uci-change-list ins,
1826 .uci-change-legend-label ins {
1827         display: block;
1828         padding: 2px;
1829         text-decoration: none;
1830         border: thin solid #0f0;
1831         background-color: #cfc;
1832 }
1833
1834 .uci-change-list del,
1835 .uci-change-legend-label del {
1836         font-style: normal;
1837         display: block;
1838         padding: 2px;
1839         text-decoration: none;
1840         border: thin solid #f00;
1841         background-color: #fcc;
1842 }
1843
1844 .uci-change-list var,
1845 .uci-change-legend-label var {
1846         font-style: normal;
1847         display: block;
1848         padding: 2px;
1849         text-decoration: none;
1850         border: thin solid #ccc;
1851         background-color: #eee;
1852 }
1853
1854 .uci-change-list var ins,
1855 .uci-change-list var del {
1856         font-style: normal;
1857         padding: 0;
1858         white-space: pre;
1859         border: 0;
1860 }
1861
1862 .uci-change-legend {
1863         padding: 5px;
1864 }
1865
1866 .uci-change-legend-label {
1867         float: left;
1868         width: 150px;
1869 }
1870
1871 .uci-change-legend-label > ins,
1872 .uci-change-legend-label > del,
1873 .uci-change-legend-label > var {
1874         display: block;
1875         float: left;
1876         width: 10px;
1877         height: 10px;
1878         margin-right: 4px;
1879 }
1880
1881 .uci-change-legend-label var ins,
1882 .uci-change-legend-label var del {
1883         line-height: .4;
1884         border: 0;
1885 }
1886
1887 .uci-change-list var,
1888 .uci-change-list del,
1889 .uci-change-list ins {
1890         padding: .5rem;
1891 }
1892
1893 /* other fix */
1894 #iwsvg,
1895 #iwsvg2,
1896 #bwsvg {
1897         border: thin solid #d4d4d4 !important;
1898 }
1899
1900 #iwsvg,
1901 [data-page="admin-status-realtime-bandwidth"] #bwsvg {
1902         border-top: 0 !important;
1903 }
1904
1905 .ifacebox {
1906         line-height: 1.25;
1907         display: inline-flex;
1908         flex-direction: column;
1909         min-width: 100px;
1910         border-bottom: thin solid #ccc;
1911         background-color: #f9f9f9;
1912         box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2);
1913 }
1914
1915 .ifacebox-head {
1916         padding: .25em;
1917         background: #eee;
1918 }
1919
1920 .ifacebox-head.active {
1921         background: #5bc0de;
1922         background: var(--bar-bg);
1923 }
1924
1925 .ifacebox-body {
1926         padding: .25em;
1927 }
1928
1929 .cbi-image-button {
1930         margin-left: .5rem;
1931 }
1932
1933 .zonebadge {
1934         display: inline-block;
1935         padding: .2rem .5rem;
1936 }
1937
1938 .zonebadge .ifacebadge {
1939         margin: .1rem .2rem;
1940         padding: .2rem .3rem;
1941         border: thin solid #6c6c6c;
1942 }
1943
1944 .zonebadge > input[type="text"] {
1945         min-width: 10rem;
1946         margin-top: .3rem;
1947         padding: .16rem 1rem;
1948 }
1949
1950 .zonebadge > em,
1951 .zonebadge > strong {
1952         display: inline-block;
1953         margin: 0 .2rem;
1954 }
1955
1956 .cbi-value-field .cbi-input-checkbox,
1957 .cbi-value-field .cbi-input-radio {
1958         margin-top: .1rem;
1959 }
1960
1961 .cbi-value-field > ul > li {
1962         display: flex;
1963 }
1964
1965 .cbi-value-field > ul > li > label {
1966         margin-top: .5rem;
1967 }
1968
1969 .cbi-value-field > ul > li .ifacebadge {
1970         margin-top: -.5rem;
1971         margin-left: .4rem;
1972         background-color: #eee;
1973 }
1974
1975 .cbi-section-table-row > .cbi-value-field .cbi-dropdown {
1976         min-width: 7rem;
1977 }
1978
1979 .cbi-section-create {
1980         display: inline-flex;
1981         align-items: center;
1982         margin: .5rem -3px;
1983 }
1984
1985 .cbi-section-create > * {
1986         margin: .5rem;
1987 }
1988
1989 .cbi-section-remove {
1990         padding: .5rem;
1991 }
1992
1993 div.cbi-value var,
1994 td.cbi-value-field var,
1995 .td.cbi-value-field var {
1996         font-style: italic;
1997         color: #0069d6;
1998 }
1999
2000 .cbi-optionals {
2001         padding: 1rem 1rem 0 1rem;
2002         border-top: thin solid #ccc;
2003 }
2004
2005 .cbi-dropdown-container {
2006         position: relative;
2007 }
2008
2009 .cbi-tooltip-container,
2010 span[data-tooltip],
2011 span[data-tooltip] .label {
2012         cursor: help !important;
2013 }
2014
2015 .cbi-tooltip {
2016         position: absolute;
2017         z-index: 1000;
2018         left: -1000px;
2019         padding: 2px 5px;
2020         transition: opacity .25s ease-out;
2021         white-space: pre;
2022         pointer-events: none;
2023         opacity: 0;
2024         border-radius: 3px;
2025         background: #fff;
2026         box-shadow: 0 0 2px #444;
2027 }
2028
2029 .cbi-tooltip-container:hover .cbi-tooltip {
2030         left: auto;
2031         transition: opacity .25s ease-in;
2032         opacity: 1;
2033 }
2034
2035 .zonebadge .cbi-tooltip {
2036         margin: -1.5rem 0 0 -.5rem;
2037         padding: .25rem;
2038         background: inherit;
2039 }
2040
2041 .zonebadge-empty {
2042         color: #404040;
2043         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);
2044 }
2045
2046 .zone-forwards {
2047         display: flex;
2048         min-width: 10rem;
2049 }
2050
2051 .zone-forwards > * {
2052         flex: 1 1 45%;
2053 }
2054
2055 .zone-forwards > span {
2056         flex-basis: 10%;
2057         padding: 0 .25rem;
2058         text-align: center;
2059 }
2060
2061 .zone-forwards .zone-src,
2062 .zone-forwards .zone-dest {
2063         display: flex;
2064         flex-direction: column;
2065 }
2066
2067 .label {
2068         font-size: .8rem;
2069         font-weight: bold;
2070         padding: .3rem .8rem;
2071         white-space: nowrap;
2072         text-decoration: none;
2073         text-transform: uppercase;
2074         color: #fff !important;
2075         border-radius: 3px;
2076         background-color: #bfbfbf;
2077         text-shadow: none;
2078 }
2079
2080 label > input[type="checkbox"],
2081 label > input[type="radio"] {
2082         position: relative;
2083         top: .4rem;
2084         right: .2rem;
2085         margin: 0;
2086         vertical-align: bottom;
2087 }
2088
2089 label[data-index][data-depends] {
2090         padding-right: 2em;
2091 }
2092
2093 .showSide {
2094         display: none;
2095 }
2096
2097 .darkMask {
2098         position: fixed;
2099         z-index: 99;
2100         display: none;
2101         width: 100%;
2102         height: 100%;
2103         content: "";
2104         background-color: rgba(0, 0, 0, .56);
2105 }
2106
2107 /* diagnostics */
2108 #diag-rc-output > pre,
2109 #command-rc-output > pre,
2110 [data-page="admin-services-wol"] .notice code {
2111         font-size: 1.2rem;
2112         font-size-adjust: .35;
2113         line-height: normal;
2114         display: block;
2115         overflow-y: hidden;
2116         width: 100%;
2117         padding: 8.5px;
2118         white-space: pre;
2119         color: #eee;
2120         background-color: #101010;
2121         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2122 }
2123
2124 [data-page="admin-network-diagnostics"] .table {
2125         box-shadow: none;
2126 }
2127
2128 input[name="ping"],
2129 input[name="traceroute"],
2130 input[name="nslookup"] {
2131         width: 80%;
2132 }
2133
2134 /* fix Main Login */
2135 .node-main-login > .main > .main-left {
2136         display: none;
2137 }
2138
2139 .node-main-login > .main > .main-right {
2140         width: 100%;
2141 }
2142
2143 .node-main-login > .main fieldset {
2144         display: inline;
2145         overflow: hidden;
2146         margin-bottom: 1rem;
2147         padding: .5rem;
2148         border: 0;
2149         background: none;
2150         box-shadow: none;
2151 }
2152
2153 .node-main-login > .main .cbi-value-title {
2154         width: 9.5rem;
2155 }
2156
2157 .node-main-login > .main #maincontent {
2158         text-align: center;
2159 }
2160
2161 .node-main-login > .main .container {
2162         display: inline-block;
2163         margin-top: 2rem !important;
2164         padding: 1rem 3.5rem 2rem;
2165         text-align: left;
2166         background-color: #fff;
2167         box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2168 }
2169
2170 .node-main-login > .main form > div:last-child {
2171         float: right;
2172 }
2173
2174 .node-main-login > .main .cbi-value {
2175         display: block;
2176 }
2177
2178 .node-main-login > .main .cbi-value > * {
2179         display: inline-block !important;
2180 }
2181
2182 .node-main-login > .main .cbi-input-text {
2183         width: 100% !important;
2184         min-width: 15rem;
2185 }
2186
2187 .node-main-login .cbi-section {
2188         box-shadow: none;
2189 }
2190
2191 @media screen and (min-height: 585px) {
2192         .node-main-login footer {
2193                 position: absolute;
2194                 bottom: 0;
2195                 width: 100%;
2196         }
2197 }
2198
2199 /* fix status */
2200 .node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2),
2201 .node-status-processes > .main .table .tr .td:nth-child(3) {
2202         white-space: normal;
2203 }
2204
2205 /* fix system reboot */
2206 [data-page="admin-system-reboot"] p {
2207         padding-left: 2rem;
2208 }
2209
2210 [data-page="admin-system-reboot"] p > span {
2211         position: relative;
2212         top: .1rem;
2213         left: 1rem;
2214 }
2215
2216 /* samba */
2217 #cbi-samba [data-tab="template"] .cbi-value-field {
2218         display: block;
2219 }
2220
2221 #cbi-samba [data-tab="template"] .cbi-value-title {
2222         width: auto;
2223         padding-bottom: .6rem;
2224 }
2225
2226 /* software */
2227 .controls > * > .btn:not([aria-label$="page"]) {
2228         flex-grow: initial !important;
2229         margin-top: .1rem;
2230 }
2231
2232 .controls > #pager > .btn[aria-label$="page"] {
2233         font-size: 1.4rem;
2234         font-weight: bold;
2235 }
2236
2237 .controls > * > label {
2238         margin-bottom: .2rem;
2239 }
2240
2241 [data-page="admin-system-opkg"] div.btn {
2242         line-height: 3;
2243         display: inline;
2244         padding: .3rem .6rem;
2245 }
2246
2247 [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),
2248 [data-page="admin-system-opkg"] #maincontent > .container {
2249         margin-top: 2rem;
2250         padding-top: .1rem;
2251 }
2252
2253 [data-page="admin-system-opkg"] #maincontent > .container {
2254         margin: 2rem;
2255         margin-bottom: 1rem;
2256 }
2257
2258 .td.version,
2259 .td.size {
2260         white-space: normal !important;
2261         word-break: break-word;
2262 }
2263
2264 .cbi-tabmenu + .cbi-section {
2265         margin-top: 0;
2266 }
2267
2268 /* wireless overview */
2269 #cbi-wireless > #wifi_assoclist_table > .tr {
2270         box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd;
2271 }
2272
2273 #cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td {
2274         right: 33px;
2275         bottom: 33px;
2276         left: 33px;
2277         border-top: thin solid #ddd !important;
2278 }
2279
2280 #cbi-wireless > #wifi_assoclist_table > .tr.table-titles {
2281         box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd;
2282 }
2283
2284 #cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th {
2285         border-bottom: thin solid #ddd;
2286         box-shadow: 0 -1px 0 0 #ddd;
2287 }
2288
2289 #wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] {
2290         width: 23rem;
2291 }
2292
2293 /* firewall */
2294 #iptables {
2295         margin: 0;
2296 }
2297
2298 .Firewall form {
2299         margin: 2rem 2rem 0 0;
2300         padding: 0;
2301         box-shadow: none;
2302 }
2303
2304 #cbi-firewall-redirect table *,
2305 #cbi-network-switch_vlan table *,
2306 #cbi-firewall-zone table * {
2307         font-size: small;
2308 }
2309
2310 #cbi-firewall-redirect table input[type="text"],
2311 #cbi-network-switch_vlan table input[type="text"],
2312 #cbi-firewall-zone table input[type="text"] {
2313         width: 5rem;
2314 }
2315
2316 #cbi-firewall-redirect table select,
2317 #cbi-network-switch_vlan table select,
2318 #cbi-firewall-zone table select {
2319         min-width: 3.5rem;
2320 }
2321
2322 #cbi-network-switch_vlan .th,
2323 #cbi-network-switch_vlan .td {
2324         flex-basis: 12%;
2325 }
2326
2327 #cbi-firewall-zone .table,
2328 #cbi-network-switch_vlan .table {
2329         display: block;
2330 }
2331
2332 #cbi-firewall-zone .td,
2333 #cbi-network-switch_vlan .td {
2334         width: 100%;
2335 }
2336
2337 /* applyreboot fix */
2338 #applyreboot-container {
2339         margin: 2rem;
2340 }
2341
2342 #applyreboot-section {
2343         line-height: 300%;
2344         margin: 2rem;
2345 }
2346
2347 /* openvpn bug fix */
2348 .OpenVPN a {
2349         line-height: initial !important;
2350 }
2351
2352 /* custom commands */
2353 .commandbox {
2354         width: 24% !important;
2355         margin: 10px 0 0 10px !important;
2356         padding: .5rem 1rem;
2357         border-bottom: thin solid #ccc;
2358         background: #eee;
2359         box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
2360 }
2361
2362 .commandbox h3 {
2363         line-height: normal !important;
2364         overflow: hidden;
2365         margin: 6px 0 !important;
2366         white-space: nowrap;
2367         text-overflow: ellipsis;
2368 }
2369
2370 .commandbox div {
2371         left: auto !important;
2372 }
2373
2374 .commandbox code {
2375         position: absolute;
2376         overflow: hidden;
2377         max-width: 60%;
2378         margin-left: 4px;
2379         padding: 2px 3px;
2380         white-space: nowrap;
2381         text-overflow: ellipsis;
2382 }
2383
2384 .commandbox code:hover {
2385         overflow-y: auto;
2386         max-height: 50px;
2387         white-space: normal;
2388 }
2389
2390 .commandbox p:first-of-type {
2391         margin-top: -6px;
2392 }
2393
2394 .commandbox p:nth-of-type(2) {
2395         margin-top: 2px;
2396 }
2397
2398 [data-page^="admin-system-commands"] .panel-title,
2399 [data-page^="command-cfg"] .mobile-hide,
2400 [data-page^="command-cfg"] .showSide {
2401         display: none;
2402 }
2403
2404 #command-rc-output .alert-message {
2405         line-height: 1.42857143;
2406         position: absolute;
2407         top: 40px;
2408         right: 32px;
2409         max-width: 40%;
2410         margin: 0;
2411         animation: anim-fade-in 1.5s forwards;
2412         word-break: break-word;
2413         opacity: 0;
2414 }
2415
2416 @keyframes anim-fade-in {
2417         100% {
2418                 opacity: 1;
2419         }
2420 }
2421
2422 /* IE hacks */
2423 @media all and (-ms-high-contrast: none) {
2424         .main > .main-left > .nav > .slide > .menu::before {
2425                 top: 30.25%;
2426         }
2427
2428         .main > .main-left > .nav > li:last-child::before {
2429                 top: 20%;
2430         }
2431
2432         .showSide::before {
2433                 top: -12px;
2434         }
2435 }
2436
2437 @media screen and (max-width: 1600px) {
2438         header > .fill > .container > #logo {
2439                 margin: 0 2.5rem 0 .5rem;
2440         }
2441
2442         .main-left {
2443                 width: calc(0% + 13rem);
2444         }
2445
2446         .main-right {
2447                 width: calc(100% - 13rem);
2448         }
2449
2450         .btn:not(button),
2451         .cbi-button {
2452                 font-size: .8rem;
2453                 padding: .3rem .6rem;
2454         }
2455
2456         .label {
2457                 padding: .2rem .6rem;
2458         }
2459
2460         fieldset,
2461         .cbi-section {
2462                 padding: 1rem;
2463         }
2464
2465         .cbi-value-title {
2466                 width: 15rem;
2467                 padding-right: .6rem;
2468         }
2469
2470         .cbi-value-field .cbi-dropdown,
2471         .cbi-value-field .cbi-input-select,
2472         .cbi-value input[type="text"],
2473         .cbi-value input[type="password"] {
2474                 min-width: 22rem;
2475         }
2476
2477         #cbi-firewall-zone .cbi-input-select {
2478                 min-width: 9rem;
2479         }
2480
2481         .cbi-input-textarea {
2482                 font-size: small;
2483         }
2484
2485         .node-admin-status > .main fieldset li > a {
2486                 padding: .3rem .6rem;
2487         }
2488 }
2489
2490 @media screen and (max-width: 1366px) {
2491         header {
2492                 height: 3.5rem;
2493         }
2494
2495         header > .fill > .container {
2496                 margin-top: .25rem;
2497                 cursor: default;
2498         }
2499
2500         .main {
2501                 top: 3.5rem;
2502                 height: calc(100% - 3.5rem);
2503         }
2504
2505         .main-left {
2506                 top: 3.5rem;
2507                 width: calc(0% + 13rem);
2508                 height: calc(100% - 3.5rem);
2509         }
2510
2511         .main-right {
2512                 width: calc(100% - 13rem);
2513         }
2514
2515         .tabs > li > a,
2516         .cbi-tabmenu > li > a {
2517                 padding: .2rem .5rem;
2518         }
2519
2520         .panel-title {
2521                 font-size: 1.1rem;
2522                 padding-bottom: 1rem;
2523         }
2524
2525         table {
2526                 font-size: .7rem !important;
2527                 width: 100% !important;
2528         }
2529
2530         .table .cbi-input-text {
2531                 width: 100%;
2532         }
2533
2534         .cbi-value-field .cbi-dropdown,
2535         .cbi-value-field .cbi-input-select,
2536         .cbi-value input[type="text"],
2537         .cbi-value input[type="password"] {
2538                 min-width: 19rem;
2539         }
2540
2541         #cbi-firewall-zone .cbi-input-select {
2542                 min-width: 4rem;
2543         }
2544
2545         .main > .main-left > .nav > li,
2546         .main > .main-left > .nav > li a,
2547         .main > .main-left > .nav > .slide > .menu,
2548         .main > .main-left > .nav > li > [data-title="Logout"] {
2549                 font-size: .9rem;
2550         }
2551
2552         .main > .main-left > .nav > .slide > .slide-menu > li > a {
2553                 font-size: .7rem;
2554         }
2555
2556         #modal_overlay {
2557                 top: 3.5rem;
2558         }
2559
2560         [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) {
2561                 display: block;
2562         }
2563
2564         [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),
2565         [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),
2566         [data-page="admin-network-hosts"] .table,
2567         [data-page="admin-network-routes"] .table {
2568                 overflow-y: visible;
2569         }
2570
2571         .commandbox {
2572                 width: 32% !important;
2573         }
2574 }
2575
2576 @media screen and (max-width: 1152px) {
2577         header > .fill > .container > #logo {
2578                 display: none;
2579         }
2580
2581         header > .fill > .container > .brand {
2582                 position: relative;
2583         }
2584
2585         html,
2586         .main {
2587                 overflow-y: visible;
2588         }
2589
2590         .main > .loading > span {
2591                 top: 25%;
2592         }
2593
2594         .main-left {
2595                 position: fixed;
2596                 z-index: 100;
2597                 width: 0;
2598         }
2599
2600         .main-right {
2601                 width: 100%;
2602         }
2603
2604         .showSide {
2605                 position: relative;
2606                 top: .18rem;
2607                 display: inline-flex;
2608                 align-items: center;
2609                 width: 1.6rem;
2610                 height: 1.6rem;
2611                 margin-right: .7rem;
2612                 cursor: pointer;
2613         }
2614
2615         .showSide::before {
2616                 position: absolute;
2617                 left: 1px;
2618                 width: 24px;
2619                 height: 24px;
2620                 content: "";
2621                 background: url(./icons/menu.svg) no-repeat center;
2622         }
2623
2624         body:not(.logged-in) .showSide {
2625                 visibility: hidden;
2626                 width: 0;
2627                 margin: 0;
2628         }
2629
2630         .node-main-login > .main .cbi-value-title {
2631                 text-align: left;
2632         }
2633
2634         .cbi-value-title {
2635                 width: 12rem;
2636                 padding-right: 1rem;
2637         }
2638
2639         .cbi-value-field .cbi-dropdown,
2640         .cbi-value-field .cbi-input-select,
2641         .cbi-value input[type="text"] {
2642                 width: 16rem;
2643                 min-width: 16rem;
2644         }
2645
2646         .cbi-value input[type="password"],
2647         .cbi-value input[name^="pw"],
2648         .cbi-value input[data-update="change"]:nth-child(2) {
2649                 width: 13rem !important;
2650                 min-width: 13rem;
2651         }
2652
2653         #diag-rc-output > pre,
2654         #command-rc-output > pre,
2655         [data-page="admin-services-wol"] .notice code {
2656                 font-size: 1rem;
2657         }
2658
2659         .table {
2660                 display: block;
2661         }
2662
2663         .Interfaces .table {
2664                 overflow-x: hidden;
2665         }
2666
2667         #packages.table {
2668                 display: grid;
2669         }
2670
2671         .tr {
2672                 display: flex;
2673                 flex-direction: row;
2674                 flex-wrap: wrap;
2675         }
2676
2677         .Overview .table[width="100%"] > .tr {
2678                 flex-wrap: nowrap;
2679         }
2680
2681         .tr.placeholder {
2682                 border-bottom: thin solid #ddd;
2683         }
2684
2685         .tr.placeholder > .td,
2686         #cbi-firewall .tr > .td,
2687         #cbi-network .tr:nth-child(2) > .td,
2688         .cbi-section #wifi_assoclist_table .tr > .td {
2689                 border-top: 0;
2690         }
2691
2692         .th,
2693         .td {
2694                 display: inline-block;
2695                 align-self: flex-start;
2696                 flex: 2 2 25%;
2697                 text-overflow: ellipsis;
2698                 word-wrap: break-word;
2699         }
2700
2701         .td select,
2702         .td input[type="text"] {
2703                 width: 100%;
2704                 word-wrap: normal;
2705         }
2706
2707         .td [data-dynlist] > input,
2708         .td input.cbi-input-password {
2709                 width: calc(100% - 1.5rem);
2710         }
2711
2712         .td[data-type="button"],
2713         .td[data-type="fvalue"] {
2714                 flex: 1 1 12.5%;
2715                 text-align: left;
2716         }
2717
2718         .th.cbi-value-field,
2719         .td.cbi-value-field,
2720         .th.cbi-section-table-cell,
2721         .td.cbi-section-table-cell {
2722                 flex-basis: auto;
2723                 padding-top: 1rem;
2724         }
2725
2726         .cbi-section-table-row {
2727                 display: flex;
2728                 flex-direction: row;
2729                 flex-wrap: wrap;
2730                 justify-content: space-between;
2731                 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2732         }
2733
2734         .td.cbi-value-field,
2735         .cbi-section-table-cell {
2736                 display: inline-block;
2737                 flex: 10 10 auto;
2738                 flex-basis: 50%;
2739                 text-align: center;
2740         }
2741
2742         .td.cbi-section-actions {
2743                 vertical-align: bottom;
2744         }
2745
2746         .tr.table-titles,
2747         .tr.cbi-section-table-titles,
2748         .tr.cbi-section-table-descr {
2749                 display: none;
2750         }
2751
2752         .tr[data-title]::before,
2753         .tr.cbi-section-table-titles.named::before {
2754                 font-size: .9rem;
2755                 display: block;
2756                 flex: 1 1 100%;
2757                 border-bottom: thin solid rgba(0, 0, 0, .26);
2758                 background: #90c0e0;
2759         }
2760
2761         .td[data-title],
2762         [data-page^="admin-status-realtime"] .td[id] {
2763                 text-align: left;
2764         }
2765
2766         .td[data-title]::before {
2767                 display: block;
2768         }
2769
2770         .cbi-button + .cbi-button {
2771                 margin-left: 0;
2772         }
2773
2774         .td.cbi-section-actions > * > *,
2775         .td.cbi-section-actions > * > form > * {
2776                 margin: 2.1px 3px;
2777         }
2778
2779         .Firewall form {
2780                 position: static !important;
2781                 margin: 0 0 2rem 0;
2782                 padding: 2rem;
2783                 box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
2784         }
2785
2786         .Firewall form input {
2787                 width: 100% !important;
2788                 margin: 0;
2789                 margin-top: 1rem;
2790         }
2791
2792         .Firewall .center,
2793         .Firewall .center::before {
2794                 text-align: left !important;
2795         }
2796
2797         .commandbox {
2798                 width: 100% !important;
2799                 margin-left: 0 !important;
2800         }
2801 }
2802
2803 @media screen and (max-width: 600px) {
2804         body {
2805                 font-size: .8rem;
2806         }
2807
2808         .cbi-progressbar::after {
2809                 font-size: .95em;
2810                 line-height: 1.5;
2811         }
2812
2813         fieldset,
2814         .cbi-section {
2815                 margin: 1rem 0 0 0;
2816         }
2817
2818         .tabs {
2819                 margin: 0 -1rem;
2820         }
2821
2822         #maincontent > .container {
2823                 margin: 0 1rem 1.5rem 1rem;
2824         }
2825
2826         .main > .main-left > .nav > .slide > .menu,
2827         .main > .main-left > .nav > li > [data-title="Logout"] {
2828                 font-size: 1.2rem;
2829         }
2830
2831         .main > .main-left > .nav > .slide > .slide-menu > li > a {
2832                 font-size: 1rem;
2833         }
2834
2835         .cbi-value-title {
2836                 display: block;
2837                 min-width: 0 !important;
2838                 margin: .5rem 0;
2839                 text-align: left;
2840         }
2841
2842         .cbi-value-title,
2843         .cbi-value-description,
2844         .cbi-value-field,
2845         .cbi-value-field .cbi-dropdown,
2846         .cbi-value-field .cbi-input-select,
2847         .cbi-value input[type="text"] {
2848                 width: 100%;
2849         }
2850
2851         .cbi-value > .cbi-value-field {
2852                 display: inline-block;
2853         }
2854
2855         .tabs > li > a,
2856         .cbi-tabmenu > li > a {
2857                 font-size: .9rem;
2858                 padding: .2rem .3rem;
2859         }
2860
2861         .cbi-page-actions > div > input {
2862                 display: none;
2863         }
2864
2865         .cbi-page-actions > .cbi-button {
2866                 margin-top: .2rem;
2867         }
2868
2869         .node-main-login > .main .container {
2870                 margin: 2rem 1.2rem 1.5rem 1.2rem !important;
2871                 padding: .3rem 1.7rem 2rem 1.6rem;
2872         }
2873
2874         .node-main-login > .main .cbi-value {
2875                 padding: 0;
2876         }
2877
2878         .node-main-login > .main form > div:last-child {
2879                 margin-top: 2rem;
2880         }
2881
2882         .node-main-login > .main .cbi-value-title {
2883                 font-size: 1.2rem;
2884                 width: 100% !important;
2885         }
2886
2887         .node-main-login > .main fieldset {
2888                 margin: 0;
2889                 padding: .5rem;
2890         }
2891
2892         .commandbox p:first-of-type {
2893                 margin-top: -8px;
2894         }
2895
2896         #syslog,
2897         #diag-rc-output > pre,
2898         #command-rc-output > pre,
2899         [data-page="admin-services-wol"] .notice code {
2900                 font-size: .8rem !important;
2901         }
2902
2903         h2 {
2904                 font-size: 2rem;
2905         }
2906
2907         .tabs > li > a {
2908                 font-size: .9rem;
2909         }
2910
2911         select,
2912         input {
2913                 font-size: .9rem;
2914         }
2915
2916         code {
2917                 font-size: .8rem;
2918         }
2919
2920         .mobile-hide {
2921                 display: none;
2922         }
2923
2924         .panel-title {
2925                 font-size: 1.4rem;
2926                 padding-bottom: 1rem;
2927         }
2928
2929         .node-system-packages > .main .cbi-value.cbi-value-last > div {
2930                 width: 100% !important;
2931         }
2932
2933         .node-system-packages > .main .cbi-value .cbi-value-field input {
2934                 width: 100%;
2935         }
2936
2937         .th,
2938         .td {
2939                 flex-basis: 50%;
2940         }
2941
2942         .td.cbi-value-field {
2943                 flex-basis: 100%;
2944         }
2945
2946         .td.cbi-value-field[data-type="button"],
2947         .td.cbi-value-field[data-type="fvalue"] {
2948                 flex-basis: 25%;
2949                 text-align: left;
2950         }
2951
2952         .tr[data-title]::before,
2953         .tr.cbi-section-table-titles.named::before {
2954                 font-size: 1rem;
2955         }
2956
2957         td > .ifacebadge,
2958         .td > .ifacebadge {
2959                 font-size: .62rem;
2960         }
2961
2962         #cbi-wireless > #wifi_assoclist_table .td {
2963                 overflow: hidden;
2964         }
2965
2966         #cbi-wireless > .cbi-section-node .td,
2967         .Interfaces .td.cbi-section-actions {
2968                 text-align: center !important;
2969         }
2970
2971         [data-page="admin-status-processes"] .td[data-title="Hang Up"]::before,
2972         [data-page="admin-status-processes"] .td[data-title="Terminate"]::before,
2973         [data-page="admin-status-processes"] .td[data-title="Kill"]::before {
2974                 display: none;
2975         }
2976
2977         .hide-sm,
2978         .hide-xs:not([data-title="MAC-Address"]) {
2979                 display: none;
2980         }
2981 }
2982
2983 @media screen and (min-width: 600px) {
2984         ::-webkit-scrollbar {
2985                 width: 10px;
2986                 height: 10px;
2987         }
2988
2989         ::-webkit-scrollbar,
2990         ::-webkit-scrollbar-corner {
2991                 background: transparent;
2992         }
2993
2994         ::-webkit-scrollbar-thumb {
2995                 background: #9e9e9e;
2996         }
2997
2998         ::-webkit-scrollbar-thumb:hover {
2999                 background: #757575;
3000         }
3001
3002         ::-webkit-scrollbar-thumb:active {
3003                 background: #424242;
3004         }
3005 }