2020-04-17 13:13:16 -04:00
|
|
|
:root {
|
|
|
|
/* Color */
|
|
|
|
--surface: #c0c0c0;
|
|
|
|
--button-highlight: #ffffff;
|
|
|
|
--button-face: #dfdfdf;
|
|
|
|
--button-shadow: #808080;
|
|
|
|
--window-frame: #0a0a0a;
|
|
|
|
--dialog-blue: #000080;
|
|
|
|
--dialog-blue-light: #1084d0;
|
2020-04-18 08:56:01 -04:00
|
|
|
--link-blue: #0000ff;
|
2020-04-17 13:13:16 -04:00
|
|
|
|
2020-04-17 13:42:17 -04:00
|
|
|
/* Spacing */
|
|
|
|
--element-spacing: 8px;
|
2020-04-17 15:16:51 -04:00
|
|
|
--grouped-button-spacing: 4px;
|
|
|
|
--grouped-element-spacing: 6px;
|
|
|
|
--radio-width: 12px;
|
2020-04-17 15:40:54 -04:00
|
|
|
--checkbox-width: 13px;
|
2020-04-17 14:36:38 -04:00
|
|
|
--radio-label-spacing: 6px;
|
2020-04-17 13:42:17 -04:00
|
|
|
|
2020-04-17 15:40:54 -04:00
|
|
|
/* Some detailed computations for radio buttons and checkboxes */
|
2020-04-17 15:16:51 -04:00
|
|
|
--radio-total-width-precalc: var(--radio-width) + var(--radio-label-spacing);
|
|
|
|
--radio-total-width: calc(var(--radio-total-width-precalc));
|
|
|
|
--radio-left: calc(-1 * var(--radio-total-width-precalc));
|
|
|
|
|
2020-04-17 15:40:54 -04:00
|
|
|
--checkbox-total-width-precalc: var(--checkbox-width) +
|
|
|
|
var(--radio-label-spacing);
|
|
|
|
--checkbox-total-width: calc(var(--checkbox-total-width-precalc));
|
|
|
|
--checkbox-left: calc(-1 * var(--checkbox-total-width-precalc));
|
|
|
|
|
2020-04-17 13:13:16 -04:00
|
|
|
/* Borders */
|
2020-04-17 13:42:17 -04:00
|
|
|
--border-width: 1px;
|
2020-04-17 13:13:16 -04:00
|
|
|
--border-raised-outer: inset -1px -1px var(--window-frame),
|
|
|
|
inset 1px 1px var(--button-highlight);
|
|
|
|
--border-raised-inner: inset -2px -2px var(--button-shadow),
|
|
|
|
inset 2px 2px var(--button-face);
|
|
|
|
--border-sunken-outer: inset -1px -1px var(--button-highlight),
|
|
|
|
inset 1px 1px var(--window-frame);
|
|
|
|
--border-sunken-inner: inset -2px -2px var(--button-face),
|
|
|
|
inset 2px 2px var(--button-shadow);
|
2020-04-17 15:40:54 -04:00
|
|
|
|
2020-04-18 07:59:49 -04:00
|
|
|
/* Field borders (checkbox, input, etc) flip window-frame and button-shadow */
|
|
|
|
--border-field: inset -1px -1px var(--button-highlight),
|
2020-04-17 15:40:54 -04:00
|
|
|
inset 1px 1px var(--button-shadow), inset -2px -2px var(--button-face),
|
|
|
|
inset 2px 2px var(--window-frame);
|
2020-04-17 13:13:16 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
* {
|
|
|
|
/* Hmmmm... how can I make these a webfont */
|
|
|
|
font-family: "MS Sans Serif", Arial;
|
|
|
|
font-size: 11px;
|
|
|
|
-webkit-font-smoothing: none;
|
|
|
|
color: #222222;
|
|
|
|
}
|
|
|
|
|
|
|
|
u {
|
|
|
|
text-decoration: none;
|
|
|
|
border-bottom: 0.5px solid #222222;
|
|
|
|
}
|
|
|
|
|
|
|
|
button {
|
|
|
|
box-sizing: border-box;
|
|
|
|
border: none;
|
|
|
|
background: var(--surface);
|
|
|
|
box-shadow: var(--border-raised-outer), var(--border-raised-inner);
|
|
|
|
|
|
|
|
min-width: 75px;
|
|
|
|
min-height: 23px;
|
|
|
|
}
|
|
|
|
|
|
|
|
button:active {
|
|
|
|
box-shadow: var(--border-sunken-outer), var(--border-sunken-inner);
|
|
|
|
}
|
|
|
|
|
|
|
|
button:focus {
|
|
|
|
outline: 1px dotted #000000;
|
|
|
|
outline-offset: -4px;
|
|
|
|
}
|
|
|
|
|
2020-04-17 15:45:04 -04:00
|
|
|
:disabled,
|
|
|
|
:disabled + label {
|
2020-04-17 13:42:17 -04:00
|
|
|
color: var(--button-shadow);
|
|
|
|
text-shadow: 1px 1px 0 var(--button-highlight);
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:13:16 -04:00
|
|
|
.dialog {
|
|
|
|
box-shadow: var(--border-raised-outer), var(--border-raised-inner);
|
|
|
|
background: var(--surface);
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar {
|
2020-04-17 13:13:16 -04:00
|
|
|
background: linear-gradient(
|
|
|
|
90deg,
|
|
|
|
var(--dialog-blue),
|
|
|
|
var(--dialog-blue-light)
|
|
|
|
);
|
|
|
|
margin: 2px;
|
|
|
|
padding: 2px;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-title {
|
2020-04-17 13:13:16 -04:00
|
|
|
font-weight: bold;
|
|
|
|
color: white;
|
|
|
|
letter-spacing: 0.1ch;
|
|
|
|
margin-right: 24px;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-controls {
|
2020-04-17 13:13:16 -04:00
|
|
|
display: flex;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-controls button {
|
2020-04-17 13:13:16 -04:00
|
|
|
display: block;
|
|
|
|
min-width: 14px;
|
|
|
|
min-height: 12px;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-controls button:focus {
|
2020-04-17 13:13:16 -04:00
|
|
|
outline: none;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-controls button[aria-label="Minimize"] {
|
2020-04-17 13:13:16 -04:00
|
|
|
background-image: url("./minimize.svg");
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
background-position: bottom 2px left 3px;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-controls button[aria-label="Maximize"] {
|
2020-04-17 13:13:16 -04:00
|
|
|
background-image: url("./maximize.svg");
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
/* Off by 1px because contents can't go above the inner shadow */
|
|
|
|
/* Should be 9px by 9px, with top 1px */
|
|
|
|
background-position: top 2px left 2px;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.menubar-controls button[aria-label="Close"] {
|
2020-04-17 13:13:16 -04:00
|
|
|
margin-left: 2px;
|
|
|
|
background-image: url("./close.svg");
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
background-position: top 2px center;
|
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.dialog-body {
|
2020-04-17 13:42:17 -04:00
|
|
|
margin: var(--element-spacing);
|
2020-04-17 13:13:16 -04:00
|
|
|
}
|
|
|
|
|
2020-04-17 13:20:04 -04:00
|
|
|
.dialog-body > * + * {
|
2020-04-17 13:42:17 -04:00
|
|
|
margin-top: var(--element-spacing);
|
2020-04-17 13:13:16 -04:00
|
|
|
}
|
|
|
|
|
2020-04-17 15:49:53 -04:00
|
|
|
.align-right {
|
|
|
|
justify-content: flex-end;
|
2020-04-17 13:13:16 -04:00
|
|
|
}
|
|
|
|
|
2020-04-17 13:42:17 -04:00
|
|
|
fieldset {
|
|
|
|
border: none;
|
|
|
|
box-shadow: var(--border-sunken-outer), var(--border-raised-inner);
|
|
|
|
padding: calc(2 * var(--border-width) + var(--element-spacing));
|
2020-04-17 15:16:51 -04:00
|
|
|
padding-block-start: var(--element-spacing);
|
2020-04-17 15:49:53 -04:00
|
|
|
margin: 0;
|
2020-04-17 13:42:17 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
legend {
|
|
|
|
background: var(--surface);
|
|
|
|
}
|
|
|
|
|
|
|
|
.field-row {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
[class^="field-row"] + [class^="field-row"] {
|
|
|
|
margin-top: var(--grouped-element-spacing);
|
|
|
|
}
|
|
|
|
|
|
|
|
.field-row * + * {
|
|
|
|
margin-left: var(--grouped-element-spacing);
|
|
|
|
}
|
|
|
|
|
|
|
|
.field-row-stacked {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
}
|
|
|
|
|
|
|
|
.field-row-stacked * + * {
|
|
|
|
margin-top: var(--grouped-element-spacing);
|
2020-04-17 13:13:16 -04:00
|
|
|
}
|
2020-04-17 14:36:38 -04:00
|
|
|
|
|
|
|
label {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
2020-04-17 15:16:51 -04:00
|
|
|
|
2020-04-17 15:40:54 -04:00
|
|
|
input[type="radio"],
|
|
|
|
input[type="checkbox"] {
|
2020-04-17 15:16:51 -04:00
|
|
|
appearance: none;
|
|
|
|
-webkit-appearance: none;
|
|
|
|
-moz-appearance: none;
|
|
|
|
margin: 0;
|
2020-04-17 15:40:54 -04:00
|
|
|
border: none;
|
2020-04-17 14:36:38 -04:00
|
|
|
}
|
2020-04-17 15:16:51 -04:00
|
|
|
|
2020-04-17 14:36:38 -04:00
|
|
|
input[type="radio"] + label {
|
|
|
|
position: relative;
|
2020-04-17 15:16:51 -04:00
|
|
|
margin-left: var(--radio-total-width);
|
2020-04-17 14:36:38 -04:00
|
|
|
}
|
2020-04-17 15:16:51 -04:00
|
|
|
|
2020-04-17 14:36:38 -04:00
|
|
|
input[type="radio"] + label::before {
|
|
|
|
content: "";
|
2020-04-17 15:16:51 -04:00
|
|
|
position: absolute;
|
|
|
|
left: calc(-1 * var(--radio-total-width));
|
2020-04-17 14:36:38 -04:00
|
|
|
display: inline-block;
|
2020-04-17 15:16:51 -04:00
|
|
|
width: var(--radio-width);
|
|
|
|
height: var(--radio-width);
|
2020-04-17 14:36:38 -04:00
|
|
|
margin-right: var(--radio-label-spacing);
|
|
|
|
background: url("./radio-border.svg");
|
|
|
|
}
|
2020-04-17 15:16:51 -04:00
|
|
|
|
2020-04-17 14:36:38 -04:00
|
|
|
input[type="radio"]:checked + label::after {
|
2020-04-17 15:16:51 -04:00
|
|
|
--radio-dot-width: 4px;
|
|
|
|
--radio-dot-top: calc(var(--radio-width) / 2 - var(--radio-dot-width) / 2);
|
|
|
|
--radio-dot-left: calc(
|
|
|
|
-1 * (var(--radio-total-width-precalc)) + var(--radio-width) / 2 - var(
|
|
|
|
--radio-dot-width
|
|
|
|
) / 2
|
|
|
|
);
|
|
|
|
|
2020-04-17 14:36:38 -04:00
|
|
|
content: "";
|
|
|
|
display: block;
|
2020-04-17 15:16:51 -04:00
|
|
|
width: var(--radio-dot-width);
|
|
|
|
height: var(--radio-dot-width);
|
|
|
|
top: var(--radio-dot-top);
|
|
|
|
left: var(--radio-dot-left);
|
2020-04-17 14:36:38 -04:00
|
|
|
position: absolute;
|
|
|
|
background: url("./radio-dot.svg");
|
|
|
|
}
|
2020-04-17 15:16:51 -04:00
|
|
|
|
2020-04-17 15:40:54 -04:00
|
|
|
input[type="radio"]:focus + label,
|
|
|
|
input[type="checkbox"]:focus + label {
|
2020-04-17 15:16:51 -04:00
|
|
|
outline: 1px dotted #000000;
|
|
|
|
}
|
|
|
|
|
2020-04-17 14:36:38 -04:00
|
|
|
input[type="radio"][disabled] + label::before {
|
|
|
|
background: url("./radio-border-disabled.svg");
|
|
|
|
}
|
2020-04-17 15:16:51 -04:00
|
|
|
|
2020-04-17 14:36:38 -04:00
|
|
|
input[type="radio"][disabled]:checked + label::after {
|
|
|
|
background: url("./radio-dot-disabled.svg");
|
|
|
|
}
|
2020-04-17 15:40:54 -04:00
|
|
|
|
|
|
|
input[type="checkbox"] + label {
|
|
|
|
position: relative;
|
|
|
|
margin-left: var(--checkbox-total-width);
|
|
|
|
}
|
|
|
|
|
|
|
|
input[type="checkbox"] + label::before {
|
|
|
|
content: "";
|
|
|
|
position: absolute;
|
|
|
|
left: calc(-1 * var(--checkbox-total-width));
|
|
|
|
display: inline-block;
|
|
|
|
width: var(--checkbox-width);
|
|
|
|
height: var(--checkbox-width);
|
|
|
|
background: var(--button-highlight);
|
2020-04-18 07:59:49 -04:00
|
|
|
box-shadow: var(--border-field);
|
2020-04-17 15:40:54 -04:00
|
|
|
margin-right: var(--radio-label-spacing);
|
|
|
|
}
|
|
|
|
|
|
|
|
input[type="checkbox"]:checked + label::after {
|
|
|
|
--checkmark-width: 7px;
|
|
|
|
--checkmark-top: 3px;
|
|
|
|
--checkmark-left: 3px;
|
|
|
|
|
|
|
|
content: "";
|
|
|
|
display: block;
|
|
|
|
width: var(--checkmark-width);
|
|
|
|
height: var(--checkmark-width);
|
|
|
|
position: absolute;
|
|
|
|
top: var(--checkmark-top);
|
|
|
|
left: calc(
|
|
|
|
-1 * (var(--checkbox-total-width-precalc)) + var(--checkmark-left)
|
|
|
|
);
|
|
|
|
background: url("./checkmark.svg");
|
|
|
|
}
|
|
|
|
|
|
|
|
input[type="checkbox"][disabled] + label::before {
|
|
|
|
background: var(--surface);
|
|
|
|
}
|
|
|
|
|
|
|
|
input[type="checkbox"][disabled]:checked + label::after {
|
2020-04-17 15:45:04 -04:00
|
|
|
background: url("./checkmark-disabled.svg");
|
2020-04-17 15:40:54 -04:00
|
|
|
}
|
2020-04-18 07:59:49 -04:00
|
|
|
|
2020-04-18 08:45:16 -04:00
|
|
|
input[type="text"],
|
|
|
|
select,
|
|
|
|
textarea {
|
|
|
|
padding: 3px 4px;
|
|
|
|
border: none;
|
|
|
|
box-shadow: var(--border-field);
|
|
|
|
background-color: var(--button-highlight);
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
input[type="text"],
|
|
|
|
select {
|
|
|
|
height: 21px;
|
|
|
|
}
|
|
|
|
|
|
|
|
input[type="text"] {
|
|
|
|
/* For some reason descenders are getting cut off without this */
|
|
|
|
line-height: 2;
|
|
|
|
}
|
|
|
|
|
2020-04-18 07:59:49 -04:00
|
|
|
select {
|
|
|
|
appearance: none;
|
|
|
|
-webkit-appearance: none;
|
|
|
|
-moz-appearance: none;
|
|
|
|
position: relative;
|
|
|
|
background-image: url("./dropdown-button.svg");
|
|
|
|
background-position: top 2px right 2px;
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
}
|
|
|
|
|
2020-04-18 08:45:16 -04:00
|
|
|
select:focus,
|
|
|
|
input[type="text"]:focus,
|
|
|
|
textarea:focus {
|
2020-04-18 07:59:49 -04:00
|
|
|
outline: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
select:active {
|
|
|
|
background-image: url("./dropdown-button-active.svg");
|
|
|
|
}
|
2020-04-18 08:56:01 -04:00
|
|
|
|
|
|
|
a {
|
|
|
|
color: var(--link-blue);
|
|
|
|
}
|
|
|
|
|
|
|
|
a:focus {
|
|
|
|
outline: 1px dotted var(--link-blue);
|
|
|
|
}
|