* {
	box-sizing: border-box;
	margin: 0;
	padding: 0
}

html,
body {
	min-height: 100%;
	background: #f47b35;
}

body {
	display: flex;
	justify-content: center;
	overflow-x: hidden;
	font-family: Arial, sans-serif;
	color: #3c2a20;
	-webkit-tap-highlight-color: transparent
}

button,
button:focus,
button:active {
	outline: none;
	box-shadow: none;
	-webkit-tap-highlight-color: transparent
}

.box {
	--progress: 0%;
	position: relative;
	width: min(100vw, calc(100svh * 2431 / 3675));
	min-height: 100svh;
	aspect-ratio: 2431/3675;
	background: url('../img/bg.webp') center/cover no-repeat;
	overflow: hidden
}

.title {
	position: absolute;
	left: 12.79%;
	top: 5.52%;
	width: 71.62%;
	opacity: 0;
	animation: title-in 2.4s cubic-bezier(.22, .61, .36, 1) .25s forwards;
	will-change: opacity, transform
}

@keyframes title-in {
	from { opacity: 0; transform: translateY(-1.2%) }
	to { opacity: 1; transform: translateY(0) }
}

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

.record-box {
	position: absolute;
	left: 50%;
	top: 24.8%;
	width: 71.75%;
	aspect-ratio: 1;
	transform: translateX(-50%)
}

.record {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	will-change: transform
}

.tonearm {
	position: absolute;
	right: 12.65%;
	top: 0;
	width: 13.7%;
	transform: rotate(-12deg);
	transform-origin: 50% 8%;
	transition: transform 1.2s cubic-bezier(.4, 0, .2, 1);
	will-change: transform
}

.playing .tonearm {
	transform: rotate(0deg)
}

.player {
	position: absolute;
	left: 0;
	right: 0;
	top: 76%;
	text-align: center;
	transform: scale(1.4);
	transform-origin: center top
}

.name {
	display: block;
	width: 29.08%;
	margin: 0 auto 2.6%
}

.timeline {
	width: 57.8%;
	margin: auto;
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	column-gap: 2.8%;
	row-gap: 0
}

.timeline time {
	font-size: clamp(8px, 1.05vw, 15px);
	font-variant-numeric: tabular-nums
}

.timeline button {
	position: relative;
	height: 24px;
	border: 0;
	background: transparent
}

.timeline button:before,
.timeline button span {
	content: '';
	position: absolute;
	left: 0;
	top: 50%;
	height: 2px;
	transform: translateY(-50%);
	background: #3c2a20
}

.timeline button:before {
	width: 100%;
	opacity: .7
}

.timeline button span {
	width: var(--progress)
}

.timeline button span:after {
	content: '';
	position: absolute;
	right: -4px;
	top: 50%;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #3c2a20;
	transform: translateY(-50%)
}

.controls {
	position: relative;
	width: 46.28%;
	aspect-ratio: 1125 / 205;
	margin: .8% auto 0
}


.controls>img,
.controls>button {
	position: absolute;
	display: block;
	height: auto;
	margin: 0
}

.controls .loop-toggle { position: absolute; left: 0; top: 33.17%; width: 7.66%; height: auto; padding: 0; border: 0; background: transparent; aspect-ratio: auto }
.controls .loop-toggle img { width: 100%; transition: opacity .2s ease }
.controls .loop-toggle:not(.is-on) img { opacity: .35 }


.controls>img:nth-child(2) { left: 24.44%; top: 33.17%; width: 5.62% }
.controls>#toggle {
	left: 41.02%;
	top: 0;
	width: 18.22%;
	aspect-ratio: 1;
	border: 0;
	background: transparent
}

.controls>img:nth-child(4) { left: 70.93%; top: 33.17%; width: 5.31% }
.controls>img:nth-child(5) { left: 93.6%; top: 33.17%; width: 6.4% }

.controls button img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain
}
