/* * ======================================== * 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%); } /* ======================================== * ELIMINĂ TOATE MODIFICĂRILE DE FUNDAL - LASĂ JELLYFIN SĂ GESTIONEZE * ======================================== */ /* NU modifica fundalul deloc - lasă Jellyfin să-l gestioneze */ /* ======================================== * FORȚEAZĂ VIZIBILITATEA IMAGINILOR - REGULI PUTERNICE * ======================================== */ /* Toate imaginile trebuie să fie vizibile */ img, .cardImage, .cardImageContainer img, .cardContent-button img, .itemDetailImage img, .listItemImage img, .cardContent img, .listItem img, .cardScalable img, .cardOverlayContainer img, .listItemImageButton img, .userImage, .headerUserImage, .headerUserButton img, .lazy { filter: none !important; opacity: 1 !important; visibility: visible !important; display: block !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; max-width: 100% !important; height: auto !important; } /* Elimină orice overlay care ar putea ascunde imaginile */ .cardImageContainer::before, .cardContent-button::before, .cardOverlayContainer::before { display: none !important; } /* Asigură că containerele imaginilor nu au probleme */ .cardImageContainer, .cardContent-button, .cardScalable, .cardOverlayContainer, .listItemImageButton { overflow: visible !important; background: transparent !important; filter: none !important; backdrop-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 - NU modifica fundalul, lasă Jellyfin să gestioneze */ /* Butoane din header - design simplu */ .headerButton { transition: all var(--transition-fast); border-radius: var(--border-radius); margin: 0 6px; padding: 8px 12px !important; } .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 - NU modifica fundalul */ /* 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 - design simplu fără modificări de fundal */ .cardBox { border-radius: var(--border-radius-large) !important; transition: all var(--transition-medium) !important; position: relative; } /* Elimină overlay-ul care poate ascunde imaginile */ .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 - FĂRĂ BLUR */ .indicator { background: rgba(0, 0, 0, 0.7) !important; color: white !important; border-radius: var(--border-radius-small) !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 * ======================================== */ /* Login - NU modifica fundalul */ /* 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 * ======================================== */ /* Player - NU modifica fundalul */ /* 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Ă * ======================================== */ /* Dialoguri - NU modifica fundalul */ /* 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; } /* ======================================== * ELIMINĂ COMPLET BLUR-UL DE PE IMAGINI - REGULI FOARTE PUTERNICE * ======================================== */ /* TOATE imaginile - ZERO blur, ZERO filtre */ img, .cardImage, .cardImageContainer img, .cardContent-button img, .listItemImage img, .itemDetailImage img, .lazy img, .userImage, .headerUserImage, .headerUserButton img, .cardScalable img, .cardOverlayContainer img, .listItemImageButton img, .cardContent img, .listItem img, .itemAction img, .coveredImage, .defaultCardBackground, .lazy, .cardContent-button, .cardImageContainer, .listItemImageButton, .cardBox img, .card img { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; opacity: 1 !important; visibility: visible !important; display: block !important; background: none !important; box-shadow: none !important; } /* ELIMINĂ BLUR-UL DE PE TOATE CONTAINERELE DE IMAGINI */ .cardImageContainer, .cardContent-button, .cardScalable, .listItemImageButton, .cardBox, .card, .cardContent, .itemDetailImage, .listItemImage { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; } /* Elimină orice pseudo-elemente care ar putea ascunde imaginile */ .cardImageContainer::before, .cardImageContainer::after, .cardContent-button::before, .cardContent-button::after, .cardOverlayContainer::before, .cardOverlayContainer::after, .listItemImageButton::before, .listItemImageButton::after { display: none !important; content: none !important; } /* Asigură că imaginile au dimensiuni corecte */ .cardImageContainer img, .cardContent-button img, .listItemImage img { width: 100% !important; height: 100% !important; object-fit: cover !important; } /* Elimină orice transformări care ar putea afecta imaginile */ .cardImageContainer, .cardContent-button, .cardScalable, .listItemImageButton { transform: none !important; filter: none !important; backdrop-filter: none !important; } /* ======================================== * REGULI ANTI-BLUR FOARTE SPECIFICE PENTRU JELLYFIN * ======================================== */ /* Elimină blur-ul aplicat de Jellyfin pe imagini */ .cardContent-button.cardImageContainer.coveredImage.cardContent.cardContent-shadow.itemAction.lazy, .cardContent-button.cardImageContainer.coveredImage.defaultCardBackground.cardContent.cardContent-shadow.itemAction, .listItemImage.listItemImage-large.itemAction.lazy, .itemDetailImage, .cardImage.lazy { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; } /* Forțează eliminarea blur-ului pe toate clasele Jellyfin */ .lazy[style*="filter"], .cardImageContainer[style*="filter"], .cardContent-button[style*="filter"], img[style*="filter"], .cardImage[style*="filter"] { filter: none !important; } /* Elimină blur-ul din stilurile inline */ *[style*="blur"] { filter: none !important; backdrop-filter: none !important; } /* Reguli pentru toate tipurile de carduri Jellyfin */ .portraitCard img, .squareCard img, .backdropCard img, .bannerCard img, .thumbCard img { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; } /* Elimină blur-ul de pe cardurile cu hover */ .card-hoverable img, .card-withuserdata img, .overflowPortraitCard img, .overflowSquareCard img, .overflowBackdropCard img { filter: none !important; backdrop-filter: none !important; } /* CORECȚII SPECIFICE PENTRU IMAGINI DE PROFIL ȘI CARDURI */ .headerUserButton, .headerUserButton img, .userImage, .headerUserImage, .userImageContainer, .userImageContainer img { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; opacity: 1 !important; visibility: visible !important; display: block !important; } /* Corecții pentru carduri - elimină orice blur */ .card, .cardBox, .cardContent, .cardContent-button, .cardImageContainer, .cardScalable, .cardOverlayContainer { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; } /* Elimină blur-ul de pe toate elementele cu clasa lazy */ .lazy { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; opacity: 1 !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; } /* ======================================== * REGULĂ FINALĂ ANTI-BLUR - PRIORITATE MAXIMĂ * ======================================== */ /* SUPRASCRIE ORICE BLUR DIN ORICE SURSĂ */ * img, * .cardImage, * .cardImageContainer, * .cardContent-button, * .lazy { filter: none !important; backdrop-filter: none !important; -webkit-filter: none !important; -webkit-backdrop-filter: none !important; } /* Elimină blur-ul chiar și din JavaScript sau stiluri inline */ img[style], .cardImage[style], .cardImageContainer[style], .cardContent-button[style] { filter: none !important; backdrop-filter: none !important; } /* Mesaj final în CSS */ /* * ======================================== * SFÂRȘITUL TEMEI PERSONALIZATE JELLYFIN * ======================================== * * Această temă modernă oferă: * ✓ Design modern și profesional * ✓ Imagini COMPLET CLARE - ZERO blur * ✓ Fundal nativ Jellyfin păstrat * ✓ 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.1 - Anti-Blur Edition */