/* Critical styles — loaded from /public, never bundled.

   landing.css is imported from JavaScript, so the source document has no
   <link rel="stylesheet">. That means the stylesheet arrives AFTER first
   paint and the raw unstyled HTML renders for a moment on reload: blue
   underlined links, serif text, a full-size SVG. The boot curtain could not
   hide it, because the curtain itself was styled by the stylesheet that had
   not arrived yet.

   This file is a real render-blocking stylesheet, so the browser has these
   rules before it paints anything. It stays out of the Vite graph on purpose:
   files in /public are copied verbatim, so nothing here can be deferred,
   inlined into JS, or code-split.

   Everything below is duplicated in landing.css. Keep the two in sync. */

html.js-anim,
html.js-anim body {
	background: #0b0b0b;
}

.boot {
	position: fixed;
	inset: 0;
	z-index: 100;
	background: #0b0b0b;
	pointer-events: none;
	opacity: 1;
}

/* No JS means no curtain at all, so the page can never be left stuck. */
html:not(.js-anim) .boot {
	display: none;
}

html.js-anim.revealed .boot {
	opacity: 0;
}

/* Hold the reveal targets down until the real stylesheet takes over. */
html.js-anim [data-reveal] {
	opacity: 0;
}
