
/* 2025 redesign */
/* =-=-=-=-=-=-= */

/* Homepage + overall layout */
/* ========================= */

:root {
	--ex-blue-100: #E6F7FF;
	--ex-blue-200: #22CCFF;
	--ex-blue-600: #35537A;
	--ex-blue-700: #2F4B6C;
	--ex-blue-800: #273F5C;
	--ex-blue-900: #131E2A;

	--ex-orange: #d97b33;
}

body {
	margin: 0;
	position: relative;
}

.header {
	background-color: var(--ex-blue-800);
	border-top: var(--ex-blue-200) 1px solid;
	border-bottom: var(--ex-blue-200) 1px solid;
	margin-top: 1.5rem;
	padding: 0.5rem 15.25rem;
	box-shadow: 0 0.25rem 0.25rem 0 rgba(0, 0, 0, 0.25);
}

.nav-wrapper {
	filter: drop-shadow(0.25rem 0.25rem 0.25rem rgba(0, 0, 0, 0.25));
	position: absolute;
	top: 0;
	left: 0;
}

nav {
	background-color: var(--ex-blue-200);
	border-top: none;
	display: flex;
	flex-direction: column;
	position: absolute;
	top: 0;
	left: 44px;
	min-width: 10.75rem;
	max-width: 10.75rem;
	height: 47.825rem;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 87.5%, 0 100%);
}

nav::before {
	content: ' ';
	background-color: var(--ex-blue-900);
	position: absolute;
	top: 0;
	left: 1px;
	width: 10.625rem;
	height: 47.625rem;
	clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 87.5%, 0 100%);
	z-index: -1;
}


nav ul {
	list-style: none;
	margin: 14.125rem 1.5rem;
	padding: 0;
}

nav li a,
nav li a:visited {
	display: inline-block;
	margin-bottom: 1rem;
	padding: 0.5rem 0.75rem;
	border: none;
	border-radius: 0.625rem;
	color: var(--ex-blue-100);
	font-size: 1.25rem;
}

nav li a.active,
nav li a:hover {
	background-color: var(--ex-blue-800);
	border: none;
}

nav li.socials {
	padding: 0.5rem 0.75rem;
}

nav li.socials a,
nav li.socials a:visited {
	padding: 0.125rem;
	margin-right: 0.125rem;
}

nav li.socials a:last-child,
nav li.socials a:visited:last-child {
	margin: 0;
}

nav li.socials a:hover {
	background-color: var(--ex-blue-900);
	color: var(--ex-blue-200);
}

.main-grid {
	margin: 3rem 3rem 3rem 16.5rem;
	display: flex;
	gap: 2rem;
	align-items: flex-start;
}

.column {
	display: flex;
	flex-direction: column;
	gap: 2rem;
	flex: 1;
}

.row {
	display: flex;
	gap: 2rem;
	flex: 1;
}

.card {
	background-color: var(--ex-blue-900);
	border-radius: 0.625rem;
	border: 2px solid var(--ex-blue-700);
	color: var(--ex-blue-100);
	padding: 2rem;
	flex: 1;
	box-shadow: 0 0.25rem 0.25rem 0 rgba(0, 0, 0, 0.5);
	display: flex;
	flex-direction: column;
}

.post {
	padding: 3rem;
}

.card img {
	max-width: 100%;
}

.card h2 {
	font-size: 1.25rem;
	margin: 0 0 1rem 0;
}

.post-link {
	margin: 0.5rem 0;
}

.post-link p {
	margin: 0;
}

.post-link .title {
	font-size: 1rem;
	margin-bottom: 0.25rem;
}

.image-links {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2rem;
	flex: 1;
}

.post .row {
	justify-content: space-between;
	margin-top: 1.5rem;
}

@media screen and (max-width: 1400px) {
	.main-grid {
		flex-direction: column;
		align-items: normal;
	}

	.main-grid.reverse {
		flex-direction: column-reverse;
	}
}

/* Styling for typography elements in posts */

blockquote {
	margin: 0.75rem 0;
	padding: 1rem;
	border-left: 0.25rem solid var(--ex-blue-600);
	border-radius: 0.25rem;
}

blockquote cite {
	display: block;
	margin-bottom: 1rem;
	color: var(--ex-blue-200);
}

.bbc_spoiler summary {
	color: var(--ex-orange);
	cursor: pointer;
}

.bbc_spoiler .spoiler_content {
	margin: 1rem 0 0 0;
	padding: 0 0 0 1rem;
	border-left: 1px solid var(--ex-orange);
}


/* Article List Page */
/* ================= */

.pagination {
	color: var(--ex-blue-100);
	display: flex;
	flex-direction: column;
	align-items: center;
}

.pagination p {
	margin: 0 0 1rem 0;
	font-size: 1rem;
}

.pagination .main-controls {
	font-size: 1.125rem;
	display: flex;
	align-items: center;
}

.pagination .main-controls a,
.pagination .main-controls .disabled-button {
	border: none;
	margin: 0 0.25rem;
	padding: 0.5rem;
	border-radius: 5rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.pagination .main-controls .disabled-button {
	color: var(--ex-blue-600);
}

.pagination .main-controls a:hover {
	border: none;
	background-color: var(--ex-blue-700);
}

.article-preview h2 a {
	color: var(--ex-blue-100);
	margin: 0;
	font-size: 1.5rem;
}

.article-preview p {
	margin: 0 0 0.5rem 0;
}

.article-preview .user {
	font-size: 1.25rem;
}

.article-snippet {
	max-height: 6rem;
	overflow: hidden;
	margin-top: 1.5rem;
}

.article-preview:first-of-type .article-snippet {
	max-height: 32rem;
}

/* Since we're going to hide line-breaks, we need spacing between the sections
   of articles which set a specific text size with BBCode.
*/
.article-snippet span.bbc_size {
	display: inline-block;
	margin-bottom: 0.5rem;
}

/* Hide things we don't want in previews, such as main titles and aside images */
.article-snippet .floatleft,
.article-snippet .floatright,
.article-snippet .centertext,
.article-snippet hr,
/* This hides post titles and pre-content line breaks */
.article-snippet span[style*="36pt"],
.article-snippet span[style*="24pt"],
.article-snippet span[style*="18pt"],
.article-snippet br:not(.bbc_size[style*="12pt"] ~ br) {
	display: none;
}

/* This overrules the above rule for line-breaks inside an article paragraph */
.article-snippet .bbc_size br {
	display: inline-block !important;
}

.article-preview .cta {
	font-size: 1.125rem;
	margin-top: 1rem;
}

/* Article Page */
/* ============ */

.main-grid.focus {
	color: var(--ex-blue-100);
	margin: 3rem 6rem 10rem 18.5rem;
	gap: 6rem;
}

.main-grid.focus .column:first-child {
	flex: 2;
}

.column.centered {
	align-items: center;
}

@media screen and (max-width: 1400px) {
	.main-grid.focus {
		margin-left: 16.5rem;
		gap: 3rem;
	}
	
	.column.centered {
		align-items: normal;
	}
}

article {
	max-width: 60rem;
	font-size: 1rem;
}

.metadata p {
	margin-top: 0;
	margin-bottom: 2rem;
}

article span {
	line-height: 1.5;
}

article .floatleft {
	margin: 0.5rem;
	max-width: 20rem;
}

article .floatright {
	margin: 0.5rem;
	max-width: 30rem;
}

article img {
	max-width: 100%;
}

.suggestions h2 {
	margin-bottom: 2rem;
}

.suggestions .post-link {
	margin-bottom: 1.25rem;
}
