/*
 * VMWEB base — the global rules every page of the original design shipped in
 * its <helmet><style> plus the page shell the design runtime applied
 * (html, body {height:100%} and a full-height root).
 * Brand: ink #0e0f11 · void #000 · lime #c1ed00 · paper #edf0ea
 */

html, body { height: 100%; margin: 0; }
html { scroll-behavior: smooth; background: #0e0f11; }
body {
	margin: 0;
	background: #0e0f11;
	color: #edf0ea;
	/* Default type: text that sets no font of its own uses the site's sans, never the browser's serif. */
	font-family: 'Instrument Sans', sans-serif;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}
/* Buttons and form fields take the surrounding font instead of the browser's (Arial/system). */
button, input, select, textarea { font-family: inherit; }
a { color: #c1ed00; }
a:hover { color: #edf0ea; }
::selection { background: #c1ed00; color: #0e0f11; }

/* Root host (= the design runtime's #dc-root > .sc-host). */
#vm-root { height: 100%; }

/* Each component renders inside a plain block host, like the runtime's .sc-host. */
.vm-host { display: block; }

/* Accessibility helpers. */
.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; margin: -1px; overflow: hidden; padding: 0;
	position: absolute !important; width: 1px; word-wrap: normal !important;
}
.screen-reader-text:focus {
	background: #c1ed00; color: #0e0f11; clip: auto !important; clip-path: none;
	display: block; font: 600 14px/1 'Instrument Sans', sans-serif; height: auto;
	left: 12px; top: 12px; padding: 14px 20px; width: auto; z-index: 100000; border-radius: 999px; text-decoration: none;
}
.vm-skip-link { position: absolute; }

/*
 * Page veil. header.php prints it so it is part of the first paint (the design
 * showed the veil before any content); vm-fx.js adopts it, cancels the safety
 * animation below and plays the 150% → 0% circle reveal. If vm-fx never runs
 * (script blocked or delayed by an optimiser) the same reveal plays on its own
 * after 4s; without JavaScript a <noscript> rule hides it.
 */
.vm-veil { animation: vm-veil-safety 1.05s cubic-bezier(.76,0,.24,1) 4s forwards; }
@keyframes vm-veil-safety {
	from { clip-path: circle(150% at 50% 50%); }
	to { clip-path: circle(0% at 50% 50%); visibility: hidden; }
}
@media (prefers-reduced-motion: reduce) { .vm-veil { display: none; } }

/*
 * Reduced motion: handled exactly like the design — vm-fx.js skips reveals,
 * magnetic/tilt/parallax, the page veil and grain animation, and the Home 3D
 * scene falls back to 2D. CSS keyframe loops keep playing, as in the original.
 */

/* Print baseline (mirrors the design runtime). */
@media print {
	@page { margin: .5cm; }
	figure, table { break-inside: avoid; }
	html, body, #vm-root { height: auto; }
	*, *::before, *::after {
		print-color-adjust: exact; -webkit-print-color-adjust: exact;
		backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
		animation-delay: -99s !important; animation-duration: .001s !important;
		animation-iteration-count: 1 !important; animation-fill-mode: both !important;
		transition-duration: 0s !important;
	}
}

/* "Explore in depth" chips linking a discipline to its service pages (vmweb_service_pages_html()). */
.vm-page-chip:hover, .vm-page-chip:focus-visible { background: rgba(193, 237, 0, .1) !important; border-color: #c1ed00 !important; }
