Skip to content

Rebuild the site on colour-blocked bands, with two themes - #11

Merged
DenisDrobyshev merged 1 commit into
mainfrom
bands-and-themes
Aug 23, 2026
Merged

Rebuild the site on colour-blocked bands, with two themes#11
DenisDrobyshev merged 1 commit into
mainfrom
bands-and-themes

Conversation

@DenisDrobyshev

Copy link
Copy Markdown
Member

A different brief from the last rebuild: the shape of an agency site — light ground, a bright band, a dark band, cards on a small radius, pill controls — in our own palette rather than the reference's.

Palette shifted, structure kept. Amber #f0b429 where the reference uses lemon yellow, and the mark's indigo #4f46e5 where it uses crimson. Warm off-white ground rather than pure white.

Sections, mapped rather than copied

An agency site shows services, expertise, client references and articles. An open-source organisation has four of those and not the third:

Reference Here
Services Projects — five cards, each with its install line
Expertise Stack — what each piece is for and why it is in more than one project
Client references Evidence — see below
Articles Notes — the research notes and the course

Evidence is the one that could not be transplanted honestly. There are no clients and no case studies to show, so the section shows stadion's headroom table with the command that reproduces it, and opens by saying that is what it is doing. Inventing a logo wall would have been the easy version and the wrong one.

Two themes

This reverses the single-scheme decision from #8. The system preference decides, the toggle overrides it, and the choice is stored under theme.

That makes clause 7 of the privacy policy wrong again, in the other direction — after #8 it promises nothing is stored at all. It now describes what is kept, under which key, that it never leaves the browser, and what happens if a reader clears it or blocks local storage.

Kept from your last two commits

The OG card and its meta, apple-touch-icon, the JSON-LD @graph, the commercial-enquiries route, and the footer line pointing at check_site.py. Anchors renamed with the sections, so the legal page's navigation follows.

Two contrast failures, found while measuring

Rule paragraphs on the dark band: 2.37:1. .band-dark p and .rule p have identical specificity, so the later one won and the paragraphs rendered in the light theme's grey on near-black. The band overrides are now one class deeper, so a band always beats a component.

Small text on the amber band: 4.43:1 — under AA. This one only surfaced because the browser could not compute a color-mix() value against its own background; the naive reading came back as 2147400.19, and the effective colour had to be composited by hand to get a real number. Raised from 70% to 84%, which puts every string on that band above 6.5:1.

Verified

scripts/check_site.py passes on all four pages. Cross-language scan finds no unmarked text on either landing page.

Contrast measured in-browser on both themes by compositing each foreground over its actual band, belowAA: [] across body text, eyebrows, card text, tags, inline links, table captions and headers, footer links, and the dark and amber bands.

Layout: no horizontal overflow at 1280px or at mobile width, burger replaces the nav below 760px and opens, the measurement table has overflow-x: auto as a floor. Toggle persists across a reload and flips its icon and aria-label.

Every outbound host on the page checked: drobyshevdev.github.io, github.com, pypi.org, opensource.org, apache.org. The research links resolve, including the Russian ones. Nothing links to /stadion/, which is still a 404 until its documentation lands.

The datasheet look was one commission ago. This one follows a different brief:
the shape of an agency site - white ground, a bright band, a dark band, cards
on a small radius, pill controls - in our own palette rather than the
reference's. Amber where theirs is lemon yellow, and the mark's indigo where
theirs is crimson.

Sections are mapped to what an open-source organisation actually has rather
than copied. An agency shows services, expertise, client references and
articles. Here that is projects, the stack and why each piece is in it,
measurements, and the notes and the course. The references section is the one
that could not be transplanted honestly: there are no clients and no case
studies, so it shows stadion's headroom table and the reproduce command
instead, and says plainly that is what it is doing.

Two themes, which reverses the single-scheme decision from the last rebuild.
The system preference decides, the toggle overrides it, and the choice is
stored under `theme`. That makes clause 7 of the privacy policy wrong again in
the other direction - it currently promises nothing is stored - so it now
describes exactly what is kept, where, and what happens when a reader clears
it.

Kept: the OG card and its meta, the apple-touch icon, the JSON-LD graph, the
commercial-enquiries route, and the footer line pointing at check_site.py.

Two contrast failures found and fixed while measuring rather than after:

The rule paragraphs on the dark band came out at 2.4:1, because `.band-dark p`
and `.rule p` have identical specificity and the later one won. The band
overrides are now one class deeper, so a band always beats a component.

The small text on the amber band sat at 4.4:1 - under AA, and only visible
because the browser could not compute a `color-mix()` against its own
background, so the effective colour had to be composited by hand. Raised to
84%, which puts every string on that band above 6.5:1.

Both themes now clear AA on every measured pair: body, eyebrows, card text,
tags, links, table captions, footer links, and the dark and amber bands.
@DenisDrobyshev
DenisDrobyshev merged commit 0830763 into main Aug 23, 2026
6 checks passed
@DenisDrobyshev
DenisDrobyshev deleted the bands-and-themes branch August 23, 2026 09:55
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.

1 participant