/* SPRU [player] embed skin. Every rule is scoped to avoid legacy audio2/song2 collisions. */
.spru-player-embed,
.spru-player-embed * { box-sizing: border-box; }
.spru-player-embed {
    --spru-bg: #111720;
    --spru-panel: #19222e;
    --spru-text: #edf2f7;
    --spru-muted: #a7b0bc;
    --spru-accent: #43bff5;
    --spru-line: rgba(255,255,255,.12);
    direction: ltr;
    width: 100%;
    max-width: 980px;
    margin: 0;
    color: var(--spru-text);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.spru-player-loading,
.spru-player-error {
    display: flex;
    min-height: 92px;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 20px;
    border: 1px solid var(--spru-line);
    border-radius: 14px;
    background: #f5f5f5;
    color: #28313b;
}
.spru-player-error { border-color: #b84c55; background: #fff0f1; color: #8a222c; }
.spru-player-spinner {
    width: 28px;
    height: 28px;
    border: 3px solid rgba(40,49,59,.22);
    border-top-color: #50647a;
    border-radius: 50%;
    animation: spru-player-spin .8s linear infinite;
}
@keyframes spru-player-spin { to { transform: rotate(360deg); } }

.spru-player-source { display: none !important; }
.spru-player-root { position: relative; width: 100%; margin: 0; line-height: normal; }
.spru-player-root canvas { max-width: none !important; }
.spru-player-root .hap-btn-reset {
    appearance: none;
    border: 0;
    margin: 0;
    padding: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    line-height: 1;
}
.spru-player-root .hap-btn { display: none; height: 100%; }
.spru-player-root .hap-contr-btn { position: relative; width: 34px; height: 34px; flex: 0 0 34px; }
.spru-player-root .hap-contr-btn svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 18px;
    transform: translate(-50%, -50%);
    fill: currentColor;
    color: currentColor;
}
.spru-player-root .hap-playback-toggle svg { width: 25px; height: 25px; }
.spru-player-root .hap-seekbar,
.spru-player-root .hap-volume-seekbar { cursor: pointer; touch-action: none; }
.spru-player-root .hap-progress-bg,
.spru-player-root .hap-volume-bg { position: relative; background: rgba(255,255,255,.30); }
.spru-player-root .hap-load-level,
.spru-player-root .hap-progress-level,
.spru-player-root .hap-volume-level { position: absolute; top: 0; left: 0; height: 100%; }
.spru-player-root .hap-load-level { background: rgba(255,255,255,.38); }
.spru-player-root .hap-progress-level,
.spru-player-root .hap-volume-level { background: var(--spru-accent); }
.spru-player-root .hap-volume-wrapper { display: flex; align-items: center; width: 128px; height: 34px; }
.spru-player-root .hap-volume-toggle { width: 34px; height: 34px; flex: 0 0 34px; }
.spru-player-root .hap-volume-seekbar { position: relative; width: 94px; height: 24px; }
.spru-player-root .hap-volume-bg { position: absolute; top: 11px; left: 8px; width: 78px; height: 3px; border-radius: 2px; }
.spru-player-root .hap-tooltip {
    position: absolute;
    z-index: 5;
    display: none;
    padding: 5px 8px;
    border-radius: 5px;
    background: #111;
    color: #fff;
    font-size: 11px;
    pointer-events: none;
}
.spru-player-root .hap-preloader { position: absolute; inset: 0; pointer-events: none; }
.spru-player-root .hap-player-outer { opacity: 0; transition: opacity .25s ease; }
.spru-player-root.is-ready .hap-player-outer { opacity: 1; }

/* Single-track poster */
.spru-player-embed--track { max-width: 500px; }
.spru-player-poster {
    overflow: hidden;
    width: 100%;
    aspect-ratio: 1 / 1;
    min-height: 0;
    border: 1px solid var(--spru-line);
    border-radius: 16px;
    background: #0d1219;
    box-shadow: 0 18px 50px rgba(0,0,0,.28);
}
.spru-player-poster .hap-player-outer { position: absolute; inset: 0; min-height: 0; }
.spru-player-poster .hap-player-thumb {
    position: absolute;
    inset: 0;
    background-position: center;
    background-size: cover;
}
.spru-player-poster .hap-player-thumb {
    opacity: 1 !important;
}
.spru-player-poster .hap-player-thumb::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(6,10,15,.08), rgba(6,10,15,.18) 52%, rgba(6,10,15,.78));
    opacity: 1;
    transition: opacity .25s ease;
    pointer-events: none;
}
.spru-player-poster.is-playing .hap-player-thumb::after {
    opacity: 0;
}
.spru-player-poster .hap-player-holder { position: absolute; inset: 0; z-index: 1; }
.spru-player-poster .hap-info { position: absolute; left: 28px; right: 28px; bottom: 112px; text-shadow: 0 2px 10px rgba(0,0,0,.8); }
.spru-player-poster .hap-player-title { color: #fff; font-size: clamp(17px, 2.25vw, 23px); font-weight: 700; line-height: 1.16; overflow-wrap: anywhere; }
.spru-player-poster .hap-player-artist { min-height: 1.25em; margin-bottom: 4px; color: rgba(255,255,255,.78); font-size: 16px; }
.spru-player-poster .hap-player-controls { position: absolute; left: 25px; right: 25px; bottom: 53px; }
.spru-player-poster .spru-player-controls-row { display: flex; align-items: center; gap: 10px; }
.spru-player-poster .hap-volume-wrapper { margin-left: 6px; }
.spru-player-poster .hap-seekbar { position: absolute; left: 28px; right: 28px; bottom: 25px; height: 20px; }
.spru-player-poster .hap-progress-bg { top: 9px; width: 100%; height: 3px; border-radius: 2px; }
.spru-player-poster .hap-contr-btn { color: #fff; filter: drop-shadow(0 2px 5px rgba(0,0,0,.8)); }
.spru-player-poster .hap-contr-btn:hover,
.spru-player-poster .hap-contr-btn:focus-visible { color: var(--spru-accent); }
.spru-player-poster button:focus,
.spru-player-poster button:focus-visible,
.spru-player-poster .hap-contr-btn:focus,
.spru-player-poster .hap-contr-btn:focus-visible {
    outline: none !important;
    box-shadow: none !important;
    -webkit-tap-highlight-color: transparent;
}

/* Playlist / metallic layout */
.spru-player-metalic {
    overflow: hidden;
    border: 1px solid var(--spru-line);
    border-radius: 16px;
    background: var(--spru-bg);
    box-shadow: 0 14px 38px rgba(0,0,0,.24);
}
.spru-player-metalic .hap-player-outer { position: relative; display: flex; min-height: 370px; overflow: hidden; }
.spru-player-metalic .hap-player-image,
.spru-player-metalic .hap-player-bg { position: absolute; inset: 0; }
.spru-player-metalic .hap-player-image {
    background-attachment: fixed;
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    filter: none;
    transform: none;
    opacity: 1;
}
.spru-player-metalic .hap-player-bg { background: rgba(10,15,22,.72); }
.spru-player-metalic .hap-player-holder { position: relative; z-index: 1; width: 310px; flex: 0 0 310px; padding: 28px 28px 18px; }
.spru-player-metalic .hap-player-thumb-wrapper { position: relative; width: 254px; height: 254px; overflow: hidden; border-radius: 10px; background: #0b1017; }
.spru-player-metalic .hap-player-thumb { position: absolute; inset: 0; background-position: center; background-size: cover; }
.spru-player-metalic .hap-player-controls { margin-top: 10px; }
.spru-player-metalic .hap-seekbar { position: relative; height: 18px; }
.spru-player-metalic .hap-progress-bg { top: 8px; width: 100%; height: 3px; border-radius: 2px; }
.spru-player-metalic .hap-controls { display: flex; align-items: center; gap: 7px; min-height: 38px; }
.spru-player-metalic .hap-volume-wrapper {
    position: relative;
    display: block;
    width: 110px;
    height: 30px;
    margin-left: auto;
}
.spru-player-metalic .hap-volume-toggle {
    position: relative;
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
}
.spru-player-metalic .hap-volume-seekbar {
    position: absolute;
    left: 30px;
    top: 5px;
    width: 80px;
    height: 20px;
}
.spru-player-metalic .hap-volume-bg {
    position: absolute;
    top: 9px;
    left: 10px;
    width: 60px;
    height: 2px;
}
.spru-player-metalic .hap-contr-btn { color: #fff; }
.spru-player-metalic .hap-contr-btn:hover { color: var(--spru-accent); }
.spru-player-metalic .hap-playlist-holder {
    position: relative;
    z-index: 1;
    display: flex;
    min-width: 0;
    min-height: 0;
    flex: 1 1 auto;
    flex-direction: column;
    --spru-playlist-side: 14px;
    padding: 7px 12px 10px 4px;
    text-align: left !important;
}
.spru-player-metalic .spru-player-playlist-title {
    flex: 0 0 auto;
    padding: 2px 12px 5px calc(var(--spru-playlist-side) + 8px);
    color: #fff;
    font-size: 17px;
    font-weight: 700;
    line-height: 1.25;
    overflow-wrap: anywhere;
}
.spru-player-metalic .spru-player-playlist-title:empty { display: none; }
.spru-player-metalic .hap-playlist-inner {
    min-height: 0;
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 0 12px 0 var(--spru-playlist-side);
    text-align: left !important;
    scrollbar-color: rgba(255,255,255,.28) transparent;
    scrollbar-width: thin;
}
.spru-player-metalic .hap-playlist-content {
    min-height: 100%;
    text-align: left !important;
}
.spru-player-metalic .hap-playlist-item { position: relative; padding: 2px 8px; border-bottom: 1px solid rgba(255,255,255,.075); color: var(--spru-muted); font-size: 14px; text-align: left !important; }
.spru-player-metalic .hap-playlist-item-wrap { display: flex; align-items: center; min-width: 0; justify-content: flex-start; text-align: left !important; }
.spru-player-metalic .hap-playlist-item-content { display: flex; align-items: center; min-width: 0; flex: 1; overflow: hidden; justify-content: flex-start; text-align: left !important; }
.spru-player-metalic .hap-playlist-thumb { width: 38px; height: 38px; flex: 0 0 38px; margin-right: 10px; overflow: hidden; border-radius: 5px; }
.spru-player-metalic .hap-playlist-thumb img { width: 100%; height: 100%; object-fit: cover; }
.spru-player-metalic .hap-playlist-info { min-width: 0; flex: 1; text-align: left !important; }
.spru-player-metalic .hap-playlist-title-wrap { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 0 5px; min-width: 0; cursor: pointer; text-align: left !important; }
.spru-player-metalic .hap-playlist-title,
.spru-player-metalic .hap-playlist-artist {
    overflow: hidden;
    text-align: left !important;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.spru-player-metalic .hap-playlist-item-selected,
.spru-player-metalic .hap-playlist-item:hover { color: #fff; background: rgba(67,191,245,.08); }
.spru-player-metalic .hap-playlist-item-selected { border-left: 3px solid var(--spru-accent); padding-left: 5px; }
.spru-player-metalic .hap-playlist-icons,
.spru-player-metalic .hap-playlist-info2 { margin-left: auto; flex: 0 0 auto; }

@media (max-width: 800px) {
    .spru-player-metalic .hap-player-outer { flex-direction: column; }
    .spru-player-metalic .hap-player-holder { width: 100%; flex-basis: auto; padding: 22px 22px 8px; }
    .spru-player-metalic .hap-player-thumb-wrapper { width: min(230px, 72vw); height: min(230px, 72vw); margin: 0 auto; }
    .spru-player-metalic .hap-playlist-holder {
        --spru-playlist-side: 4px;
        padding: 6px 16px 14px;
        text-align: left !important;
    }
    .spru-player-metalic .spru-player-playlist-title {
        padding: 2px 4px 5px calc(var(--spru-playlist-side) + 8px);
        text-align: left !important;
    }
    .spru-player-metalic .hap-playlist-inner {
        min-height: 150px;
        max-height: 300px;
        padding: 0 4px 0 var(--spru-playlist-side);
        text-align: left !important;
    }
}
@media (max-width: 520px) {
    .spru-player-embed { margin: 0; }
    .spru-player-poster .hap-info { left: 20px; right: 20px; bottom: 108px; }
    .spru-player-poster .hap-player-controls { left: 17px; right: 17px; }
    .spru-player-poster .hap-seekbar { left: 20px; right: 20px; }
    .spru-player-root .hap-volume-wrapper { width: 108px; }
    .spru-player-root .hap-volume-seekbar { width: 74px; }
    .spru-player-root .hap-volume-bg { width: 59px; }
}

/*
 * Isolated forum playlist metadata.
 * The legacy audio2/Metalic styles target global HAP class names, therefore
 * the visible number and label use SPRU-only elements inside the HAP row.
 */
.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.hap-playlist-title-wrap.spru-player-track-label-wrap {
    display: block !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    text-align: left !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}

.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.spru-player-track-row {
    all: unset !important;
    display: grid !important;
    grid-template-columns: var(--spru-player-track-number-width, 2.2em) minmax(0, 1fr) !important;
    align-items: center !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    color: inherit !important;
    font-family: "Play", Arial, Helvetica, sans-serif !important;
    font-size: 14px !important;
    font-style: normal !important;
    font-weight: 400 !important;
    line-height: 1.35 !important;
    text-align: left !important;
    text-decoration: none !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    word-spacing: normal !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}

.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.spru-player-track-number {
    all: unset !important;
    display: block !important;
    box-sizing: border-box !important;
    min-width: 0 !important;
    padding-right: .55em !important;
    overflow: hidden !important;
    color: inherit !important;
    font: inherit !important;
    line-height: inherit !important;
    text-align: right !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
    opacity: .78 !important;
}

.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.spru-player-track-label {
    all: unset !important;
    display: block !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    color: inherit !important;
    font: inherit !important;
    line-height: inherit !important;
    text-align: left !important;
    text-decoration: none !important;
    text-indent: 0 !important;
    text-overflow: ellipsis !important;
    text-transform: none !important;
    letter-spacing: normal !important;
    word-spacing: normal !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}

/* Additional containment from legacy .hap-metalic/.hap-playlist-default rules. */
.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row {
    top: auto !important;
    left: auto !important;
    box-sizing: border-box !important;
    font-family: "Play", Arial, Helvetica, sans-serif !important;
    text-align: left !important;
}

.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.hap-playlist-item-wrap,
.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.hap-playlist-item-content,
.spru-player-embed.spru-player-embed--playlist
.spru-player-root.spru-player-metalic
.hap-playlist-item.spru-player-playlist-row
.hap-playlist-info {
    min-width: 0 !important;
    text-align: left !important;
}

/*
 * Native scrolling for long embedded playlists.
 * These deliberately specific rules override legacy Metalic / Perfect
 * Scrollbar styles that may set overflow:hidden on global HAP classes.
 */
@media (min-width: 801px) {
    .spru-player-embed.spru-player-embed--playlist
    .spru-player-root.spru-player-metalic
    .hap-player-outer {
        height: 370px !important;
        min-height: 370px !important;
        max-height: 370px !important;
    }

    .spru-player-embed.spru-player-embed--playlist
    .spru-player-root.spru-player-metalic
    .hap-playlist-holder {
        height: 100% !important;
        min-height: 0 !important;
        max-height: 100% !important;
        overflow: hidden !important;
    }

    .spru-player-embed.spru-player-embed--playlist
    .spru-player-root.spru-player-metalic
    .hap-playlist-inner {
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
        flex: 1 1 0 !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior: contain !important;
        -webkit-overflow-scrolling: touch;
        scrollbar-gutter: stable;
    }
}

@media (max-width: 800px) {
    .spru-player-embed.spru-player-embed--playlist
    .spru-player-root.spru-player-metalic
    .hap-player-outer {
        height: auto !important;
        max-height: none !important;
    }

    .spru-player-embed.spru-player-embed--playlist
    .spru-player-root.spru-player-metalic
    .hap-playlist-holder {
        height: auto !important;
        max-height: none !important;
        overflow: hidden !important;
    }

    .spru-player-embed.spru-player-embed--playlist
    .spru-player-root.spru-player-metalic
    .hap-playlist-inner {
        height: auto !important;
        min-height: 150px !important;
        max-height: min(300px, 55vh) !important;
        flex: 0 1 auto !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        overscroll-behavior: contain !important;
        -webkit-overflow-scrolling: touch;
        scrollbar-gutter: stable;
    }
}


/*
 * Compact single-track layout: the cover remains completely unobstructed,
 * while metadata and controls live in a separate panel below it.
 * High-specificity SPRU selectors and the absence of the legacy .hap-poster
 * class keep old audio2/poster styles from changing this layout.
 */
.spru-player-embed.spru-player-embed--track {
    width: 100% !important;
    max-width: 400px !important;
    margin: 0 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster {
    display: block !important;
    width: 100% !important;
    min-height: 0 !important;
    aspect-ratio: auto !important;
    overflow: hidden !important;
    border: 1px solid var(--spru-line) !important;
    border-radius: 14px !important;
    background: var(--spru-bg) !important;
    box-shadow: 0 12px 34px rgba(0,0,0,.22) !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-outer {
    position: relative !important;
    inset: auto !important;
    display: flex !important;
    flex-direction: column !important;
    width: 100% !important;
    min-height: 0 !important;
    overflow: visible !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-thumb {
    position: relative !important;
    inset: auto !important;
    display: block !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    min-height: 0 !important;
    aspect-ratio: 1 / 1 !important;
    opacity: 1 !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
    background-size: cover !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-thumb::before,
.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-thumb::after {
    content: none !important;
    display: none !important;
    background: none !important;
    opacity: 0 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-holder {
    position: relative !important;
    inset: auto !important;
    z-index: 1 !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    grid-template-areas:
        "poster-info poster-controls"
        "poster-seek poster-seek" !important;
    align-items: center !important;
    column-gap: 10px !important;
    row-gap: 7px !important;
    width: 100% !important;
    min-height: 0 !important;
    padding: 10px 12px 11px !important;
    background: linear-gradient(180deg, #1b2531 0%, #121922 100%) !important;
    color: var(--spru-text) !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-info {
    grid-area: poster-info !important;
    position: relative !important;
    inset: auto !important;
    align-self: center !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    text-shadow: none !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-title,
.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-artist {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    color: inherit !important;
    font-family: "Play", Arial, Helvetica, sans-serif !important;
    font-style: normal !important;
    text-align: left !important;
    text-overflow: ellipsis !important;
    text-shadow: none !important;
    white-space: nowrap !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-title {
    color: #fff !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.22 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-artist {
    min-height: 0 !important;
    margin-bottom: 2px !important;
    color: var(--spru-muted) !important;
    font-size: 12px !important;
    font-weight: 400 !important;
    line-height: 1.2 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-artist:empty {
    display: none !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-player-controls {
    grid-area: poster-controls !important;
    position: relative !important;
    inset: auto !important;
    align-self: center !important;
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.spru-player-controls-row {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 4px !important;
    min-width: 0 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-contr-btn {
    width: 32px !important;
    height: 32px !important;
    flex: 0 0 32px !important;
    color: var(--spru-text) !important;
    filter: none !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-playback-toggle svg {
    width: 21px !important;
    height: 21px !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-volume-wrapper {
    display: flex !important;
    align-items: center !important;
    width: 96px !important;
    height: 32px !important;
    margin: 0 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-volume-toggle {
    width: 30px !important;
    height: 32px !important;
    flex: 0 0 30px !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-volume-seekbar {
    position: relative !important;
    width: 66px !important;
    height: 22px !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-volume-bg {
    position: absolute !important;
    top: 10px !important;
    left: 4px !important;
    width: 58px !important;
    height: 3px !important;
    border-radius: 2px !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-seekbar {
    grid-area: poster-seek !important;
    position: relative !important;
    inset: auto !important;
    display: block !important;
    width: 100% !important;
    height: 12px !important;
    margin: 0 !important;
    padding: 0 !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-progress-bg {
    position: absolute !important;
    top: 5px !important;
    left: 0 !important;
    width: 100% !important;
    height: 3px !important;
    border-radius: 2px !important;
}

.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
button:focus,
.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
button:focus-visible,
.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-contr-btn:focus,
.spru-player-embed.spru-player-embed--track
.spru-player-root.spru-player-poster
.hap-contr-btn:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}

@media (max-width: 360px) {
    .spru-player-embed.spru-player-embed--track
    .spru-player-root.spru-player-poster
    .hap-player-holder {
        column-gap: 6px !important;
        padding-right: 10px !important;
        padding-left: 10px !important;
    }

    .spru-player-embed.spru-player-embed--track
    .spru-player-root.spru-player-poster
    .hap-volume-wrapper {
        width: 32px !important;
    }

    .spru-player-embed.spru-player-embed--track
    .spru-player-root.spru-player-poster
    .hap-volume-seekbar {
        display: none !important;
    }
}


/* 1.3.0: compact single-track publication */
.spru-player-embed.spru-player-embed--track-compact {
    width: 100% !important;
    max-width: 620px !important;
    margin: 0 !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-root.spru-player-compact {
    width: 100% !important;
    min-height: 0 !important;
    overflow: hidden !important;
    border: 1px solid var(--spru-line) !important;
    border-radius: 12px !important;
    background: linear-gradient(180deg, #1b2531 0%, #121922 100%) !important;
    box-shadow: 0 8px 24px rgba(0,0,0,.2) !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-outer {
    position: relative !important;
    inset: auto !important;
    display: grid !important;
    grid-template-columns: 78px minmax(0, 1fr) !important;
    width: 100% !important;
    min-height: 78px !important;
    overflow: hidden !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-thumb {
    position: relative !important;
    inset: auto !important;
    display: block !important;
    width: 78px !important;
    height: 78px !important;
    min-height: 78px !important;
    opacity: 1 !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    background-size: cover !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-thumb::before,
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-thumb::after { content: none !important; display: none !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-holder {
    position: relative !important;
    inset: auto !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    grid-template-areas: "compact-info compact-controls" "compact-seek compact-seek" !important;
    align-items: center !important;
    column-gap: 8px !important;
    row-gap: 5px !important;
    min-width: 0 !important;
    padding: 8px 10px 8px 12px !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-info {
    grid-area: compact-info !important;
    position: relative !important;
    inset: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    text-shadow: none !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-title,
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-artist {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    font-family: "Play", Arial, Helvetica, sans-serif !important;
    text-align: left !important;
    text-overflow: ellipsis !important;
    text-shadow: none !important;
    white-space: nowrap !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-artist {
    margin-bottom: 2px !important;
    color: var(--spru-muted) !important;
    font-size: 12px !important;
    line-height: 1.15 !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-artist:empty { display: none !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-title {
    color: #fff !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-player-controls {
    grid-area: compact-controls !important;
    position: relative !important;
    inset: auto !important;
    margin: 0 !important;
    padding: 0 !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .spru-player-controls-row {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 2px !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-contr-btn { width: 30px !important; height: 30px !important; color: #fff !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-playback-toggle svg { width: 20px !important; height: 20px !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-volume-wrapper { width: 98px !important; height: 30px !important; margin: 0 !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-volume-toggle { width: 30px !important; height: 30px !important; flex-basis: 30px !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-volume-seekbar { width: 68px !important; height: 22px !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-volume-bg { top: 10px !important; left: 5px !important; width: 58px !important; height: 2px !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-seekbar {
    grid-area: compact-seek !important;
    position: relative !important;
    inset: auto !important;
    width: 100% !important;
    height: 12px !important;
    margin: 0 !important;
}
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact .hap-progress-bg { top: 5px !important; width: 100% !important; height: 3px !important; border-radius: 2px !important; }
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact button:focus,
.spru-player-embed.spru-player-embed--track-compact
.spru-player-compact button:focus-visible { outline: none !important; box-shadow: none !important; }
@media (max-width: 520px) {
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-player-outer { grid-template-columns: 64px minmax(0, 1fr) !important; min-height: 64px !important; }
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-player-thumb { width: 64px !important; height: 64px !important; min-height: 64px !important; }
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-player-holder { padding: 6px 8px 6px 10px !important; column-gap: 5px !important; row-gap: 3px !important; }
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-player-title { font-size: 13px !important; }
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-player-artist { font-size: 11px !important; }
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-volume-seekbar { display: none !important; }
    .spru-player-embed.spru-player-embed--track-compact
    .spru-player-compact .hap-volume-wrapper { width: 30px !important; }
}
