echoip-slatecave/templates/static/style.css

609 lines
13 KiB
CSS

/* This stylesheet is derived from the one over at slatecave.net (2023-02-25) */
:root {
/*Define colors that will be used*/
--c-page-bg: #111;
--c-dark-slate: #181818;
--c-medium-slate: #222;
--c-transparent-slate: #0008;
--c-accent-slate: #111;
--c-light-accent-slate: #333;
--c-bright-text: #fff;
--c-normal-text: #ccc;
--c-dark-text: #aaa;
--c-accent-dark: #ce5c00;
--c-accent-light: #859900;
--c-accent-secondary: #997a2e;
--c-accent-secondary-dark: #98971aa0;
--shadow-button: 0 0 .3em .3em #0003;
--shadow-button-hover: 0 0 .4em .4em #0004;
/*NOTE: DO NOT USE THE COLORS ABOVE OUTSIDE OF THE COLOR DEFINITIONS BELOW!!*/
}
@media (prefers-color-scheme: light) {
:root {
/*Define colors that will be used*/
--c-page-bg: #bbb;
--c-dark-slate: #ccc;
--c-medium-slate: #d8d8d8;
--c-transparent-slate: #fff4;
--c-accent-slate: #eee;
--c-light-accent-slate: #ccc;
--shadow-button: 0 0 .2em .2em #0002;
--shadow-button-hover: 0 0 .3em .3em #0003;
--c-bright-text: #000;
--c-normal-text: #080808;
--c-dark-text: #111;
--c-accent-light: #274d03;
--c-accent-dark: #8F350F;
--c-accent-secondary: #36402d;
--c-accent-secondary-dark: #79740e;
}
}
@media print {
:root {
/*Define colors that will be used*/
--c-page-bg: #fff;
--c-dark-slate: #fff;
--c-medium-slate: #fff;
--c-accent-slate: #ccc;
--c-bright-text: #000;
--c-normal-text: #111;
--c-dark-text: #444;
--c-accent-dark: #ce5c00;
--c-accent-light: #9c4500;
--c-accent-secondary: #2D5903;
--shadow-button: unset;
--shadow-button-hover: unset;
/*NOTE: DO NOT USE THE COLORS ABOVE OUTSIDE OF THE COLOR DEFINITIONS BELOW!!*/
}
}
:root {
/*Assign those colors a purpose*/
--page-bg: var(--c-page-bg);
--page-fg: var(--c-normal-text);
--page-link: var(--c-accent-light);
--page-link-visited: var(--c-accent-secondary);
--page-focus-outline: .2rem solid var(--c-accent-light);
--page-focus-outline-offset: .05rem;
--page-font: 1em Noto Sans, sans-serif;
--page-monospace-font: 1em Noto Sans Mono, monospace;
--page-pad: 0;
--page-max-width: 120ch;
--section-mg: .75rem;
--section-pad: 1rem;
--section-pad--reverse: -1rem;
--section-bg: var(--c-medium-slate);
--section-fg-section-title: var(--c-accent-dark);
--section-fg-title: var(--c-bright-text);
--section-border: #333 .2rem solid;
--section-preview-border: var(--c-transparent-slate) .2rem solid;
/*Special sections*/
--section--footer-fg: var(--c-dark-text);
--section--footer-mg: 0;
--heading-mg: var(--section-mg);
--heading-font: 2rem Noto Sans Mono, serif;
--section-bg-pre: var(--dark-slate);
--section-font-pre: 1rem Noto Sans Mono, sans-serif;
--section-mg-pre: .5em 0;
--section-bg-figure: var(--c-dark-slate);
--section-pad-figure: .5rem var(--section-pad);
--section-mg-figure: 0.5em -1rem; /*reverse section padding and give multiple figures some space to breathe*/
--section-mg-figure-caption: 0.2em 0;
--section-pad-figure-caption: .2em 1ch;
--section-bg-figure-caption: var(--c-accent-slate);
--section-fg-figure-caption: var(--c-light-text);
--section-media-width: 90ch;
--section--banner-mg: var(--section-mg);
--big-banner-font: clamp(2rem, 4vw, 4rem) sans-serif;
--big-banner-bg-color: var(--c-accent-slate);
--big-banner-color: var(--c-bright-text);
--big-banner-pad: 1rem 1ch;
--article-nav-mg: var(--section-mg, main);
--button-bg: var(--c-dark-slate);
--button-fg: var(--c-dark-text);
--button-pad: .2rem 1ch;
--button-mg: .2rem;
--button-border: var(--c-light-accent-slate) .2rem solid;
--button-border-hover: var(--c-accent-secondary-dark) .2rem solid;
--button-list-flex-direction: row;
--preview-mg-title: .25em 0;
--preview-fg-description: var(--c-dark-text);
--preview-mg-description: .25em 0;
--code-bg: var(--c-dark-slate);
--code-fg: var(--c-dark-text);
--code-radius: .2em;
--code-pad: 0 .3ch;
}
/* Styling for small screens */
@media (max-width: 120ch) {
:root {
--section--banner-mg: 0;
--section-pad-figure: .2em 0;
--section-mg-figure-caption: .2em 1ch;
--section-pad-pre: 0 1vw;
--big-banner-side-border: 0em;
}
}
@media (max-width: 90ch) {
:root {
--section-mg: .5rem;
--section-pad: .5rem;
--button-list-flex-direction: column;
--section-mg-figure-caption: .2em .75ch;
}
}
@media (min-width: 90ch){
section > figure:last-child {
margin-bottom: -1rem;
}
}
@media print {
:root {
--page-link: var(--c-dark-text);
--page-link-visited: var(--c-dark-text);
--section-fg-title: var(--c-bright-text);
--section-fg-section-title: var(--c-bright-text);
--section-section-title-underline: 2px solid var(--c-bright-text);
--heading-underline: 2px solid var(--c-bright-text);
--big-banner-font: 3rem Noto Sans Mono, bold, sans-serif;
}
/*No global navigation needed when printing on non Interactive media, just a waste of space and ink*/
body > header, article > nav, body > footer > *:not(.page-info) {
display: none;
}
footer {
padding-top: 0 !important;
}
}
/*General Customizations*/
dd > a {
text-decoration: none;
word-break: break-all;
overflow-wrap: break-word;
}
kbd {
font: var(--page-monospace-font);
font-weight: bold;
}
code, samp {
font: var(--page-monospace-font);
background: var(--code-bg);
color: var(--code-fg);
border-radius: var(--code-radius);
padding: var(--code-pad);
}
article, main {
text-rendering: optimizeLegibility;
}
blockquote {
border-left: .3ch solid;
border-left-color: var(--c-dark-text);
margin-left: .5ch;
padding-left: 1ch;
}
/**Fix headings inside of summary tags**/
summary > h2, summary > h3 {
display: inline;
}
*:focus {
outline: var(--page-focus-outline);
outline-offset: var(--page-focus-outline-offset);
}
nav, body {
margin: 0;
padding: 0;
}
/*Skiplinks for Screenreaders and keyboard users*/
a.skiplink {
opacity: 0;
font-size: 0em;
margin: 0;
padding: 0;
position: absolute;
}
a.skiplink:focus {
opacity: .9;
font-size: 1em;
}
/*Style links that are supposed to look a bit like buttons*/
ul.link-list {
padding: 0;
/*Only needed becuase the above has this flex construct to keep the styling uniform without duplicate code*/
display: flex;
flex-direction: column;
justify-content: start;
}
p.button-paragraph {
display: block;
}
ul.link-list > li,
p.button-paragraph,
.preview,
a.skiplink,
button, input, select {
display: block;
margin: var(--button-mg);
color: var(--button-fg);
background: var(--button-bg);
}
ul.link-list > li > a,
p.button-paragraph > a,
section > .preview,
a.skiplink,
button {
padding: var(--button-pad);
display: block;
}
ul.link-list > li > a,
p.button-paragraph > a,
button {
text-decoration: none;
font-size: 1.2rem;
font-weight: bold;
}
ul.link-list > li > a,
p.button-paragraph > a,
button, input, select {
transition: border-color .3s, box-shadow .3s, background .5s;
box-shadow: var(--shadow-button);
border: var(--button-border);
}
form > label {
display: block;
}
input[type="text"], input[type="search"] {
box-shadow: var(--shadow-button), inset 0 0 .8ch #0008;
}
span button, span input, span select {
display: inline-block;
height: 100%;
}
ul.link-list > li > a:hover, ul.link-list > li > a:focus,
p.button-paragraph > a:hover, input[type="submit"]:hover, p.button-paragraph > a:focus,
button:hover, button:focus, select:hover, select:focus, input:focus {
outline: unset;
box-shadow: var(--shadow-button-hover);
border: var(--button-border-hover);
}
footer > ul.link-list, section > ul.link-list, main > section, main > form, article > form, main > p {
padding: 0;
margin: 0;
}
ul.link-list.row {
flex-direction: var(--button-list-flex-direction);
}
ul.link-list.row > li {
display: inline-block;
}
ul.link-list.fill > li {
flex-grow: 1;
}
ul.link-list.fill {
justify-content: space-between;
}
/*General page styling*/
body {
background: var(--page-bg);
color: var(--page-fg);
font: var(--page-font);
padding: var(--page-pad);
margin: auto;
max-width: var(--page-max-width);
}
a {
color: var(--page-link);
transition: text-decoration-thickness .1s;
text-decoration: underline;
text-decoration-thickness: .05em;
}
a:hover {
text-decoration: underline;
text-decoration-thickness: .2rem;
}
a:visited {
color: var(--page-link-visited);
}
a.sitename { display: inline-block; }
h1, a.sitename {
margin: var(--heading-mg);
padding: var(--heading-pad);
background: var(--heading-bg);
color: var(--heading-fg);
border-bottom: var(--heading-underline);
font: var(--heading-font)
}
h1 > a, h2 > a, h3 > a, a.sitename {
text-decoration: none;
}
/* Style definition lists */
@media (min-width: 60ch) {
dt {
float: left;
}
dd {
margin-left: 12ch;
}
}
dt {
font-weight: bold;
}
dt::after {
content: ":";
margin-right: 1ch; /*Acts like a space following the colon*/
}
/*General section styling*/
article > section, footer > section, header > section, section > textarea, article > section.preview, main > section, main > form, article > form, main > nav {
margin: var(--section-mg);
padding: var(--section-pad);
padding-top: .3rem; /* Fixed at of less padding for title*/
background: var(--section-bg);
color: var(--section-fg);
border: var(--section-border);
}
section > textarea {
width: calc(100% - 2*var(--section-pad) - 2*var(--section-mg));
border: none;
resize: none;
max-height: 50e, mainm;
box-shadow: inset #000 0 0 .5em;
}
article > p, main > p {
margin: var(--section-mg);
padding: var(--section-pad);
}
/*Remove uneccessary bottom margin for last element, section padding will do*/
section > *:last-child {
margin-bottom: 0;
}
/* General section header styling*/
section > h2 {
color: var(--section-fg-section-title);
border-bottom: var(--section-section-title-underline);
margin: .3rem 0;
}
section:not(.preview) > h3, section > h4, section > h5 {
color: var(--section-fg-title);
border-bottom: var(--section-title-underline);
}
/*General section preformatted block styling*/
section > pre > code, section > pre > samp, section > figure > pre, section > figure > samp {
display: block;
margin: var(--section-mg-pre);
padding: var(--section-pad-pre);
background: var(--section-bg-pre);
color: var(--section-fg-pre);
overflow: auto;
scrollbar-color: var(--section-fg-pre, var(--page-fg)) var(--section-bg-pre);
break-inside: avoid;
}
/*Fix codeblocks in figures*/
section > figure > pre > code {
display: block;
padding: 0;
margin: 0;
background: unset;
}
/*General section figure styling*/
section > figure, section > pre {
margin: var(--section-mg-figure);
padding: var(--section-pad-figure);
background: var(--section-bg-figure);
color: var(--section-fg-figure);
}
section > figure > figcaption {
margin: var(--section-mg-figure-caption);
padding: var(--section-pad-figure-caption);
background: var(--section-bg-figure-caption);
color: var(--section-fg-figure-caption);
}
/* article navigation */
article > nav, main > nav {
margin: var(--article-nav-mg);
padding: var(--article-nav-pad);
background: var(--article-nav-bg);
color: var(--article-nav-fg);
}
article > nav.alternatives > ul {
display: inline;
padding: 0;
}
/*Header Styling*/
header > nav > * {
display: block;
margin: var(--heading-mg);
padding: var(--heading-pad);
}
header > nav {
display: block;
--button-bg: var(--c-transparent-slate); /* mod */
}
/*Provide a small, currently barely visible hint that you are in a given section*/
a[aria-current="true"], a[aria-current="page"] {
--button-border: var(--c-transparent-slate) solid .2em ;
}
/*Footer Styling*/
footer {
border: var(--section--footer-border);
margin: var(--section--footer-mg, var(--section-mg));
padding: var(--section--footer-pad, var(--section-pad));
background: var(--section--footer-bg);
color: var(--section--footer-fg, inherit);
}
footer > hr {
background-color: var(--section-bg);
border: none;
height: .11rem;
}
footer > section {
margin: 0 auto;
}
footer h2, footer h3 {
margin: .4em 0;
}
/* Special sections - currently none */
/* General table styling */
table {
border-collapse: collapse;
border: var(--section-border);
background: var(--code-bg);
color: var(--code-fg);
}
th, td {
text-align: left;
padding-left: .5ch;
padding-right: 2.5ch;
border: .15rem solid var(--c-medium-slate);
}
tr:hover, th {
background-color: var(--c-accent-slate);
}
/* Search form styling */
form.search > input, form.search > select {
font-size: 1.2em;
font-weight: bold;
}
form.search > input[type="search"] {
background: unset;
border: unset;
box-shadow: unset;
flex-grow: 1;
padding-left: .5ch;
}
form.search > input[type="submit"] {
padding-left: 0.5ch;
padding-right: 0.5ch;
}
form.search {
display: flex;
flex-direction: var(--button-list-flex-direction);
box-shadow: var(--shadow-button);
border: var(--button-border);
background: var(--button-bg);
}
/* Custom icon style for sitename*/
.sitename > img {
height: 1.2em;
padding: 0 0.3ch;
margin-bottom: -.2em;
}