*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
+
+/* Variables
+ * --------- */
+
+:root {
+ --background-color-delta-l-sign: -1;
+ --background-color-high-h: 0;
+ --background-color-high-s: 0%;
+ --background-color-high-l: 100%;
+ --background-color-high: hsl(var(--background-color-high-h), var(--background-color-high-s), var(--background-color-high-l));
+ --background-color-medium-h: var(--background-color-high-h);
+ --background-color-medium-s: var(--background-color-high-s);
+ --background-color-medium-delta-l: calc(6 / 255 * 100%);
+ --background-color-medium-l: calc(var(--background-color-high-l) + var(--background-color-delta-l-sign) * var(--background-color-medium-delta-l));
+ --background-color-medium: hsl(var(--background-color-medium-h), var(--background-color-medium-s), var(--background-color-medium-l));
+ --background-color-low-h: var(--background-color-high-h);
+ --background-color-low-s: var(--background-color-high-s);
+ --background-color-low-delta-l: calc(10 / 255 * 100%);
+ --background-color-low-l: calc(var(--background-color-high-l) + var(--background-color-delta-l-sign) * var(--background-color-low-delta-l));
+ --background-color-low: hsl(var(--background-color-low-h), var(--background-color-low-s), var(--background-color-low-l));
+ --text-color-delta-l-sign: 1;
+ --text-color-highest-h: 0;
+ --text-color-highest-s: 0%;
+ --text-color-highest-l: 0%;
+ --text-color-highest: hsl(var(--text-color-highest-h), var(--text-color-highest-s), var(--text-color-highest-l));
+ --text-color-high-h: var(--text-color-highest-h);
+ --text-color-high-s: var(--text-color-highest-s);
+ --text-color-high-delta-l: calc(64 / 255 * 100%);
+ --text-color-high-l: calc(var(--text-color-highest-l) + var(--text-color-delta-l-sign) * var(--text-color-high-delta-l));
+ --text-color-high: hsl(var(--text-color-high-h), var(--text-color-high-s), var(--text-color-high-l));
+ --text-color-medium-h: var(--text-color-highest-h);
+ --text-color-medium-s: var(--text-color-highest-s);
+ --text-color-medium-delta-l: calc(128 / 255 * 100%);
+ --text-color-medium-l: calc(var(--text-color-highest-l) + var(--text-color-delta-l-sign) * var(--text-color-medium-delta-l));
+ --text-color-medium: hsl(var(--text-color-medium-h), var(--text-color-medium-s), var(--text-color-medium-l));
+ --text-color-low-h: var(--text-color-highest-h);
+ --text-color-low-s: var(--text-color-highest-s);
+ --text-color-low-delta-l: calc(191 / 255 * 100%);
+ --text-color-low-l: calc(var(--text-color-highest-l) + var(--text-color-delta-l-sign) * var(--text-color-low-delta-l));
+ --text-color-low: hsl(var(--text-color-low-h), var(--text-color-low-s), var(--text-color-low-l));
+ --border-color-delta-l-sign: -1;
+ --border-color-high-h: var(--background-color-high-h);
+ --border-color-high-s: var(--background-color-high-s);
+ --border-color-high-delta-l: calc(51 / 255 * 100%);
+ --border-color-high-l: calc(var(--background-color-high-l) + var(--border-color-delta-l-sign) * var(--border-color-high-delta-l));
+ --border-color-high: hsl(var(--border-color-high-h), var(--border-color-high-s), var(--border-color-high-l));
+ --border-color-medium-h: var(--border-color-high-h);
+ --border-color-medium-s: var(--border-color-high-s);
+ --border-color-medium-delta-l: calc(34 / 255 * 100%);
+ --border-color-medium-l: calc(var(--background-color-high-l) + var(--border-color-delta-l-sign) * var(--border-color-medium-delta-l));
+ --border-color-medium: hsl(var(--border-color-medium-h), var(--border-color-medium-s), var(--border-color-medium-l));
+ --border-color-low-h: var(--border-color-high-h);
+ --border-color-low-s: var(--border-color-high-s);
+ --border-color-low-delta-l: calc(17 / 255 * 100%);
+ --border-color-low-l: calc(var(--background-color-high-l) + var(--border-color-delta-l-sign) * var(--border-color-low-delta-l));
+ --border-color-low: hsl(var(--border-color-low-h), var(--border-color-low-s), var(--border-color-low-l));
+ color-scheme: light;
+}
+
+:root[data-darkmode="true"] {
+ --background-color-delta-l-sign: 1;
+ --background-color-high-h: 0;
+ --background-color-high-s: 0%;
+ --background-color-high-l: calc(34 / 255 * 100%);
+ --text-color-delta-l-sign: -1;
+ --text-color-highest-h: 0;
+ --text-color-highest-s: 0%;
+ --text-color-highest-l: 100%;
+ --border-color-delta-l-sign: 1;
+ color-scheme: dark;
+}
+
/* Reset.less
* 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).
* ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
outline: 0;
}
-footer,
-header,
-nav,
-section {
- display: block;
-}
-
sub, sup {
font-size: 75%;
line-height: 0;
margin: 0;
box-sizing: border-box;
vertical-align: baseline;
- line-height: normal;
+ line-height: 2em;
}
button::-moz-focus-inner, input::-moz-focus-inner {
input[type="submit"] {
cursor: pointer;
-webkit-appearance: button;
+ word-break: break-all;
}
button[disabled],
* Basic and global styles for generating a grid system, structural layout, and page templates
* ------------------------------------------------------------------------------------------- */
body {
- background-color: #fff;
+ background-color: var(--background-color-high);
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
font-weight: normal;
line-height: 18px;
- color: #404040;
- padding: 58px 5px 5px 5px;
+ color: var(--text-color-high);
+ padding: 5px;
}
.container {
zoom: 1;
}
-.container:before, .container:after {
- display: table;
- content: "";
- zoom: 1;
-}
-
-.container:after {
- clear: both;
-}
-
a {
color: #0069d6;
text-decoration: none;
p small {
font-size: 11px;
- color: #bfbfbf;
+ color: var(--text-color-low);
}
h1,
h5,
h6 {
font-weight: bold;
- color: #404040;
+ color: var(--text-color-high);
}
h1 small,
h4 small,
h5 small,
h6 small {
- color: #bfbfbf;
+ color: var(--text-color-low);
}
h1 {
h6 {
font-size: 13px;
- color: #bfbfbf;
+ color: var(--text-color-low);
text-transform: uppercase;
}
li {
line-height: 18px;
- color: #808080;
+ color: var(--text-color-medium);
}
ul.unstyled {
hr {
margin: 20px 0 19px;
border: 0;
- border-bottom: 1px solid #eee;
+ border-bottom: 1px solid var(--border-color-low);
}
strong {
}
pre {
- background-color: #f5f5f5;
+ --border-color-h: var(--background-color-high-h);
+ --border-color-s: var(--background-color-high-s);
+ --border-color-delta-l: 100%;
+ --border-color-l: calc(var(--background-color-high-l) + var(--background-color-delta-l-sign) * var(--border-color-delta-l));
+ --border-color-a: 0.15;
+ --border-color: hsla(var(--border-color-h), var(--border-color-s), var(--border-color-l), var(--border-color-a));
+
+ background-color: var(--background-color-low);
display: block;
padding: 8.5px;
margin: 0 0 18px;
line-height: 18px;
font-size: 12px;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border: 1px solid var(--border-color);
border-radius: 3px;
white-space: pre;
white-space: pre-wrap;
display: block;
font-size: 19.5px;
line-height: 1;
- color: #404040;
+ color: var(--text-color-high);
padding-top: 20px;
-
}
+
form .cbi-tab-descr {
line-height: 18px;
margin-bottom: 18px;
label,
input,
+button,
select,
textarea {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
float: left;
width: 180px;
text-align: right;
- color: #404040;
+ color: var(--text-color-high);
}
input[type=checkbox], input[type=radio] {
input,
textarea,
select,
-.cbi-dropdown,
+.cbi-dropdown:not(.btn):not(.cbi-button),
.uneditable-input {
display: inline-block;
width: 210px;
- height: 30px;
padding: 4px;
+ background: var(--background-color-high);
+ color: var(--text-color-high);
font-size: 13px;
line-height: 18px;
- border: 1px solid #ccc;
+ border: 1px solid var(--border-color-high);
border-radius: 3px;
}
+input,
+select,
+.cbi-dropdown:not(.btn):not(.cbi-button),
+.uneditable-input {
+ height: 30px;
+}
+
.uneditable-input {
color: #808080;
}
-.cbi-dropdown,
+.cbi-dropdown:not(.btn):not(.cbi-button),
.cbi-dynlist {
min-width: 210px;
max-width: 400px;
.cbi-dynlist > .item {
margin-bottom: 4px;
- box-shadow: 0 0 2px #ccc;
- background: #fff;
+ box-shadow: 0 0 2px var(--border-color-high);
+ background: var(--background-color-high);
padding: 2px 2em 2px 4px;
- border: 1px solid #ccc;
+ border: 1px solid var(--border-color-high);
border-radius: 3px;
+ color: var(--text-color-high);
position: relative;
pointer-events: none;
+ overflow: hidden;
+ word-break: break-all;
}
.cbi-dynlist > .item::after {
right: -1px;
bottom: -1px;
padding: 0 6px;
- border: 1px solid #ccc;
+ border: 1px solid var(--border-color-high);
border-radius: 0 3px 3px 0;
font-weight: bold;
color: #c44;
select {
padding: initial;
- background: #fff;
box-shadow: inset 0 -1px 3px rgba(0, 0, 0, 0.1);
}
background-color: #fff;
}
-textarea {
- height: auto !important;
-}
-
.td > input[type=text],
.td > input[type=password],
.td > select,
-.td > .cbi-dropdown,
+.td > .cbi-dropdown:not(.btn):not(.cbi-button),
.cbi-dynlist > .add-item > .cbi-dropdown {
width: 100%;
}
cursor: not-allowed;
}
-::-moz-placeholder {
- color: #bfbfbf;
-}
-
-::-webkit-input-placeholder {
- color: #bfbfbf;
+::placeholder {
+ color: var(--text-color-low);
}
-.item::after, .btn, .cbi-button, input, textarea {
+.item::after, .btn, .cbi-button, input, button, textarea {
transition: border linear 0.2s, box-shadow linear 0.2s;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
}
.item:hover::after,
-.btn:hover, .cbi-button:hover,
+.btn:hover, .cbi-button:hover, button:hover,
input:focus, textarea:focus {
outline: 0;
border-color: rgba(82, 168, 236, 0.8) !important;
}
input[disabled],
+button[disabled],
select[disabled],
textarea[disabled],
input[readonly],
+button[readonly],
select[readonly],
textarea[readonly] {
- background-color: #f5f5f5;
- border-color: #ddd;
+ background-color: var(--background-color-medium);
+ color: var(--text-color-medium);
+ border-color: var(--border-color-low);
pointer-events: none;
cursor: default;
}
.actions,
.cbi-page-actions {
- background: #f5f5f5;
+ background: var(--background-color-low);
margin-bottom: 18px;
padding: 17px 20px 18px 17px;
- border-top: 1px solid #ddd;
+ border-top: 1px solid var(--border-color-medium);
border-radius: 0 0 3px 3px;
text-align: right;
}
.help-inline, .help-block {
font-size: 13px;
line-height: 18px;
- color: #bfbfbf;
+ color: var(--text-color-low);
}
.help-inline {
}
.table .td, .table .th {
- border-top: 1px solid #ddd;
+ border-top: 1px solid var(--border-color-medium);
}
.tr.placeholder {
line-height: 3em;
}
+.tr.drag-over-above,
+.tr.drag-over-below {
+ border: 2px solid #0069d6;
+ border-width: 2px 0 0 0;
+}
+
+.tr.drag-over-below {
+ border-width: 0 0 2px 0;
+}
+
/* Patterns.less
* Repeatable UI elements outside the base styles provided from the scaffolding
* ---------------------------------------------------------------------------- */
header {
- height: 40px;
- position: fixed;
+ position: sticky;
top: 0;
- left: 0;
- right: 0;
z-index: 800;
overflow: visible;
color: #BFBFBF;
+ margin: -5px -5px 15px -5px;
+ display: flex;
}
header a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
-header h3 a:hover, header .brand:hover, header ul .active > a {
+header .brand:hover, header ul .active > a {
background-color: #333;
background-color: rgba(255, 255, 255, 0.05);
color: #fff;
text-decoration: none;
}
-header h3 {
- position: relative;
-}
-
-header h3 a, header .brand {
+header .brand {
float: left;
display: block;
padding: 8px 20px 12px;
line-height: 40px;
}
-header .fill {
+header {
background-color: #222;
background-repeat: repeat-x;
background-image: linear-gradient(to bottom, #333333, #222222);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
- padding: 0 5px;
+ padding: 0;
+ /* the redundant properties below work around a csstidy bug */
+ padding-left: calc((100% - 940px) / 2 + 5px);
+ padding-right: calc((100% - 940px) / 2 + 5px);
}
-header div > ul, .nav {
+.nav {
display: block;
float: left;
margin: 0 10px 0 0;
left: 0;
}
-header div > ul > li, .nav > li {
+.nav > li {
display: block;
float: left;
}
-header div > ul a, .nav a {
+.nav a {
display: block;
float: none;
padding: 10px 10px 11px;
text-decoration: none;
}
-header div > ul a:hover, .nav a:hover {
+.nav a:hover {
color: #fff;
text-decoration: none;
}
-header div > ul .active > a, .nav .active > a {
+.nav .active > a {
background-color: #222;
background-color: rgba(0, 0, 0, 0.5);
}
-header div > ul.secondary-nav, .nav.secondary-nav {
- float: right;
- margin-left: 10px;
- margin-right: 0;
-}
-
-header div > ul.secondary-nav .menu-dropdown,
-.nav.secondary-nav .menu-dropdown,
-header div > ul.secondary-nav .dropdown-menu,
-.nav.secondary-nav .dropdown-menu {
- right: 0;
- border: 0;
-}
-
-header div > ul a.menu:hover,
-.nav a.menu:hover,
-header div > ul li.open .menu,
-.nav li.open .menu,
-header div > ul .dropdown-toggle:hover,
-.nav .dropdown-toggle:hover,
-header div > ul .dropdown.open .dropdown-toggle,
-.nav .dropdown.open .dropdown-toggle {
+.nav a.menu:hover {
background: #444;
background: rgba(255, 255, 255, 0.05);
}
-header div > ul .menu-dropdown,
-.nav .menu-dropdown,
-header div > ul .dropdown-menu,
.nav .dropdown-menu {
background-color: #333;
}
-header div > ul .menu-dropdown a.menu,
-.nav .menu-dropdown a.menu,
-header div > ul .dropdown-menu a.menu,
-.nav .dropdown-menu a.menu,
-header div > ul .menu-dropdown .dropdown-toggle,
-.nav .menu-dropdown .dropdown-toggle,
-header div > ul .dropdown-menu .dropdown-toggle,
-.nav .dropdown-menu .dropdown-toggle {
+.nav .dropdown-menu a.menu {
color: #fff;
}
-header div > ul .menu-dropdown a.menu.open,
-.nav .menu-dropdown a.menu.open,
-header div > ul .dropdown-menu a.menu.open,
-.nav .dropdown-menu a.menu.open,
-header div > ul .menu-dropdown .dropdown-toggle.open,
-.nav .menu-dropdown .dropdown-toggle.open,
-header div > ul .dropdown-menu .dropdown-toggle.open,
-.nav .dropdown-menu .dropdown-toggle.open {
- background: #444;
- background: rgba(255, 255, 255, 0.05);
-}
-
-header div > ul .menu-dropdown li a,
-.nav .menu-dropdown li a,
-header div > ul .dropdown-menu li a,
.nav .dropdown-menu li a {
color: #999;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
}
-header div > ul .menu-dropdown li a:hover,
-.nav .menu-dropdown li a:hover,
-header div > ul .dropdown-menu li a:hover,
.nav .dropdown-menu li a:hover {
background-color: #191919;
background-repeat: repeat-x;
color: #fff;
}
-header div > ul .menu-dropdown .active a,
-.nav .menu-dropdown .active a,
-header div > ul .dropdown-menu .active a,
.nav .dropdown-menu .active a {
color: #fff;
}
-header div > ul .menu-dropdown .divider,
-.nav .menu-dropdown .divider,
-header div > ul .dropdown-menu .divider,
-.nav .dropdown-menu .divider {
- background-color: #222;
- border-color: #444;
-}
-
-header ul .menu-dropdown li a, header ul .dropdown-menu li a {
+.nav .dropdown-menu li a {
padding: 4px 15px;
}
position: relative;
}
-a.menu:after, .dropdown-toggle:after {
+a.menu:after {
width: 0;
height: 0;
display: inline-block;
opacity: 0.5;
}
-.menu-dropdown, .dropdown-menu {
+.dropdown-menu {
background-color: #fff;
float: left;
position: absolute;
background-clip: padding-box;
}
-.menu-dropdown li, .dropdown-menu li {
+.dropdown-menu li {
float: none;
display: block;
background-color: transparent;
}
-.menu-dropdown .divider, .dropdown-menu .divider {
- height: 1px;
- margin: 5px 0;
- overflow: hidden;
- background-color: #eee;
- border-bottom: 1px solid #fff;
-}
-
-header .dropdown-menu a, .dropdown-menu a {
+.dropdown-menu a {
display: block;
padding: 4px 15px;
clear: both;
text-shadow: 0 1px 0 #fff;
}
-header .dropdown-menu a:hover,
-.dropdown-menu a:hover,
-header .dropdown-menu a.hover,
-.dropdown-menu a.hover {
+.dropdown-menu a:hover {
background-color: #ddd;
background-repeat: repeat-x;
background-image: linear-gradient(to bottom, #eee, #ddd);
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025);
}
-.open .menu,
-.dropdown.open .menu,
-.open .dropdown-toggle,
-.dropdown.open .dropdown-toggle {
- color: #fff;
- background: #ccc;
- background: rgba(0, 0, 0, 0.3);
-}
-
-.open .menu-dropdown,
-.dropdown.open .menu-dropdown,
-.open .dropdown-menu,
-.dropdown.open .dropdown-menu {
- left: 0;
-}
-
.dropdown:hover ul.dropdown-menu {
left: 0;
}
}
.tabs, .cbi-tabmenu {
+ --tab-bar-background-color: var(--background-color-high);
+ --tab-inactive-background-color-h: var(--border-color-low-h);
+ --tab-inactive-background-color-s: var(--border-color-low-s);
+ --tab-inactive-background-color-l: var(--border-color-low-l);
+ --tab-inactive-background-color: var(--border-color-low);
+ --tab-inactive-border-color: var(--border-color-medium);
+ --tab-inactive-text-color-delta-l: calc(85 / 255 * 100%);
+ --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));
+ --tab-inactive-text-color: hsl(var(--tab-inactive-background-color-h), var(--tab-inactive-background-color-s), var(--tab-inactive-text-color-l));
+ --tab-inactive-hover-background-color: var(--background-color-high);
+ --tab-active-background-color: var(--background-color-high);
+ --tab-active-text-color: #0069d6;
+ --tab-active-border-color: var(--border-color-medium);
+
margin: 0 -5px 18px;
padding: 0 2px;
list-style: none;
display: flex;
flex-wrap: wrap;
- background: linear-gradient(#fff 28px, #ddd 28px);
+ background: linear-gradient(var(--tab-bar-background-color) 28px, var(--tab-inactive-border-color) 28px);
background-size: 1px 29px;
background-position: left bottom;
}
height: 25px;
max-width: 48%;
margin: 4px 2px 0 2px;
- background: #fff;
- border: 1px solid #ddd;
+ background: var(--tab-active-background-color);
+ border: 1px solid var(--tab-active-border-color);
border-bottom: none;
border-radius: 4px 4px 0 0;
- color: #0069d6;
+ color: var(--tab-active-text-color);
}
.tabs > li > a, .cbi-tabmenu > li > a {
}
.tabs > li:not(.active):hover, .cbi-tabmenu > .cbi-tab-disabled:hover {
- background: linear-gradient(#fff 90%, #ddd 100%);
+ background: linear-gradient(var(--tab-inactive-hover-background-color) 90%, var(--tab-inactive-border-color) 100%);
}
.tabs > li:not(.active), .cbi-tabmenu > .cbi-tab-disabled {
- color: #999;
- background: linear-gradient(#eee 90%, #ddd 100%);
+ color: var(--tab-inactive-text-color);
+ background: linear-gradient(var(--tab-inactive-background-color) 90%, var(--tab-inactive-border-color) 100%);
}
.cbi-tab-disabled[data-errors]::after {
.breadcrumb {
padding: 7px 14px;
margin: 0 0 18px;
- background-color: #f5f5f5;
- background-repeat: repeat-x;
- background-image: linear-gradient(to bottom, #fff, #f5f5f5);
- border: 1px solid #ddd;
+ background: linear-gradient(to bottom, var(--background-color-high), var(--background-color-low));
+ border: 1px solid var(--border-color-medium);
border-radius: 3px;
- box-shadow: inset 0 1px 0 #fff;
+ display: flex;
+ flex: 0;
}
.breadcrumb li {
- display: inline;
- text-shadow: 0 1px 0 #fff;
+ list-style: none;
}
-.breadcrumb .divider {
+.breadcrumb li:not(:last-child)::after {
+ content: "|";
padding: 0 5px;
- color: #bfbfbf;
}
.breadcrumb .active a {
- color: #404040;
+ color: var(--text-color-medium);
}
footer {
- margin-top: 17px;
padding-top: 17px;
- border-top: 1px solid #eee;
+ margin-top: 17px;
+ border-top: 1px solid var(--border-color-low);
+ display: flex;
+ flex-wrap: wrap;
+ align-items: baseline;
+ justify-content: space-between;
}
#modal_overlay {
position: fixed;
top: 0;
bottom: 0;
- left: -10000px;
- right: 10000px;
background: rgba(0, 0, 0, 0.7);
z-index: 900;
- overflow-y: scroll;
- -webkit-overflow-scrolling: touch;
+ overflow: scroll;
transition: opacity .125s ease-in;
opacity: 0;
visibility: hidden;
.modal {
width: 90%;
margin: 5em auto;
- display: flex;
- flex-wrap: wrap;
+ display: table;
min-height: 32px;
max-width: 600px;
- align-items: center;
border-radius: 3px;
- background: #fff;
+ background: var(--background-color-high);
box-shadow: 0 0 3px #444;
padding: 1em 1em .5em 1em;
- max-height: 2400px;
min-width: 270px;
}
.modal > * {
- flex-basis: 100%;
line-height: normal;
margin-bottom: .5em;
+ max-width: 100%;
}
.modal > pre,
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
}
+.modal.alert-message {
+ color: var(--text-color-high);
+}
+
.item::after,
.btn,
.cbi-button {
cursor: pointer;
display: inline-block;
- background: linear-gradient(#fff, #fff 25%, #e6e6e6) no-repeat;
- padding: 5px 14px 6px;
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
- color: #333;
+ background: linear-gradient(var(--background-color-high), var(--background-color-high) 25%, var(--border-color-low)) no-repeat;
+ padding: 0 14px;
+ text-shadow: 0 1px 1px hsla(var(--background-color-high-h), var(--background-color-high-s), var(--background-color-high-l), 0.75);
+ color: var(--text-color-high);
font-size: 13px;
- line-height: normal;
- border: 1px solid #ccc;
- border-bottom-color: #bbb;
+ line-height: 2em;
+ border: 1px solid var(--border-color-high);
border-radius: 4px;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ 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);
+ white-space: pre;
}
.btn:focus,
}
.cbi-input-invalid,
-.cbi-input-invalid.cbi-dropdown,
+.cbi-input-invalid.cbi-dropdown:not(.btn):not(.cbi-button),
.cbi-input-invalid.cbi-dropdown:not([open]) > ul > li,
.cbi-value-error input {
color: #f00;
.cbi-button-link,
.cbi-button-up,
.cbi-button-down {
- color: #444;
+ color: var(--text-color-high);
}
.btn.primary,
clear: both;
}
-.cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-save):not(.cbi-button-reset) {
+.cbi-page-actions > * {
+ vertical-align: middle;
+}
+
+.cbi-page-actions > :not([method="post"]):not(.cbi-button-apply):not(.cbi-button-negative):not(.cbi-button-save):not(.cbi-button-reset) {
float: left;
margin-right: .4em;
}
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
-.cbi-page-actions .cbi-button-apply + .cbi-button-save {
- background: linear-gradient(#fff, #fff 25%, #e6e6e6);
- text-shadow: 0 -1px 0 rgba(255, 255, 255, 0.75);
+.cbi-page-actions .cbi-button-apply + .cbi-button-save,
+.cbi-page-actions .cbi-button-negative + .cbi-button-save {
+ background: linear-gradient(var(--background-color-high), var(--background-color-high) 25%, var(--border-color-low));
+ text-shadow: 0 -1px 0 hsla(var(--background-color-high-h), var(--background-color-high-s), var(--background-color-high-l), 0.75);
color: #4a4;
}
.cbi-dropdown {
- border: 1px solid #ccc;
- border-radius: 3px;
- display: inline-flex;
- padding: 0;
+ display: inline-flex !important;
cursor: pointer;
height: auto;
- background: linear-gradient(#fff 0%, #e9e8e6 100%);
position: relative;
- color: #404040;
+ padding: 0 !important;
+}
+
+.cbi-dropdown:not(.btn):not(.cbi-button) {
+ background: linear-gradient(var(--background-color-high) 0%, var(--border-color-low) 100%);
+ border: 1px solid var(--border-color-high);
+ border-radius: 3px;
+ color: var(--text-color-high);
}
.cbi-dynlist > .item:focus,
width: 100%;
}
+.cbi-dropdown.btn > ul:not(.dropdown),
+.cbi-dropdown.cbi-button > ul:not(.dropdown) {
+ margin: 0 0 0 13px !important;
+}
+
+.cbi-dropdown.btn.spinning > ul:not(.dropdown),
+.cbi-dropdown.cbi-button.spinning > ul:not(.dropdown) {
+ margin: 0 !important;
+}
+
.cbi-dropdown > ul.preview {
display: none;
}
padding: 0 .25em;
}
+.cbi-dropdown.btn > .open,
+.cbi-dropdown.cbi-button > .open {
+ padding: 0 .5em;
+ margin-left: .5em;
+ border-left: 1px solid;
+}
+
.cbi-dropdown > .more,
-.cbi-dropdown > ul > li[placeholder] {
+.cbi-dropdown:not(.btn):not(.cbi-button) > ul > li[placeholder] {
color: #777;
font-weight: bold;
- text-shadow: 1px 1px 0px #fff;
+ text-shadow: 1px 1px 0px var(--background-color-high);
display: none;
justify-content: center;
}
.cbi-dropdown > ul > li {
display: none;
- padding: .25em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex-grow: 1;
align-items: center;
align-self: center;
- color: #404040;
+ color: inherit;
+}
+
+.cbi-dropdown > ul.dropdown > li,
+.cbi-dropdown:not(.btn):not(.cbi-button) > ul > li {
min-height: 20px;
+ padding: .25em;
+ color: var(--text-color-high);
}
.cbi-dropdown > ul > li .hide-open { display: block; display: initial; }
.cbi-dropdown > ul > li .hide-close { display: none; }
.cbi-dropdown > ul > li[display]:not([display="0"]) {
- border-left: 1px solid #ccc;
+ border-left: 1px solid var(--border-color-high);
}
.cbi-dropdown[empty] > ul {
.cbi-dropdown[open] > ul.dropdown {
display: block;
- background: #f6f6f5;
+ background: var(--background-color-low);
border: 1px solid #918e8c;
box-shadow: 0 0 4px #918e8c;
position: absolute;
.cbi-dropdown[multiple][more] > .more,
.cbi-dropdown[multiple][empty] > .more {
flex-grow: 1;
- display: flex;
+ display: flex !important;
}
.cbi-dropdown[empty] > ul > li,
.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder],
.cbi-dropdown[multiple][open] > ul.dropdown > li > form {
- display: block;
+ display: block !important;
}
.cbi-dropdown[open] > ul.dropdown > li .hide-open { display: none; }
.cbi-dropdown[open] > ul.dropdown > li .hide-close { display: block; display: initial; }
.cbi-dropdown[open] > ul.dropdown > li {
- border-bottom: 1px solid #ccc;
+ border-bottom: 1px solid var(--border-color-high);
}
.cbi-dropdown[open] > ul.dropdown > li[selected] {
background: #b0d0f0;
+ color: #404040;
+}
+
+.cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li[selected][placeholder] {
+ color: #777;
+ text-shadow: 1px 1px 0px #fff;
}
.cbi-dropdown[open] > ul.dropdown > li.focus {
background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%);
+ color: #404040;
+}
+
+.cbi-dropdown[open]:not(.btn):not(.cbi-button) > ul > li.focus[placeholder] {
+ color: #777;
+ text-shadow: 1px 1px 0px #fff;
}
.cbi-dropdown[open] > ul.dropdown > li:last-child {
input[type="password"] + .cbi-button,
select + .cbi-button {
border-radius: 0 3px 3px 0;
- border-color: #ccc;
+ border-color: var(--border-color-high);
margin-left: -2px;
padding: 0 6px;
vertical-align: top;
.cbi-tooltip {
position: absolute;
z-index: 1000;
- left: -1000px;
- box-shadow: 0 0 2px #ccc;
+ left: -10000px;
+ box-shadow: 0 0 2px var(--border-color-high);
border-radius: 3px;
- background: #fff;
+ background: var(--background-color-high);
white-space: pre;
padding: 2px 5px;
opacity: 0;
}
.cbi-progressbar {
- border: 1px solid #ccc;
+ border: 1px solid var(--border-color-high);
border-radius: 3px;
position: relative;
min-width: 170px;
height: 20px;
margin: 4px 0;
- background: #f9f9f9;
+ background: var(--background-color-medium);
}
.cbi-progressbar > div {
right: 0;
left: 0;
text-align: center;
- text-shadow: 0 0 2px #fff;
+ text-shadow: 0 0 2px var(--background-color-high);
content: attr(title);
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
}
+:root[data-darkmode="true"] .cbi-progressbar::after {
+ mix-blend-mode: difference;
+}
+
.zonebadge .cbi-tooltip {
padding: 1px;
background: inherit;
.btn.disabled {
cursor: default;
- background-image: none;
opacity: 0.65;
box-shadow: none;
}
.btn[disabled] {
cursor: default;
- background-image: none;
opacity: 0.65;
box-shadow: none;
}
.alert-message {
position: relative;
- padding: 7px 15px;
- margin-bottom: 18px;
+ padding: .5em .5em .25em .5em;
+ margin-bottom: .5em;
color: #404040;
background: linear-gradient(to bottom, #fceec1, #eedc94) repeat-x;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
border-style: solid;
border-radius: 4px;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+ white-space: unset;
}
.alert-message .close {
*margin-top: 0;
}
-.alert-message a {
- font-weight: bold;
- color: #404040;
-}
-
-.alert-message.danger p a,
-.alert-message.error p a,
-.alert-message.success p a,
-.alert-message.info p a {
- color: #fff;
-}
-
-.alert-message h5 {
- line-height: 18px;
-}
-
+.alert-message h4,
+.alert-message h5,
+.alert-message pre,
+.alert-message ul,
+.alert-message li,
.alert-message p {
- margin-bottom: 0;
+ color: inherit;
+ border: none;
+ line-height: inherit;
+ background: transparent;
+ padding: 0;
+ margin: .25em 0;
}
-.alert-message div {
- margin-top: 5px;
- margin-bottom: 2px;
- line-height: 28px;
+.alert-message button {
+ margin: .25em 0;
}
-.label {
+.label,
+header [data-indicator] {
padding: 1px 3px 2px;
font-size: 9.75px;
font-weight: bold;
background-color: #bfbfbf;
border-radius: 3px;
text-shadow: none;
+ margin-left: .4em;
+}
+
+header [data-indicator][data-clickable] {
+ cursor: pointer;
}
a.label:link,
background-color: #46a546;
}
-.label.notice {
+.label.notice,
+header [data-indicator][data-style="active"] {
background-color: #62cffc;
}
/* LuCI specific items */
.hidden { display: none }
-#xhr_poll_status {
- cursor: pointer;
-}
-
form.inline { display: inline; margin-bottom: 0; }
-header .pull-right { padding-top: 8px; }
+header .pull-right { padding-top: 8px; margin-left: auto; }
#modemenu li:last-child span.divider { display: none }
-#syslog { width: 100%; }
+#syslog {
+ width: 100%;
+ color: var(--text-color-highest);
+}
.cbi-section-table .tr:hover .td,
.cbi-section-table .tr:hover .th,
.cbi-section-table .tr:hover::before {
- background-color: #f5f5f5;
+ background-color: var(--background-color-low);
}
.cbi-section-table .tr.cbi-section-table-descr .th {
.cbi-section-table-titles.named::before,
.cbi-section-table-descr.named::before,
.cbi-section-table-row[data-title]::before {
- border-top: 1px solid #ddd;
+ border-top: 1px solid var(--border-color-medium);
}
.left { text-align: left !important; }
.middle { vertical-align: middle !important; }
.bottom { vertical-align: bottom !important; }
-.cbi-value-field { line-height: 1.5em; }
-
.cbi-value-field input[type=checkbox],
.cbi-value-field input[type=radio] {
margin-top: 8px;
.cbi-rowstyle-2,
.tr.table-titles,
.tr.cbi-section-table-titles {
- background: #f9f9f9;
+ background: var(--background-color-medium);
}
.cbi-value-description {
- background-image: url(/luci-static/resources/cbi/help.gif);
- background-position: .25em .2em;
- background-repeat: no-repeat;
- margin: .25em 0 0 0;
- padding: 0 0 0 1.7em;
+ 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;
+ margin: .25em 0 0;
+ padding: .1em 0 0 1.3em;
}
.cbi-section-error {
}
.ifacebox {
- background-color: #fff;
- border: 1px solid #ccc;
+ border: 1px solid var(--border-color-high);
margin: 0 10px;
text-align: center;
white-space: nowrap;
- background-image: linear-gradient(#fff, #fff 25%, #f9f9f9);
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ background: linear-gradient(var(--background-color-high), var(--background-color-high) 25%, var(--background-color-medium));
+ text-shadow: 0 1px 1px hsla(var(--background-color-high-h), var(--background-color-high-s), var(--background-color-high-l), 0.75);
border-radius: 4px;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ 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);
display: inline-flex;
flex-direction: column;
line-height: 1.2em;
}
.ifacebox .ifacebox-head {
- border-bottom: 1px solid #ccc;
+ border-bottom: 1px solid var(--border-color-high);
+ border-radius: 4px 4px 0 0;
padding: 2px;
background: #eee;
+ color: #404040;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
}
.ifacebox .ifacebox-head.active {
display: inline-block;
flex-direction: row;
white-space: nowrap;
- background-color: #fff;
- border: 1px solid #ccc;
+ border: 1px solid var(--border-color-high);
padding: 2px;
- background-image: linear-gradient(#fff, #fff 25%, #f9f9f9);
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ background: linear-gradient(var(--background-color-high), var(--background-color-high) 25%, var(--background-color-medium));
+ color: var(--text-color-high);
+ text-shadow: 0 1px 1px hsla(var(--background-color-high-h), var(--background-color-high-s), var(--background-color-high-l), 0.75);
border-radius: 4px;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ 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);
cursor: default;
line-height: 1.2em;
}
}
.network-status-table .ifacebox-body > div {
+ margin: -.125em;
display: flex;
flex-wrap: wrap;
- margin: -.125em;
}
#dsl_status_table .ifacebox-body span > strong {
.ifacebadge.large,
.network-status-table .ifacebox-body .ifacebadge {
- display: inline-flex;
+ display: flex;
flex: 1;
padding: .25em;
min-width: 220px;
margin: .125em;
}
+.ifacebadge.large {
+ display: inline-flex;
+}
+
+.network-status-table .ifacebox-body .ifacebadge > span {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
.ifacebadge > *,
.ifacebadge.large > * {
margin: 0 .125em;
color: #0069d6;
}
-#modal_overlay > .modal.uci-dialog {
+div.cbi-value var[data-tooltip],
+.td.cbi-value-field var[data-tooltip],
+div.cbi-value var.cbi-tooltip-container,
+.td.cbi-value-field var.cbi-tooltip-container {
+ cursor: help;
+ border-bottom: 1px dotted #0069d6;
+}
+
+div.cbi-value var.cbi-tooltip-container,
+.td.cbi-value-field var.cbi-tooltip-container .cbi-tooltip {
+ font-style: normal;
+ white-space: normal;
+ color: var(--text-color-high);
+}
+
+#modal_overlay > .modal.uci-dialog,
+#modal_overlay > .modal.cbi-modal {
max-width: 900px;
}
white-space: pre;
}
+.uci-change-list > del,
+.uci-change-list > ins,
+.uci-change-list > var,
+.uci-change-legend-label > del,
+.uci-change-legend-label > ins,
+.uci-change-legend-label > var {
+ margin-bottom: 2px;
+ border: 1px solid #ccc;
+ background: #eee;
+ line-height: 15px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding: 2px;
+}
+
+.uci-change-list > * > del,
+.uci-change-list > * > ins,
+.uci-change-list > * > var {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
.uci-change-list del,
.uci-change-list ins,
.uci-change-list var,
text-decoration: none;
font-family: monospace;
font-style: normal;
- border: 1px solid #ccc;
- background: #eee;
- padding: 2px;
+ color: #404040;
display: block;
- line-height: 15px;
- margin-bottom: 1px;
}
.uci-change-list ins,
background: #eee;
}
-.uci-change-list var ins,
-.uci-change-list var del {
- display: inline-block;
- border: none;
- width: 100%;
- padding: 0;
-}
-
.uci-change-legend {
- padding: 5px;
+ display: flex;
+ flex-wrap: wrap;
}
.uci-change-legend-label {
- width: 150px;
- float: left;
+ flex-basis: 150px;
+ margin: 2px;
+ display: flex;
+ align-items: center;
}
.uci-change-legend-label > ins,
.uci-change-legend-label > del,
.uci-change-legend-label > var {
- float: left;
margin-right: 4px;
width: 16px;
height: 16px;
- display: block;
- position: relative;
-}
-
-.uci-change-legend-label var ins,
-.uci-change-legend-label var del {
- border: none;
- position: absolute;
- top: 2px;
- left: 2px;
- right: 2px;
- bottom: 2px;
-}
-
-#modal_overlay {
- position: fixed;
- top: 0;
- bottom: 0;
- left: -10000px;
- right: 10000px;
- background: rgba(0, 0, 0, 0.7);
- z-index: 900;
- overflow-y: scroll;
- -webkit-overflow-scrolling: touch;
- transition: opacity .125s ease-in;
- opacity: 0;
-}
-
-#modal_overlay > .modal {
- width: 90%;
- margin: 5em auto;
display: flex;
- flex-wrap: wrap;
- min-height: 32px;
- max-width: 600px;
- align-items: center;
- border-radius: 3px;
- background: #fff;
- box-shadow: 0 0 3px #444;
- padding: 1em 1em .5em 1em;
- max-height: 2400px;
- min-width: 270px;
}
-#modal_overlay .modal > * {
+.uci-change-legend-label > var > * {
flex-basis: 100%;
- line-height: normal;
- margin-bottom: .5em;
-}
-
-#modal_overlay .modal > pre,
-#modal_overlay .modal > textarea {
- white-space: pre-wrap;
- overflow: auto;
-}
-
-body.modal-overlay-active {
- overflow: hidden;
- height: 100vh;
-}
-
-body.modal-overlay-active #modal_overlay {
- left: 0;
- right: 0;
- opacity: 1;
}
html body.apply-overlay-active {
overflow: visible;
transition: opacity .25s ease-in;
}
+
+.cbi-filebrowser {
+ min-width: 210px;
+ max-width: 100%;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ display: flex;
+ flex-direction: column;
+ opacity: 0;
+ height: 0;
+ overflow: hidden;
+}
+
+.cbi-filebrowser.open {
+ opacity: 1;
+ height: auto;
+ overflow: visible;
+ transition: opacity .25s ease-in;
+}
+
+.cbi-filebrowser > * {
+ max-width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding: 0 0 .25em 0;
+ margin: .25em .25em 0px .25em;
+ white-space: nowrap;
+ border-bottom: 1px solid #ccc;
+}
+
+.cbi-filebrowser .cbi-button-positive {
+ margin-right: .25em;
+}
+
+.cbi-filebrowser > div {
+ border-bottom: none;
+}
+
+.cbi-filebrowser > ul > li {
+ display: flex;
+ flex-direction: row;
+}
+
+.cbi-filebrowser > ul > li:hover {
+ background: #f5f5f5;
+}
+
+.cbi-filebrowser > ul > li > div:first-child {
+ flex: 10;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.cbi-filebrowser > ul > li > div:last-child {
+ flex: 3;
+ text-align: right;
+}
+
+.cbi-filebrowser > ul > li > div:last-child > button {
+ padding: .125em .25em;
+ margin: 1px 0 1px .25em;
+}
+
+.cbi-filebrowser .upload {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ margin: 0 -.125em .25em -.125em;
+ padding: 0 0 .125em 0px;
+ border-bottom: 1px solid #ccc;
+}
+
+.cbi-filebrowser .upload > * {
+ margin: .125em;
+ flex: 1;
+}
+
+.cbi-filebrowser .upload > .btn {
+ flex-basis: 60px;
+}
+
+.cbi-filebrowser .upload > div {
+ flex: 10;
+ min-width: 150px;
+}
+
+.cbi-filebrowser .upload > div > input {
+ width: 100%;
+}
+
+@keyframes fade-in {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+
+@keyframes fade-out {
+ 0% { opacity: 1; }
+ 100% { opacity: 0; }
+}
+
+.fade-in {
+ animation: fade-in .4s ease;
+}
+
+.fade-out {
+ animation: fade-out .4s ease;
+}
+
+.assoclist .ifacebadge {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ white-space: normal;
+ text-align: center;
+}
+
+.assoclist .ifacebadge > img {
+ margin: .2em;
+}
+
+.assoclist .td:nth-of-type(3),
+.assoclist .td:nth-of-type(5) {
+ width: 25%;
+}
+
+.assoclist .td:nth-of-type(6) button {
+ word-break: normal;
+}