Skip to content

Commit e6f2e0c

Browse files
LEANDERANTONYclaude
andcommitted
fix(workspace): correct typography — Space Grotesk 600, drop dead font, un-caps theme labels
Three coupled frontend-only typography fixes: 1. Space Grotesk loaded weights ["400","500","700"] but globals.css requests `font-weight: 600` in 60+ rules (every .b-shell heading, region title, button, chip via --font-display). With no 600 face the browser substituted the 700 Bold face, so workspace headings and labels rendered heavier than designed — the "weird font" report. Now ["400","500","600","700"], matching HelpmateAI exactly -> genuine SemiBold. 2. Geist (sans) was imported + loaded but referenced NOWHERE (only --font-geist-mono is used). Dropped the import, instance, and className var — one fewer webfont fetched per page load. 3. .b-artifact-style-option had text-transform: uppercase, so the download page's theme picker rendered the already-correctly-cased "Professional"/"Classic ATS" labels as shouty spaced mono caps. Removed it (+ tightened tracking 0.04->0.02em now that it's mixed-case). The intentional "STYLE" eyebrow stays uppercase. tsc + eslint clean. No behavioral/logic change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 611d34c commit e6f2e0c

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

frontend/src/app/globals.css

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7075,8 +7075,10 @@ code {
70757075
font-family: var(--font-mono);
70767076
font-size: 11.5px;
70777077
font-weight: 600;
7078-
letter-spacing: 0.04em;
7079-
text-transform: uppercase;
7078+
letter-spacing: 0.02em;
7079+
/* No text-transform: the labels ("Professional", "Classic ATS")
7080+
are already correctly cased in THEME_OPTIONS. Uppercasing them
7081+
made the picker read as shouty all-caps mono. */
70807082
color: var(--fg-3);
70817083
border-radius: 6px;
70827084
cursor: pointer;

frontend/src/app/layout.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Metadata } from "next";
2-
import { DM_Sans, Geist, Geist_Mono, Space_Grotesk } from "next/font/google";
2+
import { DM_Sans, Geist_Mono, Space_Grotesk } from "next/font/google";
33
import { Analytics } from "@vercel/analytics/next";
44
import { CookieConsentBanner } from "@/components/cookie-consent";
55
import { PostHogProvider } from "@/components/posthog-provider";
@@ -13,15 +13,18 @@ const dmSans = DM_Sans({
1313
const spaceGrotesk = Space_Grotesk({
1414
variable: "--font-space-grotesk",
1515
subsets: ["latin"],
16-
weight: ["400", "500", "700"],
16+
// 600 (SemiBold) is required: globals.css uses `font-weight: 600`
17+
// in 60+ rules — every `.b-shell` heading, region title, button and
18+
// chip via --font-display. Omitting it made the browser substitute
19+
// the 700 Bold face for all of them, so workspace headings/labels
20+
// rendered heavier than intended (the "weird font" report). Matches
21+
// HelpmateAI's load exactly.
22+
weight: ["400", "500", "600", "700"],
1723
});
1824

19-
// Workspace-scoped typography (Direction B redesign). Consumed by
20-
// `.b-shell` only — see globals.css.
21-
const geist = Geist({
22-
variable: "--font-geist",
23-
subsets: ["latin"],
24-
});
25+
// Workspace mono (Direction B redesign). The only Geist face the
26+
// workspace consumes — `.b-shell --font-mono` in globals.css. (The
27+
// Geist *sans* face was loaded but never referenced; dropped.)
2528
const geistMono = Geist_Mono({
2629
variable: "--font-geist-mono",
2730
subsets: ["latin"],
@@ -48,7 +51,7 @@ export default function RootLayout({
4851
return (
4952
<html
5053
lang="en"
51-
className={`${dmSans.variable} ${spaceGrotesk.variable} ${geist.variable} ${geistMono.variable}`}
54+
className={`${dmSans.variable} ${spaceGrotesk.variable} ${geistMono.variable}`}
5255
suppressHydrationWarning
5356
>
5457
<body>

0 commit comments

Comments
 (0)