:root {
	--bg: #0a0a0b;
	--fg: #d9dadc;
	--fg-dim: #8a8d91;
	--accent: #ffffff;
	--accent-dim: #333336;
	--amber: #aeb1b5;
	--rule: #202022;
	--glow: rgba(255, 255, 255, 0.3);
}

html {
	scrollbar-gutter: stable both-edges;
}

/* Global styles */
body {
	font-family: Consolas, monospace;
	margin: 0;
	padding: 0;
	background-color: var(--bg);
	color: var(--fg);
}

body::after {
	content: "";
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 2;
	background: repeating-linear-gradient(
		to bottom,
		rgba(255, 255, 255, 0.025) 0px,
		rgba(255, 255, 255, 0.025) 1px,
		transparent 1px,
		transparent 3px
	);
}

#rain {
	position: fixed;
	inset: 0;
	z-index: 0;
	display: block;
	width: 100vw;
	height: 100vh;
}

.container {
	position: relative;
	z-index: 1;
	background-color: var(--bg);
	margin: 0 auto;
	max-width: 800px;
	padding: 1em;
}

header {
	color: var(--accent);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.75em;
	padding: 1em;
}

header h1 {
	text-shadow: 0 0 12px var(--glow);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.6em;
}

nav li {
	margin: 0;
}

nav a {
	color: var(--fg);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	font-size: 0.9em;
	transition: color 0.2s ease;
}

nav a:hover {
	color: var(--amber);
}

main {
	padding: 1em;
}

footer {
	background-color: transparent;
	color: var(--accent-dim);
	padding: 1em;
	text-align: center;
	border-top: 1px solid var(--rule);
}

footer p {
	font-size: 0.7em;
}

/* Brand mark (logo.mp4) — reusable wherever it appears */
.brand-mark {
	--mark-w: 120px;
	position: relative;
	display: inline-block;
	width: var(--mark-w);
	line-height: 0;
	flex-shrink: 0;
	animation: mark-in 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) both;
}

.brand-mark-nav {
	--mark-w: clamp(180px, 42vw, 340px);
}

.brand-mark-video {
	display: block;
	width: 100%;
	height: auto;
}

@keyframes mark-in {
	0% { opacity: 0; transform: scale(1.12) translateY(6px); filter: blur(2px); }
	100% { opacity: 1; transform: none; filter: none; }
}

@media (prefers-reduced-motion: reduce) {
	.brand-mark { animation: none; }
}

/* Styles specific to the home page */
main h2 {
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

main > *:first-child {
	margin-top: 0;
}

.video-embed {
	box-sizing: border-box;
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	margin: 1em 0 1.5em;
	border: 1px solid var(--accent-dim);
	background-color: rgba(0, 0, 0, 0.4);
}

.video-embed iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.live-badge {
	display: inline-block;
	margin-bottom: 0.5em;
	padding: 0.3em 0.8em;
	border: 1px solid var(--accent);
	color: var(--accent);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	font-size: 0.85em;
	animation: live-pulse 1.6s ease-in-out infinite;
}

@keyframes live-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.45; }
}

@media (prefers-reduced-motion: reduce) {
	.live-badge { animation: none; }
}

.mixcloud-embed {
	margin: 0 0 1.5em;
	border: 1px solid var(--accent-dim);
}

.mixcloud-embed iframe {
	display: block;
	width: 100%;
	height: 120px;
	border: 0;
}

.cta-btn {
	display: inline-block;
	margin-top: 0.75em;
	padding: 0.6em 1.2em;
	border: 1px solid var(--accent-dim);
	color: var(--fg);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	font-size: 0.9em;
	transition: border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.cta-btn:hover {
	border-color: var(--accent);
	color: var(--accent);
	box-shadow: 0 0 10px var(--glow);
}

.cursor {
	display: inline-block;
	width: 0.55em;
	height: 1em;
	background: var(--accent);
	margin-left: 0.15em;
	vertical-align: -0.15em;
	animation: blink 1s steps(1) infinite;
}

@keyframes blink {
	50% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.cursor { animation: none; opacity: 0.6; }
}

/* Styles specific to the about page */
.about-section {
	display: flex;
	flex-direction: row;
}

.about-section img {
	width: 50%;
	margin-right: 1em;
}

.residents {
	margin-top: 1.5em;
	display: flex;
	flex-direction: column;
	gap: 1em;
}

.resident {
	display: flex;
	align-items: center;
	gap: 1em;
	text-align: left;
	padding: 1em;
	border: 1px solid var(--accent-dim);
	transition: border-color 0.2s ease;
}

.resident:hover {
	border-color: var(--accent);
}

.resident-photo {
	width: 80px;
	height: 80px;
	flex-shrink: 0;
	border: 1px solid var(--accent-dim);
}

.resident-info {
	flex: 1 1 auto;
	text-align: left;
}

.resident-name {
	color: var(--fg);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	font-weight: bold;
	border-bottom: 1px solid var(--accent-dim);
	transition: color 0.2s ease, border-color 0.2s ease;
}

.resident-name:hover {
	color: var(--accent);
	border-color: var(--accent);
}

@media only screen and (max-width: 480px) {
	.resident-photo {
		width: 64px;
		height: 64px;
	}
}

.borderlist {
	border: 1px solid var(--accent-dim);
	border-radius: 5px;
	padding: 5px;
	list-style-position: inside;
	transition: border-color 0.2s ease;
}

.borderlist:hover {
	border-color: var(--accent);
}

.borderlist.active {
	border-color: var(--accent);
	background-color: rgba(255, 255, 255, 0.08);
}

.borderlist.active a {
	color: var(--accent);
}

/* Styles specific to the contact page */
form label {
	display: block;
	margin-bottom: 0.5em;
}

form input, form textarea {
	display: block;
	width: 100%;
	box-sizing: border-box;
	margin-bottom: 1em;
	padding: 0.5em;
	font-family: Consolas, monospace;
	background-color: rgba(0, 0, 0, 0.4);
	border: 1px solid var(--accent-dim);
	color: var(--fg);
	caret-color: var(--accent);
}

form textarea {
	resize: none;
}

form input:focus, form textarea:focus {
	outline: none;
	border-color: var(--accent);
	box-shadow: 0 0 8px var(--glow);
}

form fieldset {
	border: 1px solid var(--accent-dim);
	min-width: 0;
	box-sizing: border-box;
	padding: 1em;
}

form input[type="submit"] {
	background-color: var(--accent-dim);
	color: var(--fg);
	border: none;
	padding: 0.5em 1em;
	cursor: pointer;
	width: auto;
}

form input[type="submit"]:hover {
	background-color: var(--accent);
	color: var(--bg);
}

.social-links {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 1em;
	margin-bottom: 0.75em;
}

.social-links a {
	color: var(--fg-dim);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-size: 0.85em;
	transition: color 0.2s ease;
}

.social-links a:hover {
	color: var(--accent);
}

.soundcloud-embed {
	box-sizing: border-box;
	width: 100%;
	margin: 1em 0 1.5em;
	border: 1px solid var(--accent-dim);
}

.soundcloud-embed iframe {
	display: block;
	width: 100%;
	height: 420px;
	border: 0;
}

@media only screen and (max-width: 480px) {
	.soundcloud-embed iframe {
		height: 300px;
	}
}

/* Styles specific to the events page */
main h2:not(:first-child) {
	margin-top: 2em;
}

.events-list {
	margin-bottom: 1em;
}

.event-card {
	display: flex;
	align-items: flex-start;
	gap: 1em;
	padding: 1em;
	margin-bottom: 0.75em;
	border: 1px solid var(--accent-dim);
	transition: border-color 0.2s ease;
}

.event-card:hover {
	border-color: var(--accent);
}

.event-card-image {
	width: 90px;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border: 1px solid var(--accent-dim);
	flex-shrink: 0;
}

@media only screen and (max-width: 480px) {
	.event-card-image {
		width: 64px;
	}
}

.event-card-body {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.5em 1em;
}

.event-card-date {
	color: var(--fg-dim);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-size: 0.85em;
	flex-basis: 100%;
}

.event-card-title {
	font-weight: bold;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.event-card-artists {
	flex-basis: 100%;
	color: var(--fg-dim);
	font-size: 0.85em;
}

.event-card-venue {
	color: var(--fg-dim);
}

.event-card-notes {
	flex-basis: 100%;
	color: var(--fg-dim);
	font-size: 0.9em;
}

.event-card-tickets {
	color: var(--accent);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	font-size: 0.85em;
	border: 1px solid var(--accent-dim);
	padding: 0.3em 0.7em;
}

.event-card-tickets:hover {
	border-color: var(--accent);
}

.events-empty {
	color: var(--fg-dim);
	text-align: center;
	padding: 2em 0;
}

@media only screen and (max-width: 600px) {
	.nav-container {
	  display: flex;
	  flex-wrap: wrap;
	}
}

@media only screen and (max-width: 480px) {
	.container {
		padding: 0.75em;
	}

	main {
		padding: 0.75em;
	}
}
