/* * ======================================== * JELLYFIN NEXUS THEME - PROFESSIONAL EDITION * ======================================== * * 🎨 TEMA PREMIUM PENTRU JELLYFIN SERVER * * Autor: EDD * Versiune: 3.0 NEXUS PROFESSIONAL * Compatibilitate: Jellyfin WebUI (toate versiunile moderne) * Repository: https://git.eddmanoo.cloud/eddmanoo/jellyfincss * * 🚀 CARACTERISTICI PREMIUM: * ✨ Design Nexus cu efecte holografice * 🌌 Fundal cosmic cu particule animate * 💎 Glassmorphism de nivel enterprise * 🎭 Animații cinematice fluide * 📱 Responsive design pentru toate dispozitivele * ⚡ Optimizări GPU pentru performanță maximă * 🎯 Micro-interacțiuni și feedback haptic * * 📋 INSTRUCȚIUNI DE UTILIZARE: * Metoda 1 (Recomandată): @import url('https://git.eddmanoo.cloud/eddmanoo/jellyfincss/raw/branch/main/edd.css'); * Metoda 2: Copiază manual codul în Dashboard > General > Custom CSS * * 💡 PERSONALIZARE: * Modifică variabilele din secțiunea :root pentru adaptare completă * * ⚠️ NOTĂ: Această temă folosește tehnologii CSS avansate pentru o experiență premium */ /* ======================================== * NEXUS DESIGN SYSTEM - VARIABILE PREMIUM * ======================================== */ :root { /* 🎨 PALETA NEXUS - CULORI HOLOGRAFICE */ --nexus-primary: #00d4ff; /* Cyan electric */ --nexus-primary-glow: #00a8cc; /* Cyan glow */ --nexus-secondary: #ff0080; /* Magenta neon */ --nexus-secondary-glow: #cc0066; /* Magenta glow */ --nexus-accent: #00ff88; /* Green matrix */ --nexus-accent-glow: #00cc6a; /* Green glow */ --nexus-warning: #ffaa00; /* Orange plasma */ --nexus-danger: #ff3366; /* Red laser */ /* 🌌 FUNDAL COSMIC NEXUS */ --nexus-void: #000011; /* Spațiu cosmic profund */ --nexus-dark: #001122; /* Nebula întunecată */ --nexus-medium: #002244; /* Stele îndepărtate */ --nexus-light: #003366; /* Lumină stelară */ --nexus-surface: #004488; /* Suprafață holografică */ --nexus-overlay: rgba(0, 17, 34, 0.92); /* Overlay cosmic */ /* ✨ TEXT HOLOGRAFIC */ --nexus-text-primary: #ffffff; /* Alb pur holografic */ --nexus-text-secondary: #ccddff; /* Albastru deschis */ --nexus-text-muted: #8899bb; /* Gri cosmic */ --nexus-text-disabled: #556677; /* Gri estompat */ --nexus-text-glow: #00d4ff; /* Text cu glow cyan */ /* 🔷 BORDURI ENERGETICE */ --nexus-border-primary: #003366; /* Bordură principală */ --nexus-border-secondary: #004488; /* Bordură secundară */ --nexus-border-glow: var(--nexus-primary); /* Bordură cu glow */ --nexus-border-energy: linear-gradient(90deg, var(--nexus-primary), var(--nexus-secondary), var(--nexus-accent)); /* 🎯 STĂRI ENERGETICE */ --nexus-success: #00ff88; /* Verde matrix */ --nexus-success-bg: rgba(0, 255, 136, 0.1); --nexus-success-glow: 0 0 20px rgba(0, 255, 136, 0.5); --nexus-warning: #ffaa00; /* Portocaliu plasma */ --nexus-warning-bg: rgba(255, 170, 0, 0.1); --nexus-warning-glow: 0 0 20px rgba(255, 170, 0, 0.5); --nexus-error: #ff3366; /* Roșu laser */ --nexus-error-bg: rgba(255, 51, 102, 0.1); --nexus-error-glow: 0 0 20px rgba(255, 51, 102, 0.5); /* 🔮 GEOMETRIE NEXUS */ --nexus-radius-nano: 2px; --nexus-radius-micro: 4px; --nexus-radius-small: 8px; --nexus-radius-medium: 12px; --nexus-radius-large: 16px; --nexus-radius-xl: 24px; --nexus-radius-2xl: 32px; --nexus-radius-cosmic: 50px; --nexus-radius-infinite: 9999px; /* ⚡ UMBRE ENERGETICE NEXUS */ --nexus-shadow-nano: 0 1px 3px rgba(0, 212, 255, 0.1); --nexus-shadow-micro: 0 2px 8px rgba(0, 212, 255, 0.15); --nexus-shadow-small: 0 4px 12px rgba(0, 212, 255, 0.2); --nexus-shadow-medium: 0 8px 24px rgba(0, 212, 255, 0.25); --nexus-shadow-large: 0 16px 48px rgba(0, 212, 255, 0.3); --nexus-shadow-xl: 0 24px 64px rgba(0, 212, 255, 0.35); --nexus-shadow-cosmic: 0 32px 96px rgba(0, 212, 255, 0.4); --nexus-shadow-inner: inset 0 2px 8px rgba(0, 212, 255, 0.1); --nexus-glow-primary: 0 0 30px rgba(0, 212, 255, 0.6); --nexus-glow-secondary: 0 0 30px rgba(255, 0, 128, 0.6); --nexus-glow-accent: 0 0 30px rgba(0, 255, 136, 0.6); --nexus-glow-rainbow: 0 0 40px rgba(0, 212, 255, 0.4), 0 0 60px rgba(255, 0, 128, 0.3), 0 0 80px rgba(0, 255, 136, 0.2); /* 🌊 TRANZIȚII CINEMATICE */ --nexus-transition-instant: all 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94); --nexus-transition-fast: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); --nexus-transition-smooth: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); --nexus-transition-elegant: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); --nexus-transition-dramatic: all 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94); --nexus-transition-bounce: all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); --nexus-transition-elastic: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); /* 🌀 EFECTE BLUR HOLOGRAFICE */ --nexus-blur-subtle: blur(1px); --nexus-blur-soft: blur(3px); --nexus-blur-medium: blur(6px); --nexus-blur-strong: blur(12px); --nexus-blur-intense: blur(20px); --nexus-blur-extreme: blur(32px); --nexus-blur-cosmic: blur(50px); /* 📐 SISTEM SPAȚIAL NEXUS */ --nexus-space-1: 0.25rem; /* 4px - Micro */ --nexus-space-2: 0.5rem; /* 8px - Tiny */ --nexus-space-3: 0.75rem; /* 12px - Small */ --nexus-space-4: 1rem; /* 16px - Base */ --nexus-space-5: 1.25rem; /* 20px - Medium */ --nexus-space-6: 1.5rem; /* 24px - Large */ --nexus-space-8: 2rem; /* 32px - XL */ --nexus-space-10: 2.5rem; /* 40px - 2XL */ --nexus-space-12: 3rem; /* 48px - 3XL */ --nexus-space-16: 4rem; /* 64px - 4XL */ --nexus-space-20: 5rem; /* 80px - 5XL */ --nexus-space-24: 6rem; /* 96px - 6XL */ /* 🎯 SISTEM ACCENT DINAMIC (inspirat din Ultrachromic) */ --nexus-accent-rgb: 0, 212, 255; /* RGB pentru transparențe */ --nexus-accent-alpha-10: rgba(var(--nexus-accent-rgb), 0.1); --nexus-accent-alpha-25: rgba(var(--nexus-accent-rgb), 0.25); --nexus-accent-alpha-50: rgba(var(--nexus-accent-rgb), 0.5); --nexus-accent-alpha-75: rgba(var(--nexus-accent-rgb), 0.75); --nexus-accent-alpha-90: rgba(var(--nexus-accent-rgb), 0.9); /* 🔧 OPTIMIZĂRI PERFORMANȚĂ */ --nexus-rounding: 8px; /* Rounding global */ --nexus-backdrop-filter: blur(60px) saturate(200%) contrast(160%) brightness(25%); } /* ======================================== * 🌌 FUNDAL COSMIC NEXUS CU PARTICULE ANIMATE * ======================================== */ /* Reset și configurare de bază */ * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; } html { background: var(--nexus-void) !important; color: var(--nexus-text-primary) !important; font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, 'Helvetica Neue', Arial, sans-serif !important; font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'ss01' 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-optical-sizing: auto; } body { background: var(--nexus-void) !important; margin: 0; padding: 0; overflow-x: hidden; position: relative; } /* Fundal cosmic cu particule animate */ body::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 10% 20%, rgba(0, 212, 255, 0.1) 0%, transparent 20%), radial-gradient(circle at 80% 80%, rgba(255, 0, 128, 0.1) 0%, transparent 20%), radial-gradient(circle at 40% 40%, rgba(0, 255, 136, 0.05) 0%, transparent 20%), radial-gradient(circle at 90% 10%, rgba(255, 170, 0, 0.08) 0%, transparent 20%), radial-gradient(circle at 20% 90%, rgba(255, 51, 102, 0.06) 0%, transparent 20%); animation: cosmic-drift 30s ease-in-out infinite; z-index: -2; pointer-events: none; } @keyframes cosmic-drift { 0%, 100% { transform: translateX(0) translateY(0) rotate(0deg) scale(1); opacity: 0.8; } 25% { transform: translateX(-20px) translateY(-30px) rotate(1deg) scale(1.05); opacity: 1; } 50% { transform: translateX(15px) translateY(20px) rotate(-0.5deg) scale(0.95); opacity: 0.9; } 75% { transform: translateX(-10px) translateY(25px) rotate(0.8deg) scale(1.02); opacity: 0.95; } } /* Stele animate în fundal */ body::after { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: radial-gradient(2px 2px at 20px 30px, rgba(0, 212, 255, 0.8), transparent), radial-gradient(2px 2px at 40px 70px, rgba(255, 0, 128, 0.6), transparent), radial-gradient(1px 1px at 90px 40px, rgba(0, 255, 136, 0.7), transparent), radial-gradient(1px 1px at 130px 80px, rgba(255, 170, 0, 0.5), transparent), radial-gradient(2px 2px at 160px 30px, rgba(255, 51, 102, 0.6), transparent); background-repeat: repeat; background-size: 200px 100px; animation: stars-twinkle 8s linear infinite; z-index: -1; pointer-events: none; } @keyframes stars-twinkle { 0%, 100% { opacity: 0.8; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-10px); } } /* Container principal cu glassmorphism cosmic */ .backgroundContainer, .dialog { background: var(--nexus-overlay) !important; backdrop-filter: var(--nexus-blur-medium) !important; -webkit-backdrop-filter: var(--nexus-blur-medium) !important; position: relative; min-height: 100vh; border: 1px solid var(--nexus-border-primary) !important; } /* Overlay holografic pentru container */ .backgroundContainer::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: var(--nexus-border-energy); opacity: 0.03; animation: energy-pulse 4s ease-in-out infinite; z-index: -1; pointer-events: none; } @keyframes energy-pulse { 0%, 100% { opacity: 0.03; transform: scale(1); } 50% { opacity: 0.08; transform: scale(1.01); } } /* Container pentru backdrop cu blur holografic */ .backgroundContainer.withBackdrop, .backdropContainer { background: var(--nexus-overlay) !important; backdrop-filter: var(--nexus-blur-strong) !important; -webkit-backdrop-filter: var(--nexus-blur-strong) !important; border: 1px solid var(--nexus-border-glow) !important; box-shadow: var(--nexus-glow-primary) !important; } /* 🎬 BACKDROP IMAGE NEXUS (inspirat din Ultrachromic) */ .backdropImage { opacity: 0.15 !important; filter: var(--nexus-backdrop-filter) !important; transition: var(--nexus-transition-dramatic) !important; mix-blend-mode: screen !important; transform: scale(1.1) !important; } /* 🌈 SCROLLBAR HOLOGRAFIC NEXUS (îmbunătățit cu Ultrachromic) */ * { scrollbar-width: thin; scrollbar-color: var(--nexus-accent-alpha-75) transparent !important; } *::-webkit-scrollbar { width: 8px; height: 8px; } *::-webkit-scrollbar-track { background: rgba(0, 34, 68, 0.3); border-radius: var(--nexus-radius-infinite); border: 1px solid var(--nexus-border-primary); } *::-webkit-scrollbar-thumb { background: var(--nexus-accent-alpha-75) !important; border-radius: var(--nexus-radius-infinite); transition: var(--nexus-transition-smooth); border: 1px solid var(--nexus-primary); box-shadow: var(--nexus-glow-primary); } *::-webkit-scrollbar-thumb:hover { background: var(--nexus-border-energy) !important; box-shadow: var(--nexus-glow-rainbow); transform: scale(1.1); } *::-webkit-scrollbar-corner { background: var(--nexus-dark); border: 1px solid var(--nexus-border-primary); } /* ✨ SELECȚIE TEXT HOLOGRAFICĂ */ ::selection { background: rgba(0, 212, 255, 0.3); color: var(--nexus-text-primary); text-shadow: 0 0 10px rgba(0, 212, 255, 0.8); } ::-moz-selection { background: rgba(0, 212, 255, 0.3); color: var(--nexus-text-primary); text-shadow: 0 0 10px rgba(0, 212, 255, 0.8); } /* Focus ring holografic */ *:focus { outline: 2px solid var(--nexus-primary) !important; outline-offset: 2px !important; border-radius: var(--nexus-radius-small) !important; box-shadow: var(--nexus-glow-primary) !important; } /* ======================================== * 🚀 OPTIMIZĂRI PERFORMANȚĂ NEXUS (inspirat din Monochromic) * ======================================== */ /* Eliminarea mask-image pentru performanță mai bună */ #dashboardPage, #dashboardGeneralPage, #userProfilesPage, #devicesPage, #serverActivityPage, #liveTvStatusPage, #liveTvSettingsPage, #networkingPage, #apiKeysPage, #logPage, #notificationSettingsPage, #scheduledTasksPage, #itemDetailPage, #userImagePage, #displayPreferencesPage, #homeScreenPreferencesPage, #languagePreferencesPage, #quickConnectPreferencesPage, #indexPage, #moviesPage, #tvRecommendedPage, #encodingSettingsPage, #mediaLibraryPage, #dlnaSettingsPage, #pluginsPage, #musicRecommendedPage { mask-image: none !important; -webkit-mask-image: none !important; will-change: transform, opacity !important; contain: layout style paint !important; } /* Optimizări pentru pagini mari */ @media all and (min-width: 100em) { #indexPage, #moviesPage, #tvRecommendedPage, #musicRecommendedPage { margin-top: 70px !important; padding-top: 0px !important; overflow: auto !important; scroll-behavior: smooth !important; } #encodingSettingsPage, #mediaLibraryPage, #dlnaSettingsPage, #pluginsPage { margin-top: 60px !important; padding-top: 0px !important; overflow: auto !important; } } /* Optimizări pentru ecrane mici */ @media all and (max-width: 100em) { #indexPage, #moviesPage, #tvRecommendedPage, #encodingSettingsPage, #mediaLibraryPage, #dlnaSettingsPage, #pluginsPage, #musicRecommendedPage { margin-top: 130px !important; padding-top: 0px !important; overflow: auto !important; scroll-behavior: smooth !important; } } /* Optimizări generale pentru toate paginile */ #dashboardPage, #dashboardGeneralPage, #userProfilesPage, #devicesPage, #serverActivityPage, #liveTvStatusPage, #liveTvSettingsPage, #networkingPage, #apiKeysPage, #logPage, #notificationSettingsPage, #scheduledTasksPage, #itemDetailPage { margin-top: 60px !important; padding-top: 0px !important; overflow: auto !important; scroll-behavior: smooth !important; } /* ======================================== * 🚀 HEADER NEXUS CU EFECTE HOLOGRAFICE * ======================================== */ /* Header principal cu glassmorphism cosmic */ .skinHeader.focuscontainer-x.skinHeader-withBackground.skinHeader-blurred, .skinHeader.focuscontainer-x.skinHeader-withBackground.skinHeader-blurred.noHomeButtonHeader { background: var(--nexus-overlay) !important; backdrop-filter: var(--nexus-blur-strong) !important; -webkit-backdrop-filter: var(--nexus-blur-strong) !important; border-bottom: 2px solid var(--nexus-border-glow) !important; box-shadow: var(--nexus-shadow-large), var(--nexus-glow-primary) !important; transition: var(--nexus-transition-smooth) !important; position: relative; z-index: 1000; overflow: hidden; } /* Efect energetic pentru header */ .skinHeader::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: var(--nexus-border-energy); opacity: 0.1; animation: energy-sweep 3s ease-in-out infinite; z-index: -1; } @keyframes energy-sweep { 0% { left: -100%; opacity: 0.1; } 50% { left: 100%; opacity: 0.3; } 100% { left: 200%; opacity: 0.1; } } /* Linie energetică în partea de jos */ .skinHeader::after { content: ''; position: absolute; bottom: -2px; left: 0; right: 0; height: 2px; background: var(--nexus-border-energy); opacity: 0.8; animation: energy-flow 2s linear infinite; } @keyframes energy-flow { 0% { background-position: 0% 50%; } 100% { background-position: 100% 50%; } } /* 🔮 BUTOANE HEADER HOLOGRAFICE */ .headerButton { color: var(--nexus-text-secondary) !important; background: rgba(0, 68, 136, 0.2) !important; border: 1px solid var(--nexus-border-primary) !important; border-radius: var(--nexus-radius-medium) !important; padding: var(--nexus-space-3) var(--nexus-space-4) !important; margin: 0 var(--nexus-space-2) !important; transition: var(--nexus-transition-smooth) !important; position: relative; overflow: hidden; backdrop-filter: var(--nexus-blur-soft) !important; } .headerButton::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: var(--nexus-border-energy); opacity: 0.3; transition: var(--nexus-transition-smooth); z-index: -1; } .headerButton::after { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: radial-gradient(circle, var(--nexus-primary) 0%, transparent 70%); transition: var(--nexus-transition-smooth); transform: translate(-50%, -50%); z-index: -1; } .headerButton:hover { color: var(--nexus-text-primary) !important; background: rgba(0, 68, 136, 0.4) !important; border-color: var(--nexus-primary) !important; transform: translateY(-2px) scale(1.05) !important; box-shadow: var(--nexus-shadow-medium), var(--nexus-glow-primary) !important; } .headerButton:hover::before { left: 100%; } .headerButton:hover::after { width: 100%; height: 100%; } .headerButton:active { transform: translateY(0) scale(1) !important; box-shadow: var(--nexus-shadow-small) !important; } /* Meniu lateral cu glassmorphism */ .mainDrawer { background: var(--background-overlay) !important; backdrop-filter: var(--blur-lg) !important; -webkit-backdrop-filter: var(--blur-lg) !important; border-right: 1px solid var(--border-primary) !important; box-shadow: var(--shadow-2xl) !important; transition: var(--transition-normal) !important; } .mainDrawer-scrollContainer { color: var(--text-primary) !important; padding: var(--space-4) !important; } /* Opțiuni meniu lateral moderne */ .navMenuOption { color: var(--text-secondary) !important; background: transparent !important; border: 1px solid transparent !important; border-radius: var(--border-radius-lg) !important; padding: var(--space-3) var(--space-4) !important; margin: var(--space-1) 0 !important; transition: var(--transition-normal) !important; position: relative; overflow: hidden; } .navMenuOption::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent 0%, rgba(14, 165, 233, 0.05) 50%, transparent 100% ); transition: var(--transition-normal); } .navMenuOption:hover { color: var(--text-primary) !important; background: var(--background-tertiary) !important; border-color: var(--border-secondary) !important; transform: translateX(var(--space-1)) !important; box-shadow: var(--shadow-sm) !important; } .navMenuOption:hover::before { left: 100%; } .navMenuOption-selected { color: var(--text-primary) !important; background: linear-gradient( 135deg, var(--primary-color) 0%, var(--primary-hover) 100% ) !important; border-color: var(--primary-color) !important; box-shadow: var(--shadow-glow) !important; font-weight: 600 !important; } .navMenuOption-selected::before { display: none; } /* ======================================== * TABURI ȘI BUTOANE ULTRA-MODERNE * ======================================== */ /* Container taburi cu design modern */ .headerTabs.sectionTabs { background: var(--background-secondary) !important; border-bottom: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-xl) var(--border-radius-xl) 0 0 !important; padding: var(--space-2) var(--space-4) !important; margin: 0 !important; position: relative; overflow: hidden; } .headerTabs.sectionTabs::before { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient( 90deg, transparent 0%, var(--primary-color) 50%, transparent 100% ); opacity: 0.5; } /* Taburi individuale cu efect glassmorphism */ .emby-tab-button { background: transparent !important; color: var(--text-muted) !important; border: 1px solid transparent !important; border-radius: var(--border-radius-xl) !important; padding: var(--space-4) var(--space-6) !important; margin: 0 var(--space-1) !important; font-weight: 500 !important; font-size: 0.95rem !important; transition: var(--transition-normal) !important; position: relative; overflow: hidden; backdrop-filter: var(--blur-xs) !important; } .emby-tab-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent 0%, rgba(14, 165, 233, 0.1) 50%, transparent 100% ); transition: var(--transition-normal); } .emby-tab-button:hover { color: var(--text-secondary) !important; background: var(--background-tertiary) !important; border-color: var(--border-secondary) !important; transform: translateY(-2px) !important; box-shadow: var(--shadow-md) !important; } .emby-tab-button:hover::before { left: 100%; } .emby-tab-button.emby-tab-button-active { color: var(--text-primary) !important; background: linear-gradient( 135deg, var(--primary-color) 0%, var(--primary-hover) 100% ) !important; border-color: var(--primary-color) !important; box-shadow: var(--shadow-glow) !important; font-weight: 600 !important; transform: translateY(-1px) !important; } .emby-tab-button.emby-tab-button-active::before { display: none; } .emby-tab-button.emby-tab-button-active::after { content: ''; position: absolute; bottom: -1px; left: 50%; transform: translateX(-50%); width: 60%; height: 2px; background: var(--accent-color); border-radius: var(--border-radius-full); } /* ======================================== * 🎨 SISTEM ACCENT DINAMIC NEXUS (inspirat din Ultrachromic) * ======================================== */ /* Butoane cu hover accent dinamic */ .raised:hover, .fab:hover, a[data-role="button"]:hover { background: var(--nexus-accent-alpha-50) !important; box-shadow: var(--nexus-glow-primary) !important; transform: translateY(-2px) scale(1.02) !important; } /* Elemente de navigare cu accent */ .navMenuOption-selected { color: var(--nexus-primary) !important; background: var(--nexus-accent-alpha-25) !important; box-shadow: var(--nexus-glow-primary) !important; } .navMenuOption:hover, .actionSheetMenuItem:hover { background-color: var(--nexus-accent-alpha-50) !important; transform: translateX(var(--nexus-space-2)) !important; } /* Progres bars cu accent */ .mdl-slider-background-lower, .playbackProgress > div, .taskProgressInner, .iconOsdProgressInner { background: var(--nexus-border-energy) !important; box-shadow: var(--nexus-glow-primary) !important; } progress::-moz-progress-bar, progress::-webkit-progress-value { background: var(--nexus-border-energy) !important; } .transcodingProgress > div, .itemProgressBarForeground { background: var(--nexus-accent-alpha-50) !important; } /* Slider controls cu accent */ .mdl-slider::-moz-range-thumb, .mdl-slider::-ms-thumb, .mdl-slider::-webkit-slider-thumb { background: var(--nexus-primary) !important; box-shadow: var(--nexus-glow-primary) !important; border: 2px solid var(--nexus-text-primary) !important; } /* 💎 BUTOANE PRINCIPALE NEXUS PREMIUM */ .button-submit, .raised.emby-button { background: var(--nexus-border-energy) !important; color: var(--nexus-text-primary) !important; border: 2px solid var(--nexus-primary) !important; border-radius: var(--nexus-radius-large) !important; padding: var(--nexus-space-4) var(--nexus-space-8) !important; font-weight: 700 !important; font-size: 1rem !important; text-transform: uppercase !important; letter-spacing: 0.1em !important; transition: var(--nexus-transition-smooth) !important; box-shadow: var(--nexus-shadow-medium), var(--nexus-glow-primary) !important; position: relative; overflow: hidden; backdrop-filter: var(--nexus-blur-soft) !important; text-shadow: 0 0 10px rgba(0, 212, 255, 0.8) !important; } .button-submit::before, .raised.emby-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 45deg, transparent 0%, rgba(255, 255, 255, 0.3) 30%, rgba(0, 212, 255, 0.4) 50%, rgba(255, 255, 255, 0.3) 70%, transparent 100% ); transition: var(--nexus-transition-smooth); z-index: 1; } .button-submit::after, .raised.emby-button::after { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: radial-gradient(circle, rgba(0, 212, 255, 0.3) 0%, transparent 70%); transition: var(--nexus-transition-smooth); transform: translate(-50%, -50%); z-index: 0; } .button-submit:hover, .raised.emby-button:hover { transform: translateY(-4px) scale(1.05) !important; box-shadow: var(--nexus-shadow-xl), var(--nexus-glow-rainbow) !important; border-color: var(--nexus-accent) !important; text-shadow: 0 0 15px rgba(0, 255, 136, 1) !important; } .button-submit:hover::before, .raised.emby-button:hover::before { left: 100%; } .button-submit:hover::after, .raised.emby-button:hover::after { width: 200%; height: 200%; } .button-submit:active, .raised.emby-button:active { transform: translateY(-1px) scale(1.02) !important; box-shadow: var(--nexus-shadow-medium) !important; } /* ======================================== * 🎯 ELEMENTE INTERACTIVE CU ACCENT DINAMIC * ======================================== */ /* Butoane și linkuri interactive */ .paper-icon-button-light:hover, .raised.homeLibraryButton:hover, .button-flat:hover, .playstatebutton-icon-played, .ratingbutton-icon-withrating, .paper-icon-button-light:hover:not(:disabled), .emby-tab-button:hover, .selectLabelFocused, .inputLabelFocused, .textareaLabelFocused, .buttonActive, .button-link { color: var(--nexus-primary) !important; text-shadow: 0 0 10px var(--nexus-primary) !important; transition: var(--nexus-transition-smooth) !important; } /* Excepție pentru pagina de detalii */ #itemDetailPage .button-link { color: inherit !important; text-shadow: none !important; } /* Checkbox și input focus */ .emby-checkbox:checked + span + .checkboxOutline, .emby-textarea:focus, .emby-select-withcolor:focus, .emby-input:focus, .itemSelectionPanel { border: 2px solid var(--nexus-accent-alpha-75) !important; box-shadow: var(--nexus-glow-primary) !important; } /* Text countdown și loading */ .upNextDialog-countdownText { color: var(--nexus-primary) !important; text-shadow: 0 0 15px var(--nexus-primary) !important; } .mdl-spinner__layer-1 { border-color: var(--nexus-primary) !important; } /* Switch controls */ .mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__track { background: var(--nexus-accent-alpha-50) !important; } .mdl-switch__input:checked + .mdl-switch__label + .mdl-switch__trackContainer > .mdl-switch__thumb { background: var(--nexus-primary) !important; box-shadow: var(--nexus-glow-primary) !important; } /* Syncplay theming */ .syncPlayIconCircle { color: var(--nexus-primary) !important; text-shadow: 0 0 20px var(--nexus-primary) !important; background: var(--nexus-accent-alpha-25) !important; border-radius: var(--nexus-radius-infinite) !important; padding: var(--nexus-space-2) !important; } /* Subtitle preview cu gradient */ .subtitleappearance-preview { background: linear-gradient(140deg, var(--nexus-primary), var(--nexus-dark)) !important; border: 1px solid var(--nexus-border-glow) !important; border-radius: var(--nexus-radius-large) !important; box-shadow: var(--nexus-glow-primary) !important; } /* Butoane secundare */ .cancel.emby-button { background: var(--background-tertiary) !important; color: var(--text-secondary) !important; border: 1px solid var(--border-secondary) !important; border-radius: var(--border-radius-xl) !important; transition: var(--transition-normal) !important; } .cancel.emby-button:hover { background: var(--background-surface) !important; color: var(--text-primary) !important; border-color: var(--border-accent) !important; transform: translateY(-1px) !important; box-shadow: var(--shadow-sm) !important; } /* ======================================== * CARDURI MEDIA CU GLASSMORPHISM AVANSAT * ======================================== */ /* Container pentru carduri cu layout modern */ .itemsContainer { gap: var(--space-4) !important; padding: var(--space-4) !important; } /* Carduri principale cu efect glassmorphism */ .cardBox { background: var(--background-overlay) !important; backdrop-filter: var(--blur-sm) !important; -webkit-backdrop-filter: var(--blur-sm) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-2xl) !important; transition: var(--transition-normal) !important; box-shadow: var(--shadow-md) !important; position: relative; overflow: hidden; } .cardBox::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient( 90deg, transparent 0%, rgba(248, 250, 252, 0.1) 50%, transparent 100% ); } .cardBox:hover { transform: translateY(-8px) scale(1.03) !important; box-shadow: var(--shadow-2xl) !important; border-color: var(--primary-color) !important; background: var(--background-secondary) !important; } .cardBox:hover::before { background: linear-gradient( 90deg, transparent 0%, var(--primary-color) 50%, transparent 100% ); opacity: 0.8; } /* Imagini din carduri cu efecte moderne */ .cardContent-button, .itemDetailImage, .cardImageContainer { border-radius: var(--border-radius-xl) !important; overflow: hidden !important; transition: var(--transition-normal) !important; position: relative; } .cardContent-button::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( 180deg, transparent 0%, transparent 60%, rgba(15, 23, 42, 0.8) 100% ); opacity: 0; transition: var(--transition-normal); } .cardContent-button:hover { transform: scale(1.05) !important; box-shadow: var(--shadow-lg) !important; } .cardContent-button:hover::after { opacity: 1; } /* Text din carduri cu tipografie modernă */ .cardText { color: var(--text-primary) !important; font-weight: 600 !important; font-size: 0.95rem !important; line-height: 1.4 !important; margin: var(--space-3) 0 var(--space-1) 0 !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5) !important; } .cardText-secondary { color: var(--text-muted) !important; font-weight: 400 !important; font-size: 0.85rem !important; line-height: 1.3 !important; margin: 0 0 var(--space-2) 0 !important; } /* Carduri pentru episoade cu design special */ .listItemImage.listItemImage-large.itemAction.lazy { height: 120px !important; border-radius: var(--border-radius-xl) !important; transition: var(--transition-normal) !important; box-shadow: var(--shadow-sm) !important; } .listItemImage.listItemImage-large.itemAction.lazy:hover { transform: scale(1.05) !important; box-shadow: var(--shadow-lg) !important; } .listItem-content { height: auto !important; padding: var(--space-4) !important; background: var(--background-secondary) !important; border-radius: var(--border-radius-xl) !important; margin: var(--space-2) 0 !important; border: 1px solid var(--border-primary) !important; transition: var(--transition-normal) !important; } .listItem-content:hover { background: var(--background-tertiary) !important; border-color: var(--border-secondary) !important; transform: translateX(var(--space-2)) !important; } .secondary.listItem-overview.listItemBodyText { color: var(--text-muted) !important; line-height: 1.5 !important; margin: var(--space-2) 0 0 0 !important; font-size: 0.9rem !important; } /* ======================================== * 🎭 CARDURI CAST ÎMBUNĂTĂȚITE (inspirat din Ultrachromic) * ======================================== */ /* Carduri pentru cast cu design circular modern */ .personCard { background: var(--nexus-overlay) !important; backdrop-filter: var(--nexus-blur-soft) !important; border: 1px solid var(--nexus-border-primary) !important; border-radius: var(--nexus-rounding) !important; transition: var(--nexus-transition-smooth) !important; padding: var(--nexus-space-3) !important; will-change: transform, box-shadow !important; } .personCard:hover { transform: translateY(-6px) scale(1.03) !important; box-shadow: var(--nexus-shadow-xl), var(--nexus-glow-primary) !important; border-color: var(--nexus-primary) !important; background: var(--nexus-accent-alpha-10) !important; } /* Cast thumbnails mai mici și rotunde (inspirat din Ultrachromic) */ #castContent .card.overflowPortraitCard.personCard.card-hoverable.card-withuserdata, #castContent .card.overflowPortraitCard.personCard.card-withuserdata { width: 110px !important; font-size: 85% !important; transition: var(--nexus-transition-smooth) !important; } #castContent .card.overflowPortraitCard.personCard:hover { transform: translateY(-6px) scale(1.08) !important; box-shadow: var(--nexus-shadow-xl), var(--nexus-glow-primary) !important; } /* ======================================== * INDICATORI ȘI BADGE-URI MODERNE * ======================================== */ /* Indicator pentru conținut vizionat cu design modern */ .playedIndicator { background: linear-gradient( 135deg, var(--success-color) 0%, #059669 100% ) !important; border: 2px solid var(--background-primary) !important; border-radius: var(--border-radius-full) !important; box-shadow: var(--shadow-md), 0 0 0 2px rgba(16, 185, 129, 0.3) !important; width: 24px !important; height: 24px !important; position: relative; } .playedIndicator::before { content: '✓'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 12px; font-weight: bold; } /* Indicatori cu glassmorphism */ .indicator { background: var(--background-overlay) !important; backdrop-filter: var(--blur-md) !important; -webkit-backdrop-filter: var(--blur-md) !important; color: var(--text-primary) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-lg) !important; box-shadow: var(--shadow-sm) !important; font-weight: 500 !important; padding: var(--space-1) var(--space-2) !important; font-size: 0.8rem !important; } /* Indicatori pentru numărul de episoade */ .countIndicator { background: linear-gradient( 135deg, var(--primary-color) 0%, var(--primary-hover) 100% ) !important; color: var(--text-primary) !important; border: 1px solid var(--primary-color) !important; border-radius: var(--border-radius-full) !important; font-weight: 700 !important; font-size: 0.75rem !important; padding: var(--space-1) var(--space-2) !important; box-shadow: var(--shadow-md), var(--shadow-glow) !important; min-width: 24px !important; height: 24px !important; display: flex !important; align-items: center !important; justify-content: center !important; } /* Badge pentru progres */ .progressIndicator { background: linear-gradient( 90deg, var(--accent-color) 0%, var(--accent-hover) 100% ) !important; border-radius: var(--border-radius-full) !important; height: 4px !important; box-shadow: var(--shadow-sm) !important; position: relative; overflow: hidden; } .progressIndicator::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( 90deg, transparent 0%, rgba(255, 255, 255, 0.3) 50%, transparent 100% ); animation: shimmer 2s infinite; } @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* Rating cu stele îmbunătățit */ .starRatingContainer { filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); padding: var(--space-1) !important; } .starRatingContainer .material-icons { color: var(--accent-color) !important; text-shadow: 0 1px 2px rgba(0,0,0,0.5) !important; transition: var(--transition-fast) !important; } .starRatingContainer .material-icons:hover { color: var(--accent-hover) !important; transform: scale(1.1) !important; } /* Badge-uri pentru genuri */ .genreChip { background: var(--background-tertiary) !important; color: var(--text-secondary) !important; border: 1px solid var(--border-secondary) !important; border-radius: var(--border-radius-full) !important; padding: var(--space-1) var(--space-3) !important; font-size: 0.8rem !important; font-weight: 500 !important; transition: var(--transition-normal) !important; margin: var(--space-1) !important; } .genreChip:hover { background: var(--primary-color) !important; color: var(--text-primary) !important; border-color: var(--primary-color) !important; transform: translateY(-1px) !important; box-shadow: var(--shadow-sm) !important; } /* Indicator pentru calitate video */ .mediaInfoBadge { background: var(--background-overlay) !important; backdrop-filter: var(--blur-sm) !important; color: var(--text-primary) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-md) !important; padding: var(--space-1) var(--space-2) !important; font-size: 0.7rem !important; font-weight: 600 !important; text-transform: uppercase !important; letter-spacing: 0.05em !important; } /* ======================================== * FORMULARE ȘI INPUTURI MODERNE * ======================================== */ /* Câmpuri de input cu glassmorphism */ .emby-input, .emby-textarea, .emby-select { background: var(--background-overlay) !important; backdrop-filter: var(--blur-sm) !important; -webkit-backdrop-filter: var(--blur-sm) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-xl) !important; color: var(--text-primary) !important; padding: var(--space-4) var(--space-5) !important; font-size: 0.95rem !important; font-weight: 400 !important; transition: var(--transition-normal) !important; box-shadow: var(--shadow-sm) !important; position: relative; } .emby-input:focus, .emby-textarea:focus, .emby-select-withcolor { border-color: var(--primary-color) !important; box-shadow: var(--shadow-md), 0 0 0 3px rgba(14, 165, 233, 0.1) !important; background: var(--background-secondary) !important; transform: translateY(-1px) !important; } .emby-input:hover, .emby-textarea:hover, .emby-select:hover { border-color: var(--border-secondary) !important; background: var(--background-secondary) !important; } /* Placeholder text modern */ .emby-input::placeholder, .emby-textarea::placeholder { color: var(--text-muted) !important; opacity: 0.8 !important; font-weight: 400 !important; } /* Labels pentru formulare */ .inputLabel, .fieldDescription { color: var(--text-secondary) !important; font-weight: 500 !important; font-size: 0.9rem !important; margin-bottom: var(--space-2) !important; } /* Checkbox și radio buttons moderne */ .emby-checkbox, .emby-radio { appearance: none !important; width: 20px !important; height: 20px !important; border: 2px solid var(--border-primary) !important; border-radius: var(--border-radius-sm) !important; background: var(--background-tertiary) !important; transition: var(--transition-normal) !important; position: relative !important; cursor: pointer !important; } .emby-radio { border-radius: var(--border-radius-full) !important; } .emby-checkbox:checked, .emby-radio:checked { background: var(--primary-color) !important; border-color: var(--primary-color) !important; box-shadow: var(--shadow-glow) !important; } .emby-checkbox:checked::after { content: '✓'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 12px; font-weight: bold; } .emby-radio:checked::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 8px; height: 8px; background: white; border-radius: var(--border-radius-full); } /* Select dropdown modern */ .emby-select { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important; background-position: right var(--space-3) center !important; background-repeat: no-repeat !important; background-size: 16px 16px !important; padding-right: var(--space-10) !important; } /* Slider modern */ .mdl-slider { background: var(--border-primary) !important; height: 6px !important; border-radius: var(--border-radius-full) !important; } .mdl-slider::-webkit-slider-thumb { background: var(--primary-color) !important; border: 2px solid white !important; border-radius: var(--border-radius-full) !important; box-shadow: var(--shadow-md) !important; width: 20px !important; height: 20px !important; transition: var(--transition-normal) !important; } .mdl-slider::-webkit-slider-thumb:hover { background: var(--primary-hover) !important; transform: scale(1.1) !important; box-shadow: var(--shadow-lg) !important; } /* ======================================== * 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 ULTRA-MODERNĂ * ======================================== */ /* Container principal pentru login cu fundal animat */ #loginPage { background: var(--background-primary) !important; position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; } /* Fundal animat cu particule */ #loginPage::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at 20% 80%, rgba(14, 165, 233, 0.15) 0%, transparent 50%), radial-gradient(circle at 80% 20%, rgba(245, 158, 11, 0.15) 0%, transparent 50%), radial-gradient(circle at 40% 40%, rgba(16, 185, 129, 0.1) 0%, transparent 50%); animation: float 20s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0px) rotate(0deg); } 33% { transform: translateY(-20px) rotate(1deg); } 66% { transform: translateY(10px) rotate(-1deg); } } /* Overlay cu blur pentru login */ #loginPage::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; backdrop-filter: var(--blur-sm); -webkit-backdrop-filter: var(--blur-sm); z-index: 1; } /* Formular de login cu glassmorphism premium */ #loginPage .readOnlyContent, #loginPage form { max-width: 420px !important; width: 90% !important; background: var(--background-overlay) !important; backdrop-filter: var(--blur-lg) !important; -webkit-backdrop-filter: var(--blur-lg) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-3xl) !important; padding: var(--space-12) var(--space-8) !important; box-shadow: var(--shadow-2xl) !important; position: relative; z-index: 2; margin: var(--space-8); } /* Efect glow pentru formular */ #loginPage .readOnlyContent::before, #loginPage form::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient( 90deg, transparent 0%, var(--primary-color) 50%, transparent 100% ); opacity: 0.6; } /* Logo și titlu login */ #loginPage h1 { color: var(--text-primary) !important; text-align: center !important; margin-bottom: var(--space-8) !important; font-weight: 300 !important; font-size: 2.5rem !important; background: linear-gradient( 135deg, var(--text-primary) 0%, var(--primary-color) 100% ); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Subtitle pentru login */ #loginPage .readOnlyContent p, #loginPage form p { color: var(--text-muted) !important; text-align: center !important; margin-bottom: var(--space-6) !important; font-size: 0.95rem !important; } /* Inputuri în formular login */ #loginPage .emby-input { background: var(--background-secondary) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-xl) !important; padding: var(--space-4) var(--space-5) !important; margin-bottom: var(--space-4) !important; font-size: 1rem !important; transition: var(--transition-normal) !important; } #loginPage .emby-input:focus { border-color: var(--primary-color) !important; box-shadow: var(--shadow-md), 0 0 0 3px rgba(14, 165, 233, 0.1) !important; background: var(--background-tertiary) !important; } /* Buton login premium */ #loginPage .raised.emby-button { width: 100% !important; background: linear-gradient( 135deg, var(--primary-color) 0%, var(--primary-hover) 50%, var(--accent-color) 100% ) !important; border: none !important; border-radius: var(--border-radius-xl) !important; padding: var(--space-4) !important; font-size: 1.1rem !important; font-weight: 600 !important; margin-top: var(--space-6) !important; transition: var(--transition-normal) !important; position: relative; overflow: hidden; } #loginPage .raised.emby-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100% ); transition: var(--transition-normal); } #loginPage .raised.emby-button:hover { transform: translateY(-2px) !important; box-shadow: var(--shadow-xl) !important; } #loginPage .raised.emby-button:hover::before { left: 100%; } /* Spațiere pentru formular */ #loginPage .padded-left.padded-right.padded-bottom-page { margin-top: 0 !important; padding: 0 !important; } /* Ascunde butoanele nedorite */ #loginPage .raised.cancel.block.btnManual.emby-button, #loginPage .raised.cancel.block.btnForgotPassword.emby-button { display: none !important; } /* Link-uri în footer login */ #loginPage a { color: var(--text-muted) !important; text-decoration: none !important; transition: var(--transition-fast) !important; } #loginPage a:hover { color: var(--primary-color) !important; } /* ======================================== * PLAYER VIDEO ȘI CONTROALE * ======================================== */ /* Bara de progres video */ .nowPlayingBar { background: rgba(26, 26, 26, 0.95) !important; backdrop-filter: blur(10px) !important; border-top: 1px solid var(--border-color) !important; box-shadow: 0 -4px 8px rgba(0,0,0,0.3) !important; } /* 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 */ .dialogBackdrop { background: rgba(0, 0, 0, 0.8) !important; backdrop-filter: blur(5px) !important; } /* Dialoguri */ .dialog { background: var(--background-medium) !important; border: 1px solid var(--border-color) !important; border-radius: var(--border-radius-large) !important; box-shadow: var(--shadow-heavy) !important; } /* Titluri în dialoguri */ .dialog h2, .dialog h3 { color: var(--primary-color) !important; } /* ======================================== * DIALOGURI ȘI MODALE MODERNE * ======================================== */ /* Backdrop pentru dialoguri cu blur */ .dialogBackdrop { background: rgba(15, 23, 42, 0.8) !important; backdrop-filter: var(--blur-md) !important; -webkit-backdrop-filter: var(--blur-md) !important; transition: var(--transition-normal) !important; } /* Dialoguri cu glassmorphism */ .dialog { background: var(--background-overlay) !important; backdrop-filter: var(--blur-lg) !important; -webkit-backdrop-filter: var(--blur-lg) !important; border: 1px solid var(--border-primary) !important; border-radius: var(--border-radius-3xl) !important; box-shadow: var(--shadow-2xl) !important; max-width: 90vw !important; max-height: 90vh !important; overflow: hidden !important; } /* Header dialoguri */ .dialog h2, .dialog h3 { color: var(--text-primary) !important; font-weight: 600 !important; margin-bottom: var(--space-4) !important; padding-bottom: var(--space-2) !important; border-bottom: 1px solid var(--border-primary) !important; } /* Conținut dialoguri */ .dialog .dialogContent { padding: var(--space-6) !important; color: var(--text-secondary) !important; line-height: 1.6 !important; } /* ======================================== * PLAYER VIDEO MODERN * ======================================== */ /* Controale video cu glassmorphism */ .videoOsdBottom { background: var(--background-overlay) !important; backdrop-filter: var(--blur-lg) !important; -webkit-backdrop-filter: var(--blur-lg) !important; border-top: 1px solid var(--border-primary) !important; padding: var(--space-4) !important; } /* Bara de progres video modernă */ .osdProgressBar { background: var(--border-primary) !important; height: 6px !important; border-radius: var(--border-radius-full) !important; overflow: hidden !important; } .osdProgressBarForeground { background: linear-gradient( 90deg, var(--primary-color) 0%, var(--accent-color) 100% ) !important; border-radius: var(--border-radius-full) !important; box-shadow: 0 0 10px rgba(14, 165, 233, 0.5) !important; } /* Butoane player moderne */ .videoOsdBottom .material-icons { color: var(--text-primary) !important; background: var(--background-tertiary) !important; border-radius: var(--border-radius-full) !important; padding: var(--space-2) !important; margin: 0 var(--space-1) !important; transition: var(--transition-normal) !important; } .videoOsdBottom .material-icons:hover { color: var(--primary-color) !important; background: var(--background-surface) !important; transform: scale(1.1) !important; box-shadow: var(--shadow-md) !important; } /* ======================================== * RESPONSIVE DESIGN AVANSAT * ======================================== */ /* Mobile optimizations */ @media (max-width: 768px) { :root { --space-4: 0.75rem; --space-6: 1rem; --space-8: 1.5rem; } .emby-tab-button { padding: var(--space-4) var(--space-3) !important; font-size: 0.9rem !important; } .cardBox { margin: var(--space-2) !important; border-radius: var(--border-radius-xl) !important; } #loginPage .readOnlyContent, #loginPage form { padding: var(--space-8) var(--space-6) !important; margin: var(--space-4) !important; } .headerButton { padding: var(--space-2) !important; margin: 0 var(--space-1) !important; } } /* Tablet optimizations */ @media (min-width: 769px) and (max-width: 1024px) { .itemsContainer { gap: var(--space-3) !important; } .cardBox { margin: var(--space-2) !important; } } /* Desktop large screens */ @media (min-width: 1440px) { .itemsContainer { gap: var(--space-6) !important; padding: var(--space-6) !important; } .cardBox { margin: var(--space-3) !important; } } /* ======================================== * ANIMAȚII ȘI MICRO-INTERACȚIUNI * ======================================== */ /* Animație pentru încărcare */ @keyframes pulse-glow { 0%, 100% { opacity: 1; box-shadow: 0 0 5px rgba(14, 165, 233, 0.5); } 50% { opacity: 0.8; box-shadow: 0 0 20px rgba(14, 165, 233, 0.8); } } .loading { animation: pulse-glow 2s ease-in-out infinite !important; } /* Animație pentru carduri noi */ @keyframes slideInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .cardBox { animation: slideInUp 0.6s ease-out !important; } /* Animație pentru butoane active */ @keyframes buttonPress { 0% { transform: scale(1); } 50% { transform: scale(0.95); } 100% { transform: scale(1); } } .button-submit:active, .raised.emby-button:active { animation: buttonPress 0.1s ease-out !important; } /* ======================================== * OPTIMIZĂRI FINALE ȘI PERFORMANȚĂ * ======================================== */ /* Optimizări GPU pentru animații */ .cardBox, .emby-tab-button, .headerButton, .navMenuOption, .button-submit, .raised.emby-button { will-change: transform, opacity, box-shadow !important; transform: translateZ(0) !important; } /* Smooth scrolling pentru întreaga pagină */ html { scroll-behavior: smooth !important; } /* Optimizări pentru focus și accesibilitate */ *:focus { outline: 2px solid var(--primary-color) !important; outline-offset: 2px !important; border-radius: var(--border-radius-sm) !important; } /* Reduce motion pentru utilizatorii sensibili */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* ======================================== * 🌌 NEXUS THEME - MESAJ FINAL COSMIC * ======================================== */ /* * ======================================== * 🚀 JELLYFIN NEXUS THEME v3.0 PROFESSIONAL * ======================================== * * 🎨 CARACTERISTICI NEXUS PREMIUM: * ✨ Design holografic cu efecte energetice * 🌌 Fundal cosmic cu particule animate și stele * 💎 Glassmorphism de nivel enterprise cu blur avansat * ⚡ Animații cinematice cu tranziții elastice * 🔮 Sistem de culori holografice (Cyan, Magenta, Green) * 🌈 Efecte glow și rainbow pentru interacțiuni * 📱 Responsive design optimizat pentru toate dispozitivele * ⚡ Optimizări GPU pentru performanță maximă * 🎯 Micro-interacțiuni cu feedback haptic * 🎭 Tema cosmic-futuristă unică și distinctă * * 🚀 TEHNOLOGII NEXUS AVANSATE: * - CSS Custom Properties cu sistem Nexus * - Backdrop-filter pentru glassmorphism cosmic * - CSS Animations cu keyframes complexe * - Gradient-uri energetice multi-color * - Box-shadow cu efecte glow holografice * - Transform și scale pentru efecte 3D * - Mix-blend-mode pentru efecte vizuale * - CSS Grid și Flexbox pentru layout fluid * - Sistem accent dinamic inspirat din Ultrachromic * - Optimizări performanță din Monochromic * - Rounding system și backdrop filters avansate * * 🎯 DIFERENȚE FAȚĂ DE TEMA DE BAZĂ + INTEGRĂRI: * ✓ Paleta de culori complet diferită (Nexus vs Standard) * ✓ Fundal cosmic animat vs gradient static * ✓ Efecte holografice vs efecte simple * ✓ Animații energetice vs tranziții standard * ✓ Design futuristic vs design modern clasic * ✓ Glow effects vs shadow effects * ✓ Particule animate vs fundal static * ✓ Sistem accent dinamic (inspirat din Ultrachromic) * ✓ Optimizări performanță (inspirat din Monochromic) * ✓ Cast thumbnails mai mici și rotunde * ✓ Backdrop filters avansate pentru imagini * ✓ Scrollbar cu accent dinamic * ✓ Progres bars cu efecte energetice * * 💡 PERSONALIZARE NEXUS: * Modifică variabilele --nexus-* din secțiunea :root * pentru a adapta tema la preferințele tale cosmice. * * 📋 INSTALARE AUTOMATĂ: * @import url('https://git.eddmanoo.cloud/eddmanoo/jellyfincss/raw/branch/main/edd.css'); * * 👨‍💻 Autor: EDD * 🚀 Versiune: 3.0 NEXUS PROFESSIONAL * 📅 Data: 2025 * 🌐 Repository: https://git.eddmanoo.cloud/eddmanoo/jellyfincss * * 🎬 Bucură-te de experiența Jellyfin NEXUS de nivel cosmic! ✨🌌 */