Code not running the intended way (please read at least)

Hi! Please watch this video and I’ll explain the situation after so you understand: https://gyazo.com/0806aebfb55c12b3c65f229665dfb849
Basically, I want the user to be able to pick two options, one on the left side and one on the right side. But in the video, I was only able to pick two options from the left but none on the right. I was not able to change my selection even before I pressed the continue button. I don’t have any solutions and would appreciate some suggestions on how to fix this. This is my code that I’ve put into each button:

local button = script.Parent

button.MouseButton1Click:Connect(function()
	local gradience = button:WaitForChild("Gradience")
	local chosengradience = button.Folder:WaitForChild("ChosenGradience")
	local chosen = button.Chosen.Value
	local category = button.Category.Value

	for i, v in pairs(button.Parent:GetChildren()) do
		if v:isA("TextButton") then
			if v.Name ~= "Continue" then
				if v:WaitForChild("Category").Value == category then
					if v:WaitForChild("Chosen").Value == true then
						v:WaitForChild("Chosen").Value = false
						v:WaitForChild("Gradience").Color = v:WaitForChild("Folder"):WaitForChild("ChosenGradience").Color
					end
				end
			end
		end
	end
	chosen = true
	gradience.Color = chosengradience.Color
end)

That is a very inefficient way, instead you should have a system where you Update all Buttons, preferably with something called CollectionService, it will make it easier to make changes to All Buttons and add the Connection to them instead of having 6 independent scripts that you have to change everytime something happens

How would I do that? (30s limit)

Documentation:

There are many tutorials on it:

okay, ill deal with the repitition later, but any suggestions on fixing the script?