\usetikzlibrary{arrows.meta}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{patterns}

% We put nodes in a separate layer, so we can
% slightly overlap with paths for a perfect fit
\pgfdeclarelayer{nodes}
\pgfdeclarelayer{path}
\pgfsetlayers{main,nodes}

% Layer settings
\tikzset{
	% Layer hack, lets us write
	% later = * in scopes.
	layer/.style = {
		execute at begin scope={\pgfonlayer{#1}},
		execute at end scope={\endpgfonlayer}
	},
	%
	% Nodes
	main/.style = {
		draw,
		circle,
		fill = white
	},
	%
	% Paths
	path/.style = {
		line width = 4mm,
		draw = black,
		% Lengthen paths so they're
		% completely under nodes.
		line cap = rect,
		opacity = 0.3
	}
}