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