From 6b6ddcea42873e17e9034f05578104c155571bd6 Mon Sep 17 00:00:00 2001 From: austin Date: Sun, 26 Jul 2026 18:10:47 -0500 Subject: [PATCH] A design pass: the type ladder from the logo, and one name per thing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TYPOGRAPHY, taken from the lockup and walked down to something you can read a paragraph in. "The Vine" in LeJour Script over COFFEEHOUSE + BAKERY in AdBhashitha is the whole brand voice, so: the script stays in the wordmark and nowhere else (it is unreadable at length); AdBhashitha carries h1–h4 and the price, and keeps the wordmark's 0.01em letter-spacing so a heading sits on the same rhythm as the logo above it; `eyebrow` and `label` are the hinge — sans, but letterspaced like the tagline — and then plain Raleway. Sizes are declared once in type.css instead of being re-chosen per template, and none of the type classes set a colour, because the same heading appears in sage on cream and in cream on sage. BUTTONS AND SURFACES have names now. `panel` is the white box that was "bg-white rounded-3xl shadow-xs" written out in nine places (which is how two of them end up with different corners); `panel-lift` is one that reacts. `pill` is one shape in four colourways, which exist because this site puts buttons on cream AND on sage and they cannot be the same colour on both. `chip`/`chip-on` are the products filter. RHYTHM: `section` (py-16 md:py-24) and `band` (py-14 md:py-20, tighter because a coloured strip is already doing the separating) replace nine hand-picked paddings. FOCUS: one visible ring for everything reachable by keyboard, as an outline rather than a shadow so it works on cream, on white and on the sage bands, at zero specificity so a utility can still win. Z-INDEX: written down in base.css, all two of it — 40 the sticky header, 30 the mobile panel, which is a child of the header and so can only ever sit under the bar. Everything else stacks in document order. The point of the comment is that a third layer doesn't get invented at 9999. DROPDOWNS: the admin's category selects were drawing the platform's own arrow in the platform's grey; they get the site's chevron and room for it. 53 tests green. Every class used across all nine pages — five public, four admin — resolves in the compiled stylesheet, so nothing here is styled by a name that doesn't exist. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 23 ++++++ src/main/resources/templates/catering.html | 32 ++++----- src/main/resources/templates/contact.html | 18 ++--- src/main/resources/templates/error.html | 4 +- src/main/resources/templates/error/404.html | 6 +- .../resources/templates/fragments/footer.html | 4 +- .../resources/templates/fragments/header.html | 2 +- src/main/resources/templates/history.html | 24 +++---- src/main/resources/templates/home.html | 36 +++++----- src/main/resources/templates/products.html | 21 +++--- src/main/styles/base.css | 36 ++++++++++ src/main/styles/components.css | 64 +++++++++++++++++ src/main/styles/site.css | 1 + src/main/styles/type.css | 71 +++++++++++++++++++ 14 files changed, 266 insertions(+), 76 deletions(-) create mode 100644 src/main/styles/type.css diff --git a/README.md b/README.md index 9a67bf2..b9659d0 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,29 @@ there is no JavaScript framework in this repo. The look has not changed through | Photos | public MinIO bucket `itsthevine` — **not** in the repo or the image | | Deploy | Gitea CI → image → Watchtower → Caddy | +### The look, in one place + +`src/main/styles` is the whole of it — no bundler, no framework, one stylesheet: + +| file | what it holds | +|---|---| +| `theme.css` | the three typefaces and the sage-and-cream palette. Names, nothing drawn | +| `base.css` | bare elements: page background, body type, the fade-in, the focus ring, the z-index scale | +| `type.css` | the typographic ladder (below) | +| `components.css` | `panel`, `pill-*`, `chip`, `section`/`band` — the site's own classes | +| `admin.css` | the admin's controls, as `@utility` so `file:` variants work on the photo pickers | + +**The type ladder comes out of the logo.** The lockup is "The Vine" in LeJour Script over COFFEEHOUSE + +BAKERY in AdBhashitha, letterspaced — and everything below is that idea made progressively more readable: +the script stays in the wordmark and nowhere else; AdBhashitha carries `h1`–`h4` and `price`, keeping the +wordmark's 0.01em letter-spacing so a heading sits on the same rhythm as the logo above it; `eyebrow` and +`label` are the hinge, sans but letterspaced like the tagline; then plain Raleway for anything you have to +read a paragraph of. None of the type classes set a colour — the same heading appears in sage on cream and +cream on sage. + +Write those class names in templates rather than the utilities behind them: a button is `pill-sage`, and +the four colourways exist because the site puts buttons on cream *and* on sage. + ### Why server-rendered The pages are content: a menu, a story, opening hours, a price list. Rendering them in the browser meant diff --git a/src/main/resources/templates/catering.html b/src/main/resources/templates/catering.html index d3a6a69..79eb6e6 100644 --- a/src/main/resources/templates/catering.html +++ b/src/main/resources/templates/catering.html @@ -8,7 +8,7 @@ that is selling something, and the same treatment as the homepage hero — blurred photo, sage wash — carries the brand rather than inventing a new look for it. */--> -
+
@@ -16,9 +16,9 @@
-

Order ahead

-

Goodie boxes & catering

-

+

Order ahead

+

Goodie boxes & catering

+

Boxes for the office, packages for a party, and cakes and desserts for a wedding.

@@ -55,7 +55,7 @@ */-->
-

Office boxes

+

Office boxes

Mini pastries for a morning meeting.

@@ -67,12 +67,11 @@ : (${#lists.size(table.tiers) == 2} ? 'sm:grid-cols-2 max-w-3xl mx-auto' : 'sm:grid-cols-2 lg:grid-cols-3')">
-

Small

-

$24

+ class="flex flex-col panel-lift p-6 md:p-8"> +

Small

+

$24

-

Ask us

+

Ask us

About 6–8 people

@@ -107,14 +106,13 @@ */-->
-

Good to know

+

Good to know

  • Everything is baked in sixes.
Ask about office boxes
@@ -131,20 +129,20 @@ -
+
-

Before you order

+

Before you order

  • These are a guide rather than a menu.
diff --git a/src/main/resources/templates/contact.html b/src/main/resources/templates/contact.html index a41a969..4cc1612 100644 --- a/src/main/resources/templates/contact.html +++ b/src/main/resources/templates/contact.html @@ -4,7 +4,7 @@
-

Contact us

+

Contact us

Ask about a cake, a date, or an order for a crowd. We read everything that comes in.

@@ -17,8 +17,8 @@ */-->
-
-

Get in touch

+
+

Get in touch

Or call us: (309) 701-0660

@@ -52,7 +52,7 @@
@@ -71,18 +71,18 @@