""" Style Engine Module. ==================== Centralized design system for the 2026 Premium UI. Defines color palettes, glassmorphism templates, and modern font loading. """ from PySide6.QtGui import QColor, QFont, QFontDatabase import os class Theme: """Premium Dark Theme Palette (2026 Edition).""" # Backgrounds BG_DARK = "#0d0d12" # Deep cosmic black BG_CARD = "#16161e" # Slightly lighter for components BG_GLASS = "rgba(22, 22, 30, 0.7)" # Semi-transparent for glass effect # Neons & Accents ACCENT_CYAN = "#00f2ff" # Electric cyan ACCENT_PURPLE = "#7000ff" # Deep cyber purple ACCENT_GREEN = "#00ff88" # Mint neon # Text TEXT_PRIMARY = "#ffffff" # Pure white TEXT_SECONDARY = "#9499b0" # Muted blue-gray TEXT_MUTED = "#565f89" # Darker blue-gray # Borders BORDER_SUBTLE = "rgba(100, 100, 150, 0.2)" BORDER_GLOW = "rgba(0, 242, 255, 0.5)" class StyleGenerator: """Generates QSS strings for complex effects.""" @staticmethod def get_glass_card(radius=12, border=True): """Returns QSS for a glassmorphism card.""" border_css = f"border: 1px solid {Theme.BORDER_SUBTLE};" if border else "border: none;" return f""" background-color: {Theme.BG_GLASS}; border-radius: {radius}px; {border_css} """ @staticmethod def get_glow_border(color=Theme.ACCENT_CYAN): """Returns QSS for a glowing border state.""" return f"border: 1px solid {color};" def load_modern_fonts(): """Attempts to load a modern font stack for the 2026 look.""" # Preferred order: Segoe UI Variable, Inter, Segoe UI, sans-serif families = ["Segoe UI Variable Text", "Inter", "Segoe UI", "sans-serif"] for family in families: font = QFont(family, 10) if QFontDatabase.families().count(family) > 0: return font # Absolute fallback return QFont("Arial", 10)