/**
 * Styles for the UI in general, covering Bootstrap and theme customisations
 */
/**
 * Inspired by Bootstrap d-* classes, but not set to be important so works ok with jQuery hide/show.
 * See #133
 */
.d-none-notimportant {
  display: none;
}
.top-20 {
  top: 20px;
}
.min-width-150 {
  min-width: 150px;
}
.text-truncate-multiline {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.input-style {
  border: 1px solid #ced4da;
  border-radius: 0.4rem;
}
.custom-link {
  display: block;
  padding: 0.25rem 0.75rem;
  color: #676a79;
}
.navbar-sidenav {
  top: calc(1.5rem + 56px);
}
.liveToast {
  margin-bottom: 83px;
  z-index: 9999;
}
.song-actions {
  max-height: 525px;
  overflow-y: scroll;
}
.library-actions {
  max-height: 480px;
  overflow-y: scroll;
}
.col-main {
  height: calc(100vh - 83px - 56px - 24px);
  overflow-y: auto;
}
.notifications-list {
  max-height: 460px;
  overflow-y: auto;
}
@media (max-width: 768px) {
  .d-upto-sm-none {
    display: none !important;
  }
  .d-upto-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 576px) {
  .d-sm-flex-notimportant {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}
@media (min-width: 768px) {
  .d-md-flex-notimportant {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .d-md-inline-block-notimportant {
    display: inline-block;
  }
  #row-main.playlist-expanded .col-album-card.col-md-4 {
    width: 33.33333333%;
  }
}
@media (min-width: 992px) {
  #row-main.playlist-expanded .col-album-card.col-lg-3 {
    width: 50%;
  }
}
@media (max-width: 992px) {
  .col-main {
    height: calc(100vh - 83px - 56px);
  }
  .col-playlist {
    max-height: calc(100vh - 83px - 56px);
  }
}
@media (min-width: 1400px) {
  #row-main.playlist-expanded .col-album-card.col-xxl-2 {
    width: 25%;
  }
}
::-webkit-scrollbar {
  width: 6px;
  background-color: rgba(0, 0, 0, 0);
}
::-webkit-scrollbar-thumb {
  background: #676a79;
}
.w-max {
  width: max-content !important;
}
.mw-fit {
  max-width: fit-content !important;
}
.collapse.collapse-partial.collapse-mh-parent:not(.show) {
  max-height: 125px !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  mask-image: linear-gradient(180deg, #000 50%, transparent);
  -webkit-mask-image: linear-gradient(180deg, #000 50%, transparent);
  overflow: hidden;
  transition: max-height 0.25s ease;
}
.card-artist-info-horizontal .collapse.collapse-partial.collapse-mh-parent:not(.show) {
  max-height: 250px !important;
  mask-image: linear-gradient(180deg, #000 225px, transparent);
  /* only show the fade out 25px from the bottom */
  -webkit-mask-image: linear-gradient(180deg, #000 225px, transparent);
}
.collapse-partial.collapse-mh-parent.collapsing {
  min-height: 125px !important;
}
div[disabled],
li[disabled] {
  pointer-events: none;
  opacity: 0.4;
}
button.collapse-partial.collapsed:after {
  content: '\f078';
  font: var(--fa-font-solid);
}
button.collapse-partial:not(.collapsed):after {
  content: '\f077';
  font: var(--fa-font-solid);
}
.icon::before {
  display: inline-block;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
}
.avatar-xxxl.avatar-portrait {
  height: 14rem;
}
.avatar-xxxl.avatar-landscape {
  width: 14rem;
}
.l-h-unset {
  line-height: unset;
}
@media (max-width: 991px) {
  #sideNavbarContent.sticky-top {
    position: relative;
    z-index: 1031;
  }
}
@media (max-width: 575px) {
  .jp-controls .media-action {
    bottom: 0;
    left: 0;
    width: 100%;
    align-items: center;
    justify-content: center;
  }
  .jp-controls .volume-item {
    padding-left: 20px;
    padding-right: 15px;
  }
  .jp-controls .jp-progress {
    bottom: 40px;
    left: 0;
    align-items: center;
    right: 0;
    margin: 0;
  }
  header.fixed-top + main {
    padding-top: 56px;
  }
}
.song-artist:not(:empty):after {
  content: "/";
}
.blur-text {
  filter: blur(4px);
  transition: filter 0.1s ease-in-out;
}
.blur-text:hover,
.blur-text:focus,
.blur-text:active {
  filter: blur(0px);
}
.switch input[type=checkbox] {
  display: none;
}
.switch input[type=checkbox]:checked + label {
  border-color: #555496;
}
.switch input[type=checkbox]:checked + label:before {
  content: "";
  color: #555496;
  font-size: 15px;
  text-transform: uppercase;
  position: absolute;
  left: 25%;
  transform: translateX(-25%);
  line-height: 10px;
  transition: 0.5s ease;
  z-index: 0;
}
.switch input[type=checkbox]:checked + label .switcher-off {
  left: calc(100% - 5px);
  transform: translateX(-100%);
  opacity: 0;
}
.switch input[type=checkbox]:checked + label .switcher-on {
  left: calc(100% - 1px);
  transform: translateX(-100%);
  opacity: 1;
}
.switch label {
  border: 1px solid #555496;
  cursor: pointer;
  height: 20px;
  border-radius: 200px;
  display: flex;
  width: 55px;
  position: relative;
  transition: 0.5s ease-in-out;
}
.switch label:before {
  content: "";
  color: #555496;
  font-size: 11px;
  text-transform: uppercase;
  position: absolute;
  left: 70%;
  transform: translateX(-70%);
  line-height: 8px;
  transition: 0.5s ease;
  z-index: 0;
}
.switch label .switcher-off {
  background: #555496;
  color: rgba(255, 255, 255, 0.5);
  width: 20px;
  height: 20px;
  position: absolute;
  border-radius: 190px;
  left: 1px;
  top: -1px;
  overflow: hidden;
  transition: 0.5s ease;
  opacity: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.switch label .switcher-on {
  text-align: center;
  background: #555496;
  width: 20px;
  height: 20px;
  position: absolute;
  border-radius: 190px;
  left: 1px;
  top: -1px;
  overflow: hidden;
  transition: 0.5s ease;
  opacity: 0;
}
.switch label .switcher-on:before {
  left: -80px;
}
.switch label .switcher-on:after {
  right: -80px;
}
.episode-position {
  height: 3px;
  margin: 0;
  background-color: rgba(255, 255, 255, 0.08);
}
@keyframes pseudo-move {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
/**
 * Styles that relate to the use of JPlayer and JPlayerPlaylist
 */
#jp_container_1 {
  margin-bottom: 0;
}
@media (hover: none) {
  .jp-playlist-item-remove {
    z-index: 1000;
    position: relative;
    opacity: 1;
  }
  .jp-playlist-item-add {
    display: none !important;
    /* important required because jp appears to add a display:block */
  }
}
@media (hover: hover) {
  .jp-playlist-item-remove,
  .jp-playlist-item-add {
    z-index: 1000;
    position: relative;
    opacity: 0;
  }
  li[data-queue-index]:hover .jp-playlist-item-remove,
  li[data-queue-index]:hover .jp-playlist-item-add {
    opacity: 1;
  }
}
.jp-playlist-item-drag-drop {
  z-index: 1;
  position: relative;
  flex-shrink: 0;
  flex-grow: 0;
}
.avatar {
  flex-shrink: 0;
  flex-grow: 0;
}
.playlist-info {
  flex-grow: 1;
  flex-shrink: 1;
  min-width: 0;
}
.jp-seeking-bg {
  width: 100% !important;
  animation: progress-bar-stripes 2s linear infinite;
  background-image: linear-gradient(45deg, rgba(96, 94, 169, 0.25) 25%, transparent 25%, transparent 50%, rgba(96, 94, 169, 0.25) 50%, rgba(96, 94, 169, 0.25) 75%, transparent 75%, transparent);
  background-size: 17px 17px;
}
.seek-time {
  position: fixed;
  pointer-events: none;
  z-index: 10000;
}
.jp-playlist-current {
  background-color: rgb(var(--bs-info-rgb));
  padding: 0.5rem 0;
}
#play-queue-pagination {
  position: relative;
  text-align: center;
  z-index: 9998;
}
@media (max-width: 768px) {
  .col-playlist {
    position: fixed !important;
    top: 50vh;
    right: 0;
    transform: translateY(-50%);
    display: flex !important;
    flex-direction: row;
    align-items: center;
    z-index: 1045;
    width: auto;
    overflow: visible !important;
  }
  .playlist-collapse-body {
    position: static;
    width: 85vw;
    height: calc(100vh - 56px);
    max-height: calc(100vh - 56px);
    background-color: #fff;
    background-clip: padding-box;
    outline: 0;
    overflow-y: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
  }
  /* Mobile: button is a flex child, no special positioning needed */
  .playlist-toggle-floating {
    position: static !important;
    top: auto !important;
    left: auto !important;
    transform: none !important;
    margin-right: 0;
  }
}
@media (min-width: 768px) {
  .col-playlist {
    position: fixed;
    right: 0;
    top: 83px;
    height: calc(100vh - 83px - 56px);
    z-index: 1040;
    overflow: visible;
    width: auto;
  }
  .playlist-collapse-body {
    width: 300px;
    overflow-y: auto;
  }
}
@media (min-width: 1200px) {
  .playlist-collapse-body {
    width: 400px;
  }
}
/* Floating play queue toggle button */
.playlist-toggle-floating {
  position: absolute;
  top: 50%;
  left: 0;
  transform: translate(-100%, -50%);
  z-index: 1046;
  padding: 0.75rem 0.5rem;
  border-radius: 0.375rem 0 0 0.375rem;
  /* Rounded on left only */
  box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);
  width: fit-content;
  display: inline-block;
  pointer-events: auto;
  cursor: pointer;
  /* Show collapsed icon by default */
}
.playlist-toggle-floating .playlist-icon-collapsed {
  display: inline-block;
}
.playlist-toggle-floating .playlist-icon-expanded {
  display: none;
}
/* Show expanded icon when sidebar is shown */
#playlist-sidebar.show ~ .playlist-toggle-floating .playlist-icon-collapsed,
.col-playlist:has(#playlist-sidebar.show) .playlist-toggle-floating .playlist-icon-collapsed {
  display: none;
}
#playlist-sidebar.show ~ .playlist-toggle-floating .playlist-icon-expanded,
.col-playlist:has(#playlist-sidebar.show) .playlist-toggle-floating .playlist-icon-expanded {
  display: inline-block;
}
