

#info-symbols {
    display: flex;
    height: 3vmin;
    gap: 2vmin;
}

#info-symbols.hide {
    display: none;
}

#info-symbols div {
    opacity: 0.65;
    width: 3vmin;
    height: 100%;
    -webkit-mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
    background-color: var(--color);
    -webkit-mask-image: var(--url);
    mask-image: var(--url);
}

#info-symbols:not(.show-off-state) div:not(#play-pause, .show) {
    width: 0;
    opacity: 0;
    display: none;
}

#info-symbols #play-pause {
    --url: url("../img/symbols/play.png");
}

#info-symbols #play-pause.paused {
    --url: url("../img/symbols/pause.png");
    opacity: 1;
}

#info-symbols #shuffle {
    --url: url("../img/symbols/shuffle-off.png");
}

#info-symbols #shuffle.on {
    --url: url("../img/symbols/shuffle.png");
}

#info-symbols #shuffle.smart {
    --url: url("../img/symbols/shuffle-smart.png") !important;
}

#info-symbols #repeat {
    --url: url("../img/symbols/repeat-off.png");
}

#info-symbols #repeat.context {
    --url: url("../img/symbols/repeat.png");
}

#info-symbols #repeat.track {
    --url: url("../img/symbols/repeat-once.png");
}


#volume {
    --volume: 0%;
    font-size: 3vmin;
    opacity: 0.5;
    display: flex;
    flex-direction: column;
    gap: 0.5vmin;
}
#volume:empty, #volume.hide {
    display: none;
}
#volume.active {
    opacity: 1;
}
#volume-text {
    white-space: nowrap;
    display: flex;
    align-items: center;
    gap: 1vmin;
}
#volume-text::before {
    content: "";
    -webkit-mask-image: url("../img/symbols/volume.png");
    -webkit-mask-size: contain;
    -webkit-mask-position: right;
    -webkit-mask-repeat: no-repeat;
    mask-image: url("../img/symbols/volume.png");
    mask-size: contain;
    mask-position: right;
    mask-repeat: no-repeat;
    height: 3vmin;
    width: 3vmin;
    opacity: 0.5;
    background-color: var(--color);
}

#volume-bar {
    position: relative;
    width: 100%;
    height: 0.3vmin;
}

#volume-bar.hide {
    display: none;
}

#volume-current, #volume-background {
    width: 100%;
    height: 100%;
    background: var(--color);
    position: absolute;
    border-radius: 0.5vmin;
}
#volume-current {
    width: var(--volume);
}
#main.transitions #volume-current {
    transition: background-color var(--transition), width var(--transition);
}
#volume-background {
    opacity: 0.25;
}

div#device {
    --max-lines: 1;
    opacity: 0.5;
    font-size: 2vmin;
    display: -webkit-box;
}
#device:empty, #device.hide {
    display: none;
}
#device.active {
    opacity: 1;
}
#device::before {
    content: "";
    -webkit-mask-image: url("../img/symbols/curved-arrow.png");
    -webkit-mask-size: contain;
    -webkit-mask-position: right;
    -webkit-mask-repeat: no-repeat;
    mask-image: url("../img/symbols/curved-arrow.png");
    mask-size: contain;
    mask-position: right;
    mask-repeat: no-repeat;
    opacity: 0.5;
    width: 2vmin;
    height: 2vmin;
    background-color: var(--color);
    display: inline-block;
    margin-right: 1vmin;
}

#progress {
    width: 100%;
    border-radius: 0.5vmin;
    height: 0.5vmin;
    max-height: 0.5vmin;
    min-height: 0.5vmin;
    position: relative;
    flex: 0 0 100%;
    overflow: hidden;
}

#progress.hide {
    display: none;
}

#progress-background {
    background-color: var(--color);
    width: 100%;
    height: 100%;
    position: absolute;
    opacity: 0.25;
}

#progress-current {
    --progress-width: 0;
    background: var(--color);
    width: var(--progress-width);
    min-width: 0;
    max-width: 100%;
    height: 100%;
    position: absolute;
    z-index: 1;
    border-radius: inherit;
}
#progress-current.gradient {
    background: linear-gradient(to right, transparent 0%, var(--color) 100%);
}

#bottom-meta-container {
    width: 100%;
    display: flex;
    gap: 4vmin;
    flex-direction: row;
    justify-content: space-between;
    max-height: 4vmin;
    position: relative;
    align-items: start;
}

#content-bottom.reverse #bottom-meta-container {
    align-items: end;
}

#bottom-meta-container.hide-timestamps :is(#timestamp-container, #time-current) {
    display: none;
}

#bottom-left {
    display: flex;
    flex: 1;
    text-align: left;
    gap: 4vmin;
    align-items: center;
    height: 100%;
}

#bottom-left.hide {
    display: none;
}

#bottom-right {
    display: flex;
    flex: 1;
    text-align: right;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    height: 100%;
    gap: 2.5vmin;
}

#content-bottom {
    display: flex;
    align-items: end;
    gap: 3vmin;
    flex-direction: column;
    justify-content: end;
    width: 100%;
    max-height: 6vmin;
}

#content-bottom.hide {
    display: none;
}

#content-bottom.reverse {
    flex-direction: column-reverse;
}

#time-current, #time-total {
    font-size: 4vmin;
    white-space: nowrap;
}

#time-current:empty, #time-total:empty {
    opacity: 0;
}

#next-track-info {
    text-align: center;
    font-weight: bold;
    opacity: 0.65;
    z-index: 1;
    font-size: 2vmin;
    width: fit-content;
    height: min-content;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
    white-space: unset;
    --clock-symbol: "";
}

#next-track-info:not(.show) {
    display: none;
}

#next-track-info::before {
    content: "";
    -webkit-mask-image: url("../img/symbols/next-song.png");
    -webkit-mask-size: contain;
    -webkit-mask-position: right;
    -webkit-mask-repeat: no-repeat;
    mask-image: url("../img/symbols/next-song.png");
    mask-size: contain;
    mask-position: right;
    mask-repeat: no-repeat;
    opacity: 0.5;
    width: 2vmin;
    height: 2vmin;
    background-color: var(--color);
    display: inline-block;
    margin-right: 1vmin;
    vertical-align: -12%;
}

#timestamp-container {
    display: flex;
    text-align: right;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    height: 100%;
    gap: 2.5vmin;
}

#bottom-meta-container:not(.spread-timestamps) #timestamp-container #time-slash {
    background: var(--color);
    width: 0.5vmin;
    height: 100%;
    opacity: 0.5;
    transform: rotate(25deg);
    border-radius: 2vmin;
}


#clock {
    text-align: center;
    font-weight: bold;
    opacity: 0.65;
    z-index: 1;
    font-size: 3vmin;
    width: fit-content;
    height: min-content;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
    white-space: unset;
    --clock-symbol: "";
}

#clock.hide, #clock:empty {
    display: none;
}

#clock::before {
    content: var(--clock-symbol);
    opacity: 0.5;
    margin-right: 1vmin;
}