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
));
70 color-scheme: light dark
;
73 @media (prefers-color-scheme: dark
) {
75 --background-color-delta-l-sign: 1;
76 --background-color-high-h: 0;
77 --background-color-high-s: 0%;
78 --background-color-high-l: calc
(34 / 255 * 100%);
79 --text-color-delta-l-sign: -1;
80 --text-color-highest-h: 0;
81 --text-color-highest-s: 0%;
82 --text-color-highest-l: 100%;
83 --border-color-delta-l-sign: 1;
88 * 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).
89 * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
95 box-sizing: border-box
;
98 abbr
[title
], acronym
[title
] {
99 border-bottom: 1px dotted
;
100 font-weight: inherit
;
105 border-collapse: collapse
;
115 -webkit-text-size-adjust: 100%;
116 -ms-text-size-adjust: 100%;
120 outline: thin dotted
;
131 vertical-align: baseline
;
143 -ms-interpolation-mode: bicubic
;
153 box-sizing: border-box
;
154 vertical-align: baseline
;
158 button::-moz-focus-inner
, input::-moz-focus-inner
{
164 input
[type
="button"],
166 input
[type
="submit"] {
168 -webkit-appearance: button
;
169 word-break: break-all
;
173 input
[type
="button"][disabled
],
174 input
[type
="reset"][disabled
],
175 input
[type
="submit"][disabled
] {
179 input
[type
="search"] {
180 -webkit-appearance: textfield
;
181 box-sizing: content-box
;
184 input
[type
="search"]::-webkit-search-decoration
{
185 -webkit-appearance: none
;
195 * Basic and global styles for generating a grid system, structural layout, and page templates
196 * ------------------------------------------------------------------------------------------- */
198 background-color: var
(--background-color-high
);
199 font-family: "Helvetica Neue", Helvetica
, Arial
, sans-serif
;
203 color: var
(--text-color-high
);
217 text-decoration: none
;
218 line-height: inherit
;
219 font-weight: inherit
;
224 text-decoration: underline
;
240 * Headings, body text, lists, code, and more for a versatile and durable typography system
241 * ---------------------------------------------------------------------------------------- */
245 .table .tr.cbi-section-table-descr .th {
254 color: var
(--text-color-low
);
264 color: var
(--text-color-high
);
273 color: var
(--text-color-low
);
324 color: var
(--text-color-low
);
325 text-transform: uppercase
;
329 margin: 0 0 18px 25px;
349 color: var
(--text-color-medium
);
376 border-bottom: 1px solid var
(--border-color-low
);
386 font-weight: inherit
;
387 line-height: inherit
;
390 small
{ font-size: 0.9em }
400 font-family: Monaco
, Andale Mono
, Courier New
, monospace
;
406 background-color: #fee9cc;
407 color: rgba
(0, 0, 0, 0.75);
412 --border-color-h: var
(--background-color-high-h
);
413 --border-color-s: var
(--background-color-high-s
);
414 --border-color-delta-l: 100%;
415 --border-color-l: calc
(var
(--background-color-high-l
) + var
(--background-color-delta-l-sign
) * var
(--border-color-delta-l
));
416 --border-color-a: 0.15;
417 --border-color: hsla
(var
(--border-color-h
), var
(--border-color-s
), var
(--border-color-l
), var
(--border-color-a
));
419 background-color: var
(--background-color-low
);
425 border: 1px solid var
(--border-color
);
428 white-space: pre-wrap
;
429 word-wrap: break-word
;
433 * Base styles for various input types, form layouts, and states
434 * ------------------------------------------------------------- */
448 color: var
(--text-color-high
);
452 form
.cbi-tab-descr
{
463 form
.clearfix:before
, form
.clearfix:after
,
464 .cbi-value:before, .cbi-value:after {
470 form
.clearfix:after
,
480 font-family: "Helvetica Neue", Helvetica
, Arial
, sans-serif
;
491 .cbi-value label.cbi-value-title {
498 color: var
(--text-color-high
);
501 input
[type
=checkbox
], input
[type
=radio
] {
505 label
> input
[type
="checkbox"],
506 label
> input
[type
="radio"] {
507 vertical-align: bottom
;
514 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
516 display: inline-block
;
519 background: var
(--background-color-high
);
520 color: var
(--text-color-high
);
523 border: 1px solid var
(--border-color-high
);
529 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
538 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
548 display: inline-flex
;
549 flex-direction: column
;
552 .cbi-dynlist > .item {
554 box-shadow: 0 0 2px var
(--border-color-high
);
555 background: var
(--background-color-high
);
556 padding: 2px 2em 2px 4px;
557 border: 1px solid var
(--border-color-high
);
559 color: var
(--text-color-high
);
561 pointer-events: none
;
563 word-break: break-all
;
566 .cbi-dynlist > .item::after {
569 display: inline-flex
;
575 border: 1px solid var
(--border-color-high
);
576 border-radius: 0 3px 3px 0;
579 pointer-events: auto
;
582 .cbi-dynlist > .add-item {
586 .cbi-dynlist
> .add-item
> input
,
587 .cbi-dynlist > .add-item > button {
590 text-overflow: ellipsis
;
596 box-shadow: inset
0 -1px 3px rgba
(0, 0, 0, 0.1);
599 input
[type
=checkbox
], input
[type
=radio
] {
612 background-color: #fff;
615 line-height: initial
;
617 width: auto
!important
;
620 input
[type
=button
], input
[type
=reset
], input
[type
=submit
] {
627 background-color: #fff;
630 .td
> input
[type
=text
],
631 .td
> input
[type
=password
],
633 .td
> .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
634 .cbi-dynlist > .add-item > .cbi-dropdown {
639 background-color: #fff;
642 box-shadow: inset
0 1px 2px rgba
(0, 0, 0, 0.025);
647 color: var
(--text-color-low
);
650 .item::after, .btn, .cbi-button, input, button, textarea {
651 transition: border linear
0.2s, box-shadow linear
0.2s;
652 box-shadow: inset
0 1px 3px rgba
(0, 0, 0, 0.1);
656 .btn:hover
, .cbi-button:hover
, button:hover
,
657 input:focus
, textarea:focus
{
659 border-color: rgba
(82, 168, 236, 0.8) !important
;
660 box-shadow: inset
0 1px 3px rgba
(0, 0, 0, 0.1), 0 0 8px rgba
(82, 168, 236, 0.6);
661 text-decoration: none
;
664 input
[type
=file
]:focus
, input
[type
=checkbox
]:focus
, select:focus
{
666 outline: 1px dotted
#666;
677 background-color: var
(--background-color-medium
);
678 color: var
(--text-color-medium
);
679 border-color: var
(--border-color-low
);
680 pointer-events: none
;
686 pointer-events: auto
;
691 .cbi-section-create {
692 padding: 0 0 10px 10px;
695 .cbi-section-create {
697 display: inline-flex
;
701 .cbi-section-create > * {
706 .cbi-section-create > * > input {
712 background: var
(--background-color-low
);
714 padding: 17px 20px 18px 17px;
715 border-top: 1px solid var
(--border-color-medium
);
716 border-radius: 0 0 3px 3px;
720 .actions
.secondary-action
,
721 .cbi-page-actions .secondary-action{
725 .actions
.secondary-action a
,
726 .cbi-page-actions .secondary-action a {
730 .actions
.secondary-action
a:hover
,
731 .cbi-page-actions .secondary-action a:hover {
732 text-decoration: underline
;
735 .cbi-page-actions > form {
740 .help-inline, .help-block {
743 color: var
(--text-color-low
);
763 * Tables for, you guessed it, tabular data
764 * ---------------------------------------- */
765 .tr { display: table-row
; }
766 .table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
767 .table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
775 border-collapse: collapse
;
779 .table .th, .table .td {
781 vertical-align: middle
; /* Fixme */
782 padding: 10px 10px 9px;
787 .table .tr:first-child .th {
793 .table .td, .table .th {
794 border-top: 1px solid var
(--border-color-medium
);
798 height: calc
(3em + 20px);
801 .tr.placeholder > .td {
811 .tr.drag-over-below {
812 border: 2px solid
#0069d6;
813 border-width: 2px 0 0 0;
816 .tr.drag-over-below {
817 border-width: 0 0 2px 0;
821 * Repeatable UI elements outside the base styles provided from the scaffolding
822 * ---------------------------------------------------------------------------- */
829 margin: -5px -5px 15px -5px;
835 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
838 header
.brand:hover
, header ul
.active
> a
{
839 background-color: #333;
840 background-color: rgba
(255, 255, 255, 0.05);
842 text-decoration: none
;
848 padding: 8px 20px 12px;
862 background-color: #222;
863 background-repeat: repeat-x
;
864 background-image: linear-gradient
(to bottom
, #333333, #222222);
865 box-shadow: 0 1px 3px rgba
(0, 0, 0, 0.25), inset
0 -1px 0 rgba
(0, 0, 0, 0.1);
885 padding: 10px 10px 11px;
887 text-decoration: none
;
892 text-decoration: none
;
896 background-color: #222;
897 background-color: rgba
(0, 0, 0, 0.5);
902 background: rgba
(255, 255, 255, 0.05);
905 .nav .dropdown-menu {
906 background-color: #333;
909 .nav .dropdown-menu a.menu {
913 .nav .dropdown-menu li a {
915 text-shadow: 0 1px 0 rgba
(0, 0, 0, 0.5);
918 .nav .dropdown-menu li a:hover {
919 background-color: #191919;
920 background-repeat: repeat-x
;
921 background-image: linear-gradient
(to bottom
, #292929, #191919);
925 .nav .dropdown-menu .active a {
929 .nav .dropdown-menu li a {
940 display: inline-block
;
942 text-indent: -99999px;
946 border-left: 4px solid transparent
;
947 border-right: 4px solid transparent
;
948 border-top: 4px solid
#fff;
953 background-color: #fff;
967 border-color: rgba
(0, 0, 0, 0.2);
969 border-width: 0 1px 1px;
970 border-radius: 0 0 6px 6px;
971 box-shadow: 0 2px 4px rgba
(0, 0, 0, 0.2);
972 background-clip: padding-box
;
978 background-color: transparent
;
988 text-shadow: 0 1px 0 #fff;
991 .dropdown-menu a:hover {
992 background-color: #ddd;
993 background-repeat: repeat-x
;
994 background-image: linear-gradient
(to bottom
, #eee, #ddd);
996 text-decoration: none
;
997 box-shadow: inset
0 1px 0 rgba
(0, 0, 0, 0.025), inset
0 -1px rgba
(0, 0, 0, 0.025);
1000 .dropdown:hover ul.dropdown-menu {
1004 .dropdown-menu .dropdown-menu {
1013 .tabs, .cbi-tabmenu {
1014 --tab-bar-background-color: var
(--background-color-high
);
1015 --tab-inactive-background-color-h: var
(--border-color-low-h
);
1016 --tab-inactive-background-color-s: var
(--border-color-low-s
);
1017 --tab-inactive-background-color-l: var
(--border-color-low-l
);
1018 --tab-inactive-background-color: var
(--border-color-low
);
1019 --tab-inactive-border-color: var
(--border-color-medium
);
1020 --tab-inactive-text-color-delta-l: calc
(85 / 255 * 100%);
1021 --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
));
1022 --tab-inactive-text-color: hsl
(var
(--tab-inactive-background-color-h
), var
(--tab-inactive-background-color-s
), var
(--tab-inactive-text-color-l
));
1023 --tab-inactive-hover-background-color: var
(--background-color-high
);
1024 --tab-active-background-color: var
(--background-color-high
);
1025 --tab-active-text-color: #0069d6;
1026 --tab-active-border-color: var
(--border-color-medium
);
1028 margin: 0 -5px 18px;
1033 background: linear-gradient
(var
(--tab-bar-background-color
) 28px, var
(--tab-inactive-border-color
) 28px);
1034 background-size: 1px 29px;
1035 background-position: left bottom
;
1038 .tabs > li, .cbi-tabmenu > li {
1041 align-items: center
;
1044 margin: 4px 2px 0 2px;
1045 background: var
(--tab-active-background-color
);
1046 border: 1px solid var
(--tab-active-border-color
);
1047 border-bottom: none
;
1048 border-radius: 4px 4px 0 0;
1049 color: var
(--tab-active-text-color
);
1052 .tabs > li > a, .cbi-tabmenu > li > a {
1054 white-space: nowrap
;
1056 text-overflow: ellipsis
;
1058 text-decoration: none
;
1059 border-radius: 4px 4px 0 0;
1064 .tabs > li:not(.active):hover, .cbi-tabmenu > .cbi-tab-disabled:hover {
1065 background: linear-gradient
(var
(--tab-inactive-hover-background-color
) 90%, var
(--tab-inactive-border-color
) 100%);
1068 .tabs > li:not(.active), .cbi-tabmenu > .cbi-tab-disabled {
1069 color: var
(--tab-inactive-text-color
);
1070 background: linear-gradient
(var
(--tab-inactive-background-color
) 90%, var
(--tab-inactive-border-color
) 100%);
1073 .cbi-tab-disabled[data-errors]::after {
1074 content: attr
(data-errors
);
1075 background: #c43c35;
1089 .cbi-tabmenu.map > li {
1094 .cbi-tabcontainer > fieldset.cbi-section[id] > legend {
1098 .tabs .menu-dropdown, .tabs .dropdown-menu {
1101 border-radius: 0 6px 6px 6px;
1104 .tabs a.menu:after, .tabs .dropdown-toggle:after {
1105 border-top-color: #999;
1110 .tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle {
1114 .tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after {
1115 border-top-color: #555;
1118 .tab-content
> .tab-pane
,
1119 .tab-content > div {
1123 .tab-content > .active {
1130 background: linear-gradient
(to bottom
, var
(--background-color-high
), var
(--background-color-low
));
1131 border: 1px solid var
(--border-color-medium
);
1141 .breadcrumb li:not(:last-child)::after {
1146 .breadcrumb .active a {
1147 color: var
(--text-color-medium
);
1153 border-top: 1px solid var
(--border-color-low
);
1156 align-items: baseline
;
1157 justify-content: space-between
;
1166 background: rgba
(0, 0, 0, 0.7);
1169 -webkit-overflow-scrolling: touch
;
1170 transition: opacity
.125s ease-in
;
1182 align-items: center
;
1184 background: var
(--background-color-high
);
1185 box-shadow: 0 0 3px #444;
1186 padding: 1em 1em .5em 1em;
1192 line-height: normal
;
1193 margin-bottom: .5em;
1199 white-space: pre-wrap
;
1203 body
.modal-overlay-active
{
1208 body
.modal-overlay-active #modal_overlay
{
1212 visibility: visible
;
1216 .alert-message
.danger
,
1218 .alert-message
.danger:hover
,
1220 .alert-message
.error
,
1222 .alert-message
.error:hover
,
1224 .alert-message
.success
,
1226 .alert-message
.success:hover
,
1228 .alert-message
.info
,
1230 .alert-message
.info:hover
,
1231 .cbi-tooltip.error, .cbi-tooltip.success, .cbi-tooltip.info {
1235 .btn .close, .alert-message .close {
1236 font-family: Arial
, sans-serif
;
1241 .alert-message
.danger
,
1243 .alert-message
.error
,
1244 .cbi-tooltip.error {
1245 background: linear-gradient
(to bottom
, #ee5f5b, #c43c35) repeat-x
;
1246 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1247 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1250 .btn.success, .alert-message.success, .cbi-tooltip.success {
1251 background: linear-gradient
(to bottom
, #62c462, #57a957) repeat-x
;
1252 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1253 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1256 .btn.info, .alert-message.info, .cbi-tooltip.info {
1257 background: linear-gradient
(to bottom
, #5bc0de, #339bb9) repeat-x
;
1258 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1259 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1262 .alert-message.notice, .cbi-tooltip.notice {
1263 background: linear-gradient
(to bottom
, #efefef, #fefefe) repeat-x
;
1264 text-shadow: 0 -1px 0 rgba
(255, 255, 255, 0.25);
1265 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1268 .modal.alert-message {
1269 color: var
(--text-color-high
);
1276 display: inline-block
;
1277 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--border-color-low
)) no-repeat
;
1279 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1280 color: var
(--text-color-high
);
1283 border: 1px solid var
(--border-color-high
);
1285 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);
1291 outline: 1px dotted
#666;
1295 .cbi-input-invalid
.cbi-dropdown:not
(.btn
):not
(.cbi-button
),
1296 .cbi-input-invalid
.cbi-dropdown:not
([open
]) > ul
> li
,
1297 .cbi-value-error input {
1302 .cbi-button-positive
,
1303 .cbi-button-fieldadd
,
1310 .cbi-button-neutral
,
1311 .cbi-button-download
,
1316 color: var
(--text-color-high
);
1324 border-color: #0069d6;
1328 .cbi-button-negative
,
1329 .cbi-section-remove
.cbi-button
,
1331 .cbi-button-remove {
1336 .cbi-page-actions::after {
1342 .cbi-page-actions > * {
1343 vertical-align: middle
;
1346 .cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-negative):not(.cbi-button-save):not(.cbi-button-reset) {
1352 .cbi-button-action
.important
,
1353 .cbi-page-actions
.cbi-button-apply
,
1354 .cbi-section-actions .cbi-button-edit {
1356 background: linear-gradient
(to bottom
, #0069d6, #0049d6) no-repeat
;
1357 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1360 .cbi-button-positive
.important
,
1361 .cbi-page-actions .cbi-button-save {
1363 background: linear-gradient
(to bottom
, #4a4, #484) no-repeat
;
1364 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1367 .cbi-button-negative.important {
1369 background: linear-gradient
(to bottom
, #c44, #c00) no-repeat
;
1370 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1373 .cbi-page-actions
.cbi-button-apply
+ .cbi-button-save
,
1374 .cbi-page-actions .cbi-button-negative + .cbi-button-save {
1375 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--border-color-low
));
1376 text-shadow: 0 -1px 0 hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1381 display: inline-flex
!important
;
1385 padding: 0 !important
;
1388 .cbi-dropdown:not(.btn):not(.cbi-button) {
1389 background: linear-gradient
(var
(--background-color-high
) 0%, var
(--border-color-low
) 100%);
1390 border: 1px solid var
(--border-color-high
);
1392 color: var
(--text-color-high
);
1395 .cbi-dynlist
> .item:focus
,
1396 .cbi-dropdown:focus {
1397 outline: 2px solid
#4b6e9b;
1400 .cbi-dropdown > ul {
1401 margin: 0 !important
;
1410 .cbi-dropdown
.btn
> ul:not
(.dropdown
),
1411 .cbi-dropdown.cbi-button > ul:not(.dropdown) {
1412 margin: 0 0 0 13px !important
;
1415 .cbi-dropdown
.btn
.spinning
> ul:not
(.dropdown
),
1416 .cbi-dropdown.cbi-button.spinning > ul:not(.dropdown) {
1417 margin: 0 !important
;
1420 .cbi-dropdown > ul.preview {
1424 .cbi-dropdown
> .open
,
1425 .cbi-dropdown > .more {
1429 flex-direction: column
;
1430 justify-content: center
;
1436 .cbi-dropdown
.btn
> .open
,
1437 .cbi-dropdown.cbi-button > .open {
1440 border-left: 1px solid
;
1443 .cbi-dropdown
> .more
,
1444 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li[placeholder] {
1447 text-shadow: 1px 1px 0px var
(--background-color-high
);
1449 justify-content: center
;
1452 .cbi-dropdown > ul > li {
1454 white-space: nowrap
;
1456 text-overflow: ellipsis
;
1459 align-items: center
;
1464 .cbi-dropdown
> ul
.dropdown
> li
,
1465 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li {
1468 color: var
(--text-color-high
);
1471 .cbi-dropdown > ul > li .hide-open { display: block
; display: initial
; }
1472 .cbi-dropdown > ul > li .hide-close { display: none
; }
1474 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1475 border-left: 1px solid var
(--border-color-high
);
1478 .cbi-dropdown[empty] > ul {
1482 .cbi-dropdown > ul > li > form {
1486 pointer-events: none
;
1489 .cbi-dropdown > ul > li img {
1490 vertical-align: middle
;
1491 margin-right: .25em;
1494 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1498 .cbi-dropdown > ul > li input[type="text"] {
1502 .cbi-dropdown[open] {
1506 .cbi-dropdown[open] > ul.dropdown {
1508 background: var
(--background-color-low
);
1509 border: 1px solid
#918e8c;
1510 box-shadow: 0 0 4px #918e8c;
1516 transition: max-height
.125s ease-in
;
1519 .cbi-dropdown
> ul
> li
[display
],
1520 .cbi-dropdown
[open
] > ul
.preview
,
1521 .cbi-dropdown
[open
] > ul
.dropdown
> li
,
1522 .cbi-dropdown
[multiple
] > ul
> li
> label
,
1523 .cbi-dropdown
[multiple
][open
] > ul
.dropdown
> li
,
1524 .cbi-dropdown
[multiple
][more
] > .more
,
1525 .cbi-dropdown[multiple][empty] > .more {
1527 display: flex
!important
;
1530 .cbi-dropdown
[empty
] > ul
> li
,
1531 .cbi-dropdown
[optional
][open
] > ul
.dropdown
> li
[placeholder
],
1532 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1533 display: block
!important
;
1536 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none
; }
1537 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block
; display: initial
; }
1539 .cbi-dropdown[open] > ul.dropdown > li {
1540 border-bottom: 1px solid var
(--border-color-high
);
1543 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1544 background: #b0d0f0;
1548 .cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li[selected][placeholder] {
1550 text-shadow: 1px 1px 0px #fff;
1553 .cbi-dropdown[open] > ul.dropdown > li.focus {
1554 background: linear-gradient
(90deg, #a3c2e8 0%, #84aad9 100%);
1558 .cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li.focus[placeholder] {
1560 text-shadow: 1px 1px 0px #fff;
1563 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1565 border-bottom: none
;
1568 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1572 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1576 .cbi-dropdown[disabled] {
1577 pointer-events: none
;
1581 input
[type
="text"] + .cbi-button
,
1582 input
[type
="password"] + .cbi-button
,
1583 select
+ .cbi-button
{
1584 border-radius: 0 3px 3px 0;
1585 border-color: var
(--border-color-high
);
1588 vertical-align: top
;
1594 select
+ .cbi-button
{
1595 border-left-color: transparent
;
1602 .cbi-title-ref::after {
1606 .cbi-tooltip-container {
1614 box-shadow: 0 0 2px var
(--border-color-high
);
1616 background: var
(--background-color-high
);
1620 transition: opacity
.25s ease-in
;
1623 .cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
1626 transition: opacity
.25s ease-in
;
1630 border: 1px solid var
(--border-color-high
);
1636 background: var
(--background-color-medium
);
1639 .cbi-progressbar > div {
1640 background: #90c0e0;
1642 transition: width
.25s ease-in
;
1646 .cbi-progressbar::after {
1653 text-shadow: 0 0 2px var
(--background-color-high
);
1654 content: attr
(title
);
1657 text-overflow: ellipsis
;
1659 @media (prefers-color-scheme: dark
) {
1660 .cbi-progressbar::after {
1661 mix-blend-mode: difference
;
1665 .zonebadge .cbi-tooltip {
1667 background: inherit
;
1668 margin: -1.6em 0 0 -5px;
1670 pointer-events: none
;
1671 box-shadow: 0 0 3px #444;
1674 .zonebadge .cbi-tooltip > * {
1683 .zone-forwards > * {
1688 .zone-forwards > span {
1693 .zone-forwards
.zone-src
,
1694 .zone-forwards .zone-dest {
1696 flex-direction: column
;
1699 .btn.active, .btn:active {
1700 box-shadow: inset
0 2px 4px rgba
(0, 0, 0, 0.25), 0 1px 2px rgba
(0, 0, 0, 0.05);
1717 line-height: normal
;
1718 padding: 9px 14px 9px;
1723 padding: 7px 9px 7px;
1727 button
.btn::-moz-focus-inner
, input
[type
=submit
].btn::-moz-focus-inner
{
1737 line-height: 13.5px;
1738 text-shadow: 0 1px 0 #fff;
1744 text-decoration: none
;
1750 padding: .5em .5em .25em .5em;
1751 margin-bottom: .5em;
1753 background: linear-gradient
(to bottom
, #fceec1, #eedc94) repeat-x
;
1754 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1755 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1756 text-shadow: 0 1px 0 rgba
(255, 255, 255, 0.5);
1758 border-style: solid
;
1760 box-shadow: inset
0 1px 0 rgba
(255, 255, 255, 0.25);
1764 .alert-message .close {
1777 line-height: inherit
;
1778 background: transparent
;
1783 .alert-message button {
1788 header
[data-indicator
] {
1789 padding: 1px 3px 2px;
1792 color: #fff !important
;
1793 text-transform: uppercase
;
1794 white-space: nowrap
;
1795 background-color: #bfbfbf;
1801 header
[data-indicator
][data-clickable
] {
1811 text-decoration: none
;
1815 background-color: #c43c35;
1819 background-color: #f89406;
1823 background-color: #46a546;
1827 header
[data-indicator
][data-style
="active"] {
1828 background-color: #62cffc;
1831 /* LuCI specific items */
1832 .hidden { display: none
}
1834 form
.inline
{ display: inline
; margin-bottom: 0; }
1836 header
.pull-right
{ padding-top: 8px; margin-left: auto
; }
1838 #modemenu li:last-child span
.divider
{ display: none
}
1842 color: var
(--text-color-highest
);
1845 .cbi-section-table
.tr:hover
.td
,
1846 .cbi-section-table
.tr:hover
.th
,
1847 .cbi-section-table .tr:hover::before {
1848 background-color: var
(--background-color-low
);
1851 .cbi-section-table .tr.cbi-section-table-descr .th {
1852 font-weight: normal
;
1855 .cbi-section-table-titles
.named::before
,
1856 .cbi-section-table-descr
.named::before
,
1857 .cbi-section-table-row[data-title]::before {
1858 content: attr
(data-title
) " ";
1859 display: table-cell
;
1860 padding: 10px 10px 9px;
1863 vertical-align: middle
;
1866 .cbi-section-table-titles
.named::before
,
1867 .cbi-section-table-descr
.named::before
,
1868 .cbi-section-table-row[data-title]::before {
1869 border-top: 1px solid var
(--border-color-medium
);
1872 .left { text-align: left
!important
; }
1873 .right { text-align: right
!important
; }
1874 .center { text-align: center
!important
; }
1875 .top { vertical-align: top
!important
; }
1876 .middle { vertical-align: middle
!important
; }
1877 .bottom { vertical-align: bottom
!important
; }
1879 .cbi-value-field input
[type
=checkbox
],
1880 .cbi-value-field input[type=radio] {
1886 .cbi-value-field table td {
1890 .table
.cbi-section-table input
[type
="password"],
1891 .table
.cbi-section-table input
[type
="text"],
1892 .table
.cbi-section-table textarea
,
1893 .table.cbi-section-table select {
1897 .table.cbi-section-table .td.cbi-section-table-cell {
1898 white-space: nowrap
;
1902 .table.cbi-section-table .td.cbi-section-table-cell select {
1906 .td.cbi-section-actions {
1908 vertical-align: middle
;
1911 .td.cbi-section-actions > * {
1915 .td
.cbi-section-actions
> * > *,
1916 .td.cbi-section-actions > * > form > * {
1921 .td.cbi-section-actions > * > form {
1922 display: inline-flex
;
1926 .table.valign-middle .td {
1927 vertical-align: middle
;
1932 .tr.cbi-section-table-titles {
1933 background: var
(--background-color-medium
);
1936 .cbi-value-description {
1937 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
;
1939 padding: .1em 0 0 1.3em;
1942 .cbi-section-error {
1943 border: 1px solid
#f00;
1945 background-color: #fce6e6;
1947 margin-bottom: 18px;
1950 .cbi-section-error ul { margin: 0 0 0 20px; }
1952 .cbi-section-error ul li {
1958 border: 1px solid var
(--border-color-high
);
1961 white-space: nowrap
;
1962 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--background-color-medium
));
1963 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1965 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);
1966 display: inline-flex
;
1967 flex-direction: column
;
1972 .ifacebox .ifacebox-head {
1973 border-bottom: 1px solid var
(--border-color-high
);
1974 border-radius: 4px 4px 0 0;
1978 text-shadow: 0 1px 1px rgba
(255, 255, 255, 0.75);
1981 .ifacebox .ifacebox-head.active {
1982 background: #90c0e0;
1985 .ifacebox .ifacebox-body {
1990 display: inline-block
;
1991 flex-direction: row
;
1992 white-space: nowrap
;
1993 border: 1px solid var
(--border-color-high
);
1995 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--background-color-medium
));
1996 color: var
(--text-color-high
);
1997 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1999 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);
2007 vertical-align: middle
;
2010 .ifacebadge-active {
2015 .network-status-table {
2020 .network-status-table .ifacebox {
2025 .network-status-table .ifacebox-body {
2027 flex-direction: column
;
2032 .network-status-table .ifacebox-body > * {
2036 .network-status-table .ifacebox-body > span {
2041 .network-status-table .ifacebox-body > div {
2047 #dsl_status_table .ifacebox-body span
> strong
{
2048 display: inline-block
;
2053 .network-status-table .ifacebox-body .ifacebadge {
2062 display: inline-flex
;
2065 .network-status-table .ifacebox-body .ifacebadge > span {
2067 text-overflow: ellipsis
;
2071 .ifacebadge.large > * {
2078 display: inline-block
;
2079 white-space: nowrap
;
2081 text-shadow: 0 1px 1px rgba
(255, 255, 255, 0.75);
2085 .zonebadge > strong {
2087 display: inline-block
;
2094 .zonebadge > .ifacebadge {
2099 border: 1px dashed
#aaa;
2106 .td.cbi-value-field var {
2111 div
.cbi-value var
[data-tooltip
],
2112 .td
.cbi-value-field var
[data-tooltip
],
2113 div
.cbi-value var
.cbi-tooltip-container
,
2114 .td.cbi-value-field var.cbi-tooltip-container {
2116 border-bottom: 1px dotted
#0069d6;
2119 div
.cbi-value var
.cbi-tooltip-container
,
2120 .td.cbi-value-field var.cbi-tooltip-container .cbi-tooltip {
2122 white-space: normal
;
2123 color: var
(--text-color-high
);
2126 #modal_overlay > .modal
.uci-dialog
,
2127 #modal_overlay > .modal
.cbi-modal
{
2136 .uci-change-list
> del
,
2137 .uci-change-list
> ins
,
2138 .uci-change-list
> var
,
2139 .uci-change-legend-label
> del
,
2140 .uci-change-legend-label
> ins
,
2141 .uci-change-legend-label > var {
2143 border: 1px solid
#ccc;
2147 text-overflow: ellipsis
;
2151 .uci-change-list
> * > del
,
2152 .uci-change-list
> * > ins
,
2153 .uci-change-list > * > var {
2155 text-overflow: ellipsis
;
2158 .uci-change-list del
,
2159 .uci-change-list ins
,
2160 .uci-change-list var
,
2161 .uci-change-legend-label del
,
2162 .uci-change-legend-label ins
,
2163 .uci-change-legend-label var {
2164 text-decoration: none
;
2165 font-family: monospace
;
2171 .uci-change-list ins
,
2172 .uci-change-legend-label ins {
2177 .uci-change-list del
,
2178 .uci-change-legend-label del {
2183 .uci-change-list var
,
2184 .uci-change-legend-label var {
2189 .uci-change-legend {
2194 .uci-change-legend-label {
2198 align-items: center
;
2201 .uci-change-legend-label
> ins
,
2202 .uci-change-legend-label
> del
,
2203 .uci-change-legend-label > var {
2210 .uci-change-legend-label > var > * {
2220 background: rgba
(0, 0, 0, 0.7);
2223 -webkit-overflow-scrolling: touch
;
2224 transition: opacity
.125s ease-in
;
2228 #modal_overlay > .modal
{
2235 align-items: center
;
2237 background: var
(--background-color-high
);
2238 box-shadow: 0 0 3px #444;
2239 padding: 1em 1em .5em 1em;
2243 #modal_overlay .modal
> * {
2245 line-height: normal
;
2246 margin-bottom: .5em;
2249 #modal_overlay .modal
> pre
,
2250 #modal_overlay .modal
> textarea
{
2251 white-space: pre-wrap
;
2255 body
.modal-overlay-active
{
2260 body
.modal-overlay-active #modal_overlay
{
2266 html body
.apply-overlay-active
{
2267 height: calc
(100vh - 63px);
2270 #applyreboot-section {
2274 [data-page
="admin-network-dhcp"] [data-name
="ip"] {
2280 50% { opacity: .5; }
2281 100% { opacity: 1; }
2285 animation: flash
.35s;
2290 padding-left: 32px !important
;
2300 background: url
(../resources/icons/loading.gif) no-repeat center
;
2301 background-size: 16px;
2310 [data-tab-active
="true"] {
2314 transition: opacity
.25s ease-in
;
2320 border: 1px solid
#ccc;
2323 flex-direction: column
;
2329 .cbi-filebrowser.open {
2333 transition: opacity
.25s ease-in
;
2336 .cbi-filebrowser > * {
2339 text-overflow: ellipsis
;
2340 padding: 0 0 .25em 0;
2341 margin: .25em .25em 0px .25em;
2342 white-space: nowrap
;
2343 border-bottom: 1px solid
#ccc;
2346 .cbi-filebrowser .cbi-button-positive {
2347 margin-right: .25em;
2350 .cbi-filebrowser > div {
2351 border-bottom: none
;
2354 .cbi-filebrowser > ul > li {
2356 flex-direction: row
;
2359 .cbi-filebrowser > ul > li:hover {
2360 background: #f5f5f5;
2363 .cbi-filebrowser > ul > li > div:first-child {
2366 text-overflow: ellipsis
;
2369 .cbi-filebrowser > ul > li > div:last-child {
2374 .cbi-filebrowser > ul > li > div:last-child > button {
2375 padding: .125em .25em;
2376 margin: 1px 0 1px .25em;
2379 .cbi-filebrowser .upload {
2381 flex-direction: row
;
2383 margin: 0 -.125em .25em -.125em;
2384 padding: 0 0 .125em 0px;
2385 border-bottom: 1px solid
#ccc;
2388 .cbi-filebrowser .upload > * {
2393 .cbi-filebrowser .upload > .btn {
2397 .cbi-filebrowser .upload > div {
2402 .cbi-filebrowser .upload > div > input {
2406 @keyframes fade-in
{
2408 100% { opacity: 1; }
2411 @keyframes fade-out
{
2413 100% { opacity: 0; }
2417 animation: fade-in
.4s ease
;
2421 animation: fade-out
.4s ease
;
2424 .assoclist .ifacebadge {
2426 flex-direction: column
;
2427 align-items: center
;
2428 white-space: normal
;
2432 .assoclist .ifacebadge > img {
2436 .assoclist
.td:nth-of-type
(3),
2437 .assoclist .td:nth-of-type(5) {
2441 .assoclist .td:nth-of-type(6) button {