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-high-h: 0;
35 --text-color-high-s: 0%;
36 --text-color-high-l: calc
(64 / 255 * 100%);
37 --text-color-high: hsl
(var
(--text-color-high-h
), var
(--text-color-high-s
), var
(--text-color-high-l
));
38 --text-color-medium-h: var
(--text-color-high-h
);
39 --text-color-medium-s: var
(--text-color-high-s
);
40 --text-color-medium-delta-l: calc
(64 / 255 * 100%);
41 --text-color-medium-l: calc
(var
(--text-color-high-l
) + var
(--text-color-delta-l-sign
) * var
(--text-color-medium-delta-l
));
42 --text-color-medium: hsl
(var
(--text-color-medium-h
), var
(--text-color-medium-s
), var
(--text-color-medium-l
));
43 --text-color-low-h: var
(--text-color-high-h
);
44 --text-color-low-s: var
(--text-color-high-s
);
45 --text-color-low-delta-l: calc
(127 / 255 * 100%);
46 --text-color-low-l: calc
(var
(--text-color-high-l
) + var
(--text-color-delta-l-sign
) * var
(--text-color-low-delta-l
));
47 --text-color-low: hsl
(var
(--text-color-low-h
), var
(--text-color-low-s
), var
(--text-color-low-l
));
48 --border-color-delta-l-sign: -1;
49 --border-color-high-h: var
(--background-color-high-h
);
50 --border-color-high-s: var
(--background-color-high-s
);
51 --border-color-high-delta-l: calc
(51 / 255 * 100%);
52 --border-color-high-l: calc
(var
(--background-color-high-l
) + var
(--border-color-delta-l-sign
) * var
(--border-color-high-delta-l
));
53 --border-color-high: hsl
(var
(--border-color-high-h
), var
(--border-color-high-s
), var
(--border-color-high-l
));
54 --border-color-medium-h: var
(--border-color-high-h
);
55 --border-color-medium-s: var
(--border-color-high-s
);
56 --border-color-medium-delta-l: calc
(34 / 255 * 100%);
57 --border-color-medium-l: calc
(var
(--background-color-high-l
) + var
(--border-color-delta-l-sign
) * var
(--border-color-medium-delta-l
));
58 --border-color-medium: hsl
(var
(--border-color-medium-h
), var
(--border-color-medium-s
), var
(--border-color-medium-l
));
59 --border-color-low-h: var
(--border-color-high-h
);
60 --border-color-low-s: var
(--border-color-high-s
);
61 --border-color-low-delta-l: calc
(17 / 255 * 100%);
62 --border-color-low-l: calc
(var
(--background-color-high-l
) + var
(--border-color-delta-l-sign
) * var
(--border-color-low-delta-l
));
63 --border-color-low: hsl
(var
(--border-color-low-h
), var
(--border-color-low-s
), var
(--border-color-low-l
));
65 color-scheme: light dark
;
68 @media (prefers-color-scheme: dark
) {
70 --background-color-delta-l-sign: 1;
71 --background-color-high-h: 0;
72 --background-color-high-s: 0%;
73 --background-color-high-l: calc
(34 / 255 * 100%);
74 --text-color-delta-l-sign: -1;
75 --text-color-high-h: 0;
76 --text-color-high-s: 0%;
77 --text-color-high-l: 100%;
78 --border-color-delta-l-sign: 1;
83 * 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).
84 * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
90 box-sizing: border-box
;
93 abbr
[title
], acronym
[title
] {
94 border-bottom: 1px dotted
;
100 border-collapse: collapse
;
110 -webkit-text-size-adjust: 100%;
111 -ms-text-size-adjust: 100%;
115 outline: thin dotted
;
133 vertical-align: baseline
;
145 -ms-interpolation-mode: bicubic
;
155 box-sizing: border-box
;
156 vertical-align: baseline
;
160 button::-moz-focus-inner
, input::-moz-focus-inner
{
166 input
[type
="button"],
168 input
[type
="submit"] {
170 -webkit-appearance: button
;
171 word-break: break-all
;
175 input
[type
="button"][disabled
],
176 input
[type
="reset"][disabled
],
177 input
[type
="submit"][disabled
] {
181 input
[type
="search"] {
182 -webkit-appearance: textfield
;
183 box-sizing: content-box
;
186 input
[type
="search"]::-webkit-search-decoration
{
187 -webkit-appearance: none
;
197 * Basic and global styles for generating a grid system, structural layout, and page templates
198 * ------------------------------------------------------------------------------------------- */
200 background-color: var
(--background-color-high
);
201 font-family: "Helvetica Neue", Helvetica
, Arial
, sans-serif
;
205 color: var
(--text-color-high
);
206 padding: 18px 5px 5px 5px;
218 .container:before, .container:after {
230 text-decoration: none
;
231 line-height: inherit
;
232 font-weight: inherit
;
237 text-decoration: underline
;
253 * Headings, body text, lists, code, and more for a versatile and durable typography system
254 * ---------------------------------------------------------------------------------------- */
258 .table .tr.cbi-section-table-descr .th {
267 color: var
(--text-color-low
);
277 color: var
(--text-color-high
);
286 color: var
(--text-color-low
);
337 color: var
(--text-color-low
);
338 text-transform: uppercase
;
342 margin: 0 0 18px 25px;
362 color: var
(--text-color-medium
);
389 border-bottom: 1px solid var
(--border-color-low
);
399 font-weight: inherit
;
400 line-height: inherit
;
403 small
{ font-size: 0.9em }
413 font-family: Monaco
, Andale Mono
, Courier New
, monospace
;
419 background-color: #fee9cc;
420 color: rgba
(0, 0, 0, 0.75);
425 --border-color-h: var
(--background-color-high-h
);
426 --border-color-s: var
(--background-color-high-s
);
427 --border-color-delta-l: 100%;
428 --border-color-l: calc
(var
(--background-color-high-l
) + var
(--background-color-delta-l-sign
) * var
(--border-color-delta-l
));
429 --border-color-a: 0.15;
430 --border-color: hsla
(var
(--border-color-h
), var
(--border-color-s
), var
(--border-color-l
), var
(--border-color-a
));
432 background-color: var
(--background-color-low
);
438 border: 1px solid var
(--border-color
);
441 white-space: pre-wrap
;
442 word-wrap: break-word
;
446 * Base styles for various input types, form layouts, and states
447 * ------------------------------------------------------------- */
461 color: var
(--text-color-high
);
465 form
.cbi-tab-descr
{
476 form
.clearfix:before
, form
.clearfix:after
,
477 .cbi-value:before, .cbi-value:after {
483 form
.clearfix:after
,
493 font-family: "Helvetica Neue", Helvetica
, Arial
, sans-serif
;
504 .cbi-value label.cbi-value-title {
511 color: var
(--text-color-high
);
514 input
[type
=checkbox
], input
[type
=radio
] {
518 label
> input
[type
="checkbox"],
519 label
> input
[type
="radio"] {
520 vertical-align: bottom
;
527 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
529 display: inline-block
;
532 background: var
(--background-color-high
);
533 color: var
(--text-color-high
);
536 border: 1px solid var
(--border-color-high
);
542 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
551 .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
561 display: inline-flex
;
562 flex-direction: column
;
565 .cbi-dynlist > .item {
567 box-shadow: 0 0 2px var
(--border-color-high
);
568 background: var
(--background-color-high
);
569 padding: 2px 2em 2px 4px;
570 border: 1px solid var
(--border-color-high
);
572 color: var
(--text-color-high
);
574 pointer-events: none
;
576 word-break: break-all
;
579 .cbi-dynlist > .item::after {
582 display: inline-flex
;
588 border: 1px solid var
(--border-color-high
);
589 border-radius: 0 3px 3px 0;
592 pointer-events: auto
;
595 .cbi-dynlist > .add-item {
599 .cbi-dynlist
> .add-item
> input
,
600 .cbi-dynlist > .add-item > button {
603 text-overflow: ellipsis
;
609 box-shadow: inset
0 -1px 3px rgba
(0, 0, 0, 0.1);
612 input
[type
=checkbox
], input
[type
=radio
] {
625 background-color: #fff;
628 line-height: initial
;
630 width: auto
!important
;
633 input
[type
=button
], input
[type
=reset
], input
[type
=submit
] {
640 background-color: #fff;
643 .td
> input
[type
=text
],
644 .td
> input
[type
=password
],
646 .td
> .cbi-dropdown:not
(.btn
):not
(.cbi-button
),
647 .cbi-dynlist > .add-item > .cbi-dropdown {
652 background-color: #fff;
655 box-shadow: inset
0 1px 2px rgba
(0, 0, 0, 0.025);
660 color: var
(--text-color-low
);
663 .item::after, .btn, .cbi-button, input, button, textarea {
664 transition: border linear
0.2s, box-shadow linear
0.2s;
665 box-shadow: inset
0 1px 3px rgba
(0, 0, 0, 0.1);
669 .btn:hover
, .cbi-button:hover
, button:hover
,
670 input:focus
, textarea:focus
{
672 border-color: rgba
(82, 168, 236, 0.8) !important
;
673 box-shadow: inset
0 1px 3px rgba
(0, 0, 0, 0.1), 0 0 8px rgba
(82, 168, 236, 0.6);
674 text-decoration: none
;
677 input
[type
=file
]:focus
, input
[type
=checkbox
]:focus
, select:focus
{
679 outline: 1px dotted
#666;
690 background-color: var
(--background-color-medium
);
691 color: var
(--text-color-medium
);
692 border-color: var
(--border-color-low
);
693 pointer-events: none
;
699 pointer-events: auto
;
704 .cbi-section-create {
705 padding: 0 0 10px 10px;
708 .cbi-section-create {
710 display: inline-flex
;
714 .cbi-section-create > * {
719 .cbi-section-create > * > input {
725 background: var
(--background-color-low
);
727 padding: 17px 20px 18px 17px;
728 border-top: 1px solid var
(--border-color-medium
);
729 border-radius: 0 0 3px 3px;
733 .actions
.secondary-action
,
734 .cbi-page-actions .secondary-action{
738 .actions
.secondary-action a
,
739 .cbi-page-actions .secondary-action a {
743 .actions
.secondary-action
a:hover
,
744 .cbi-page-actions .secondary-action a:hover {
745 text-decoration: underline
;
748 .cbi-page-actions > form {
753 .help-inline, .help-block {
756 color: var
(--text-color-low
);
776 * Tables for, you guessed it, tabular data
777 * ---------------------------------------- */
778 .tr { display: table-row
; }
779 .table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; }
780 .table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; }
788 border-collapse: collapse
;
792 .table .th, .table .td {
794 vertical-align: middle
; /* Fixme */
795 padding: 10px 10px 9px;
800 .table .tr:first-child .th {
806 .table .td, .table .th {
807 border-top: 1px solid var
(--border-color-medium
);
811 height: calc
(3em + 20px);
814 .tr.placeholder > .td {
824 .tr.drag-over-below {
825 border: 2px solid
#0069d6;
826 border-width: 2px 0 0 0;
829 .tr.drag-over-below {
830 border-width: 0 0 2px 0;
834 * Repeatable UI elements outside the base styles provided from the scaffolding
835 * ---------------------------------------------------------------------------- */
848 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
851 header h3
a:hover
, header
.brand:hover
, header ul
.active
> a
{
852 background-color: #333;
853 background-color: rgba
(255, 255, 255, 0.05);
855 text-decoration: none
;
862 header h3 a
, header
.brand
{
865 padding: 8px 20px 12px;
879 background-color: #222;
880 background-repeat: repeat-x
;
881 background-image: linear-gradient
(to bottom
, #333333, #222222);
882 box-shadow: 0 1px 3px rgba
(0, 0, 0, 0.25), inset
0 -1px 0 rgba
(0, 0, 0, 0.1);
886 header div
> ul
, .nav
{
894 header div
> ul
> li
, .nav
> li
{
899 header div
> ul a
, .nav a
{
902 padding: 10px 10px 11px;
904 text-decoration: none
;
907 header div
> ul
a:hover
, .nav
a:hover
{
909 text-decoration: none
;
912 header div
> ul
.active
> a
, .nav
.active
> a
{
913 background-color: #222;
914 background-color: rgba
(0, 0, 0, 0.5);
917 header div
> ul
.secondary-nav
, .nav
.secondary-nav
{
923 header div
> ul
.secondary-nav
.menu-dropdown
,
924 .nav
.secondary-nav
.menu-dropdown
,
925 header div
> ul
.secondary-nav
.dropdown-menu
,
926 .nav.secondary-nav .dropdown-menu {
931 header div
> ul a
.menu:hover
,
933 header div
> ul li
.open
.menu
,
935 header div
> ul
.dropdown-toggle:hover
,
936 .nav
.dropdown-toggle:hover
,
937 header div
> ul
.dropdown
.open
.dropdown-toggle
,
938 .nav .dropdown.open .dropdown-toggle {
940 background: rgba
(255, 255, 255, 0.05);
943 header div
> ul
.menu-dropdown
,
945 header div
> ul
.dropdown-menu
,
946 .nav .dropdown-menu {
947 background-color: #333;
950 header div
> ul
.menu-dropdown a
.menu
,
951 .nav
.menu-dropdown a
.menu
,
952 header div
> ul
.dropdown-menu a
.menu
,
953 .nav
.dropdown-menu a
.menu
,
954 header div
> ul
.menu-dropdown
.dropdown-toggle
,
955 .nav
.menu-dropdown
.dropdown-toggle
,
956 header div
> ul
.dropdown-menu
.dropdown-toggle
,
957 .nav .dropdown-menu .dropdown-toggle {
961 header div
> ul
.menu-dropdown a
.menu
.open
,
962 .nav
.menu-dropdown a
.menu
.open
,
963 header div
> ul
.dropdown-menu a
.menu
.open
,
964 .nav
.dropdown-menu a
.menu
.open
,
965 header div
> ul
.menu-dropdown
.dropdown-toggle
.open
,
966 .nav
.menu-dropdown
.dropdown-toggle
.open
,
967 header div
> ul
.dropdown-menu
.dropdown-toggle
.open
,
968 .nav .dropdown-menu .dropdown-toggle.open {
970 background: rgba
(255, 255, 255, 0.05);
973 header div
> ul
.menu-dropdown li a
,
974 .nav
.menu-dropdown li a
,
975 header div
> ul
.dropdown-menu li a
,
976 .nav .dropdown-menu li a {
978 text-shadow: 0 1px 0 rgba
(0, 0, 0, 0.5);
981 header div
> ul
.menu-dropdown li
a:hover
,
982 .nav
.menu-dropdown li
a:hover
,
983 header div
> ul
.dropdown-menu li
a:hover
,
984 .nav .dropdown-menu li a:hover {
985 background-color: #191919;
986 background-repeat: repeat-x
;
987 background-image: linear-gradient
(to bottom
, #292929, #191919);
991 header div
> ul
.menu-dropdown
.active a
,
992 .nav
.menu-dropdown
.active a
,
993 header div
> ul
.dropdown-menu
.active a
,
994 .nav .dropdown-menu .active a {
998 header div
> ul
.menu-dropdown
.divider
,
999 .nav
.menu-dropdown
.divider
,
1000 header div
> ul
.dropdown-menu
.divider
,
1001 .nav .dropdown-menu .divider {
1002 background-color: #222;
1006 header ul
.menu-dropdown li a
, header ul
.dropdown-menu li a
{
1010 li
.menu
, .dropdown
{
1014 a
.menu:after
, .dropdown-toggle:after
{
1017 display: inline-block
;
1019 text-indent: -99999px;
1020 vertical-align: top
;
1023 border-left: 4px solid transparent
;
1024 border-right: 4px solid transparent
;
1025 border-top: 4px solid
#fff;
1029 .menu-dropdown, .dropdown-menu {
1030 background-color: #fff;
1044 border-color: rgba
(0, 0, 0, 0.2);
1045 border-style: solid
;
1046 border-width: 0 1px 1px;
1047 border-radius: 0 0 6px 6px;
1048 box-shadow: 0 2px 4px rgba
(0, 0, 0, 0.2);
1049 background-clip: padding-box
;
1052 .menu-dropdown li, .dropdown-menu li {
1055 background-color: transparent
;
1058 .menu-dropdown .divider, .dropdown-menu .divider {
1062 background-color: #eee;
1063 border-bottom: 1px solid
#fff;
1066 header
.dropdown-menu a
, .dropdown-menu a
{
1070 font-weight: normal
;
1073 text-shadow: 0 1px 0 #fff;
1076 header
.dropdown-menu
a:hover
,
1077 .dropdown-menu
a:hover
,
1078 header
.dropdown-menu a
.hover
,
1079 .dropdown-menu a.hover {
1080 background-color: #ddd;
1081 background-repeat: repeat-x
;
1082 background-image: linear-gradient
(to bottom
, #eee, #ddd);
1084 text-decoration: none
;
1085 box-shadow: inset
0 1px 0 rgba
(0, 0, 0, 0.025), inset
0 -1px rgba
(0, 0, 0, 0.025);
1089 .dropdown
.open
.menu
,
1090 .open
.dropdown-toggle
,
1091 .dropdown.open .dropdown-toggle {
1094 background: rgba
(0, 0, 0, 0.3);
1097 .open
.menu-dropdown
,
1098 .dropdown
.open
.menu-dropdown
,
1099 .open
.dropdown-menu
,
1100 .dropdown.open .dropdown-menu {
1104 .dropdown:hover ul.dropdown-menu {
1108 .dropdown-menu .dropdown-menu {
1117 .tabs, .cbi-tabmenu {
1118 --tab-bar-background-color: var
(--background-color-high
);
1119 --tab-inactive-background-color-h: var
(--border-color-low-h
);
1120 --tab-inactive-background-color-s: var
(--border-color-low-s
);
1121 --tab-inactive-background-color-l: var
(--border-color-low-l
);
1122 --tab-inactive-background-color: var
(--border-color-low
);
1123 --tab-inactive-border-color: var
(--border-color-medium
);
1124 --tab-inactive-text-color-delta-l: calc
(85 / 255 * 100%);
1125 --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
));
1126 --tab-inactive-text-color: hsl
(var
(--tab-inactive-background-color-h
), var
(--tab-inactive-background-color-s
), var
(--tab-inactive-text-color-l
));
1127 --tab-inactive-hover-background-color: var
(--background-color-high
);
1128 --tab-active-background-color: var
(--background-color-high
);
1129 --tab-active-text-color: #0069d6;
1130 --tab-active-border-color: var
(--border-color-medium
);
1132 margin: 0 -5px 18px;
1137 background: linear-gradient
(var
(--tab-bar-background-color
) 28px, var
(--tab-inactive-border-color
) 28px);
1138 background-size: 1px 29px;
1139 background-position: left bottom
;
1142 .tabs > li, .cbi-tabmenu > li {
1145 align-items: center
;
1148 margin: 4px 2px 0 2px;
1149 background: var
(--tab-active-background-color
);
1150 border: 1px solid var
(--tab-active-border-color
);
1151 border-bottom: none
;
1152 border-radius: 4px 4px 0 0;
1153 color: var
(--tab-active-text-color
);
1156 .tabs > li > a, .cbi-tabmenu > li > a {
1158 white-space: nowrap
;
1160 text-overflow: ellipsis
;
1162 text-decoration: none
;
1163 border-radius: 4px 4px 0 0;
1168 .tabs > li:not(.active):hover, .cbi-tabmenu > .cbi-tab-disabled:hover {
1169 background: linear-gradient
(var
(--tab-inactive-hover-background-color
) 90%, var
(--tab-inactive-border-color
) 100%);
1172 .tabs > li:not(.active), .cbi-tabmenu > .cbi-tab-disabled {
1173 color: var
(--tab-inactive-text-color
);
1174 background: linear-gradient
(var
(--tab-inactive-background-color
) 90%, var
(--tab-inactive-border-color
) 100%);
1177 .cbi-tab-disabled[data-errors]::after {
1178 content: attr
(data-errors
);
1179 background: #c43c35;
1193 .cbi-tabmenu.map > li {
1198 .cbi-tabcontainer > fieldset.cbi-section[id] > legend {
1202 .tabs .menu-dropdown, .tabs .dropdown-menu {
1205 border-radius: 0 6px 6px 6px;
1208 .tabs a.menu:after, .tabs .dropdown-toggle:after {
1209 border-top-color: #999;
1214 .tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle {
1218 .tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after {
1219 border-top-color: #555;
1222 .tab-content
> .tab-pane
,
1223 .tab-content > div {
1227 .tab-content > .active {
1234 background-color: #f5f5f5;
1235 background-repeat: repeat-x
;
1236 background-image: linear-gradient
(to bottom
, #fff, #f5f5f5);
1237 border: 1px solid
#ddd;
1239 box-shadow: inset
0 1px 0 #fff;
1244 text-shadow: 0 1px 0 #fff;
1247 .breadcrumb .divider {
1252 .breadcrumb .active a {
1259 border-top: 1px solid var
(--border-color-low
);
1268 background: rgba
(0, 0, 0, 0.7);
1271 -webkit-overflow-scrolling: touch
;
1272 transition: opacity
.125s ease-in
;
1284 align-items: center
;
1286 background: var
(--background-color-high
);
1287 box-shadow: 0 0 3px #444;
1288 padding: 1em 1em .5em 1em;
1294 line-height: normal
;
1295 margin-bottom: .5em;
1301 white-space: pre-wrap
;
1305 body
.modal-overlay-active
{
1310 body
.modal-overlay-active #modal_overlay
{
1314 visibility: visible
;
1318 .alert-message
.danger
,
1320 .alert-message
.danger:hover
,
1322 .alert-message
.error
,
1324 .alert-message
.error:hover
,
1326 .alert-message
.success
,
1328 .alert-message
.success:hover
,
1330 .alert-message
.info
,
1332 .alert-message
.info:hover
,
1333 .cbi-tooltip.error, .cbi-tooltip.success, .cbi-tooltip.info {
1337 .btn .close, .alert-message .close {
1338 font-family: Arial
, sans-serif
;
1343 .alert-message
.danger
,
1345 .alert-message
.error
,
1346 .cbi-tooltip.error {
1347 background: linear-gradient
(to bottom
, #ee5f5b, #c43c35) repeat-x
;
1348 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1349 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1352 .btn.success, .alert-message.success, .cbi-tooltip.success {
1353 background: linear-gradient
(to bottom
, #62c462, #57a957) repeat-x
;
1354 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1355 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1358 .btn.info, .alert-message.info, .cbi-tooltip.info {
1359 background: linear-gradient
(to bottom
, #5bc0de, #339bb9) repeat-x
;
1360 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1361 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1364 .alert-message.notice, .cbi-tooltip.notice {
1365 background: linear-gradient
(to bottom
, #efefef, #fefefe) repeat-x
;
1366 text-shadow: 0 -1px 0 rgba
(255, 255, 255, 0.25);
1367 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1370 .modal.alert-message {
1371 color: var
(--text-color-high
);
1378 display: inline-block
;
1379 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--border-color-low
)) no-repeat
;
1380 padding: 5px 14px 6px;
1381 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1382 color: var
(--text-color-high
);
1384 line-height: normal
;
1385 border: 1px solid var
(--border-color-high
);
1387 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);
1393 outline: 1px dotted
#666;
1397 .cbi-input-invalid
.cbi-dropdown:not
(.btn
):not
(.cbi-button
),
1398 .cbi-input-invalid
.cbi-dropdown:not
([open
]) > ul
> li
,
1399 .cbi-value-error input {
1404 .cbi-button-positive
,
1405 .cbi-button-fieldadd
,
1412 .cbi-button-neutral
,
1413 .cbi-button-download
,
1418 color: var
(--text-color-high
);
1426 border-color: #0069d6;
1430 .cbi-button-negative
,
1431 .cbi-section-remove
.cbi-button
,
1433 .cbi-button-remove {
1438 .cbi-page-actions::after {
1444 .cbi-page-actions > * {
1445 vertical-align: middle
;
1448 .cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-negative):not(.cbi-button-save):not(.cbi-button-reset) {
1454 .cbi-button-action
.important
,
1455 .cbi-page-actions
.cbi-button-apply
,
1456 .cbi-section-actions .cbi-button-edit {
1458 background: linear-gradient
(to bottom
, #0069d6, #0049d6) no-repeat
;
1459 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1462 .cbi-button-positive
.important
,
1463 .cbi-page-actions .cbi-button-save {
1465 background: linear-gradient
(to bottom
, #4a4, #484) no-repeat
;
1466 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1469 .cbi-button-negative.important {
1471 background: linear-gradient
(to bottom
, #c44, #c00) no-repeat
;
1472 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1475 .cbi-page-actions
.cbi-button-apply
+ .cbi-button-save
,
1476 .cbi-page-actions .cbi-button-negative + .cbi-button-save {
1477 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--border-color-low
));
1478 text-shadow: 0 -1px 0 hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
1483 display: inline-flex
!important
;
1487 padding: 0 !important
;
1490 .cbi-dropdown:not(.btn):not(.cbi-button) {
1491 background: linear-gradient
(var
(--background-color-high
) 0%, var
(--border-color-low
) 100%);
1492 border: 1px solid var
(--border-color-high
);
1494 color: var
(--text-color-high
);
1497 .cbi-dynlist
> .item:focus
,
1498 .cbi-dropdown:focus {
1499 outline: 2px solid
#4b6e9b;
1502 .cbi-dropdown > ul {
1503 margin: 0 !important
;
1512 .cbi-dropdown
.btn
> ul:not
(.dropdown
),
1513 .cbi-dropdown.cbi-button > ul:not(.dropdown) {
1514 margin: 0 0 0 13px !important
;
1517 .cbi-dropdown
.btn
.spinning
> ul:not
(.dropdown
),
1518 .cbi-dropdown.cbi-button.spinning > ul:not(.dropdown) {
1519 margin: 0 !important
;
1522 .cbi-dropdown > ul.preview {
1526 .cbi-dropdown
> .open
,
1527 .cbi-dropdown > .more {
1531 flex-direction: column
;
1532 justify-content: center
;
1538 .cbi-dropdown
.btn
> .open
,
1539 .cbi-dropdown.cbi-button > .open {
1542 border-left: 1px solid
;
1545 .cbi-dropdown
> .more
,
1546 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li[placeholder] {
1549 text-shadow: 1px 1px 0px var
(--background-color-high
);
1551 justify-content: center
;
1554 .cbi-dropdown > ul > li {
1556 white-space: nowrap
;
1558 text-overflow: ellipsis
;
1561 align-items: center
;
1566 .cbi-dropdown
> ul
.dropdown
> li
,
1567 .cbi-dropdown:not(.btn):not(.cbi-button) > ul > li {
1570 color: var
(--text-color-high
);
1573 .cbi-dropdown > ul > li .hide-open { display: block
; display: initial
; }
1574 .cbi-dropdown > ul > li .hide-close { display: none
; }
1576 .cbi-dropdown > ul > li[display]:not([display="0"]) {
1577 border-left: 1px solid var
(--border-color-high
);
1580 .cbi-dropdown[empty] > ul {
1584 .cbi-dropdown > ul > li > form {
1588 pointer-events: none
;
1591 .cbi-dropdown > ul > li img {
1592 vertical-align: middle
;
1593 margin-right: .25em;
1596 .cbi-dropdown > ul > li > form > input[type="checkbox"] {
1600 .cbi-dropdown > ul > li input[type="text"] {
1604 .cbi-dropdown[open] {
1608 .cbi-dropdown[open] > ul.dropdown {
1610 background: var
(--background-color-low
);
1611 border: 1px solid
#918e8c;
1612 box-shadow: 0 0 4px #918e8c;
1618 transition: max-height
.125s ease-in
;
1621 .cbi-dropdown
> ul
> li
[display
],
1622 .cbi-dropdown
[open
] > ul
.preview
,
1623 .cbi-dropdown
[open
] > ul
.dropdown
> li
,
1624 .cbi-dropdown
[multiple
] > ul
> li
> label
,
1625 .cbi-dropdown
[multiple
][open
] > ul
.dropdown
> li
,
1626 .cbi-dropdown
[multiple
][more
] > .more
,
1627 .cbi-dropdown[multiple][empty] > .more {
1629 display: flex
!important
;
1632 .cbi-dropdown
[empty
] > ul
> li
,
1633 .cbi-dropdown
[optional
][open
] > ul
.dropdown
> li
[placeholder
],
1634 .cbi-dropdown[multiple][open] > ul.dropdown > li > form {
1635 display: block
!important
;
1638 .cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none
; }
1639 .cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block
; display: initial
; }
1641 .cbi-dropdown[open] > ul.dropdown > li {
1642 border-bottom: 1px solid var
(--border-color-high
);
1645 .cbi-dropdown[open] > ul.dropdown > li[selected] {
1646 background: #b0d0f0;
1650 .cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li[selected][placeholder] {
1652 text-shadow: 1px 1px 0px #fff;
1655 .cbi-dropdown[open] > ul.dropdown > li.focus {
1656 background: linear-gradient
(90deg, #a3c2e8 0%, #84aad9 100%);
1660 .cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li.focus[placeholder] {
1662 text-shadow: 1px 1px 0px #fff;
1665 .cbi-dropdown[open] > ul.dropdown > li:last-child {
1667 border-bottom: none
;
1670 .cbi-dropdown[open] > ul.dropdown > li[unselectable] {
1674 .cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child {
1678 .cbi-dropdown[disabled] {
1679 pointer-events: none
;
1683 input
[type
="text"] + .cbi-button
,
1684 input
[type
="password"] + .cbi-button
,
1685 select
+ .cbi-button
{
1686 border-radius: 0 3px 3px 0;
1687 border-color: var
(--border-color-high
);
1690 vertical-align: top
;
1696 select
+ .cbi-button
{
1697 border-left-color: transparent
;
1704 .cbi-title-ref::after {
1708 .cbi-tooltip-container {
1716 box-shadow: 0 0 2px var
(--border-color-high
);
1718 background: var
(--background-color-high
);
1722 transition: opacity
.25s ease-in
;
1725 .cbi-tooltip-container:hover .cbi-tooltip:not(:empty) {
1728 transition: opacity
.25s ease-in
;
1732 border: 1px solid var
(--border-color-high
);
1738 background: var
(--background-color-medium
);
1741 .cbi-progressbar > div {
1742 background: #90c0e0;
1744 transition: width
.25s ease-in
;
1748 .cbi-progressbar::after {
1755 text-shadow: 0 0 2px var
(--background-color-high
);
1756 content: attr
(title
);
1759 text-overflow: ellipsis
;
1761 @media (prefers-color-scheme: dark
) {
1762 .cbi-progressbar::after {
1763 mix-blend-mode: difference
;
1767 .zonebadge .cbi-tooltip {
1769 background: inherit
;
1770 margin: -1.6em 0 0 -5px;
1772 pointer-events: none
;
1773 box-shadow: 0 0 3px #444;
1776 .zonebadge .cbi-tooltip > * {
1785 .zone-forwards > * {
1790 .zone-forwards > span {
1795 .zone-forwards
.zone-src
,
1796 .zone-forwards .zone-dest {
1798 flex-direction: column
;
1801 .btn.active, .btn:active {
1802 box-shadow: inset
0 2px 4px rgba
(0, 0, 0, 0.25), 0 1px 2px rgba
(0, 0, 0, 0.05);
1819 line-height: normal
;
1820 padding: 9px 14px 9px;
1825 padding: 7px 9px 7px;
1829 button
.btn::-moz-focus-inner
, input
[type
=submit
].btn::-moz-focus-inner
{
1839 line-height: 13.5px;
1840 text-shadow: 0 1px 0 #fff;
1846 text-decoration: none
;
1852 padding: .5em .5em .25em .5em;
1853 margin-bottom: .5em;
1855 background: linear-gradient
(to bottom
, #fceec1, #eedc94) repeat-x
;
1856 text-shadow: 0 -1px 0 rgba
(0, 0, 0, 0.25);
1857 border-color: rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.1) rgba
(0, 0, 0, 0.25);
1858 text-shadow: 0 1px 0 rgba
(255, 255, 255, 0.5);
1860 border-style: solid
;
1862 box-shadow: inset
0 1px 0 rgba
(255, 255, 255, 0.25);
1866 .alert-message .close {
1879 line-height: inherit
;
1880 background: transparent
;
1885 .alert-message button {
1890 header
[data-indicator
] {
1891 padding: 1px 3px 2px;
1894 color: #fff !important
;
1895 text-transform: uppercase
;
1896 white-space: nowrap
;
1897 background-color: #bfbfbf;
1903 header
[data-indicator
][data-clickable
] {
1913 text-decoration: none
;
1917 background-color: #c43c35;
1921 background-color: #f89406;
1925 background-color: #46a546;
1929 header
[data-indicator
][data-style
="active"] {
1930 background-color: #62cffc;
1933 /* LuCI specific items */
1934 .hidden { display: none
}
1936 form
.inline
{ display: inline
; margin-bottom: 0; }
1938 header
.pull-right
{ padding-top: 8px; }
1940 #modemenu li:last-child span
.divider
{ display: none
}
1942 #syslog { width: 100%; }
1944 .cbi-section-table
.tr:hover
.td
,
1945 .cbi-section-table
.tr:hover
.th
,
1946 .cbi-section-table .tr:hover::before {
1947 background-color: var
(--background-color-low
);
1950 .cbi-section-table .tr.cbi-section-table-descr .th {
1951 font-weight: normal
;
1954 .cbi-section-table-titles
.named::before
,
1955 .cbi-section-table-descr
.named::before
,
1956 .cbi-section-table-row[data-title]::before {
1957 content: attr
(data-title
) " ";
1958 display: table-cell
;
1959 padding: 10px 10px 9px;
1962 vertical-align: middle
;
1965 .cbi-section-table-titles
.named::before
,
1966 .cbi-section-table-descr
.named::before
,
1967 .cbi-section-table-row[data-title]::before {
1968 border-top: 1px solid var
(--border-color-medium
);
1971 .left { text-align: left
!important
; }
1972 .right { text-align: right
!important
; }
1973 .center { text-align: center
!important
; }
1974 .top { vertical-align: top
!important
; }
1975 .middle { vertical-align: middle
!important
; }
1976 .bottom { vertical-align: bottom
!important
; }
1978 .cbi-value-field input
[type
=checkbox
],
1979 .cbi-value-field input[type=radio] {
1985 .cbi-value-field table td {
1989 .table
.cbi-section-table input
[type
="password"],
1990 .table
.cbi-section-table input
[type
="text"],
1991 .table
.cbi-section-table textarea
,
1992 .table.cbi-section-table select {
1996 .table.cbi-section-table .td.cbi-section-table-cell {
1997 white-space: nowrap
;
2001 .table.cbi-section-table .td.cbi-section-table-cell select {
2005 .td.cbi-section-actions {
2007 vertical-align: middle
;
2010 .td.cbi-section-actions > * {
2014 .td
.cbi-section-actions
> * > *,
2015 .td.cbi-section-actions > * > form > * {
2020 .td.cbi-section-actions > * > form {
2021 display: inline-flex
;
2025 .table.valign-middle .td {
2026 vertical-align: middle
;
2031 .tr.cbi-section-table-titles {
2032 background: var
(--background-color-medium
);
2035 .cbi-value-description {
2036 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
;
2038 padding: .1em 0 0 1.3em;
2041 .cbi-section-error {
2042 border: 1px solid
#f00;
2044 background-color: #fce6e6;
2046 margin-bottom: 18px;
2049 .cbi-section-error ul { margin: 0 0 0 20px; }
2051 .cbi-section-error ul li {
2057 border: 1px solid var
(--border-color-high
);
2060 white-space: nowrap
;
2061 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--background-color-medium
));
2062 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
2064 box-shadow: inset
0 1px 0 rgba
(255, 255, 255, 0.2), 0 1px 2px rgba
(0, 0, 0, 0.05);
2065 display: inline-flex
;
2066 flex-direction: column
;
2071 .ifacebox .ifacebox-head {
2072 border-bottom: 1px solid var
(--border-color-high
);
2076 text-shadow: 0 1px 1px rgba
(255, 255, 255, 0.75);
2079 .ifacebox .ifacebox-head.active {
2080 background: #90c0e0;
2083 .ifacebox .ifacebox-body {
2088 display: inline-block
;
2089 flex-direction: row
;
2090 white-space: nowrap
;
2091 border: 1px solid var
(--border-color-high
);
2093 background: linear-gradient
(var
(--background-color-high
), var
(--background-color-high
) 25%, var
(--background-color-medium
));
2094 color: var
(--text-color-high
);
2095 text-shadow: 0 1px 1px hsla
(var
(--background-color-high-h
), var
(--background-color-high-s
), var
(--background-color-high-l
), 0.75);
2097 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);
2105 vertical-align: middle
;
2108 .ifacebadge-active {
2113 .network-status-table {
2118 .network-status-table .ifacebox {
2123 .network-status-table .ifacebox-body {
2125 flex-direction: column
;
2130 .network-status-table .ifacebox-body > * {
2134 .network-status-table .ifacebox-body > span {
2139 .network-status-table .ifacebox-body > div {
2145 #dsl_status_table .ifacebox-body span
> strong
{
2146 display: inline-block
;
2151 .network-status-table .ifacebox-body .ifacebadge {
2160 display: inline-flex
;
2163 .network-status-table .ifacebox-body .ifacebadge > span {
2165 text-overflow: ellipsis
;
2169 .ifacebadge.large > * {
2176 display: inline-block
;
2177 white-space: nowrap
;
2179 text-shadow: 0 1px 1px rgba
(255, 255, 255, 0.75);
2183 .zonebadge > strong {
2185 display: inline-block
;
2192 .zonebadge > .ifacebadge {
2197 border: 1px dashed
#aaa;
2204 .td.cbi-value-field var {
2209 div
.cbi-value var
[data-tooltip
],
2210 .td
.cbi-value-field var
[data-tooltip
],
2211 div
.cbi-value var
.cbi-tooltip-container
,
2212 .td.cbi-value-field var.cbi-tooltip-container {
2214 border-bottom: 1px dotted
#0069d6;
2217 div
.cbi-value var
.cbi-tooltip-container
,
2218 .td.cbi-value-field var.cbi-tooltip-container .cbi-tooltip {
2220 white-space: normal
;
2221 color: var
(--text-color-high
);
2224 #modal_overlay > .modal
.uci-dialog
,
2225 #modal_overlay > .modal
.cbi-modal
{
2234 .uci-change-list
> del
,
2235 .uci-change-list
> ins
,
2236 .uci-change-list
> var
,
2237 .uci-change-legend-label
> del
,
2238 .uci-change-legend-label
> ins
,
2239 .uci-change-legend-label > var {
2241 border: 1px solid
#ccc;
2245 text-overflow: ellipsis
;
2249 .uci-change-list
> * > del
,
2250 .uci-change-list
> * > ins
,
2251 .uci-change-list > * > var {
2253 text-overflow: ellipsis
;
2256 .uci-change-list del
,
2257 .uci-change-list ins
,
2258 .uci-change-list var
,
2259 .uci-change-legend-label del
,
2260 .uci-change-legend-label ins
,
2261 .uci-change-legend-label var {
2262 text-decoration: none
;
2263 font-family: monospace
;
2269 .uci-change-list ins
,
2270 .uci-change-legend-label ins {
2275 .uci-change-list del
,
2276 .uci-change-legend-label del {
2281 .uci-change-list var
,
2282 .uci-change-legend-label var {
2287 .uci-change-legend {
2292 .uci-change-legend-label {
2296 align-items: center
;
2299 .uci-change-legend-label
> ins
,
2300 .uci-change-legend-label
> del
,
2301 .uci-change-legend-label > var {
2308 .uci-change-legend-label > var > * {
2318 background: rgba
(0, 0, 0, 0.7);
2321 -webkit-overflow-scrolling: touch
;
2322 transition: opacity
.125s ease-in
;
2326 #modal_overlay > .modal
{
2333 align-items: center
;
2335 background: var
(--background-color-high
);
2336 box-shadow: 0 0 3px #444;
2337 padding: 1em 1em .5em 1em;
2341 #modal_overlay .modal
> * {
2343 line-height: normal
;
2344 margin-bottom: .5em;
2347 #modal_overlay .modal
> pre
,
2348 #modal_overlay .modal
> textarea
{
2349 white-space: pre-wrap
;
2353 body
.modal-overlay-active
{
2358 body
.modal-overlay-active #modal_overlay
{
2364 html body
.apply-overlay-active
{
2365 height: calc
(100vh - 63px);
2368 #applyreboot-section {
2372 [data-page
="admin-network-dhcp"] [data-name
="ip"] {
2378 50% { opacity: .5; }
2379 100% { opacity: 1; }
2383 animation: flash
.35s;
2388 padding-left: 32px !important
;
2398 background: url
(../resources/icons/loading.gif) no-repeat center
;
2399 background-size: 16px;
2408 [data-tab-active
="true"] {
2412 transition: opacity
.25s ease-in
;
2418 border: 1px solid
#ccc;
2421 flex-direction: column
;
2427 .cbi-filebrowser.open {
2431 transition: opacity
.25s ease-in
;
2434 .cbi-filebrowser > * {
2437 text-overflow: ellipsis
;
2438 padding: 0 0 .25em 0;
2439 margin: .25em .25em 0px .25em;
2440 white-space: nowrap
;
2441 border-bottom: 1px solid
#ccc;
2444 .cbi-filebrowser .cbi-button-positive {
2445 margin-right: .25em;
2448 .cbi-filebrowser > div {
2449 border-bottom: none
;
2452 .cbi-filebrowser > ul > li {
2454 flex-direction: row
;
2457 .cbi-filebrowser > ul > li:hover {
2458 background: #f5f5f5;
2461 .cbi-filebrowser > ul > li > div:first-child {
2464 text-overflow: ellipsis
;
2467 .cbi-filebrowser > ul > li > div:last-child {
2472 .cbi-filebrowser > ul > li > div:last-child > button {
2473 padding: .125em .25em;
2474 margin: 1px 0 1px .25em;
2477 .cbi-filebrowser .upload {
2479 flex-direction: row
;
2481 margin: 0 -.125em .25em -.125em;
2482 padding: 0 0 .125em 0px;
2483 border-bottom: 1px solid
#ccc;
2486 .cbi-filebrowser .upload > * {
2491 .cbi-filebrowser .upload > .btn {
2495 .cbi-filebrowser .upload > div {
2500 .cbi-filebrowser .upload > div > input {
2504 @keyframes fade-in
{
2506 100% { opacity: 1; }
2509 @keyframes fade-out
{
2511 100% { opacity: 0; }
2515 animation: fade-in
.4s ease
;
2519 animation: fade-out
.4s ease
;
2522 .assoclist .ifacebadge {
2524 flex-direction: column
;
2525 align-items: center
;
2526 white-space: normal
;
2530 .assoclist .ifacebadge > img {
2534 .assoclist
.td:nth-of-type
(3),
2535 .assoclist .td:nth-of-type(5) {
2539 .assoclist .td:nth-of-type(6) button {