/* constellation
   Interactive canvas-based tech-stack visualization. 8 clusters (or any
   number) of small glowing nodes, each cluster drifting through its own
   noise field, occasionally twitching. Hovering over the canvas snaps to
   the nearest node within 26px and shows a tooltip with the node's name.
   Cluster labels light up when their cluster has the hovered node. */

.constellation-wrap {
	position: relative;
	width: 100%;
	height: 600px;
	margin-top: -100px;
	overflow: visible;
	z-index: 0;
}

.constellation-wrap canvas {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
}

.constellation-wrap .cat-label {
	position: absolute;
	font-size: 10px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.14);
	pointer-events: none;
	z-index: 1;
	transition: color 0.4s ease;
}
.constellation-wrap .cat-label.lit { color: rgba(255, 255, 255, 0.7); }

.mm-tooltip {
	position: fixed;
	pointer-events: none;
	padding: 6px 12px;
	border: 1px solid;
	background: rgba(10, 10, 10, 0.85);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	font-size: 12px;
	letter-spacing: 0.05em;
	opacity: 0;
	transform: translate(-50%, -150%);
	transition: opacity 0.18s ease;
	white-space: nowrap;
	z-index: 100;
}
.mm-tooltip.show { opacity: 1; }
