/* 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: #8ABEF6;
	--bg-bright: #38871e;
	--bg-alt: #3F57B4;
	--bg-transcluscent-slight: rgba(255, 255, 255, 0.1);
	--bg-transcluscent: rgba(255, 255, 255, 0.8);
	
	--text-main: #3F57B4;
	--text-bright: #efefef;
	--text-alt: #38871e;
	
	--highlight: hsl(353, 100%, 36%);
}

/* @media (prefers-color-scheme: dark) {
	:root {
		--bg-main: #232323;
		--bg-bright: black;
		--bg-transcluscent: rgba(50, 50, 50, 0.5);
		
		--text-main: #f3f3f3;
	}
} */

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

body
{
	margin: 0;
	font-family: sans-serif; /* Serif is awful :( */
	
	background: 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;
	}
}

nav {
	background: var(--bg-bright);
	display: flex;
	align-items: baseline;
	font-size: 1.1em;
	margin: 0;
}
nav h1 {
	background: var(--bg-alt);
	margin: 0;
	padding: 0.5em;
	font-size: 1.2em;
	color: var(--text-bright);
}
nav ul {
	flex: 1;
	list-style-type: none;
	margin: 0; padding: 0;
	display: flex;
	justify-content: space-evenly;
}
nav ul li {
	background: var(--bg-transcluscent-slight);
}
nav a {
	display: inline-block;
	padding: 1.2em 3em;
	text-decoration: none;
	font-weight: bold;
	color: var(--text-bright);
}


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

/* 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; }
/* 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):visited { color: hsl(240, 77%, 60%); }

pre { page-break-inside: avoid; break-inside: avoid; }
pre, code {
	white-space: pre-wrap;
	-moz-tab-size: 4;
	tab-size: 4;
}


/* 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;
}


/* Utility / layout aids */
.float.left		{ float: left;	}
.float.right	{ float: right;	}

.flex	{ display: flex; }
.flex-1	{ flex: 1;	}
.flex-2	{ flex: 2;	}
.flex-3	{ flex: 3;	}
.flex-4	{ flex: 4;	}
.flex-5	{ flex: 5;	}
.flex-6	{ flex: 6;	}

.small-spacing	{ margin: 0.25em 0.35em;	padding: 0.25em 0.35em;	}
.med-spacing	{ margin: 0.45em 0.65em;	padding: 0.45em 0.65em;	}
.high-spacing	{ margin: 1em 1.25em;		padding: 1em 1.25em;	}

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

.small-text		{ font-size: 0.8rem;	}
.medium-text	{ font-size: 1rem;		}
.large-text		{ font-size: 1.3rem;	}

.bold-text		{ font-weight: bolder;	}

.block			{ display: block;			}
.inline			{ display: inline;			}
.inline.block	{ display: inline-block;	}

.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;			}

.img-text-middle{ vertical-align: middle; }


.bigbox {
	display: flex;
	flex-direction: column;
	align-items: center; justify-content: center;
	background: content-box linear-gradient(var(--bg-transcluscent), var(--bg-transcluscent)),
		var(--bg) center / cover;
	height: 80vh;
	padding: 0 5em 0 5em;
	box-sizing: border-box;
}
.bigbox h1 {
	margin-top: 0;
	font-size: 3em;
	color: var(--text-alt);
}
.bigbox :last-child { margin-bottom: 7em; }

.features-large {
	margin: 3em 0;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: space-evenly;
}
.features-large figure {
	background: var(--bg-transcluscent);
	margin: 0.1em;
	padding: 1em;
	max-width: 15em;
}
/* .features-large figure img {
	max-width: 12em;
} */

.cssbox-gallery {
	display: flex;
}