You've already forked snikket-web-portal
1326 lines
20 KiB
SCSS
1326 lines
20 KiB
SCSS
@import "_theme.scss";
|
|
@import "_baseline.scss";
|
|
|
|
$_top-h-size: nth($h-sizes, 1);
|
|
$_top-h-small-size: nth($h-small-sizes, 1);
|
|
|
|
/* headings */
|
|
|
|
@for $n from 1 through 6 {
|
|
h#{$n} {
|
|
color: $primary-100;
|
|
}
|
|
}
|
|
|
|
/* block quotes */
|
|
|
|
blockquote {
|
|
margin-left: $w-l2 / 2 - $w-s4 / 2;
|
|
padding-left: $w-l2 / 2 - $w-s4 / 2;
|
|
border-left: $w-s4 solid $primary-500;
|
|
}
|
|
|
|
/* coarse layout */
|
|
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
background-color: $gray-900;
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
main {
|
|
padding: $w-l1;
|
|
}
|
|
|
|
#mwrap {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: row-reverse;
|
|
|
|
> .filler, > .flashbox {
|
|
flex: 1 1 1rem;
|
|
}
|
|
|
|
> main {
|
|
flex: 0 1 60rem;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: $large-screen-threshold) {
|
|
#mwrap {
|
|
display: block;
|
|
|
|
> main {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
.flashbox > div.box > :first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
/* top bar */
|
|
|
|
@mixin snikket-logo {
|
|
background-image: url('../img/snikket-logo.svg');
|
|
background-size: contain;
|
|
background-repeat: no-repeat;
|
|
background-position: $w-s2 0em;
|
|
padding-left: 2em;
|
|
}
|
|
|
|
div#topbar {
|
|
background-color: white;
|
|
@extend .el-1;
|
|
color: $primary-200;
|
|
margin: 0;
|
|
padding: $w-s1;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
& > header {
|
|
flex: 0 1 auto;
|
|
color: black;
|
|
font-size: $_top-h-size;
|
|
line-height: 1.5;
|
|
|
|
body.debug & {
|
|
color: red;
|
|
}
|
|
|
|
@media screen and (max-width: $small-screen-threshold) {
|
|
font-size: $_top-h-small-size;
|
|
}
|
|
|
|
& > a {
|
|
color: inherit;
|
|
text-decoration: none;
|
|
|
|
span {
|
|
@include snikket-logo;
|
|
}
|
|
}
|
|
|
|
& > a:visited, & > a:hover, & > a:focus, & > a:active {
|
|
color: inherit;
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
|
|
& > div.filler {
|
|
flex: 1 1 0px;
|
|
}
|
|
|
|
& > nav.usermenu {
|
|
flex: 0 1 auto;
|
|
}
|
|
}
|
|
|
|
/* standard elevations */
|
|
|
|
.el-1, .box.el-1, div.form.el-1 {
|
|
box-shadow:
|
|
0 1px 3px rgba(0, 0, 0, 0.12),
|
|
0 1px 2px rgba(0, 0, 0, 0.24);
|
|
}
|
|
|
|
.el-2, .box.el-2, div.form.el-2 {
|
|
box-shadow:
|
|
0 3px 6px rgba(0, 0, 0, 0.15),
|
|
0 2px 4px rgba(0, 0, 0, 0.12);
|
|
}
|
|
|
|
.el-3, .box.el-3, div.form.el-3 {
|
|
box-shadow:
|
|
0 10px 20px rgba(0, 0, 0, 0.15),
|
|
0 3px 6px rgba(0, 0, 0, 0.10);
|
|
}
|
|
|
|
.el-4, .box.el-4, div.form.el-4 {
|
|
box-shadow:
|
|
0 15px 25px rgba(0, 0, 0, 0.15),
|
|
0 5px 10px rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
.el-5, .box.el-5, div.form.el-5 {
|
|
box-shadow:
|
|
0 20px 40px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
|
|
/* footer */
|
|
|
|
body > footer {
|
|
display: block;
|
|
background-color: $gray-100;
|
|
color: $gray-800;
|
|
padding: 0 $w-l1;
|
|
font-size: 92.21079115%;
|
|
|
|
ul {
|
|
display: block;
|
|
padding: 0;
|
|
margin: 0;
|
|
list-style-type: none;
|
|
text-align: center;
|
|
line-height: 1.6267076567643135;
|
|
}
|
|
|
|
li {
|
|
display: block;
|
|
margin: $w-s1 0;
|
|
}
|
|
|
|
a, a:visited, a:hover, a:active, a:focus {
|
|
color: $gray-900;
|
|
font-weight: bold;
|
|
text-decoration-line: underline;
|
|
text-decoration-color: $gray-500;
|
|
text-decoration-width: $w-s4;
|
|
text-decoration-thickness: $w-s4;
|
|
text-underline-offset: 0;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration-color: $gray-700;
|
|
}
|
|
}
|
|
|
|
/* form support */
|
|
|
|
@for $n from 1 through 6 {
|
|
div.form h#{$n}.form-title {
|
|
font-size: nth($h-sizes, 4);
|
|
/* font-weight: bold; */
|
|
line-height: 1.5 / (nth($h-sizes, 4) / 100%);
|
|
margin: 1.5em / (nth($h-sizes, 4) / 100%) 0;
|
|
}
|
|
}
|
|
|
|
label.required:after {
|
|
content: '*';
|
|
color: $alert-400;
|
|
padding: $w-s4;
|
|
}
|
|
|
|
p.form-desc.weak, p.field-desc.weak {
|
|
color: $gray-300;
|
|
}
|
|
|
|
$text-entry-inputs: "text" "password" "email" "tel";
|
|
|
|
div.f-errbox {
|
|
background-color: $alert-800;
|
|
border: $w-s4 solid $alert-200;
|
|
color: $alert-100;
|
|
border-radius: $w-s4;
|
|
padding: 0 $w-0;
|
|
margin: 1em 0;
|
|
|
|
p {
|
|
line-height: 1;
|
|
margin: 1em 0;
|
|
}
|
|
|
|
ul {
|
|
margin: 1em 0;
|
|
padding: 0;
|
|
padding-left: $w-0;
|
|
}
|
|
|
|
li {
|
|
}
|
|
}
|
|
|
|
div.form {
|
|
@extend .el-2;
|
|
|
|
margin: $w-l1;
|
|
padding: $w-l1;
|
|
background-color: white;
|
|
}
|
|
|
|
div.form.layout-expanded {
|
|
label, legend {
|
|
display: block;
|
|
font-weight: bold;
|
|
color: $gray-200;
|
|
}
|
|
|
|
fieldset {
|
|
display: block;
|
|
border: 0;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
fieldset.descriptive-radio-selection {
|
|
p {
|
|
margin-top: 0;
|
|
margin-bottom: $w-s2;
|
|
}
|
|
}
|
|
|
|
input[type="radio"] + label, input[type="checkbox"] + label {
|
|
font-weight: inherit;
|
|
color: inherit;
|
|
}
|
|
|
|
div.f-ebox {
|
|
margin: 1.5em 0;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
div.f-bbox {
|
|
text-align: right;
|
|
padding: $w-s2 0;
|
|
}
|
|
|
|
@each $type in $text-entry-inputs {
|
|
input[type=#{$type}] {
|
|
width: 100%;
|
|
border: none;
|
|
border-bottom: $w-s4 solid $primary-500;
|
|
margin-bottom: -$w-s4;
|
|
}
|
|
|
|
input[type=#{$type}].has-error {
|
|
border-right: $w-s4 solid $alert-500;
|
|
}
|
|
|
|
input[type=#{$type}]:hover {
|
|
border-bottom-color: $primary-700;
|
|
}
|
|
|
|
input[type=#{$type}]:focus {
|
|
border-bottom-color: $primary-800;
|
|
}
|
|
}
|
|
|
|
input[type="checkbox"], input[type="radio"] {
|
|
position: absolute;
|
|
z-index: -1;
|
|
}
|
|
|
|
input[type="checkbox"] + label:before {
|
|
background-color: transparent;
|
|
color: transparent;
|
|
content: "✔";
|
|
display: inline-block;
|
|
width: $w-0;
|
|
height: $w-0;
|
|
border-radius: $w-s4;
|
|
border: $w-s4 solid $primary-500;
|
|
text-align: center;
|
|
font-size: $w-0;
|
|
margin-right: $w-s2;
|
|
line-height: 1;
|
|
}
|
|
|
|
input[type="radio"] + label:before {
|
|
background-color: transparent;
|
|
color: transparent;
|
|
content: "✔";
|
|
display: inline-block;
|
|
width: $w-0;
|
|
height: $w-0;
|
|
border-radius: $w-s1;
|
|
border: $w-s4 solid $primary-500;
|
|
text-align: center;
|
|
font-size: $w-0;
|
|
margin-right: $w-s2;
|
|
line-height: 1;
|
|
}
|
|
|
|
input[type="checkbox"] + label:hover:before,
|
|
input[type="radio"] + label:hover:before {
|
|
border-color: $primary-700;
|
|
}
|
|
|
|
input[type="checkbox"]:focus + label:before,
|
|
input[type="radio"]:focus + label:before {
|
|
border-color: $primary-800;
|
|
}
|
|
|
|
input[type="checkbox"]:checked + label:before {
|
|
background-color: $primary-500;
|
|
color: white;
|
|
}
|
|
|
|
input[type="radio"]:checked + label:before {
|
|
background-color: $primary-500;
|
|
box-shadow: inset 0 0 0 $w-s3 white;
|
|
}
|
|
|
|
input[type="checkbox"] + label, input[type="radio"] + label {
|
|
display: block;
|
|
}
|
|
|
|
.radio-button-ext > label > p {
|
|
margin-left: 1.75rem;
|
|
margin-top: 0;
|
|
}
|
|
|
|
.radio-button-ext > label .icon {
|
|
margin-left: 0.25em;
|
|
}
|
|
|
|
.radio-button-ext {
|
|
margin-left: 0.5rem;
|
|
}
|
|
|
|
div.select-wrap {
|
|
display: block;
|
|
border-bottom: $w-s4 solid $primary-500;
|
|
margin-bottom: -$w-s4;
|
|
position: relative;
|
|
|
|
& > select {
|
|
width: 100%;
|
|
background-color: transparent;
|
|
border: none;
|
|
outline: none;
|
|
padding: 0 $w-s3;
|
|
appearance: none;
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
padding-right: $w-l1 + $w-s3;
|
|
margin-top: -1px;
|
|
margin-bottom: -1px;
|
|
}
|
|
|
|
&:after {
|
|
content: "\25bc";
|
|
position: absolute;
|
|
right: 0;
|
|
width: $w-l1;
|
|
text-align: center;
|
|
top: 0;
|
|
bottom: 0;
|
|
pointer-events: none;
|
|
color: $primary-500;
|
|
font-size: 80%;
|
|
// now we can build a padding which eats the remaining 20%
|
|
// em is now 0.8 parent-em
|
|
// we want to eat 20% of 1 parent-em -> 0.2 parent-em
|
|
// 1 parent-em = 1.25 em
|
|
// 0.2 parent-em = 0.25 em
|
|
padding-top: 0.25em;
|
|
padding-bottom: 0.25em;
|
|
}
|
|
|
|
&:hover {
|
|
border-bottom-color: $primary-700;
|
|
|
|
&:after {
|
|
color: $primary-700;
|
|
}
|
|
}
|
|
|
|
&:focus-within {
|
|
border-bottom-color: $primary-800;
|
|
|
|
&:after {
|
|
color: $primary-800;
|
|
}
|
|
}
|
|
}
|
|
|
|
div.avatar-wrap {
|
|
> .avatar {
|
|
margin: 0;
|
|
margin-right: $w-0;
|
|
}
|
|
}
|
|
|
|
textarea {
|
|
width: 100%;
|
|
border: none;
|
|
border-bottom: $w-s4 solid $primary-500;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
textarea:hover {
|
|
border-bottom-color: $primary-700;
|
|
}
|
|
|
|
textarea:focus {
|
|
border-bottom-color: $primary-800;
|
|
}
|
|
}
|
|
|
|
fieldset > ul {
|
|
/* radio group */
|
|
list-style-type: none;
|
|
margin: 0;
|
|
padding: $w-s1 0;
|
|
padding-left: $w-l1;
|
|
|
|
> li {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
}
|
|
|
|
|
|
/* icon support */
|
|
|
|
svg.icon {
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
width: 1em;
|
|
height: 1em;
|
|
stroke-width: 0;
|
|
stroke: currentColor;
|
|
fill: currentColor;
|
|
}
|
|
|
|
|
|
/* form buttons */
|
|
|
|
input[type="submit"], button, .button {
|
|
margin: 0 $w-s2;
|
|
padding: $w-s3 $w-s1;
|
|
line-height: 1.5;
|
|
display: inline-block;
|
|
|
|
td & {
|
|
margin: 0 $w-s4;
|
|
padding: $w-s4 $w-s2;
|
|
}
|
|
|
|
& > svg.icon:first-child {
|
|
margin-right: $w-s2;
|
|
|
|
td & {
|
|
margin-right: $w-s3;
|
|
}
|
|
}
|
|
|
|
& > svg.icon:last-child {
|
|
margin-right: 0;
|
|
margin-top: -$w-s4;
|
|
|
|
td & {
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
a.button {
|
|
text-decoration: none;
|
|
cursor: default;
|
|
}
|
|
|
|
input[type="submit"], button, .button {
|
|
&.primary {
|
|
background: linear-gradient(0deg, $primary-500, $primary-600);
|
|
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
|
|
color: white;
|
|
border: none;
|
|
/* TODO: fix vertical rhyhtm ... */
|
|
border-radius: $w-s4;
|
|
// border: $w-s4 solid transparent;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $primary-600, $primary-700);
|
|
color: white;
|
|
}
|
|
|
|
&:active {
|
|
background: $primary-500;
|
|
box-shadow: inset 0px 2px 4px rgba(0, 0, 0, 0.2);
|
|
color: white;
|
|
}
|
|
|
|
&.accent {
|
|
background: linear-gradient(0deg, $accent-500, $accent-600);
|
|
color: $accent-900;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $accent-600, $accent-700);
|
|
}
|
|
|
|
&:active {
|
|
background: $accent-500;
|
|
}
|
|
}
|
|
|
|
&.danger {
|
|
background: linear-gradient(0deg, $alert-500, $alert-600);
|
|
color: $alert-900;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $alert-600, $alert-700);
|
|
}
|
|
|
|
&:active {
|
|
background: $alert-500;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.secondary {
|
|
background: linear-gradient(0deg, $gray-600, $gray-700);
|
|
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
|
|
color: $gray-200;
|
|
border: none;
|
|
/* TODO: fix vertical rhyhtm ... */
|
|
border-radius: $w-s4;
|
|
// border: $w-s4 solid transparent;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $gray-700, $gray-800);
|
|
color: black;
|
|
}
|
|
|
|
&:active {
|
|
background: $gray-600;
|
|
box-shadow: inset 0px 2px 4px rgba(0, 0, 0, 0.2);
|
|
color: black;
|
|
}
|
|
|
|
&.accent {
|
|
background: linear-gradient(0deg, $accent-600, $accent-700);
|
|
color: $accent-200;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $accent-700, $accent-800);
|
|
}
|
|
|
|
&:active {
|
|
background: $accent-600;
|
|
}
|
|
}
|
|
|
|
&.danger {
|
|
background: linear-gradient(0deg, $alert-600, $alert-700);
|
|
color: $alert-200;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $alert-700, $alert-800);
|
|
}
|
|
|
|
&:active {
|
|
background: $alert-600;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.tertiary, .tertiary {
|
|
background-color: transparent;
|
|
color: $gray-100;
|
|
border: none;
|
|
text-decoration: underline;
|
|
/* TODO: fix vertical rhyhtm ... */
|
|
border-radius: $w-s4;
|
|
|
|
&:hover {
|
|
background-color: $gray-900;
|
|
border-color: $gray-800;
|
|
color: black;
|
|
}
|
|
|
|
&.accent {
|
|
text-decoration-color: $accent-500;
|
|
|
|
&:hover {
|
|
background-color: $accent-900;
|
|
border-color: $accent-800;
|
|
color: black;
|
|
}
|
|
}
|
|
|
|
&.danger {
|
|
text-decoration-color: $alert-500;
|
|
|
|
&:hover {
|
|
background-color: $alert-900;
|
|
border-color: $alert-800;
|
|
color: black;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.fullwidth {
|
|
display: block;
|
|
width: 100%;
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* boxes */
|
|
|
|
.box {
|
|
display: block;
|
|
/* border-width: $w-s4 / 2;
|
|
border-style: solid; */
|
|
padding: $w-l1 /* - $w-s4 / 2; */;
|
|
margin: $w-l1;
|
|
border-radius: $w-s4;
|
|
|
|
border-color: $gray-200;
|
|
background-color: white;
|
|
color: $gray-100;
|
|
|
|
@extend .el-1;
|
|
|
|
@each $type, $colour in $box-types {
|
|
&.#{$type} {
|
|
border-color: nth(map-get($colours, $colour), 2);
|
|
background-color: nth(map-get($colours, $colour), 9);
|
|
color: nth(map-get($colours, $colour), 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
.box > header {
|
|
font-weight: bold;
|
|
display: block;
|
|
margin-bottom: $w-l1;
|
|
line-height: 1.5;
|
|
color: black;
|
|
}
|
|
|
|
.box > p:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.box.slim {
|
|
& > header {
|
|
display: inline;
|
|
margin: 0;
|
|
}
|
|
|
|
& > header:after {
|
|
content: ':';
|
|
}
|
|
|
|
& > p {
|
|
display: inline;
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
/* avatar */
|
|
|
|
.avatar {
|
|
display: inline-block;
|
|
font-size: $_top-h-size;
|
|
width: 1.5em;
|
|
height: 1.5em;
|
|
vertical-align: middle;
|
|
background-size: cover;
|
|
border-radius: 10%;
|
|
|
|
margin: 0 0.25em;
|
|
|
|
@media screen and (max-width: $small-screen-threshold) {
|
|
font-size: $_top-h-small-size;
|
|
}
|
|
|
|
text-align: center;
|
|
|
|
& > span:before {
|
|
color: $gray-900;
|
|
content: attr(data-avatar-char);
|
|
}
|
|
}
|
|
|
|
nav.usermenu > .avatar {
|
|
/* we can increase the size to the size of the h1 here */
|
|
|
|
}
|
|
|
|
/* login page specials */
|
|
|
|
body#login {
|
|
.form {
|
|
font-size: nth($h-sizes, 5);
|
|
}
|
|
|
|
.form-title {
|
|
color: $primary-200;
|
|
font-size: nth($h-sizes, 5);
|
|
}
|
|
|
|
h1 {
|
|
@include snikket-logo;
|
|
padding-left: 2em;
|
|
background-position: 0 0em;
|
|
}
|
|
}
|
|
|
|
|
|
/* admin area specials */
|
|
|
|
#topbar > div.admin-note {
|
|
color: $alert-400;
|
|
font-size: nth($h-sizes, 5);
|
|
margin-left: $w-l1;
|
|
}
|
|
|
|
table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
}
|
|
|
|
td, th {
|
|
padding: $w-s1;
|
|
}
|
|
|
|
th {
|
|
text-align: left;
|
|
}
|
|
|
|
div.elevated {
|
|
margin: $w-l1;
|
|
padding: $w-l1;
|
|
background-color: white;
|
|
}
|
|
|
|
div.elevated > *:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
div.elevated > *:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.long-url-link {
|
|
display: block;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.link-col {
|
|
width: $w-l6;
|
|
}
|
|
|
|
#clipboard-result + span {
|
|
display: none;
|
|
}
|
|
|
|
ul.inline {
|
|
display: inline;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style-type: none;
|
|
|
|
> li {
|
|
display: inline-block;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
> li:before {
|
|
content: ', ';
|
|
}
|
|
|
|
> li:first-child:before {
|
|
content: '';
|
|
}
|
|
}
|
|
|
|
.nowrap {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
|
|
/* welcome screen specials */
|
|
|
|
#home main {
|
|
> h1, > p {
|
|
text-align: center;
|
|
}
|
|
}
|
|
|
|
nav.welcome {
|
|
> ul {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
list-style-type: none;
|
|
padding: 0;
|
|
justify-content: center;
|
|
|
|
> li {
|
|
@extend .el-3;
|
|
background-color: white;
|
|
|
|
flex: 1 0 $w-l7;
|
|
margin: $w-s1;
|
|
padding: $w-s1 $w-l1;
|
|
text-align: center;
|
|
max-width: $w-l8;
|
|
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
|
|
&.wide {
|
|
flex: 1 0 auto;
|
|
/* display: block; */
|
|
}
|
|
|
|
.button {
|
|
display: block;
|
|
margin: $w-l1 0;
|
|
}
|
|
|
|
img {
|
|
display: block;
|
|
margin: $w-l1 $w-0;
|
|
--margin: $w-0 * 2;
|
|
width: calc(100% - var(--margin));
|
|
}
|
|
|
|
p {
|
|
margin-left: $w-0;
|
|
margin-right: $w-0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
div.profile-card {
|
|
display: flex;
|
|
flex-direction: row;
|
|
margin: $w-l1 0;
|
|
text-align: left;
|
|
|
|
> div.picture {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
> div.details {
|
|
flex: 1 0 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
> .display-name {
|
|
font-size: nth($h-small-sizes, 5);
|
|
line-height: 1.5 / (nth($h-small-sizes, 5) / 100%);
|
|
}
|
|
|
|
> .address {
|
|
display: flex;
|
|
flex-direction: row;
|
|
|
|
> input {
|
|
flex: 1 1 auto;
|
|
background-color: transparent;
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
min-width: 0;
|
|
width: 0;
|
|
}
|
|
|
|
> .button {
|
|
flex: 0 0 auto;
|
|
margin: 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* linearisation / responsive stuff */
|
|
|
|
@media screen and (max-width: $medium-screen-threshold) {
|
|
.form.layout-expanded {
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
|
|
div.elevated, main > div.box {
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: $small-screen-threshold) {
|
|
.form.layout-expanded .box {
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
|
|
.box > ul {
|
|
padding-left: $w-0;
|
|
}
|
|
|
|
|
|
th.collapsible, td.collapsible {
|
|
display: none;
|
|
}
|
|
|
|
#topbar.admin {
|
|
> header {
|
|
text-decoration: underline;
|
|
text-decoration-color: $alert-500;
|
|
}
|
|
|
|
> div.admin-note {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
|
|
input[type="submit"], button, .button {
|
|
&.slimmify {
|
|
> svg.icon {
|
|
margin-right: 0;
|
|
}
|
|
|
|
> span {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
overflow: hidden;
|
|
top: -100px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* clipboard button */
|
|
|
|
.copy-to-clipboard {
|
|
cursor: pointer;
|
|
font-style: normal;
|
|
text-decoration: none;
|
|
}
|
|
|
|
body.no-copy .copy-to-clipboard {
|
|
display: none !important;
|
|
}
|
|
|
|
|
|
/* magic */
|
|
|
|
pre.guru-meditation {
|
|
width: 100%;
|
|
overflow-x: scroll;
|
|
}
|
|
|
|
|
|
/* dark mode */
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
a {
|
|
color: $primary-600;
|
|
}
|
|
a:visited {
|
|
color: $primary-800;
|
|
}
|
|
|
|
body {
|
|
color: $gray-900;
|
|
background-color: $gray-100;
|
|
}
|
|
|
|
@for $n from 1 through 6 {
|
|
h#{$n} {
|
|
color: $primary-900;
|
|
}
|
|
}
|
|
|
|
div#topbar {
|
|
background-color: black;
|
|
color: $primary-900;
|
|
|
|
> header {
|
|
color: white;
|
|
}
|
|
}
|
|
|
|
body#login {
|
|
.form-title {
|
|
color: $primary-800;
|
|
}
|
|
}
|
|
|
|
body > footer {
|
|
background-color: $gray-200;
|
|
color: $gray-800;
|
|
}
|
|
|
|
div.form {
|
|
background-color: black;
|
|
}
|
|
|
|
div.form.layout-expanded {
|
|
label {
|
|
color: $gray-900;
|
|
}
|
|
|
|
textarea {
|
|
background-color: black;
|
|
}
|
|
|
|
@each $type in $text-entry-inputs {
|
|
input[type=#{$type}] {
|
|
background-color: black;
|
|
}
|
|
|
|
input[type="radio"]:checked + label:before {
|
|
box-shadow: inset 0 0 0 $w-s3 black;
|
|
}
|
|
}
|
|
}
|
|
|
|
label, legend {
|
|
color: $gray-800 !important;
|
|
}
|
|
|
|
.box {
|
|
background-color: black;
|
|
border-color: $gray-800;
|
|
color: $gray-900;
|
|
|
|
@each $type, $colour in $box-types {
|
|
&.#{$type} {
|
|
border-color: nth(map-get($colours, $colour), 9);
|
|
background-color: nth(map-get($colours, $colour), 2);
|
|
color: nth(map-get($colours, $colour), 9);
|
|
}
|
|
}
|
|
|
|
> header {
|
|
color: white;
|
|
}
|
|
}
|
|
|
|
nav.welcome {
|
|
> ul {
|
|
> li {
|
|
background-color: black;
|
|
}
|
|
}
|
|
}
|
|
|
|
div.elevated {
|
|
background-color: black;
|
|
}
|
|
|
|
input[type="submit"], button, .button {
|
|
&.primary {
|
|
background: linear-gradient(0deg, $primary-300, $primary-400);
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $primary-400, $primary-500);
|
|
}
|
|
|
|
&:active {
|
|
background: $primary-300;
|
|
}
|
|
|
|
&.accent {
|
|
background: linear-gradient(0deg, $accent-300, $accent-400);
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $accent-400, $accent-500);
|
|
}
|
|
|
|
&:active {
|
|
background: $accent-300;
|
|
}
|
|
}
|
|
|
|
&.danger {
|
|
background: linear-gradient(0deg, $alert-300, $alert-400);
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $alert-400, $alert-500);
|
|
}
|
|
|
|
&:active {
|
|
background: $alert-300;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.secondary {
|
|
background: linear-gradient(0deg, $gray-200, $gray-300);
|
|
color: $gray-900;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $gray-300, $gray-400);
|
|
color: white;
|
|
}
|
|
|
|
&:active {
|
|
background: $gray-400;
|
|
color: $gray-900;
|
|
}
|
|
|
|
&.accent {
|
|
background: linear-gradient(0deg, $accent-200, $accent-300);
|
|
color: $accent-800;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $accent-300, $accent-400);
|
|
}
|
|
|
|
&:active {
|
|
background: $accent-200;
|
|
}
|
|
}
|
|
|
|
&.danger {
|
|
background: linear-gradient(0deg, $alert-200, $alert-300);
|
|
color: $alert-800;
|
|
|
|
&:hover, &:focus {
|
|
background: linear-gradient(0deg, $alert-300, $alert-400);
|
|
}
|
|
|
|
&:active {
|
|
background: $alert-200;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.tertiary, .tertiary {
|
|
color: $gray-800;
|
|
|
|
&:hover {
|
|
background-color: $gray-200;
|
|
border-color: $gray-100;
|
|
color: white;
|
|
}
|
|
|
|
&.accent:hover {
|
|
background-color: $accent-200;
|
|
border-color: $accent-100;
|
|
color: white;
|
|
}
|
|
|
|
&.danger:hover {
|
|
background-color: $alert-200;
|
|
border-color: $alert-100;
|
|
color: white;
|
|
}
|
|
}
|
|
}
|
|
|
|
p.form-desc.weak, p.field-desc.weak {
|
|
color: $gray-700;
|
|
}
|
|
|
|
.user-badge-icon {
|
|
color: $gray-900 !important;
|
|
background-color: $gray-100 !important;
|
|
border-color: $gray-300 !important;
|
|
box-shadow: black 0 0 2px !important;
|
|
}
|
|
}
|
|
|
|
/* tooltip magic */
|
|
|
|
.with-tooltip {
|
|
position: relative;
|
|
text-decoration: underline;
|
|
text-decoration-style: dotted;
|
|
}
|
|
|
|
.with-tooltip:before {
|
|
content: attr(data-tooltip); /* here's the magic */
|
|
position: absolute;
|
|
font-size: 87.05505633%;
|
|
|
|
/* vertically center */
|
|
bottom: 100%;
|
|
transform: translateX(-50%);
|
|
left: 50%;
|
|
margin-bottom: $w-s2;
|
|
|
|
/* basic styles */
|
|
width:$w-l7;
|
|
padding: $w-s1;
|
|
background: black;
|
|
color: $gray-900;
|
|
text-align: center;
|
|
|
|
display: none;
|
|
}
|
|
|
|
.with-tooltip:after {
|
|
content: "";
|
|
position: absolute;
|
|
|
|
bottom: 100%;
|
|
transform: translateX(-50%);
|
|
left: 50%;
|
|
margin-bottom: -$w-s1;
|
|
|
|
/* the arrow */
|
|
border: 10px solid black;
|
|
border-color: black transparent transparent transparent;
|
|
|
|
display: none;
|
|
}
|
|
|
|
.with-tooltip:hover:before, .with-tooltip:hover:after {
|
|
display: block;
|
|
}
|
|
|
|
.username-with-avatar {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.avatar-container {
|
|
position: relative;
|
|
|
|
.avatar {
|
|
margin-left: 0;
|
|
}
|
|
}
|
|
|
|
.user-badge-icon {
|
|
position: absolute;
|
|
bottom: -10px;
|
|
right: 0px;
|
|
background: white;
|
|
border-radius: 50%;
|
|
width: 1.2em;
|
|
height: 1.2em;
|
|
border-color: $gray-500;
|
|
border-width: 1px;
|
|
border-style: solid;
|
|
text-align: center;
|
|
margin: 0;
|
|
padding: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
box-shadow: $gray-500 0px 0px 2px;
|
|
|
|
line-height: 1;
|
|
.icon {
|
|
/* vertical-align: text-bottom; */
|
|
padding: 0.1em;
|
|
}
|
|
}
|
|
|
|
.user-info-container {
|
|
margin-left: 0.5em;
|
|
}
|
|
|
|
.user-display-name {
|
|
font-size: 110%;
|
|
}
|
|
|
|
.user-jid {
|
|
font-size: 90%;
|
|
}
|
|
}
|