"""
    pygments.styles.lightbulb
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    A minimal dark theme based on the Lightbulb theme for VSCode.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""

from pygments.style import Style
from pygments.token import (
    Comment,
    Error,
    Generic,
    Keyword,
    Literal,
    Name,
    Number,
    Operator,
    Punctuation,
    String,
    Token,
)


__all__ = ['LightbulbStyle']


COLORS = {
    "bg": "#1d2331",
    "blue_1": "#73D0FF",
    "gray_1": "#7e8aa1",
    "gray_2": "#3c4354",
    "gray_3": "#6e7681",
    "red_1": "#f88f7f",
    "red_2": "#3d1e20",
    "orange_1": "#FFAD66",
    "orange_2": "#F29E74",
    "yellow_1": "#FFD173",
    "white": "#d4d2c8",
    "magenta_1": "#DFBFFF",
    "green_1": "#D5FF80",
    "green_2": "#19362c",
    "cyan_1": "#95E6CB",
}


class LightbulbStyle(Style):
    """
    A minimal dark theme based on the Lightbulb theme for VSCode.
    """

    name = 'lightbulb'

    background_color = COLORS['bg']
    highlight_color = COLORS['gray_3']

    line_number_color = COLORS['gray_2']
    line_number_special_color = COLORS['gray_2']

    styles = {
        Comment: COLORS["gray_1"],
        Comment.Hashbang: "italic " + COLORS['red_1'],
        Comment.Preproc: "bold " + COLORS['orange_1'],
        Comment.Special: "italic " + COLORS['gray_1'],
        Error: COLORS['red_1'],
        Generic.Deleted: f"bg:{COLORS['red_2']} #f88f7f",
        Generic.Emph: "italic",
        Generic.Error: "#f88f7f",
        Generic.Inserted: f"bg:{COLORS['green_2']} #6ad4af",
        Generic.Output: COLORS['gray_1'],
        Generic.Strong: "bold",
        Generic.Traceback: COLORS['red_1'],
        Keyword: COLORS['orange_1'],
        Keyword.Constant: COLORS['orange_1'],
        Keyword.Declaration: COLORS['orange_1'],
        Keyword.Namespace: COLORS['orange_1'],
        Keyword.Reserved: COLORS['orange_1'],
        Keyword.Type: COLORS['blue_1'],
        Literal: COLORS['green_1'],
        Name: COLORS['white'],
        Name.Attribute: COLORS['yellow_1'],
        Name.Builtin: COLORS['yellow_1'],
        Name.Builtin.Pseudo: "#5CCFE6",
        Name.Class: COLORS['blue_1'],
        Name.Constant: COLORS['yellow_1'],
        Name.Decorator: "bold italic " + COLORS['gray_1'],
        Name.Entity: COLORS['cyan_1'],
        Name.Exception: COLORS['blue_1'],
        Name.Function: COLORS['yellow_1'],
        Name.Function.Magic: COLORS['yellow_1'],
        Name.Other: COLORS['white'],
        Name.Property: COLORS['yellow_1'],
        Name.Tag: "#5CCFE6",
        Name.Variable: COLORS['white'],
        Number: COLORS['magenta_1'],
        Operator: COLORS['orange_1'],
        Operator.Word: COLORS['orange_1'],
        Punctuation: COLORS['white'],
        String: COLORS['green_1'],
        String.Affix: COLORS['orange_2'],
        String.Doc: COLORS['gray_1'],
        String.Escape: COLORS['cyan_1'],
        String.Interpol: COLORS['cyan_1'],
        String.Other: COLORS['cyan_1'],
        String.Regex: COLORS['cyan_1'],
        String.Symbol: COLORS['magenta_1'],
        Token: COLORS['white'],
    }
