/*
    Jamfin - Another Jellyfin Theme aimed to please the masses.
    Please note that this theme is still in development and may not be fully functional.
    This theme is based on the Jellyfin default theme.
    This theme is licensed under the MIT License.
*/

:root {
    /* Colours */
    --theme-background-colour: #101010;
    --theme-sidebar-background-colour: #222222;
    --theme-menu-background-colour: #3a3a3a80;
    --theme-menu-shadow-colour: #fff3;
    --theme-base-colour: #696969;
    --theme-text-colour: #dbdbdb;
    --theme-restart-colour: #da87287e;
    --theme-shutdown-colour: #c21c1c9d;
    --theme-progress-bar-colour: #cfcfcf;
    --theme-progress-bar-background-colour: #2c2c2c;
    --theme-progress-bar-transcoding-colour: #eb7e25;
    --theme-chapter-marker-colour: #dbdbdb;
    --theme-chapter-marker-watched-colour: #4a4a4a;

    /* General Appearance */
    --theme-roundness: .75rem;
    --theme-blur: 16px;
}

/* Remove the Default Focus Outline */
*:focus-visible {
    outline: none;
}

/* Change Background Colours */
.backgroundContainer,
.mainDrawer,
.drawer-open,
.nowPlayingPlaylist,
.nowPlayingContextMenu,
html {
    background-color: var(--theme-background-colour);
}

/* Re-design the Header */

.layout-desktop [dir="ltr"] .pageTitle {
    margin-left: 1.2em;
}

[dir="ltr"] .sidebarHeader {
    padding-left: 2em;
    font-weight: bold;
}

[dir="ltr"] .navMenuOption {
    padding: .9em 1.2em !important;
}

.pageTitleWithLogo {
    height: 50px;
}

.skinHeader {
    background-color: transparent;
}

.layout-desktop .headerLeft,
.layout-desktop .headerRight {
    margin-top: 1rem;
}

.layout-mobile .headerRight {
    margin: 0 .29em;
}

.layout-mobile .libraryPage:not(.noSecondaryNavPage) {
    padding-top: 8.5em !important;
}

.paper-icon-button-light > div {
    width: 25px;
    height: 25px;
    transform: unset;
}

.skinHeader.semiTransparent {
    background-color: unset;
}

.headerTabs,
.headerRight,
.dialog,
.raised,
.fab,
.paper-icon-button-light:not(
    .headerRight,
    .headerRight .paper-icon-button-light
),
.osdHeader .headerLeft .paper-icon-button-light,
.detailButton,
.sliderBubble,
.MuiDataGrid-root,
.MuiMenu-list,
.MuiButton-root,
.toast.toastVisible,
.guide-date-tab-button.emby-tab-button-active,
.guide-date-tab-button:focus,
.MuiTabs-centered .MuiTab-root,
#skipIntro .emby-button,
.chapterThumbContainer,
.chapterThumbTextContainer {
    color: var(--theme-text-colour);
    border-radius: var(--theme-roundness);
    box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
    background-color: var(--theme-menu-background-colour);
    backdrop-filter: blur(var(--theme-blur)) !important;
    -webkit-backdrop-filter: blur(var(--theme-blur)) !important;
    -moz-backdrop-filter: blur(var(--theme-blur)) !important;
    -o-backdrop-filter: blur(var(--theme-blur)) !important;
    -ms-backdrop-filter: blur(var(--theme-blur)) !important;
}

.dialogBackdrop {
    background-color: #111;
}

.headerTabs .emby-tabs-slider {
    display: flex;
    align-items: center;
}

.headerTabs .emby-tab-button,
.headerRight .paper-icon-button-light,
.detailButton,
.sessionCardButton,
.guideOptions,
.MuiTabs-centered .MuiTab-root {
    padding: .556em !important;
    margin: 0 .29em !important;
    border-radius: var(--theme-roundness);
}

.layout-desktop .headerTabs,
.layout-desktop .headerLeft,
.layout-desktop .headerRight,
.layout-desktop .emby-tabs-slider,
.layout-desktop .raised {
    height: 50px;
}

.layout-mobile .headerTabs,
.layout-mobile .headerRight,
.layout-mobile .emby-tabs-slider,
.layout-mobile .raised {
    height: 40px;
}

.layout-desktop .headerTabs {
    margin-left: 250px;
}

@media (max-width: 1599px) {
    .layout-desktop .sectionTabs {
        width: auto;
        align-self: center;
        margin-top: -58px;
    }

    .layout-desktop .headerRight {
        margin-right: .8em;
    }

    .layout-mobile .headerTabs {
        margin: 20px auto;
        width: auto;
    }

    .layout-mobile .pageTitleWithLogo {
        height: 40px;
    }
}

.layout-tv .sectionTabs {
    width: unset;
}

@media (min-width: 100em) {
    .layout-tv .headerTabs {
        margin-top: unset;
    }

    .layout-mobile .headerTabs {
        margin-top: -1.3em;
    }
}

@media (max-width: 100em) {
    .layout-tv .sectionTabs {
        width: fit-content;
        align-self: center;
        font-size: 125%;
    }
}

@media (max-width: 50em) {
    .homeLibraryButton {
    width: 100% !important;
    }
}

/* Main Drawer */

.layout-desktop,
.touch-menu-la.transition {
    transition: none;
}

.layout-mobile .mainDrawer {
    padding-top: 1.2em;
}

.layout-desktop .mainDrawer-scrollContainer {
    margin-top: 100px;
}

.navMenuOption,
.navMenuOption-selected,
.navMenuOption:hover,
.MuiListItem-root,
.MuiDrawer-paperAnchorLeft .MuiButtonBase-root {
    border-radius: var(--theme-roundness) !important;
    width: 80%;
    margin: auto !important;
}

.navMenuOption:hover,
.listItem:hover,
.MuiButton-root:hover {
    background-color: var(--theme-menu-shadow-colour);
}

.navMenuOption-selected,
.Mui-selected {
    background: var(--theme-menu-shadow-colour) !important;
}

/* Main Cards */

.section0 .sectionTitle {
    padding-top: 1em !important;
}

.layout-desktop .section0 .emby-scrollbuttons,
.layout-desktop .section1 .emby-scrollbuttons {
    padding-top: unset;
}

.cardContent:not(.dashboardSection .cardContent),
.cardPadder:not(.dashboardSection .cardPadder),
.blurhash-canvas,
.dialog,
.itemSelectionPanel {
    border-radius: var(--theme-roundness) !important;
    box-shadow: inset 0 1px var(--theme-menu-shadow-colour) !important;
    transition: 0.2s;
}

.cardOverlayContainer {
    border-radius: var(--theme-roundness) !important;
    box-shadow: inset 0 2px var(--theme-menu-shadow-colour) !important;
    transition: unset;
}

.layout-mobile .cardOverlayButton {
    padding: unset;
    margin: 5px;
}

.layout-mobile .cardOverlayButtonIcon {
    background: unset !important;
}

.layout-desktop .cardOverlayContainer > .cardOverlayButton-br .cardOverlayButton {
    padding: unset;
    margin: 5px;
}

.defaultCardBackground1,
.defaultCardBackground2,
.defaultCardBackground3,
.defaultCardBackground4,
.defaultCardBackground5,
.cardOverlayContainer > .cardOverlayFab-primary {
    background-color: var(--theme-menu-background-colour);
    font-size: 110%;
}

.button-submit:focus,
.paper-icon-button-light:hover:not(:disabled, .btnDelete),
.raised:hover,
.emby-tab-button:hover,
.detailButton:hover,
.emby-tab-button.show-focus:focus,
.paper-icon-button-light.show-focus:focus,
.emby-button.show-focus:focus,
.alphaPickerButton-tv:focus,
#skipIntro .emby-button:hover,
.multiSelectCheckboxOutline {
    border-radius: var(--theme-roundness) !important;
    transform: unset !important;
    -webkit-transform: unset !important;
    -moz-transform: unset !important;
    -o-transform: unset !important;
    -ms-transform: unset !important;
    color: var(--theme-text-colour);
    background-color: var(--theme-menu-shadow-colour) !important;
}

.layout-tv .itemDetailsGroup .emby-button.show-focus:focus {
    padding: 5px 10px;
}

/* User Settings */

.readOnlyContent h2,
.sectionTitle,
.dashboardSection h3,
.MuiListSubheader-root {
    font-weight: bold;
}

.listItem-border,
.itemSelectionPanel {
    border: unset;
}

.listItem {
    padding-left: 1.2em !important;
}

.listItem:hover,
.MuiButtonBase-root,
.MuiButtonBase-root:hover,
.emby-tab-button,
progress {
    border-radius: var(--theme-roundness);
}

.collapseContent,
.formDialogFooter:not(.formDialogFooter-clear),
.formDialogHeader:not(.formDialogHeader-clear),
.paperList,
.visualCardBox,
.emby-select-withcolor,
.emby-input,
.emby-textarea {
    background-color: var(--theme-menu-background-colour);
    border-radius: var(--theme-roundness);
    box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
    border: unset;
    padding: 10px;
}

.emby-select[disabled] {
    box-shadow: unset;
}

.trackSelections .selectContainer .detailTrackSelect {
    padding: 0 10px;
}

/* Content Details */

.layout-desktop .detailImageContainer .card {
    width: 250px;
    max-width: unset;
    top: 1.5em;
    left: 0;
}

/* Backwards Compatibility for versions before 10.11.0 */
.layout-desktop .infoWrapper .detailImageContainer .card {
    padding-top: 8.5em;
}

.layout-desktop .detailPagePrimaryContent {
    padding-top: 135px;
    padding-left: 300px;
    min-height: 325px;
}

.layout-desktop .mainDetailButtons {
    margin-top: 350px;
    margin-left: 292px;
    position: absolute;
}

.layout-mobile .mainDetailButtons {
    display: flex;
    flex-flow: wrap;
    gap: 10px;
}

.mainDetailButtons .detailButton {
    display: inline-flex;
    align-items: center;
    padding-left: 50px;
    position: relative;
}

.btnPlay .detailButton-content:before {
    content: "Play";
}

.btnReplay .detailButton-content:before {
    content: "Replay";
}

.btnDownload .detailButton-content:before {
    content: "Download";
}

.btnPlayTrailer .detailButton-content:before {
    content: "Trailer";
}

.btnInstantMix .detailButton-content:before {
    content: "Instant Mix";
}

.btnShuffle .detailButton-content:before {
    content: "Shuffle";
}

.btnCancelSeriesTimer .detailButton-content:before {
    content: "Cancel Programme";
}

.btnCancelTimer .detailButton-content:before {
    content: "Stop Recording";
}

.btnPlaystate .detailButton-content:before {
    content: "Watched";
}

.btnUserRating .detailButton-content:before {
    content: "Favourite";
}

.btnSplitVersions .detailButton-content:before {
    content: "Split Versions";
}

.btnMoreCommands .detailButton-content:before {
    content: "Options";
}

.detailButton-content:before {
    position: relative;
    margin-left: 30px;
}

.detailButton-icon:before {
    position: absolute;
    top: 7px;
    left: 7px;
}

.mainDetailButtons .material-icons {
    height: unset;
}

.layout-desktop .detailPagePrimaryContainer,
.layout-desktop .detailPageContent {
    padding-left: 3.3% !important;
}

.detailRibbon {
    background: unset;
    padding-left: 0 !important;
}

.layout-desktop .infoWrapper {
    padding-top: 226px;
    padding-left: 300px;
}

.itemBackdrop::before {
    content: '';
    position: absolute;
    top: 0;        /* cover the full element */
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(180deg, transparent 5%, var(--theme-background-colour));
    pointer-events: none; /* ensures it's non-interactive */
    z-index: 1; /* sits on top of the image */
}

.layout-mobile .itemBackdrop {
    margin-top: unset;
    -webkit-animation: backdrop-fadein .8s ease-in normal both;
    animation: backdrop-fadein .8s ease-in normal both;
}

.layout-mobile .detailImageContainer .card {
    filter: unset;
    -webkit-filter: unset;
    -moz-filter: unset;
    -o-filter: unset;
    -ms-filter: unset;
    padding-left: 2em;
}

.layout-desktop .detailLogo {
    left: 3%;
    right: unset;
    z-index: 1;
}

.layout-desktop .backgroundContainer.withBackdrop,
.MuiPaper-root,
.MuiTabs-indicator {
    background-color: unset;
    background-image: unset;
    box-shadow: unset;
}

.layout-desktop .backdropImage {
    filter: blur(5px);
    -webkit-filter: blur(5px);
    -moz-filter: blur(5px);
    -o-filter: blur(5px);
    -ms-filter: blur(5px);
}

.darkenContent {
    backdrop-filter: blur(5px) brightness(0.75);
    -webkit-backdrop-filter: blur(5px) brightness(0.75);
    -moz-backdrop-filter: blur(5px) brightness(0.75);
    -o-backdrop-filter: blur(5px) brightness(0.75);
    -ms-backdrop-filter: blur(5px) brightness(0.75);
    background: -webkit-linear-gradient(180deg, transparent, var(--theme-background-colour));
    background: -moz-linear-gradient(180deg, transparent, var(--theme-background-colour));
    background: -o-linear-gradient(180deg, transparent, var(--theme-background-colour));
    background: -ms-linear-gradient(180deg, transparent, var(--theme-background-colour));
    background: linear-gradient(180deg, transparent, var(--theme-background-colour));
}

.itemsContainer-tv {
    margin-left: 10px;
}

/* Admin Settings */

#btnRestartServer {
    box-shadow: inset 0 1px var(--theme-restart-colour) !important;
}

#btnRestartServer:hover,
.notifications,
.MuiChip-filledInfo {
    color: var(--theme-text-colour) !important;
    background-color: var(--theme-restart-colour) !important;
}

#btnShutdown,
.btnDelete {
    box-shadow: inset 0 1px var(--theme-shutdown-colour) !important;
}

#btnShutdown:hover,
.btnDelete:hover,
.notification_important,
.MuiChip-filledError {
    color: var(--theme-text-colour) !important;
    background-color: var(--theme-shutdown-colour) !important;
}

.listItemIcon:not(.listItemIcon-transparent) {
    border-radius: var(--theme-roundness);
}

.sessionCardButtons {
    margin: .29em 0;
}

.dashboardSection .cardContent {
    border-top-left-radius: var(--theme-roundness);
    border-top-right-radius: var(--theme-roundness);
}

div[data-role="controlgroup"] a[data-role="button"]:first-child {
    border-bottom-left-radius: var(--theme-roundness);
    border-top-left-radius: var(--theme-roundness);
}

div[data-role="controlgroup"] a[data-role="button"]:last-child {
    border-bottom-right-radius: var(--theme-roundness);
    border-top-right-radius: var(--theme-roundness);
}

.dashboardColumn {
    flex-shrink: inherit;
}

/* Base Colours */

.selectLabelFocused,
.textareaLabelFocused,
.inputLabelFocused,
.mdl-slider,
.metadataSidebarIcon,
.button-link,
.guide-date-tab-button.emby-tab-button-active,
.guide-date-tab-button:focus,
#divRunningTasks span,
.MuiAlert-icon,
.listItemBodyText span {
    color: var(--theme-text-colour) !important;
}

.emby-checkbox:checked + span + .checkboxOutline,
.listItemIcon:not(
    .listItemIcon-transparent,
    .notification_important,
    .notifications
),
.guide-channelHeaderCell:focus,
.programCell:focus,
.emby-button.show-focus:focus,
::selection,
div[data-role="controlgroup"] a.ui-btn-active,
.MuiAvatar-root,
.selectionCommandsPanel {
    background-color: var(--theme-base-colour) !important;
}

.emby-checkbox + span + .checkboxOutline,
.emby-checkbox:checked + span + .checkboxOutline,
.emby-checkbox:focus:not(:checked) + span + .checkboxOutline,
.mdl-spinner__layer-1,
.mdl-spinner__layer-2,
.mdl-spinner__layer-3,
.mdl-spinner__layer-4 {
    border-color: var(--theme-base-colour) !important;
}

.mdl-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    background: transparent;
}

.mdl-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 0;
    height: 0;
    background: transparent;
    cursor: pointer;
}

.mdl-slider::-moz-range-thumb {
    width: 0;
    height: 0;
    background: transparent;
    cursor: pointer;
}

.mdl-slider::-ms-thumb {
    width: 0;
    height: 0;
    background: transparent;
    cursor: pointer;
}

.mdl-slider-background-flex,
.mdl-slider-background-lower,
.mdl-slider-background-upper {
    border-radius: var(--theme-roundness);
    box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
    height: 10px;
}

/* Chapter Markers */
.sliderMarkerContainer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 10px;
    pointer-events: none;
    z-index: 1;
}

.sliderMarker {
    position: absolute;
    top: 0;
    width: 2px;
    height: 10px;
    background-color: var(--theme-chapter-marker-colour);
    opacity: 0.6;
    border-radius: 1px;
    pointer-events: auto;
    cursor: pointer;
    transition: opacity 0.2s ease, width 0.2s ease, background-color 0.2s ease;
}

.sliderMarker.unwatched {
    background-color: var(--theme-chapter-marker-colour);
}

.sliderMarker.watched {
    background-color: var(--theme-chapter-marker-watched-colour);
}

.mdl-slider-background-upper {
    margin-left:  -3px;
}

.mdl-slider-background-flex-container {
    top: 5px;
}

.innerCardFooter .itemProgressBarForeground,
.playbackProgress > div,
.mdl-slider-background-lower,
.iconOsdProgressInner,
.taskProgressInner,
progress {
    background-color: var(--theme-progress-bar-colour) !important;
}

/* These need to remain separate for browser compatibility */
progress::-moz-progress-bar {
    background-color: var(--theme-progress-bar-colour);
}
progress::-webkit-progress-bar {
    background-color: var(--theme-progress-bar-colour);
}
progress::-ms-thumb {
    background-color: var(--theme-progress-bar-colour);
}

.transcodingProgress > div {
    background-color: var(--theme-progress-bar-transcoding-colour) !important;
}

.innerCardFooter .itemProgressBar,
.backgroundProgress > div,
.mdl-slider-background-flex,
.taskProgressOuter,
progress {
    background-color: var(--theme-progress-bar-background-colour) !important;
}

.layout-desktop .dashboardDocument .content-primary:not(.layout-desktop #dashboardPage .content-primary) {
    padding-left: 2.5em;
    padding-right: 2.5em;
}

[dir="ltr"] .formDialogHeaderTitle:first-child {
    margin-left: unset;
}

/* Login Form */

#loginPage {
    background-color: var(--theme-menu-background-colour);
    border-radius: var(--theme-roundness);
    box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
    padding: unset !important;
    max-width: 750px;
    max-height: 500px;
    margin: 150px auto 0;
}

.manualLoginForm .raised.button-submit.block.emby-button {
    margin-bottom: -3px;
}

.chapterThumbTextContainer {
    width: fit-content;
    margin: auto;
}

.chapterThumbText {
    width: fit-content;
}
