import Cocoa enum AppTheme { static let windowWidth: CGFloat = 680 static let windowHeight: CGFloat = 720 static let windowMinWidth: CGFloat = 600 static let windowMinHeight: CGFloat = windowHeight static let sidebarWidth: CGFloat = 200 static let contentPadding: CGFloat = 20 static let quickStartSpacing: CGFloat = 12 static let featureGridSpacing: CGFloat = 10 static let quickStartIconMax: CGFloat = 80 static let quickStartIconMin: CGFloat = 56 static let featureIconMax: CGFloat = 48 static let featureIconMin: CGFloat = 36 static func quickStartIconSize(forCardWidth width: CGFloat) -> CGFloat { min(quickStartIconMax, max(quickStartIconMin, width * 0.58)) } static func featureIconSize(forCardWidth width: CGFloat) -> CGFloat { min(featureIconMax, max(featureIconMin, width * 0.24)) } static let cornerRadius: CGFloat = 14 static let cardCornerRadius: CGFloat = 20 static let featureCardCornerRadius: CGFloat = 16 static let background = NSColor(calibratedWhite: 0.965, alpha: 1) static let sidebarBackground = NSColor.white static let cardBackground = NSColor.white static let textPrimary = NSColor(calibratedWhite: 0.12, alpha: 1) static let textSecondary = NSColor(calibratedWhite: 0.48, alpha: 1) static let homeActiveBackground = NSColor(red: 0.91, green: 0.94, blue: 1.0, alpha: 1) static let homeActiveForeground = NSColor(red: 0.22, green: 0.47, blue: 0.96, alpha: 1) static let premiumBackground = NSColor(red: 0.95, green: 0.93, blue: 1.0, alpha: 1) static let premiumForeground = NSColor(red: 0.55, green: 0.36, blue: 0.96, alpha: 1) static let blue = NSColor(red: 0.22, green: 0.47, blue: 0.96, alpha: 1) static let blueLight = NSColor(red: 0.88, green: 0.93, blue: 1.0, alpha: 1) static let green = NSColor(red: 0.13, green: 0.68, blue: 0.42, alpha: 1) static let greenLight = NSColor(red: 0.88, green: 0.97, blue: 0.91, alpha: 1) static let orange = NSColor(red: 0.96, green: 0.52, blue: 0.18, alpha: 1) static let orangeLight = NSColor(red: 1.0, green: 0.94, blue: 0.88, alpha: 1) static let purple = NSColor(red: 0.55, green: 0.36, blue: 0.96, alpha: 1) static let teal = NSColor(red: 0.18, green: 0.72, blue: 0.82, alpha: 1) static let navy = NSColor(red: 0.12, green: 0.18, blue: 0.32, alpha: 1) static let paywallPink = NSColor(red: 0.98, green: 0.85, blue: 0.90, alpha: 1) static let paywallPinkText = NSColor(red: 0.75, green: 0.30, blue: 0.45, alpha: 1) static let paywallGold = NSColor(red: 0.96, green: 0.90, blue: 0.78, alpha: 1) static let paywallGoldText = NSColor(red: 0.65, green: 0.48, blue: 0.22, alpha: 1) static let paywallBorder = NSColor(calibratedWhite: 0.88, alpha: 1) static func semiboldFont(size: CGFloat) -> NSFont { .systemFont(ofSize: size, weight: .semibold) } static func mediumFont(size: CGFloat) -> NSFont { .systemFont(ofSize: size, weight: .medium) } static func regularFont(size: CGFloat) -> NSFont { .systemFont(ofSize: size, weight: .regular) } } extension NSView { func applyCardShadow() { wantsLayer = true layer?.shadowColor = NSColor.black.cgColor layer?.shadowOpacity = 0.07 layer?.shadowOffset = NSSize(width: 0, height: -3) layer?.shadowRadius = 14 layer?.masksToBounds = false } func roundCorners(_ radius: CGFloat) { wantsLayer = true layer?.cornerRadius = radius layer?.masksToBounds = true } }