/* Full-viewport grain overlay. The noise pattern is an inline SVG
   feTurbulence filter encoded directly in the CSS — no image file, no
   extra HTTP request, ~1KB total. pointer-events:none means it never
   interferes with clicks/scrolling underneath it. */

.vcs-grain-overlay{
	position: fixed;
	inset: 0;
	z-index: 9998; /* below the loader (99999), above regular content */
	pointer-events: none;
	opacity: 0.045;
	mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	background-repeat: repeat;
}

@media (prefers-reduced-motion: reduce){
	/* Grain itself is static, not animated, so no change needed — this
	   rule is a placeholder in case a future revision adds any motion
	   to the texture, so reduced-motion users are covered by default. */
	.vcs-grain-overlay{ opacity: 0.045; }
}
