"""
Art Styles Library - Study and master different styles
"""
from typing import List, Dict

class ArtStyles:
    def __init__(self):
        self.styles = {
            'impressionism': {
                'characteristics': ['loose brushwork', 'light focus', 'everyday subjects'],
                'masters': ['Monet', 'Renoir', 'Degas'],
                'techniques': ['visible brushstrokes', 'emphasis on light', 'outdoor scenes']
            },
            'surrealism': {
                'characteristics': ['dreamlike', 'unexpected juxtapositions', 'symbolic'],
                'masters': ['Dali', 'Magritte', 'Ernst'],
                'techniques': ['illogical scenes', 'precise detail', 'subconscious imagery']
            },
            'abstract': {
                'characteristics': ['non-representational', 'shapes and colors', 'emotional'],
                'masters': ['Kandinsky', 'Pollock', 'Rothko'],
                'techniques': ['geometric forms', 'color fields', 'spontaneous application']
            },
            'minimalism': {
                'characteristics': ['simplicity', 'limited palette', 'essential elements'],
                'masters': ['Malevich', 'Mondrian', 'Judd'],
                'techniques': ['reduction', 'geometric shapes', 'negative space']
            },
            'cyberpunk': {
                'characteristics': ['neon colors', 'futuristic', 'high contrast'],
                'masters': ['Moebius', 'Syd Mead'],
                'techniques': ['digital effects', 'glowing elements', 'urban dystopia']
            },
            'fractal_art': {
                'characteristics': ['mathematical patterns', 'self-similar', 'infinite detail'],
                'masters': ['Benoit Mandelbrot', 'Roger Dean'],
                'techniques': ['recursive algorithms', 'mathematical formulas', 'phi ratios']
            }
        }
    
    def get_style_info(self, style: str) -> Dict:
        """Get information about an art style"""
        return self.styles.get(style.lower(), {})
    
    def recommend_next_style(self, mastered_styles: List[str]) -> str:
        """Recommend next style to learn"""
        for style in self.styles:
            if style not in mastered_styles:
                return style
        return "Create your own unique style!"
