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