3 * Copyright 2012 Nut & Bolt
4 * By David Menting <david@nut-bolt.nl>
5 * Based on Bootstrap v1.4.0
7 * Copyright 2011 Twitter, Inc
8 * Licensed under the Apache License v2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Designed and built with all the love in the world @twitter by @mdo and @fat.
18 --background-color-delta-l-sign: -1;
19 --background-color-high-h: 0;
20 --background-color-high-s: 0%;
21 --background-color-high-l: 100%;
22 --background-color-high: hsl
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
));
23 --background-color-medium-h: var
(--background-color-high-h
);
24 --background-color-medium-s: var
(--background-color-high-s
);
25 --background-color-medium-delta-l: calc
(6 / 255 * 100%);
26 --background-color-medium-l: calc
(var
(--background-color-high-l
) + var
(--background-color-delta-l-sign
) * var
(--background-color-medium-delta-l
));
27 --background-color-medium: hsl
(var
(--background-color-medium-h
), var
(--background-color-medium-s
), var
(--background-color-medium-l
));
28 --background-color-low-h: var
(--background-color-high-h
);
29 --background-color-low-s: var
(--background-color-high-s
);
30 --background-color-low-delta-l: calc
(10 / 255 * 100%);
31 --background-color-low-l: calc
(var
(--background-color-high-l
) + var
(--background-color-delta-l-sign
) * var
(--background-color-low-delta-l
));
32 --background-color-low: hsl
(var
(--background-color-low-h
), var
(--background-color-low-s
), var
(--background-color-low-l
));
33 --text-color-delta-l-sign: 1;
34 --text-color-highest-h: 0;
35 --text-color-highest-s: 0%;
36 --text-color-highest-l: 0%;
37 --text-color-highest: hsl
(var
(--text-color-highest-h
), var
(--text-color-highest-s
), var
(--text-color-highest-l
));
38 --text-color-high-h: var
(--text-color-highest-h
);
39 --text-color-high-s: var
(--text-color-highest-s
);
40 --text-color-high-delta-l: calc
(64 / 255 * 100%);
41 --text-color-high-l: calc
(var
(--text-color-highest-l
) + var
(--text-color-delta-l-sign
) * var
(--text-color-high-delta-l
));
42 --text-color-high: hsl
(var
(--text-color-high-h
), var
(--text-color-high-s
), var
(--text-color-high-l
));
43 --text-color-medium-h: var
(--text-color-highest-h
);
44 --text-color-medium-s: var
(--text-color-highest-s
);
45 --text-color-medium-delta-l: calc
(128 / 255 * 100%);
46 --text-color-medium-l: calc
(var
(--text-color-highest-l
) + var
(--text-color-delta-l-sign
) * var
(--text-color-medium-delta-l
));
47 --text-color-medium: hsl
(var
(--text-color-medium-h
), var
(--text-color-medium-s
), var
(--text-color-medium-l
));
48 --text-color-low-h: var
(--text-color-highest-h
);
49 --text-color-low-s: var
(--text-color-highest-s
);
50 --text-color-low-delta-l: calc
(191 / 255 * 100%);
51 --text-color-low-l: calc
(var
(--text-color-highest-l
) + var
(--text-color-delta-l-sign
) * var
(--text-color-low-delta-l
));
52 --text-color-low: hsl
(var
(--text-color-low-h
), var
(--text-color-low-s
), var
(--text-color-low-l
));
53 --border-color-delta-l-sign: -1;
54 --border-color-high-h: var
(--background-color-high-h
);
55 --border-color-high-s: var
(--background-color-high-s
);
56 --border-color-high-delta-l: calc
(51 / 255 * 100%);
57 --border-color-high-l: calc
(var
(--background-color-high-l
) + var
(--border-color-delta-l-sign
) * var
(--border-color-high-delta-l
));
58 --border-color-high: hsl
(var
(--border-color-high-h
), var
(--border-color-high-s
), var
(--border-color-high-l
));
59 --border-color-medium-h: var
(--border-color-high-h
);
60 --border-color-medium-s: var
(--border-color-high-s
);
61 --border-color-medium-delta-l: calc
(34 / 255 * 100%);
62 --border-color-medium-l: calc
(var
(--background-color-high-l
) + var
(--border-color-delta-l-sign
) * var
(--border-color-medium-delta-l
));
63 --border-color-medium: hsl
(var
(--border-color-medium-h
), var
(--border-color-medium-s
), var
(--border-color-medium-l
));
64 --border-color-low-h: var
(--border-color-high-h
);
65 --border-color-low-s: var
(--border-color-high-s
);
66 --border-color-low-delta-l: calc
(17 / 255 * 100%);
67 --border-color-low-l: calc
(var
(--background-color-high-l
) + var
(--border-color-delta-l-sign
) * var
(--border-color-low-delta-l
));
68 --border-color-low: hsl
(var
(--border-color-low-h
), var
(--border-color-low-s
), var
(--border-color-low-l
));
72 :root
[data-darkmode
="true"] {
73 --background-color-delta-l-sign: 1;
74 --background-color-high-h: 0;
75 --background-color-high-s: 0%;
76 --background-color-high-l: calc
(34 / 255 * 100%);
77 --text-color-delta-l-sign: -1;
78 --text-color-highest-h: 0;
79 --text-color-highest-s: 0%;
80 --text-color-highest-l: 100%;
81 --border-color-delta-l-sign: 1;
86 * 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).
87 * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
93 box-sizing: border-box
;
96 abbr
[title
], acronym
[title
] {
97 border-bottom: 1px dotted
;
103 border-collapse: collapse
;
113 -webkit-text-size-adjust: 100%;
114 -ms-text-size-adjust: 100%;
118 outline: thin dotted
;
129 vertical-align: baseline
;
141 -ms-interpolation-mode: bicubic
;
151 box-sizing: border-box
;
152 vertical-align: baseline
;
156 button::-moz-focus-inner
, input::-moz-focus-inner
{
162 input
[type
="button"],
164 input
[type
="submit"] {
166 -webkit-appearance: button
;
167 word-break: break-all
;
171 input
[type
="button"][disabled
],
172 input
[type
="reset"][disabled
],
173 input
[type
="submit"][disabled
] {
177 input
[type
="search"] {
178 -webkit-appearance: textfield
;
179 box-sizing: content-box
;
182 input
[type
="search"]::-webkit-search-decoration
{
183 -webkit-appearance: none
;
193 * Basic and global styles for generating a grid system, structural layout, and page templates
194 * ------------------------------------------------------------------------------------------- */
196 background-color: var
(--background-color-high
);
197 font-family: "Helvetica Neue", Helvetica
, Arial
, sans-serif
;
201 color: var
(--text-color-high
);
215 text-decoration: none
;
216 line-height: inherit
;
217 font-weight: inherit
;
222 text-decoration: underline
;
238 * Headings, body text, lists, code, and more for a versatile and durable typography system
239 * ---------------------------------------------------------------------------------------- */
243 .table .tr.cbi-section-table-descr .th {
252 color: var
(--text-color-low
);
262 color: var
(--text-color-high
);
271 color: var
(--text-color-low
);
322 color: var
(--text-color-low
);
323 text-transform: uppercase
;
327 margin: 0 0 18px 25px;
347 color: var
(--text-color-medium
);
374 border-bottom: 1px solid var
(--border-color-low
);
384 font-weight: inherit
;
385 line-height: inherit
;
388 small
{ font-size: 0.9em }
398 font-family: Monaco
, Andale Mono
, Courier New
, monospace
;
404 background-color: #fee9cc;
405 color: rgba
(0, 0, 0, 0.75);
410 --border-color-h: var
(--background-color-high-h
);
411 --border-color-s: var
(--background-color-high-s
);
412 --border-color-delta-l: 100%;
413 --border-color-l: calc
(var
(--background-color-high-l
) + var
(--background-color-delta-l-sign
) * var
(--border-color-delta-l
));
414 --border-color-a: 0.15;
415 --border-color: hsla
(var
(--border-color-h
), var
(--border-color-s
), var
(--border-color-l
), var
(--border-color-a
));
417 background-color: var
(--background-color-low
);
423 border: 1px solid var
(--border-color
);
426 white-space: pre-wrap
;
427 word-wrap: break-word
;
431 * Base styles for various input types, form layouts, and states
432 * ------------------------------------------------------------- */
446 color: var
(--text-color-high
);
450 form
.cbi-tab-descr
{
461 form
.clearfix:before
, form
.clearfix:after
,
462 .cbi-value:before, .cbi-value:after {
468 form
.clearfix:after
,
478 font-family: "Helvetica Neue", Helvetica
, Arial
, sans-serif
;
489 .cbi-value label.cbi-value-title {
496 color: var
(--text-color-high
);
499 input
[type
=checkbox
], input
[type
=radio
] {
503 label
> input
[type
="checkbox"],
504 label
> input
[type
="radio"] {
505 vertical-align: bottom
;
512 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
514 display: inline-block
;
517 background: var
(--background-color-high
);
518 color: var
(--text-color-high
);
521 border: 1px solid var
(--border-color-high
);
527 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
536 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
546 display: inline-flex
;
547 flex-direction: column
;
550 .cbi-dynlist > .item {
552 box-shadow: 0 0 2px var
(--border-color-high
);
553 background: var
(--background-color-high
);
554 padding: 2px 2em 2px 4px;
555 border: 1px solid var
(--border-color-high
);
557 color: var
(--text-color-high
);
559 pointer-events: none
;
561 word-break: break-all
;
564 .cbi-dynlist > .item::after {
567 display: inline-flex
;
573 border: 1px solid var
(--border-color-high
);
574 border-radius: 0 3px 3px 0;
577 pointer-events: auto
;
580 .cbi-dynlist > .add-item {
584 .cbi-dynlist
> .add-item
> input
,
585 .cbi-dynlist > .add-item > button {
588 text-overflow: ellipsis
;
594 box-shadow: inset
0 -1px 3px rgba
(0, 0, 0, 0.1);
597 input
[type
=checkbox
], input
[type
=radio
] {
610 background-color: #fff;
613 line-height: initial
;
615 width: auto
!important
;
618 input
[type
=button
], input
[type
=reset
], input
[type
=submit
] {
625 background-color: #fff;
628 .td
> input
[type
=text
],
629 .td
> input
[type
=password
],
631 .td
> .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
632 .cbi-dynlist > .add-item > .cbi-dropdown {
637 background-color: #fff;
640 box-shadow: inset
0 1px 2px rgba
(0, 0, 0, 0.025);
645 color: var
(--text-color-low
);
648 .item::after, .btn, .cbi-button, input, button, textarea {
649 transition: border linear
0.2s, box-shadow linear
0.2s;
650 box-shadow: inset
0 1px 3px rgba
(0, 0, 0, 0.1);
654 .btn:hover
, .cbi-button:hover
, button:hover
,
655 input:focus
, textarea:focus
{
657 border-color: rgba
(82, 168, 236, 0.8) !important
;
658 box-shadow: inset
0 1px 3px rgba
(0, 0, 0, 0.1), 0 0 8px rgba
(82, 168, 236, 0.6);
659 text-decoration: none
;
662 input
[type
=file
]:focus
, input
[type
=checkbox
]:focus
, select:focus
{
664 outline: 1px dotted
#666;
675 background-color: var
(--background-color-medium
);
676 color: var
(--text-color-medium
);
677 border-color: var
(--border-color-low
);
678 pointer-events: none
;
684 pointer-events: auto
;
689 .cbi-section-create {
690 padding: 0 0 10px 10px;
693 .cbi-section-create {
695 display: inline-flex
;
699 .cbi-section-create > * {
704 .cbi-section-create > * > input {
710 background: var
(--background-color-low
);
712 padding: 17px 20px 18px 17px;
713 border-top: 1px solid var
(--border-color-medium
);
714 border-radius: 0 0 3px 3px;
718 .actions
.secondary-action
,
719 .cbi-page-actions .secondary-action{
723 .actions
.secondary-action a
,
724 .cbi-page-actions .secondary-action a {
728 .actions
.secondary-action
a:hover
,
729 .cbi-page-actions .secondary-action a:hover {
730 text-decoration: underline
;
733 .cbi-page-actions > form {
738 .help-inline, .help-block {
741 color: var
(--text-color-low
);
761 * Tables for, you guessed it, tabular data
762 * ---------------------------------------- */
763 .tr { display: table-row
; }
764 .table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
765 .table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
773 border-collapse: collapse
;
777 .table .th, .table .td {
779 vertical-align: middle
; /* Fixme */
780 padding: 10px 10px 9px;
785 .table .tr:first-child .th {
791 .table .td, .table .th {
792 border-top: 1px solid var
(--border-color-medium
);
796 height: calc
(3em + 20px);
799 .tr.placeholder > .td {
809 .tr.drag-over-below {
810 border: 2px solid
#0069d6;
811 border-width: 2px 0 0 0;
814 .tr.drag-over-below {
815 border-width: 0 0 2px 0;
819 * Repeatable UI elements outside the base styles provided from the scaffolding
820 * ---------------------------------------------------------------------------- */
827 margin: -5px -5px 15px -5px;
833 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
836 header
.brand:hover
, header ul
.active
> a
{
837 background-color: #333;
838 background-color: rgba
(255, 255, 255, 0.05);
840 text-decoration: none
;
846 padding: 8px 20px 12px;
860 background-color: #222;
861 background-repeat: repeat-x
;
862 background-image: linear-gradient
(to bottom
, #333333, #222222);
863 box-shadow: 0 1px 3px rgba
(0, 0, 0, 0.25), inset
0 -1px 0 rgba
(0, 0, 0, 0.1);
865 /* the redundant properties below work around a csstidy bug */
866 padding-left: calc
((100% - 940px) / 2 + 5px);
867 padding-right: calc
((100% - 940px) / 2 + 5px);
886 padding: 10px 10px 11px;
888 text-decoration: none
;
893 text-decoration: none
;
897 background-color: #222;
898 background-color: rgba
(0, 0, 0, 0.5);
903 background: rgba
(255, 255, 255, 0.05);
906 .nav .dropdown-menu {
907 background-color: #333;
910 .nav .dropdown-menu a.menu {
914 .nav .dropdown-menu li a {
916 text-shadow: 0 1px 0 rgba
(0, 0, 0, 0.5);
919 .nav .dropdown-menu li a:hover {
920 background-color: #191919;
921 background-repeat: repeat-x
;
922 background-image: linear-gradient
(to bottom
, #292929, #191919);
926 .nav .dropdown-menu .active a {
930 .nav .dropdown-menu li a {
941 display: inline-block
;
943 text-indent: -99999px;
947 border-left: 4px solid transparent
;
948 border-right: 4px solid transparent
;
949 border-top: 4px solid
#fff;
954 background-color: #fff;
968 border-color: rgba
(0, 0, 0, 0.2);
970 border-width: 0 1px 1px;
971 border-radius: 0 0 6px 6px;
972 box-shadow: 0 2px 4px rgba
(0, 0, 0, 0.2);
973 background-clip: padding-box
;
979 background-color: transparent
;
989 text-shadow: 0 1px 0 #fff;
992 .dropdown-menu a:hover {
993 background-color: #ddd;
994 background-repeat: repeat-x
;
995 background-image: linear-gradient
(to bottom
, #eee, #ddd);
997 text-decoration: none
;
998 box-shadow: inset
0 1px 0 rgba
(0, 0, 0, 0.025), inset
0 -1px rgba
(0, 0, 0, 0.025);
1001 .dropdown:hover ul.dropdown-menu {
1005 .dropdown-menu .dropdown-menu {
1014 .tabs, .cbi-tabmenu {
1015 --tab-bar-background-color: var
(--background-color-high
);
1016 --tab-inactive-background-color-h: var
(--border-color-low-h
);
1017 --tab-inactive-background-color-s: var
(--border-color-low-s
);
1018 --tab-inactive-background-color-l: var
(--border-color-low-l
);
1019 --tab-inactive-background-color: var
(--border-color-low
);
1020 --tab-inactive-border-color: var
(--border-color-medium
);
1021 --tab-inactive-text-color-delta-l: calc
(85 / 255 * 100%);
1022 --tab-inactive-text-color-l: calc
(var
(--tab-inactive-background-color-l
) + var
(--background-color-delta-l-sign
) * var
(--tab-inactive-text-color-delta-l
));
1023 --tab-inactive-text-color: hsl
(var
(--tab-inactive-background-color-h
), var
(--tab-inactive-background-color-s
), var
(--tab-inactive-text-color-l
));
1024 --tab-inactive-hover-background-color: var
(--background-color-high
);
1025 --tab-active-background-color: var
(--background-color-high
);
1026 --tab-active-text-color: #0069d6;
1027 --tab-active-border-color: var
(--border-color-medium
);
1029 margin: 0 -5px 18px;
1034 background: linear-gradient
(var
(--tab-bar-background-color
) 28px, var
(--tab-inactive-border-color
) 28px);
1035 background-size: 1px 29px;
1036 background-position: left bottom
;
1039 .tabs > li, .cbi-tabmenu > li {
1042 align-items: center
;
1045 margin: 4px 2px 0 2px;
1046 background: var
(--tab-active-background-color
);
1047 border: 1px solid var
(--tab-active-border-color
);
1048 border-bottom: none
;
1049 border-radius: 4px 4px 0 0;
1050 color: var
(--tab-active-text-color
);
1053 .tabs > li > a, .cbi-tabmenu > li > a {
1055 white-space: nowrap
;
1057 text-overflow: ellipsis
;
1059 text-decoration: none
;
1060 border-radius: 4px 4px 0 0;
1065 .tabs > li:not(.active):hover, .cbi-tabmenu > .cbi-tab-disabled:hover {
1066 background: linear-gradient
(var
(--tab-inactive-hover-background-color
) 90%, var
(--tab-inactive-border-color
) 100%);
1069 .tabs > li:not(.active), .cbi-tabmenu > .cbi-tab-disabled {
1070 color: var
(--tab-inactive-text-color
);
1071 background: linear-gradient
(var
(--tab-inactive-background-color
) 90%, var
(--tab-inactive-border-color
) 100%);
1074 .cbi-tab-disabled[data-errors]::after {
1075 content: attr
(data-errors
);
1076 background: #c43c35;
1090 .cbi-tabmenu.map > li {
1095 .cbi-tabcontainer > fieldset.cbi-section[id] > legend {
1099 .tabs .menu-dropdown, .tabs .dropdown-menu {
1102 border-radius: 0 6px 6px 6px;
1105 .tabs a.menu:after, .tabs .dropdown-toggle:after {
1106 border-top-color: #999;
1111 .tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle {
1115 .tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after {
1116 border-top-color: #555;
1119 .tab-content
> .tab-pane
,
1120 .tab-content > div {
1124 .tab-content > .active {
1131 background: linear-gradient
(to bottom
, var
(--background-color-high
), var
(--background-color-low
));
1132 border: 1px solid var
(--border-color-medium
);
1142 .breadcrumb li:not(:last-child)::after {
1147 .breadcrumb .active a {
1148 color: var
(--text-color-medium
);
1154 border-top: 1px solid var
(--border-color-low
);
1157 align-items: baseline
;
1158 justify-content: space-between
;
1165 background: rgba
(0, 0, 0, 0.7);
1168 transition: opacity
.125s ease-in
;
1180 background: var
(--background-color-high
);
1181 box-shadow: 0 0 3px #444;
1182 padding: 1em 1em .5em 1em;
1187 line-height: normal
;
1188 margin-bottom: .5em;
1194 white-space: pre-wrap
;
1198 body
.modal-overlay-active
{
1203 body
.modal-overlay-active #modal_overlay
{
1207 visibility: visible
;
1211 .alert-message
.danger
,
1213 .alert-message
.danger:hover
,
1215 .alert-message
.error
,
1217 .alert-message
.error:hover
,
1219 .alert-message
.success
,
1221 .alert-message
.success:hover
,
1223 .alert-message
.info
,
1225 .alert-message
.info:hover
,
1226 .cbi-tooltip.error, .cbi-tooltip.success, .cbi-tooltip.info {
1230 .btn .close, .alert-message .close {
1231 font-family: Arial
, sans-serif
;
1236 .alert-message
.danger
,
1238 .alert-message
.error
,
1239 .cbi-tooltip.error {
1240 background: linear-gradient
(to bottom
, #ee5f5b, #c43c35) repeat-x
;
1241 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1242 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1245 .btn.success, .alert-message.success, .cbi-tooltip.success {
1246 background: linear-gradient
(to bottom
, #62c462, #57a957) repeat-x
;
1247 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1248 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1251 .btn.info, .alert-message.info, .cbi-tooltip.info {
1252 background: linear-gradient
(to bottom
, #5bc0de, #339bb9) repeat-x
;
1253 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1254 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1257 .alert-message.notice, .cbi-tooltip.notice {
1258 background: linear-gradient
(to bottom
, #efefef, #fefefe) repeat-x
;
1259 text-shadow: 0 -1px 0 rgba
(255, 255, 255, 0.25);
1260 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1263 .modal.alert-message {
1264 color: var
(--text-color-high
);
1271 display: inline-block
;
1272 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--border-color-low
)) no-repeat
;
1274 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1275 color: var
(--text-color-high
);
1278 border: 1px solid var
(--border-color-high
);
1280 box-shadow: inset
0 1px 0 hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.2), 0 1px 2px hsla
(var
(--text-color-high-h
), var
(--text-color-high-s
), var
(--text-color-high-l
), 0.05);
1286 outline: 1px dotted
#666;
1290 .cbi-input-invalid
.cbi-dropdown:not
(.btn
):not
(.cbi-button
),
1291 .cbi-input-invalid
.cbi-dropdown:not
([open
]) > ul
> li
,
1292 .cbi-value-error input {
1297 .cbi-button-positive
,
1298 .cbi-button-fieldadd
,
1305 .cbi-button-neutral
,
1306 .cbi-button-download
,
1311 color: var
(--text-color-high
);
1319 border-color: #0069d6;
1323 .cbi-button-negative
,
1324 .cbi-section-remove
.cbi-button
,
1326 .cbi-button-remove {
1331 .cbi-page-actions::after {
1337 .cbi-page-actions > * {
1338 vertical-align: middle
;
1341 .cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-negative):not(.cbi-button-save):not(.cbi-button-reset) {
1347 .cbi-button-action
.important
,
1348 .cbi-page-actions
.cbi-button-apply
,
1349 .cbi-section-actions .cbi-button-edit {
1351 background: linear-gradient
(to bottom
, #0069d6, #0049d6) no-repeat
;
1352 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1355 .cbi-button-positive
.important
,
1356 .cbi-page-actions .cbi-button-save {
1358 background: linear-gradient
(to bottom
, #4a4, #484) no-repeat
;
1359 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1362 .cbi-button-negative.important {
1364 background: linear-gradient
(to bottom
, #c44, #c00) no-repeat
;
1365 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1368 .cbi-page-actions
.cbi-button-apply
+ .cbi-button-save
,
1369 .cbi-page-actions .cbi-button-negative + .cbi-button-save {
1370 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--border-color-low
));
1371 text-shadow: 0 -1px 0 hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1376 display: inline-flex
!important
;
1380 padding: 0 !important
;
1383 .cbi-dropdown:not(.btn):not(.cbi-button) {
1384 background: linear-gradient
(var
(--background-color-high
) 0%, var
(--border-color-low
) 100%);
1385 border: 1px solid var
(--border-color-high
);
1387 color: var
(--text-color-high
);
1390 .cbi-dynlist
> .item:focus
,
1391 .cbi-dropdown:focus {
1392 outline: 2px solid
#4b6e9b;
1395 .cbi-dropdown > ul {
1396 margin: 0 !important
;
1405 .cbi-dropdown
.btn
> ul:not
(.dropdown
),
1406 .cbi-dropdown.cbi-button > ul:not(.dropdown) {
1407 margin: 0 0 0 13px !important
;
1410 .cbi-dropdown
.btn
.spinning
> ul:not
(.dropdown
),
1411 .cbi-dropdown.cbi-button.spinning > ul:not(.dropdown) {
1412 margin: 0 !important
;
1415 .cbi-dropdown > ul.preview {
1419 .cbi-dropdown
> .open
,
1420 .cbi-dropdown > .more {
1424 flex-direction: column
;
1425 justify-content: center
;
1431 .cbi-dropdown
.btn
> .open
,
1432 .cbi-dropdown.cbi-button > .open {
1435 border-left: 1px solid
;
1438 .cbi-dropdown
> .more
,
1439 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li[placeholder] {
1442 text-shadow: 1px 1px 0px var
(--background-color-high
);
1444 justify-content: center
;
1447 .cbi-dropdown > ul > li {
1449 white-space: nowrap
;
1451 text-overflow: ellipsis
;
1454 align-items: center
;
1459 .cbi-dropdown
> ul
.dropdown
> li
,
1460 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li {
1463 color: var
(--text-color-high
);
1466 .cbi-dropdown > ul > li .hide-open { display: block
; display: initial
; }
1467 .cbi-dropdown > ul > li .hide-close { display: none
; }
1469 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1470 border-left: 1px solid var
(--border-color-high
);
1473 .cbi-dropdown[empty] > ul {
1477 .cbi-dropdown > ul > li > form {
1481 pointer-events: none
;
1484 .cbi-dropdown > ul > li img {
1485 vertical-align: middle
;
1486 margin-right: .25em;
1489 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1493 .cbi-dropdown > ul > li input[type="text"] {
1497 .cbi-dropdown[open] {
1501 .cbi-dropdown[open] > ul.dropdown {
1503 background: var
(--background-color-low
);
1504 border: 1px solid
#918e8c;
1505 box-shadow: 0 0 4px #918e8c;
1511 transition: max-height
.125s ease-in
;
1514 .cbi-dropdown
> ul
> li
[display
],
1515 .cbi-dropdown
[open
] > ul
.preview
,
1516 .cbi-dropdown
[open
] > ul
.dropdown
> li
,
1517 .cbi-dropdown
[multiple
] > ul
> li
> label
,
1518 .cbi-dropdown
[multiple
][open
] > ul
.dropdown
> li
,
1519 .cbi-dropdown
[multiple
][more
] > .more
,
1520 .cbi-dropdown[multiple][empty] > .more {
1522 display: flex
!important
;
1525 .cbi-dropdown
[empty
] > ul
> li
,
1526 .cbi-dropdown
[optional
][open
] > ul
.dropdown
> li
[placeholder
],
1527 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1528 display: block
!important
;
1531 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none
; }
1532 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block
; display: initial
; }
1534 .cbi-dropdown[open] > ul.dropdown > li {
1535 border-bottom: 1px solid var
(--border-color-high
);
1538 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1539 background: #b0d0f0;
1543 .cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li[selected][placeholder] {
1545 text-shadow: 1px 1px 0px #fff;
1548 .cbi-dropdown[open] > ul.dropdown > li.focus {
1549 background: linear-gradient
(90deg, #a3c2e8 0%, #84aad9 100%);
1553 .cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li.focus[placeholder] {
1555 text-shadow: 1px 1px 0px #fff;
1558 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1560 border-bottom: none
;
1563 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1567 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1571 .cbi-dropdown[disabled] {
1572 pointer-events: none
;
1576 input
[type
="text"] + .cbi-button
,
1577 input
[type
="password"] + .cbi-button
,
1578 select
+ .cbi-button
{
1579 border-radius: 0 3px 3px 0;
1580 border-color: var
(--border-color-high
);
1583 vertical-align: top
;
1589 select
+ .cbi-button
{
1590 border-left-color: transparent
;
1597 .cbi-title-ref::after {
1601 .cbi-tooltip-container {
1609 box-shadow: 0 0 2px var
(--border-color-high
);
1611 background: var
(--background-color-high
);
1615 transition: opacity
.25s ease-in
;
1618 .cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
1621 transition: opacity
.25s ease-in
;
1625 border: 1px solid var
(--border-color-high
);
1631 background: var
(--background-color-medium
);
1634 .cbi-progressbar > div {
1635 background: #90c0e0;
1637 transition: width
.25s ease-in
;
1641 .cbi-progressbar::after {
1648 text-shadow: 0 0 2px var
(--background-color-high
);
1649 content: attr
(title
);
1652 text-overflow: ellipsis
;
1655 :root
[data-darkmode
="true"] .cbi-progressbar::after
{
1656 mix-blend-mode: difference
;
1659 .zonebadge .cbi-tooltip {
1661 background: inherit
;
1662 margin: -1.6em 0 0 -5px;
1664 pointer-events: none
;
1665 box-shadow: 0 0 3px #444;
1668 .zonebadge .cbi-tooltip > * {
1677 .zone-forwards > * {
1682 .zone-forwards > span {
1687 .zone-forwards
.zone-src
,
1688 .zone-forwards .zone-dest {
1690 flex-direction: column
;
1693 .btn.active, .btn:active {
1694 box-shadow: inset
0 2px 4px rgba
(0, 0, 0, 0.25), 0 1px 2px rgba
(0, 0, 0, 0.05);
1711 line-height: normal
;
1712 padding: 9px 14px 9px;
1717 padding: 7px 9px 7px;
1721 button
.btn::-moz-focus-inner
, input
[type
=submit
].btn::-moz-focus-inner
{
1731 line-height: 13.5px;
1732 text-shadow: 0 1px 0 #fff;
1738 text-decoration: none
;
1744 padding: .5em .5em .25em .5em;
1745 margin-bottom: .5em;
1747 background: linear-gradient
(to bottom
, #fceec1, #eedc94) repeat-x
;
1748 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1749 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1750 text-shadow: 0 1px 0 rgba
(255, 255, 255, 0.5);
1752 border-style: solid
;
1754 box-shadow: inset
0 1px 0 rgba
(255, 255, 255, 0.25);
1758 .alert-message .close {
1771 line-height: inherit
;
1772 background: transparent
;
1777 .alert-message button {
1782 header
[data-indicator
] {
1783 padding: 1px 3px 2px;
1786 color: #fff !important
;
1787 text-transform: uppercase
;
1788 white-space: nowrap
;
1789 background-color: #bfbfbf;
1795 header
[data-indicator
][data-clickable
] {
1805 text-decoration: none
;
1809 background-color: #c43c35;
1813 background-color: #f89406;
1817 background-color: #46a546;
1821 header
[data-indicator
][data-style
="active"] {
1822 background-color: #62cffc;
1825 /* LuCI specific items */
1826 .hidden { display: none
}
1828 form
.inline
{ display: inline
; margin-bottom: 0; }
1830 header
.pull-right
{ padding-top: 8px; margin-left: auto
; }
1832 #modemenu li:last-child span
.divider
{ display: none
}
1836 color: var
(--text-color-highest
);
1839 .cbi-section-table
.tr:hover
.td
,
1840 .cbi-section-table
.tr:hover
.th
,
1841 .cbi-section-table .tr:hover::before {
1842 background-color: var
(--background-color-low
);
1845 .cbi-section-table .tr.cbi-section-table-descr .th {
1846 font-weight: normal
;
1849 .cbi-section-table-titles
.named::before
,
1850 .cbi-section-table-descr
.named::before
,
1851 .cbi-section-table-row[data-title]::before {
1852 content: attr
(data-title
) " ";
1853 display: table-cell
;
1854 padding: 10px 10px 9px;
1857 vertical-align: middle
;
1860 .cbi-section-table-titles
.named::before
,
1861 .cbi-section-table-descr
.named::before
,
1862 .cbi-section-table-row[data-title]::before {
1863 border-top: 1px solid var
(--border-color-medium
);
1866 .left { text-align: left
!important
; }
1867 .right { text-align: right
!important
; }
1868 .center { text-align: center
!important
; }
1869 .top { vertical-align: top
!important
; }
1870 .middle { vertical-align: middle
!important
; }
1871 .bottom { vertical-align: bottom
!important
; }
1873 .cbi-value-field input
[type
=checkbox
],
1874 .cbi-value-field input[type=radio] {
1880 .cbi-value-field table td {
1884 .table
.cbi-section-table input
[type
="password"],
1885 .table
.cbi-section-table input
[type
="text"],
1886 .table
.cbi-section-table textarea
,
1887 .table.cbi-section-table select {
1891 .table.cbi-section-table .td.cbi-section-table-cell {
1892 white-space: nowrap
;
1896 .table.cbi-section-table .td.cbi-section-table-cell select {
1900 .td.cbi-section-actions {
1902 vertical-align: middle
;
1905 .td.cbi-section-actions > * {
1909 .td
.cbi-section-actions
> * > *,
1910 .td.cbi-section-actions > * > form > * {
1915 .td.cbi-section-actions > * > form {
1916 display: inline-flex
;
1920 .table.valign-middle .td {
1921 vertical-align: middle
;
1926 .tr.cbi-section-table-titles {
1927 background: var
(--background-color-medium
);
1930 .cbi-value-description {
1931 background: url
("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20'><path fill='%230069d6' d='M10 0A10 10 0 000 10a10 10 0 0010 10 10 10 0 0010-10A10 10 0 0010 0zm1 17H9v-2h2v2zm2.1-7.7l-.9.9c-.8.7-1.2 1.3-1.2 2.8H9v-.5c0-1.1.4-2.1 1.2-2.8l1.2-1.3c.4-.3.6-.8.6-1.4a2 2 0 00-2-2 2 2 0 00-2 2H6a4 4 0 014-4 4 4 0 014 4c0 .9-.4 1.7-.9 2.3z'/></svg>") 0 .05em/1em no-repeat
;
1933 padding: .1em 0 0 1.3em;
1936 .cbi-section-error {
1937 border: 1px solid
#f00;
1939 background-color: #fce6e6;
1941 margin-bottom: 18px;
1944 .cbi-section-error ul { margin: 0 0 0 20px; }
1946 .cbi-section-error ul li {
1952 border: 1px solid var
(--border-color-high
);
1955 white-space: nowrap
;
1956 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--background-color-medium
));
1957 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1959 box-shadow: inset
0 1px 0 hsla
(var
(--text-color-low-h
), var
(--text-color-low-s
), var
(--text-color-low-l
), 0.2), 0 1px 2px hsla
(var
(--text-color-highest-h
), var
(--text-color-highest-s
), var
(--text-color-highest-l
), 0.05);
1960 display: inline-flex
;
1961 flex-direction: column
;
1966 .ifacebox .ifacebox-head {
1967 border-bottom: 1px solid var
(--border-color-high
);
1968 border-radius: 4px 4px 0 0;
1972 text-shadow: 0 1px 1px rgba
(255, 255, 255, 0.75);
1975 .ifacebox .ifacebox-head.active {
1976 background: #90c0e0;
1979 .ifacebox .ifacebox-body {
1984 display: inline-block
;
1985 flex-direction: row
;
1986 white-space: nowrap
;
1987 border: 1px solid var
(--border-color-high
);
1989 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--background-color-medium
));
1990 color: var
(--text-color-high
);
1991 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1993 box-shadow: inset
0 1px 0 hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.2), 0 1px 2px hsla
(var
(--text-color-high-h
), var
(--text-color-high-s
), var
(--text-color-high-l
), 0.05);
2001 vertical-align: middle
;
2004 .ifacebadge-active {
2009 .network-status-table {
2014 .network-status-table .ifacebox {
2019 .network-status-table .ifacebox-body {
2021 flex-direction: column
;
2026 .network-status-table .ifacebox-body > * {
2030 .network-status-table .ifacebox-body > span {
2035 .network-status-table .ifacebox-body > div {
2041 #dsl_status_table .ifacebox-body span
> strong
{
2042 display: inline-block
;
2047 .network-status-table .ifacebox-body .ifacebadge {
2056 display: inline-flex
;
2059 .network-status-table .ifacebox-body .ifacebadge > span {
2061 text-overflow: ellipsis
;
2065 .ifacebadge.large > * {
2072 display: inline-block
;
2073 white-space: nowrap
;
2075 text-shadow: 0 1px 1px rgba
(255, 255, 255, 0.75);
2079 .zonebadge > strong {
2081 display: inline-block
;
2088 .zonebadge > .ifacebadge {
2093 border: 1px dashed
#aaa;
2100 .td.cbi-value-field var {
2105 div
.cbi-value var
[data-tooltip
],
2106 .td
.cbi-value-field var
[data-tooltip
],
2107 div
.cbi-value var
.cbi-tooltip-container
,
2108 .td.cbi-value-field var.cbi-tooltip-container {
2110 border-bottom: 1px dotted
#0069d6;
2113 div
.cbi-value var
.cbi-tooltip-container
,
2114 .td.cbi-value-field var.cbi-tooltip-container .cbi-tooltip {
2116 white-space: normal
;
2117 color: var
(--text-color-high
);
2120 #modal_overlay > .modal
.uci-dialog
,
2121 #modal_overlay > .modal
.cbi-modal
{
2130 .uci-change-list
> del
,
2131 .uci-change-list
> ins
,
2132 .uci-change-list
> var
,
2133 .uci-change-legend-label
> del
,
2134 .uci-change-legend-label
> ins
,
2135 .uci-change-legend-label > var {
2137 border: 1px solid
#ccc;
2141 text-overflow: ellipsis
;
2145 .uci-change-list
> * > del
,
2146 .uci-change-list
> * > ins
,
2147 .uci-change-list > * > var {
2149 text-overflow: ellipsis
;
2152 .uci-change-list del
,
2153 .uci-change-list ins
,
2154 .uci-change-list var
,
2155 .uci-change-legend-label del
,
2156 .uci-change-legend-label ins
,
2157 .uci-change-legend-label var {
2158 text-decoration: none
;
2159 font-family: monospace
;
2165 .uci-change-list ins
,
2166 .uci-change-legend-label ins {
2171 .uci-change-list del
,
2172 .uci-change-legend-label del {
2177 .uci-change-list var
,
2178 .uci-change-legend-label var {
2183 .uci-change-legend {
2188 .uci-change-legend-label {
2192 align-items: center
;
2195 .uci-change-legend-label
> ins
,
2196 .uci-change-legend-label
> del
,
2197 .uci-change-legend-label > var {
2204 .uci-change-legend-label > var > * {
2208 html body
.apply-overlay-active
{
2209 height: calc
(100vh - 63px);
2212 #applyreboot-section {
2216 [data-page
="admin-network-dhcp"] [data-name
="ip"] {
2222 50% { opacity: .5; }
2223 100% { opacity: 1; }
2227 animation: flash
.35s;
2232 padding-left: 32px !important
;
2242 background: url
(../resources/icons/loading.gif) no-repeat center
;
2243 background-size: 16px;
2252 [data-tab-active
="true"] {
2256 transition: opacity
.25s ease-in
;
2262 border: 1px solid
#ccc;
2265 flex-direction: column
;
2271 .cbi-filebrowser.open {
2275 transition: opacity
.25s ease-in
;
2278 .cbi-filebrowser > * {
2281 text-overflow: ellipsis
;
2282 padding: 0 0 .25em 0;
2283 margin: .25em .25em 0px .25em;
2284 white-space: nowrap
;
2285 border-bottom: 1px solid
#ccc;
2288 .cbi-filebrowser .cbi-button-positive {
2289 margin-right: .25em;
2292 .cbi-filebrowser > div {
2293 border-bottom: none
;
2296 .cbi-filebrowser > ul > li {
2298 flex-direction: row
;
2301 .cbi-filebrowser > ul > li:hover {
2302 background: #f5f5f5;
2305 .cbi-filebrowser > ul > li > div:first-child {
2308 text-overflow: ellipsis
;
2311 .cbi-filebrowser > ul > li > div:last-child {
2316 .cbi-filebrowser > ul > li > div:last-child > button {
2317 padding: .125em .25em;
2318 margin: 1px 0 1px .25em;
2321 .cbi-filebrowser .upload {
2323 flex-direction: row
;
2325 margin: 0 -.125em .25em -.125em;
2326 padding: 0 0 .125em 0px;
2327 border-bottom: 1px solid
#ccc;
2330 .cbi-filebrowser .upload > * {
2335 .cbi-filebrowser .upload > .btn {
2339 .cbi-filebrowser .upload > div {
2344 .cbi-filebrowser .upload > div > input {
2348 @keyframes fade-in
{
2350 100% { opacity: 1; }
2353 @keyframes fade-out
{
2355 100% { opacity: 0; }
2359 animation: fade-in
.4s ease
;
2363 animation: fade-out
.4s ease
;
2366 .assoclist .ifacebadge {
2368 flex-direction: column
;
2369 align-items: center
;
2370 white-space: normal
;
2374 .assoclist .ifacebadge > img {
2378 .assoclist
.td:nth-of-type
(3),
2379 .assoclist .td:nth-of-type(5) {
2383 .assoclist .td:nth-of-type(6) button {