/* ─── Spider-Tech — Spider-Man ─── */ [data-theme='spider-tech'] { color-scheme: dark; --select-arrow: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23E62429%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%226%209%2012%2015%2018%209%22%3E%3C%2Fpolyline%3E%3C%2Fsvg%3E"); /* Palette — suit red, night-sky navy, web black */ --ctp-crust: #060408; --ctp-mantle: #0a0610; --ctp-base: #0e0c18; --ctp-surface0: #181428; --ctp-surface1: #241e3a; --ctp-surface2: #302848; --ctp-overlay0: #4a3e68; --ctp-overlay1: #6a5888; --ctp-overlay2: #9080a8; --ctp-text: #f0ecf8; --ctp-subtext1: #d0c8e0; --ctp-subtext0: #a898c0; --ctp-mauve: #E62429; --ctp-lavender: #ff4a50; --ctp-pink: #ff4a50; --ctp-flamingo: #cc1a1f; --ctp-rosewater: #f0ecf8; --ctp-green: #4adf80; --ctp-teal: #3ab8d0; --ctp-sky: #4a88ff; --ctp-blue: #1e52c8; --ctp-sapphire: #1e52c8; --ctp-yellow: #f0c030; --ctp-peach: #E62429; --ctp-maroon: #8b0010; --ctp-red: #E62429; --bg-app: #0e0c18; --bg-sidebar: #0a0610; --bg-card: #181428; --bg-hover: #241e3a; --bg-player: #060408; --bg-glass: rgba(10, 6, 16, 0.92); --accent: #E62429; --accent-dim: rgba(230, 36, 41, 0.14); --accent-glow: rgba(230, 36, 41, 0.38); --text-primary: #f0ecf8; --text-secondary: #9080a8; --text-muted: #a898c0; --border: rgba(230, 36, 41, 0.18); --border-subtle: rgba(230, 36, 41, 0.08); --border-dropdown: rgba(230, 36, 41, 0.30); --shadow-dropdown: rgba(0, 0, 0, 0.92); --positive: #4adf80; --warning: #f0c030; --danger: #E62429; --radius-sm: 2px; --radius-md: 4px; --radius-lg: 6px; } /* App shell — Into the Spider-Verse comic halftone dots */ [data-theme='spider-tech'] .app-shell { background-image: radial-gradient(circle, rgba(230, 36, 41, 0.055) 1px, transparent 1px); background-size: 14px 14px; } /* Sidebar — CSS spider web radiating from top-left corner */ [data-theme='spider-tech'] .sidebar { background: #080510; border-right: 1px solid rgba(230, 36, 41, 0.22); background-image: repeating-radial-gradient(circle at 0% 0%, transparent 0px, transparent 38px, rgba(230, 36, 41, 0.10) 39px, rgba(230, 36, 41, 0.10) 40px), repeating-conic-gradient(from 0deg at 0% 0%, transparent 0deg, transparent 19deg, rgba(230, 36, 41, 0.07) 19deg, rgba(230, 36, 41, 0.07) 20deg); } /* Player bar — deep black with red suit border + glow */ [data-theme='spider-tech'] .player-bar { background: #060408; border-top: 2px solid #E62429; box-shadow: 0 -6px 28px rgba(230, 36, 41, 0.20), 0 -1px 0 rgba(0, 0, 0, 0.9); } /* Track name — Spider-Man red, bold */ [data-theme='spider-tech'] .player-track-name { color: #E62429; font-weight: 700; text-shadow: 0 0 10px rgba(230, 36, 41, 0.45), 0 0 24px rgba(230, 36, 41, 0.20); } /* Artist name — Spider suit blue */ [data-theme='spider-tech'] .player-artist-name { color: #4a88ff; } /* Nav active — red left bar */ [data-theme='spider-tech'] .nav-link.active { background: linear-gradient(90deg, rgba(230, 36, 41, 0.18) 0%, transparent 100%); border-left: 3px solid #E62429; color: #E62429; } [data-theme='spider-tech'] .nav-link:hover:not(.active) { background: linear-gradient(90deg, rgba(230, 36, 41, 0.08) 0%, transparent 100%); border-left: 3px solid rgba(230, 36, 41, 0.35); } /* Content header */ [data-theme='spider-tech'] .content-header { border-bottom: 1px solid rgba(230, 36, 41, 0.14); } /* Cards — red border glow on hover */ [data-theme='spider-tech'] .album-card:hover, [data-theme='spider-tech'] .artist-card:hover { box-shadow: 0 0 0 1px rgba(230, 36, 41, 0.55), 0 4px 20px rgba(230, 36, 41, 0.16); } /* Track / queue rows */ [data-theme='spider-tech'] .track-row:hover, [data-theme='spider-tech'] .queue-item:hover { box-shadow: inset 2px 0 0 #E62429; background: rgba(230, 36, 41, 0.06); } /* Primary play button — suit red */ [data-theme='spider-tech'] .player-btn-primary { background: linear-gradient(180deg, #ff4a50 0%, #E62429 50%, #b81820 100%); color: #ffffff; box-shadow: 0 0 16px rgba(230, 36, 41, 0.50); border: 1px solid #9c1018; } [data-theme='spider-tech'] .player-btn-primary:hover { background: linear-gradient(180deg, #ff6065 0%, #f03035 50%, #cc2025 100%); box-shadow: 0 0 26px rgba(230, 36, 41, 0.72); } /* btn-primary */ [data-theme='spider-tech'] .btn-primary { background: linear-gradient(180deg, #ff4a50 0%, #E62429 50%, #b81820 100%); color: #ffffff; border: 1px solid #9c1018; } [data-theme='spider-tech'] .btn-primary:hover { background: linear-gradient(180deg, #ff6065 0%, #f03035 50%, #cc2025 100%); } /* Hero play button */ [data-theme='spider-tech'] .hero-play-btn { background: linear-gradient(180deg, #ff4a50 0%, #E62429 50%, #b81820 100%); color: #ffffff; border: 1px solid #9c1018; box-shadow: 0 2px 16px rgba(230, 36, 41, 0.50); transition: filter var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast); } [data-theme='spider-tech'] .hero-play-btn:hover { background: linear-gradient(180deg, #ff6065 0%, #f03035 50%, #cc2025 100%); box-shadow: 0 4px 26px rgba(230, 36, 41, 0.72); transform: scale(1.02); } /* Album card overlay button */ [data-theme='spider-tech'] .album-card-details-btn { background: linear-gradient(180deg, #ff4a50 0%, #E62429 50%, #b81820 100%); color: #ffffff; border: 1px solid #9c1018; box-shadow: 0 2px 12px rgba(230, 36, 41, 0.45); } /* Scrollbar — dark with red thumb */ [data-theme='spider-tech'] ::-webkit-scrollbar { width: 5px; height: 5px; } [data-theme='spider-tech'] ::-webkit-scrollbar-track { background: #0a0610; } [data-theme='spider-tech'] ::-webkit-scrollbar-thumb { background: rgba(230, 36, 41, 0.40); border-radius: 3px; } [data-theme='spider-tech'] ::-webkit-scrollbar-thumb:hover { background: #E62429; } /* ── Jayfin (Mediaplayer) ─────────────────────────────────────── */ [data-theme='jayfin'] { color-scheme: dark; --select-arrow: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23AA5CC3%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpolyline%20points%3D%226%209%2012%2015%2018%209%22%3E%3C%2Fpolyline%3E%3C%2Fsvg%3E"); /* ── Jellyfin Palette ── */ --ctp-crust: #050505; --ctp-mantle: #0c0c0c; --ctp-base: #141414; --ctp-surface0: #1e1e1e; --ctp-surface1: #282828; --ctp-surface2: #333333; --ctp-overlay0: #505050; --ctp-overlay1: #787878; --ctp-overlay2: #a8a8a8; --ctp-text: #ffffff; --ctp-subtext1: #e8e8e8; --ctp-subtext0: #c0c0c0; /* Jellyfin Lila als Hauptakzent, Cyan als Sekundärfarbe */ --ctp-mauve: #AA5CC3; --ctp-lavender: #bf7ed4; --ctp-green: #2ed573; --ctp-teal: #00c8dc; --ctp-sky: #00A4DC; --ctp-blue: #0088cc; --ctp-sapphire: #0060a0; --ctp-pink: #c070d8; --ctp-flamingo: #d488e8; --ctp-rosewater: #e8b8f8; --ctp-yellow: #ffd060; --ctp-peach: #ff9500; --ctp-maroon: #cc3355; --ctp-red: #ff4444; /* ── Semantische Tokens ── */ --bg-app: #141414; --bg-sidebar: #0c0c0c; --bg-card: #1e1e1e; --bg-hover: rgba(170, 92, 195, 0.1); --bg-player: #050505; --bg-glass: rgba(14, 14, 14, 0.88); --accent: #AA5CC3; --accent-dim: rgba(170, 92, 195, 0.15); --accent-glow: rgba(170, 92, 195, 0.4); --volume-accent: #AA5CC3; --text-primary: #ffffff; --text-secondary: #c8c8c8; --text-muted: #888888; --border: #2a2a2a; --border-subtle: #1e1e1e; --positive: #2ed573; --warning: #ffd060; --danger: #ff4444; --radius-sm: 4px; --radius-md: 6px; --radius-lg: 10px; --radius-xl: 14px; --radius-full: 999px; } /* Sidebar mit dezenter Tiefe */ [data-theme='jayfin'] .sidebar { background: #0c0c0c; border-right: 1px solid #1e1e1e; } /* Aktiver Nav-Link: gefüllte Lila-Fläche mit weißer Schrift (WCAG AA) + linker Balken Vorher: color #AA5CC3 auf 12 % accent über bg-sidebar → ~3.30:1 (Fail AA small text). Jetzt: weißer Text auf 22 % accent → >10:1, Brand-Identity bleibt durch den Balken. */ [data-theme='jayfin'] .nav-link.active { background: rgba(170, 92, 195, 0.22); color: #ffffff; border-left: 3px solid #AA5CC3; } [data-theme='jayfin'] .nav-link.active svg { color: #ffffff; } /* Player Bar: tiefes Schwarz mit Jellyfin-Brand-Gradient als Oberkante */ [data-theme='jayfin'] .player-bar { background: #050505; border-top: 2px solid transparent; border-image: linear-gradient(to right, #00A4DC, #AA5CC3) 1; box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.6); } /* Progress fill: Gradient Cyan → Lila */ [data-theme='jayfin'] .progress-bar-fill { background: linear-gradient(to right, #00A4DC 0%, #AA5CC3 100%); box-shadow: 0 0 8px rgba(170, 92, 195, 0.5); } /* Cards */ [data-theme='jayfin'] .card { background: #1e1e1e; border: 1px solid #2a2a2a; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4); } /* Btn-primary: Jellyfin Lila font-weight 700 nötig, weil weiß auf #AA5CC3 nur 4.08:1 erreicht — bold verdichtet die Glyph-Fläche und hebt die Lesbarkeit über die AA-Schwelle. */ [data-theme='jayfin'] .btn-primary, [data-theme='jayfin'] .player-btn-primary, [data-theme='jayfin'] .hero-play-btn { background: #AA5CC3; color: #ffffff; border: none; font-weight: 700; box-shadow: 0 2px 12px rgba(170, 92, 195, 0.35); } [data-theme='jayfin'] .btn-primary:hover, [data-theme='jayfin'] .player-btn-primary:hover, [data-theme='jayfin'] .hero-play-btn:hover { background: #be70d8; box-shadow: 0 4px 18px rgba(170, 92, 195, 0.5); filter: none; } /* Album card hover play button */ [data-theme='jayfin'] .album-card-details-btn { background: #AA5CC3; color: #ffffff; font-weight: 700; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5); } [data-theme='jayfin'] .album-card-details-btn:hover { background: #be70d8; } /* Queue round buttons */ [data-theme='jayfin'] .queue-round-btn.active { background: #AA5CC3; color: #ffffff; font-weight: 700; box-shadow: 0 0 10px rgba(170, 92, 195, 0.4); } /* Connection indicators: schwarz auf warmem Grau */ [data-theme='w98'] .connection-type, [data-theme='w98'] .connection-server { color: #000000; }