Tidy blog layout: aligned columns, tighter spacing, captions, and index contrast - #155
Merged
Merged
Conversation
From 1280px the post container widens to 1320px for the owner editor, while the .prose column stays 900px and centered. The header kept a 900px box with its own horizontal padding, so its text started 64px (40px from 1536px) to the right of the body. Grow the header's max-width by its padding at those breakpoints so its text column is also 900px and shares the body's left edge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- Share one gutter and column width between the post header and body (--blog-gutter / --blog-column on .page-wrapper), so they always line up and the reading column grows smoothly to 900px instead of jumping at 1280px. - Roughly halve the space between the header divider and the first paragraph (104px -> 56px on phones, 152px -> 80px on desktop). - Right-align the "back." link to the reading column, not the wider editor container. - Style a <small>-only paragraph right after an image as its caption, tucked 15px under the image. - Darken the light-mode blog background (new --color-steel-600) and multiply-blend the bird painting so the index text meets WCAG AA. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
From 768px each post used three equal columns: the title spanned two and the date took a whole third, so long titles wrapped early and then ran up to 16px from the date. Let the title take the free width, size the date column to the date, keep a 48px gutter, and align the date to the title's baseline. Also stop the title dropping to its phone size at exactly 768px (max-width: 768px overlapped min-width: 768px). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Move the shared column and gutter to global content tokens (--content-column / --content-gutter in prose-variables.css) and use them for .prose, the post header and body, and the blog index, so the index lines up with posts and stops growing with the window. - Loosen wrapped titles (line-height 1 -> 1.15) and subtitles (1 -> 1.35). - Show the category on phones as one meta line: "Lyric · September 10, 2026". - Mark up the index as a list with an h2 per post title. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Layout problems on blog pages, all measured on production:
.prosecolumn centers inside it.line-height: 1, so multi-line titles and subtitles nearly touched. The category was hidden below 768px.divs, so screen-reader users couldn't jump between posts by heading or list item.Changes
prose-variables.css,--content-column(900px) and--content-gutter(the per-breakpoint side padding:sm, thenmdfrom 640px,xlfrom 768px,lgfrom 1536px)..prose,blog-header.svelte, the post page's.blog-container, and the blog index's.blog-wrapperall size themselves ascalc(var(--content-column) + 2 * var(--content-gutter))with that gutter. The header, the body, and the index therefore share a left edge at every width, and the column grows smoothly to 900px. The post container still widens to 1320px from 1280px for the editor, but.prosestays centered at--content-column.mdtosm, giving 56px on phones and 80px from 1280px up.--content-columnand centered, with no right padding on the link, so the word ends at the column's right edge.prose.csstreats a paragraph containing only<small>, directly after an image paragraph, as that image's caption. It sits 15px under the image in the secondary text color, with 2em before the next paragraph. Today only the Differential Analyzer credit uses it.--color-steel-600(#666674, same hue assteel-500). The bird painting's container is multiply-blended in light mode, so its pale areas can't lighten the background behind the text. Dark mode is unchanged.minmax(0, 1fr) autowith a 48px gutter. The title takes the free width, the date column hugs the date, and the date sits on the title's first baseline. The title's phone font size now stops at 767px instead of also applying at exactly 768px.<ul>, and each post title is an<h2>under the page's<h1>, with no visual change.Testing
Playwright in Chromium and WebKit, against a production build:
h1and 13h2s. No horizontal overflow (16/16).pnpm lint,pnpm check, and vitest (54 tests) pass.🤖 Generated with Claude Code