Merge pull request #2794 from TDT-AG/pr/20190626-luci-app-firewall-german-translation
[project/luci.git] / themes / luci-theme-bootstrap / htdocs / luci-static / bootstrap / cascade.css
1 /*!
2 * LuCI Bootstrap Theme
3 * Copyright 2012 Nut & Bolt
4 * By David Menting <david@nut-bolt.nl>
5 * Based on Bootstrap v1.4.0
6 *
7 * Copyright 2011 Twitter, Inc
8 * Licensed under the Apache License v2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Designed and built with all the love in the world @twitter by @mdo and @fat.
12 */
13 /* Reset.less
14 * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
15 * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
16
17 * {
18 margin: 0;
19 padding: 0;
20 border: 0;
21 box-sizing: border-box;
22 }
23
24 abbr[title], acronym[title] {
25 border-bottom: 1px dotted;
26 font-weight: inherit;
27 cursor: help;
28 }
29
30 table {
31 border-collapse: collapse;
32 border-spacing: 0;
33 }
34
35 ol, ul {
36 list-style: none;
37 }
38
39 html {
40 font-size: 100%;
41 -webkit-text-size-adjust: 100%;
42 -ms-text-size-adjust: 100%;
43 }
44
45 a:focus {
46 outline: thin dotted;
47 }
48
49 a:hover, a:active {
50 outline: 0;
51 }
52
53 footer,
54 header,
55 nav,
56 section {
57 display: block;
58 }
59
60 sub, sup {
61 font-size: 75%;
62 line-height: 0;
63 position: relative;
64 vertical-align: baseline;
65 }
66
67 sup {
68 top: -0.5em;
69 }
70
71 sub {
72 bottom: -0.25em;
73 }
74
75 img {
76 -ms-interpolation-mode: bicubic;
77 }
78
79 button,
80 input,
81 select,
82 option,
83 textarea {
84 font-size: 100%;
85 margin: 0;
86 box-sizing: border-box;
87 vertical-align: baseline;
88 line-height: normal;
89 }
90
91 button::-moz-focus-inner, input::-moz-focus-inner {
92 border: 0;
93 padding: 0;
94 }
95
96 button,
97 input[type="button"],
98 input[type="reset"],
99 input[type="submit"] {
100 cursor: pointer;
101 -webkit-appearance: button;
102 }
103
104 button[disabled],
105 input[type="button"][disabled],
106 input[type="reset"][disabled],
107 input[type="submit"][disabled] {
108 opacity: 0.7;
109 }
110
111 input[type="search"] {
112 -webkit-appearance: textfield;
113 box-sizing: content-box;
114 }
115
116 input[type="search"]::-webkit-search-decoration {
117 -webkit-appearance: none;
118 }
119
120 textarea {
121 overflow: auto;
122 vertical-align: top;
123 }
124
125 /*
126 * Scaffolding
127 * Basic and global styles for generating a grid system, structural layout, and page templates
128 * ------------------------------------------------------------------------------------------- */
129 body {
130 background-color: #fff;
131 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
132 font-size: 13px;
133 font-weight: normal;
134 line-height: 18px;
135 color: #404040;
136 padding: 58px 5px 5px 5px;
137 }
138
139 .container {
140 width: 100%;
141 max-width: 940px;
142 margin-left: auto;
143 margin-right: auto;
144 zoom: 1;
145 }
146
147 .container:before, .container:after {
148 display: table;
149 content: "";
150 zoom: 1;
151 }
152
153 .container:after {
154 clear: both;
155 }
156
157 a {
158 color: #0069d6;
159 text-decoration: none;
160 line-height: inherit;
161 font-weight: inherit;
162 }
163
164 a:hover {
165 color: #00438a;
166 text-decoration: underline;
167 }
168
169 .pull-right {
170 float: right;
171 }
172
173 .pull-left {
174 float: left;
175 }
176
177 .nowrap {
178 white-space: nowrap;
179 }
180
181 /* Typography.less
182 * Headings, body text, lists, code, and more for a versatile and durable typography system
183 * ---------------------------------------------------------------------------------------- */
184 p,
185 .cbi-map-descr,
186 .cbi-section-descr,
187 .table .tr.cbi-section-table-descr .th {
188 font-size: 13px;
189 font-weight: normal;
190 line-height: 18px;
191 margin-bottom: 9px;
192 }
193
194 p small {
195 font-size: 11px;
196 color: #bfbfbf;
197 }
198
199 h1,
200 h2,
201 h3, legend,
202 h4,
203 h5,
204 h6 {
205 font-weight: bold;
206 color: #404040;
207 }
208
209 h1 small,
210 h2 small,
211 h3 small,
212 h4 small,
213 h5 small,
214 h6 small {
215 color: #bfbfbf;
216 }
217
218 h1 {
219 margin-bottom: 18px;
220 font-size: 30px;
221 line-height: 36px;
222 }
223
224 h1 small {
225 font-size: 18px;
226 }
227
228 h2 {
229 font-size: 24px;
230 line-height: 36px;
231 }
232
233 h2 small {
234 font-size: 14px;
235 }
236
237 h3, legend,
238 h4,
239 h5,
240 h6 {
241 line-height: 36px;
242 }
243
244 h3, legend {
245 font-size: 18px;
246 }
247
248 h3 small {
249 font-size: 14px;
250 }
251
252 h4 {
253 font-size: 16px;
254 }
255
256 h4 small {
257 font-size: 12px;
258 }
259
260 h5 {
261 font-size: 14px;
262 }
263
264 h6 {
265 font-size: 13px;
266 color: #bfbfbf;
267 text-transform: uppercase;
268 }
269
270 ul, ol {
271 margin: 0 0 18px 25px;
272 }
273
274 ul ul,
275 ul ol,
276 ol ol,
277 ol ul {
278 margin-bottom: 0;
279 }
280
281 ul {
282 list-style: disc;
283 }
284
285 ol {
286 list-style: decimal;
287 }
288
289 li {
290 line-height: 18px;
291 color: #808080;
292 }
293
294 ul.unstyled {
295 list-style: none;
296 margin-left: 0;
297 }
298
299 dl {
300 margin-bottom: 18px;
301 }
302
303 dl dt, dl dd {
304 line-height: 18px;
305 }
306
307 dl dt {
308 font-weight: bold;
309 }
310
311 dl dd {
312 margin-left: 9px;
313 }
314
315 hr {
316 margin: 20px 0 19px;
317 border: 0;
318 border-bottom: 1px solid #eee;
319 }
320
321 strong {
322 font-style: inherit;
323 font-weight: bold;
324 }
325
326 em {
327 font-style: italic;
328 font-weight: inherit;
329 line-height: inherit;
330 }
331
332 small { font-size: 0.9em }
333
334 address {
335 display: block;
336 line-height: 18px;
337 margin-bottom: 18px;
338 }
339
340 code, pre {
341 padding: 0 3px 2px;
342 font-family: Monaco, Andale Mono, Courier New, monospace;
343 font-size: 12px;
344 border-radius: 3px;
345 }
346
347 code {
348 background-color: #fee9cc;
349 color: rgba(0, 0, 0, 0.75);
350 padding: 1px 3px;
351 }
352
353 pre {
354 background-color: #f5f5f5;
355 display: block;
356 padding: 8.5px;
357 margin: 0 0 18px;
358 line-height: 18px;
359 font-size: 12px;
360 border: 1px solid #ccc;
361 border: 1px solid rgba(0, 0, 0, 0.15);
362 border-radius: 3px;
363 white-space: pre;
364 white-space: pre-wrap;
365 word-wrap: break-word;
366 }
367
368 /* Forms.less
369 * Base styles for various input types, form layouts, and states
370 * ------------------------------------------------------------- */
371 form {
372 margin-bottom: 18px;
373 }
374
375 fieldset {
376 margin-bottom: 9px;
377 padding-top: 9px;
378 }
379
380 fieldset legend {
381 display: block;
382 font-size: 19.5px;
383 line-height: 1;
384 color: #404040;
385 padding-top: 20px;
386
387 }
388 form .cbi-tab-descr {
389 line-height: 18px;
390 margin-bottom: 18px;
391 }
392
393 form .clearfix,
394 .cbi-value {
395 margin-bottom: 18px;
396 zoom: 1;
397 }
398
399 form .clearfix:before, form .clearfix:after,
400 .cbi-value:before, .cbi-value:after {
401 display: table;
402 content: "";
403 zoom: 1;
404 }
405
406 form .clearfix:after,
407 .cbi-value:after {
408 clear: both;
409 }
410
411 label,
412 input,
413 select,
414 textarea {
415 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
416 font-size: 13px;
417 font-weight: normal;
418 line-height: normal;
419 }
420
421 form .input,
422 .cbi-value-field {
423 margin-left: 200px;
424 }
425
426 .cbi-value label.cbi-value-title {
427 padding-top: 6px;
428 font-size: 13px;
429 line-height: 18px;
430 float: left;
431 width: 180px;
432 text-align: right;
433 color: #404040;
434 }
435
436 input[type=checkbox], input[type=radio] {
437 cursor: pointer;
438 }
439
440 label > input[type="checkbox"],
441 label > input[type="radio"] {
442 vertical-align: bottom;
443 margin: 0;
444 }
445
446 input,
447 textarea,
448 select,
449 .cbi-dropdown,
450 .uneditable-input {
451 display: inline-block;
452 width: 210px;
453 height: 30px;
454 padding: 4px;
455 font-size: 13px;
456 line-height: 18px;
457 border: 1px solid #ccc;
458 border-radius: 3px;
459 }
460
461 .uneditable-input {
462 color: #808080;
463 }
464
465 .cbi-dropdown,
466 .cbi-dynlist {
467 min-width: 210px;
468 max-width: 400px;
469 width: auto;
470 }
471
472 .cbi-dynlist {
473 height: auto;
474 min-height: 30px;
475 display: inline-flex;
476 flex-direction: column;
477 }
478
479 .cbi-dynlist > .item {
480 margin-bottom: 4px;
481 box-shadow: 0 0 2px #ccc;
482 background: #fff;
483 padding: 2px 2em 2px 4px;
484 border: 1px solid #ccc;
485 border-radius: 3px;
486 position: relative;
487 pointer-events: none;
488 }
489
490 .cbi-dynlist > .item::after {
491 content: "×";
492 position: absolute;
493 display: inline-flex;
494 align-items: center;
495 top: -1px;
496 right: -1px;
497 bottom: -1px;
498 padding: 0 6px;
499 border: 1px solid #ccc;
500 border-radius: 0 3px 3px 0;
501 font-weight: bold;
502 color: #c44;
503 pointer-events: auto;
504 }
505
506 .cbi-dynlist > .add-item {
507 display: flex;
508 }
509
510 .cbi-dynlist > .add-item > input,
511 .cbi-dynlist > .add-item > button {
512 flex: 1 1 auto;
513 overflow: hidden;
514 text-overflow: ellipsis;
515 white-space: nowrap;
516 }
517
518 select {
519 padding: initial;
520 background: #fff;
521 box-shadow: inset 0 -1px 3px rgba(0, 0, 0, 0.1);
522 }
523
524 input[type=checkbox], input[type=radio] {
525 width: auto;
526 height: auto;
527 padding: 0;
528 margin: 3px 0;
529 *margin-top: 0;
530 /* IE6-7 */
531
532 line-height: normal;
533 border: none;
534 }
535
536 input[type=file] {
537 background-color: #fff;
538 padding: initial;
539 border: initial;
540 line-height: initial;
541 box-shadow: none;
542 width: auto !important;
543 }
544
545 input[type=button], input[type=reset], input[type=submit] {
546 width: auto;
547 height: auto;
548 }
549
550 select[multiple] {
551 height: inherit;
552 background-color: #fff;
553 }
554
555 textarea {
556 height: auto !important;
557 }
558
559 .td > input[type=text],
560 .td > input[type=password],
561 .td > select,
562 .td > .cbi-dropdown,
563 .cbi-dynlist > .add-item > .cbi-dropdown {
564 width: 100%;
565 }
566
567 .uneditable-input {
568 background-color: #fff;
569 display: block;
570 border-color: #eee;
571 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
572 cursor: not-allowed;
573 }
574
575 ::-moz-placeholder {
576 color: #bfbfbf;
577 }
578
579 ::-webkit-input-placeholder {
580 color: #bfbfbf;
581 }
582
583 .item::after, .btn, .cbi-button, input, textarea {
584 transition: border linear 0.2s, box-shadow linear 0.2s;
585 box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
586 }
587
588 .item:hover::after,
589 .btn:hover, .cbi-button:hover,
590 input:focus, textarea:focus {
591 outline: 0;
592 border-color: rgba(82, 168, 236, 0.8) !important;
593 box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
594 text-decoration: none;
595 }
596
597 input[type=file]:focus, input[type=checkbox]:focus, select:focus {
598 box-shadow: none;
599 outline: 1px dotted #666;
600 }
601
602 input[disabled],
603 select[disabled],
604 textarea[disabled],
605 input[readonly],
606 select[readonly],
607 textarea[readonly] {
608 background-color: #f5f5f5;
609 border-color: #ddd;
610 pointer-events: none;
611 cursor: default;
612 }
613
614 select[readonly],
615 textarea[readonly] {
616 pointer-events: auto;
617 cursor: auto;
618 }
619
620 .cbi-optionals,
621 .cbi-section-create {
622 padding: 0 0 10px 10px;
623 }
624
625 .cbi-section-create {
626 margin: -3px;
627 display: inline-flex;
628 align-items: center;
629 }
630
631 .cbi-section-create > * {
632 margin: 3px;
633 flex: 1 1 auto;
634 }
635
636 .cbi-section-create > * > input {
637 width: 100%;
638 }
639
640 .actions,
641 .cbi-page-actions {
642 background: #f5f5f5;
643 margin-bottom: 18px;
644 padding: 17px 20px 18px 17px;
645 border-top: 1px solid #ddd;
646 border-radius: 0 0 3px 3px;
647 text-align: right;
648 }
649
650 .actions .secondary-action,
651 .cbi-page-actions .secondary-action{
652 float: right;
653 }
654
655 .actions .secondary-action a,
656 .cbi-page-actions .secondary-action a {
657 line-height: 30px;
658 }
659
660 .actions .secondary-action a:hover,
661 .cbi-page-actions .secondary-action a:hover {
662 text-decoration: underline;
663 }
664
665 .cbi-page-actions > form {
666 display: inline;
667 margin: 0;
668 }
669
670 .help-inline, .help-block {
671 font-size: 13px;
672 line-height: 18px;
673 color: #bfbfbf;
674 }
675
676 .help-inline {
677 padding-left: 5px;
678 *position: relative;
679 /* IE6-7 */
680
681 *top: -5px;
682 /* IE6-7 */
683
684 }
685
686 .help-block {
687 display: block;
688 max-width: 600px;
689 }
690
691 /*
692 * Tables.less
693 * Tables for, you guessed it, tabular data
694 * ---------------------------------------- */
695 .tr { display: table-row; }
696 .table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
697 .table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
698
699 .table {
700 display: table;
701 width: 100%;
702 margin-bottom: 18px;
703 padding: 0;
704 font-size: 13px;
705 border-collapse: collapse;
706 position: relative;
707 }
708
709 .table .th, .table .td {
710 display: table-cell;
711 vertical-align: middle; /* Fixme */
712 padding: 10px 10px 9px;
713 line-height: 18px;
714 text-align: left;
715 }
716
717 .table .tr:first-child .th {
718 padding-top: 9px;
719 font-weight: bold;
720 vertical-align: top;
721 }
722
723 .table .td, .table .th {
724 border-top: 1px solid #ddd;
725 }
726
727 .tr.placeholder {
728 height: calc(3em + 20px);
729 }
730
731 .tr.placeholder > .td {
732 position: absolute;
733 left: 0;
734 right: 0;
735 bottom: 0;
736 text-align: center;
737 line-height: 3em;
738 }
739
740 /* Patterns.less
741 * Repeatable UI elements outside the base styles provided from the scaffolding
742 * ---------------------------------------------------------------------------- */
743 header {
744 height: 40px;
745 position: fixed;
746 top: 0;
747 left: 0;
748 right: 0;
749 z-index: 800;
750 overflow: visible;
751 color: #BFBFBF;
752 }
753
754 header a {
755 color: #bfbfbf;
756 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
757 }
758
759 header h3 a:hover, header .brand:hover, header ul .active > a {
760 background-color: #333;
761 background-color: rgba(255, 255, 255, 0.05);
762 color: #fff;
763 text-decoration: none;
764 }
765
766 header h3 {
767 position: relative;
768 }
769
770 header h3 a, header .brand {
771 float: left;
772 display: block;
773 padding: 8px 20px 12px;
774 margin-left: -20px;
775 color: #fff;
776 font-size: 20px;
777 font-weight: 200;
778 line-height: 1;
779 }
780
781 header p {
782 margin: 0;
783 line-height: 40px;
784 }
785
786 header .fill {
787 background-color: #222;
788 background-repeat: repeat-x;
789 background-image: linear-gradient(to bottom, #333333, #222222);
790 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
791 padding: 0 5px;
792 }
793
794 header div > ul, .nav {
795 display: block;
796 float: left;
797 margin: 0 10px 0 0;
798 position: relative;
799 left: 0;
800 }
801
802 header div > ul > li, .nav > li {
803 display: block;
804 float: left;
805 }
806
807 header div > ul a, .nav a {
808 display: block;
809 float: none;
810 padding: 10px 10px 11px;
811 line-height: 19px;
812 text-decoration: none;
813 }
814
815 header div > ul a:hover, .nav a:hover {
816 color: #fff;
817 text-decoration: none;
818 }
819
820 header div > ul .active > a, .nav .active > a {
821 background-color: #222;
822 background-color: rgba(0, 0, 0, 0.5);
823 }
824
825 header div > ul.secondary-nav, .nav.secondary-nav {
826 float: right;
827 margin-left: 10px;
828 margin-right: 0;
829 }
830
831 header div > ul.secondary-nav .menu-dropdown,
832 .nav.secondary-nav .menu-dropdown,
833 header div > ul.secondary-nav .dropdown-menu,
834 .nav.secondary-nav .dropdown-menu {
835 right: 0;
836 border: 0;
837 }
838
839 header div > ul a.menu:hover,
840 .nav a.menu:hover,
841 header div > ul li.open .menu,
842 .nav li.open .menu,
843 header div > ul .dropdown-toggle:hover,
844 .nav .dropdown-toggle:hover,
845 header div > ul .dropdown.open .dropdown-toggle,
846 .nav .dropdown.open .dropdown-toggle {
847 background: #444;
848 background: rgba(255, 255, 255, 0.05);
849 }
850
851 header div > ul .menu-dropdown,
852 .nav .menu-dropdown,
853 header div > ul .dropdown-menu,
854 .nav .dropdown-menu {
855 background-color: #333;
856 }
857
858 header div > ul .menu-dropdown a.menu,
859 .nav .menu-dropdown a.menu,
860 header div > ul .dropdown-menu a.menu,
861 .nav .dropdown-menu a.menu,
862 header div > ul .menu-dropdown .dropdown-toggle,
863 .nav .menu-dropdown .dropdown-toggle,
864 header div > ul .dropdown-menu .dropdown-toggle,
865 .nav .dropdown-menu .dropdown-toggle {
866 color: #fff;
867 }
868
869 header div > ul .menu-dropdown a.menu.open,
870 .nav .menu-dropdown a.menu.open,
871 header div > ul .dropdown-menu a.menu.open,
872 .nav .dropdown-menu a.menu.open,
873 header div > ul .menu-dropdown .dropdown-toggle.open,
874 .nav .menu-dropdown .dropdown-toggle.open,
875 header div > ul .dropdown-menu .dropdown-toggle.open,
876 .nav .dropdown-menu .dropdown-toggle.open {
877 background: #444;
878 background: rgba(255, 255, 255, 0.05);
879 }
880
881 header div > ul .menu-dropdown li a,
882 .nav .menu-dropdown li a,
883 header div > ul .dropdown-menu li a,
884 .nav .dropdown-menu li a {
885 color: #999;
886 text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
887 }
888
889 header div > ul .menu-dropdown li a:hover,
890 .nav .menu-dropdown li a:hover,
891 header div > ul .dropdown-menu li a:hover,
892 .nav .dropdown-menu li a:hover {
893 background-color: #191919;
894 background-repeat: repeat-x;
895 background-image: linear-gradient(to bottom, #292929, #191919);
896 color: #fff;
897 }
898
899 header div > ul .menu-dropdown .active a,
900 .nav .menu-dropdown .active a,
901 header div > ul .dropdown-menu .active a,
902 .nav .dropdown-menu .active a {
903 color: #fff;
904 }
905
906 header div > ul .menu-dropdown .divider,
907 .nav .menu-dropdown .divider,
908 header div > ul .dropdown-menu .divider,
909 .nav .dropdown-menu .divider {
910 background-color: #222;
911 border-color: #444;
912 }
913
914 header ul .menu-dropdown li a, header ul .dropdown-menu li a {
915 padding: 4px 15px;
916 }
917
918 li.menu, .dropdown {
919 position: relative;
920 }
921
922 a.menu:after, .dropdown-toggle:after {
923 width: 0;
924 height: 0;
925 display: inline-block;
926 content: "&darr;";
927 text-indent: -99999px;
928 vertical-align: top;
929 margin-top: 8px;
930 margin-left: 4px;
931 border-left: 4px solid transparent;
932 border-right: 4px solid transparent;
933 border-top: 4px solid #fff;
934 opacity: 0.5;
935 }
936
937 .menu-dropdown, .dropdown-menu {
938 background-color: #fff;
939 float: left;
940 position: absolute;
941 top: 40px;
942 left: -9999px;
943 z-index: 900;
944 min-width: 160px;
945 max-width: 220px;
946 _width: 160px;
947 margin-left: 0;
948 margin-right: 0;
949 padding: 6px 0;
950 zoom: 1;
951 border-color: #999;
952 border-color: rgba(0, 0, 0, 0.2);
953 border-style: solid;
954 border-width: 0 1px 1px;
955 border-radius: 0 0 6px 6px;
956 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
957 background-clip: padding-box;
958 }
959
960 .menu-dropdown li, .dropdown-menu li {
961 float: none;
962 display: block;
963 background-color: transparent;
964 }
965
966 .menu-dropdown .divider, .dropdown-menu .divider {
967 height: 1px;
968 margin: 5px 0;
969 overflow: hidden;
970 background-color: #eee;
971 border-bottom: 1px solid #fff;
972 }
973
974 header .dropdown-menu a, .dropdown-menu a {
975 display: block;
976 padding: 4px 15px;
977 clear: both;
978 font-weight: normal;
979 line-height: 18px;
980 color: #808080;
981 text-shadow: 0 1px 0 #fff;
982 }
983
984 header .dropdown-menu a:hover,
985 .dropdown-menu a:hover,
986 header .dropdown-menu a.hover,
987 .dropdown-menu a.hover {
988 background-color: #ddd;
989 background-repeat: repeat-x;
990 background-image: linear-gradient(to bottom, #eee, #ddd);
991 color: #404040;
992 text-decoration: none;
993 box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025);
994 }
995
996 .open .menu,
997 .dropdown.open .menu,
998 .open .dropdown-toggle,
999 .dropdown.open .dropdown-toggle {
1000 color: #fff;
1001 background: #ccc;
1002 background: rgba(0, 0, 0, 0.3);
1003 }
1004
1005 .open .menu-dropdown,
1006 .dropdown.open .menu-dropdown,
1007 .open .dropdown-menu,
1008 .dropdown.open .dropdown-menu {
1009 left: 0;
1010 }
1011
1012 .dropdown:hover ul.dropdown-menu {
1013 left: 0;
1014 }
1015
1016 .dropdown-menu .dropdown-menu {
1017 position: absolute;
1018 left: 159px;
1019 }
1020
1021 .dropdown-menu li {
1022 position: relative;
1023 }
1024
1025 .tabs, .cbi-tabmenu {
1026 margin: 0 -5px 18px;
1027 padding: 0 2px;
1028 list-style: none;
1029 display: flex;
1030 flex-wrap: wrap;
1031 background: linear-gradient(#fff 28px, #ddd 28px);
1032 background-size: 1px 29px;
1033 background-position: left bottom;
1034 }
1035
1036 .tabs > li, .cbi-tabmenu > li {
1037 flex: 0 1 auto;
1038 display: flex;
1039 align-items: center;
1040 height: 25px;
1041 max-width: 48%;
1042 margin: 4px 2px 0 2px;
1043 background: #fff;
1044 border: 1px solid #ddd;
1045 border-bottom: none;
1046 border-radius: 4px 4px 0 0;
1047 color: #0069d6;
1048 }
1049
1050 .tabs > li > a, .cbi-tabmenu > li > a {
1051 padding: 4px 6px;
1052 white-space: nowrap;
1053 overflow: hidden;
1054 text-overflow: ellipsis;
1055 color: inherit;
1056 text-decoration: none;
1057 border-radius: 4px 4px 0 0;
1058 line-height: 25px;
1059 outline: none;
1060 }
1061
1062 .tabs > li:not(.active):hover, .cbi-tabmenu > .cbi-tab-disabled:hover {
1063 background: linear-gradient(#fff 90%, #ddd 100%);
1064 }
1065
1066 .tabs > li:not(.active), .cbi-tabmenu > .cbi-tab-disabled {
1067 color: #999;
1068 background: linear-gradient(#eee 90%, #ddd 100%);
1069 }
1070
1071 .cbi-tab-disabled[data-errors]::after {
1072 content: attr(data-errors);
1073 background: #c43c35;
1074 color: #fff;
1075 min-width: 12px;
1076 line-height: 14px;
1077 border-radius: 7px;
1078 text-align: center;
1079 margin: 0 5px 0 0;
1080 padding: 1px 2px;
1081 }
1082
1083 .cbi-tabmenu.map {
1084 margin: 0;
1085 }
1086
1087 .cbi-tabmenu.map > li {
1088 font-size: 16.5px;
1089 font-weight: bold;
1090 }
1091
1092 .cbi-tabcontainer > fieldset.cbi-section[id] > legend {
1093 display: none;
1094 }
1095
1096 .tabs .menu-dropdown, .tabs .dropdown-menu {
1097 top: 35px;
1098 border-width: 1px;
1099 border-radius: 0 6px 6px 6px;
1100 }
1101
1102 .tabs a.menu:after, .tabs .dropdown-toggle:after {
1103 border-top-color: #999;
1104 margin-top: 15px;
1105 margin-left: 5px;
1106 }
1107
1108 .tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle {
1109 border-color: #999;
1110 }
1111
1112 .tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after {
1113 border-top-color: #555;
1114 }
1115
1116 .tab-content > .tab-pane,
1117 .tab-content > div {
1118 display: none;
1119 }
1120
1121 .tab-content > .active {
1122 display: block;
1123 }
1124
1125 .breadcrumb {
1126 padding: 7px 14px;
1127 margin: 0 0 18px;
1128 background-color: #f5f5f5;
1129 background-repeat: repeat-x;
1130 background-image: linear-gradient(to bottom, #fff, #f5f5f5);
1131 border: 1px solid #ddd;
1132 border-radius: 3px;
1133 box-shadow: inset 0 1px 0 #fff;
1134 }
1135
1136 .breadcrumb li {
1137 display: inline;
1138 text-shadow: 0 1px 0 #fff;
1139 }
1140
1141 .breadcrumb .divider {
1142 padding: 0 5px;
1143 color: #bfbfbf;
1144 }
1145
1146 .breadcrumb .active a {
1147 color: #404040;
1148 }
1149
1150 footer {
1151 margin-top: 17px;
1152 padding-top: 17px;
1153 border-top: 1px solid #eee;
1154 }
1155
1156 #modal_overlay {
1157 position: fixed;
1158 top: 0;
1159 bottom: 0;
1160 left: -10000px;
1161 right: 10000px;
1162 background: rgba(0, 0, 0, 0.7);
1163 z-index: 900;
1164 overflow-y: scroll;
1165 -webkit-overflow-scrolling: touch;
1166 transition: opacity .125s ease-in;
1167 opacity: 0;
1168 visibility: hidden;
1169 }
1170
1171 .modal {
1172 width: 90%;
1173 margin: 5em auto;
1174 display: flex;
1175 flex-wrap: wrap;
1176 min-height: 32px;
1177 max-width: 600px;
1178 align-items: center;
1179 border-radius: 3px;
1180 background: #fff;
1181 box-shadow: 0 0 3px #444;
1182 padding: 1em 1em .5em 1em;
1183 max-height: 2400px;
1184 min-width: 270px;
1185 }
1186
1187 .modal > * {
1188 flex-basis: 100%;
1189 line-height: normal;
1190 margin-bottom: .5em;
1191 }
1192
1193 .modal > pre,
1194 .modal > textarea {
1195 white-space: pre-wrap;
1196 overflow: auto;
1197 }
1198
1199 body.modal-overlay-active {
1200 overflow: hidden;
1201 height: 100vh;
1202 }
1203
1204 body.modal-overlay-active #modal_overlay {
1205 left: 0;
1206 right: 0;
1207 opacity: 1;
1208 visibility: visible;
1209 }
1210
1211 .btn.danger,
1212 .alert-message.danger,
1213 .btn.danger:hover,
1214 .alert-message.danger:hover,
1215 .btn.error,
1216 .alert-message.error,
1217 .btn.error:hover,
1218 .alert-message.error:hover,
1219 .btn.success,
1220 .alert-message.success,
1221 .btn.success:hover,
1222 .alert-message.success:hover,
1223 .btn.info,
1224 .alert-message.info,
1225 .btn.info:hover,
1226 .alert-message.info:hover,
1227 .cbi-tooltip.error, .cbi-tooltip.success, .cbi-tooltip.info {
1228 color: #fff;
1229 }
1230
1231 .btn .close, .alert-message .close {
1232 font-family: Arial, sans-serif;
1233 line-height: 18px;
1234 }
1235
1236 .btn.danger,
1237 .alert-message.danger,
1238 .btn.error,
1239 .alert-message.error,
1240 .cbi-tooltip.error {
1241 background: linear-gradient(to bottom, #ee5f5b, #c43c35) repeat-x;
1242 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1243 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1244 }
1245
1246 .btn.success, .alert-message.success, .cbi-tooltip.success {
1247 background: linear-gradient(to bottom, #62c462, #57a957) repeat-x;
1248 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1249 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1250 }
1251
1252 .btn.info, .alert-message.info, .cbi-tooltip.info {
1253 background: linear-gradient(to bottom, #5bc0de, #339bb9) repeat-x;
1254 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1255 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1256 }
1257
1258 .alert-message.notice, .cbi-tooltip.notice {
1259 background: linear-gradient(to bottom, #efefef, #fefefe) repeat-x;
1260 text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.25);
1261 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1262 }
1263
1264 .item::after,
1265 .btn,
1266 .cbi-button {
1267 cursor: pointer;
1268 display: inline-block;
1269 background: linear-gradient(#fff, #fff 25%, #e6e6e6) no-repeat;
1270 padding: 5px 14px 6px;
1271 text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
1272 color: #333;
1273 font-size: 13px;
1274 line-height: normal;
1275 border: 1px solid #ccc;
1276 border-bottom-color: #bbb;
1277 border-radius: 4px;
1278 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
1279 }
1280
1281 .btn:focus,
1282 .cbi-button:focus {
1283 outline: 1px dotted #666;
1284 }
1285
1286 .cbi-input-invalid,
1287 .cbi-input-invalid.cbi-dropdown,
1288 .cbi-input-invalid.cbi-dropdown:not([open]) > ul > li,
1289 .cbi-value-error input {
1290 color: #f00;
1291 border-color: #f00;
1292 }
1293
1294 .cbi-button-positive,
1295 .cbi-button-fieldadd,
1296 .cbi-button-add,
1297 .cbi-button-save {
1298 border-color: #4a4;
1299 color: #4a4;
1300 }
1301
1302 .cbi-button-neutral,
1303 .cbi-button-download,
1304 .cbi-button-find,
1305 .cbi-button-link,
1306 .cbi-button-up,
1307 .cbi-button-down {
1308 color: #444;
1309 }
1310
1311 .btn.primary,
1312 .cbi-button-action,
1313 .cbi-button-apply,
1314 .cbi-button-reload,
1315 .cbi-button-edit {
1316 border-color: #0069d6;
1317 color: #0069d6;
1318 }
1319
1320 .cbi-button-negative,
1321 .cbi-section-remove .cbi-button,
1322 .cbi-button-reset,
1323 .cbi-button-remove {
1324 border-color: #c44;
1325 color: #c44;
1326 }
1327
1328 .cbi-page-actions::after {
1329 display: table;
1330 content: "";
1331 clear: both;
1332 }
1333
1334 .cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-save):not(.cbi-button-reset) {
1335 float: left;
1336 margin-right: .4em;
1337 }
1338
1339 .btn.primary,
1340 .cbi-button-action.important,
1341 .cbi-page-actions .cbi-button-apply,
1342 .cbi-section-actions .cbi-button-edit {
1343 color: #fff;
1344 background: linear-gradient(to bottom, #0069d6, #0049d6) no-repeat;
1345 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1346 }
1347
1348 .cbi-button-positive.important,
1349 .cbi-page-actions .cbi-button-save {
1350 color: #fff;
1351 background: linear-gradient(to bottom, #4a4, #484) no-repeat;
1352 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1353 }
1354
1355 .cbi-button-negative.important {
1356 color: #fff;
1357 background: linear-gradient(to bottom, #c44, #c00) no-repeat;
1358 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1359 }
1360
1361 .cbi-page-actions .cbi-button-apply + .cbi-button-save {
1362 background: linear-gradient(#fff, #fff 25%, #e6e6e6);
1363 text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.75);
1364 color: #4a4;
1365 }
1366
1367 .cbi-dropdown {
1368 border: 1px solid #ccc;
1369 border-radius: 3px;
1370 display: inline-flex;
1371 padding: 0;
1372 cursor: pointer;
1373 height: auto;
1374 background: linear-gradient(#fff 0%, #e9e8e6 100%);
1375 position: relative;
1376 color: #404040;
1377 }
1378
1379 .cbi-dynlist > .item:focus,
1380 .cbi-dropdown:focus {
1381 outline: 2px solid #4b6e9b;
1382 }
1383
1384 .cbi-dropdown > ul {
1385 margin: 0 !important;
1386 padding: 0;
1387 list-style: none;
1388 overflow-x: hidden;
1389 overflow-y: auto;
1390 display: flex;
1391 width: 100%;
1392 }
1393
1394 .cbi-dropdown > ul.preview {
1395 display: none;
1396 }
1397
1398 .cbi-dropdown > .open,
1399 .cbi-dropdown > .more {
1400 flex-grow: 0;
1401 flex-shrink: 0;
1402 display: flex;
1403 flex-direction: column;
1404 justify-content: center;
1405 text-align: center;
1406 line-height: 2em;
1407 padding: 0 .25em;
1408 }
1409
1410 .cbi-dropdown > .more,
1411 .cbi-dropdown > ul > li[placeholder] {
1412 color: #777;
1413 font-weight: bold;
1414 text-shadow: 1px 1px 0px #fff;
1415 display: none;
1416 justify-content: center;
1417 }
1418
1419 .cbi-dropdown > ul > li {
1420 display: none;
1421 padding: .25em;
1422 white-space: nowrap;
1423 overflow: hidden;
1424 text-overflow: ellipsis;
1425 flex-shrink: 1;
1426 flex-grow: 1;
1427 align-items: center;
1428 align-self: center;
1429 color: #404040;
1430 min-height: 20px;
1431 }
1432
1433 .cbi-dropdown > ul > li .hide-open { display: block; display: initial; }
1434 .cbi-dropdown > ul > li .hide-close { display: none; }
1435
1436 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1437 border-left: 1px solid #ccc;
1438 }
1439
1440 .cbi-dropdown[empty] > ul {
1441 max-width: 1px;
1442 }
1443
1444 .cbi-dropdown > ul > li > form {
1445 display: none;
1446 margin: 0;
1447 padding: 0;
1448 pointer-events: none;
1449 }
1450
1451 .cbi-dropdown > ul > li img {
1452 vertical-align: middle;
1453 margin-right: .25em;
1454 }
1455
1456 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1457 margin: 0;
1458 }
1459
1460 .cbi-dropdown > ul > li input[type="text"] {
1461 height: 20px;
1462 }
1463
1464 .cbi-dropdown[open] {
1465 position: relative;
1466 }
1467
1468 .cbi-dropdown[open] > ul.dropdown {
1469 display: block;
1470 background: #f6f6f5;
1471 border: 1px solid #918e8c;
1472 box-shadow: 0 0 4px #918e8c;
1473 position: absolute;
1474 z-index: 1100;
1475 max-width: none;
1476 min-width: 100%;
1477 width: auto;
1478 transition: max-height .125s ease-in;
1479 }
1480
1481 .cbi-dropdown > ul > li[display],
1482 .cbi-dropdown[open] > ul.preview,
1483 .cbi-dropdown[open] > ul.dropdown > li,
1484 .cbi-dropdown[multiple] > ul > li > label,
1485 .cbi-dropdown[multiple][open] > ul.dropdown > li,
1486 .cbi-dropdown[multiple][more] > .more,
1487 .cbi-dropdown[multiple][empty] > .more {
1488 flex-grow: 1;
1489 display: flex;
1490 }
1491
1492 .cbi-dropdown[empty] > ul > li,
1493 .cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
1494 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1495 display: block;
1496 }
1497
1498 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
1499 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block; display: initial; }
1500
1501 .cbi-dropdown[open] > ul.dropdown > li {
1502 border-bottom: 1px solid #ccc;
1503 }
1504
1505 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1506 background: #b0d0f0;
1507 }
1508
1509 .cbi-dropdown[open] > ul.dropdown > li.focus {
1510 background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
1511 }
1512
1513 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1514 margin-bottom: 0;
1515 border-bottom: none;
1516 }
1517
1518 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1519 opacity: 0.7;
1520 }
1521
1522 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1523 width: 100%;
1524 }
1525
1526 .cbi-dropdown[disabled] {
1527 pointer-events: none;
1528 opacity: .6;
1529 }
1530
1531 input[type="text"] + .cbi-button,
1532 input[type="password"] + .cbi-button,
1533 select + .cbi-button {
1534 border-radius: 0 3px 3px 0;
1535 border-color: #ccc;
1536 margin-left: -2px;
1537 padding: 0 6px;
1538 vertical-align: top;
1539 height: 30px;
1540 font-size: 14px;
1541 line-height: 28px;
1542 }
1543
1544 select + .cbi-button {
1545 border-left-color: transparent;
1546 }
1547
1548 .cbi-title-ref {
1549 color: #37c;
1550 }
1551
1552 .cbi-title-ref::after {
1553 content: "âž™";
1554 }
1555
1556 .cbi-tooltip-container {
1557 cursor: help;
1558 }
1559
1560 .cbi-tooltip {
1561 position: absolute;
1562 z-index: 1000;
1563 left: -1000px;
1564 box-shadow: 0 0 2px #ccc;
1565 border-radius: 3px;
1566 background: #fff;
1567 white-space: pre;
1568 padding: 2px 5px;
1569 opacity: 0;
1570 transition: opacity .25s ease-in;
1571 }
1572
1573 .cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
1574 left: auto;
1575 opacity: 1;
1576 transition: opacity .25s ease-in;
1577 }
1578
1579 .cbi-progressbar {
1580 border: 1px solid #ccc;
1581 border-radius: 3px;
1582 position: relative;
1583 min-width: 170px;
1584 height: 20px;
1585 margin: 4px 0;
1586 background: #f9f9f9;
1587 }
1588
1589 .cbi-progressbar > div {
1590 background: #90c0e0;
1591 height: 100%;
1592 transition: width .25s ease-in;
1593 width: 0%;
1594 }
1595
1596 .cbi-progressbar::after {
1597 position: absolute;
1598 bottom: 0;
1599 top: 0;
1600 right: 0;
1601 left: 0;
1602 text-align: center;
1603 text-shadow: 0 0 2px #fff;
1604 content: attr(title);
1605 white-space: pre;
1606 overflow: hidden;
1607 text-overflow: ellipsis;
1608 }
1609
1610 .zonebadge .cbi-tooltip {
1611 padding: 1px;
1612 background: inherit;
1613 margin: -1.6em 0 0 -5px;
1614 border-radius: 3px;
1615 pointer-events: none;
1616 box-shadow: 0 0 3px #444;
1617 }
1618
1619 .zonebadge .cbi-tooltip > * {
1620 margin: 1px;
1621 }
1622
1623 .zone-forwards {
1624 display: flex;
1625 flex-wrap: wrap;
1626 }
1627
1628 .zone-forwards > * {
1629 flex: 1 1 40%;
1630 padding: 1px;
1631 }
1632
1633 .zone-forwards > span {
1634 flex-basis: 10%;
1635 text-align: center;
1636 }
1637
1638 .zone-forwards .zone-src,
1639 .zone-forwards .zone-dest {
1640 display: flex;
1641 flex-direction: column;
1642 }
1643
1644 .btn.active, .btn:active {
1645 box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
1646 }
1647
1648 .btn.disabled {
1649 cursor: default;
1650 background-image: none;
1651 opacity: 0.65;
1652 box-shadow: none;
1653 }
1654
1655 .btn[disabled] {
1656 cursor: default;
1657 background-image: none;
1658 opacity: 0.65;
1659 box-shadow: none;
1660 }
1661
1662 .btn.large {
1663 font-size: 15px;
1664 line-height: normal;
1665 padding: 9px 14px 9px;
1666 border-radius: 6px;
1667 }
1668
1669 .btn.small {
1670 padding: 7px 9px 7px;
1671 font-size: 11px;
1672 }
1673
1674 button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner {
1675 padding: 0;
1676 border: 0;
1677 }
1678
1679 .close {
1680 float: right;
1681 color: #000;
1682 font-size: 20px;
1683 font-weight: bold;
1684 line-height: 13.5px;
1685 text-shadow: 0 1px 0 #fff;
1686 opacity: 0.25;
1687 }
1688
1689 .close:hover {
1690 color: #000;
1691 text-decoration: none;
1692 opacity: 0.4;
1693 }
1694
1695 .alert-message {
1696 position: relative;
1697 padding: 7px 15px;
1698 margin-bottom: 18px;
1699 color: #404040;
1700 background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x;
1701 text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1702 border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1703 text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
1704 border-width: 1px;
1705 border-style: solid;
1706 border-radius: 4px;
1707 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
1708 }
1709
1710 .alert-message .close {
1711 margin-top: 1px;
1712 *margin-top: 0;
1713 }
1714
1715 .alert-message a {
1716 font-weight: bold;
1717 color: #404040;
1718 }
1719
1720 .alert-message.danger p a,
1721 .alert-message.error p a,
1722 .alert-message.success p a,
1723 .alert-message.info p a {
1724 color: #fff;
1725 }
1726
1727 .alert-message h5 {
1728 line-height: 18px;
1729 }
1730
1731 .alert-message p {
1732 margin-bottom: 0;
1733 }
1734
1735 .alert-message div {
1736 margin-top: 5px;
1737 margin-bottom: 2px;
1738 line-height: 28px;
1739 }
1740
1741 .label {
1742 padding: 1px 3px 2px;
1743 font-size: 9.75px;
1744 font-weight: bold;
1745 color: #fff !important;
1746 text-transform: uppercase;
1747 white-space: nowrap;
1748 background-color: #bfbfbf;
1749 border-radius: 3px;
1750 text-shadow: none;
1751 }
1752
1753 a.label:link,
1754 a.label:visited {
1755 color: #fff;
1756 }
1757
1758 a.label:hover {
1759 text-decoration: none;
1760 }
1761
1762 .label.important {
1763 background-color: #c43c35;
1764 }
1765
1766 .label.warning {
1767 background-color: #f89406;
1768 }
1769
1770 .label.success {
1771 background-color: #46a546;
1772 }
1773
1774 .label.notice {
1775 background-color: #62cffc;
1776 }
1777
1778 /* LuCI specific items */
1779 .hidden { display: none }
1780
1781 #xhr_poll_status {
1782 cursor: pointer;
1783 }
1784
1785 form.inline { display: inline; margin-bottom: 0; }
1786
1787 header .pull-right { padding-top: 8px; }
1788
1789 #modemenu li:last-child span.divider { display: none }
1790
1791 #syslog { width: 100%; }
1792
1793 .cbi-section-table .tr:hover .td,
1794 .cbi-section-table .tr:hover .th,
1795 .cbi-section-table .tr:hover::before {
1796 background-color: #f5f5f5;
1797 }
1798
1799 .cbi-section-table .tr.cbi-section-table-descr .th {
1800 font-weight: normal;
1801 }
1802
1803 .cbi-section-table-titles.named::before,
1804 .cbi-section-table-descr.named::before,
1805 .cbi-section-table-row[data-title]::before {
1806 content: attr(data-title) " ";
1807 display: table-cell;
1808 padding: 10px 10px 9px;
1809 line-height: 18px;
1810 font-weight: bold;
1811 vertical-align: middle;
1812 }
1813
1814 .cbi-section-table-titles.named::before,
1815 .cbi-section-table-descr.named::before,
1816 .cbi-section-table-row[data-title]::before {
1817 border-top: 1px solid #ddd;
1818 }
1819
1820 .left { text-align: left !important; }
1821 .right { text-align: right !important; }
1822 .center { text-align: center !important; }
1823 .top { vertical-align: top !important; }
1824 .middle { vertical-align: middle !important; }
1825 .bottom { vertical-align: bottom !important; }
1826
1827 .cbi-value-field { line-height: 1.5em; }
1828
1829 .cbi-value-field input[type=checkbox],
1830 .cbi-value-field input[type=radio] {
1831 margin-top: 8px;
1832 margin-right: 6px;
1833 }
1834
1835 table table td,
1836 .cbi-value-field table td {
1837 border: none;
1838 }
1839
1840 .table.cbi-section-table input[type="password"],
1841 .table.cbi-section-table input[type="text"],
1842 .table.cbi-section-table textarea,
1843 .table.cbi-section-table select {
1844 width: 100%;
1845 }
1846
1847 .table.cbi-section-table .td.cbi-section-table-cell {
1848 white-space: nowrap;
1849 text-align: right;
1850 }
1851
1852 .table.cbi-section-table .td.cbi-section-table-cell select {
1853 width: inherit;
1854 }
1855
1856 .td.cbi-section-actions {
1857 text-align: right;
1858 vertical-align: middle;
1859 }
1860
1861 .td.cbi-section-actions > * {
1862 display: flex;
1863 }
1864
1865 .td.cbi-section-actions > * > *,
1866 .td.cbi-section-actions > * > form > * {
1867 flex: 1 1 4em;
1868 margin: 0 1px;
1869 }
1870
1871 .td.cbi-section-actions > * > form {
1872 display: inline-flex;
1873 margin: 0;
1874 }
1875
1876 .table.valign-middle .td {
1877 vertical-align: middle;
1878 }
1879
1880 .cbi-rowstyle-2,
1881 .tr.table-titles,
1882 .tr.cbi-section-table-titles {
1883 background: #f9f9f9;
1884 }
1885
1886 .cbi-value-description {
1887 background-image: url(/luci-static/resources/cbi/help.gif);
1888 background-position: .25em .2em;
1889 background-repeat: no-repeat;
1890 margin: .25em 0 0 0;
1891 padding: 0 0 0 1.7em;
1892 }
1893
1894 .cbi-section-error {
1895 border: 1px solid #f00;
1896 border-radius: 3px;
1897 background-color: #fce6e6;
1898 padding: 5px;
1899 margin-bottom: 18px;
1900 }
1901
1902 .cbi-section-error ul { margin: 0 0 0 20px; }
1903
1904 .cbi-section-error ul li {
1905 color: #f00;
1906 font-weight: bold;
1907 }
1908
1909 .ifacebox {
1910 background-color: #fff;
1911 border: 1px solid #ccc;
1912 margin: 0 10px;
1913 text-align: center;
1914 white-space: nowrap;
1915 background-image: linear-gradient(#fff, #fff 25%, #f9f9f9);
1916 text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
1917 border-radius: 4px;
1918 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
1919 display: inline-flex;
1920 flex-direction: column;
1921 line-height: 1.2em;
1922 min-width: 100px;
1923 }
1924
1925 .ifacebox .ifacebox-head {
1926 border-bottom: 1px solid #ccc;
1927 padding: 2px;
1928 background: #eee;
1929 }
1930
1931 .ifacebox .ifacebox-head.active {
1932 background: #90c0e0;
1933 }
1934
1935 .ifacebox .ifacebox-body {
1936 padding: .25em;
1937 }
1938
1939 .ifacebadge {
1940 display: inline-block;
1941 flex-direction: row;
1942 white-space: nowrap;
1943 background-color: #fff;
1944 border: 1px solid #ccc;
1945 padding: 2px;
1946 background-image: linear-gradient(#fff, #fff 25%, #f9f9f9);
1947 text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
1948 border-radius: 4px;
1949 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
1950 cursor: default;
1951 line-height: 1.2em;
1952 }
1953
1954 .ifacebadge img {
1955 width: 16px;
1956 height: 16px;
1957 vertical-align: middle;
1958 }
1959
1960 .ifacebadge-active {
1961 border-color: #000;
1962 font-weight: bold;
1963 }
1964
1965 .network-status-table {
1966 display: flex;
1967 flex-wrap: wrap;
1968 }
1969
1970 .network-status-table .ifacebox {
1971 margin: .5em;
1972 flex-grow: 1;
1973 }
1974
1975 .network-status-table .ifacebox-body {
1976 display: flex;
1977 flex-direction: column;
1978 height: 100%;
1979 text-align: left;
1980 }
1981
1982 .network-status-table .ifacebox-body > * {
1983 margin: .25em;
1984 }
1985
1986 .network-status-table .ifacebox-body > span {
1987 flex: 10 10 auto;
1988 }
1989
1990 .network-status-table .ifacebox-body > div {
1991 display: flex;
1992 flex-wrap: wrap;
1993 margin: -.125em;
1994 }
1995
1996 #dsl_status_table .ifacebox-body span > strong {
1997 display: inline-block;
1998 min-width: 35%;
1999 }
2000
2001 .ifacebadge.large,
2002 .network-status-table .ifacebox-body .ifacebadge {
2003 display: inline-flex;
2004 flex: 1;
2005 padding: .25em;
2006 min-width: 220px;
2007 margin: .125em;
2008 }
2009
2010 .ifacebadge > *,
2011 .ifacebadge.large > * {
2012 margin: 0 .125em;
2013 }
2014
2015 .zonebadge {
2016 padding: 2px;
2017 border-radius: 4px;
2018 display: inline-block;
2019 white-space: nowrap;
2020 color: #666;
2021 text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
2022 }
2023
2024 .zonebadge > em,
2025 .zonebadge > strong {
2026 margin: 0 2px;
2027 display: inline-block;
2028 }
2029
2030 .zonebadge input {
2031 width: 6em;
2032 }
2033
2034 .zonebadge > .ifacebadge {
2035 margin-left: 2px;
2036 }
2037
2038 .zonebadge-empty {
2039 border: 1px dashed #aaa;
2040 color: #aaa;
2041 font-style: italic;
2042 font-size: smaller;
2043 }
2044
2045 div.cbi-value var,
2046 .td.cbi-value-field var {
2047 font-style: italic;
2048 color: #0069d6;
2049 }
2050
2051 .uci-change-list {
2052 line-height: 170%;
2053 white-space: pre;
2054 }
2055
2056 .uci-change-list del,
2057 .uci-change-list ins,
2058 .uci-change-list var,
2059 .uci-change-legend-label del,
2060 .uci-change-legend-label ins,
2061 .uci-change-legend-label var {
2062 text-decoration: none;
2063 font-family: monospace;
2064 font-style: normal;
2065 border: 1px solid #ccc;
2066 background: #eee;
2067 padding: 2px;
2068 display: block;
2069 line-height: 15px;
2070 margin-bottom: 1px;
2071 }
2072
2073 .uci-change-list ins,
2074 .uci-change-legend-label ins {
2075 border-color: #0f0;
2076 background: #cfc;
2077 }
2078
2079 .uci-change-list del,
2080 .uci-change-legend-label del {
2081 border-color: #f00;
2082 background: #fcc;
2083 }
2084
2085 .uci-change-list var,
2086 .uci-change-legend-label var {
2087 border-color: #ccc;
2088 background: #eee;
2089 }
2090
2091 .uci-change-list var ins,
2092 .uci-change-list var del {
2093 display: inline-block;
2094 border: none;
2095 width: 100%;
2096 padding: 0;
2097 }
2098
2099 .uci-change-legend {
2100 padding: 5px;
2101 }
2102
2103 .uci-change-legend-label {
2104 width: 150px;
2105 float: left;
2106 }
2107
2108 .uci-change-legend-label > ins,
2109 .uci-change-legend-label > del,
2110 .uci-change-legend-label > var {
2111 float: left;
2112 margin-right: 4px;
2113 width: 10px;
2114 height: 10px;
2115 display: block;
2116 position: relative;
2117 }
2118
2119 .uci-change-legend-label var ins,
2120 .uci-change-legend-label var del {
2121 border: none;
2122 position: absolute;
2123 top: 2px;
2124 left: 2px;
2125 right: 2px;
2126 bottom: 2px;
2127 }
2128
2129 #modal_overlay {
2130 position: fixed;
2131 top: 0;
2132 bottom: 0;
2133 left: -10000px;
2134 right: 10000px;
2135 background: rgba(0, 0, 0, 0.7);
2136 z-index: 900;
2137 overflow-y: scroll;
2138 -webkit-overflow-scrolling: touch;
2139 transition: opacity .125s ease-in;
2140 opacity: 0;
2141 }
2142
2143 #modal_overlay > .modal {
2144 width: 90%;
2145 margin: 5em auto;
2146 display: flex;
2147 flex-wrap: wrap;
2148 min-height: 32px;
2149 max-width: 600px;
2150 align-items: center;
2151 border-radius: 3px;
2152 background: #fff;
2153 box-shadow: 0 0 3px #444;
2154 padding: 1em 1em .5em 1em;
2155 max-height: 2400px;
2156 min-width: 270px;
2157 }
2158
2159 #modal_overlay .modal > * {
2160 flex-basis: 100%;
2161 line-height: normal;
2162 margin-bottom: .5em;
2163 }
2164
2165 #modal_overlay .modal > pre,
2166 #modal_overlay .modal > textarea {
2167 white-space: pre-wrap;
2168 overflow: auto;
2169 }
2170
2171 body.modal-overlay-active {
2172 overflow: hidden;
2173 height: 100vh;
2174 }
2175
2176 body.modal-overlay-active #modal_overlay {
2177 left: 0;
2178 right: 0;
2179 opacity: 1;
2180 }
2181
2182 html body.apply-overlay-active {
2183 height: calc(100vh - 63px);
2184 }
2185
2186 #applyreboot-section {
2187 line-height: 300%;
2188 }
2189
2190 [data-page="admin-network-dhcp"] [data-name="ip"] {
2191 width: 15%;
2192 }
2193
2194 @keyframes flash {
2195 0% { opacity: 1; }
2196 50% { opacity: .5; }
2197 100% { opacity: 1; }
2198 }
2199
2200 .flash {
2201 animation: flash .35s;
2202 }
2203
2204 .spinning {
2205 position: relative;
2206 padding-left: 32px !important;
2207 }
2208
2209 .spinning::before {
2210 position: absolute;
2211 top: 0;
2212 left: 0;
2213 bottom: 0;
2214 width: 32px;
2215 content: " ";
2216 background: url(../resources/icons/loading.gif) no-repeat center;
2217 background-size: 16px;
2218 }
2219
2220 [data-tab-title] {
2221 height: 0;
2222 opacity: 0;
2223 overflow: hidden;
2224 }
2225
2226 [data-tab-active="true"] {
2227 opacity: 1;
2228 height: auto;
2229 overflow: visible;
2230 transition: opacity .25s ease-in;
2231 }