/* ---------- Soulstatic intro ---------- */

:root {
	--ss-yellow: #F7D417;
}

html.ss-intro-active,
html.ss-intro-active body {
	overflow: hidden;
}

.ss-intro {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #000;
	overflow: hidden;
	cursor: pointer;
	transition: opacity .9s ease, visibility 0s linear .9s;
}

.ss-intro.is-out {
	opacity: 0;
	visibility: hidden;
}

.ss-intro__mark {
	--cap: .72em; /* replaced with the real cap height by intro.js */
	position: relative;
	isolation: isolate;
	white-space: nowrap;
	font-family: 'Archivo', 'Arial Black', sans-serif;
	font-weight: 900;
	font-stretch: 125%;
	font-size: min(10vw, 150px);
	line-height: 1;
	letter-spacing: -.01em;
	color: #fff;
	user-select: none;
}

/* letters */
.ss-l {
	position: relative;
	z-index: 2;
	display: inline-block;
	opacity: 0;
	filter: blur(8px);
	transition: opacity .8s ease, filter .8s ease;
}

.ss-intro.is-playing .ss-l {
	opacity: 1;
	filter: blur(0);
}

/* the "O" slot: exactly cap height tall, sitting on the baseline */
.ss-o {
	--adapter: calc(var(--cap) * 1.22);
	position: relative;
	display: inline-block;
	width: var(--adapter);
	height: var(--cap);
	margin: 0 .03em;
	vertical-align: baseline;
}

.ss-adapter,
.ss-record {
	position: absolute;
	left: 50%;
	top: 50%;
	opacity: 0;
}

/* yellow 45 adapter */
.ss-adapter {
	z-index: 3;
	width: var(--adapter);
	height: var(--adapter);
	margin: calc(var(--adapter) / -2) 0 0 calc(var(--adapter) / -2);
	transform: scale(.7);
	transition: opacity 1s ease, transform 1.2s cubic-bezier(.2, .9, .3, 1.2);
}

.ss-adapter svg,
.ss-record__spin svg {
	display: block;
	width: 100%;
	height: 100%;
	animation: ss-spin 1.333s linear infinite; /* 45 rpm */
}

.ss-intro.is-adapter .ss-adapter {
	opacity: 1;
	transform: scale(1);
}

/* the record (a 7" is ~4.67x the 1.5" center hole) */
.ss-record {
	--record: calc(var(--adapter) * 4.67);
	z-index: 0;
	width: var(--record);
	height: var(--record);
	margin: calc(var(--record) / -2) 0 0 calc(var(--record) / -2);
	transform: scale(.88);
	transition: opacity 1.6s ease, transform 1.8s cubic-bezier(.2, .8, .2, 1);
}

.ss-intro.is-record .ss-record {
	opacity: 1;
	transform: scale(1);
}

.ss-record__spin {
	position: absolute;
	inset: 0;
}

.ss-record__label {
	font-family: 'Archivo', 'Arial Black', sans-serif;
	font-weight: 900;
	font-size: 34px;
	letter-spacing: 6px;
}

/* light reflection - stays still while the record turns */
.ss-record__sheen {
	position: absolute;
	inset: 0;
	border-radius: 50%;
	pointer-events: none;
	background: conic-gradient(from 20deg,
		transparent 0deg, rgba(255,255,255,.09) 28deg, transparent 60deg,
		transparent 180deg, rgba(255,255,255,.07) 208deg, transparent 240deg);
	-webkit-mask: radial-gradient(circle, transparent 26%, #000 27%);
	mask: radial-gradient(circle, transparent 26%, #000 27%);
}

.ss-intro__skip {
	position: absolute;
	bottom: 24px;
	left: 50%;
	transform: translateX(-50%);
	font-family: 'Roboto', sans-serif;
	font-size: 11px;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: rgba(255,255,255,.35);
}

/* reveal: letters and caption drop out as the record pops */
.ss-intro.is-revealing {
	cursor: default;
}

.ss-intro.is-revealing .ss-l {
	opacity: 0;
	filter: blur(6px);
	transition: opacity .35s ease, filter .35s ease;
}

.ss-intro.is-revealing .ss-intro__skip {
	opacity: 0;
	transition: opacity .3s ease;
}

@keyframes ss-spin {
	to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
	.ss-l,
	.ss-adapter,
	.ss-record {
		transition-duration: .4s;
		transition-delay: 0s !important;
		filter: none;
	}
	.ss-adapter svg,
	.ss-record__spin svg {
		animation: none;
	}
}
