.audioarchive-custom-player
{
	--audioarchive-player-accent: #0d6efd;
	--audioarchive-player-background: #f8f9fa;
	--audioarchive-player-border: color-mix(in srgb, var(--audioarchive-player-text) 18%, transparent);
	--audioarchive-player-button-size: 54px;
	--audioarchive-player-muted: color-mix(in srgb, var(--audioarchive-player-text) 65%, transparent);
	--audioarchive-player-playhead: var(--audioarchive-waveform-played);
	--audioarchive-player-progress: 0%;
	--audioarchive-player-radius: 14px;
	--audioarchive-player-text: #212529;
	--audioarchive-frequency-profile-background: #111827;
	--audioarchive-frequency-profile-fill: #0d6efd;
	--audioarchive-frequency-profile-grid: #94a3b8;
	--audioarchive-frequency-profile-line: #8bb9fe;
	--audioarchive-waveform-height: 100px;
	--audioarchive-waveform-played: #0d6efd;
	--audioarchive-waveform-unplayed: #6c757d;
	width: 100%;
	min-width: 0;
	padding: 1rem;
	border: 1px solid var(--audioarchive-player-border);
	border-radius: var(--audioarchive-player-radius);
	background: var(--audioarchive-player-background);
	box-shadow: 0 .3rem 1.2rem color-mix(in srgb, #000 10%, transparent);
	color: var(--audioarchive-player-text);
}

.audioarchive-custom-player *,
.audioarchive-custom-player *::before,
.audioarchive-custom-player *::after
{
	box-sizing: border-box;
}

.audioarchive-custom-player-native
{
	display: block;
	width: 100%;
	max-width: 100%;
}

.audioarchive-custom-player-ui[hidden]
{
	display: none !important;
}

.audioarchive-custom-player-controls
{
	display: grid;
	grid-template-columns: var(--audioarchive-player-button-size) minmax(0, 1fr) auto;
	align-items: center;
	gap: 1rem;
	min-height: var(--audioarchive-player-button-size);
}

.audioarchive-custom-player-toggle
{
	display: inline-grid;
	place-items: center;
	width: var(--audioarchive-player-button-size);
	height: var(--audioarchive-player-button-size);
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--audioarchive-player-accent);
	box-shadow: 0 .28rem .8rem color-mix(in srgb, var(--audioarchive-player-accent) 36%, transparent);
	color: #fff;
	cursor: pointer;
	transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

.audioarchive-custom-player-toggle:hover
{
	filter: brightness(1.08);
	transform: translateY(-1px);
}

.audioarchive-custom-player-toggle:active
{
	transform: translateY(0) scale(.97);
}

.audioarchive-custom-player-toggle:focus-visible,
.audioarchive-custom-player-mute:focus-visible,
.audioarchive-custom-player input[type="range"]:focus-visible
{
	outline: .2rem solid color-mix(in srgb, var(--audioarchive-player-accent) 38%, transparent);
	outline-offset: .18rem;
}

.audioarchive-custom-player-toggle svg
{
	width: 42%;
	height: 42%;
	fill: currentColor;
}

.audioarchive-custom-player-toggle [data-audioarchive-icon-play]
{
	transform: translateX(.08rem);
}

.audioarchive-custom-player-main
{
	display: grid;
	gap: .42rem;
	min-width: 0;
}

.audioarchive-custom-player-times
{
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	font-size: .78rem;
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	line-height: 1;
	color: var(--audioarchive-player-muted);
}

.audioarchive-custom-player-seek
{
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
}

.audioarchive-custom-player-seek
{
	width: 100%;
	height: 1.35rem;
}

.audioarchive-custom-player-seek::-webkit-slider-runnable-track
{
	height: .42rem;
	border-radius: 999px;
	background: linear-gradient(
		to right,
		var(--audioarchive-player-accent) 0 var(--audioarchive-player-progress),
		var(--audioarchive-player-border) var(--audioarchive-player-progress) 100%
	);
}

.audioarchive-custom-player-seek::-moz-range-track
{
	height: .42rem;
	border-radius: 999px;
	background: var(--audioarchive-player-border);
}

.audioarchive-custom-player-seek::-moz-range-progress
{
	height: .42rem;
	border-radius: 999px;
	background: var(--audioarchive-player-accent);
}

.audioarchive-custom-player-seek::-webkit-slider-thumb
{
	-webkit-appearance: none;
	appearance: none;
	width: 1.05rem;
	height: 1.05rem;
	margin-top: -.315rem;
	border: .19rem solid #fff;
	border-radius: 50%;
	background: var(--audioarchive-player-accent);
	box-shadow: 0 .12rem .4rem color-mix(in srgb, #000 24%, transparent);
}

.audioarchive-custom-player-seek::-moz-range-thumb
{
	width: .72rem;
	height: .72rem;
	border: .19rem solid #fff;
	border-radius: 50%;
	background: var(--audioarchive-player-accent);
	box-shadow: 0 .12rem .4rem color-mix(in srgb, #000 24%, transparent);
}

.audioarchive-custom-player-seek:disabled
{
	cursor: wait;
	opacity: .58;
}

.audioarchive-custom-player-mute-controls
{
	display: flex;
	align-items: center;
}

.audioarchive-custom-player-mute
{
	display: inline-grid;
	place-items: center;
	width: 2.35rem;
	height: 2.35rem;
	padding: 0;
	border: 1px solid var(--audioarchive-player-border);
	border-radius: 50%;
	background: color-mix(in srgb, var(--audioarchive-player-text) 3%, transparent);
	color: inherit;
	cursor: pointer;
	transition: background-color .16s ease, border-color .16s ease;
}

.audioarchive-custom-player-mute:hover
{
	border-color: color-mix(in srgb, var(--audioarchive-player-accent) 55%, var(--audioarchive-player-border));
	background: color-mix(in srgb, var(--audioarchive-player-accent) 9%, transparent);
}

.audioarchive-custom-player-mute svg
{
	width: 1.15rem;
	height: 1.15rem;
	fill: currentColor;
}

.audioarchive-custom-player-analysis
{
	margin-top: .95rem;
	padding-top: .9rem;
	border-top: 1px solid var(--audioarchive-player-border);
}

.audioarchive-custom-player-analysis-switch
{
	display: inline-flex;
	gap: .15rem;
	padding: .18rem;
	border: 1px solid var(--audioarchive-player-border);
	border-radius: 999px;
	background: color-mix(in srgb, var(--audioarchive-player-text) 4%, transparent);
}

.audioarchive-custom-player-analysis-switch button
{
	padding: .28rem .72rem;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--audioarchive-player-muted);
	font: inherit;
	font-size: .78rem;
	font-weight: 700;
	cursor: pointer;
}

.audioarchive-custom-player-analysis-switch button.is-active
{
	background: var(--audioarchive-player-accent);
	color: #fff;
}

.audioarchive-custom-player-analysis-switch button:focus-visible
{
	outline: .2rem solid color-mix(in srgb, var(--audioarchive-player-accent) 38%, transparent);
	outline-offset: .12rem;
}

.audioarchive-custom-player-analysis-panel
{
	position: relative;
	margin-top: .65rem;
	overflow: hidden;
	border-radius: calc(var(--audioarchive-player-radius) * .55);
	background: color-mix(in srgb, var(--audioarchive-player-text) 5%, transparent);
	cursor: pointer;
}

.audioarchive-custom-player-analysis-panel[hidden]
{
	display: none !important;
}

.audioarchive-custom-player-waveform canvas,
.audioarchive-custom-player-spectrogram img,
.audioarchive-custom-player-frequency-profile canvas
{
	display: block;
	width: 100%;
	height: var(--audioarchive-waveform-height);
}

.audioarchive-custom-player-waveform-played
{
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.audioarchive-custom-player-spectrogram img
{
	object-fit: fill;
	background: #000;
}

.audioarchive-custom-player-frequency-profile
{
	background: var(--audioarchive-frequency-profile-background);
	cursor: default;
}

.audioarchive-custom-player-frequency-profile canvas
{
	background: var(--audioarchive-frequency-profile-background);
}

.audioarchive-custom-player-waveform-playhead,
.audioarchive-custom-player-spectrogram-playhead
{
	position: absolute;
	inset: 0 auto 0 0;
	width: 2px;
	transform: translateX(-1px);
	background: var(--audioarchive-player-playhead);
	box-shadow: 0 0 .35rem color-mix(in srgb, var(--audioarchive-player-playhead) 70%, transparent);
	pointer-events: none;
}

.audioarchive-custom-player-analysis-status
{
	position: absolute;
	inset: 50% auto auto 50%;
	margin: 0;
	transform: translate(-50%, -50%);
	font-size: .82rem;
	font-weight: 650;
	color: var(--audioarchive-player-muted);
}

.audioarchive-custom-player-spectrogram .audioarchive-custom-player-analysis-status
{
	padding: .25rem .5rem;
	border-radius: .35rem;
	background: rgb(0 0 0 / 58%);
	color: #fff;
}

.audioarchive-custom-player-frequency-profile .audioarchive-custom-player-analysis-status
{
	padding: .25rem .5rem;
	border-radius: .35rem;
	background: rgb(0 0 0 / 58%);
	color: #fff;
}

.audioarchive-custom-player-frequency-profile .audioarchive-custom-player-analysis-status.is-frequency-profile-summary
{
	inset: .4rem .45rem auto auto;
	transform: none;
	font-size: .68rem;
	font-weight: 650;
	pointer-events: none;
}

.audioarchive-custom-player.no-analysis
{
	padding-block: .9rem;
}

.audioarchive-custom-player.is-playing .audioarchive-custom-player-toggle
{
	box-shadow: 0 .3rem 1rem color-mix(in srgb, var(--audioarchive-player-accent) 52%, transparent);
}

.audioarchive-custom-player.has-error
{
	border-color: color-mix(in srgb, #b3261e 58%, var(--audioarchive-player-border));
}

.audioarchive-custom-player.has-error .audioarchive-custom-player-toggle
{
	background: #b3261e;
}

/* Minimal: the shared player reduced to its play/pause button. */
.audioarchive-custom-player--minimal.is-enhanced
{
	display: inline-block;
	width: auto;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	box-shadow: none;
}

.audioarchive-custom-player--minimal .audioarchive-custom-player-controls
{
	display: block;
	min-height: 0;
}

.audioarchive-custom-player--minimal.has-error
{
	border: 0;
}

/* Compact: a deliberately short, single-line player. */
.audioarchive-custom-player--compact
{
	padding: .48rem .6rem;
	box-shadow: 0 .16rem .55rem color-mix(in srgb, #000 8%, transparent);
}

.audioarchive-custom-player--compact .audioarchive-custom-player-controls
{
	grid-template-columns: var(--audioarchive-player-button-size) minmax(0, 1fr);
	gap: .65rem;
}

.audioarchive-custom-player--compact .audioarchive-custom-player-main
{
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: .55rem;
}

.audioarchive-custom-player--compact .audioarchive-custom-player-times
{
	justify-content: flex-end;
	gap: .18rem;
	white-space: nowrap;
	font-size: .72rem;
}

.audioarchive-custom-player--compact .audioarchive-custom-player-times span:first-child::after
{
	content: " / ";
}

/* Default: complete controls without analysis graphics. */
.audioarchive-custom-player--default.no-analysis,
.audioarchive-custom-player--featured.no-analysis
{
	padding-block: .9rem;
}

/* Featured: complete controls plus waveform or spectral analysis when available. */
.audioarchive-custom-player--featured.has-analysis
{
	padding-bottom: .85rem;
}

.mod-audioarchive-player--unified
{
	display: block;
	width: 100%;
}

@media (max-width: 42rem)
{
	.audioarchive-custom-player:not(.audioarchive-custom-player--minimal)
	{
		padding: .8rem;
	}

	.audioarchive-custom-player--default .audioarchive-custom-player-controls,
	.audioarchive-custom-player--featured .audioarchive-custom-player-controls
	{
		grid-template-columns: var(--audioarchive-player-button-size) minmax(0, 1fr);
		gap: .8rem;
	}

	.audioarchive-custom-player--default .audioarchive-custom-player-mute-controls,
	.audioarchive-custom-player--featured .audioarchive-custom-player-mute-controls
	{
		grid-column: 2;
		justify-self: end;
	}
}

@media (max-width: 28rem)
{
	.audioarchive-custom-player--default .audioarchive-custom-player-mute-controls,
	.audioarchive-custom-player--featured .audioarchive-custom-player-mute-controls
	{
		grid-column: 1 / -1;
		justify-self: stretch;
		justify-content: flex-end;
	}

}

/* Playlist: one unified player instance with queue navigation. */
.audioarchive-custom-player--playlist .audioarchive-custom-player-playlist-meta
{
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: .75rem;
}

.audioarchive-custom-player--playlist .audioarchive-custom-player-playlist-meta strong
{
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.audioarchive-custom-player--playlist .audioarchive-custom-player-playlist-meta span
{
	flex: 0 0 auto;
	font-size: .82rem;
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	color: var(--audioarchive-player-muted);
}

.audioarchive-custom-player--playlist .audioarchive-custom-player-controls
{
	grid-template-columns: auto var(--audioarchive-player-button-size) auto minmax(0, 1fr) auto;
	gap: .75rem;
}

.audioarchive-custom-player-skip
{
	display: inline-grid;
	place-items: center;
	width: 2.6rem;
	height: 2.6rem;
	padding: 0;
	border: 1px solid var(--audioarchive-player-border);
	border-radius: 50%;
	background: color-mix(in srgb, var(--audioarchive-player-text) 3%, transparent);
	color: inherit;
	cursor: pointer;
}

.audioarchive-custom-player-skip:hover:not(:disabled)
{
	border-color: color-mix(in srgb, var(--audioarchive-player-accent) 55%, var(--audioarchive-player-border));
	background: color-mix(in srgb, var(--audioarchive-player-accent) 9%, transparent);
}

.audioarchive-custom-player-skip:disabled
{
	cursor: default;
	opacity: .38;
}

.audioarchive-custom-player-skip:focus-visible
{
	outline: .2rem solid color-mix(in srgb, var(--audioarchive-player-accent) 38%, transparent);
	outline-offset: .18rem;
}

.audioarchive-custom-player-skip svg
{
	width: 1.1rem;
	height: 1.1rem;
	fill: currentColor;
}

@media (max-width: 42rem)
{
	.audioarchive-custom-player--playlist .audioarchive-custom-player-controls
	{
		grid-template-columns: auto var(--audioarchive-player-button-size) auto minmax(0, 1fr);
	}

	.audioarchive-custom-player--playlist .audioarchive-custom-player-mute-controls
	{
		grid-column: 4;
		justify-self: end;
	}
}

@media (max-width: 32rem)
{
	.audioarchive-custom-player--playlist .audioarchive-custom-player-controls
	{
		grid-template-columns: auto var(--audioarchive-player-button-size) auto;
	}

	.audioarchive-custom-player--playlist .audioarchive-custom-player-main
	{
		grid-column: 1 / -1;
	}

	.audioarchive-custom-player--playlist .audioarchive-custom-player-mute-controls
	{
		grid-column: 1 / -1;
		justify-self: end;
	}
}
