# Verification Report β€” refer_landing_page **Date:** 2026-06-16 **Task:** t_fd02ecf3 β€” "Verify final layout and document remaining issues" **Source catalogue:** `docs/LAYOUT_AUDIT.md` (17 items) **Fix passes verified:** t_612a91e3 (typography/proportions, 6 items) + t_6707ec77 (structural, 1 item) **Method:** end-to-end re-read of every modified file, source-level cross-check against each catalogue item, full `npx next build` with rendered-HTML inspection, `npx tsc --noEmit`, dev-server route check. --- ## Headline **resolved: 12/17 catalogue items Β· regressions introduced: none Β· remaining known issues: 5 (3 verified non-issues, 2 explicitly out-of-scope polish items)** The 5 unresolved items are not "left broken": - 3 of them (`#4`, `#12`, `#14`) are explicitly verified as non-issues in the original audit itself. - The other 2 (`#15`, `#16`) are polish items the two fix passes deliberately scoped out (the structural-fix report explains the trade-off for each). Note: `#17` was classified as 🟑 polish by the audit but was treated as in-scope by the typography pass and resolved (`.corner-label` bumped from `text-sm` to `text-base`). It is counted as resolved in the 12/17 above. --- ## Per-item verification | # | Severity | File | Catalogue claim | Current state | Verdict | |---|---------|------|----------------|---------------|---------| | 1 | πŸ”΄ | `app/lectures/page.tsx:86`, `app/standardization/page.tsx:149`, `app/intro/page.tsx:251` | `border-current/30`, `border-current/20` fall back to fixed gray | `border-ink/30` + `group-hover:border-ivory/40` (lectures); `border-vermillion/40`/`border-cobalt/40` + `group-hover:border-ivory/40` (standardization, per accent); `border-ink/20` + `group-hover:border-ivory/20` (intro thrust points). `border-current` is **not present anywhere** in `app/**`. | βœ… resolved | | 2 | πŸ”΄ | `app/intro/_components/HeroComposition.tsx:90-94` | node-pulse `transformOrigin` was in element coord-space β†’ drifted in some Firefox | Circles now carry inline `style={{ transformBox: "fill-box", transformOrigin: "center" }}`. Rendered HTML contains `transform-box:fill-box` and `transform-origin:center`. | βœ… resolved | | 3 | πŸ”΄ | `app/intro/_components/HeroComposition.tsx:99-117` | bottom-right "QUIC Β· STREAMS" text at y=334 overlapped 4th stream's curve | Both `` labels moved to top corners at `y=24`. Rendered HTML: `y="24" ... >MCM Β· MESH` and `y="24" text-anchor="end" ... >QUIC Β· STREAMS`. Old `y="334"` gone. | βœ… resolved | | 4 | β€” | `app/intro/_components/HeroComposition.tsx:43-51` | (audit self-correction) frame stroke clipping | Re-read: rect at x=6,y=6 with strokeWidth 1.5 β†’ outer 0.75px still inside viewBox (effective top edge y=5.25 > 0). Confirmed fine. | βœ… no issue (audit-verified) | | 5 | 🟠 | `components/Footer.tsx:15` | `mt-24` Γ— `flex-1` main = 6rem dead space on short pages | Now `mt-0 border-t border-ink bg-ink text-ivory lg:mt-8`. On mobile: 0. On lg: 2rem. Section padding is handled by the page's own `py-16 sm:py-24`. | βœ… resolved | | 6 | 🟠 | `components/PageHeader.tsx:32` | Korean `

` no `break-keep` | Now `className="headline-ko break-keep text-balance text-3xl leading-[1.05] text-ink sm:text-4xl lg:text-5xl"`. Production HTML on all 4 secondary pages contains the `break-keep` and `text-balance` utilities; CSS bundle includes `.break-keep { word-break: keep-all }` and `.text-balance { text-wrap: balance }`. | βœ… resolved | | 7 | 🟠 | `app/intro/page.tsx:100` | "Standards" at 9rem cap overflowed col-span-7 | `display` cap reduced to 7rem. "Standards" at 7rem Fraunces β‰ˆ 595px; col-span-7 β‰ˆ 720px β†’ fits with margin. CSS verified: `clamp(2.75rem, 9vw, 7rem)`. | βœ… resolved | | 8 | 🟠 | `app/members/page.tsx:151` | 2 members in `lg:grid-cols-3` β†’ ghost cell | Now `sm:grid-cols-2` only (no `lg:grid-cols-3`). 2 members Γ— 2 cols = full row, no gap. Production HTML confirms. | βœ… resolved | | 9 | 🟠 | `app/layout.tsx:55-59` | No `.reveal` no-JS fallback β†’ blank page if hydration fails | `` present in layout's ``. Confirmed in all 6 production HTML outputs. | βœ… resolved | | 10 | 🟑 | `components/PageHeader.tsx:39-48` | When `display` prop absent, `en` rendered at 9rem (e.g. "Standardization" overflows) | Fallback now `display-sm mt-2 break-keep font-display font-light text-vermillion` (3.75rem cap). "Standardization" (14 chars) β‰ˆ 315px; col-span-8 β‰ˆ 720px β†’ fits. Rendered HTML on all 4 secondary pages shows `class="display-sm mt-2 break-keep ..."`. | βœ… resolved | | 11 | 🟑 | `app/intro/page.tsx:53`, `components/Counter.tsx:17,30,34` | Counter year "2026" ticked 0β†’2026 | `Counter` gained a `static` prop (default `false`); when `isStatic`, the state initialises to `value` and the IntersectionObserver / RAF block is skipped. `figures[2] = { value: 2026, ..., static: true, size: "display-sm" }`. Rendered HTML: `class="tabular-nums display-sm block text-ink"` (no tick). | βœ… resolved | | 12 | β€” | `app/publications/page.tsx:135-140` | "01" rail at text-5xl in sm: col-span-3 | Re-read: rail is `sm:flex-col sm:gap-3` inside a `sm:grid-cols-12` parent; "01" (48px), year (24px), badge stack vertically. The audit's own math (LAYOUT_AUDIT.md:236-238) concluded the layout works. | βœ… no issue (audit-verified) | | 13 | 🟑 | `app/intro/page.tsx:50-54` | "2026" ~4Γ— wider than "2"/"4" β†’ visual imbalance | Year is now `size: "display-sm"` (3.75rem); the other two figures remain `size: "display"` (7rem). Rendered HTML: `tabular-nums display block text-ink` Γ— 2, `tabular-nums display-sm block text-ink` Γ— 1. Visual weight is now balanced (a single big number + a 4-digit year at half the scale). | βœ… resolved | | 14 | β€” | `components/Header.tsx:79-126` | (audit self-correction) Header ARIA suspect | Re-read: button has `aria-controls="mobile-menu"` (line 84), `aria-expanded={open}` (line 84), `aria-label` switching (line 82); `