@charset "UTF-8";

/* ==========================================================================
   Tokens
   ========================================================================== */
:root {
	--gray-header: #5D5E5D;
	--gray-footer: #717070;
	--gray-body: #717070;
	--gray-footer-dark: #5D5E5D;
	--white: #FFFFFF;
	--accent: #6DC7D0;
	--overlay: rgba(40, 41, 40, 0.82);
	--font: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, sans-serif;
	--gallery-min: 320px;
}

/* ==========================================================================
   Base
   ========================================================================== */
*,
*::before,
*::after {
	box-sizing: border-box;
}

body {
	margin: 0;
	font-family: var(--font);
	background-color: var(--gray-body);
	color: var(--white);
}

img,
video {
	display: block;
	max-width: 100%;
}

a {
	color: inherit;
	text-decoration: none;
}

a:focus-visible {
	outline: 3px solid var(--accent);
	outline-offset: -3px;
}

/* ==========================================================================
   1. Header: profile image (20% width, left) + dropdown menu (top right)
   ========================================================================== */
.site-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	background-color: var(--gray-header);
}

.profile-link {
	display: block;
	width: 50%;
	min-width: 120px;
}

.profile {
	width: 100%;
	height: auto;
}

.nav-menu {
	position: relative;
}

.nav-toggle {
	display: block;
	padding: 20px 28px;
	font-size: 18px;
	font-weight: bold;
	letter-spacing: 2px;
	text-transform: uppercase;
	cursor: pointer;
	background: transparent;
	border: 0;
	color: var(--white);
	font-family: inherit;
}

.nav-icon {
	width: 8vw;
	min-width: 48px;
	height: auto;
}

.nav-links {
	position: absolute;
	top: 100%;
	right: 0;
	min-width: 200px;
	margin: 0;
	padding: 0;
	list-style: none;
	background-color: var(--gray-header);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
	z-index: 10;
}

.nav-menu:hover .nav-links,
.nav-menu:focus-within .nav-links {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.nav-links a {
	display: block;
	padding: 14px 28px;
	text-align: right;
	text-transform: uppercase;
	letter-spacing: 2px;
	transition: background-color 0.2s linear;
}

.nav-links a:hover,
.nav-links a:focus-visible {
	background-color: var(--accent);
}

/* ==========================================================================
   2. Demo reel
   ========================================================================== */
.reel {
	background-color: #000;
}

.reel a {
	display: block;
	position: relative;
	max-width: 2560px;
	margin: 0 auto;
}

/* Image that fades in over the reel on mouse hover (or keyboard focus) */
.reel-rollover {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s ease;
}

.reel a:hover .reel-rollover,
.reel a:focus-visible .reel-rollover {
	opacity: 1;
}

.reel video {
	width: 100%;
	height: auto;
	max-width: 2560px;
	margin: 0 auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

/* ==========================================================================
   3. Gallery
   ========================================================================== */
.gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(var(--gallery-min), 1fr));
	gap: 0;
}

.thumbnail {
	position: relative;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background-color: #000;
}

.thumbnail a {
	display: block;
	width: 100%;
	height: 100%;
}

.thumbnail video {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.thumbnail-caption {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	background-color: var(--overlay);
	font-size: 20px;
	font-weight: bold;
	letter-spacing: 2px;
	text-align: center;
	text-transform: uppercase;
	opacity: 0;
	transition: opacity 0.3s ease;
}

.thumbnail a:hover .thumbnail-caption,
.thumbnail a:focus-visible .thumbnail-caption {
	opacity: 1;
}

/* Touch screens have no hover: show the title in a gray band covering the
   lower 50% of each thumbnail, with the text centered in the band */
@media (hover: none) {
	.thumbnail-caption {
		top: auto;
		bottom: 0;
		height: 50%;
		align-items: center;
		justify-content: center;
		text-align: center;
		padding: 10px;
		font-size: 14px;
		opacity: 1;
	}
}

/* ==========================================================================
   Demo reel page (demoreel.html): video with the description below it
   ========================================================================== */
.demo {
	display: grid;
	grid-template-columns: 1fr; /* single column: video, then description */
	max-width: 2560px;
	margin: 0 auto;
	background-color: #000;
}

.demo-video {
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	background-color: #000;
}

/* Always below the video: full video width, fixed 300px tall, text scrolls inside */
.description {
	position: relative;
	width: 100%;
	height: 300px;
	background-color: var(--gray-header);
}

.description-scroll {
	position: absolute;
	inset: 0;
	overflow-y: auto;
	padding: 10px;
	line-height: 1.6;
}

.description-scroll h2 {
	margin: 0 0 20px;
	font-size: 22px;
	letter-spacing: 2px;
	text-transform: uppercase;
}

.description-scroll p {
	margin: 0 0 16px;
	font-weight: lighter;
}

/* ==========================================================================
   4. Footer
   ========================================================================== */
.site-footer {
	background-color: var(--gray-footer);
	text-align: center;
}

.contact {
	padding: 10px 20px;
	background-color: #B3B3B3;
}

.button {
	display: block;
	width: 200px;
	margin: 0 auto;
	padding: 20px 10px;
	border: 3px solid var(--white);
	font-weight: bold;
	letter-spacing: 2px;
	text-align: center;
	text-transform: uppercase;
	transition: background-color 0.3s linear;
}

.button:hover,
.button:focus-visible {
	background-color: var(--accent);
}

.copyright {
	margin: 0;
	padding: 20px;
	font-weight: lighter;
	letter-spacing: 2px;
	text-transform: uppercase;
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 480px) {
	:root {
		--gallery-min: 160px;
	}

	.profile-link {
		width: 30%;
	}

	.nav-icon {
		width: 12vw;
	}

	.thumbnail-caption {
		font-size: 12px;
	}
}

@media (prefers-reduced-motion: reduce) {
	* {
		transition: none !important;
	}
}
