mirror of
				https://codeberg.org/slatian/service.echoip-slatecave.git
				synced 2025-10-31 08:58:08 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			609 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			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;
 | |
| }
 |