diff --git a/docs/app/page.tsx b/docs/app/page.tsx
index 3d35bb81be..a87007d0cc 100644
--- a/docs/app/page.tsx
+++ b/docs/app/page.tsx
@@ -16,47 +16,49 @@ export default async function HomePage() {
{/* Left side — Hero title */}
- {/* 3D Logo */}
+ {/* 3D Logo: WebPs are rendered from the original SVGs at 2x their
+ display size with the grain baked in, so they're `unoptimized` to
+ keep next/image from resampling the grain away. */}
{/* Dark mode logos */}
{/* Light mode logos */}
diff --git a/docs/assets/GeistPixel-Square.woff2 b/docs/assets/GeistPixel-Square.woff2
new file mode 100644
index 0000000000..02cd121c51
Binary files /dev/null and b/docs/assets/GeistPixel-Square.woff2 differ
diff --git a/docs/components/landing/hero-readme.tsx b/docs/components/landing/hero-readme.tsx
index 883029f79e..7f7fc6ee2d 100644
--- a/docs/components/landing/hero-readme.tsx
+++ b/docs/components/landing/hero-readme.tsx
@@ -704,6 +704,29 @@ function ContributorsSection({
contributors: ContributorInfo[];
contributorCount: number;
}) {
+ const wallRef = useRef(null);
+ const [wallNearViewport, setWallNearViewport] = useState(false);
+
+ // Hundreds of avatars scroll through the wall; the links always render,
+ // but the avatar images are only mounted once the wall is close to the
+ // viewport instead of relying on the browser's generous native
+ // lazy-loading distance.
+ useEffect(() => {
+ const wall = wallRef.current;
+ if (!wall) return;
+ const observer = new IntersectionObserver(
+ ([entry]) => {
+ if (entry.isIntersecting) {
+ setWallNearViewport(true);
+ observer.disconnect();
+ }
+ },
+ { rootMargin: "200px" },
+ );
+ observer.observe(wall);
+ return () => observer.disconnect();
+ }, []);
+
if (contributors.length === 0) return null;
const colCount = 18;
@@ -735,6 +758,7 @@ function ContributorsSection({
{contributors.length > 0 && (
-
+ {wallNearViewport ? (
+
+ ) : (
+
+ )}
{c.login}
@@ -1017,23 +1046,25 @@ function DemoVideo() {
return (
+ {/* The poster is a CSS background rather than the `poster` attribute:
+ hidden