The step-1 header decision is formally reopened (AGENTS.md (ak)): its record
attributed the residual to the wrong cause and read a measured 944px functional
failure as a robustness margin.
Mechanism — wrapping, plus a gated sticky offset:
- `flex-wrap: nowrap` removed from `.header-inner` (measured necessary AND
sufficient) and from `.nav-list` (measured inert; removed so the prohibition
is not contradicted by a `nowrap` in the same file), with a dead `flex: none`.
- `inset-block-start` becomes a two-band, two-term saturating clamp() so the
header is sticky only while the masthead is one row. A media query cannot
express this: its `rem` resolves against the browser DEFAULT font size, a
property's against the root element. The second term catches a root BELOW the
default, where the 80rem content cap shrinks faster than the header's px
minimums; without it 65px of `#main` sat behind the header at 9px.
- Wrapping is the only mechanism that reflows under all THREE enlargement paths,
because Chrome's minimum-font-size setting is invisible to @media, to
@container and to every length unit.
Measured, 22 pages x 16 widths = 352 page-widths per method:
root-style 32px 175/352 -> 0/352 (1280px: 944px overflow -> 0)
minimum-font-size 32 219/352 -> 88/352 (residual is the footer email)
default-font-size 32 0/352 -> 0/352
default (root 16) 0/352 -> 0/352
Nav items and CTA on-screen in 1408/1408. A further 762 points across roots
9-32, both thresholds, the band seam and all five Chrome presets: 0 failing.
Normal-settings identity: 0 differences on 352 page-widths across six metrics,
with six nav items and with a seventh injected. Header 81.00px at all eight
widths >= 1056, CTA gap 0.00px. Lighthouse: 22 pages, no category below 95,
CLS 0.000 on every page.
--header-h is reworded as a FLOOR, not a constant; value unchanged.
Also in this step, per ruling:
- /bio/ print `font-weight` frozen at 400 — the circulated PDF's typography
changes only when its content is deliberately revised, never as a side effect
of a screen refactor. Declaration byte-identical; the constraint is recorded.
- CLAUDE.md: the two-simulation rule for enlarged text, the zsh
no-word-splitting rule, the third (minimum-font-size) mechanism, and
"state the grid with the count".
Two rounds of adversarial-reviewer, eleven findings, all resolved; round 2's
blocking finding was a defect in round 1's own fix. Two suggested fixes declined
with reasons in (ak). claims-auditor deliberately not run — D20.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Md3GndFqWPzK78xAoebsg5