91f87c69c1a1175675215d50f2dcf461da177e1a
[project/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 }