Skip to content

One page measure for the marketing chrome, and a three-step templates section on home - #27

Merged
scheemunai merged 2 commits into
mainfrom
fix/marketing-shell-alignment
Sep 5, 2026
Merged

One page measure for the marketing chrome, and a three-step templates section on home#27
scheemunai merged 2 commits into
mainfrom
fix/marketing-shell-alignment

Conversation

@scheemunai

Copy link
Copy Markdown
Owner

Two public-facing fixes, both founder-reported. Independent commits; the first can be cherry-picked alone if the second needs more discussion.


1 · One page measure, so the header starts where the page does

.aa-marketing-shell carried a container width of its own — --width-aa-shell-marketing, 66.5rem — while /templates and the legal pages laid their own content out on --width-aa-shell, 72rem. Two containers that had to agree, declared independently, with nothing to notice when they stopped.

Fixed at the shared container: the second measure is deleted, .aa-shell is the page width everywhere, and .aa-marketing-shell is now purely the hook the ≤560px header rule and the footer band select on. /templates was not touched — another lane owns that file, and fixing it there would only have moved the same defect into legal.tsx.

Measured in Chromium, content box, left → right (width):

vw surface before after
390 header inner 16 → 374 (358) 16 → 374 (358)
390 main content 16 → 374 (358) 16 → 374 (358)
768 header inner 24 → 744 (720) 24 → 744 (720)
768 main content 24 → 744 (720) 24 → 744 (720)
1280 header inner 132 → 1148 (1016) 88 → 1192 (1104)
1280 main content 88 → 1192 (1104) 88 → 1192 (1104)
1920 header inner 452 → 1468 (1016) 408 → 1512 (1104)
1920 main content 408 → 1512 (1104) 408 → 1512 (1104)

scrollWidth == innerWidth at all four widths, on /, /templates and /terms.

On the max measure. 72rem (1152px box / 1104px content) is kept as the single page width. It is what five of seven surfaces already use, including the gallery the nineteen designed cards were laid out against and the dashboard; narrowing it would have moved more than it fixed. At 1920 that is 1104px of content inside 408px gutters. The report's alternative reading — "the grid runs ~1487px at 1920" — did not reproduce: production measures 1104px there, and the widest thing on the page is the 1152px shell box.

Regression test compares resolved pixels, not token names — same width expression and same inline padding for the header band, footer band, home, templates and legal, at every breakpoint the sheet distinguishes. Verified to fail on the pre-fix stylesheet (expected 1152 to be 1064 at 1280/1440/1920).


2 · "Start with a template. Make it yours." on the home page

Nothing on the home page linked to /templates. This section answers the question the examples above it raise — the reader has just seen four pages that look better than the blank document they were imagining — in three steps, ending at the gallery.

Style guide first. MarketingSteps is defined and specimened in /style-guide before the home page renders it, and the guide imports HOME_TEMPLATE_STEPS rather than paraphrasing it. Two specimens: the shipped three, and three of markedly uneven copy length — the state this component actually has, and the case that shows the row keeps its numerals on one rail. MarketingSection, MarketingFinalCta and Button are reused as-is.

Aesthetics. Not a fourth boxed treatment: the page already raises the example cards, borders the plan cards and tints the origin note. The steps sit open under one hairline each — a rail across a row, dividers when stacked — in --color-aa-line, the same hairline as every other divider. No emoji. No accent stripe down one side. The numerals are muted rather than accent, because .aa-page-kicker already states the rule and .aa-marketing-example__number is spending the accent on an index directly above.

Responsive, verified at 390 / 768 / 1280 / 1920: three columns from 768 up (352 352 352 at 1280+, 224 224 224 at 768), one column at 390, no horizontal overflow at any width, and the section's only control is a 180×44 button. Stacks at the sheet's existing 720px point rather than a bespoke breakpoint — with three items, every auto-fit minimum this page could take leaves some range rendering two across and one below, and 768 was inside it.

Deliberately not on the coming-soon page; the test carries the reason.


pnpm check clean (20 pre-existing warnings, 0 errors). pnpm exec vitest run: 150 passed, 1 skipped. Not deployed.

🤖 Generated with Claude Code

crhq added 2 commits September 5, 2026 14:19
The marketing header and footer resolved their container width from
`--width-aa-shell-marketing` (66.5rem) while /templates and the legal pages laid
their own content out on `--width-aa-shell` (72rem). Measured at 1280: the header
band ran 108→1172 and the templates card grid 88→1192, so the wordmark started
44px to the RIGHT of the page heading beneath it and the header's right edge
stopped 44px short of the grid's. Two containers that had to agree, declared
independently, with nothing to notice when they stopped agreeing.

Fixed at the container rather than per page — /templates is owned by another lane
and legal.tsx would only have moved the same defect one file over. The second
measure is deleted; `.aa-shell` is the page width for every surface, and
`.aa-marketing-shell` is now purely the hook the ≤560px header rule and the footer
band select on.

Home widens by 88px as a result. Its hero card (`--width-aa-panel`), feature
lines and origin note (`--width-aa-measure`) are capped independently and do not
move; only the two-column examples and pricing grids take the extra width.

Measured after, header inner vs main content, content box:
  390   16→374  / 16→374     768   24→744  / 24→744
  1280  88→1192 / 88→1192    1920  408→1512 / 408→1512
No horizontal overflow at any of the four.

The regression test compares resolved pixels, not token names: same width
expression and same inline padding for the header band, the footer band, home,
templates and legal, at every breakpoint the sheet distinguishes. Asserting "both
say --width-aa-shell" would pass just as happily on a same-valued alias, and the
claim a reader has is about edges.

Co-Authored-By: CRHQ <noreply@crhq.ai>
The home page said what people make with this and never said how they get a page
that looks like the ones in the gallery. This is the answer, in three moves: the
agent picks a template, it rewrites it in your words and colours, and you keep the
result as a template of your own. It ends at /templates, which nothing on the home
page linked to before.

STYLE GUIDE FIRST. `MarketingSteps` is defined and specimened in /style-guide
before the home page renders it, and the guide imports the page's own constant
rather than paraphrasing it — a specimen that paraphrases production drifts from
it. Two specimens, because the state this component actually has is copy length:
the shipped three, and three of markedly uneven length, which is the case that
shows the row keeps its numerals on one rail instead of floating each step against
its own copy.

Everything else is reused: `MarketingSection` for the kicker and heading,
`MarketingFinalCta` for the closing action, `Button` inside it.

WHAT THE ROW IS NOT. Not a fourth boxed treatment — the page already raises the
example cards, borders the plan cards and tints the origin note. The steps sit open
under one hairline each, which reads as a single rail across a row and as dividers
when stacked, in `--color-aa-line` like every other divider here. No emoji, no
accent stripe down one side, and the numerals are muted rather than accent because
`.aa-page-kicker` already states the rule: the accent marks an action, a state or a
link, and `.aa-marketing-example__number` is spending it on an index directly above.

Three columns, stacking to one at the sheet's existing 720px point rather than a
bespoke breakpoint — with three items, every `auto-fit` minimum this page could
take leaves some range rendering two across and one below, and 768 was inside it.

Verified at 390 / 768 / 1280 / 1920: no horizontal overflow at any width
(scrollWidth == innerWidth), three columns from 768 up, one column at 390, and the
only control in the section is a 180x44 button.

Left off the coming-soon page on purpose, and the test says why: /templates would
answer perfectly well pre-launch, but that page's design is one thing to do.

Co-Authored-By: CRHQ <noreply@crhq.ai>
@scheemunai
scheemunai force-pushed the fix/marketing-shell-alignment branch from d78b022 to d161443 Compare September 5, 2026 14:20
@scheemunai
scheemunai merged commit c0a6d50 into main Sep 5, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants