From 356353f8eb770a6dff59984ebc5407344d732e43 Mon Sep 17 00:00:00 2001 From: Tanish Manku Date: Thu, 10 Sep 2026 17:24:11 -0700 Subject: [PATCH] hero: the wordmark's weight interpolates into the heading cut MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The wordmark was Archivo Black — a separate single-weight cut — so it stayed poster-bold after settling into the top stack while every other heading sat at the display 620, and the mismatch read as off. It now renders variable Archivo at the poster extreme (wght 900 / wdth 125%, visually the Black cut), and the hero flip interpolates each letter's weight and width down to the headings' 620 / 118% along its flight — the change lands invisibly inside the motion, and the settled heading matches its neighbors exactly. Reversible with scroll like everything else, and the Archivo Black font download is gone entirely. Claude-Session: https://claude.ai/code/session_01YBoaBEt3gynzTwogBFtn4B --- .../artcraft-website-next/src/app/layout.tsx | 20 +++++++----------- .../src/components/landing/hero-wordmark.tsx | 21 ++++++++++++++++--- .../src/components/ruler/heading-flow.tsx | 13 +++++++++--- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/frontend/apps/artcraft-website-next/src/app/layout.tsx b/frontend/apps/artcraft-website-next/src/app/layout.tsx index fecfc1e5b0..26b4a23f2b 100644 --- a/frontend/apps/artcraft-website-next/src/app/layout.tsx +++ b/frontend/apps/artcraft-website-next/src/app/layout.tsx @@ -1,7 +1,6 @@ import type { Metadata, Viewport } from "next"; import { Archivo, - Archivo_Black, Instrument_Serif, Inter, Geist_Mono, @@ -15,8 +14,12 @@ import "./globals.css"; const SITE_URL = "https://getartcraft.com"; -// Display face: Archivo with its width axis loaded, so headings can run -// slightly expanded (font-stretch) for the industrial-grotesque look. +// Display face: variable Archivo with its width axis loaded — headings run +// slightly expanded (font-stretch) for the industrial-grotesque look, and +// the hero wordmark renders the same family at its poster extreme +// (wght 900 / wdth 125%, the Archivo Black look) so the ruler's hero flip +// can interpolate weight and width down to the heading setting. A separate +// Archivo Black cut could never interpolate. const archivo = Archivo({ subsets: ["latin"], variable: "--font-archivo", @@ -24,15 +27,6 @@ const archivo = Archivo({ axes: ["wdth"], }); -// Wordmark face: Archivo Black, the display family's poster-weight cut -// (a single-weight family of its own, not Archivo at 900). -const archivoBlack = Archivo_Black({ - subsets: ["latin"], - weight: "400", - variable: "--font-archivo-black", - display: "swap", -}); - const instrumentSerif = Instrument_Serif({ subsets: ["latin"], weight: "400", @@ -110,7 +104,7 @@ export default function RootLayout({