/* Critical paint styles, loaded before the JS/CSS bundle to prevent FOUC on
   hard refresh. Served verbatim from /public (NOT processed by Vite), which
   also avoids a Vite html-inline-proxy build bug with inline <style> blocks. */
html, body { margin: 0; background: #060b14; color: #f1f5f9; }
#root { min-height: 100vh; }

/* Hide Material icon ligatures until the icon font is ready */
.msym { visibility: hidden; }
html.fonts-ready .msym { visibility: visible; }

/* Scroll-reveal blocks stay visible until React hydrates */
.reveal, .stagger-group > .stagger-item { opacity: 1; transform: none; }
html.app-ready .reveal:not(.visible) { opacity: 0; transform: translateY(26px); }
html.app-ready .stagger-group:not(.visible) > .stagger-item { opacity: 0; transform: translateY(22px); }
html:not(.app-ready) .anim-fade-up { opacity: 1; transform: none; animation: none; }
