Revert "luci-mod-status: allow displaying raw iptables counter values"
[project/luci.git] / themes / luci-theme-openwrt-2020 / htdocs / luci-static / openwrt2020 / cascade.css
1 :root {
2 --main-bright-color: #00A3E1;
3 --main-dark-color: #002B49;
4 --secondary-bright-color: #FFFFFF;
5 --secondary-dark-color: #212322;
6 --danger-color: #CC1111;
7 --warning-color: #CC8800;
8 --regular-font: "GalanoGrotesqueW00-Regular";
9 --base-font-size: 16px;
10 }
11
12 @font-face {
13 font-family: "GalanoGrotesqueW00-Regular";
14 src: url("GalanoGrotesqueW00-Regular.woff2") format("woff2");
15 }
16
17 /*
18 * resets and base style
19 */
20
21 * {
22 margin: 0;
23 padding: 0;
24 box-sizing: border-box;
25 text-decoration: none;
26 list-style: none;
27 color: inherit;
28 font-family: var(--regular-font), "sans-serif";
29 border: none;
30 font-size: 100%;
31 background: none;
32 outline: none;
33 -webkit-appearance: none;
34 -webkit-text-size-adjust: none;
35 }
36
37 html {
38 height: 100%;
39 width: 100%;
40 max-width: 1366px;
41 margin: 0 auto;
42 background: #fff linear-gradient(90deg, rgba(0, 0, 0, .8), rgba(0, 0, 0 ,.5), rgba(0, 0, 0, .8));
43 }
44
45 body {
46 background: var(--secondary-bright-color);
47 color: var(--secondary-dark-color);
48 font-size: var(--base-font-size);
49 cursor: default;
50 display: inline-flex;
51 flex-direction: column;
52 min-height: 100%;
53 min-width: 100%;
54 }
55
56 /*
57 * scaffholding
58 */
59
60 #menubar {
61 background-color: var(--main-bright-color);
62 background-image: url("logo.svg");
63 background-position: 10px center;
64 background-size: 50px 50px;
65 background-repeat: no-repeat;
66 padding: 0 1em 0 70px;
67 min-height: 70px;
68 display: flex;
69 align-items: center;
70 color: var(--secondary-bright-color);
71 flex: 0;
72 width: 100%;
73 box-shadow: inset 0 0 1px var(--main-dark-color);
74 }
75
76 #menubar > * {
77 flex: 1 1 auto;
78 }
79
80 #menubar .hostname {
81 font-weight: bold;
82 font-size: 2em;
83 white-space: nowrap;
84 overflow: hidden;
85 text-overflow: ellipsis;
86 }
87
88 #menubar .distversion {
89 flex: 3;
90 }
91
92 #indicators {
93 flex: 1 1 25%;
94 text-align: right;
95 }
96
97 #indicators > * {
98 background: var(--secondary-bright-color);
99 color: var(--main-bright-color);
100 display: inline-block;
101 font-size: .85em;
102 line-height: 1.5em;
103 padding: 0 .5em;
104 margin: .125em;
105 border-radius: 1em;
106 cursor: pointer;
107 white-space: nowrap;
108 }
109
110 #indicators > [data-style="inactive"] {
111 background: var(--main-bright-color);
112 color: var(--secondary-bright-color);
113 border: 2px solid var(--secondary-bright-color);
114 line-height: calc(1.5em - 4px);
115 padding: 0 calc(.5em - 2px);
116 }
117
118 #menubar h2,
119 .skiplink {
120 display: none;
121 }
122
123 #modemenu {
124 background: var(--main-bright-color);
125 padding: .5rem 1rem;
126 display: flex;
127 align-items: center;
128 color: var(--secondary-bright-color);
129 box-shadow: inset 0 0 1px var(--main-dark-color);
130 font-size: 1rem;
131 flex-wrap: wrap;
132 }
133
134 #modemenu > * {
135 margin: .125rem;
136 }
137
138 #modemenu > .active {
139 font-weight: bold;
140 border-bottom: 2px solid var(--secondary-bright-color);
141 }
142
143 #maincontainer {
144 flex-direction: row;
145 display: inline-flex;
146 flex: 1 0 auto;
147 }
148
149 #mainmenu {
150 flex: 1 1 200px;
151 background: var(--main-dark-color);
152 color: var(--main-bright-color);
153 padding: 1em;
154 }
155
156 #mainmenu:empty {
157 max-width: 0;
158 padding: 1em 0;
159 transition: all .2s ease-in-out;
160 }
161
162 #mainmenu > div {
163 position: sticky;
164 top: 1em;
165 }
166
167 #mainmenu ul {
168 padding: 0;
169 margin: 0 0 .5em .5em;
170 line-height: 1.5em;
171 }
172
173 #mainmenu ul > li {
174 list-style: none;
175 }
176
177 #mainmenu li > ul {
178 max-height: 0;
179 overflow: hidden;
180 transition: max-height .1s ease-in-out;
181 }
182
183 #mainmenu li.selected > a {
184 color: var(--secondary-bright-color);
185 }
186
187 #mainmenu ul:not(.active) > li.selected > ul,
188 #mainmenu li.active > ul {
189 max-height: 3000px;
190 transition: max-height 1s ease-in-out;
191 }
192
193 #mainmenu .l1 > li > a {
194 font-weight: bold;
195 font-size: 1.05em;
196 }
197
198 #maincontent {
199 flex: 10;
200 padding: 1em 1em 0 1em;
201 }
202
203 body > .luci {
204 flex: 0;
205 font-size: .7em;
206 padding: .25em;
207 text-align: right;
208 background: var(--main-bright-color);
209 color: var(--secondary-bright-color);
210 margin: 0;
211 }
212
213 /*
214 * modal
215 */
216
217 body.modal-overlay-active {
218 overflow: hidden;
219 }
220
221 body.modal-overlay-active #modal_overlay {
222 left: 0;
223 right: 0;
224 opacity: 1;
225 }
226
227 #modal_overlay {
228 position: fixed;
229 top: 0;
230 bottom: 0;
231 left: -10000px;
232 right: 10000px;
233 background: rgba(0, 0, 0, 0.7);
234 z-index: 10000;
235 overflow-y: scroll;
236 -webkit-overflow-scrolling: touch;
237 transition: opacity .125s ease-in;
238 opacity: 0;
239 }
240
241 #modal_overlay > .modal {
242 max-width: 1300px;
243 width: 80%;
244 margin: 10% auto 5rem auto;
245 background: var(--secondary-bright-color);
246 box-shadow: 0 0 3px 1px var(--main-bright-color);
247 padding: .5em;
248 border-radius: .25em;
249 display: flex;
250 flex-direction: column;
251 }
252
253 .modal > h4:first-child {
254 padding: .5rem;
255 margin: -.5rem -.5rem .5rem -.5rem;
256 background: var(--main-bright-color);
257 color: var(--secondary-bright-color);
258 border-radius: .25rem .25rem 0 0;
259 }
260
261 .modal > *:first-child:last-child {
262 margin: .5em 0 !important;
263 }
264
265 .modal .cbi-section > legend:first-child { font-size: 120%; }
266
267
268 /*
269 * table layout
270 */
271
272 .table {
273 display: table;
274 width: 100%;
275 margin: 0 0 1rem 0;
276 position: relative;
277 }
278
279 .tr {
280 display: table-row;
281 }
282
283 .tr.cbi-section-table-titles[data-title]::before {
284 font-weight: bold;
285 border-top: none;
286 }
287
288 .tr[data-title]::before {
289 content: attr(data-title);
290 display: table-cell;
291 border-top: 1px solid var(--main-dark-color);
292 padding: .5em;
293 }
294
295 .th {
296 font-weight: bold;
297 display: table-cell;
298 padding: .5em;
299 /* word-break: break-word; */
300 }
301
302 .cbi-section-table-descr .th {
303 opacity: .8;
304 font-size: 90%;
305 font-weight: normal;
306 }
307
308 .td {
309 display: table-cell;
310 border-top: 1px solid var(--main-dark-color);
311 padding: .5em;
312 vertical-align: middle;
313 }
314
315 .td input:not([type]),
316 .td input[type="text"],
317 .td input[type="password"],
318 .td select,
319 .td .cbi-dropdown:not(.btn):not(.cbi-button),
320 .td .cbi-dynlist,
321 .td .control-group {
322 min-width: auto;
323 width: 100%;
324 }
325
326 .tr.drag-over-above {
327 box-shadow: 0 -6px 6px var(--main-bright-color);
328 }
329
330 .tr.drag-over-below {
331 box-shadow: 0 6px 6px var(--main-bright-color);
332 }
333
334 .tr.placeholder {
335 height: 4em;
336 position: relative;
337 }
338
339 .tr.placeholder > .td {
340 position: absolute;
341 left: 0;
342 right: 0;
343 bottom: 0;
344 text-align: center;
345 line-height: 3em;
346 font-size: 90%;
347 opacity: .8;
348 }
349
350 /*
351 * view specific table invariants
352 */
353
354 #cbi-wireless-wifi-device .ifacebadge {
355 flex-direction: column;
356 justify-content: space-around;
357 }
358
359 .assoclist .td,
360 [data-page="admin-status-overview"] .td {
361 font-size: .9rem;
362 vertical-align: middle;
363 }
364
365 .assoclist .td:nth-of-type(3) > span {
366 display: block;
367 max-width: 270px;
368 font-size: .8rem;
369 }
370
371 .assoclist .td:nth-of-type(5) > span {
372 font-size: .8rem;
373 }
374
375 .assoclist .td > .ifacebadge {
376 flex-wrap: wrap;
377 justify-content: space-around;
378 max-width: 120px;
379 padding: .2em;
380 }
381
382 .assoclist .td > .ifacebadge::after {
383 overflow: hidden;
384 text-overflow: ellipsis;
385 }
386
387 .assoclist .td > .ifacebadge > img {
388 margin: 0 25px;
389 }
390
391 .assoclist .td > .ifacebadge[data-ssid][data-ifname] > span {
392 display: none;
393 }
394
395 .assoclist .td > .ifacebadge[data-ssid][data-ifname]::after {
396 content: attr(data-ssid) " (" attr(data-ifname) ")";
397 }
398
399 [data-page="admin-status-overview"] .td:nth-of-type(3) {
400 min-width: 100px;
401 }
402
403 [data-page="admin-network-firewall"] .table > .tr > *:nth-child(1) {
404 flex: 1 1 30%;
405 }
406
407 [data-page="admin-network-wireless"] .cbi-section-actions > div {
408 display: flex;
409 }
410
411 [data-page="admin-network-wireless"] .cbi-section-actions > div > * {
412 flex: 1;
413 }
414
415 [data-page="admin-status-processes"] .table .td:nth-of-type(3),
416 [data-tab="leases"] .table .td[data-name="duid"] {
417 word-break: break-word;
418 }
419
420 /*
421 * uci changelog
422 */
423
424 .uci-change-list {
425 font-size: 90%;
426 white-space: pre;
427 overflow: hidden;
428 }
429
430 .uci-change-list del,
431 .uci-change-list ins,
432 .uci-change-list var,
433 .uci-change-legend-label del,
434 .uci-change-legend-label ins,
435 .uci-change-legend-label var {
436 text-decoration: none;
437 font-family: monospace;
438 font-style: normal;
439 border: 1px solid #ccc;
440 background: #eee;
441 padding: 2px;
442 display: block;
443 line-height: 15px;
444 margin-bottom: 1px;
445 }
446
447 .uci-change-list h5 {
448 margin: .5em 0 .25em 0;
449 }
450
451 .uci-change-list ins,
452 .uci-change-legend-label ins {
453 border-color: #0f0;
454 background: #cfc;
455 }
456
457 .uci-change-list del,
458 .uci-change-legend-label del {
459 border-color: #f00;
460 background: #fcc;
461 }
462
463 .uci-change-list var,
464 .uci-change-legend-label var {
465 border-color: #ccc;
466 background: #eee;
467 }
468
469 .uci-change-list var ins,
470 .uci-change-list var del {
471 display: inline-block;
472 border: none;
473 width: 100%;
474 padding: 0;
475 }
476
477 .uci-change-legend {
478 margin: .5em 0 0 0;
479 display: flex;
480 flex-wrap: wrap;
481 }
482
483 .uci-change-legend-label {
484 flex: 1 1 10em;
485 white-space: nowrap;
486 }
487
488 .uci-change-legend-label > ins,
489 .uci-change-legend-label > del,
490 .uci-change-legend-label > var {
491 float: left;
492 margin-right: 4px;
493 width: 16px;
494 height: 16px;
495 display: block;
496 position: relative;
497 }
498
499 .uci-change-legend-label var ins,
500 .uci-change-legend-label var del {
501 border: none;
502 position: absolute;
503 top: 2px;
504 left: 2px;
505 right: 2px;
506 bottom: 2px;
507 }
508
509 /*
510 * alignment helpers
511 */
512
513 .left {
514 text-align: left !important;
515 }
516
517 .right {
518 text-align: right !important;
519 }
520
521 .center {
522 text-align: center !important;
523 }
524
525 .top {
526 vertical-align: top !important;
527 }
528
529 .bottom {
530 vertical-align: bottom !important;
531 }
532
533 .middle {
534 vertical-align: middle !important;
535 }
536
537 .nowrap {
538 white-space: nowrap !important;
539 }
540
541 .hidden {
542 display: none !important;
543 }
544
545 /*
546 * legacy hacks
547 */
548
549 [width="33%"] {
550 width: 33%;
551 max-width: 33%;
552 }
553
554 [width="50%"] {
555 width: 50%;
556 max-width: 50%;
557 }
558
559 [data-name="_freq"] select {
560 min-width: auto;
561 }
562
563 .cbi-value-field > div:first-child + br {
564 display: none;
565 }
566
567 /*
568 * typography
569 */
570
571 h1, h2, h3, h4, h5, h6,
572 .cbi-section > legend:first-child {
573 font-weight: bold;
574 margin: 0 0 1rem 0;
575 }
576
577 strong, b {
578 font-weight: bold;
579 }
580
581 h1 { font-size: 160%; }
582 h2 { font-size: 150%; }
583 h3 { font-size: 140%; }
584 h4 { font-size: 130%; }
585 h5 { font-size: 120%; }
586 h6 { font-size: 110%; }
587
588 .cbi-section > legend:first-child { font-size: 140%; }
589
590 p, ul, textarea {
591 margin: 0 0 1em 0;
592 }
593
594 p > textarea:last-child {
595 margin: 0;
596 }
597
598 var {
599 color: var(--main-dark-color);
600 font-weight: bold;
601 }
602
603 code {
604 font-family: monospace;
605 color: var(--main-dark-color);
606 }
607
608 pre {
609 font-family: monospace;
610 margin: 0 0 1em 0;
611 font-size: .9rem;
612 box-shadow: inset 0 0 2px var(--main-dark-color);
613 padding: .25rem;
614 overflow: auto;
615 }
616
617 big {
618 font-size: 110%;
619 }
620
621 small {
622 font-size: 95%;
623 }
624
625 ul {
626 padding: 0 0 0 1.5em;
627 }
628
629 ul > li {
630 list-style: disc;
631 }
632
633 /*
634 * widgets
635 */
636
637 .ifacebox, .ifacebadge, .zonebadge {
638 display: inline-flex;
639 line-height: 1.8em;
640 padding: 0 .25em;
641 margin: .25em;
642 box-shadow: 0px 0px 2px var(--main-dark-color);
643 font-size: .9em;
644 border-radius: .5em;
645 overflow: hidden;
646 font-size: .8rem;
647 vertical-align: text-top;
648 background: var(--secondary-bright-color);
649 align-items: center;
650 color: var(--secondary-dark-color);
651 vertical-align: middle;
652 }
653
654 .zonebadge > .ifacebadge {
655 margin: .125em -.125em .125em .35em;
656 }
657
658 .zonebadge > .ifacebadge > img
659 {
660 margin: .125em 0 .125em .25em;
661 }
662
663 .ifacebox {
664 display: inline-flex;
665 flex-direction: column;
666 padding: 0;
667 text-align: center;
668 width: 100%;
669 max-width: 100px;
670 }
671
672 .ifacebox-head {
673 background: var(--main-bright-color);
674 width: 100%;
675 }
676
677 .ifacebox-body {
678 text-align: center;
679 padding: .3em .25em .25em .25em;
680 white-space: nowrap;
681 }
682
683 .ifacebadge {
684 display: inline-flex;
685 align-items: center;
686 }
687
688 .ifacebadge.large {
689 line-height: 1.3em;
690 }
691
692 .ifacebadge > img {
693 vertical-align: text-bottom;
694 margin: .25em;
695 height: 16px;
696 }
697
698 .ifacebadge > * {
699 margin-left: .25em;
700 }
701
702 .network-status-table {
703 display: inline-flex;
704 flex-wrap: wrap;
705 width: 100%;
706 margin: 0 -.2em 1em -.2em;
707 }
708
709 .network-status-table > .ifacebox {
710 max-width: none;
711 flex: 1 1 45%;
712 margin: .25em;
713 min-width: 250px;
714 }
715
716 .network-status-table > .ifacebox .ifacebadge {
717 font-size: 100%;
718 max-width: none;
719 flex: 1 1 45%;
720 margin: .2em;
721 }
722
723 .network-status-table .ifacebox-body > div {
724 display: flex;
725 flex-wrap: wrap;
726 margin: .3em -.1em -.1em -.1em;
727 }
728
729 .cbi-tooltip-container {
730 cursor: help;
731 }
732
733 .cbi-tooltip {
734 position: absolute;
735 z-index: 10000;
736 left: -10000px;
737 box-shadow: 0 0 2px rgba(0, 0, 0, .7);
738 border-radius: 3px;
739 background: var(--secondary-bright-color);
740 white-space: pre;
741 padding: 2px 5px;
742 opacity: 0;
743 transition: opacity .25s ease-in;
744 font-size: .8rem;
745 }
746
747 .cbi-tooltip.error {
748 color: var(--danger-color);
749 }
750
751 .cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
752 left: auto;
753 opacity: 1;
754 transition: opacity .25s ease-in;
755 }
756
757 .zone-forwards {
758 display: flex;
759 align-items: center;
760 }
761
762 .cbi-progressbar {
763 border-radius: .25em;
764 position: relative;
765 min-width: 20rem;
766 height: 1.5em;
767 box-shadow: 0 0 2px var(--main-dark-color);
768 overflow: hidden;
769 margin: .125rem 0;
770 }
771
772 .cbi-progressbar > div {
773 background: var(--main-bright-color);
774 height: 100%;
775 transition: width .25s ease-in;
776 width: 0%;
777 }
778
779 .cbi-progressbar::after {
780 position: absolute;
781 bottom: 0;
782 top: 0;
783 right: 0;
784 left: 0;
785 text-align: center;
786 text-shadow: 0 0 2px var(--secondary-bright-color);
787 content: attr(title);
788 white-space: nowrap;
789 line-height: 1.5em;
790 }
791
792 .cbi-tabmenu {
793 padding: 0;
794 margin: 0 -.5em 1em -.5em;
795 font-weight: bold;
796 color: var(--main-dark-color);
797 }
798
799 .cbi-tabmenu > li {
800 display: inline-flex;
801 white-space: nowrap;
802 opacity: 1;
803 height: 1.8em;
804 max-height: none;
805 overflow: visible;
806 }
807
808 .cbi-tabmenu > li > a {
809 flex: 1;
810 margin: .1em .5em;
811 }
812
813 .cbi-tabmenu > .cbi-tab > a {
814 border-bottom: 2px solid var(--main-dark-color);
815 }
816
817 [data-tab] {
818 opacity: 0;
819 max-height: 0;
820 transition: opacity .25s ease-in-out;
821 overflow: hidden;
822 }
823
824 [data-tab-active="true"] {
825 opacity: 1;
826 height: auto;
827 max-height: none;
828 overflow: visible;
829 }
830
831 .alert-message:not(.modal) {
832 box-shadow: 0 0 3px var(--secondary-dark-color);
833 padding: .5em;
834 margin: 0 0 1em 0;
835 background: var(--warning-color);
836 color: var(--secondary-bright-color);
837 transition: opacity .4s ease;
838 }
839
840 .alert-message + .alert-message {
841 margin: -.5em 0 1em 0;
842 }
843
844 .alert-message.info {
845 background: var(--main-bright-color);
846 }
847
848 .alert-message.warning {
849 background: var(--warning-color);
850 }
851
852 .alert-message.danger {
853 background: var(--danger-color);
854 }
855
856 .alert-message .btn {
857 background: inherit;
858 box-shadow: 0 0 2px var(--secondary-bright-color);
859 }
860
861 .alert-message .btn:hover {
862 box-shadow: 0 0 4px 1px var(--secondary-bright-color);
863 }
864
865 @keyframes fade-in {
866 0% { opacity: 0; }
867 100% { opacity: 1; }
868 }
869
870 @keyframes fade-out {
871 0% { opacity: 1; }
872 100% { opacity: 0; }
873 }
874
875 .fade-in {
876 animation: fade-in .4s ease;
877 }
878
879 .fade-out {
880 animation: fade-out .4s ease;
881 opacity: 0;
882 }
883
884 /*
885 * forms
886 */
887
888 button, .btn {
889 background: var(--main-bright-color);
890 color: var(--secondary-bright-color);
891 line-height: 1.5em;
892 border-radius: .25em;
893 cursor: pointer;
894 box-shadow: 0 0 2px var(--main-dark-color);
895 padding: 0 .5em;
896 display: inline-block;
897 }
898
899 button:hover, .btn:hover {
900 box-shadow: 0 0 6px var(--main-bright-color);
901 }
902
903 button + button, .btn + .btn, button + .btn, .btn + button, select + button {
904 margin-left: .25em;
905 }
906
907 button.important {
908 background: var(--main-dark-color);
909 }
910
911 button[disabled], button.disabled, .btn[disabled], .btn.disabled {
912 pointer-events: none;
913 opacity: .6;
914 }
915
916 .cbi-button-apply, .cbi-button-positive {
917 background: var(--main-dark-color);
918 }
919
920 .cbi-button-negative, .cbi-button-remove {
921 background: var(--danger-color);
922 }
923
924 .cbi-checkbox {
925 position: relative;
926 }
927
928 .cbi-checkbox input[type="checkbox"] {
929 position: absolute;
930 z-index: 10;
931 -webkit-appearence: button;
932 height: 1.3em;
933 width: 1.3em;
934 opacity: 0;
935 cursor: pointer;
936 }
937
938 .cbi-checkbox input[type="checkbox"] + label {
939 position: relative;
940 display: inline-block;
941 width: 1.3em;
942 height: 1.3em;
943 vertical-align: text-top;
944 }
945
946 .cbi-checkbox input[type="checkbox"] + label::before {
947 content: "\0a";
948 height: 1em;
949 width: 1em;
950 box-shadow: 0 0 2px var(--main-dark-color);
951 display: inline-block;
952 border-radius: .25em;
953 margin: .15em 0;
954 position: absolute;
955 left: 0;
956 top: 0;
957 }
958
959 .cbi-checkbox input[type="checkbox"]:checked + label::after {
960 content: "\0a";
961 position: absolute;
962 display: inline-block;
963 background: var(--main-dark-color);
964 top: .35em;
965 left: .2em;
966 width: .6em;
967 height: .6em;
968 border-radius: .15em;
969 cursor: pointer;
970 }
971
972 .cbi-checkbox input.cbi-input-invalid[type="checkbox"] + label::before {
973 box-shadow: 0 0 2px var(--danger-color);
974 }
975
976 .cbi-checkbox input.cbi-input-invalid[type="checkbox"]:checked + label::after {
977 background: var(--danger-color);
978 }
979
980 .cbi-checkbox input[type="checkbox"][disabled] + label::before,
981 .cbi-checkbox input[type="checkbox"][disabled] + label::after {
982 pointer-events: none;
983 opacity: .6;
984 }
985
986 .cbi-checkbox input[type="checkbox"][disabled] {
987 pointer-events: none;
988 }
989
990 input:not([type]),
991 input[type="text"],
992 input[type="password"],
993 select,
994 .cbi-dropdown:not(.btn):not(.cbi-button) {
995 border-bottom: 2px solid transparent;
996 box-shadow: inset 0 0 1px var(--main-dark-color);
997 padding: 0 .2rem;
998 line-height: 1.5rem;
999 min-height: calc(1.5rem + 2px);
1000 min-width: 20rem;
1001 border-radius: .25em;
1002 }
1003
1004 input:not([type]):focus,
1005 input[type="text"]:focus,
1006 input[type="password"]:focus,
1007 select:focus,
1008 .cbi-dropdown:not(.btn):not(.cbi-button):focus,
1009 .cbi-dropdown[open]:not(.btn):not(.cbi-button) {
1010 border-color: var(--main-dark-color);
1011 }
1012
1013 input[disabled]:not([type]),
1014 input[disabled][type="text"],
1015 input[disabled][type="password"],
1016 select[disabled],
1017 .cbi-dynlist[disabled] {
1018 opacity: .6;
1019 pointer-events: none;
1020 }
1021
1022 input:not([type]) + .btn, input:not([type]) + button,
1023 input[type="text"] + .btn, input[type="text"] + button,
1024 input[type="password"] + .btn, input[type="password"] + button {
1025 margin: 0 0 2px -1px;
1026 background: var(--main-dark-color);
1027 border-radius: 0 .25em .25em 0;
1028 }
1029
1030 .control-group > select + .btn, .control-group > select + button {
1031 margin-left: .25em;
1032 }
1033
1034 .control-group > input:not([type]) + .btn, .control-group > input:not([type]) + button,
1035 .control-group > input[type="text"] + .btn, .control-group > input[type="text"] + button,
1036 .control-group > input[type="password"] + .btn, .control-group > input[type="password"] + button {
1037 margin: .125em .125em calc(.125em + 2px) calc(-.125em - .25em) !important;
1038 }
1039
1040 input[type="checkbox"] {
1041 height: 1em;
1042 vertical-align: middle;
1043 -webkit-appearance: checkbox;
1044 }
1045
1046 select {
1047 padding: .1rem 0;
1048 -webkit-appearance: menulist;
1049 }
1050
1051 textarea {
1052 width: 100%;
1053 box-shadow: inset 0 0 2px var(--main-dark-color);
1054 font-family: monospace;
1055 font-size: .9rem;
1056 padding: .2rem;
1057 }
1058
1059 .cbi-input-invalid,
1060 .cbi-input-invalid:focus {
1061 color: var(--danger-color);
1062 border-color: var(--danger-color) !important;
1063 box-shadow: inset 0 0 2px var(--danger-color);
1064 }
1065
1066 .control-group {
1067 display: inline-flex;
1068 margin: 0 -.125rem;
1069 min-width: 20.25em;
1070 }
1071
1072 .control-group > *,
1073 .control-group > .cbi-dropdown > ul > li {
1074 justify-content: space-around;
1075 }
1076
1077 .control-group > * {
1078 margin: .125rem !important;
1079 min-width: auto !important;
1080 }
1081
1082 .control-group > select,
1083 .control-group > input:not([type]),
1084 .control-group > input[type="text"],
1085 .control-group > input[type="password"] {
1086 flex: 10;
1087 }
1088
1089 .cbi-value {
1090 display: flex;
1091 flex-wrap: wrap;
1092 margin: 0 0 1em 0;
1093 }
1094
1095 .cbi-value > label:first-child {
1096 flex: 1 1 40%;
1097 padding: 0 .5em 0 0;
1098 }
1099
1100 .cbi-value > .cbi-value-field {
1101 flex: 2 2 55%;
1102 }
1103
1104 .cbi-value > .cbi-section {
1105 flex: 1 1 100%;
1106 }
1107
1108 .cbi-map-descr,
1109 .cbi-tab-descr,
1110 .cbi-section-descr,
1111 .cbi-value-description,
1112 .cbi-value[data-widget="CBI.DummyValue"] > div:first-child {
1113 opacity: .8;
1114 font-size: .9rem;
1115 padding: .2em 0;
1116 }
1117
1118 .cbi-map-descr,
1119 .cbi-tab-descr,
1120 .cbi-section-descr,
1121 .cbi-section-table,
1122 .cbi-section-create {
1123 margin: 0 0 1em 0;
1124 }
1125
1126 .cbi-dynlist {
1127 display: inline-block;
1128 font-size: 90%;
1129 min-height: calc(1.5em + 2px);
1130 line-height: 1.5em;
1131 min-width: 20rem;
1132 flex-wrap: wrap;
1133 }
1134
1135 .cbi-dynlist > .item {
1136 box-shadow: 0 0 2px var(--main-dark-color);
1137 margin: .3em 0;
1138 padding: .15em 2em .15em .2em;
1139 border-radius: .25em;
1140 position: relative;
1141 overflow: hidden;
1142 transition: box-shadow .25s ease-in-out;
1143 pointer-events: none;
1144 flex: 1 1 100%;
1145 word-break: break-all;
1146 }
1147
1148 .cbi-dynlist > .item::after {
1149 content: "-";
1150 top: 0;
1151 right: 0;
1152 bottom: 0;
1153 width: 1.6rem;
1154 background: var(--main-bright-color);
1155 display: flex;
1156 align-items: center;
1157 justify-content: space-around;
1158 position: absolute;
1159 box-shadow: 0 0 2px var(--main-dark-color);
1160 text-align: center;
1161 color: var(--secondary-bright-color);
1162 cursor: pointer;
1163 pointer-events: all;
1164 }
1165
1166 .cbi-dynlist[disabled] > .item::after {
1167 pointer-events: none;
1168 }
1169
1170 .cbi-dynlist > .item:hover {
1171 box-shadow: 0 0 2px var(--main-bright-color);
1172 }
1173
1174 .cbi-dynlist > .add-item {
1175 flex: 1;
1176 display: flex;
1177 }
1178
1179 .cbi-dynlist > .add-item > input {
1180 flex: 1;
1181 min-width: 18.5rem;
1182 border-radius: .25rem 0 0 .25rem;
1183 }
1184
1185 .cbi-dynlist > .add-item > .btn {
1186 flex: 0 0 1.6rem;
1187 margin: 0 0 2px -1px;
1188 width: 1.6rem;
1189 text-align: center;
1190 }
1191
1192 .cbi-dropdown {
1193 display: inline-flex !important;
1194 cursor: pointer;
1195 height: auto;
1196 position: relative;
1197 padding: 0 !important;
1198 }
1199
1200 .cbi-dropdown:not(.btn):not(.cbi-button) {
1201 box-shadow: inset 0 0 1px var(--main-dark-color);
1202 }
1203
1204 .cbi-dropdown > ul {
1205 margin: 0 !important;
1206 padding: 0;
1207 list-style: none;
1208 overflow-x: hidden;
1209 overflow-y: auto;
1210 display: flex;
1211 width: 100%;
1212 }
1213
1214 .cbi-dropdown.btn > ul:not(.dropdown) {
1215 padding-left: .5em;
1216 }
1217
1218 .cbi-dropdown.btn.spinning > ul:not(.dropdown) {
1219 padding-left: 0;
1220 }
1221
1222 .cbi-dropdown.btn > ul.dropdown > li {
1223 color: var(--main-dark-color);
1224 }
1225
1226 .cbi-dropdown > ul.preview {
1227 display: none;
1228 }
1229
1230 .cbi-dropdown > .open,
1231 .cbi-dropdown > .more {
1232 flex-grow: 0;
1233 flex-shrink: 0;
1234 display: flex;
1235 flex-direction: column;
1236 justify-content: center;
1237 text-align: center;
1238 padding: 0 .25em;
1239 }
1240
1241 .cbi-dropdown.btn > .open,
1242 .cbi-dropdown.cbi-button > .open {
1243 padding: 0 .5em;
1244 margin-left: .5em;
1245 border-left: 1px solid;
1246 }
1247
1248 .cbi-dropdown > .more,
1249 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li[placeholder] {
1250 display: none;
1251 justify-content: center;
1252 color: rgba(0, 0, 0, .5);
1253 }
1254
1255 .cbi-dropdown > ul > li {
1256 display: none;
1257 white-space: nowrap;
1258 overflow: hidden;
1259 text-overflow: ellipsis;
1260 flex-shrink: 1;
1261 flex-grow: 1;
1262 align-items: center;
1263 align-self: center;
1264 color: inherit;
1265 }
1266
1267 .cbi-dropdown > ul.dropdown > li,
1268 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li {
1269 padding: 0 .25em;
1270 }
1271
1272 .cbi-dropdown > ul > li .hide-open { display: block; display: initial; }
1273 .cbi-dropdown > ul > li .hide-close { display: none; }
1274
1275 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1276 border-left: 1px solid #ccc;
1277 }
1278
1279 .cbi-dropdown[empty] > ul {
1280 max-width: 1px;
1281 max-height: 1.5em;
1282 }
1283
1284 .cbi-dropdown > ul > li > form {
1285 display: none;
1286 margin: 0;
1287 padding: 0;
1288 pointer-events: none;
1289 }
1290
1291 .cbi-dropdown > ul > li img {
1292 align-self: center;
1293 margin-right: .25em;
1294 }
1295
1296 .cbi-dropdown > ul > li input[type="text"] {
1297 margin: .25em 0;
1298 border: none;
1299 background: var(--secondary-bright-color);
1300 }
1301
1302 .cbi-dropdown[open] {
1303 position: relative;
1304 }
1305
1306 .cbi-dropdown[open] > ul.dropdown {
1307 display: block;
1308 background: var(--secondary-bright-color);
1309 box-shadow: 0 0 1px var(--main-dark-color), 0 0 4px rgba(0, 0, 0, .7);
1310 position: absolute;
1311 z-index: 1100;
1312 max-width: none;
1313 min-width: 100%;
1314 width: auto;
1315 transition: max-height .125s ease-in;
1316 }
1317
1318 .cbi-dropdown > ul > li[display],
1319 .cbi-dropdown[open] > ul.preview,
1320 .cbi-dropdown[open] > ul.dropdown > li,
1321 .cbi-dropdown[multiple] > ul > li > label,
1322 .cbi-dropdown[multiple][open] > ul.dropdown > li,
1323 .cbi-dropdown[multiple][more] > .more,
1324 .cbi-dropdown[multiple][empty] > .more {
1325 flex-grow: 1;
1326 display: flex !important;
1327 }
1328
1329 .cbi-dropdown[empty] > ul > li,
1330 .cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
1331 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1332 display: block !important;
1333 }
1334
1335 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
1336 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block; display: initial; }
1337
1338 .cbi-dropdown[open] > ul.dropdown > li {
1339 border-bottom: 1px solid #ccc;
1340 }
1341
1342 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1343 background: var(--main-dark-color);
1344 color: var(--secondary-bright-color);
1345 }
1346
1347 .cbi-dropdown[open] > ul.dropdown > li.focus {
1348 background: var(--main-bright-color);
1349 }
1350
1351 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1352 margin-bottom: 0;
1353 border-bottom: none;
1354 }
1355
1356 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1357 opacity: 0.7;
1358 }
1359
1360 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1361 width: 100%;
1362 }
1363
1364 .cbi-dropdown[disabled] {
1365 pointer-events: none;
1366 opacity: .6;
1367 }
1368
1369 .cbi-filebrowser {
1370 max-width: 100%;
1371 width: 1px;
1372 box-shadow: 0 0 2px var(--main-dark-color);
1373 border-radius: .25rem;
1374 display: flex;
1375 flex-direction: column;
1376 opacity: 0;
1377 height: 0;
1378 overflow: hidden;
1379 }
1380
1381 .cbi-filebrowser.open {
1382 min-width: 20rem;
1383 width: auto;
1384 opacity: 1;
1385 height: auto;
1386 overflow: visible;
1387 transition: opacity .25s ease-in;
1388 }
1389
1390 .cbi-filebrowser > * {
1391 max-width: 100%;
1392 overflow: hidden;
1393 text-overflow: ellipsis;
1394 padding: 0 0 .25em 0;
1395 margin: .25em .25em 0px .25em;
1396 white-space: nowrap;
1397 border-bottom: 1px solid var(--main-dark-color);
1398 }
1399
1400 .cbi-filebrowser .cbi-button-positive {
1401 margin-right: .25em;
1402 }
1403
1404 .cbi-filebrowser > div {
1405 border-bottom: none;
1406 }
1407
1408 .cbi-filebrowser > ul > li {
1409 display: flex;
1410 flex-direction: row;
1411 align-items: center;
1412 }
1413
1414 .cbi-filebrowser > ul > li a:hover {
1415 font-weight: bold;
1416 text-decoration: underline;
1417 }
1418
1419 .cbi-filebrowser > ul > li > div:first-child {
1420 flex: 10;
1421 overflow: hidden;
1422 text-overflow: ellipsis;
1423 }
1424
1425 .cbi-filebrowser > ul > li > div:last-child {
1426 flex: 3 3 10em;
1427 text-align: right;
1428 }
1429
1430 .cbi-filebrowser > ul > li > div:last-child > button {
1431 padding: .125em .25em;
1432 margin: 1px 0 1px .25em;
1433 }
1434
1435 .cbi-filebrowser .upload {
1436 display: flex;
1437 flex-direction: row;
1438 flex-wrap: wrap;
1439 margin: 0 -.125em .25em -.125em;
1440 padding: 0 0 .125em 0px;
1441 border-bottom: 1px solid var(--main-dark-color);
1442 }
1443
1444 .cbi-filebrowser .upload > * {
1445 margin: .125em;
1446 flex: 1;
1447 }
1448
1449 .cbi-filebrowser .upload > div > input {
1450 width: 100%;
1451 }
1452
1453 .cbi-section-actions {
1454 text-align: right;
1455 }
1456
1457 .cbi-page-actions {
1458 flex-wrap: wrap;
1459 width: 100%;
1460 justify-content: flex-end;
1461 margin-bottom: 1em;
1462 margin-top: 1em;
1463 border-top: 1px solid var(--main-dark-color);
1464 padding-top: 1em;
1465 text-align: right;
1466 }
1467
1468 div[id$=".ipaddr"] > input,
1469 .cbi-value-field > div > input[type="password"] {
1470 min-width: 18.5rem;
1471 border-radius: .25rem 0 0 .25rem;
1472 }
1473
1474 div[id$=".txpower"] {
1475 flex-wrap: wrap;
1476 align-items: center;
1477 }
1478
1479 div[id$=".txpower"] > span {
1480 white-space: nowrap;
1481 margin-left: .25em;
1482 }
1483
1484 div[id$=".editlist"] {
1485 flex: 1;
1486 }
1487
1488 [data-errors]::after {
1489 content: attr(data-errors);
1490 background: var(--danger-color);
1491 color: var(--secondary-bright-color);
1492 border-radius: .6rem;
1493 height: 1.1rem;
1494 padding: 0 .25rem;
1495 font-size: .9rem;
1496 display: inline-block;
1497 font-weight: bold;
1498 min-width: .6rem;
1499 line-height: 1rem;
1500 margin: -.1rem 0 0 -.2rem;
1501 text-align: center;
1502 }
1503
1504 @keyframes spin {
1505 100% { transform: rotate(360deg); }
1506 }
1507
1508 .spinning {
1509 position: relative;
1510 padding-left: 2.1em !important;
1511 }
1512
1513 .spinning::before {
1514 position: absolute;
1515 display: block;
1516 align-items: center;
1517 top: 0;
1518 bottom: 0;
1519 left: .4em;
1520 width: 1.3em;
1521 height: 1.3em;
1522 animation: spin 1s linear infinite;
1523 content: url("spinner.svg");
1524 margin: auto;
1525 }
1526
1527 button.spinning, .btn.spinning {
1528 padding-left: 1.6em !important;
1529 }
1530
1531 button.spinning::before, .btn.spinning::before {
1532 filter: invert(1);
1533 left: .2em;
1534 width: 1.2em;
1535 height: 1.2em;
1536 }
1537
1538 #view > div.spinning:first-child {
1539 padding: .5em 0;
1540 }
1541
1542 #view > *:last-child {
1543 margin: 0 0 1em 0;
1544 }
1545
1546 .label {
1547 background: var(--main-bright-color);
1548 color: var(--secondary-bright-color);
1549 font-size: .8rem;
1550 padding: 0 .4rem;
1551 border-radius: .5rem;
1552 }
1553
1554 .label.warning {
1555 background: var(--danger-color);
1556 }
1557
1558 ul.deps {
1559 margin: 0;
1560 padding: 0;
1561 font-size: .9rem;
1562 }
1563
1564 ul.errors {
1565 margin: 0 0 1em 0;
1566 padding: 0;
1567 }
1568
1569 @media only screen and (max-width: 800px) {
1570 body {
1571 padding-top: 70px;
1572 }
1573
1574 #maincontent {
1575 padding: .25em;
1576 max-width: 100vw;
1577 }
1578
1579 #menubar {
1580 background: var(--main-bright-color);
1581 padding: 0 .5em;
1582 position: fixed;
1583 top: 0;
1584 z-index: 1000;
1585 }
1586
1587 #menubar > h2 {
1588 flex: 0 0 2em;
1589 display: block;
1590 border: 2px solid var(--secondary-bright-color);
1591 color: var(--secondary-bright-color);
1592 border-radius: .5em;
1593 cursor: pointer;
1594 font-size: 100%;
1595 margin: 0 1em 0 0;
1596 }
1597
1598 #menubar > h2:hover {
1599 border-color: var(--secondary-bright-color);
1600 color: var(--secondary-bright-color);
1601 }
1602
1603 #menubar > h2 > * {
1604 display: none;
1605 }
1606
1607 #menubar > h2::before {
1608 content: "☰";
1609 width: 35px;
1610 line-height: 35px;
1611 text-align: center;
1612 display: inline-block;
1613 color: inherit;
1614 font-weight: bold;
1615 }
1616
1617 #menubar > h2.active::before {
1618 content: "×";
1619 font-size: 200%;
1620 }
1621
1622 #menubar .hostname {
1623 font-size: 1.6em;
1624 }
1625
1626 .distversion {
1627 display: none;
1628 }
1629
1630 #modemenu {
1631 padding: .125em .25em;
1632 }
1633
1634 #mainmenu {
1635 overflow-x: hidden;
1636 overflow-y: auto;
1637 max-width: 0;
1638 padding: 1em 0;
1639 transition: max-width .25s ease-in-out, padding .25s ease-in-out;
1640 position: fixed;
1641 z-index: 900;
1642 height: 100%;
1643 }
1644
1645 #mainmenu.active {
1646 max-width: 200px;
1647 padding: 1em 1em calc(1em + 70px) 1em;
1648 overflow-x: visible;
1649 }
1650
1651 #mainmenu > div {
1652 position: static;
1653 }
1654
1655 #mainmenu ul > li {
1656 padding: .25em 0;
1657 }
1658
1659 .hide-xs {
1660 display: none !important;
1661 }
1662
1663 .table {
1664 display: flex;
1665 flex-direction: column;
1666 }
1667
1668 .tr {
1669 display: block;
1670 border-bottom: 1px solid var(--main-dark-color);
1671 margin-bottom: .5em;
1672 padding-bottom: .5em;
1673 }
1674
1675 .tr.cbi-section-table-titles[data-title]::before,
1676 .tr.cbi-section-table-titles,
1677 .tr.cbi-section-table-descr {
1678 display: none;
1679 }
1680
1681 .tr[data-title]::before {
1682 display: block;
1683 font-weight: bold;
1684 border-top: none;
1685 padding: .4em 0;
1686 font-size: 110%;
1687 }
1688
1689 .td {
1690 display: block;
1691 border-top: none;
1692 text-align: left !important;
1693 padding: .2em 0;
1694 }
1695
1696 .th, .table-titles {
1697 display: none;
1698 }
1699
1700 .td[data-title] {
1701 position: relative;
1702 padding: .2em 0 .2em 40%;
1703 }
1704
1705 .td[data-title]::before {
1706 content: attr(data-title) ": ";
1707 white-space: nowrap;
1708 font-weight: bold;
1709 width: 40%;
1710 overflow: hidden;
1711 text-overflow: ellipsis;
1712 position: absolute;
1713 left: 0;
1714 top: 0;
1715 bottom: 0;
1716 padding: .2em 0;
1717 text-align: left;
1718 display: inline-flex;
1719 align-items: center;
1720 }
1721
1722 .td[data-title]::after {
1723 content: "";
1724 width: 2em;
1725 position: absolute;
1726 left: calc(40% - 2em);
1727 top: 0;
1728 bottom: 0;
1729 display: block;
1730 background: linear-gradient(90deg, rgba(255, 255, 255, 0), var(--secondary-bright-color) 90%);
1731 }
1732
1733 [data-page="admin-status-overview"] .cbi-section:nth-of-type(1) .td:first-of-type,
1734 [data-page="admin-status-overview"] .cbi-section:nth-of-type(2) .td:first-of-type {
1735 font-weight: bold;
1736 max-width: none;
1737 width: 100%;
1738 }
1739
1740 [data-page="admin-status-overview"] .td > span > span { font-size: .9rem; }
1741
1742 [data-page="admin-status-routes"] .table:nth-of-type(3) .td:nth-of-type(1) { word-break: break-all; }
1743
1744 [data-page="admin-network-firewall-zones"] .td[data-name="_info"] {
1745 padding: .2em 0;
1746 line-height: 2.2rem;
1747 }
1748
1749 [data-page="admin-network-firewall-zones"] .td[data-name="_info"]::before,
1750 [data-page="admin-network-firewall-zones"] .td[data-name="_info"]::after {
1751 display: none;
1752 }
1753
1754 [data-page="admin-network-firewall-zones"] .td[data-name="_info"] label {
1755 font-size: 1rem;
1756 }
1757
1758 #cbi-wireless-wifi-device .tr { display: flex; flex-wrap: wrap; }
1759 #cbi-wireless-wifi-device .tr > *:nth-child(1) { flex: 1 1 20%; align-self: center; }
1760 #cbi-wireless-wifi-device .tr > *:nth-child(2) { flex: 2 2 75%; }
1761 #cbi-wireless-wifi-device .tr > *:nth-child(3) { flex: 3 3 100%; }
1762
1763 #cbi-network-interface .tr { display: flex; flex-wrap: wrap; }
1764 #cbi-network-interface .tr > *:nth-child(1) { flex: 1 1 33%; align-self: center; }
1765 #cbi-network-interface .tr > *:nth-child(2) { flex: 2 2 60%; align-self: center; font-size: .9rem; overflow: hidden; }
1766 #cbi-network-interface .tr > *:nth-child(3) { flex: 3 3 100%; }
1767 #cbi-network-interface .tr > *:nth-child(2) > div { overflow: hidden; text-overflow: ellipsis; }
1768
1769 .assoclist .tr {
1770 display: flex;
1771 flex-wrap: wrap;
1772 }
1773
1774 .assoclist .td > .ifacebadge {
1775 max-width: 90px;
1776 }
1777
1778 .assoclist .td > .ifacebadge > img {
1779 margin: 0 35px;
1780 }
1781
1782 .assoclist .td > .ifacebadge > span {
1783 display: none;
1784 }
1785
1786 .assoclist .td > .ifacebadge[data-ifname]::after {
1787 content: attr(data-ifname);
1788 }
1789
1790 .assoclist .td > .ifacebadge[data-signal]::after {
1791 content: attr(data-signal) " dBm";
1792 }
1793
1794 .assoclist .td:nth-of-type(3) {
1795 font-weight: bold;
1796 font-size: 1rem;
1797 }
1798
1799 .assoclist .td:nth-of-type(1), .assoclist .td:nth-of-type(4) {
1800 flex: 1 1 100px;
1801 margin-right: .5em;
1802 }
1803
1804 .assoclist .td:nth-of-type(3), .assoclist .td:nth-of-type(5) {
1805 flex: 2 2 calc(100% - 110px);
1806 overflow: hidden;
1807 text-overflow: ellipsis;
1808 align-self: center;
1809 }
1810
1811 .assoclist .td:nth-of-type(6) { flex: 1; text-align: right !important; }
1812 .assoclist .td[data-title] { padding: .2em 0; }
1813 .assoclist .td[data-title]::before,
1814 .assoclist .td[data-title]::after { display: none; }
1815
1816 .leases6 .td:nth-of-type(3) { word-wrap: break-word; }
1817
1818 .td.cbi-section-actions > div { display: flex; }
1819 .td.cbi-section-actions > div > * { flex: 1; }
1820
1821 body.modal-overlay-active #modal_overlay > .modal {
1822 width: 95%;
1823 margin: 5% auto;
1824 }
1825
1826 input:not([type]),
1827 input[type="text"],
1828 input[type="password"],
1829 select,
1830 .cbi-dropdown:not(.btn):not(.cbi-button),
1831 .cbi-dynlist {
1832 min-height: calc(2.2rem + 2px);
1833 line-height: 2.2rem;
1834 font-size: 1.2rem;
1835 min-width: 10rem;
1836 }
1837
1838 button, .btn {
1839 line-height: 1.8rem;
1840 font-size: 1.2rem;
1841 }
1842
1843 select {
1844 padding: .4em 0;
1845 }
1846
1847 .cbi-value > .cbi-value-field {
1848 flex: 1 0 100%;
1849 display: flex;
1850 flex-direction: column;
1851 max-width: 100%;
1852 }
1853
1854 .cbi-value > .cbi-value-field > div[id] {
1855 display: flex;
1856 flex-direction: row;
1857 }
1858
1859 .cbi-value > .cbi-value-field > div[id] > input,
1860 .cbi-value > .cbi-value-field > div[id] > select,
1861 .cbi-value > .cbi-value-field > div[id] > .cbi-filebrowser.open {
1862 flex: 1;
1863 width: 100%;
1864 }
1865
1866 .cbi-dynlist .item::after,
1867 .cbi-dynlist .add-item > .btn {
1868 line-height: 2em;
1869 flex-basis: 2rem;
1870 width: 2rem;
1871 }
1872
1873 .ifacebadge.large {
1874 font-size: .9rem;
1875 }
1876
1877 .control-group > *,
1878 .control-group > .cbi-dropdown > ul > li {
1879 flex: 1;
1880 white-space: normal;
1881 word-wrap: break-word;
1882 }
1883
1884 .cbi-page-actions .cbi-dropdown,
1885 .cbi-page-actions .cbi-button-apply:first-child {
1886 flex-basis: 100%;
1887 }
1888
1889 .cbi-checkbox {
1890 margin: .25rem;
1891 }
1892
1893 .cbi-tabmenu {
1894 margin: 0 -.25em 1em -.25em;
1895 }
1896
1897 .cbi-tooltip {
1898 font-size: 1rem;
1899 box-shadow: 0 0 4px rgba(0, 0, 0, .7);
1900 }
1901
1902 .cbi-value > label:first-child {
1903 padding: 0 0 .5em 0;
1904 }
1905
1906 [data-page="admin-system-admin-sshkeys"] .cbi-dynlist > .item {
1907 font-size: .9rem;
1908 line-height: 1rem;
1909 }
1910
1911 [data-page="admin-system-opkg"] .control-group {
1912 flex-wrap: wrap;
1913 }
1914
1915 [data-page="admin-status-iptables"] h2 + div.right {
1916 margin: 0 0 1em 0 !important;
1917 display: flex;
1918 }
1919 }
1920
1921 @media only screen and (min-width: 800px) and (max-width: 1200px) {
1922 .assoclist .tr > *:nth-of-type(2) {
1923 display: none;
1924 }
1925 }