local ns = {
	green = '#07d101',
	blue = '#00bfff',
	cream = '#edf0e0',
	pink = '#f584c6',
	red = '#f85624',
	dustypink = '#d8916e',
	navy = '#0047ab',
	gray = '#c0c0c0',
	greenyellow = '#adff2f',
	electriclime = '#ccff00',
	darkgreen = '#228b22',
	lightpink = '#ffb7c5',
	gold = '#ffd700',
}

---@param group string
---@param opts table
local function hi(group, opts)
	vim.api.nvim_set_hl(0, group, opts)
end

hi('Normal', { bg = 'None' })
hi('NormalNC', { bg = 'None' })
hi('SignColumn', { bg = 'None' })
hi('CursorLine', { bg = 'none' })
hi('CursorLineNR', { fg = ns.red, bg = 'none', bold = true })
hi('CursorLineNC', { bg = 'none' })
hi('LineNr', { fg = ns.navy, bg = 'none' })
hi('StatusLine', { bg = 'none' })
hi('StatusLineNC', { bg = 'none' })
hi('LspInlayHint', { fg = 'DarkCyan' })
hi('Visual', { bg = ns.blue })
hi('PmenuSel', { fg = ns.gold, bg = ns.blue })
hi('Search', { fg = ns.cream })
hi('CurSearch', { fg = ns.darkgreen, bg = ns.cream })
hi('Substitute', { fg = ns.cream })
hi('WinSeparator', { fg = ns.blue })

hi('Boolean', { fg = ns.blue })
hi('Comment', { fg = ns.gray })
hi('Constant', { fg = ns.pink })
hi('Statement', { fg = ns.green, bold = true })
hi('KeyWord', { fg = ns.cream, bold = true })
hi('PreProc', { fg = ns.dustypink })
hi('Identifier', { fg = ns.greenyellow, bold = true })
hi('Special', { fg = ns.blue })
hi('String', { fg = ns.lightpink })
hi('Type', { fg = ns.blue, bold = true })
hi('Number', { fg = ns.gold })
hi('Todo', { fg = ns.navy, bg = ns.cream, bold = true })
hi('Operator', { fg = ns.cream })
hi('Function', { fg = ns.gold })
hi('SpecialChar', { fg = ns.pink })
hi('Delimiter', { fg = ns.cream })

hi('@variable', { fg = ns.electriclime })
hi('@variable.parameter', { italic = true })