/*
|--------------------------------------------------------------------------
| Nicole Moudaber — Shows
|--------------------------------------------------------------------------
*/

.nm-shows,
.nm-shows * {
	box-sizing: border-box;
}


.nm-shows {
	width: min(100% - 64px, 1600px);

	margin: 0 auto;
	padding:
		clamp(70px, 7vw, 120px)
		0
		clamp(140px, 16vw, 260px);

	color: #fff;
}


/*
|--------------------------------------------------------------------------
| Header
|--------------------------------------------------------------------------
*/

.nm-shows__header {
	margin-bottom: clamp(72px, 9vw, 140px);
}


.nm-shows__eyebrow {
	margin-bottom: 14px;

	font-size: 10px;
	line-height: 1;
	letter-spacing: 0.24em;

	opacity: 0.48;
}


.nm-shows__title {
	margin: 0;

	font-size: clamp(72px, 12vw, 190px);
	font-weight: 400;
	line-height: 0.82;
	letter-spacing: -0.065em;

	text-transform: uppercase;
}


/*
|--------------------------------------------------------------------------
| Show list
|--------------------------------------------------------------------------
*/

.nm-shows__list {
	border-top: 1px solid rgba(255, 255, 255, 0.19);
}


.nm-show {
	display: grid;
	grid-template-columns:
		clamp(150px, 14vw, 230px)
		minmax(0, 1fr)
		auto;
	gap: clamp(30px, 4vw, 70px);
	align-items: center;

	min-height: clamp(170px, 15vw, 240px);

	padding:
		clamp(32px, 4vw, 58px)
		0;

	border-bottom: 1px solid rgba(255, 255, 255, 0.19);
}


/*
|--------------------------------------------------------------------------
| Date
|--------------------------------------------------------------------------
*/

.nm-show__date {
	align-self: center;
}


.nm-show__month {
	margin-bottom: 2px;

	font-size: clamp(11px, 0.9vw, 14px);
	line-height: 1;
	letter-spacing: 0.18em;

	opacity: 0.54;
}


.nm-show__day {
	font-size: clamp(58px, 6.4vw, 106px);
	font-weight: 400;
	line-height: 0.9;
	letter-spacing: -0.065em;
}


.nm-show__year {
	margin-top: 8px;

	font-size: 10px;
	line-height: 1;
	letter-spacing: 0.16em;

	opacity: 0.42;
}


/*
|--------------------------------------------------------------------------
| Event
|--------------------------------------------------------------------------
*/

.nm-show__content {
	min-width: 0;
}


.nm-show__venue {
	max-width: 1050px;

	margin: 0;

	font-size: clamp(30px, 4.5vw, 74px);
	font-weight: 400;
	line-height: 0.96;
	letter-spacing: -0.045em;
}


.nm-show__event-title {
	margin-top: 12px;

	font-size: clamp(11px, 1vw, 15px);
	letter-spacing: 0.08em;
	text-transform: uppercase;

	opacity: 0.52;
}


.nm-show__location {
	margin-top: 15px;

	font-size: clamp(11px, 1vw, 14px);
	line-height: 1.4;
	letter-spacing: 0.06em;

	opacity: 0.5;
}


/*
|--------------------------------------------------------------------------
| Tickets
|--------------------------------------------------------------------------
*/

.nm-show__action {
	align-self: center;
}


.nm-show__ticket {
	display: inline-flex;
	align-items: center;
	gap: 12px;

	padding: 16px 0;

	color: inherit;

	font-size: 10px;
	line-height: 1;
	letter-spacing: 0.19em;
	text-decoration: none;

	opacity: 0.55;

	transition:
		opacity 150ms ease,
		transform 150ms ease;
}


.nm-show__ticket-arrow {
	font-size: 21px;
	line-height: 1;

	transition: transform 150ms ease;
}


.nm-show__ticket:hover,
.nm-show__ticket:focus-visible {
	opacity: 1;
}


.nm-show__ticket:hover
.nm-show__ticket-arrow,
.nm-show__ticket:focus-visible
.nm-show__ticket-arrow {
	transform: translate(4px, -4px);
}


/*
|--------------------------------------------------------------------------
| Row interaction
|--------------------------------------------------------------------------
*/

.nm-show {
	transition:
		background-color 180ms ease,
		padding-right 180ms ease,
		padding-left 180ms ease;
}


.nm-show:hover {
	padding-right: 22px;
	padding-left: 22px;

	background: rgba(255, 255, 255, 0.025);
}


/*
|--------------------------------------------------------------------------
| Empty state
|--------------------------------------------------------------------------
*/

.nm-shows__empty {
	width: min(100% - 64px, 1600px);

	margin: 0 auto;
	padding: 180px 0;

	font-size: 18px;

	opacity: 0.55;
}


/*
|--------------------------------------------------------------------------
| Tablet
|--------------------------------------------------------------------------
*/

@media (max-width: 900px) {

	.nm-shows {
		width: calc(100% - 40px);

		padding-top: 80px;
	}


	.nm-show {
		grid-template-columns:
			110px
			minmax(0, 1fr)
			auto;

		gap: 24px;
	}


	.nm-show:hover {
		padding-right: 0;
		padding-left: 0;

		background: transparent;
	}

}


/*
|--------------------------------------------------------------------------
| Mobile
|--------------------------------------------------------------------------
*/

@media (max-width: 640px) {

	.nm-shows {
		width: calc(100% - 28px);

		padding:
			70px
			0
			160px;
	}


	.nm-shows__header {
		margin-bottom: 64px;
	}


	.nm-shows__eyebrow {
		font-size: 8px;
	}


	.nm-shows__title {
		font-size: clamp(58px, 22vw, 100px);
	}


	.nm-show {
		grid-template-columns:
			76px
			minmax(0, 1fr);

		gap: 16px;

		min-height: 0;

		padding: 30px 0;
	}


	.nm-show__month {
		font-size: 8px;
	}


	.nm-show__day {
		font-size: 44px;
	}


	.nm-show__year {
		margin-top: 5px;

		font-size: 8px;
	}


	.nm-show__venue {
		font-size: clamp(24px, 7.5vw, 34px);
		line-height: 1;
	}


	.nm-show__event-title {
		margin-top: 9px;

		font-size: 8px;
	}


	.nm-show__location {
		margin-top: 9px;

		font-size: 9px;
	}


	.nm-show__action {
		grid-column: 2;

		margin-top: -8px;
	}


	.nm-show__ticket {
		padding: 10px 0;

		font-size: 8px;
	}


	.nm-show__ticket-arrow {
		font-size: 16px;
	}

}


/*
|--------------------------------------------------------------------------
| Reduced motion
|--------------------------------------------------------------------------
*/

@media (prefers-reduced-motion: reduce) {

	.nm-show,
	.nm-show__ticket,
	.nm-show__ticket-arrow {
		transition: none;
	}

}
