// Lucide-style line icons drawn inline so we never pull a runtime icon lib. // Stroke 1.75, currentColor, 24x24 viewBox by default. const Icon = ({ d, size = 20, className = '', stroke = 1.75, children, ...rest }) => ( {children} ); const I = { Logo: ({ size = 28 }) => ( // Brushstroke + magnifier — "墨鉴" mark ), Search: (p) => , Upload: (p) => , Download: (p) => , File: (p) => , FileText: (p) => , Check: (p) => , CheckCircle: (p) => , AlertTriangle: (p) => , AlertCircle: (p) => , Info: (p) => , Shield: (p) => , ShieldCheck: (p) => , Lock: (p) => , Clock: (p) => , Sparkles: (p) => , Brain: (p) => , Activity: (p) => , Layers: (p) => , BarChart: (p) => , Radar: (p) => , Target: (p) => , Cpu: (p) => , Chevron: (p) => , ChevronDown: (p) => , ArrowRight: (p) => , ArrowUpRight: (p) => , X: (p) => , Plus: (p) => , Menu: (p) => , Quote: (p) => , Refresh: (p) => , Wallet: (p) => , QrCode: (p) => , Eye: (p) => , Edit: (p) => , Trash: (p) => , Filter: (p) => , MessageSquare: (p) => , Code: (p) => , UserCheck: (p) => , Beaker: (p) => , Microscope: (p) => , Mail: (p) => , MessageSquare: (p) => , Code: (p) => , UserCheck: (p) => , Sliders: (p) => , Globe: (p) => , Book: (p) => , University: (p) => , Spinner: ({ size = 16, className = '' }) => ( ), Dot: ({ className = '' }) => , }; window.I = I; window.Icon = Icon;