{
    "name": "Berry Light",
    "variables": {
        "blue1": "#0084FF",
        "blue2": "#005FE7",
        "blue3": "#003DB1",
        "blue4": "#00217A",
        "blue5": "#000F43",

        "pink1": "#FF00E0",
        "pink2": "#FF00BA",
        "pink3": "#C50082",
        "pink4": "#880051",
        "pink5": "#4B0028",

        "purple1": "#A200FF",
        "purple2": "#8C00E0",
        "purple3": "#6C00AB",
        "purple4": "#4B0076",
        "purple5": "#2A0041",

        "green1": "#00EB00",
        "green2": "#00C000",
        "green3": "#008E00",
        "green4": "#006700",
        "green5": "#003800",

        "grey1": "#2A2A2F",
        "grey2": "#333333",
        "grey3": "#555555",
        "grey4": "#888888",
        "grey5": "#DDDDDD",
        "grey6": "#EEEEEE",

        "white": "#FFFFFF",

        "orange": "#F2CA00",

        "red": "#BE2C13",
    },
    "globals":
    {
        "background": "var(white)",
        "foreground": "var(grey4)",
        "caret": "var(grey4)",
        "block_caret": "var(grey6)",
        "misspelling": "var(red)",
        "selection": "var(grey5)",
        "brackets_foreground": "var(grey4)",
        "bracket_contents_options": "underline",
        "bracket_contents_foreground": "var(grey4)",
    },
    "rules":
    [
        {
            "scope": "support",
            "foreground": "var(pink1)",
        },
        {
            "scope": "comment",
            "foreground": "var(grey4)"
        },
        {
            "scope": "invalid",
            "foreground": "var(orange)"
        },
        {
            "scope": "invalid.deprecated",
            "foreground": "var(orange)"
        },
        {
            "scope": "constant",
            "foreground": "var(blue1)"
        },
        // PHP example: public const BAR = 321, "321" will be colourized
        {
            "scope": "constant.numeric",
            "foreground": "var(blue1)"
        },
        {
            "scope": "constant.language",
            "foreground": "var(blue1)"
        },
        {
            "scope": "constant.character.escape",
            "foreground": "var(blue1)"
        },
        {
            "scope": "constant.other",
            "foreground": "var(pink1)"
        },
        {
            "scope": "string",
            "foreground": "var(blue3)",
        },
        // HTML example: <link rel="preconnect" />, "preconnect" will be colourized
        {
            "scope": "string.quoted",
            "foreground": "var(blue3)",
        },
        // PHP examples: use, const, function, string, array, null
        {
            "scope": "storage.type",
            "foreground": "var(blue1)",
        },
        // PHP examples: private, protect, public
        {
            "scope": "storage.modifier",
            "foreground": "var(blue1)",
        },
        // PHP examples: $foo
        {
            "scope": "variable",
            "foreground": "var(grey1)"
        },
        // PHP examples: $this->foo, "$this" will be colourized
        {
            "scope": "variable.language",
            "foreground": "var(grey1)"
        },
        // PHP examples: $foo
        {
            "scope": "variable.other",
            "foreground": "var(grey1)"
        },
        {
            "scope": "variable.other.member",
            "foreground": "var(pink1)"
        },
        // PHP example: public function getUser, "getUser" will be colourized
        {
            "scope": "variable.function",
            "foreground": "var(green2)"
        },
        {
            "scope": "variable.parameter",
            "foreground": "var(grey1)"
        },
        // PHP example: new User(), "new" will be colourized
        {
            "scope": "keyword",
            "foreground": "var(blue1)"
        },
        // PHP examples: return, die
        {
            "scope": "keyword.control",
            "foreground": "var(blue1)"
        },
        // PHP examples: if, else
        {
            "scope": "keyword.control.conditional",
            "foreground": "var(blue1)"
        },
        // PHP examples: =, ==, ===, &&, ||, &, and, or
        {
            "scope": "keyword.operator",
            "foreground": "var(grey4)"
        },
        {
            "scope": "keyword.declaration",
            "foreground": "var(blue1)"
        },
        // PHP example: public function getUser(): User, ":" will be colourized
        {
            "scope": "meta.function.return-type",
            "foreground": "var(grey4)"
        },
        // Function name
        {
            "scope": "entity.name",
            "foreground": "var(green2)"
        },
        {
            "scope": "entity.name.function",
            "foreground": "var(green2)"
        },
        {
            "scope": "entity.name.namespace",
            "foreground": "var(pink1)"
        },
        // TODO: determine why colours aren't respected
        {
            "scope": "entity.name.function.constructor",
            "foreground": "var(green2)"
        },
        // TODO: determine why colours aren't respected
        {
            "scope": "entity.name.function.destructor",
            "foreground": "var(green2)"
        },
        {
            "scope": "entity.name.enum",
            "foreground": "var(pink1)"
        },
        {
            "scope": "entity.name.class",
            "foreground": "var(pink1)"
        },
        {
            "scope": "entity.other.inherited-class",
            "foreground": "var(pink1)"
        },
        // PHP Examples: public const FOO, "FOO" will be colourized
        {
            "scope": "entity.name.constant",
            "foreground": "var(pink1)"
        },
        {
            "scope": "entity.name.label",
            "foreground": "var(pink1)"
        },
        {
            "scope": "entity.name.section",
            "foreground": "var(pink1)"
        },
        // HTML examples: <div></div>, both "div" will be colourized
        {
            "scope": "entity.name.tag",
            "foreground": "var(pink1)"
        },
        {
            "scope": "entity.other.attribute-name",
            "foreground": "var(grey4)"
        },
        {
            "scope": "meta.group",
            "foreground": "var(grey4)",
        },
        // PHP: method call parantheses
        {
            "scope": "punctuation.section.group.begin",
            "foreground": "var(grey4)"
        },
        {
            "scope": "punctuation.section.group.end",
            "foreground": "var(grey4)"
        },

        // JavaScript
        {
            "scope": "source.js punctuation.accessor",
            "foreground": "var(grey4)"
        },
        {
            "scope": "source.ts punctuation.accessor",
            "foreground": "var(grey4)"
        },
        {
            "scope": "source.js variable.function",
            "foreground": "var(green2)"
        },
        {
            "scope": "source.ts variable.function",
            "foreground": "var(green2)"
        },
        {
            "scope": "source.js meta.property.object",
            "foreground": "var(pink1)"
        },
        {
            "scope": "source.ts meta.property.object",
            "foreground": "var(pink1)"
        },

        // Targets keyword: document,window,navigator
        {
            "scope": "support.type.object.dom.js",
            "foreground": "var(grey1)"
        },
        {
            "scope": "support.type.object.dom.ts",
            "foreground": "var(grey1)"
        },

        // Targets keyword: console
        {
            "scope": "support.type.object.console.js",
            "foreground": "var(grey1)"
        },
        {
            "scope": "support.type.object.console.ts",
            "foreground": "var(grey1)"
        },

        // Targets keyword: new
        {
            "scope": "keyword.operator.word.new.js",
            "foreground": "var(blue1)"
        },
        {
            "scope": "keyword.operator.word.new.ts",
            "foreground": "var(blue1)"
        },
        // JavaScript examples: const u = new User();, "User" will be colourized
        {
            "scope": "source.js variable",
            "foreground": "var(pink1)"
        },
        {
            "scope": "source.ts variable",
            "foreground": "var(pink1)"
        },

        // JSON
        {
            "name": "Subkey",
            "scope": "source.json meta.mapping.value.json meta.sequence.json meta.mapping.key.json string.quoted.double.json",
            "foreground": "var(pink1)"
        },
        {
            "name": "Subvalue",
            "scope": "source.json meta.mapping.value.json meta.sequence.json meta.mapping.value.json string.quoted.double.json",
            "foreground": "var(blue2)"
        },
        {
            "name": "Key",
            "scope": "source.json meta.mapping.key.json string.quoted.double.json",
            "foreground": "var(pink1)"
        },
        {
            "name": "Subvalue",
            "scope": "source.json meta.mapping.value.json meta.mapping.value.json string.quoted.double.json",
            "foreground": "var(blue2)"
        },
    ]
}