Files
Tolfin/theme/tolfin.css
2026-02-19 16:35:31 +03:00

1213 lines
38 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
========================================
TOLFIN - Полная тема для Jellyfin
========================================
Модернизированная тема с кастомными шрифтами,
плавными анимациями и адаптивным дизайном.
Включает все модули в одном файле.
*/
/* ========================================
ПЕРЕМЕННЫЕ ТЕМЫ
======================================== */
/* Определяем корневые CSS-переменные для цветовой палитры */
:root {
/* Цветовая палитра */
--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;
/* Общие параметры внешнего вида */
--theme-roundness: .75rem;
--theme-blur: 16px;
}
/* ========================================
МОДУЛЬ: CUSTOM BANNER & LOGO
======================================== */
/* Определяем URL для кастомного баннера и логотипа */
:root {
--banner-url: url('https://git.tolchin.pro/Oleg/Tolfin/raw/branch/union/assets/banner.png');
--logo-url: url('https://git.tolchin.pro/Oleg/Tolfin/raw/branch/union/assets/logo.png');
}
/* Применяем кастомный баннер к заголовку страницы */
.pageTitleWithDefaultLogo {
background-image: var(--banner-url) !important;
}
/* Применяем кастомный логотип к экрану загрузки */
.splashLogo {
background-image: var(--logo-url) !important;
}
/* ========================================
МОДУЛЬ: COUNT INDICATORS
======================================== */
/* Определяем переменные для индикаторов счётчиков */
:root {
--show-count-indicators: flex; /* none для скрытия */
--count-indicator-colour: rgba(200, 200, 200, 0.75);
--played-indicator-colour: rgba(32, 139, 36, 0.75);
}
/* Управляем отображением индикаторов счётчиков */
.countIndicator {
display: var(--show-count-indicators);
}
/* Применяем цвет ко всем индикаторам счётчиков */
.countIndicator,
.fullSyncIndicator,
.mediaSourceIndicator,
.playedIndicator {
background: var(--count-indicator-colour);
}
/* Применяем отдельный цвет к индикатору просмотренного */
.playedIndicator {
background: var(--played-indicator-colour);
}
/* ========================================
БАЗОВЫЕ СТИЛИ
======================================== */
/* Убираем стандартный контур фокуса */
*:focus-visible {
outline: none;
}
/* Изменяем цвета фона для основных контейнеров */
.backgroundContainer,
.mainDrawer,
.drawer-open,
.nowPlayingPlaylist,
.nowPlayingContextMenu,
html {
background-color: var(--theme-background-colour);
}
/* ========================================
ПЕРЕОФОРМЛЕНИЕ ЗАГОЛОВКА
======================================== */
/* Настраиваем отступ для заголовка страницы на десктопе */
.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: 1.1112em !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;
}
/* Медиа-запрос для экранов шириной до 1599px */
@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;
}
}
/* Настраиваем ширину для секции вкладок на TV */
.layout-tv .sectionTabs {
width: unset;
}
/* Медиа-запрос для экранов шириной от 100em */
@media (min-width: 100em) {
/* Сбрасываем отступ сверху для вкладок на TV */
.layout-tv .headerTabs {
margin-top: unset;
}
/* Настраиваем отступ сверху для вкладок на мобильных устройствах */
.layout-mobile .headerTabs {
margin-top: -1.3em;
}
}
/* Медиа-запрос для экранов шириной до 100em */
@media (max-width: 100em) {
/* Настраиваем ширину и размер шрифта для секции вкладок на TV */
.layout-tv .sectionTabs {
width: fit-content;
align-self: center;
font-size: 125%;
}
}
/* Медиа-запрос для экранов шириной до 50em */
@media (max-width: 50em) {
/* Делаем кнопку домашней библиотеки на всю ширину */
.homeLibraryButton {
width: 100% !important;
}
}
/* ========================================
МОДУЛЬ: STATIC SIDEBAR
======================================== */
/* Делаем боковую панель статичной на десктопе */
.layout-desktop .mainDrawer,
.MuiDrawer-paperAnchorLeft {
left: 0 !important;
top: 0;
width: 250px !important;
background-color: var(--theme-sidebar-background-colour) !important;
z-index: 100;
}
/* Скрываем кнопку меню и кнопку домой на десктопе */
.layout-desktop .mainDrawerButton,
.layout-desktop .headerHomeButton {
display: none;
}
/* Настраиваем отступы для страниц библиотеки на десктопе */
.layout-desktop .libraryPage:not(#editItemMetadataPage) {
margin-left: 250px;
width: calc(100% - 250px);
}
/* Настраиваем отступы для контейнера слайдов на десктопе */
.layout-desktop #slides-container {
margin-left: 320px;
width: calc(100% - 385px);
}
/* Скрываем боковую панель в определённых режимах */
.layout-desktop .hide-scroll .mainDrawer,
.layout-desktop .hideMainDrawer .mainDrawer {
display: none;
}
/* ========================================
БАЗОВЫЕ СТИЛИ: БОКОВАЯ ПАНЕЛЬ
======================================== */
/* Убираем анимацию перехода на десктопе */
.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;
}
/* ========================================
БАЗОВЫЕ СТИЛИ: КАРТОЧКИ
======================================== */
/* Настраиваем отступ для заголовка первой секции */
.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;
}
/* Настраиваем отступы для кнопок в деталях на TV */
.layout-tv .itemDetailsGroup .emby-button.show-focus:focus {
padding: 5px 10px;
}
/* ========================================
МОДУЛЬ: MOVING CARDS
======================================== */
/* Добавляем эффект подъёма карточек при наведении */
.cardBox:hover {
transform: translateY(-2.5px);
-webkit-transform: translateY(-2.5px);
-moz-transform: translateY(-2.5px);
-ms-transform: translateY(-2.5px);
-o-transform: translateY(-2.5px);
}
/* ========================================
БАЗОВЫЕ СТИЛИ: НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ
======================================== */
/* Делаем заголовки жирными */
.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;
}
/* Убираем тень для отключённого select */
.emby-select[disabled] {
box-shadow: unset;
}
/* Настраиваем отступы для select выбора треков */
.trackSelections .selectContainer .detailTrackSelect {
padding: 0 10px;
}
/* ========================================
БАЗОВЫЕ СТИЛИ: ДЕТАЛИ КОНТЕНТА
======================================== */
/* Настраиваем размер и позицию изображения карточки на десктопе */
.layout-desktop .detailImageContainer .card {
width: 250px;
max-width: unset;
top: 1.5em;
left: 0;
}
/* Обратная совместимость для версий до 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;
}
/* Сбрасываем высоту для material-icons */
.mainDetailButtons .material-icons {
height: unset;
}
/* Настраиваем отступы для контейнеров деталей на десктопе */
.layout-desktop .detailPagePrimaryContainer,
.layout-desktop .detailPageContent {
padding-left: 3.3% !important;
}
/* Убираем фон для ленты деталей */
.detailRibbon {
background: unset;
padding-left: 0 !important;
}
/* Настраиваем отступы для info-обёртки на десктопе */
.layout-desktop .infoWrapper {
padding-top: 226px;
padding-left: 300px;
}
/* Добавляем градиент к заднему фону */
.itemBackdrop::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, transparent 5%, var(--theme-background-colour));
pointer-events: none;
z-index: 1;
}
/* Настраиваем анимацию и отступы для заднего фона на мобильных устройствах */
.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;
}
/* Убираем фон и тень для элементов Material UI */
.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));
}
/* Настраиваем отступ для контейнера TV */
.itemsContainer-tv {
margin-left: 10px;
}
/* ========================================
БАЗОВЫЕ СТИЛИ: АДМИН-НАСТРОЙКИ
======================================== */
/* Настраиваем цвет кнопки перезапуска сервера */
#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;
}
/* ========================================
БАЗОВЫЕ СТИЛИ: БАЗОВЫЕ ЦВЕТА
======================================== */
/* Настраиваем цвет для фокусированных элементов */
.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;
}
/* Убираем стандартный ползунок для WebKit */
.mdl-slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 0;
height: 0;
background: transparent;
cursor: pointer;
}
/* Убираем стандартный ползунок для Firefox */
.mdl-slider::-moz-range-thumb {
width: 0;
height: 0;
background: transparent;
cursor: pointer;
}
/* Убираем стандартный ползунок для IE/Edge */
.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;
}
/* ========================================
МАРКЕРЫ ГЛАВ
======================================== */
/* Настраиваем контейнер для маркеров глав */
.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;
}
/* Совместимость с браузерами для прогресс-бара */
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;
}
/* ========================================
МОДУЛЬ: FLOATING PROGRESS
======================================== */
/* Определяем переменные для плавающего прогресса */
:root {
--floating-progress-roundness: .75rem;
--floating-progress-height: 10px;
}
/* Настраиваем отступ снизу для деталей текущего воспроизведения */
.sessionNowPlayingDetails {
padding-bottom: 10px;
}
/* Делаем прогресс-бары плавающими с закруглёнными углами */
.fullInnerCardFooter,
.activeSession .backgroundProgress,
.activeSession .playbackProgress,
.activeSession .transcodingProgress {
width: 95%;
bottom: 10px;
margin: 0 auto;
height: var(--floating-progress-height);
border-radius: var(--floating-progress-roundness) !important;
-webkit-border-radius: var(--floating-progress-roundness) !important;
-moz-border-radius: var(--floating-progress-roundness) !important;
}
/* Настраиваем высоту и тень для прогресс-бара */
.itemProgressBar {
height: var(--floating-progress-height);
box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
-webkit-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
-moz-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
}
/* Настраиваем тень для элементов прогресса */
.playbackProgress > div,
.backgroundProgress > div,
.transcodingProgress > div {
box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
-webkit-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
-moz-box-shadow: inset 0 1px var(--theme-menu-shadow-colour);
border-radius: var(--floating-progress-roundness);
-webkit-border-radius: var(--floating-progress-roundness);
-moz-border-radius: var(--floating-progress-roundness);
}
/* ========================================
БАЗОВЫЕ СТИЛИ: ДОПОЛНИТЕЛЬНО
======================================== */
/* Настраиваем отступы для контента документа дашборда */
.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;
}
/* ========================================
ФОРМА ВХОДА
======================================== */
/* Настраиваем стиль страницы входа */
#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;
}
/* ========================================
МОДУЛЬ: FORGOT PASSWORD
======================================== */
/* Скрываем кнопку сброса пароля и "Забыли пароль" */
#btnResetPassword,
.btnForgotPassword {
display: none !important;
}
/* Настраиваем максимальную высоту страницы входа */
#loginPage {
max-height: 450px;
}
/* ========================================
МОДУЛЬ: HIDE MY MEDIA
======================================== */
/* Скрываем заголовок секции "Мои медиа" */
#indexPage .section0 .sectionTitle {
display: none;
}
/* Настраиваем отступ сверху для первой секции */
#indexPage .section0 {
padding-top: 1em;
}
/* Настраиваем отступ сверху для вертикальной секции */
#indexPage .verticalSection.section0 {
padding-top: 3em;
}
/* ========================================
МОДУЛЬ: CENTRAL LIBRARIES SMALL
======================================== */
/* Центрируем секцию "Мои медиа (small)" на главной странице */
#indexPage .section0 .itemsContainer.padded-left.padded-right {
justify-content: center !important;
padding-top: 15px !important;
}
/* ========================================
МОДУЛЬ: SMALLER CAST
======================================== */
/* Делаем карточки актёров меньше */
#castContent .card.overflowPortraitCard.personCard.card-hoverable.card-withuserdata {
width: 4.2cm;
font-size: 90%;
}
/* Настраиваем размер фона для карточек актёров */
#castContent .cardContent-button.cardImageContainer.coveredImage.cardContent.cardContent-shadow.itemAction.lazy {
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground1.cardContent.cardContent-shadow.itemAction {
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground2.cardContent.cardContent-shadow.itemAction {
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground3.cardContent.cardContent-shadow.itemAction {
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground4.cardContent.cardContent-shadow.itemAction {
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground5.cardContent.cardContent-shadow.itemAction {
background-size: cover;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
/* Настраиваем размер масштабируемой части карточки актёра */
#castContent .cardScalable {
width: 3.8cm;
height: 3.8cm;
}
/* Настраиваем позицию кнопок оверлея */
#castContent .cardOverlayButton-br {
bottom: 4%;
right: 15%;
width: 70%;
}
/* Настраиваем отступ для кнопок оверлея */
#castContent .cardOverlayButton.cardOverlayButton-hover.itemAction.paper-icon-button-light {
margin: auto;
}
/* Убираем фон для padders карточек актёров */
#castContent .cardBox:not(.visualCardBox) .cardPadder {
background-color: unset;
}
/* Убираем тень для padders и контента карточек актёров */
#castContent .cardBox:not(.visualCardBox) .cardPadder,
#castContent .cardContent-shadow {
box-shadow: unset;
}
/* ========================================
ГЛАВЫ
======================================== */
/* Настраиваем ширину контейнера текста главы */
.chapterThumbTextContainer {
width: fit-content;
margin: auto;
}
/* Настраиваем ширину текста главы */
.chapterThumbText {
width: fit-content;
}