2024-12-17 17:49:05 +01:00
|
|
|
body {
|
|
|
|
background-color: var(--background-color);
|
|
|
|
color: var(--foreground-color);
|
|
|
|
font-family: var(--font-family-base);
|
|
|
|
font-size: 13px;
|
|
|
|
margin: 0;
|
|
|
|
padding: 0;
|
|
|
|
line-height: 1.15;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* normalize.css breakage */
|
|
|
|
sup,
|
|
|
|
sub {
|
|
|
|
line-height: 1.15em;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub {
|
|
|
|
bottom: -0.15em;
|
|
|
|
}
|
|
|
|
|
|
|
|
h1,
|
|
|
|
h2,
|
|
|
|
h3,
|
|
|
|
h4,
|
|
|
|
h5 {
|
|
|
|
font-weight: normal;
|
|
|
|
text-rendering: optimizelegibility;
|
|
|
|
margin-bottom: 0.62em;
|
|
|
|
line-height: 1.15em;
|
|
|
|
}
|
|
|
|
|
|
|
|
h1 {
|
|
|
|
font-size: 24px;
|
|
|
|
}
|
|
|
|
|
|
|
|
h2 {
|
|
|
|
font-size: 22px;
|
|
|
|
}
|
|
|
|
|
|
|
|
h3 {
|
|
|
|
font-size: 19px;
|
|
|
|
}
|
|
|
|
|
|
|
|
h4 {
|
|
|
|
font-size: 17px;
|
|
|
|
margin-top: 1em;
|
|
|
|
margin-bottom: 0.5em;
|
|
|
|
}
|
|
|
|
|
2024-12-17 19:35:47 +01:00
|
|
|
/* Slightly dirty, no clean way to strip top margins off headers though */
|
2024-12-17 17:49:05 +01:00
|
|
|
.remove-top-margin {
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
h5 {
|
|
|
|
margin-top: 0.5em;
|
|
|
|
margin-bottom: 0.3em;
|
|
|
|
font-size: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
h6 {
|
|
|
|
font-size: 10px;
|
|
|
|
margin: 2px;
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
p,
|
|
|
|
.paragraph {
|
|
|
|
hyphens: none;
|
|
|
|
margin-bottom: var(--padding-small);
|
|
|
|
margin-top: var(--padding-small);
|
|
|
|
margin-left: 2px;
|
|
|
|
line-height: 1.35em;
|
|
|
|
}
|
|
|
|
|
|
|
|
.communication__body__text .paragraph {
|
|
|
|
margin-bottom: var(--padding-normal);
|
|
|
|
}
|
|
|
|
|
|
|
|
img {
|
|
|
|
margin: 0;
|
|
|
|
border: 0;
|
|
|
|
vertical-align: bottom;
|
|
|
|
}
|
|
|
|
|
|
|
|
.paragraph img,
|
|
|
|
.communication__body__text img,
|
|
|
|
.block__content img {
|
|
|
|
max-width: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
pre {
|
|
|
|
background-color: var(--meta-color);
|
|
|
|
padding: 10px;
|
|
|
|
font-size: 11px;
|
|
|
|
font-family: var(--font-family-monospace);
|
|
|
|
border: 1px solid var(--meta-border-color);
|
|
|
|
max-width: 100%;
|
|
|
|
overflow: auto hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
a,
|
|
|
|
a:active,
|
|
|
|
a:visited {
|
|
|
|
color: var(--link-color);
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
a:hover {
|
|
|
|
color: var(--link-hover-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.clearfix {
|
|
|
|
clear: both;
|
|
|
|
height: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Child selectors, as opposed to flat BEM classes, are justified in this case.
|
|
|
|
* HTML tables are bulky to begin with; adding .table__row and .table__cell to every
|
|
|
|
* item will hinder the development speed and decrease readability. */
|
|
|
|
|
|
|
|
table,
|
|
|
|
.table {
|
|
|
|
padding-left: 10px;
|
|
|
|
width: 100%;
|
|
|
|
border-collapse: collapse;
|
|
|
|
border: var(--border);
|
|
|
|
}
|
|
|
|
|
|
|
|
table th,
|
|
|
|
.table th {
|
|
|
|
font-weight: bold;
|
|
|
|
text-align: left;
|
|
|
|
padding: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
th.center {
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
2025-01-11 18:48:54 +01:00
|
|
|
table > thead > tr,
|
|
|
|
.table > thead > tr {
|
2024-12-17 17:49:05 +01:00
|
|
|
background: var(--background-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
table > tbody,
|
|
|
|
.table > tbody {
|
|
|
|
border: var(--border);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* I know this looks odd, but first one expands to
|
|
|
|
.table > ...
|
|
|
|
while the other one does the table verbatim */
|
|
|
|
@mixin even-odd table > tbody tr;
|
|
|
|
@mixin even-odd-element table > tbody tr;
|
|
|
|
|
|
|
|
td {
|
|
|
|
padding: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table__tiny-column {
|
|
|
|
width: 50px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.border-vertical {
|
|
|
|
border-top: 2px solid var(--border-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.background-success {
|
|
|
|
background-color: var(--success-light-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.background-warning {
|
|
|
|
background-color: var(--warning-light-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.background-danger {
|
|
|
|
background-color: var(--danger-light-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
hr {
|
|
|
|
border: 0;
|
|
|
|
height: 1px;
|
|
|
|
background: var(--border-color);
|
|
|
|
margin: var(--padding-small);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* rules page. API page also borrows stuff from here */
|
|
|
|
.rule {
|
|
|
|
padding: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.rule h2 {
|
|
|
|
background: var(--background-odd-color);
|
|
|
|
border: var(--border);
|
|
|
|
padding: 5px;
|
|
|
|
padding-bottom: 7px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.rule h2.important {
|
|
|
|
background: var(--danger-light-color);
|
|
|
|
border-color: var(--danger-color);
|
|
|
|
}
|
2024-12-17 19:35:47 +01:00
|
|
|
/* Make HTML lists with multi-line text readable */
|
2024-12-17 17:49:05 +01:00
|
|
|
.rule ul {
|
|
|
|
margin: 0;
|
|
|
|
padding: 5px 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.rule li {
|
|
|
|
padding: 5px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
#error_explanation {
|
|
|
|
margin: 1em 0;
|
|
|
|
background: var(--warning-light-color);
|
|
|
|
border: 1px solid var(--warning-color);
|
|
|
|
padding: 0.62em;
|
|
|
|
}
|
|
|
|
|
|
|
|
#error_explanation li {
|
|
|
|
margin: 3px;
|
|
|
|
margin-left: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
#error_explanation h2 {
|
|
|
|
font-size: 19px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.walloftext {
|
|
|
|
font-size: 14px;
|
|
|
|
}
|
|
|
|
|
|
|
|
@media (max-width: 900px) {
|
|
|
|
.walloftext {
|
|
|
|
width: 95%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-12-17 19:35:47 +01:00
|
|
|
/* Text Editor */
|
2024-12-17 17:49:05 +01:00
|
|
|
blockquote {
|
|
|
|
margin: 1em 2em;
|
|
|
|
border: 1px dotted var(--foreground-color);
|
|
|
|
padding: var(--padding-small);
|
|
|
|
background-color: inherit;
|
|
|
|
}
|
|
|
|
|
|
|
|
blockquote .paragraph:first-child {
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
blockquote .paragraph:last-child {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
|
2024-12-17 19:35:47 +01:00
|
|
|
/* Prevent blockquote from gaining far too much indentation and breaking. */
|
2024-12-17 17:49:05 +01:00
|
|
|
blockquote blockquote blockquote blockquote blockquote blockquote {
|
|
|
|
margin: 1em 0;
|
|
|
|
padding: 1em 2px;
|
|
|
|
}
|
|
|
|
|
2024-12-17 19:35:47 +01:00
|
|
|
/* Horizontal space is at a high premium on mobile. */
|
2024-12-17 17:49:05 +01:00
|
|
|
@media (max-width: $min-desktop-width) {
|
|
|
|
blockquote {
|
|
|
|
margin: 1em 4px;
|
|
|
|
padding: var(--padding-small) 4px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler {
|
|
|
|
background-color: var(--admin-links-hover-color);
|
|
|
|
color: var(--admin-links-hover-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler a {
|
|
|
|
color: var(--admin-links-hover-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler:not(:hover) > .image-show-container {
|
|
|
|
background: var(--admin-links-hover-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler:not(:hover) > .image-show-container > * {
|
|
|
|
visibility: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler,
|
|
|
|
.spoiler-revealed {
|
|
|
|
display: inline-block;
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler:before,
|
|
|
|
.spoiler-revealed:before {
|
|
|
|
content: " ";
|
|
|
|
display: block;
|
|
|
|
position: absolute;
|
|
|
|
pointer-events: none;
|
|
|
|
inset: 0;
|
|
|
|
background-color: var(--admin-links-hover-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler:hover:before,
|
|
|
|
.spoiler-revealed:before {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler:hover,
|
|
|
|
.spoiler-revealed {
|
|
|
|
background-color: var(--admin-links-color);
|
|
|
|
color: var(--foreground-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler-revealed a,
|
|
|
|
.spoiler:hover a {
|
|
|
|
color: var(--link-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler-revealed a:hover,
|
|
|
|
.spoiler:hover a:hover {
|
|
|
|
color: var(--link-dark-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.literal {
|
|
|
|
white-space: pre-wrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.editor-syntax-reference {
|
|
|
|
margin-bottom: 6px;
|
|
|
|
}
|
|
|
|
|
2024-12-17 19:35:47 +01:00
|
|
|
/* We need to use $variables here because @media tags
|
|
|
|
* do not work with CSS3 custom properties (variables) */
|
|
|
|
@mixin image-alt-size tiny, $image-tiny-size;
|
|
|
|
@mixin image-alt-size small, $image-small-size;
|
|
|
|
@mixin image-alt-size medium, $image-medium-size;
|
|
|
|
@mixin image-alt-size large, $image-large-size;
|
2024-12-17 17:49:05 +01:00
|
|
|
|
|
|
|
/* code styling */
|
|
|
|
/* You might be asking what's up with this silly mixin
|
|
|
|
* and the answer is just as silly, it's called
|
|
|
|
* stylelint. Can't define CSS classes in descending
|
|
|
|
* specificity so we do this silly thing */
|
|
|
|
@define-mixin code-style {
|
|
|
|
background-color: var(--meta-color);
|
|
|
|
border: 1px solid var(--meta-border-color);
|
|
|
|
padding: 0 4px;
|
|
|
|
}
|
|
|
|
|
|
|
|
code {
|
|
|
|
@mixin code-style;
|
|
|
|
}
|
|
|
|
|
|
|
|
pre code {
|
|
|
|
border: 0;
|
|
|
|
background: 0;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler-revealed code,
|
|
|
|
.spoiler:hover code {
|
|
|
|
@mixin code-style;
|
|
|
|
}
|
|
|
|
|
|
|
|
.spoiler code {
|
|
|
|
background: 0;
|
|
|
|
border: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* donations */
|
|
|
|
.donate-button {
|
|
|
|
background: 0;
|
|
|
|
border: 0;
|
|
|
|
margin-left: 170px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.button_to {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* User titles (admin/mod/assistant) and channel states (live/off air) */
|
|
|
|
.label {
|
|
|
|
padding: 6px;
|
|
|
|
overflow-y: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--small {
|
|
|
|
font-size: 9px;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--block {
|
|
|
|
display: inline-block;
|
|
|
|
margin: 2px 6px 6px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--narrow {
|
|
|
|
padding: 0 2px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--success {
|
|
|
|
background: var(--success-light-color);
|
|
|
|
border: 1px solid var(--success-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--danger {
|
|
|
|
background: var(--danger-light-color);
|
|
|
|
border: 1px solid var(--danger-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--warning {
|
|
|
|
background: var(--warning-light-color);
|
|
|
|
border: 1px solid var(--warning-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--purple {
|
|
|
|
background: var(--assistant-color);
|
|
|
|
border: 1px solid var(--assistant-border-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.label--primary {
|
|
|
|
background: var(--primary-light-color);
|
|
|
|
border: 1px solid var(--primary-color);
|
|
|
|
}
|
|
|
|
|
|
|
|
.large-text {
|
|
|
|
font-size: 15px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.small-text {
|
|
|
|
font-size: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.page-current {
|
|
|
|
padding: 0 var(--header-spacing);
|
|
|
|
}
|
|
|
|
|
|
|
|
i.favicon-home {
|
|
|
|
background-image: url("/favicon.svg");
|
|
|
|
background-size: contain;
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
background-position: center;
|
|
|
|
min-width: 1em;
|
|
|
|
height: 1em;
|
|
|
|
display: inline-block;
|
|
|
|
}
|
|
|
|
|
2024-12-17 19:35:47 +01:00
|
|
|
/* changelog */
|
2024-12-17 17:49:05 +01:00
|
|
|
.commit-sha {
|
|
|
|
background: var(--assistant-color);
|
|
|
|
border: 1px solid var(--assistant-border-color);
|
|
|
|
padding: 2px;
|
|
|
|
font-size: 12px;
|
|
|
|
font-family: var(--font-family-monospace);
|
|
|
|
vertical-align: top;
|
|
|
|
}
|
|
|
|
|
|
|
|
.commit-message {
|
|
|
|
display: block;
|
|
|
|
}
|
|
|
|
|
|
|
|
span.stat {
|
|
|
|
font-size: 18px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seamless-frame {
|
|
|
|
border: 0;
|
|
|
|
overflow: hidden;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.no-overflow {
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
.no-overflow-x {
|
|
|
|
overflow-x: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
.hidden {
|
|
|
|
display: none !important;
|
|
|
|
}
|