- Full-screen loader whose only content is the logo animating: the "B"
draws in and fills, the base facets trace in, then a wave runs along
them until the page is ready (pure CSS, plays before JS)
- Loader gate holds the loader until GSAP + fonts and every 3D scene's
first frame are ready, then waits 1s (min 1.4s total) before leaving;
hard 8s limit, head-script fallback if JS never boots
- Scroll reveals, SplitText and scene entry animations start only once
the loader leaves, so above-the-fold entries play in view
- Internal links fade the loader back in before navigating, so page
changes are one seamless dark transition
- No loader for no-JS or reduced-motion visitors
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Import all twui layout/elements components and base.css from the
@moduletrace/twui package instead of src/components/lib
- Move the site's own motion and three modules out of the old lib
folder into src/components/motion and src/components/three
- Delete the vendored src/components/lib folder and its tsconfig excludes
- Type BlogPostsListCard's post prop with the DB blog post type,
fixing the type error in BlogPostsList
Co-Authored-By: Claude Opus 5.5 <[email protected]>