/* Base CSS */

/*
 * This CSS file contains (for me) logical style defaults that are easy to read.
 * 
 * This file is quite often used as a starting point for other projects.
 * 
 * Todo:
	* <button>
	* <inputs>
	* <progress>
	* <meter>
 */

:root {
	--bg-main: hsl(206, 87%, 67%);
	/* --bg-bright: #57b43f; */
	--bg-bright: #7ac767;
	--bg-alt: #3F57B4;
	--bg-transcluscent-slight: rgba(255, 255, 255, 0.1);
	--bg-transcluscent: rgba(255, 255, 255, 0.85);
	--bg-transcluscent-alt: hsla(226, 59%, 38%, 0.8);
	--bg-transcluscent-alt-vdark: hsla(226, 59%, 8%, 0.8);
	--bg-transcluscent-alt-slight: hsla(196, 91%, 62%, 0.23);
	
	/* --text-main: #3F57B4; */
	--text-main: hsl(227, 70%, 35%);
	--text-bright: #efefef;
	--text-alt: #38871e;
	
	--shadow: hsla(0, 0%, 25%, 0.25);
	--shadow-dark: hsla(0, 0%, 25%, 0.5);
	
	--highlight: hsl(353, 100%, 36%);
	
	--bg-image: url('{% image_urlpass "images/clouds.png" %}');
}

@media (prefers-color-scheme: dark) {
	:root {
		--bg-main: #020B18;
		--bg-bright: hsl(108, 46%, 34%);
		--bg-alt: hsl(228, 68%, 68%);
		
		--bg-transcluscent: hsla(224, 20%, 16%, 0.85);
		--bg-transcluscent-alt: hsla(226, 79%, 70%, 0.8);
		
		--text-main: hsl(227, 80%, 95%);
		
		--bg-image: url('{% image_urlpass "images/clouds-night.png" %}');
	}
	
	a { color: #7c7cff; }
	a:active { color: #ee0000; }
	a:not(.nav):not(.bigbutton):visited { color: hsl(296, 84%, 75%); }
}

/* rem is relative to the html element, and em is relative to the current element. */
html { font-size: 100%; scroll-behavior: smooth; }

body
{
	margin: 0;
	font-family: sans-serif; /* Serif is awful :( */
	
	background: var(--bg-image) center / cover fixed,
		var(--bg-main); /* Don't forget to update the @page one too for paged media */
	color: var(--text-main);
}

title { string-set: page-title content(text); }

/* Special tweaks for paged media (e.g. PDFs) */
@page {
	font-family: sans-serif;
	background: var(--bg-main); /* Set the background colour to cover the whole page */
	
	@top-right {
		content: "By Starbeamrainbowlabs";
		opacity: 0.6;
	}
	@bottom-right {
		content: "Page " counter(page) " of " counter(pages);
		opacity: 0.6;
	}
}
h1, h2, h3, h4, h5, h6 {
	text-align: center;
	word-wrap: break-word;
}

.linked-section-heading {
	display: flex;
}
.linked-section-heading > a.section-link {
	opacity: 0.75;
	text-decoration: none;
	transition: 0.25s opacity;
}
.linked-section-heading > a.section-link:hover {
	opacity: 1;
}
.linked-section-heading > span.title {
	flex: 1;
	word-wrap: anywhere;
}
.linked-section-heading > span.category {
	font-size: 0.75em;
	border-radius: 1em;
	background: var(--cat-colour);
	padding: 0 0.5em;
	line-height: 1.5;
	align-self: flex-start;
}
h3 {
	margin-top: 2em;
	padding-bottom: 0.2em;
	border-bottom: 0.1em solid var(--cat-colour);
}
h3, h3 > code {
	font-size: 1.1em;
	text-align: left;
}
h3 > code {
	background: transparent;
}

nav {
	background: var(--bg-bright);
	display: flex;
	align-items: baseline;
	font-size: 1.1em;
	margin: 0;
}
nav h1 {
	background: var(--text-bright);
	margin: 0;
	padding: 0.2em 0.5em 0.2em 0.2em;
	font-size: 1.2em;
	color: var(--bg-alt);
}
nav ul {
	flex: 1;
	list-style-type: none;
	margin: 0; padding: 0;
	display: flex;
	justify-content: space-evenly;
	align-items: center;
}
nav > ul a {
	background: var(--bg-transcluscent-slight);
	display: inline-block;
	padding: 1.45em 2em;
	text-decoration: none;
	font-weight: bold;
	color: var(--text-main);
}
nav li[aria-current=page] a {
	color: var(--bg-bright);
	background: var(--text-main);
}

nav a.image {
	padding: 0.75em 1em 0.5em 1em;
}
nav img { max-height: 2em; }


/* A small tweak to things more responsive */
iframe, object, embed, img, table
{
	max-width: 100%;
}
picture img { height: initial; }

/* For some reason bold text doesn't look like it has enough of a space in between words, which is odd */
strong {
	padding: 0 0.25em;
}

/* Turn the user's cursor into a hand when over things they can click */
button, summary
{
	cursor: pointer;
}

th, td
{
	margin: 4px 6px;
	padding: 4px 6px;
}

a { font-weight: bold; padding: 0 0.25em; }
/* a:not(.nav) { color: hsl(208, 67%, 40%); }
a:not(.nav):hover { color: hsl(214, 67%, 50%); }
a:not(.nav):active, a:focus { color: hsl(214, 87%, 60%); } */
a:not(.nav):not(.bigbutton):visited { color: hsl(240, 77%, 60%); }
pre {
	page-break-inside: avoid;
	break-inside: avoid;
	padding: 0.6em;
	border: 0.2em solid var(--bg-transcluscent-alt);
	border-radius: 0.25em;
	background: var(--bg-transcluscent-alt);
	box-shadow: inset 0 0 0.5em 0.1em var(--shadow-dark);
	line-height: 1.75em;
	color: var(--text-bright);
}
pre, code {
	text-align: left;
	font-size: 1rem;
	font-family: "Source Code Pro", "Ubuntu Mono", monospace;
	white-space: pre-wrap;
	-moz-tab-size: 4;
	tab-size: 4;
}
pre > code { background: transparent; padding: 0; }
code {
	background: var(--bg-transcluscent-alt-slight);
	border-radius: 0.25em;
	padding: 0.15em;
	margin: 0 0.25em;
}
/* pre.language-weacmd {
	background: var(--bg-transcluscent-alt-vdark);
} */

label {
	font-weight: bold;
	cursor: pointer;
	padding: 0.25em 0.45em;
}


/* todo add the rest of the textbox like inputs here */
input[type=text], input[type=number], textarea
{
	margin: 3px 5px;
	padding: 5px 8px;
	
	background: var(--bg-bright);
	border: 0;
	border-radius: 5px;
}

.form-item {
	display: flex;
	margin: 0.5em 0;
}
.form-item.checkbox:not(.centre) > label { flex: 1; }
.form-item:not(.checkbox):not(.centre) > input { flex: 1; }
.form-item.centre { justify-content: center; }
.bigsearch {
	flex-direction: row;
}
.bigsearch > input[type=search] {
	width: 100%;
	box-sizing: border-box;
}

footer {
	margin: 3em 0 0 0;
	padding: 1em;
	text-align: center;
	background: linear-gradient(to left, #fff2, #fff2),
		var(--pattern-jigsaw-green),
		var(--bg-bright);
	/* color: var(--text-bright); */
}

.badge			{ padding: 0 0.25em; }

.text-left		{ text-align: left;		}
.text-centre	{ text-align: center;	}
.text-right		{ text-align: right;	}

.invisilink		{ text-decoration: none; color: inherit;			}
.invisilist		{ list-style-type: none; margin: 5px; padding: 5px; }

.icon			{ vertical-align: middle;					}
.icon.tiny		{ max-width: 1em; max-height: 1em;			}
.icon.small		{ max-width: 1.25em; max-height: 1.25em;	}
.icon.medium	{ max-width: 2em; max-height: 2em;			}
.icon.large		{ max-width: 5em; max-height: 5em;			}
.icon.logo		{
	max-width: 3em;
	max-height: 3em;
}
.icon.logo-large {
	max-width: 8em;
	max-height: 8em;
}

.shadow-top		{ box-shadow: 0 -0.25em	0.5em			var(--shadow);	}
.shadow-bottom	{ box-shadow: 0 0.25em	0.5em			var(--shadow);	}
.shadow-vertical{ box-shadow: 0 0		0.5em	0.25em	var(--shadow);	}
.shadow-text	{ text-shadow: 0.15em 0.15em 0.15em		var(--shadow);	}

.hidden			{ display: none;							}

.bigbox {
	display: flex;
	flex-direction: column;
	align-items: center; justify-content: center;
	text-align: center; /* If any text wraps in a <p>, then this makes sure it's still centred */
	background: content-box linear-gradient(var(--bg-transcluscent), var(--bg-transcluscent)),
		var(--bg) center / cover;
	
	height: max(30em, 80vh);
	padding: 0 5em 0 5em;
	box-sizing: border-box;
}
.bigbox h1 {
	margin: 0;
	font-size: 3em;
	/* color: var(--text-alt); */
	color: var(--bg-alt);
}

.features-large {
	margin: 3em 0;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: space-evenly;
}
.features-large > :where(figure, .features-item) {
	background: var(--bg-transcluscent);
	background-image: var(--pattern-bricks);
	margin: 1em 0.1em;
	padding: 1em;
	max-width: 15em;
	box-shadow: 0.25em 0.25em 0.5em var(--shadow);
}
.features-item.wide {
	flex: 1;
	max-width: initial;
	margin: 0.5em 2em;
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
}
/* .features-item.wide > :last-child {
    flex: 1;
    display: flex;
    justify-content: flex-end;
    flex-direction: column;
    align-items: center;
} */

.panel-generic {
	background: var(--bg-transcluscent);
	background-image: var(--pattern-bricks);
	margin: 2em;
	padding: 1em;
	box-shadow: 0.25em 0.25em 0.5em var(--shadow);
}

.bigbutton-list {
	list-style-type: none;
	margin: 0;
	padding: 1em 0;
	display: flex;
	justify-content: space-around;
	flex-wrap: wrap;
}

.bigbutton {
	display: inline-block;
	
	margin: 0.25em 0;
	padding: 0.35em 0.45em;
	border: 0;
	border-radius: 0.25em;
	
	background: var(--bg-alt);
	
	color: var(--text-bright);
	font-size: 1.25em;
	text-decoration: none;
	text-align: center;
	
	box-shadow: 0 0 0.5em var(--shadow);
	
	cursor: pointer;
	transition: box-shadow 0.25s, transform 0.25s;
}
.bigbutton:hover {
	box-shadow: 0 0.25em 0.65em var(--shadow);
	transform: translateY(-0.25em);
}
.bigbutton:active {
	box-shadow: 0 0 0.25em var(--shadow);
	transform: translateY(0.1em);
}
.bigbutton.disabled {
	filter: saturate(25%);
	opacity: 0.75;
	cursor: default;
}

.gallery {
	background: var(--pattern-hex), var(--bg-transcluscent);
}

.command-ordering-tabs {
	display: flex;
	gap: 1em;
	margin-bottom: 2em;
}
.command-ordering-tabs button {
	flex: 1;
	font-size: 1.1em;
	padding: 0.5em;
}
.command-ordering-tabs button.active { font-weight: bold; }

.command-list {
	margin: 0;
	padding: 0;
	list-style-type: none;
	word-wrap: anywhere;
	display: flex;
	flex-direction: column;
}
.command-list > li {
	margin: 0.25em 0;
}
.command-list > li > a {
	text-decoration: none;
	padding: 0;
}
.command-list.coloured code { background: var(--cat-colour); }
.command-list code {
	display: block;
	padding: 0.5em;
	box-sizing: border-box;
	/* margin: 0.5em 0; */
	margin: 0 0;
}

.filterable {
	border: 0.2em solid var(--cat-colour);
}

.note, .tip, .important, .warning, .caution,
.markdown-alert {
	padding: 0.4em 0.6em;
	border-radius: 0 0.2em 0.2em 0;
}
.markdown-alert-note::before,
.note::before		{ color: #31a0fc; content: "\0024d8\0000a0Note"; }
.markdown-alert-tip::before,
.tip::before		{ color: #25cb1c; content: "\01f4a1\0000a0Tip"; }
.markdown-alert-important::before,
.important::before	{ color: #911ccb; content: "\01f7e3\0000a0Important"; }
.markdown-alert-warning::before,
.warning::before	{ color: #e0b840; content: "\0026a0\0000a0Warning"; }
.markdown-alert-caution::before,
.caution::before	{ color: #e04040; content: "\00203c\0000a0Caution"; }

.markdown-alert-note::before,
.markdown-alert-tip::before,
.markdown-alert-important::before,
.markdown-alert-warning::before,
.markdown-alert-caution::before,
.note::before, .tip::before, .important::before, .warning::before, .caution::before {
	display: block;
	font-weight: bold;
	margin-bottom: 0.3em;
}
.markdown-alert-note,
.note		{ border-left: 0.2em solid #31a0fc; background: #31a1fc1f; }
.markdown-alert-tip,
.tip		{ border-left: 0.2em solid #25cb1c; background: #31fc491f; }
.markdown-alert-important,
.important	{ border-left: 0.2em solid #911ccb; background: #bc31fc1f; }
.markdown-alert-warning,
.warning	{ border-left: 0.2em solid #e0b840; background: #efc7461f; }
.markdown-alert-caution,
.caution	{ border-left: 0.2em solid #e04040; background: #ef5f461f; }

/* markdown-it-alert-title. We *should* use their provided styles really.... but meh */
.markdown-alert-title { display: none; }



.contributor-list {
	list-style-type: none;
	margin: 0;
	padding: 0;
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
}
.contributor-list li {
	padding: 0.5em;
}
.contributor-list a {
	display: flex;
	flex-direction: column;
	align-items: center;
}

@keyframes move-diagonal {
	from {
		background-position: -2px -2px, -2px -2px, -1px -1px, -1px -1px;
	}
	to {
		background-position: -52px -52px, -52px -52px, -51px -51px, -51px -51px;
	}
}


#dropzone {
	border: 0.3em dashed #aaaaaa;
	transition: border 0.2s;
	justify-content: flex-start;
}
#dropzone.dropzone-active {
	border: 0.3em dashed hsl(203, 79%, 55%);
	
	/* Ref https://www.magicpattern.design/tools/css-backgrounds */
	background-image:  linear-gradient(var(--bg-bright) 2px, transparent 2px), linear-gradient(90deg, var(--bg-bright) 2px, transparent 2px), linear-gradient(var(--bg-bright) 1px, transparent 1px), linear-gradient(90deg, var(--bg-bright) 1px, var(--bg-transcluscent) 1px);
	background-size: 50px 50px, 50px 50px, 10px 10px, 10px 10px;
	background-position: -2px -2px, -2px -2px, -1px -1px, -1px -1px;
	
	animation: move-diagonal 5s linear infinite;
}
#brushimg-preview { flex: 1; }
#brushimg-tsv {
	display: block;
	max-height: 90vh;
	overflow: scroll;
}