diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 50fb809..06da873 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -29,82 +29,105 @@ --radius: 4px; } -html.font-plantin { +html.font-plantin, +.font-plantin { --font: 'Plantin MT Pro', Georgia, serif; --body-weight: 300; } -html.font-sohne { +html.font-sohne, +.font-sohne { --font: 'SohneBuch', -apple-system, BlinkMacSystemFont, sans-serif; --body-weight: 400; } -html.font-space { +html.font-space, +.font-space { --font: 'Space Mono', ui-monospace, Menlo, monospace; --body-weight: 400; } -html.font-georgia { +html.font-georgia, +.font-georgia { --font: Georgia, 'Times New Roman', Times, serif; --body-weight: 400; } -html.font-palatino { +html.font-palatino, +.font-palatino { --font: Palatino, 'Palatino Linotype', 'Book Antiqua', serif; --body-weight: 400; } -html.font-redaction { +html.font-redaction, +.font-redaction { --font: 'Redaction', Georgia, serif; --body-weight: 400; } -html.font-redaction-10 { +html.font-redaction-10, +.font-redaction-10 { --font: 'Redaction 10', Georgia, serif; --body-weight: 400; } -html.font-redaction-20 { +html.font-redaction-20, +.font-redaction-20 { --font: 'Redaction 20', Georgia, serif; --body-weight: 400; } -html.font-redaction-35 { +html.font-redaction-35, +.font-redaction-35 { --font: 'Redaction 35', Georgia, serif; --body-weight: 400; } -html.font-redaction-50 { +html.font-redaction-50, +.font-redaction-50 { --font: 'Redaction 50', Georgia, serif; --body-weight: 400; } -html.font-redaction-70 { +html.font-redaction-70, +.font-redaction-70 { --font: 'Redaction 70', Georgia, serif; --body-weight: 400; } -html.font-redaction-100 { +html.font-redaction-100, +.font-redaction-100 { --font: 'Redaction 100', Georgia, serif; --body-weight: 400; } -html.font-system { +html.font-system, +.font-system { --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --body-weight: 400; } .dark-mode, html.theme-navy, +.theme-navy, html.theme-dusk, +.theme-dusk, html.theme-midnight, +.theme-midnight, html.theme-indigo, +.theme-indigo, html.theme-storm, +.theme-storm, html.theme-slate, +.theme-slate, html.theme-ink, +.theme-ink, html.theme-pine, +.theme-pine, html.theme-wine, -html.theme-cocoa { +.theme-wine, +html.theme-cocoa, +.theme-cocoa { --text: #fbfbf7; --muted: #9aa4b8; --accent: #e78c88; @@ -112,7 +135,8 @@ html.theme-cocoa { --navy: #3c48a8; } -html.theme-paper { +html.theme-paper, +.theme-paper { --bg: #f6f7f9; --bg-secondary: #e9ebef; --text: #2e3140; @@ -125,7 +149,8 @@ html.theme-paper { --img-matte: #e9ebef; } -html.theme-navy { +html.theme-navy, +.theme-navy { --bg: #12192c; --bg-secondary: #1a2238; --hairline: #2a334c; @@ -133,7 +158,8 @@ html.theme-navy { --img-matte: #1a2238; } -html.theme-dusk { +html.theme-dusk, +.theme-dusk { --bg: #1a2236; --bg-secondary: #252d44; --hairline: #343e58; @@ -141,7 +167,8 @@ html.theme-dusk { --img-matte: #252d44; } -html.theme-midnight { +html.theme-midnight, +.theme-midnight { --bg: #0e1424; --bg-secondary: #161d30; --hairline: #242c42; @@ -149,7 +176,8 @@ html.theme-midnight { --img-matte: #161d30; } -html.theme-indigo { +html.theme-indigo, +.theme-indigo { --bg: #16142a; --bg-secondary: #1f1c38; --hairline: #2e2a4a; @@ -157,7 +185,8 @@ html.theme-indigo { --img-matte: #1f1c38; } -html.theme-storm { +html.theme-storm, +.theme-storm { --bg: #1c2438; --bg-secondary: #283044; --hairline: #3a4458; @@ -165,7 +194,8 @@ html.theme-storm { --img-matte: #283044; } -html.theme-slate { +html.theme-slate, +.theme-slate { --bg: #1e212b; --bg-secondary: #2a2d3a; --hairline: #3a3e4c; @@ -173,7 +203,8 @@ html.theme-slate { --img-matte: #2a2d3a; } -html.theme-ink { +html.theme-ink, +.theme-ink { --bg: #0c0c0c; --bg-secondary: #1c1c1c; --hairline: #2a2a2a; @@ -181,7 +212,8 @@ html.theme-ink { --img-matte: #1c1c1c; } -html.theme-pine { +html.theme-pine, +.theme-pine { --bg: #121c22; --bg-secondary: #1a262c; --hairline: #2a3840; @@ -189,7 +221,8 @@ html.theme-pine { --img-matte: #1a262c; } -html.theme-wine { +html.theme-wine, +.theme-wine { --bg: #1a1520; --bg-secondary: #261c28; --hairline: #3a2c38; @@ -197,7 +230,8 @@ html.theme-wine { --img-matte: #261c28; } -html.theme-cocoa { +html.theme-cocoa, +.theme-cocoa { --bg: #1c1814; --bg-secondary: #2a241c; --hairline: #3c3428; diff --git a/app/pages/styleguide.vue b/app/pages/styleguide.vue new file mode 100644 index 0000000..c110dd7 --- /dev/null +++ b/app/pages/styleguide.vue @@ -0,0 +1,602 @@ + + + + + diff --git a/content/writing/demo.md b/content/writing/demo.md deleted file mode 100644 index ce85730..0000000 --- a/content/writing/demo.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Notes in the margin -date: 2026-08-22 -description: Every mark this site knows how to make — body type, asides, notices, redaction, quotes, lists, code, and images. -hidden: true ---- - -This page is a working sample, not an essay. Walk it when you change type, color, or a content component. The **description** above is the article lead — bold, then the body. - -Ordinary copy sits in the column. You can *emphasize*, **stress**, or [link out](https://jaronpate.com). A thought that does not belong in the sentence can sit beside it. :margin-note[(A margin note. Wide screens put it in the right gutter. Narrow screens drop it under the paragraph.)] Parentheticals you can actually skip. - -## Headings - -`h2` and `h3` share one italic, muted style. Use them as section marks, not display type. - -### A third-level mark - -Still the same size and color. Hierarchy is the word, not the weight. - -## Margin notes - -Two notes in one stretch of text, so you can see them stack. - -The first is a mutter. :margin-note[(First note — should sit next to this sentence.)] A little later, a second one arrives. :margin-note[(Second note. On a wide screen these should not collide with the column.)] Between them the column keeps moving. - -```md -:margin-note[(like this)] -``` - -## Notices - -A notice interrupts on purpose. It stays in the column. - -::notice -**In-column.** Use this when the aside *is* the point for a minute. Navy, hard to miss, still inside the measure. -:: - -```md -::notice -**In-column.** -:: -``` - -And when it needs to break the column: - -::notice{bleed} -**Bleed.** Same idea, edge to edge. Save it for the one time in a piece you actually want to shout. -:: - -```md -::notice{bleed} -**Bleed.** -:: -``` - -## Redaction - -A span can be set in Redaction. `strength` is a grade: `0` is the clean face, `100` is almost gone. Other numbers snap to `0`, `10`, `20`, `35`, `50`, `70`, or `100`. Default is `100`. - -```md -:redacted[these words]{strength="50"} -``` - -Same phrase, every grade: - -- 0 — :redacted[the record is still intact]{strength="0"} -- 10 — :redacted[the record is still intact]{strength="10"} -- 20 — :redacted[the record is still intact]{strength="20"} -- 35 — :redacted[the record is still intact]{strength="35"} -- 50 — :redacted[the record is still intact]{strength="50"} -- 70 — :redacted[the record is still intact]{strength="70"} -- 100 — :redacted[the record is still intact]{strength="100"} - -Inline, mixed into a sentence: the filing names :redacted[a person we will not repeat]{strength="20"}, then later :redacted[almost nothing remains]{strength="100"}. - -**Bold around** :redacted[a redacted span]{strength="50"} should pick Redaction Bold. - -## Blockquote - -The pointing hand sits in the gutter. Use it for a quote, or a line you want pointed at. - -> The best sticking point is the way using the thing *feels*. Everything else is infrastructure. - -## Lists - -Unordered, for a pile of equals: - -- Plantin for reading -- Space Mono for the wordmark, footer, and code -- Redaction only where you ask for it - -Ordered, when sequence matters: - -1. Write the sentence -2. Park the mutter in a margin note -3. Redact what should stay almost-said - -## Code - -Inline: the helper is `resolveRedactionStrength`, and the shortcode is `:redacted`. - -A block: - -```ts -const grade = resolveRedactionStrength(strength); -const family = redactionFamily(grade); -``` - -## Image - -A figure in the column. This is an old Edlink shot, just to see the matte, radius, and caption line. - -![Billing overview](/work/edlink/billing-overview.png "The billing screen") - -The quoted title becomes the caption. Skip it and the image still sits in a figure, never wider than itself. - -```md -![Billing overview](/work/edlink/billing-overview.png "The billing screen") -``` - ---- - -That’s the set. Margin for a mutter. Notice for a point. Redaction when the words should still be there, barely. Everything else is ordinary prose. diff --git a/nuxt.config.ts b/nuxt.config.ts index 14f81cd..3bd4e3f 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -6,6 +6,7 @@ export default defineNuxtConfig({ nitro: { prerender: { autoSubfolderIndex: false, + routes: ['/styleguide'], }, preset: 'cloudflare_module', cloudflare: {