:root {
	--text: BLACK;
	--line: #FFFAFA;
	--accent: #a8bbbb;
	--bg: #336666;
	--navbg: #2d5353;
	--fill: #FFFAFA;
	--subtle: #e2eded;
	--current: GOLD;
	--link: #23a7a7;
	--attn: RED;
	--bgimg: url(images/bg-swirl.png);
	--navimg: url();
}

* { 
	margin: 0;
	padding: 0;
	box-sizing: border-box;}

body { 
	color: var(--text);
}

img { max-width: 100% }


/*LEFT NAVIGATION BAR */


nav {
	float: left;
	width: 15%;
	height: 100vh;
	position: relative;
	background-color: var(--navbg);
}

nav div {
	height: fit-content;
	width: fit-content;
	position: absolute;
	top: 1%;
	-ms-transform: translateY(-1%);
	transform: translateY(-1%);
	right: 0vw;
	text-align: center;
}

nav a {
	display: block;
	margin: 10px 0;
	padding: 5;
	font-size: 1.5em;
	text-decoration: none;
	color:var(--fill);
	filter: drop-shadow(1px 1px 0 var(--text))
			drop-shadow(-1px 1px 0 var(--text))
			drop-shadow(0 -1px 0 var(--text))
			drop-shadow(1px 0 var(--text));
}

nav a.plain {
	filter: drop-shadow(1px 1px 0 var(--navbg))
}


nav .current{
	color: var(--current);
}

nav a.sub, a.subcurrent {
	font-size: 1.15em;
}

nav a.subcurrent {
	color: var(--current);
}

nav a:hover,  nav .sub:hover, nav .current:hover, nav a.subcurrent:hover {
	color: var(--attn);
	text-shadow: 0 0 2px var(--accent);
	filter: drop-shadow(1px 1px 0 var(--accent))
			drop-shadow(-1px 1px 0 var(--accent))
			drop-shadow(0 -1px 0 var(--accent))
			drop-shadow(1px 0 var(--accent));
}


/* MAIN LAYOUT */


.stripe {
	float: left;
	width: 1%;
	height: 100vh;
	background-color: var(--line);
}

main {
	float: left;
	width: 84%;
	height: 100vh;
	padding: 0.75em;
	overflow-y: scroll;
	background-color: var(--bg);
	background-image: var(--bgimg);
}


section {
	margin: auto;
	padding: 0.25em 0.25em;
	background-color: var(--fill);
	border: 0px solid var(--line);
	color:var(--text);
}

header {
	font-size: 1.25em; 
	text-align: center;
	color:var(--fill);
	filter: drop-shadow(1px 1px 0 var(--text))
			drop-shadow(-1px 1px 0 var(--text))
			drop-shadow(0 -1px 0 var(--text))
			drop-shadow(1px 0 var(--text));
}

footer { 
	font-size: 1em;
	text-align: center;
	background-color: var(--accent); 
	margin-top: 2em;
	padding: 5px;
}


/* BROAD STROKES - spacing, text size, and color */


p, table, details, cite, blockquote, img {
	margin-top: 0.5rem;
	margin-bottom: 0.5rem;
}


h1, h2, h3, h4, h5, h6, {
	margin-top: 0 rem;
	margin-bottom: 0 rem;
}

ul, ol, dl {
	margin-top: 0rem;
	margin-bottom: 1rem;
	margin-right: 1rem;
	margin-left: 2rem;
}

ul ul, ol ol { 
	margin: 0 0 0 2rem;
}

p, table,  ul, ol, dl {
	font-size: 1rem;
}

blockquote {
	background-color: var(--accent);
	color: var(--fill);
	padding: 1em;
}

blockquote a, blockquote code {
	color: var(--text);
}

cite { 
	display: block;
	text-align: right;
}

code, details, pre {
	background-color: var(--accent);
}

code { 
	font-family: 'Courier New', monospace; 
	padding: 2px;
}

details, pre {
	padding: 1em;
}

buffer {
	padding: 1em;
}

pre { overflow-x: auto; }

details p { margin: 1rem 0 1rem 2rem; }

table {	border: 5px solid var(--bg); }
tr, td, th { border: 2px solid var(--bg); }
td, th { padding: 3px }

figcaption { 
	text-align: center;
	margin: -0.5em 1em 1em 1em;
}

a { 
	color: var(--link);
	padding: 2px;
}

p a:visited, section a:visited, footer a:visited {
	color: var(--navbg);
	padding: 2px;
}

p a:hover, ul a:hover { 
	color: var(--fill);
	background-color: var(--navbg);
}

h6 { font-size: 1em; }
h5 { font-size: 1.2em; }
h4 { font-size: 1.35em; }
h3 { font-size: 1.8em; }
h2 { font-size: 2.2em; }
h1 { font-size: 2.4em; }

hr {
	border: 2px dashed var(--line);
	margin: 0.5rem;
}


/* BROAD STROKES - custom */


.highlight { 
	text-align: center;
	background-color: var(--accent);
	padding: 5px;
}

.inv {
	border: 2px dashed var(--bg);
	margin: 0.5rem;
}

.alttitle {
	font-weight: bold;
    color: rgba(0, 0, 0, 0.65);
}

.smicon {
	height: 15px;
	padding-right: 0.5em;
	margin-top: 0px;
	margin-bottom: 0px;
}

.center {
	text-align: center;
}

.boldplus { 
	font-size: 1.05em;
	font-weight: bold;
}

.mono {
	font-size: 1.1em;
	font-family: monospace;
}

.sans {
	font-size: 0.9em;
	font-family: sans-serif;
}

.pad05 {
	padding-right: 0.5em;
	padding-left: 0.5em;
}

.indent25 {
	margin-left: 0.25rem;
}

.indent50 {
	margin-left: 0.5rem;
}

.indent75 {
	margin-left: 0.75rem;
}
.indent100 {
	margin-left: 1rem;
}

.indent100_sans {
	margin-left: 1rem;
	font-size: 0.90em;
	font-family: sans-serif;
}

.third400 { 
	width: 31%;
	max-width: 400px;
}


/* SPECIALIZED - buttons*/


.highbutton, .highbutton_current, .highbutton_wide { 
	display: inline-block;
	text-align: center;
	text-decoration: none;
	background-color: var(--accent);
	color: var(--text);
	font-family: sans-serif;
	padding: 5px 20px;
	margin-top: 3px;
	margin-bottom: 3px;
	filter: drop-shadow(1px 1px 0 var(--text))
			drop-shadow(-1px 1px 0 var(--text))
			drop-shadow(0 -1px 0 var(--text))
			drop-shadow(1px 0 var(--text));
}

.highbutton:hover { 
	background-color: var(--fill);
	color: var(--text);
}

.highbutton_wide { 
	font-weight: bold;
	padding: 5px 55px;
}

.highbutton_wide:hover { 
	background-color: var(--bg);
	color: var(--fill);
}

.highbutton_current { 
	background-color: var(--current);
	color: var(--text);
}

.subtlebutton { 
	display: inline-flex;
	align-items: center;
	text-align: center;
	text-decoration: none;
	background-color: var(--subtle);
	color: var(--text);
	padding: 5px 5px;
}

.subtlebutton:hover { 
	background-color: var(--navbg);
	color: var(--fill);
}


/* SPECIALIZED - image gallery*/


.gallery {
	display: inline-block;
	padding: 0;
	margin: 0px 0;
	list-style: none;
	display: grid;
	grid: auto-flow / repeat(auto-fit, minmax(175px, 1fr));
	align-items: baseline;
	grid-gap: 1px;  /* old version of the property name */
	gap: 1px;
	background: var(--fill);
	}

.gallery a:hover, .gallery img:hover { 
	background-color: var(--fill);
}

.gallery img:hover {
	outline: 4px double var(--attn);
	outline-offset: -4px;
}

.desc {
	color: var(--text);
	font-weight: bold;
	font-family: sans-serif;
	text-align: center;
	margin-top: 0px;
	margin-bottom: 0px;
	margin-left: 3px;
	margin-right: 3px;
	padding: 0;
}


/* SPECIALIZED - flex box*/


.flex-box {
	display:flex;
	flex-wrap:wrap;
	margin: 0em;
	align-items: flex-start;
}

.flex-box section {
	margin: 0.1em;
	border: 0px solid var(--line);
	background-color: var(--fill);
	}

.full { flex: 1 1 100%;}
.half { flex: 1 1 calc(50% - 2em); }
.third { flex: 1 1 calc(33% - 2em); }
.twothird { flex: 1 1 calc(66% - 2em); }
.quarter { flex: 1 1 calc(25% - 2em); }
.threequarter { flex: 1 1 calc(75% - 2em); }

.column { flex: 33%; }
.blurb { 
	flex: 1 1 calc(60% - .2em); 
}
.cover { 
	flex: 1 1 calc(40% - .2em);
	max-width: 410px;
 }


/* SPECIALIZED - change image while hovering*/


.reveal {
	display: inline-block;
	width: 348px;
	height: 311px;
	position: relative;
	overflow: hidden;
}
 
.reveal::before {
	content: url('images/crabby-happy.jpg');
	width: 100%;
	height: 100%;
	transition: opacity 0.3s ease-in-out;
}

.reveal:hover::before {
	content: url('images/crabby-mad.jpg');
}


@media screen and (min-width: 1300px){

	.third400 { 
		width: 19%;
		max-width: 400px;
	}
}

@media screen and (max-width: 800px){
	nav, main, .stripe {
		float: none;
		width: 100%;
		height: fit-content;
	}
	
	main { 
		overflow: auto;
		padding: 0em;
	}
	
	header { 
		text-align: center;
		font-size: 1.25em;
	}

	section { padding: .25em 0.2em; }
	
	.stripe { height: 10px; }

/* NAVIGATION BAR - small screen */

	nav { padding: 2vw }
	
	nav div {
		height: fit-content;
		width: 100%;
		position: static;
		-ms-transform: translateY(0);
		transform: translateY(0);
		text-align: center;
	}


	nav img {
		z-index: -1;
		position: absolute;
		left:0;
		max-height: 100%;
	}

	
	nav a {
		font-size: 1.25em;
		display: inline-block;
		margin: 5px;
	}

	nav a.plain {
		display: none;
	}

	nav a.sub {
		font-size: 1.05em;
		display: inline-block;
		margin: 2.5px;
	}

	nav a.subcurrent {
		display: inline-block;
		margin: 2.5px;
	}

/*
	nav a::before { content: "▪ "; }
*/

/* CUSTOM - small screen*/

	.cover { 
		flex: 1 1 100%;
		text-align: center;
		max-width: 100%;
	}

	.blurb { flex: 1 1 99%; }

	.gallery {
		grid: auto-flow / repeat(auto-fit, minmax(130px, 1fr));
	}

	.column { flex: 100%;}
}