Files
landing_page/refer_landing_page/docs/TYPOGRAPHY_FIXES.md
T

4.2 KiB

Typography & Proportion Fix Pass — refer_landing_page

Task: t_612a91e3 Date: 2026-06-16 Scope: issues #6, #7, #10, #11, #13, #17 from docs/LAYOUT_AUDIT.md. (Items #1, #2, #3, #5, #8, #9 are handled by the sibling pass.)

Files changed (5)

File Change
tailwind.config.ts display cap 9rem → 7rem; display-sm cap 4.5rem → 3.75rem.
components/PageHeader.tsx h1: text-4xl sm:text-5xl lg:text-6xltext-3xl sm:text-4xl lg:text-5xl + break-keep + text-balance; display paragraph switches between display and display-sm based on whether the optional display prop is set.
app/globals.css .corner-label: text-smtext-base.
components/Counter.tsx Added optional static prop (skips IntersectionObserver; renders value as plain text).
app/intro/page.tsx figures entries now carry size + static; the 2026 year is static: true, size: "display-sm"; Counter invocation wires both through.

Catalogue issues resolved

  • #6 (Korean h1 no break-keep) — fixed: break-keep + text-balance added to <h1> in PageHeader. Korean titles now break only at spaces, and multi-line wrap is balanced.
  • #7 (intro "Standards" overflows col-span-7 at 1280+) — fixed: display cap reduced from 9rem to 7rem. "Standards" at 7rem Fraunces ≈ 595px wide; col-span-7 ≈ 720px → fits with margin. Also bumps the intro cover scale down a step to match the rest of the page.
  • #10 (PageHeader display fallback uses long en at 9rem) — fixed: when display prop is absent, the fallback now uses display-sm (3.75rem cap) so "Standardization" (14 chars) and "Publications" (12 chars) never overflow the col-span-8 column.
  • #11 (Counter year 2026 ticks 0→2026) — fixed: Counter gained a static prop; app/intro/page.tsx sets static: true for the year entry, so it renders as static text on first paint with no observer / animation.
  • #13 (Counter cards different magnitudes) — fixed: the year is now display-sm (3.75rem) while 2 and 4 stay at full display (7rem). The 4-digit "2026" no longer pushes cell padding; visual weight is now balanced.
  • #17 (SectionLabel text-sm too small) — fixed: .corner-label bumped from text-sm (14px) to text-base (16px) so the "01 / 05" spread number reads as page furniture, not body copy.

Catalogue items deliberately not addressed in this pass

  • #12 (publications list rail) — audit marked it "Verified fine; no fix".
  • #16 (Header h-[4.25rem] arbitrary) — header height is not a typography concern; sibling pass may review.

Verification

  • npx tsc --noEmitpasses (zero errors).
  • npx next buildpasses (all 5 routes static; 8/8 static pages generated; sizes match previous build).
  • Dev server (port 4510) — /intro, /members, /publications all return 200 with current edits in place.
  • Production CSS verified to contain new clamp(2.75rem, 9vw, 7rem) for .text-display (was clamp(3rem, 10vw, 9rem)).

Rationale for the font-size scale (kept consistent)

The editorial system has two display scales — display (cover, magazine-spread) and display-sm (headline, secondary). Previously:

  • display clamp(3rem, 10vw, 9rem) line-height 0.92
  • display-sm clamp(2.25rem, 6vw, 4.5rem) line-height 0.98

The 9rem cap and 0.92 line-height were tuned for a much larger column / longer headlines than the col-span-7/8 grids actually deliver. After the audit's 1280+ overflow math, the upper cap needed to come down. The new pair:

  • display clamp(2.75rem, 9vw, 7rem) line-height 0.95
  • display-sm clamp(2rem, 5.5vw, 3.75rem) line-height 1.02

The 2:1 ratio between display and display-sm (was 2:1, still 2:1) and the reduced 0.95 / 1.02 line-heights give a slightly airier feel that matches the rest of the editorial type stack. The h1 in PageHeader also stepped down one notch (5xl → 4xl lg) for the same reason — a 6xl Korean h1 was a stretched-out 60px serif dominating the col-span-8 unnecessarily.

Regressions introduced

None verified at the source level. The static prop on Counter is opt-in (default false), so other pages' Counters (members figures, publications figures, standardization figures) are unchanged in behavior.