howone 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/vite/.howone/skills/hallmark/SKILL.md +48 -42
- package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +12 -6
- package/templates/vite/.howone/skills/hallmark/references/assets.md +7 -0
- package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +19 -10
- package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/components/n11-mega-menu.md +40 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n12-banner-retract.md +34 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n13-inline-cmdk-pill.md +39 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n1b-saas-three-section.md +35 -0
- package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +2 -2
- package/templates/vite/.howone/skills/hallmark/references/copy.md +8 -8
- package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +2 -2
- package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +50 -12
- package/templates/vite/.howone/skills/hallmark/references/export-formats.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +11 -7
- package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +6 -4
- package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +10 -6
- package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +15 -10
- package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +13 -12
- package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +2 -1
- package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +4 -3
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +3 -1
- package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +1 -1
- package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +1 -3
- package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +12 -12
- package/templates/vite/.howone/skills/hallmark/references/responsive.md +8 -8
- package/templates/vite/.howone/skills/hallmark/references/slop-test.md +72 -85
- package/templates/vite/.howone/skills/hallmark/references/structure.md +9 -13
- package/templates/vite/.howone/skills/hallmark/references/study.md +40 -17
- package/templates/vite/.howone/skills/hallmark/references/themes/carnival.md +301 -0
- package/templates/vite/.howone/skills/hallmark/references/themes/cobalt.md +146 -0
- package/templates/vite/.howone/skills/hallmark/references/themes/hum.md +403 -0
- package/templates/vite/.howone/skills/hallmark/references/themes/lumen.md +478 -0
- package/templates/vite/.howone/skills/hallmark/references/typography.md +3 -3
- package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +1 -1
- package/templates/vite/.howone/skills/hallmark/LICENSE +0 -21
- package/templates/vite/.howone/skills/hallmark/README.md +0 -147
- package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
- package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
- package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
- package/templates/vite/.howone/skills/hallmark/package.json +0 -36
- package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
- package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
- package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
- package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
- package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
- package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
- package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
- package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
- package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
- package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
- package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
- package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
- package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
- package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
- package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
- package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
- package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
- package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
- package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
- package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
- package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
- package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
- package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
- package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
- package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
- package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
- package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
- package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
- package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
- package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
- package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
- package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
- package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
- package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
- package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
- package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
- package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
- package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
- package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
- package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
- package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
- package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
- package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
- package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
- package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
- package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
- package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
- package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
- package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
- package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
- package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
- package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
- package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
- package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
- package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
- package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
- package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
- package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
- package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
- package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
- package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
- package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
- package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
- package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
- package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
- package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
- package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
- package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
- package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
- package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
- package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
- package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
- package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
- package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
- package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
- package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
- package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
- package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
- package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
- package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
- package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
- package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
- package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
- package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
- package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
- package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
- package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
- package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
- package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
- package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
- package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
- package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
- package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
- package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
- package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
- package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
- package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
- package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
- package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
- package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
- package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
- package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
- package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
- package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
- package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
- package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
- package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
- package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
- package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
- package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
- package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
- package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
# Theme — Lumen
|
|
2
|
+
|
|
3
|
+
Premium AI-tool register, built around a **hand-engineered apparatus** rather than a glowing orb. One precision SVG/CSS object per page, with leader-line callouts in mono micro-type, set against dead space alongside a **lowercase classical-serif headline** and a technical mono eyebrow. Three font families. Two palette drops (Night Foundry / Day Foundry) with different physics — Night emits, Day refracts — and entirely different visual languages, not the same shape in two colours.
|
|
4
|
+
|
|
5
|
+
Lumen runs a strict **two-register typography system**: all prose is **lowercase** (hero titles, section titles, lede, body, buttons, nav, brand, footer copy — even acronyms when they appear in body text); all mono labels are **UPPERCASE** (eyebrows, callouts, meter labels, stat labels). The contrast between quiet lowercase prose and loud UPPERCASE machine-readout is the typographic signature.
|
|
6
|
+
|
|
7
|
+
Loaded eagerly by SKILL.md Step 3 whenever the catalog pick is `lumen`. Palettes + font stack live in [`site/css/tokens.css`](../../../../site/css/tokens.css) under `[data-theme="lumen"]` (Night, default) and `[data-theme="lumen"][data-drop="day"]` (Day). This file carries the drops + apparatus family + signature moves + motion + anti-patterns.
|
|
8
|
+
|
|
9
|
+
## Axes (diversification)
|
|
10
|
+
|
|
11
|
+
- **Paper band** — Night: dark cool-violet (`L 13%, H 265`). Day: light cool bone with violet pull (`L 97%, H 265`). The 265° hue is deliberate — sits 25° from Midnight's 250 and 65° from Aurora's 200, so a Lumen page is not confusable with either neighbour at a glance.
|
|
12
|
+
- **Display style** — **classical-serif-lowercase** (Instrument Serif 400, upright, **all-lowercase**, with verb landmark via accent colour + draw-in underline). No italic anywhere. Distinct from italic-serif (Specimen/Studio/Atelier ship italic as default) and from roman-serif (Newsprint uses sentence case). Lumen is the catalog's only lowercase-headline theme.
|
|
13
|
+
- **Accent hue** — Night: **molten brass** (`H 50`, not amber). Day: **deep indigo with violet tilt** (`H 268`). Coral chord (`H 18`) sits behind both as the secondary chromatic.
|
|
14
|
+
|
|
15
|
+
## Reference register
|
|
16
|
+
|
|
17
|
+
Modal · Anthropic (Claude product surfaces) · Together AI · ElevenLabs · Cluely · Adept · Granola · Cohere · Inflection · Linear (premium pricing pages) · Vercel (design guidelines, frontier-AI sections) · Cursor (high-fidelity product mockup heroes).
|
|
18
|
+
|
|
19
|
+
The aesthetic to match: a single hand-engineered artefact in dead space; a lowercase classical-serif headline with one accent-coloured verb; mono UPPERCASE technical labels that read as if pulled from an internal docs site; tabular numerals everywhere a number appears. The combination is what AI-tool defaults do not ship — and exactly the combination that breaks every default the model was trained on.
|
|
20
|
+
|
|
21
|
+
**Patron-saint reference (internal):** *Modal homepage rate sheet* (the receipt is the artwork) + *Together AI hero diagram* (annotated apparatus + leader lines + labelled callouts) + *Anthropic Claude landing typography* (transitional serif + humanist sans). When in doubt about restraint, ask "would Modal ship this much chrome?" If yes, you've gone too far.
|
|
22
|
+
|
|
23
|
+
## Palette drops
|
|
24
|
+
|
|
25
|
+
A Lumen drop is a named palette + apparatus-physics pair. The structural signature (italic-pivot headline + mono eyebrow + apparatus + leader callouts + meter strip + blueprint grid + hairline cards + three-stat row) is constant; the drop rotates the canvas, the accent, and what the apparatus *does*.
|
|
26
|
+
|
|
27
|
+
### Drop 01 · Night Foundry *(default · canonical)*
|
|
28
|
+
|
|
29
|
+
Cool-violet near-black canvas. Molten-brass accent that *emits*. The apparatus is an instrument — a filament-in-chamber, a circuit topology, a precision indicator — and it generates the light. Halos and inner-emit washes use `--color-glow` at 42% opacity.
|
|
30
|
+
|
|
31
|
+
- `--color-paper: oklch(13% 0.014 265)` — late-night studio, violet tilt
|
|
32
|
+
- `--color-ink: oklch(96% 0.006 262)` — near-white headlines
|
|
33
|
+
- `--color-accent: oklch(76% 0.17 50)` — molten brass
|
|
34
|
+
- `--color-accent-2: oklch(68% 0.16 18)` — coral chord
|
|
35
|
+
- `--color-glow: oklch(80% 0.16 50 / 0.42)` — dense halo
|
|
36
|
+
- `--color-paper-emit: oklch(76% 0.17 50 / 0.04)` — inner-emit canvas wash
|
|
37
|
+
- `--rule-blueprint: oklch(96% 0.006 262 / 0.04)` — grid hairline
|
|
38
|
+
|
|
39
|
+
**Apparatus physics — emission.** The focal element is a built object (filament, circuit, indicator dial, layered lens stack) that *contains* the light source. Subtle pulse animation (`--dur-pulse: 4s`) suggests the instrument is *running*. Card shadows are soft depth (`0 24px 60px -28px oklch(0% 0 0 / 0.55)`), not glows — the apparatus is the only thing that emits.
|
|
40
|
+
|
|
41
|
+
**When to pick:** inference platforms · serverless GPU · model APIs · AI coding agents · voice synthesis · agentic tools · developer infra · anything that wants to feel "after hours" and "instrument-grade." Default.
|
|
42
|
+
|
|
43
|
+
### Drop 02 · Day Foundry
|
|
44
|
+
|
|
45
|
+
Cool-bone canvas with a violet pull. Deep indigo accent that *refracts*. The apparatus is a transparent prism / lens stack / chromatic dispersion element — light passes through and is *separated*, not generated. Spectrum exit-fan + measurement annotations + scale bar give it the feel of a calibrated optical instrument, not a vibey gradient.
|
|
46
|
+
|
|
47
|
+
- `--color-paper: oklch(97% 0.008 265)` — cool bone, violet pull
|
|
48
|
+
- `--color-ink: oklch(18% 0.014 265)` — near-black, cool
|
|
49
|
+
- `--color-accent: oklch(46% 0.24 268)` — deep violet-indigo
|
|
50
|
+
- `--color-accent-2: oklch(68% 0.16 18)` — coral chord (red end of spectrum)
|
|
51
|
+
- `--color-glow: oklch(58% 0.22 268 / 0.28)` — indigo halo through prism
|
|
52
|
+
- `--color-paper-emit: oklch(46% 0.24 268 / 0.03)` — canvas wash, faint
|
|
53
|
+
|
|
54
|
+
**Apparatus physics — refraction.** The focal element is *static at rest* with a 320ms reveal on first paint (the prism appears, the spectrum fans, both settle). No perpetual motion. The light is captured, not generated. Annotations carry mono micro-labels: `λ = 612 nm`, `θ_out = 38°`, etc. — the prism reads as a *measurement instrument*, not decoration.
|
|
55
|
+
|
|
56
|
+
**When to pick:** AI for science · climate / research labs · document AI · typography / design tools · daytime productivity · briefs that want "considered" and "clear" rather than "after-dark and intense."
|
|
57
|
+
|
|
58
|
+
### Drop rotation rule
|
|
59
|
+
|
|
60
|
+
The diversification log records `"theme": "lumen", "drop": "night"` (or `"day"`). Two consecutive Lumen builds must use different drops unless the brief contains a strong drop signal.
|
|
61
|
+
|
|
62
|
+
### Why two drops, not five
|
|
63
|
+
|
|
64
|
+
Lumen's identity is the apparatus, not the palette. Adding more drops would dilute what makes the theme legible. Two drops with *different physics* (emission vs refraction) carry more variety than five drops with the same artefact in different colours.
|
|
65
|
+
|
|
66
|
+
## The apparatus family
|
|
67
|
+
|
|
68
|
+
Lumen's central commitment: **never a generic glowing orb**. The orb is the most overworked AI-tool tell of 2024–2025; every inference platform ships one. Lumen builds a *specific* hand-engineered object per page, chosen to reflect what the product *does*.
|
|
69
|
+
|
|
70
|
+
The canonical family (pick one per build, in the order of preference for the brief):
|
|
71
|
+
|
|
72
|
+
### Apparatus type · Filament chamber *(Night Foundry, instrument-grade)*
|
|
73
|
+
|
|
74
|
+
A vertical glowing rod inside a rounded-rect cylindrical chamber, crossed by 3–4 horizontal hairline "electrodes." Subtle pulse on the filament (3% intensity oscillation, 4s period). References vacuum tubes, Tesla coils, fusion experiments, mass spectrometers. Reads as a *machine*.
|
|
75
|
+
|
|
76
|
+
**When to pick:** inference, runtime, model serving, anything that *produces* output. Brand verbs: think, run, generate, infer, render, execute.
|
|
77
|
+
|
|
78
|
+
**SVG/CSS skeleton:**
|
|
79
|
+
|
|
80
|
+
```html
|
|
81
|
+
<figure class="apparatus apparatus--filament" aria-hidden="true">
|
|
82
|
+
<div class="chamber">
|
|
83
|
+
<span class="chamber__wall"></span>
|
|
84
|
+
<span class="chamber__electrode" style="--y: 22%"></span>
|
|
85
|
+
<span class="chamber__electrode" style="--y: 42%"></span>
|
|
86
|
+
<span class="chamber__electrode" style="--y: 62%"></span>
|
|
87
|
+
<span class="chamber__electrode" style="--y: 82%"></span>
|
|
88
|
+
<span class="chamber__filament"></span>
|
|
89
|
+
<span class="chamber__glow"></span>
|
|
90
|
+
<span class="chamber__stencil">RX-04</span>
|
|
91
|
+
</div>
|
|
92
|
+
<ul class="callouts">
|
|
93
|
+
<li class="callout" style="--side: left; --y: 18%"><span>P50 · 28 ms</span></li>
|
|
94
|
+
<li class="callout" style="--side: right; --y: 36%"><span>cold-start · 0.4 s</span></li>
|
|
95
|
+
<li class="callout" style="--side: left; --y: 62%"><span>rps · 12 k</span></li>
|
|
96
|
+
<li class="callout" style="--side: right; --y: 80%"><span>RX-04 · h100 80gb</span></li>
|
|
97
|
+
</ul>
|
|
98
|
+
</figure>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
```css
|
|
102
|
+
.chamber {
|
|
103
|
+
position: relative; width: clamp(180px, 22vw, 280px); aspect-ratio: 0.55;
|
|
104
|
+
border: 1px solid var(--color-rule-2);
|
|
105
|
+
border-radius: 999px;
|
|
106
|
+
background: oklch(17% 0.016 265 / 0.8);
|
|
107
|
+
overflow: hidden;
|
|
108
|
+
}
|
|
109
|
+
.chamber__filament {
|
|
110
|
+
position: absolute; top: 8%; bottom: 8%; left: 50%;
|
|
111
|
+
width: 2px; margin-left: -1px;
|
|
112
|
+
background: linear-gradient(to bottom,
|
|
113
|
+
oklch(96% 0.05 50) 0%,
|
|
114
|
+
oklch(80% 0.17 50) 50%,
|
|
115
|
+
oklch(96% 0.05 50) 100%);
|
|
116
|
+
box-shadow:
|
|
117
|
+
0 0 16px 4px var(--color-glow),
|
|
118
|
+
0 0 48px 12px oklch(80% 0.16 50 / 0.22);
|
|
119
|
+
animation: filament-pulse var(--dur-pulse) ease-in-out infinite;
|
|
120
|
+
}
|
|
121
|
+
.chamber__electrode {
|
|
122
|
+
position: absolute; left: 0; right: 0; top: var(--y);
|
|
123
|
+
height: 1px; background: var(--color-rule-2);
|
|
124
|
+
}
|
|
125
|
+
.chamber__glow {
|
|
126
|
+
position: absolute; inset: 0;
|
|
127
|
+
background: radial-gradient(ellipse 60% 50% at 50% 50%, var(--color-glow-2) 0%, transparent 70%);
|
|
128
|
+
pointer-events: none;
|
|
129
|
+
}
|
|
130
|
+
@keyframes filament-pulse {
|
|
131
|
+
0%, 100% { opacity: 1; }
|
|
132
|
+
50% { opacity: 0.86; }
|
|
133
|
+
}
|
|
134
|
+
.callout {
|
|
135
|
+
font-family: var(--font-mono);
|
|
136
|
+
font-size: 10.5px;
|
|
137
|
+
letter-spacing: var(--tracking-micro);
|
|
138
|
+
text-transform: uppercase;
|
|
139
|
+
color: var(--color-muted);
|
|
140
|
+
position: absolute;
|
|
141
|
+
/* leader-line drawn as ::before pseudo */
|
|
142
|
+
}
|
|
143
|
+
.callout::before {
|
|
144
|
+
content: ""; position: absolute;
|
|
145
|
+
top: 50%; height: 1px;
|
|
146
|
+
background: var(--color-rule-2);
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Apparatus type · Codebase graph / topology *(Night Foundry)*
|
|
151
|
+
|
|
152
|
+
An annotated SVG graph: one central node + 5–7 satellite nodes connected by hairlines, each satellite labelled with a mono filename or symbol. Light "flows" along the connecting lines at a slow walk (subtle gradient dot moving along each path). References CAD schematics, dependency graphs, electrical circuits, knowledge graphs.
|
|
153
|
+
|
|
154
|
+
**When to pick:** AI coding agents, knowledge tools, anything that *traverses* a structured space. Brand verbs: read, trace, explore, connect.
|
|
155
|
+
|
|
156
|
+
### Apparatus type · Indicator dial / spectrum *(either drop)*
|
|
157
|
+
|
|
158
|
+
A circular dial (Night) or a horizontal spectrum bar with annotated wavelength labels (Day). Includes scale ticks at known increments, a moving needle or active band, and mono callouts at boundaries. References analogue gauges, oscilloscopes, audio meters.
|
|
159
|
+
|
|
160
|
+
**When to pick:** voice synthesis, audio AI, anything measuring a continuous quantity. Brand verbs: tune, measure, listen.
|
|
161
|
+
|
|
162
|
+
### Apparatus type · Prism + measurement *(Day Foundry canonical)*
|
|
163
|
+
|
|
164
|
+
A clip-path triangle (the prism) + an incoming beam from the left + a chromatic spectrum fan emerging from the right edge + leader-line annotations with wavelength labels and exit-angle measurements. References optical-bench experiments, atmospheric refraction diagrams, the cover of Pink Floyd's *Dark Side of the Moon* re-read as a calibrated instrument.
|
|
165
|
+
|
|
166
|
+
**When to pick:** Day Foundry default. AI for science, climate, research, document AI.
|
|
167
|
+
|
|
168
|
+
### Building rules across the family
|
|
169
|
+
|
|
170
|
+
- **Pure CSS + SVG.** Never `<img>`, never icon fonts, never SVG paths copied from Figma. The apparatus is *constructed*, not *placed*.
|
|
171
|
+
- **One per page.** Never two apparatus objects on a single Lumen build.
|
|
172
|
+
- **Leader-line callouts.** Every apparatus carries 3–5 mono micro-type annotations (`P50 · 28 ms`, `λ = 612 nm`, `→ refunds.ts`) on horizontal leader lines. The callouts MUST contain real values from the brief — never `LOREM · 000`.
|
|
173
|
+
- **Size.** 240–480 px max dimension on desktop. Scales down to ~180 px on mobile but never disappears.
|
|
174
|
+
- **Pulse, not rotation.** Night apparatus *pulses* (3% intensity oscillation, 4s period). It does *not* rotate. Rotation was the orb's signature; the apparatus's signature is that it's clearly machined.
|
|
175
|
+
- **Day Foundry: no perpetual motion.** Day apparatus reveals once on first paint (320ms) and stays static. The light is captured.
|
|
176
|
+
- **`prefers-reduced-motion: reduce`:** all pulses freeze at maximum intensity, all reveals collapse to final state.
|
|
177
|
+
|
|
178
|
+
## The seven signature moves
|
|
179
|
+
|
|
180
|
+
A Lumen build must exhibit **all seven**. Skipping any single one is what makes the page slip back into generic-dark-AI territory.
|
|
181
|
+
|
|
182
|
+
### 1. Hand-built apparatus (no orb)
|
|
183
|
+
|
|
184
|
+
See § The apparatus family above. The single most important move.
|
|
185
|
+
|
|
186
|
+
### 2. Lowercase headline with verb-landmark (no italics)
|
|
187
|
+
|
|
188
|
+
Classical Instrument Serif at `--text-display`, **all-lowercase, upright**, with **exactly one word** rendered in `--color-accent-2` (coral chord) — and that word is the verb. A 1px underline in the same accent draws in over 320ms on first paint and stays. **No `font-style: italic` is used anywhere** in Lumen — the verb landmark is built from colour + line, not from a glyph variation.
|
|
189
|
+
|
|
190
|
+
```html
|
|
191
|
+
<h1 class="hero__title">built to <em>think</em> in real time.</h1>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
```css
|
|
195
|
+
.hero__title {
|
|
196
|
+
text-transform: lowercase; /* defensive — also applied at the prose level */
|
|
197
|
+
}
|
|
198
|
+
.hero__title em {
|
|
199
|
+
font-style: normal; /* explicit — em is repurposed as the verb landmark */
|
|
200
|
+
color: var(--color-accent-2);
|
|
201
|
+
position: relative;
|
|
202
|
+
white-space: nowrap;
|
|
203
|
+
}
|
|
204
|
+
.hero__title em::after {
|
|
205
|
+
content: ""; position: absolute;
|
|
206
|
+
left: 0.05em; right: 0.05em; bottom: 0.04em;
|
|
207
|
+
height: 1px;
|
|
208
|
+
background: var(--color-accent-2);
|
|
209
|
+
transform-origin: left;
|
|
210
|
+
animation: pivot-underline 320ms var(--ease-soft) 900ms backwards;
|
|
211
|
+
}
|
|
212
|
+
@keyframes pivot-underline {
|
|
213
|
+
from { transform: scaleX(0); }
|
|
214
|
+
to { transform: scaleX(1); }
|
|
215
|
+
}
|
|
216
|
+
@media (prefers-reduced-motion: reduce) {
|
|
217
|
+
.hero__title em::after { animation: none; }
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Rules:** the coloured word is the verb, never a noun. One word per headline, never two. The underline is the persistent landmark — once drawn, never animates again. `<em>` is repurposed semantically (still emphasis), but renders without italic.
|
|
222
|
+
|
|
223
|
+
### 3. Mono eyebrow above every section
|
|
224
|
+
|
|
225
|
+
`01 · INFERENCE` style — JetBrains Mono, uppercase, 11px, tracking `0.10em`, half-opacity. Numbered roman ordinal (01, 02, 03), middle-dot separator, then the section role. Sits directly above the heading on its own line. Cap at 6 per page.
|
|
226
|
+
|
|
227
|
+
### 4. Blueprint grid background (4% opacity)
|
|
228
|
+
|
|
229
|
+
The hero `<section>` and the meter strip both carry a **ruled grid background** at 4% opacity — 32px or 48px square cells, single hairline in `--rule-blueprint`. This is the "engineered, not vibed" signal. Aurora has blooms; Lumen has the grid. The grid sits beneath `--color-paper-emit` so the canvas appears to emit *through* the grid lines.
|
|
230
|
+
|
|
231
|
+
```css
|
|
232
|
+
.hero {
|
|
233
|
+
background:
|
|
234
|
+
linear-gradient(var(--rule-blueprint) 1px, transparent 1px) 0 0 / 48px 48px,
|
|
235
|
+
linear-gradient(90deg, var(--rule-blueprint) 1px, transparent 1px) 0 0 / 48px 48px,
|
|
236
|
+
radial-gradient(60% 50% at 78% 30%, var(--color-paper-emit) 0%, transparent 65%),
|
|
237
|
+
var(--color-paper);
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 5. Meter strip (below the hero)
|
|
242
|
+
|
|
243
|
+
A full-bleed 32–48px band beneath the hero showing 60–80 thin vertical ticks (1px wide, varying height/opacity). Mono labels at each end name the readout (`SIGNAL · 12.4 KHZ` left, `DRIFT · 0.04 σ` right). Reads as spectrum analyser / oscilloscope output. The values match the brief — never invented.
|
|
244
|
+
|
|
245
|
+
```html
|
|
246
|
+
<aside class="meter" aria-label="Signal readout">
|
|
247
|
+
<p class="meter__label meter__label--left">SIGNAL · 12.4 KHZ</p>
|
|
248
|
+
<div class="meter__bars">
|
|
249
|
+
<!-- 64 spans, height + opacity per index -->
|
|
250
|
+
</div>
|
|
251
|
+
<p class="meter__label meter__label--right">DRIFT · 0.04 σ</p>
|
|
252
|
+
</aside>
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
```css
|
|
256
|
+
.meter {
|
|
257
|
+
display: grid;
|
|
258
|
+
grid-template-columns: auto 1fr auto;
|
|
259
|
+
gap: 1.5rem;
|
|
260
|
+
align-items: center;
|
|
261
|
+
padding: 0.75rem var(--page-gutter);
|
|
262
|
+
border-block: 1px solid var(--color-rule);
|
|
263
|
+
font-family: var(--font-mono);
|
|
264
|
+
}
|
|
265
|
+
.meter__bars { display: flex; gap: 2px; align-items: end; height: 28px; }
|
|
266
|
+
.meter__bars > span {
|
|
267
|
+
flex: 1; min-width: 1px;
|
|
268
|
+
background: var(--color-accent);
|
|
269
|
+
border-radius: 0.5px;
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
The meter MUST be procedurally varied — never a flat row of equal ticks. Heights drawn from a clean envelope (sine, gaussian, log) so the strip reads as a *measurement*, not a decorative pattern.
|
|
274
|
+
|
|
275
|
+
### 6. Hairline cards with inner emission
|
|
276
|
+
|
|
277
|
+
Cards carry a 1px hairline border in `--color-rule` and an inner radial gradient at 4–6% accent opacity — they feel **lit from within**, not dropped. On hover, inner glow brightens to 10–12% and the card lifts 4px. Never drop-shadow cards (the shadow Lumen uses is for elevated chrome only).
|
|
278
|
+
|
|
279
|
+
### 7. Three-stat row with Instrument Serif numerals + tabular-nums
|
|
280
|
+
|
|
281
|
+
Stats display in Instrument Serif at large size (`clamp(2.5rem, 4vw + 1rem, 4.5rem)`), `font-variant-numeric: tabular-nums`, label in mono uppercase 11px. Hairline vertical dividers. **Always three cells** — never two (reads as comparison), never four (reads as bento). If the brief has fewer than three honest numbers, skip the row entirely.
|
|
282
|
+
|
|
283
|
+
## Motion direction
|
|
284
|
+
|
|
285
|
+
Lumen's motion stack is **lighter than Hum, heavier than Coral**.
|
|
286
|
+
|
|
287
|
+
| Element | Motion |
|
|
288
|
+
|---|---|
|
|
289
|
+
| Apparatus (Night) | Pulse: 3% intensity oscillation, 4s period. **Never rotates.** |
|
|
290
|
+
| Apparatus (Day) | 320ms reveal on first paint, static thereafter. |
|
|
291
|
+
| Verb landmark | Color set permanently to accent-2; 1px underline draws in 320ms `delay: 900ms`. No font-style change. |
|
|
292
|
+
| Cards | `translateY(-4px)` + inner-glow brighten on hover, 220ms `--ease-soft`. |
|
|
293
|
+
| Section heads | Opacity 0→1 + translateY 12px→0 on view enter, 600ms, 60ms stagger. |
|
|
294
|
+
| Meter strip | Static. No "live" animation — the strip is a printed readout, not a streaming feed. |
|
|
295
|
+
| Scroll | Lenis optional (`duration: 0.7, lerp: 0.08`). |
|
|
296
|
+
|
|
297
|
+
**No magnetic cursors. No bento tile flips. No flashy parallax. No particle systems. No rotating orbs.** If you reach for any of these, you've drifted out of Lumen.
|
|
298
|
+
|
|
299
|
+
`prefers-reduced-motion: reduce` collapses all animations to instant final state.
|
|
300
|
+
|
|
301
|
+
## Required dependencies
|
|
302
|
+
|
|
303
|
+
```html
|
|
304
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
305
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
306
|
+
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Geist:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Three families, three weights each at most. No fourth family.
|
|
310
|
+
|
|
311
|
+
## Macrostructure affinity
|
|
312
|
+
|
|
313
|
+
**Lumen loves these.**
|
|
314
|
+
|
|
315
|
+
- **Marquee Hero** — canonical: apparatus at hero-right, italic-pivot headline at hero-left, meter strip below
|
|
316
|
+
- **Workbench** — when the page has live product UI to show (used with annotated codebase graph)
|
|
317
|
+
- **Stat-Led** — numbers carry the story (latency, throughput)
|
|
318
|
+
- **Long Document** — technical narrative with the apparatus at hero (Day Foundry canonical)
|
|
319
|
+
- **Specimen** — only when typography is the subject
|
|
320
|
+
|
|
321
|
+
## Macrostructure rejection
|
|
322
|
+
|
|
323
|
+
**Lumen refuses these.**
|
|
324
|
+
|
|
325
|
+
- **Bento Grid** — too playful; Lumen is one apparatus, not a tile collage
|
|
326
|
+
- **Quote-Led** — too literary
|
|
327
|
+
- **Conversational FAQ** — too soft
|
|
328
|
+
- **Photographic** — Lumen is pure-code; no photographic anchor
|
|
329
|
+
- **Catalogue** — one apparatus, not a grid of products
|
|
330
|
+
|
|
331
|
+
## Voice fixtures
|
|
332
|
+
|
|
333
|
+
Lumen voice is **direct, technical, slightly aphoristic**. Verbs over nouns. Mono labels read as if from internal docs. No marketing-ese.
|
|
334
|
+
|
|
335
|
+
Headlines — **all lowercase**, with one verb in accent-2 colour (underlined):
|
|
336
|
+
|
|
337
|
+
- "built to **think** in real time."
|
|
338
|
+
- "inference, **rendered**."
|
|
339
|
+
- "a new way to **ship** models."
|
|
340
|
+
- "built for the people who **read** the docs."
|
|
341
|
+
- "models for a **moving** atmosphere."
|
|
342
|
+
- "code that **knows** the codebase."
|
|
343
|
+
|
|
344
|
+
Body patterns — also lowercase, including acronyms:
|
|
345
|
+
|
|
346
|
+
- "p50 latency at 28 ms. p99 at 84. the numbers hold under load."
|
|
347
|
+
- "one primitive. scales down to zero. scales up to a thousand replicas."
|
|
348
|
+
- "three engineers built this in fourteen weeks."
|
|
349
|
+
|
|
350
|
+
Mono eyebrows — UPPERCASE (these are tags, not language):
|
|
351
|
+
|
|
352
|
+
- `00 · INFERENCE`
|
|
353
|
+
- `01 · RUNTIME`
|
|
354
|
+
- `02 · PRICING`
|
|
355
|
+
- `03 · CHANGELOG`
|
|
356
|
+
|
|
357
|
+
Leader-line callouts (real values only) — UPPERCASE:
|
|
358
|
+
|
|
359
|
+
- `P50 · 28 MS`
|
|
360
|
+
- `Λ = 612 NM`
|
|
361
|
+
- `θ_OUT = 38°`
|
|
362
|
+
- `RX-04 · H100 80GB`
|
|
363
|
+
- `INDEXED · 412 FILES`
|
|
364
|
+
|
|
365
|
+
Brand wordmarks — lowercase: `cinder`, `wright`, `stratum`. Legal entity names and person names in fine print also lowercase (`cinder labs, inc.`, `maya okonkwo`). The lowercase commitment is total — only mono labels break it.
|
|
366
|
+
|
|
367
|
+
**Never any of:** experience, journey, elevate, curate, transform, holistic, mindful, ecosystem, platform, leverage, unlock, supercharge, revolutionize, ai-powered, intelligent.
|
|
368
|
+
|
|
369
|
+
## Anti-patterns (theme-specific)
|
|
370
|
+
|
|
371
|
+
- **NEVER a glowing CSS orb / sphere / ring.** The single most reliable AI-tool tell of 2024–2025. Lumen explicitly refuses it. Pick from the apparatus family or build a new precision object — never a generic ball of light.
|
|
372
|
+
- **NEVER `<img>` for the apparatus.** Pure CSS + SVG. Figma-exported SVG paths fail this — the apparatus is constructed in code.
|
|
373
|
+
- **NEVER sentence-case or title-case prose.** All headlines, lede, body, buttons, nav, captions, brand wordmarks, footer copy, person names, place names, and legal-entity names are lowercase. Mono labels are the ONLY uppercase surface (eyebrows, callouts, meter labels, stat labels). This two-register split is non-negotiable.
|
|
374
|
+
- **NEVER `font-style: italic` anywhere.** The previous italic-pivot signature is retired. The verb landmark is built from colour + a 1px underline, not from a glyph variation. Italic body emphasis, italic founder signatures, italic captions — all banned. `<em>` is repurposed as the verb landmark and renders upright.
|
|
375
|
+
- **Never colour-emphasise a noun.** The verb landmark is the verb. Always.
|
|
376
|
+
- **Never more than one accent-coloured word per headline.** Two is a marketing landing page; one is a design move.
|
|
377
|
+
- **Never invent stats.** If the brief has no real numbers, skip the three-stat row entirely.
|
|
378
|
+
- **Never re-draw browser chrome.** Real screenshots only (slop-test gate 47).
|
|
379
|
+
- **Never two apparatus objects on one page.** One per build.
|
|
380
|
+
- **Never a system font for the display.** Instrument Serif or the documented fallback chain (`"Tiempos Headline", ui-serif, Georgia, serif`).
|
|
381
|
+
- **Never rotate the apparatus.** Night apparatus pulses; Day apparatus is static.
|
|
382
|
+
- **Never accent on display text outside the verb landmark.** Headlines are ink colour with one accent-coloured verb.
|
|
383
|
+
- **Never emoji icons in eyebrows.** The mono ordinal + middle-dot + role label IS the eyebrow.
|
|
384
|
+
- **Never two-cell stat rows.** Three only.
|
|
385
|
+
- **Never atmospheric blooms larger than the apparatus.** The grid is the background discipline.
|
|
386
|
+
- **Never blank leader-callouts.** Every annotation carries a real value from the brief.
|
|
387
|
+
|
|
388
|
+
## Macrostructure pitfalls
|
|
389
|
+
|
|
390
|
+
1. **Apparatus + embedded chrome on the same side → both fight for the focal point.** Pick one per side. Default: apparatus at hero-right, chrome (if any) in a later section.
|
|
391
|
+
2. **Italic-pivot word at a line break → the verb hangs alone.** Force ` ` before and after so it stays mid-line.
|
|
392
|
+
3. **Stats with two cells → reads as comparison.** Three only.
|
|
393
|
+
4. **Apparatus glow bleeds into next section → page background looks washed.** Wrap in `overflow: clip` so the halo stays inside the hero.
|
|
394
|
+
5. **Meter strip with uniform ticks → reads as decorative pattern.** Drive heights from a real envelope (sine, gaussian, log) so the strip looks measured.
|
|
395
|
+
6. **Card inner-radial > 8% accent opacity → cards read as accent-tinted, not lit.** Cap at 6% rest / 12% hover.
|
|
396
|
+
|
|
397
|
+
## How Lumen differs from neighbouring themes
|
|
398
|
+
|
|
399
|
+
| vs | difference |
|
|
400
|
+
|---|---|
|
|
401
|
+
| **Midnight** (atmospheric, closest) | Midnight is geometric Geist on cool dark (`H 250`), no apparatus, no italic pivot, no grid. Lumen sits 25° hue away (`H 265`) with classical Instrument Serif, hand-built apparatus + leader callouts, blueprint grid, meter strip. The differentiation is large at every signature axis. |
|
|
402
|
+
| **Aurora** (atmospheric) | Aurora is cool cyan blooms on dark, Sentient serif body. Lumen is brass-on-violet apparatus + Instrument Serif headline. Different temperature, different focal-element philosophy (Aurora: ambient blooms; Lumen: built apparatus). |
|
|
403
|
+
| **Bloom** (atmospheric) | Bloom is warm cream paper, expressive content (Suno/Runway). Lumen is dark or cool-bone, technical content (Modal/Anthropic). Different register entirely. |
|
|
404
|
+
| **Atelier** (editorial) | Atelier is Playfair Display Didone on warm cream — luxury fashion. Lumen's Instrument Serif is a 1960s technical-journal serif. Atelier sells perfume; Lumen sells inference. |
|
|
405
|
+
|
|
406
|
+
## Test brief expectations
|
|
407
|
+
|
|
408
|
+
Lumen should be a candidate when the brief mentions:
|
|
409
|
+
|
|
410
|
+
- *inference · model · LLM · AI tool · agent · coding agent · voice · synthesis · API · platform · GPU · serverless · runtime · developer experience · DX · the docs · the console · pricing · research lab · atmospheric model · weather · climate*
|
|
411
|
+
- product categories: *AI infrastructure · ML platform · model API · AI dev tool · voice / audio AI · research AI · climate / science AI · agentic coding*
|
|
412
|
+
- emotional tone: *engineered · premium · technical · instrument · after-hours · considered · post-Modal*
|
|
413
|
+
|
|
414
|
+
Briefs that say *bakery / café / atelier / fashion / podcast / record label / hot sauce / agency portfolio* never route to Lumen.
|
|
415
|
+
|
|
416
|
+
## Build hint
|
|
417
|
+
|
|
418
|
+
The first 22 lines of CSS should establish Lumen's anchor moves:
|
|
419
|
+
|
|
420
|
+
```css
|
|
421
|
+
body {
|
|
422
|
+
background: var(--color-paper); color: var(--color-ink-2);
|
|
423
|
+
font-family: var(--font-body);
|
|
424
|
+
font-variant-numeric: tabular-nums;
|
|
425
|
+
text-transform: lowercase; /* prose default — the two-register foundation */
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.eyebrow, .callout, .meter__label, .stat__label, .card__eyebrow {
|
|
429
|
+
font-family: var(--font-label); font-size: 11px; letter-spacing: 0.10em;
|
|
430
|
+
text-transform: uppercase; /* mono labels are the only uppercase surface */
|
|
431
|
+
color: var(--color-ink); opacity: 0.55;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.hero__title {
|
|
435
|
+
font-family: var(--font-display); font-weight: 400;
|
|
436
|
+
font-size: var(--text-display); line-height: 1.02;
|
|
437
|
+
letter-spacing: -0.032em; max-width: 16ch;
|
|
438
|
+
}
|
|
439
|
+
.hero__title em {
|
|
440
|
+
font-style: normal; /* italic is RETIRED in Lumen */
|
|
441
|
+
color: var(--color-accent-2);
|
|
442
|
+
position: relative; white-space: nowrap;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
.hero {
|
|
446
|
+
background:
|
|
447
|
+
linear-gradient(var(--rule-blueprint) 1px, transparent 1px) 0 0 / 48px 48px,
|
|
448
|
+
linear-gradient(90deg, var(--rule-blueprint) 1px, transparent 1px) 0 0 / 48px 48px,
|
|
449
|
+
radial-gradient(60% 50% at 78% 30%, var(--color-paper-emit) 0%, transparent 65%),
|
|
450
|
+
var(--color-paper);
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
The `text-transform: lowercase` on `<body>` + selective `text-transform: uppercase` on label classes is the typographic foundation. Write your HTML in normal case for accessibility (screen readers); let CSS render the lowercase. Mono labels override back to UPPERCASE.
|
|
455
|
+
|
|
456
|
+
## What Lumen refuses (restated)
|
|
457
|
+
|
|
458
|
+
Disqualifiers — if any appears in a Lumen build, the build is not Lumen:
|
|
459
|
+
|
|
460
|
+
- No glowing orb / sphere / ring of any kind.
|
|
461
|
+
- No `font-style: italic` anywhere on the page.
|
|
462
|
+
- No sentence-case or title-case prose — headlines, lede, body, buttons, nav, brand are all lowercase.
|
|
463
|
+
- No lowercase mono labels — eyebrows, callouts, meter labels are all UPPERCASE.
|
|
464
|
+
- No bento grids.
|
|
465
|
+
- No glassmorphism / `backdrop-filter` blur.
|
|
466
|
+
- No "trusted by" logo cloud as a full-width band.
|
|
467
|
+
- No three-feature-card row with icon tops.
|
|
468
|
+
- No emoji icons in eyebrows.
|
|
469
|
+
- No invented metrics.
|
|
470
|
+
- No re-drawn browser chrome.
|
|
471
|
+
- No more than one apparatus per page.
|
|
472
|
+
- No more than one accent-coloured word per headline.
|
|
473
|
+
- No system-font fallback for the display.
|
|
474
|
+
- No rotating apparatus (pulse only on Night; static on Day).
|
|
475
|
+
- No accent-coloured display text outside the verb landmark.
|
|
476
|
+
- No two-cell stat rows.
|
|
477
|
+
- No atmospheric blooms larger than the apparatus.
|
|
478
|
+
- No blank leader-line callouts.
|
|
@@ -55,7 +55,7 @@ Three sources, in priority order:
|
|
|
55
55
|
|
|
56
56
|
| Family | Source | Voice | Best for |
|
|
57
57
|
| --- | --- | --- | --- |
|
|
58
|
-
| **Fraunces** | Google | Variable serif, deeply expressive italic, optical-size axis | Editorial,
|
|
58
|
+
| **Fraunces** | Google | Variable serif, deeply expressive italic, optical-size axis | Editorial, Atelier, brand-heavy |
|
|
59
59
|
| **Newsreader** | Google | Roman serif with optical-size + italic | Editorial, magazine, long-form |
|
|
60
60
|
| **Instrument Serif** | Google | Tight contrast, italic available, smart for short heads | Brand, atelier, intimate editorial |
|
|
61
61
|
| **Cormorant Garamond** | Google | Classical, high contrast, luxury register | Luxury, fashion, fine arts |
|
|
@@ -137,7 +137,7 @@ Each tone gets two rows: a **free baseline** (Google Fonts / Fontshare; works ou
|
|
|
137
137
|
|
|
138
138
|
## Wordmark / logo typography
|
|
139
139
|
|
|
140
|
-
The wordmark in the navbar and footer **may use a different display face than the body**. On tone-rich themes (Editorial,
|
|
140
|
+
The wordmark in the navbar and footer **may use a different display face than the body**. On tone-rich themes (Editorial, Atelier, Specimen) it **should** — collapsing the wordmark into the body family flattens the visual hierarchy and the page reads as un-branded.
|
|
141
141
|
|
|
142
142
|
```css
|
|
143
143
|
:root {
|
|
@@ -221,7 +221,7 @@ Use no more than five sizes on a single page. If you need more hierarchy, use we
|
|
|
221
221
|
## Body text rules
|
|
222
222
|
|
|
223
223
|
- Minimum 16px. Below 14px is accessibility-hostile.
|
|
224
|
-
- Line-height 1.5–1.65 on body copy, tighter (1.1–1.3) on display. **Floor for all-caps display heads (`text-transform: uppercase` on `.hero__display` / `.section__title` / `h1` / `h2`) is `1.0` — recommended `1.02–1.08`.** Below 1.0 the cap-tops of line N+1 collide with the baseline of line N (no descenders to cushion the gap); the comma + cap-D on a wrapped "PROMPT, / DIFFERENT" fuse into a single glyph blob. Condensed display faces (Anton, Inter Tight 900, Bebas Neue) make this worse. Gate
|
|
224
|
+
- Line-height 1.5–1.65 on body copy, tighter (1.1–1.3) on display. **Floor for all-caps display heads (`text-transform: uppercase` on `.hero__display` / `.section__title` / `h1` / `h2`) is `1.0` — recommended `1.02–1.08`.** Below 1.0 the cap-tops of line N+1 collide with the baseline of line N (no descenders to cushion the gap); the comma + cap-D on a wrapped "PROMPT, / DIFFERENT" fuse into a single glyph blob. Condensed display faces (Anton, Inter Tight 900, Bebas Neue) make this worse. Gate 55 auto-fails the pattern.
|
|
225
225
|
- Measure 45–75 characters (`max-width: 65ch`).
|
|
226
226
|
- Never all-caps body copy. Never justified text without hyphenation. Never letter-spacing above 0.05em on body.
|
|
227
227
|
|
|
@@ -219,7 +219,7 @@ For each target page:
|
|
|
219
219
|
|
|
220
220
|
### 4. Diversification rule — INVERTED for multi-page
|
|
221
221
|
|
|
222
|
-
Across pages of the same app, the diversification rule is *inverted*: consecutive pages MUST share theme, accent, type pairing. They may differ on macrostructure within the family. The
|
|
222
|
+
Across pages of the same app, the diversification rule is *inverted*: consecutive pages MUST share theme, accent, type pairing. They may differ on macrostructure within the family. The 57 slop-test gates that check "differs from previous Hallmark run" are skipped for `designed-as-app` outputs — the system overrides the catalog rotation here.
|
|
223
223
|
|
|
224
224
|
Pages that drift from `design.md` are slop. The audit verb flags `design.md` drift as a critical structural finding (`stamp-vs-design.md disagreement`).
|
|
225
225
|
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Hallmark contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|