/*
.cabin-<uniquifier> {
  font-family: "Cabin", sans-serif;
  font-optical-sizing: auto;
  font-weight: <weight>;
  font-style: normal;
  font-variation-settings:
    "wdth" 100;
}

.playfair-display-<uniquifier> {
  font-family: "Playfair Display", serif;
  font-optical-sizing: auto;
  font-weight: <weight>;
  font-style: normal;
}
*/
:root {
	--gold: #857500;
	--blue: #3c3d94;
	--lt-blue: #4e52a5;
	--black: #222;
	--mid-gray: #676767;
	--gray: #eaeaea;
	--lt-gray: #f8f8f8;
	--white: #fff;
}

html {
	box-sizing: border-box;
}

*,
*::before,
*::after {
	box-sizing: inherit;
}

body {
	padding: 0;
	margin: 0;
	font-family: "Cabin", sans-serif;
	font-optical-sizing: auto;
	font-weight: 400;
	font-style: normal;
	font-variation-settings: "wdth" 100;
	font-size: 100%;
	line-height: 1.65;
	color: var(--black);
	background-color: var(--white);
}

figure {
	margin: 0;
}

img {
	display: block;
	max-width: 100%;
	height: auto;
}

svg {
	display: block;
	width: 3rem;
	height: 3rem;
	fill: red;
	stroke: blue;
}

.button_icon {
	display: block;
	padding: 0.875rem;
	border-radius: 50%;
	border: 2px solid var(--gray);
	background-color: transparent;
	transition: background-color 300ms ease-in-out;
}

.button_icon:focus,
.button_icon:hover,
.button_icon:active {
	background-color: var(--gold);
}

.button_icon svg {
	width: 1.25rem;
	height: 1.25rem;
	fill: var(--mid-gray);
	transition: fill 300ms ease-in-out;
}

.button_icon:focus svg,
.button_icon:hover svg,
.button_icon:active svg {
	fill: var(--white);
}

button {
	padding: 0;
	border: none;
	background-color: transparent;
	cursor: pointer;
}

.button {
	padding: 1rem 2rem;
	margin: 0 0 1rem 50%;
	transform: translateX(-50%);
	border-radius: 5vh;
	border: 2px solid var(--lt-blue);
	background-color: transparent;
	text-transform: uppercase;
	letter-spacing: 1px;
	font-weight: 600;
	color: var(--blue);
	transition:
		background-color 300ms ease-in-out,
		color 300ms ease-in-out;
}

.button:disabled {
	opacity: 50%;
	background-color: var(--lt-blue);
	color: var(--white);
	cursor: not-allowed;
}

.button:focus,
.button:hover,
.button:active {
	background-color: var(--lt-blue);
	color: var(--white);
}

h1,
h2,
h3,
h4 {
	font-family: "Playfair Display", serif;
	font-optical-sizing: auto;
	font-weight: 600;
	font-style: normal;
	line-height: 1.25;
	margin: 0 0 1rem;
}

.primary_heading {
	text-align: center;
	margin: 2rem 0;
}

a {
	color: var(--lt-blue);
	text-decoration-color: var(--lt-blue);
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
	transition: text-decoration-color 300ms ease-in-out;
}

a:focus,
a:hover,
a:active {
	color: var(--lt-blue);
	text-decoration-color: transparent;
}

/* Project Links */
.project_links {
	padding: 0;
	margin: 0;
	list-style-type: none;
	line-height: 1;
	display: flex;
	flex-flow: row nowrap;
	justify-content: flex-start;
	align-items: center;
}

.project_links li::after {
	content: "•";
	color: var(--gold);
	margin: 0 0.5rem;
}

.project_links li:last-of-type::after {
	display: none;
}

.project_links a {
	text-transform: uppercase;
	letter-spacing: 1px;
}

.access-hidden {
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.main {
	padding: 0 1rem 1rem;
}

.home .wrap:has(.matched) {
	margin: 2rem auto 0;
}

.wrap,
.portfolio {
	max-width: 75rem;
	padding: 0 0 2rem;
	margin: 0 auto;
}

.portfolio {
	padding: 0;
}

.main > .wrap {
	display: grid;
	grid-template-columns: 3fr 1fr;
	gap: 2rem;
}

.full_width .main > .wrap {
	display: block;
}

.main > .wrap[hidden],
.full_width .main > .wrap[hidden] {
	display: none;
}

@media (max-width: 960px) {
	.primary_heading {
		margin: 0 0 1.5rem;
	}

	.home .wrap:has(.matched) {
		margin: 0;
	}

	.main {
		padding: 6rem 1rem 0;
	}

	.main > .wrap {
		grid-template-columns: 1fr;
		gap: 1rem;
	}
}

/* Header */
.header {
	position: static;
	padding: 3rem 1rem;
	background-color: var(--white);
}

.header_wrap {
	display: flex;
	flex-flow: row nowrap;
	justify-content: space-between;
	align-items: center;
	max-width: 100rem;
	margin: 0 auto;
}

.primary_logo {
	order: 2;
	font-family: "Playfair Display", serif;
	font-optical-sizing: auto;
	font-style: normal;
	font-size: clamp(1.65rem, 4vw, 3.5rem);
	font-weight: 500;
	line-height: 1.1;
	text-transform: uppercase;
	letter-spacing: 1px;
	margin: 0;
}

.primary_logo a {
	color: var(--black);
	text-decoration: none;
	transition: color 300ms ease-in-out;
}

.primary_logo a:focus,
.primary_logo a:hover,
.primary_logo a:active {
	color: var(--gold);
}

/* Search Form */
.search_form {
	order: 1;
	position: relative;
	padding: 0;
	background-color: var(--white);
}

.search_label {
	position: absolute;
	left: 0;
	top: 65%;
	transform: translateY(-50%);
	font-size: 1rem;
	color: var(--mid-gray);
	text-transform: uppercase;
	letter-spacing: 1px;
	line-height: 1;
	transition:
		transform 300ms ease-in-out,
		font-size 300ms ease-in-out;
}

.search_input {
	width: 232px;
	max-width: 100%;
	padding: 1rem 2rem 0.5rem 0.5rem;
	border-radius: 0;
	border: none;
	border-bottom: 1px solid var(--mid-gray);
	background-color: var(--white);
}

.search_form svg {
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY(-15%);
	width: 1.25rem;
	height: 1.25rem;
	stroke: var(--black);
	pointer-events: none;
}

.search_label:has(+ .search_input:focus),
.search_label.input_active {
	transform: translateY(-45px);
	font-size: 0.8rem;
}

@media (max-width: 960px) {
	.header {
		position: sticky;
		top: 0;
		left: 0;
		width: 100%;
		padding: 1rem;
		box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 10%);
		z-index: 3;
	}

	.primary_logo,
	.search_form {
		order: unset;
	}

	.header .primary_logo::after {
		content: "";
		display: block;
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		background-color: var(--white);
		z-index: -1;
	}

	.search_form {
		visibility: visible;
		position: absolute;
		top: 100%;
		transform: translateY(0);
		left: 0;
		width: 100%;
		padding: 1.5rem 1rem 1rem;
		border-top: 2px solid var(--gray);
		box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 10%);
		background-image: linear-gradient(to bottom, var(--blue), var(--lt-blue));
		z-index: -2;
		transition:
			transform 300ms linear,
			visibility 300ms linear;
	}

	.scrolled .search_form {
		visibility: hidden;
		transform: translateY(-100%);
	}

	.search_label {
		top: 60%;
		left: 1rem;
		color: var(--white);
	}

	.search_label:has(+ .search_input:focus),
	.search_label.input_active {
		transform: translateY(-35px);
	}

	.search_input {
		width: 100%;
		padding: 0.5rem 2rem 0.5rem 0.5rem;
		color: var(--white);
		background-color: transparent;
		border-bottom: 1px solid var(--white);
	}

	.search_form svg {
		right: 1rem;
		stroke: var(--white);
	}
}

/* Social Icons */
.social_navigation {
	order: 3;
}

.social_nav {
	padding: 0;
	margin: 0;
	list-style-type: none;
	display: flex;
	flex-flow: row nowrap;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
}

@media (max-width: 960px) {
	.social_navigation {
		display: none;
		order: unset;
	}
}

/* Navigation */
.skip_nav a {
	position: fixed;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	font-size: 0;
	padding: 0;
	color: transparent;
	background-color: transparent;
}

.skip_nav a:focus {
	font-size: 1rem;
	padding: 1rem;
	color: var(--white);
	background-color: var(--blue);
}

.menu_open,
.menu_close {
	display: none;
}

.navigation {
	position: static;
	visibility: visible;
	padding: 1rem;
	background-image: linear-gradient(to right, var(--blue), var(--lt-blue), var(--blue));
}

.main_nav {
	padding: 0;
	margin: 0;
	list-style-type: none;
	display: flex;
	flex-flow: row nowrap;
	justify-content: center;
	align-items: center;
	gap: 3rem;
}

.main_nav a {
	font-family: "Playfair Display", serif;
	font-optical-sizing: auto;
	font-weight: 500;
	font-style: normal;
	text-decoration-color: transparent;
	text-decoration-thickness: 2px;
	text-underline-offset: 5px;
	text-transform: uppercase;
	letter-spacing: 2px;
	color: var(--white);
	transition: text-decoration-color 300ms ease-in-out;
}

.main_nav a:focus,
.main_nav a:hover,
.main_nav a:active {
	text-decoration-color: var(--white);
}

.main_nav li a:has(svg) {
	display: flex;
	flex-flow: row nowrap;
	justify-content: center;
	align-items: center;
	gap: 0.25rem;
}

.main_nav a svg {
	width: 1.25rem;
	height: 1.25rem;
	stroke: var(--white);
}

@media (max-width: 960px) {
	.skip_nav,
	.skip_nav a {
		display: none;
	}

	.navigation {
		visibility: hidden;
		position: fixed;
		top: 0;
		left: -300px;
		transform: translateX(0);
		width: 300px;
		max-width: 100%;
		height: 100%;
		z-index: 3;
		background-image: linear-gradient(to bottom, var(--blue), var(--lt-blue));
		transition:
			visibility 300ms ease-in-out,
			transform 300ms ease-in-out;
	}

	.main_nav {
		flex-direction: column;
		gap: 0;
		margin: 1rem 0 0;
	}

	.main_nav li {
		width: 100%;
		padding: 0 0 1rem;
		margin: 0 0 1rem;
		border-bottom: 3px dotted var(--lt-blue);
	}

	.main_nav li:last-of-type {
		border: none;
	}

	.main_nav a {
		display: block;
		text-align: center;
	}

	.menu_open,
	.menu_close {
		display: block;
	}

	.menu_open {
		padding: 0.5rem;
		border-radius: 5px;
		border: 2px solid var(--blue);
		background-color: var(--blue);
		transition: background-color 300ms ease-in-out;
	}

	.menu_open:focus,
	.menu_open:hover,
	.menu_open:active {
		background-color: transparent;
	}

	.menu_open svg {
		width: 2rem;
		height: 2rem;
		stroke: var(--white);
		transition: stroke 300ms ease-in-out;
	}

	.menu_open:focus svg,
	.menu_open:hover svg,
	.menu_open:active svg {
		stroke: var(--blue);
	}

	.menu_close {
		margin-left: auto;
		border-radius: 5px;
		background-color: transparent;
		transition: background-color 300ms ease-in-out;
	}

	.menu_close:focus,
	.menu_close:hover,
	.menu_close:active {
		background-color: var(--white);
	}

	.menu_close svg {
		stroke: var(--white);
		transition: stroke 300ms ease-in-out;
	}

	.menu_close:focus svg,
	.menu_close:hover svg,
	.menu_close:active svg {
		stroke: var(--blue);
	}

	.menu_active .menu_open {
		visibility: hidden;
	}

	.menu_active .navigation {
		visibility: visible;
		transform: translateX(300px);
	}
}

/* Hero */
.hero {
	max-width: 100rem;
	padding: 2rem 0;
	margin: 0 auto;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: clamp(1rem, 2vw, 2rem);
}

.hero_item {
	position: relative;
}

.hero_item .meta {
	display: flex;
	flex-flow: row nowrap;
	justify-content: space-between;
	align-items: center;
	padding: clamp(1.25rem, 3vw, 2rem);
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	background-color: rgba(60, 61, 148, 85%);
	color: var(--white);
}

.hero time {
	display: block;
	text-transform: uppercase;
	letter-spacing: 1px;
	line-height: 1;
}

.hero .secondary_heading {
	margin: 1rem 0;
	font-size: 1.25rem;
	line-height: 1.1;
}

.hero .project_links a {
	font-size: 0.9rem;
	color: var(--white);
	text-decoration-color: var(--white);
	transition: text-decoration-color 300ms ease-in-out;
}

.hero .project_links li::after {
	color: var(--gray);
}

.hero .project_links a:focus,
.hero .project_links a:hover,
.hero .project_links a:active {
	text-decoration-color: transparent;
}

.hero_button {
	padding: 1rem;
	border-radius: 50%;
	border: 2px solid var(--white);
	background-color: rgba(255, 255, 255, 25%);
	transition: background-color 300ms ease-in-out;
}

.hero_button:focus,
.hero_button:hover,
.hero_button:active {
	background-color: var(--white);
}

.hero_button svg {
	width: 1rem;
	height: 1rem;
	stroke: var(--white);
	transition: stroke 300ms ease-in-out;
}

.hero_button:focus svg,
.hero_button:hover svg,
.hero_button:active svg {
	stroke: var(--blue);
}

.hero .figure {
	width: 100%;
	height: auto;
	aspect-ratio: 1;
}

.hero img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

@media (max-width: 960px) {
	.hero {
		padding: 0;
		grid-template-columns: 1fr;
	}

	.hero .secondary_heading {
		margin: 0.5rem 0 0.75rem;
	}
}

/* Article Items */
.portfolio_item {
	display: flex;
	flex-flow: row nowrap;
	justify-content: space-between;
	align-items: center;
	gap: 2rem;
	padding: 0 0 2rem;
	margin: 0 0 2rem;
	border-bottom: 1px solid var(--gray);
}

.portfolio_item:last-of-type {
	padding: 0;
	margin: 0;
	border-bottom: none;
}

.sidebar .portfolio_item {
	border-bottom: none;
}

.portfolio_item .figure {
	width: 325px;
	height: 100%;
	aspect-ratio: 1;
	box-shadow: 0 0 2px 2px rgba(0, 0, 0, 10%);
}

.portfolio_item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.portfolio_wrap {
	width: calc(100% - 325px - 2rem);
}

.portfolio_meta .category {
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--gold);
}

.portfolio_meta .secondary_heading {
	margin: 0.5rem 0 1rem;
}

.meta_date_author {
	display: flex;
	flex-flow: row nowrap;
	justify-content: flex-start;
	align-items: center;
	color: var(--mid-gray);
}

.meta_date_author time::after {
	content: "•";
	margin: 0 0.5rem;
}

.portfolio_desc::before {
	content: "";
	display: block;
	width: 70px;
	padding: 1rem 0 0;
	border-top: 2px solid var(--gold);
}

@media (max-width: 960px) {
	.portfolio_item {
		gap: 1rem;
	}

	.portfolio_wrap {
		width: calc(100% - 325px - 1rem);
	}
}

@media (max-width: 768px) {
	.portfolio_item {
		flex-direction: column;
	}

	.portfolio_item .figure {
		width: 100%;
		aspect-ratio: 16 / 9;
	}

	.portfolio_wrap {
		width: 100%;
	}
}

/* Click to Load Video */
.yt_video .figure {
	width: 100%;
	height: 100%;
	aspect-ratio: 16 / 9;
}

.shorts .yt_video .figure {
	aspect-ratio: 9 / 16;
}

.yt_video-container {
	position: relative;
	width: 100%;
	height: 100%;
	z-index: 0;
}

.yt_video-container img {
	position: absolute;
	inset: 0;
	opacity: 1;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: 2;
	transition: opacity 750ms ease-in-out;
}

.yt_video-container img.yt_fade {
	opacity: 0;
}

.yt_iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: none;
	z-index: 1;
}

.play_button {
	padding: 1rem;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	background-color: rgba(255, 255, 255, 35%);
	border-radius: 50%;
	border: 2px solid var(--white);
	z-index: 3;
	transition: background-color 300ms ease-in-out;
}

.play_button:focus,
.play_button:hover,
.play_button:active {
	background-color: rgba(255, 255, 255, 100%);
}

.play_button svg {
	transform: translateX(3px);
}

/* Sidebar */
.sidebar ul {
	padding: 0;
	margin: 0;
	list-style-type: none;
}

.sidebar li {
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--mid-gray);
	padding: 0 0 0.5rem;
	margin: 0 0 0.5rem;
	border-bottom: 3px dotted var(--lt-blue);
}

.sidebar li:last-of-type {
	border-bottom: none;
}

.sidebar li span {
	color: var(--gold);
}

/* Footer */
.footer {
	padding: 3rem 1rem;
	color: var(--white);
	background-image: linear-gradient(to right, var(--blue), var(--lt-blue));
}

.footer .primary_logo {
	font-size: 2rem;
}

.footer .button_icon {
	border: 2px solid var(--blue);
	background-color: transparent;
	transition: background-color 300ms ease-in-out;
}

.footer .button_icon:focus,
.footer .button_icon:hover,
.footer .button_icon:active {
	background-color: var(--gold);
}

.footer .button_icon svg {
	fill: var(--gray);
}

.footer .button_icon:focus svg,
.footer .button_icon:hover svg,
.footer .button_icon:active svg {
	fill: var(--white);
}

.footer a {
	color: var(--white);
	text-decoration-color: var(--white);
	transition: text-decoration-color 300ms ease-in-out;
}

.footer a:focus,
.footer a:hover,
.footer a:active {
	text-decoration-color: transparent;
}

.footer .social_navigation {
	display: block;
}

.top_footer {
	max-width: 100rem;
	padding: 0 0 3rem;
	margin: 0 auto;
	display: flex;
	flex-flow: row nowrap;
	justify-content: space-between;
	align-items: center;
	gap: 0;
}

.bottom_footer {
	text-align: center;
	letter-spacing: 0.5px;
	padding: 2rem 0 0;
}

@media (max-width: 960px) {
	.top_footer {
		text-align: center;
		flex-direction: column;
		gap: 1rem;
	}

	.bottom_footer a + span {
		display: block;
	}
}

*[hidden] {
	display: none;
}
