1062 lines
30 KiB
CSS
1062 lines
30 KiB
CSS
/*
|
|
* ========================================
|
|
* CSS PERSONALIZAT PENTRU JELLYFIN SERVER
|
|
* ========================================
|
|
*
|
|
* Autor: EDD
|
|
* Versiune: 1.0
|
|
* Compatibilitate: Jellyfin WebUI (toate versiunile moderne)
|
|
*
|
|
* Descriere: Acest fișier CSS oferă o temă personalizată pentru interfața web
|
|
* Jellyfin, cu îmbunătățiri vizuale și funcționale pentru o experiență mai bună.
|
|
*
|
|
* Instrucțiuni de utilizare:
|
|
* 1. Copiază conținutul acestui fișier
|
|
* 2. Mergi în Dashboard > General > Custom CSS
|
|
* 3. Lipește codul în câmpul "Custom CSS"
|
|
* 4. Salvează setările
|
|
*
|
|
* Notă: Modificările se aplică imediat, fără a fi nevoie să restartezi serverul.
|
|
*/
|
|
|
|
/* ========================================
|
|
* VARIABILE CSS GLOBALE
|
|
* ======================================== */
|
|
:root {
|
|
/* Paleta de culori modernă și profesională */
|
|
--primary-color: #6366f1; /* Indigo modern */
|
|
--primary-light: #818cf8; /* Indigo deschis */
|
|
--primary-dark: #4f46e5; /* Indigo închis */
|
|
--secondary-color: #1f2937; /* Gri închis modern */
|
|
--accent-color: #f59e0b; /* Amber accent */
|
|
--accent-secondary: #10b981; /* Emerald accent */
|
|
|
|
/* Fundaluri cu gradient modern */
|
|
--background-dark: #0f172a; /* Slate foarte închis */
|
|
--background-medium: #1e293b; /* Slate mediu */
|
|
--background-light: #334155; /* Slate deschis */
|
|
--background-card: #1e293b; /* Fundal carduri */
|
|
--background-overlay: rgba(15, 23, 42, 0.95); /* Overlay cu transparență */
|
|
|
|
/* Text cu contrast îmbunătățit */
|
|
--text-primary: #f8fafc; /* Alb cald */
|
|
--text-secondary: #cbd5e1; /* Gri deschis */
|
|
--text-muted: #94a3b8; /* Gri mediu */
|
|
--border-color: #475569; /* Borduri subtile */
|
|
|
|
/* Culori de stare moderne */
|
|
--success-color: #10b981; /* Emerald */
|
|
--warning-color: #f59e0b; /* Amber */
|
|
--error-color: #ef4444; /* Red modern */
|
|
--info-color: #3b82f6; /* Blue modern */
|
|
|
|
/* Dimensiuni și spațiere moderne */
|
|
--border-radius: 12px;
|
|
--border-radius-small: 6px;
|
|
--border-radius-large: 16px;
|
|
--border-radius-xl: 24px;
|
|
|
|
/* Umbre moderne cu blur */
|
|
--shadow-light: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
|
|
--shadow-medium: 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.06);
|
|
--shadow-heavy: 0 10px 15px rgba(0,0,0,0.1), 0 4px 6px rgba(0,0,0,0.05);
|
|
--shadow-xl: 0 20px 25px rgba(0,0,0,0.15), 0 10px 10px rgba(0,0,0,0.04);
|
|
|
|
/* Efecte de blur moderne */
|
|
--blur-light: blur(8px);
|
|
--blur-medium: blur(12px);
|
|
--blur-heavy: blur(16px);
|
|
--blur-xl: blur(24px);
|
|
|
|
/* Tranziții fluide */
|
|
--transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
|
--transition-medium: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
--transition-slow: 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
/* Gradienturi moderne */
|
|
--gradient-primary: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-light) 100%);
|
|
--gradient-accent: linear-gradient(135deg, var(--accent-color) 0%, var(--accent-secondary) 100%);
|
|
--gradient-background: linear-gradient(135deg, var(--background-dark) 0%, var(--background-medium) 100%);
|
|
}
|
|
|
|
/* ========================================
|
|
* STILURI GENERALE PENTRU FUNDAL ȘI LAYOUT
|
|
* ======================================== */
|
|
|
|
/* Fundal principal al aplicației cu gradient modern */
|
|
.backgroundContainer,
|
|
.dialog,
|
|
html {
|
|
background: var(--gradient-background) !important;
|
|
color: var(--text-primary);
|
|
min-height: 100vh;
|
|
}
|
|
|
|
/* Container principal pentru conținut cu blur și overlay */
|
|
.backgroundContainer.withBackdrop,
|
|
.backdropContainer,
|
|
.backgroundContainer {
|
|
background: var(--gradient-background) !important;
|
|
position: relative;
|
|
}
|
|
|
|
/* Adaugă overlay cu blur pentru fundaluri */
|
|
.backgroundContainer.withBackdrop::before,
|
|
.backdropContainer::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: var(--background-overlay);
|
|
backdrop-filter: var(--blur-light);
|
|
z-index: -1;
|
|
}
|
|
|
|
/* Îmbunătățiri pentru imagini de fundal - DOAR fundalurile au blur */
|
|
.backdropImage,
|
|
.backgroundContainer .backdropImage,
|
|
.backdrop,
|
|
.itemBackdrop {
|
|
filter: blur(12px) brightness(0.3) !important;
|
|
opacity: 0.6 !important;
|
|
transition: all var(--transition-slow) !important;
|
|
}
|
|
|
|
/* ELIMINĂ COMPLET BLUR-UL DE PE TOATE IMAGINILE DE CONȚINUT */
|
|
.cardImageContainer img,
|
|
.itemDetailImage img,
|
|
.listItemImage img,
|
|
.cardContent-button img,
|
|
.cardImage,
|
|
.listItemImage,
|
|
.itemDetailImage,
|
|
.cardContent img,
|
|
.listItem img,
|
|
.lazy,
|
|
img {
|
|
filter: none !important;
|
|
opacity: 1 !important;
|
|
visibility: visible !important;
|
|
display: block !important;
|
|
border-radius: var(--border-radius) !important;
|
|
transition: transform var(--transition-medium) !important;
|
|
backdrop-filter: none !important;
|
|
-webkit-filter: none !important;
|
|
}
|
|
|
|
/* Îmbunătățiri pentru scrolling */
|
|
* {
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--primary-color) var(--background-medium);
|
|
}
|
|
|
|
*::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
*::-webkit-scrollbar-track {
|
|
background: var(--background-medium);
|
|
border-radius: var(--border-radius-small);
|
|
}
|
|
|
|
*::-webkit-scrollbar-thumb {
|
|
background: var(--primary-color);
|
|
border-radius: var(--border-radius-small);
|
|
transition: background var(--transition-fast);
|
|
}
|
|
|
|
*::-webkit-scrollbar-thumb:hover {
|
|
background: var(--accent-color);
|
|
}
|
|
|
|
/* ========================================
|
|
* HEADER ȘI NAVIGARE
|
|
* ======================================== */
|
|
|
|
/* Header principal - design glassmorphism modern */
|
|
.skinHeader.focuscontainer-x.skinHeader-withBackground.skinHeader-blurred {
|
|
background: var(--background-overlay) !important;
|
|
backdrop-filter: var(--blur-medium) !important;
|
|
border-bottom: 1px solid var(--border-color);
|
|
box-shadow: var(--shadow-heavy);
|
|
transition: all var(--transition-medium);
|
|
border-radius: 0 0 var(--border-radius-large) var(--border-radius-large);
|
|
}
|
|
|
|
.skinHeader.focuscontainer-x.skinHeader-withBackground.skinHeader-blurred.noHomeButtonHeader {
|
|
background: var(--background-overlay) !important;
|
|
backdrop-filter: var(--blur-medium) !important;
|
|
border-radius: 0 0 var(--border-radius-large) var(--border-radius-large);
|
|
}
|
|
|
|
/* Butoane din header cu design modern - FĂRĂ BLUR */
|
|
.headerButton {
|
|
color: var(--text-primary) !important;
|
|
transition: all var(--transition-fast);
|
|
border-radius: var(--border-radius);
|
|
margin: 0 6px;
|
|
padding: 8px 12px !important;
|
|
background: rgba(255, 255, 255, 0.05) !important;
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.headerButton:hover {
|
|
background: var(--gradient-primary) !important;
|
|
color: white !important;
|
|
transform: translateY(-2px) scale(1.05);
|
|
box-shadow: var(--shadow-medium);
|
|
border-color: var(--primary-light);
|
|
}
|
|
|
|
/* Meniu lateral (drawer) cu glassmorphism */
|
|
.mainDrawer {
|
|
background: var(--background-overlay) !important;
|
|
backdrop-filter: var(--blur-medium) !important;
|
|
border-right: 1px solid var(--border-color);
|
|
box-shadow: var(--shadow-xl);
|
|
border-radius: 0 var(--border-radius-large) var(--border-radius-large) 0;
|
|
}
|
|
|
|
.mainDrawer-scrollContainer {
|
|
color: var(--text-primary) !important;
|
|
padding: 16px 8px;
|
|
}
|
|
|
|
/* Opțiuni din meniul lateral */
|
|
.navMenuOption {
|
|
color: var(--text-secondary) !important;
|
|
transition: all var(--transition-fast);
|
|
border-radius: var(--border-radius-small);
|
|
margin: 2px 8px;
|
|
}
|
|
|
|
.navMenuOption:hover {
|
|
background-color: var(--background-light) !important;
|
|
color: var(--text-primary) !important;
|
|
transform: translateX(4px);
|
|
}
|
|
|
|
.navMenuOption-selected {
|
|
background: var(--primary-color) !important;
|
|
color: white !important;
|
|
box-shadow: var(--shadow-light);
|
|
}
|
|
|
|
/* ========================================
|
|
* TABURI ȘI BUTOANE
|
|
* ======================================== */
|
|
|
|
/* Taburi principale - design îmbunătățit */
|
|
.headerTabs.sectionTabs {
|
|
text-size-adjust: 110%;
|
|
font-size: 110%;
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
|
|
.emby-tab-button {
|
|
padding: 1.75em 1.7em;
|
|
color: var(--text-secondary) !important;
|
|
transition: all var(--transition-fast);
|
|
border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;
|
|
margin: 0 2px;
|
|
position: relative;
|
|
}
|
|
|
|
.emby-tab-button:hover {
|
|
color: var(--text-primary) !important;
|
|
background-color: var(--background-light);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.emby-tab-button.emby-tab-button-active {
|
|
color: var(--primary-color) !important;
|
|
background-color: var(--background-medium);
|
|
border-bottom: 3px solid var(--primary-color);
|
|
}
|
|
|
|
/* Butoane generale cu design modern */
|
|
.button-submit,
|
|
.raised.emby-button {
|
|
background: var(--gradient-primary) !important;
|
|
color: white !important;
|
|
border: none !important;
|
|
border-radius: var(--border-radius-large) !important;
|
|
padding: 14px 28px !important;
|
|
font-weight: 600 !important;
|
|
transition: all var(--transition-fast) !important;
|
|
box-shadow: var(--shadow-medium) !important;
|
|
text-transform: none;
|
|
letter-spacing: 0.3px;
|
|
font-size: 0.95rem !important;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.button-submit::before,
|
|
.raised.emby-button::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: -100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
|
|
transition: left var(--transition-medium);
|
|
}
|
|
|
|
.button-submit:hover::before,
|
|
.raised.emby-button:hover::before {
|
|
left: 100%;
|
|
}
|
|
|
|
.button-submit:hover,
|
|
.raised.emby-button:hover {
|
|
transform: translateY(-3px) scale(1.02) !important;
|
|
box-shadow: var(--shadow-heavy) !important;
|
|
background: var(--gradient-accent) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* CARDURI ȘI ELEMENTE MEDIA
|
|
* ======================================== */
|
|
|
|
/* Carduri pentru filme, seriale, etc. cu design modern - FĂRĂ BLUR */
|
|
.cardBox {
|
|
background: var(--background-card) !important;
|
|
border: 1px solid rgba(255, 255, 255, 0.1) !important;
|
|
border-radius: var(--border-radius-large) !important;
|
|
transition: all var(--transition-medium) !important;
|
|
box-shadow: var(--shadow-medium) !important;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.cardBox::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: linear-gradient(135deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.02) 100%);
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.cardBox:hover {
|
|
transform: translateY(-6px) scale(1.03) !important;
|
|
box-shadow: var(--shadow-xl) !important;
|
|
border-color: var(--primary-light) !important;
|
|
background: var(--background-light) !important;
|
|
}
|
|
|
|
/* Imagini din carduri - design îmbunătățit */
|
|
.cardContent-button,
|
|
.itemDetailImage,
|
|
.cardImageContainer {
|
|
border-radius: var(--border-radius-large) !important;
|
|
overflow: hidden !important;
|
|
transition: all var(--transition-medium) !important;
|
|
position: relative;
|
|
z-index: 2;
|
|
}
|
|
|
|
.cardContent-button:hover {
|
|
transform: scale(1.05) !important;
|
|
box-shadow: var(--shadow-medium) !important;
|
|
}
|
|
|
|
/* Asigură vizibilitatea COMPLETĂ a imaginilor - FĂRĂ BLUR */
|
|
.cardImageContainer img,
|
|
.cardContent-button img,
|
|
.itemDetailImage img,
|
|
.cardImage,
|
|
.listItemImage img,
|
|
.lazy img {
|
|
filter: none !important;
|
|
opacity: 1 !important;
|
|
visibility: visible !important;
|
|
backdrop-filter: none !important;
|
|
-webkit-filter: none !important;
|
|
transition: transform var(--transition-medium) !important;
|
|
}
|
|
|
|
.cardImageContainer:hover img,
|
|
.cardContent-button:hover img,
|
|
.listItemImage:hover img {
|
|
filter: none !important;
|
|
transform: scale(1.02) !important;
|
|
opacity: 1 !important;
|
|
}
|
|
|
|
/* Text din carduri */
|
|
.cardText {
|
|
color: var(--text-primary) !important;
|
|
font-weight: 500 !important;
|
|
}
|
|
|
|
.cardText-secondary {
|
|
color: var(--text-secondary) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* INDICATORI ȘI BADGE-URI
|
|
* ======================================== */
|
|
|
|
/* Indicator pentru conținut vizionat */
|
|
.playedIndicator {
|
|
background: var(--success-color) !important;
|
|
border-radius: 50% !important;
|
|
box-shadow: var(--shadow-light) !important;
|
|
}
|
|
|
|
/* Indicatori transparenți și eleganți */
|
|
.indicator {
|
|
background: rgba(0, 0, 0, 0.7) !important;
|
|
color: white !important;
|
|
border-radius: var(--border-radius-small) !important;
|
|
backdrop-filter: blur(5px) !important;
|
|
}
|
|
|
|
/* Indicatori pentru numărul de episoade */
|
|
.countIndicator {
|
|
background: var(--primary-color) !important;
|
|
color: white !important;
|
|
border-radius: var(--border-radius-large) !important;
|
|
font-weight: 600 !important;
|
|
box-shadow: var(--shadow-light) !important;
|
|
}
|
|
|
|
/* Rating cu stele */
|
|
.starRatingContainer {
|
|
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.3));
|
|
}
|
|
|
|
/* ========================================
|
|
* FORMULARE ȘI INPUTURI
|
|
* ======================================== */
|
|
|
|
/* Câmpuri de input */
|
|
.emby-input,
|
|
.emby-textarea,
|
|
.emby-select {
|
|
background-color: var(--background-light) !important;
|
|
border: 2px solid var(--border-color) !important;
|
|
border-radius: var(--border-radius) !important;
|
|
color: var(--text-primary) !important;
|
|
padding: 12px 16px !important;
|
|
transition: all var(--transition-fast) !important;
|
|
}
|
|
|
|
.emby-input:focus,
|
|
.emby-textarea:focus,
|
|
.emby-select-withcolor {
|
|
border-color: var(--primary-color) !important;
|
|
box-shadow: 0 0 0 3px rgba(0, 164, 220, 0.2) !important;
|
|
background-color: var(--background-medium) !important;
|
|
}
|
|
|
|
/* Placeholder text */
|
|
.emby-input::placeholder,
|
|
.emby-textarea::placeholder {
|
|
color: var(--text-secondary) !important;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
/* ========================================
|
|
* LISTE ȘI TABELE
|
|
* ======================================== */
|
|
|
|
/* Liste generale */
|
|
.paperList {
|
|
background: var(--background-medium) !important;
|
|
border-radius: var(--border-radius) !important;
|
|
border: 1px solid var(--border-color) !important;
|
|
}
|
|
|
|
/* Elemente din listă */
|
|
.listItem {
|
|
border-bottom: 1px solid var(--border-color) !important;
|
|
transition: all var(--transition-fast) !important;
|
|
}
|
|
|
|
.listItem:hover {
|
|
background-color: var(--background-light) !important;
|
|
transform: translateX(4px);
|
|
}
|
|
|
|
.listItem:last-child {
|
|
border-bottom: none !important;
|
|
}
|
|
|
|
/* Text din liste */
|
|
.listItemBodyText {
|
|
color: var(--text-primary) !important;
|
|
}
|
|
|
|
.secondary.listItemBodyText {
|
|
color: var(--text-secondary) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* PAGINA DE LOGIN
|
|
* ======================================== */
|
|
|
|
/* Container pentru pagina de login cu design modern */
|
|
#loginPage {
|
|
background: var(--gradient-background);
|
|
background-size: cover;
|
|
position: relative;
|
|
min-height: 100vh;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Overlay pentru pagina de login cu blur puternic */
|
|
#loginPage::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: var(--background-overlay);
|
|
backdrop-filter: var(--blur-heavy);
|
|
z-index: 0;
|
|
}
|
|
|
|
/* Formular de login - design glassmorphism */
|
|
#loginPage .readOnlyContent,
|
|
#loginPage form {
|
|
max-width: 420px !important;
|
|
background: rgba(30, 41, 59, 0.8) !important;
|
|
backdrop-filter: var(--blur-medium) !important;
|
|
border-radius: var(--border-radius-xl) !important;
|
|
padding: 48px !important;
|
|
box-shadow: var(--shadow-xl) !important;
|
|
border: 1px solid rgba(255, 255, 255, 0.1) !important;
|
|
position: relative;
|
|
z-index: 1;
|
|
margin: 20px;
|
|
}
|
|
|
|
/* Efect de sticlă pentru formular */
|
|
#loginPage .readOnlyContent::before,
|
|
#loginPage form::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
|
|
border-radius: var(--border-radius-xl);
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Titlu login */
|
|
#loginPage h1 {
|
|
color: var(--primary-color) !important;
|
|
text-align: center !important;
|
|
margin-bottom: 30px !important;
|
|
font-weight: 300 !important;
|
|
font-size: 2.5em !important;
|
|
}
|
|
|
|
/* Spațiere pentru formular */
|
|
#loginPage .padded-left.padded-right.padded-bottom-page {
|
|
margin-top: 50px;
|
|
}
|
|
|
|
/* Ascunde butoanele manual și forgot password */
|
|
#loginPage .raised.cancel.block.btnManual.emby-button,
|
|
#loginPage .raised.cancel.block.btnForgotPassword.emby-button {
|
|
display: none;
|
|
}
|
|
|
|
/* ========================================
|
|
* PLAYER VIDEO ȘI CONTROALE
|
|
* ======================================== */
|
|
|
|
/* Bara de progres video cu design modern */
|
|
.nowPlayingBar {
|
|
background: var(--background-overlay) !important;
|
|
backdrop-filter: var(--blur-medium) !important;
|
|
border-top: 1px solid var(--border-color) !important;
|
|
box-shadow: var(--shadow-xl) !important;
|
|
border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
|
|
}
|
|
|
|
/* Controale player */
|
|
.nowPlayingBarCenter {
|
|
color: var(--text-primary) !important;
|
|
}
|
|
|
|
.nowPlayingBarCenter .material-icons {
|
|
color: var(--text-primary) !important;
|
|
transition: all var(--transition-fast) !important;
|
|
}
|
|
|
|
.nowPlayingBarCenter .material-icons:hover {
|
|
color: var(--primary-color) !important;
|
|
transform: scale(1.1) !important;
|
|
}
|
|
|
|
/* Slider pentru volum */
|
|
.nowPlayingBarVolumeSliderContainer .mdl-slider {
|
|
background: var(--primary-color) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* EPISOADE ȘI PREVIEW-URI
|
|
* ======================================== */
|
|
|
|
/* Preview-uri episoade mai compacte */
|
|
.listItemImage.listItemImage-large.itemAction.lazy {
|
|
height: 110px !important;
|
|
border-radius: var(--border-radius) !important;
|
|
transition: all var(--transition-medium) !important;
|
|
}
|
|
|
|
.listItemImage.listItemImage-large.itemAction.lazy:hover {
|
|
transform: scale(1.05) !important;
|
|
box-shadow: var(--shadow-medium) !important;
|
|
}
|
|
|
|
.listItem-content {
|
|
height: 115px !important;
|
|
padding: 12px !important;
|
|
}
|
|
|
|
.secondary.listItem-overview.listItemBodyText {
|
|
height: 61px !important;
|
|
margin: 0 !important;
|
|
color: var(--text-secondary) !important;
|
|
line-height: 1.4 !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* CAST & CREW STILIZAT
|
|
* ======================================== */
|
|
|
|
/* Carduri pentru cast - design circular */
|
|
#castContent .card.overflowPortraitCard.personCard.card-hoverable.card-withuserdata,
|
|
#castContent .card.overflowPortraitCard.personCard.card-withuserdata {
|
|
width: 120px !important;
|
|
font-size: 90% !important;
|
|
transition: all var(--transition-medium) !important;
|
|
}
|
|
|
|
#castContent .card.overflowPortraitCard.personCard:hover {
|
|
transform: translateY(-4px) scale(1.05) !important;
|
|
box-shadow: var(--shadow-heavy) !important;
|
|
}
|
|
|
|
/* Imagini circulare pentru cast */
|
|
#castContent .cardContent-button.cardImageContainer.coveredImage.cardContent.cardContent-shadow.itemAction.lazy,
|
|
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground1.cardContent.cardContent-shadow.itemAction,
|
|
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground2.cardContent.cardContent-shadow.itemAction,
|
|
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground3.cardContent.cardContent-shadow.itemAction,
|
|
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground4.cardContent.cardContent-shadow.itemAction,
|
|
#castContent .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.defaultCardBackground5.cardContent.cardContent-shadow.itemAction {
|
|
background-size: cover !important;
|
|
border-radius: 50% !important;
|
|
border: 3px solid var(--border-color) !important;
|
|
transition: all var(--transition-medium) !important;
|
|
}
|
|
|
|
#castContent .cardContent-button:hover {
|
|
border-color: var(--primary-color) !important;
|
|
box-shadow: 0 0 0 3px rgba(0, 164, 220, 0.3) !important;
|
|
}
|
|
|
|
#castContent .cardScalable {
|
|
width: 100px !important;
|
|
height: 100px !important;
|
|
border-radius: 50% !important;
|
|
}
|
|
|
|
#castContent .cardOverlayContainer.itemAction {
|
|
border-radius: 50% !important;
|
|
}
|
|
|
|
/* Butoane overlay pentru cast */
|
|
#castContent .cardOverlayButton-br {
|
|
bottom: 4% !important;
|
|
right: 15% !important;
|
|
width: 70% !important;
|
|
}
|
|
|
|
#castContent .cardOverlayButton.cardOverlayButton-hover.itemAction.paper-icon-button-light {
|
|
margin: auto !important;
|
|
background: var(--primary-color) !important;
|
|
color: white !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* ÎMBUNĂTĂȚIRI PENTRU MOBILE
|
|
* ======================================== */
|
|
|
|
/* Afișează linkurile externe pe mobile */
|
|
.layout-mobile .itemExternalLinks {
|
|
display: block !important;
|
|
}
|
|
|
|
/* Taburi mai mari pentru mobile */
|
|
@media (max-width: 768px) {
|
|
.emby-tab-button {
|
|
padding: 2em 1.5em !important;
|
|
font-size: 1.1em !important;
|
|
}
|
|
|
|
.headerTabs.sectionTabs {
|
|
font-size: 120% !important;
|
|
}
|
|
|
|
/* Carduri mai mari pe mobile */
|
|
.cardBox {
|
|
margin: 8px !important;
|
|
}
|
|
|
|
/* Formular login responsive */
|
|
#loginPage .readOnlyContent,
|
|
#loginPage form {
|
|
max-width: 90% !important;
|
|
margin: 20px auto !important;
|
|
padding: 30px 20px !important;
|
|
}
|
|
}
|
|
|
|
/* ========================================
|
|
* CAROUSEL ȘI SCROLLING
|
|
* ======================================== */
|
|
|
|
/* Dezactivează carousel pentru biblioteci - layout fix */
|
|
@media all and (min-width: 50em) {
|
|
.homePage .emby-scroller {
|
|
margin-right: 0 !important;
|
|
}
|
|
|
|
.homePage .emby-scrollbuttons {
|
|
display: none !important;
|
|
}
|
|
|
|
.homePage .itemsContainer {
|
|
flex-wrap: wrap !important;
|
|
justify-content: flex-start !important;
|
|
gap: 16px !important;
|
|
}
|
|
}
|
|
|
|
/* Butoane scroll îmbunătățite */
|
|
.emby-scrollbuttons {
|
|
position: absolute !important;
|
|
left: 0 !important;
|
|
top: 0 !important;
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
padding: 0 !important;
|
|
justify-content: space-between !important;
|
|
pointer-events: none !important;
|
|
}
|
|
|
|
.emby-scrollbuttons-button {
|
|
pointer-events: initial !important;
|
|
background: var(--primary-color) !important;
|
|
color: white !important;
|
|
border-radius: 50% !important;
|
|
width: 48px !important;
|
|
height: 48px !important;
|
|
box-shadow: var(--shadow-medium) !important;
|
|
transition: all var(--transition-fast) !important;
|
|
}
|
|
|
|
.emby-scrollbuttons-button:hover {
|
|
background: var(--accent-color) !important;
|
|
transform: scale(1.1) !important;
|
|
box-shadow: var(--shadow-heavy) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* PERSONALIZĂRI PENTRU SECȚIUNI SPECIFICE
|
|
* ======================================== */
|
|
|
|
/* Ascunde elemente nedorite */
|
|
.headerHomeButton {
|
|
display: none !important;
|
|
}
|
|
|
|
.headerCastButton {
|
|
display: none !important;
|
|
}
|
|
|
|
.headerSyncButton {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Personalizează titlurile secțiunilor */
|
|
.sectionTitleContainer h2 {
|
|
color: var(--primary-color) !important;
|
|
font-weight: 600 !important;
|
|
font-size: 1.8em !important;
|
|
margin-bottom: 16px !important;
|
|
}
|
|
|
|
/* Next Up section */
|
|
div.nextUpSection {
|
|
background: var(--background-medium) !important;
|
|
border-radius: var(--border-radius-large) !important;
|
|
padding: 20px !important;
|
|
margin: 16px 0 !important;
|
|
border: 1px solid var(--border-color) !important;
|
|
}
|
|
|
|
/* Similar items section */
|
|
#similarCollapsible {
|
|
background: var(--background-medium) !important;
|
|
border-radius: var(--border-radius-large) !important;
|
|
padding: 20px !important;
|
|
margin: 16px 0 !important;
|
|
border: 1px solid var(--border-color) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* ANIMAȚII ȘI EFECTE SPECIALE
|
|
* ======================================== */
|
|
|
|
/* Animație fade-in pentru carduri */
|
|
@keyframes fadeInUp {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.cardBox {
|
|
animation: fadeInUp 0.5s ease-out !important;
|
|
}
|
|
|
|
/* Animație pentru butoane */
|
|
@keyframes pulse {
|
|
0% {
|
|
box-shadow: 0 0 0 0 rgba(0, 164, 220, 0.7);
|
|
}
|
|
70% {
|
|
box-shadow: 0 0 0 10px rgba(0, 164, 220, 0);
|
|
}
|
|
100% {
|
|
box-shadow: 0 0 0 0 rgba(0, 164, 220, 0);
|
|
}
|
|
}
|
|
|
|
.button-submit:focus,
|
|
.raised.emby-button:focus {
|
|
animation: pulse 1.5s infinite !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* TEMA ÎNTUNECATĂ ÎMBUNĂTĂȚITĂ
|
|
* ======================================== */
|
|
|
|
/* Overlay pentru dialoguri cu blur puternic */
|
|
.dialogBackdrop {
|
|
background: rgba(15, 23, 42, 0.9) !important;
|
|
backdrop-filter: var(--blur-heavy) !important;
|
|
}
|
|
|
|
/* Dialoguri cu design glassmorphism */
|
|
.dialog {
|
|
background: var(--background-overlay) !important;
|
|
backdrop-filter: var(--blur-medium) !important;
|
|
border: 1px solid rgba(255, 255, 255, 0.1) !important;
|
|
border-radius: var(--border-radius-xl) !important;
|
|
box-shadow: var(--shadow-xl) !important;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Efect de sticlă pentru dialoguri */
|
|
.dialog::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: linear-gradient(135deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.03) 100%);
|
|
pointer-events: none;
|
|
z-index: -1;
|
|
}
|
|
|
|
/* Titluri în dialoguri */
|
|
.dialog h2,
|
|
.dialog h3 {
|
|
color: var(--primary-color) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* FINALIZARE ȘI OPTIMIZĂRI
|
|
* ======================================== */
|
|
|
|
/* Optimizări pentru performanță */
|
|
* {
|
|
will-change: auto !important;
|
|
}
|
|
|
|
.cardBox,
|
|
.emby-tab-button,
|
|
.headerButton,
|
|
.navMenuOption {
|
|
will-change: transform, box-shadow !important;
|
|
}
|
|
|
|
/* Asigură compatibilitatea cu toate temele */
|
|
.skinHeader,
|
|
.mainDrawer,
|
|
.emby-input,
|
|
.emby-textarea,
|
|
.emby-select,
|
|
.navMenuOption-selected,
|
|
.cardBox,
|
|
.paperList {
|
|
transition: all var(--transition-medium) !important;
|
|
}
|
|
|
|
/* ========================================
|
|
* ÎMBUNĂTĂȚIRI FINALE PENTRU IMAGINI
|
|
* ======================================== */
|
|
|
|
/* ELIMINĂ COMPLET BLUR-UL - Asigură vizibilitatea maximă pentru toate imaginile */
|
|
.cardImage,
|
|
.cardImageContainer .cardImage,
|
|
.listItemImage,
|
|
.itemDetailImage,
|
|
.cardContent img,
|
|
.listItem img,
|
|
.cardImageContainer img,
|
|
.cardContent-button img,
|
|
.listItemImage img,
|
|
.itemDetailImage img,
|
|
.lazy,
|
|
img:not(.backdropImage):not(.backdrop):not(.itemBackdrop) {
|
|
filter: none !important;
|
|
opacity: 1 !important;
|
|
visibility: visible !important;
|
|
display: block !important;
|
|
backdrop-filter: none !important;
|
|
-webkit-filter: none !important;
|
|
}
|
|
|
|
/* Hover effects pentru imagini - FĂRĂ FILTRE */
|
|
.cardImageContainer:hover .cardImage,
|
|
.listItemImage:hover,
|
|
.itemDetailImage:hover,
|
|
.cardImageContainer:hover img,
|
|
.cardContent-button:hover img {
|
|
filter: none !important;
|
|
transform: scale(1.02) !important;
|
|
opacity: 1 !important;
|
|
}
|
|
|
|
/* Îmbunătățiri pentru thumbnail-uri */
|
|
.listItemImageButton,
|
|
.cardContent-button {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border-radius: var(--border-radius-large) !important;
|
|
}
|
|
|
|
.listItemImageButton::after,
|
|
.cardContent-button::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: linear-gradient(135deg, rgba(99, 102, 241, 0.1) 0%, rgba(16, 185, 129, 0.1) 100%);
|
|
opacity: 0;
|
|
transition: opacity var(--transition-fast);
|
|
}
|
|
|
|
.listItemImageButton:hover::after,
|
|
.cardContent-button:hover::after {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* ========================================
|
|
* EFECTE SPECIALE PENTRU PROFESIONALISM
|
|
* ======================================== */
|
|
|
|
/* Animație subtilă pentru loading */
|
|
@keyframes shimmer {
|
|
0% { background-position: -200px 0; }
|
|
100% { background-position: calc(200px + 100%) 0; }
|
|
}
|
|
|
|
.lazy:not([src]) {
|
|
background: linear-gradient(90deg, var(--background-light) 0%, var(--background-medium) 50%, var(--background-light) 100%);
|
|
background-size: 200px 100%;
|
|
animation: shimmer 1.5s infinite;
|
|
}
|
|
|
|
/* REGULĂ FINALĂ - ELIMINĂ ORICE BLUR DE PE IMAGINI */
|
|
img:not(.backdropImage):not(.backdrop):not(.itemBackdrop),
|
|
.cardImage,
|
|
.cardImageContainer *,
|
|
.cardContent-button *,
|
|
.listItemImage *,
|
|
.itemDetailImage *,
|
|
.lazy:not(.backdropImage) {
|
|
filter: none !important;
|
|
backdrop-filter: none !important;
|
|
-webkit-filter: none !important;
|
|
opacity: 1 !important;
|
|
visibility: visible !important;
|
|
}
|
|
|
|
/* Doar fundalurile păstrează blur-ul */
|
|
.backdropImage,
|
|
.backdrop,
|
|
.itemBackdrop,
|
|
.backgroundContainer .backdropImage {
|
|
filter: blur(12px) brightness(0.3) !important;
|
|
}
|
|
|
|
/* Îmbunătățiri pentru focus și accesibilitate */
|
|
*:focus-visible {
|
|
outline: 2px solid var(--primary-color) !important;
|
|
outline-offset: 2px !important;
|
|
border-radius: var(--border-radius-small) !important;
|
|
}
|
|
|
|
/* Mesaj final în CSS */
|
|
/*
|
|
* ========================================
|
|
* SFÂRȘITUL TEMEI PERSONALIZATE JELLYFIN
|
|
* ========================================
|
|
*
|
|
* Această temă modernă oferă:
|
|
* ✓ Design glassmorphism profesional
|
|
* ✓ Imagini complet vizibile și optimizate
|
|
* ✓ Fundaluri cu blur elegant
|
|
* ✓ Animații fluide și moderne
|
|
* ✓ Compatibilitate cu toate dispozitivele
|
|
* ✓ Îmbunătățiri pentru accesibilitate
|
|
* ✓ Optimizări pentru performanță
|
|
* ✓ Paletă de culori contemporană
|
|
*
|
|
* Pentru personalizări suplimentare,
|
|
* modifică variabilele CSS din secțiunea :root
|
|
*
|
|
* Bucură-te de experiența îmbunătățită Jellyfin!
|
|
* Versiune: 2.0 - Modern & Professional
|
|
*/ |