arkaos 4.28.0 → 4.29.0

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.
Files changed (42) hide show
  1. package/THE-ARKAOS-GUIDE.md +1 -1
  2. package/VERSION +1 -1
  3. package/arka/skills/refine/SKILL.md +7 -0
  4. package/config/claude-agents/brand-director.md +1 -1
  5. package/config/claude-agents/design-ops-lead.md +1 -1
  6. package/config/claude-agents/frontend-dev.md +1 -1
  7. package/config/claude-agents/ux-designer.md +1 -1
  8. package/config/claude-agents/ux-strategist.md +1 -1
  9. package/config/claude-agents/visual-designer.md +1 -1
  10. package/config/claude-agents/wcag-auditor.md +1 -1
  11. package/config/skills-provenance.yaml +14 -2
  12. package/departments/brand/agents/brand-director.yaml +2 -0
  13. package/departments/brand/agents/design-ops/design-ops-lead.yaml +2 -0
  14. package/departments/brand/agents/design-ops/wcag-auditor.yaml +2 -0
  15. package/departments/brand/agents/ux-designer.yaml +2 -0
  16. package/departments/brand/agents/ux-strategist.yaml +2 -0
  17. package/departments/brand/agents/visual-designer.yaml +2 -0
  18. package/departments/brand/references/uiux-knowledge-and-tools.md +185 -2
  19. package/departments/brand/skills/design-review/SKILL.md +25 -0
  20. package/departments/brand/skills/design-review/references/anti-patterns.md +420 -0
  21. package/departments/brand/skills/design-review/references/critique-protocol.md +169 -0
  22. package/departments/brand/skills/design-review/references/design-registers.md +181 -0
  23. package/departments/brand/skills/design-review/references/genres/atmospheric.md +71 -0
  24. package/departments/brand/skills/design-review/references/genres/editorial.md +74 -0
  25. package/departments/brand/skills/design-review/references/genres/modern-minimal.md +73 -0
  26. package/departments/brand/skills/design-review/references/genres/playful.md +72 -0
  27. package/departments/brand/skills/design-review/references/hallmark.LICENSE +21 -0
  28. package/departments/brand/skills/design-review/references/impeccable.LICENSE +191 -0
  29. package/departments/brand/skills/design-review/references/impeccable.NOTICE +11 -0
  30. package/departments/brand/skills/design-review/references/slop-test.md +194 -0
  31. package/departments/brand/skills/ux-audit/SKILL.md +25 -4
  32. package/departments/dev/agents/frontend-dev.yaml +2 -0
  33. package/harness/codex/AGENTS.md +1 -1
  34. package/harness/copilot/copilot-instructions.md +1 -1
  35. package/harness/cursor/rules/arkaos.mdc +2 -2
  36. package/harness/gemini/GEMINI.md +1 -1
  37. package/harness/opencode/AGENTS.md +1 -1
  38. package/harness/zed/.rules +1 -1
  39. package/knowledge/agents-registry-v2.json +19 -5
  40. package/knowledge/skills-manifest.json +7 -3
  41. package/package.json +1 -1
  42. package/pyproject.toml +1 -1
@@ -0,0 +1,181 @@
1
+ # Design Registers — Brand vs Product
2
+
3
+ > Derived from [impeccable](https://github.com/pbakaus/impeccable) (Apache-2.0 — see `impeccable.LICENSE` and `impeccable.NOTICE` in this directory). Merged from upstream `brand.md` + `product.md`; reflex-reject lists relocated to the doctrine hub.
4
+
5
+ ## Register selection
6
+
7
+ Pick the register before critiquing or designing, in this order:
8
+
9
+ 1. **Task cue** — what the request names: "landing page", "brand site", "campaign" → brand; "dashboard", "settings", "admin", "table" → product.
10
+ 2. **Surface in focus** — what the file or route actually is: a marketing route is brand even inside an app repo; an authenticated tool screen is product even on a brand domain.
11
+ 3. **Project context** — the project's design system and standing brand commitments break ties and always constrain both registers.
12
+
13
+ One register per surface. Mixed products (marketing site + app) switch register per surface, not per project.
14
+
15
+ ## Brand register
16
+
17
+ When design IS the product: brand sites, landing pages, marketing surfaces, campaign pages, portfolios, long-form content, about pages. The deliverable is the design itself; a visitor's impression is the thing being made.
18
+
19
+ The register spans every genre. A tech brand (Stripe, Linear, Vercel). A luxury brand (a hotel, a fashion house). A consumer product (a restaurant, a travel site, a CPG packaging page). A creative studio, an agency portfolio, a band's album page. They all share the stance (*communicate, not transact*) and diverge wildly in aesthetic. Don't collapse them into a single look.
20
+
21
+ ### The brand slop test
22
+
23
+ If someone could look at this and say "AI made that" without hesitation, it's failed. The bar is distinctiveness; a visitor should ask "how was this made?", not "which AI made this?"
24
+
25
+ Brand isn't a neutral register. AI-generated landing pages have flooded the internet, and average is no longer findable. Restraint without intent now reads as mediocre, not refined. Brand surfaces need a POV, a specific audience, a willingness to risk strangeness. Go big or go home.
26
+
27
+ **The second slop test: aesthetic lane.** Before committing to moves, name the reference. A Klim-style specimen page is one lane; Stripe-minimal is another; Liquid-Death-acid-maximalism is another. Don't drift into editorial-magazine aesthetics on a brief that isn't editorial. A hiking brand with Cormorant italic drop caps has the wrong register within the register.
28
+
29
+ Then the inverse test: in one sentence, describe what you're about to build the way a competitor would describe theirs. If that sentence fits the modal landing page in the category, restart.
30
+
31
+ ### Typography
32
+
33
+ #### Font selection procedure
34
+
35
+ Every project. Never skip. <!-- rule:brand-typo-font-selection-procedure -->
36
+
37
+ 1. Read the brief. Write three concrete brand-voice words. Not "modern" or "elegant," but "warm and mechanical and opinionated" or "calm and clinical and careful." Physical-object words.
38
+ 2. List the three fonts you'd reach for by reflex. If any appear in the reflex-reject list below, reject them; they are training-data defaults and they create monoculture.
39
+ 3. Browse a real catalog (Google Fonts, Pangram Pangram, Future Fonts, Adobe Fonts, ABC Dinamo, Klim, Velvetyne) with the three words in mind. Find the font for the brand as a *physical object*: a museum caption, a 1970s terminal manual, a fabric label, a cheap-newsprint children's book, a concert poster, a receipt from a mid-century diner. Reject the first thing that "looks designy."
40
+ 4. Cross-check. "Elegant" is not necessarily serif. "Technical" is not necessarily sans. "Warm" is not Fraunces. If the final pick lines up with the original reflex, start over.
41
+
42
+ #### Reflex-reject list
43
+
44
+ <!-- rule:brand-typo-reflex-reject-fonts -->
45
+
46
+ The canonical reflex-reject list (fonts + aesthetic lanes) lives in `departments/brand/references/uiux-knowledge-and-tools.md` §11. The identity-preservation carve-out applies: existing brand commitments always win over the ban list.
47
+
48
+ #### Reflex-reject aesthetic lanes
49
+
50
+ Parallel to the font list. Currently saturated aesthetic families that have flooded brand surfaces. If a brief lands in one of these lanes without a register reason that *requires* it (a literal magazine, a literal terminal, a literal industrial signage system), it's the second-order training reflex: the trap one tier deeper than picking a Fraunces font. Look further. <!-- rule:brand-typo-reflex-reject-lanes -->
51
+
52
+ The canonical reflex-reject list (fonts + aesthetic lanes) lives in `departments/brand/references/uiux-knowledge-and-tools.md` §11. The identity-preservation carve-out applies: existing brand commitments always win over the ban list.
53
+
54
+ The reflex-reject lists apply to **new design choices**. When the existing brand has already committed to a font or a lane as part of its identity, identity-preservation wins; variants on an existing surface don't second-guess what's already shipping. The reflex-reject lists are for greenfield decisions and for departure-mode variants.
55
+
56
+ #### Pairing and voice
57
+
58
+ Distinctive + refined is the goal. The specific shape depends on the brand, not on the brand's category. A category ("restaurant", "dev tool", "magazine", "fintech") is not a recipe; treating it as one is the first-order reflex the doctrine warns against. <!-- rule:brand-typo-pairing-voice -->
59
+
60
+ Two families minimum is the rule *only* when the voice needs it. A single well-chosen family with committed weight/size contrast is stronger than a timid display+body pair.
61
+
62
+ #### Scale
63
+
64
+ Modular scale, fluid `clamp()` for headings, ≥1.25 ratio between steps. Flat scales (1.1× apart) read as uncommitted. <!-- rule:brand-typo-modular-scale -->
65
+
66
+ Light text on dark backgrounds: add 0.05–0.1 to line-height. Light type reads as lighter weight and needs more breathing room. <!-- rule:brand-typo-light-on-dark-leading -->
67
+
68
+ ### Color
69
+
70
+ Brand surfaces have permission for Committed, Full palette, and Drenched strategies. Use them. A single saturated color spread across a hero is not excess; it's voice. A beige-and-muted-slate landing page ignores the register. <!-- rule:brand-color-strategy-permission -->
71
+
72
+ - Name a real reference before picking a strategy. "Klim Type Foundry #ff4500 orange drench", "Stripe purple-on-white restraint", "Liquid Death acid-green full palette", "Mailchimp yellow full palette", "Condé Nast Traveler muted navy restraint", "Vercel pure black monochrome". Unnamed ambition becomes beige. <!-- rule:brand-color-named-reference -->
73
+ - Palette IS voice. A calm brand and a restless brand should not share palette mechanics. <!-- rule:brand-color-palette-is-voice -->
74
+ - When the strategy is Committed or Drenched, color carries the brand. Don't hedge with neutrals around the edges. Commit. <!-- rule:brand-color-commit-no-hedge -->
75
+ - Don't converge across projects. Each brand surface differentiates from the last. <!-- rule:brand-color-no-converge -->
76
+ - When a cultural-symbol palette is the obvious pull, reach past it. Let the cultural reading come from typography, imagery, and copy, not the palette. <!-- rule:brand-color-no-cultural-symbol -->
77
+
78
+ ### Layout
79
+
80
+ - Asymmetric compositions are one option. Break the grid intentionally for emphasis. <!-- rule:brand-layout-asymmetric -->
81
+ - Fluid spacing with `clamp()` that breathes on larger viewports. Vary for rhythm: generous separations, tight groupings. <!-- rule:brand-layout-fluid-spacing -->
82
+ - For image-led briefs (hotels, restaurants, magazines, photography), full-bleed hero imagery with overlaid menu and centered headline is a canonical move; let the photograph be the design. <!-- rule:brand-layout-image-led-hero -->
83
+ - When cards ARE the right affordance, use `grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))` for breakpoint-free responsiveness. <!-- rule:brand-layout-cards-when-right -->
84
+
85
+ ### Imagery
86
+
87
+ Brand surfaces lean on imagery. A restaurant, hotel, magazine, or product landing page without any imagery reads as incomplete, not as restrained. A solid-color rectangle where a hero image should go is worse than a representative stock photo.
88
+
89
+ **When the brief implies imagery, you must ship imagery.** Zero images is a bug, not a design choice. "Restraint" is not an excuse. If the approved comp or brief is image-led, ship real project assets, generated raster assets, or a credible canvas/SVG/WebGL scene. Do not replace photographic, architectural, product, or place imagery with generic CSS panels, decorative diagrams, cards, bullets, or copy. <!-- rule:brand-imagery-required -->
90
+
91
+ - **For greenfield work without local assets, use stock imagery.** Unsplash is the default. The URL shape is `https://images.unsplash.com/photo-{id}?auto=format&fit=crop&w=1600&q=80`. **Verify the URLs before referencing them.** If you have an image-search MCP, web-fetch tool, or browser access, use it to find real photo IDs and confirm they resolve. Guessed IDs (even ones that look real) often 404 and ship as broken-image placeholders. Without a verification path, pick fewer photos you're confident exist over more that you guessed; never substitute colored `<div>` placeholders. <!-- rule:brand-imagery-unsplash-default -->
92
+ - **Search for the brand's physical object**, not the generic category: "handmade pasta on a scratched wooden table" beats "Italian food"; "cypress trees above a limestone hotel facade at dusk" beats "luxury hotel". <!-- rule:brand-imagery-physical-object-search -->
93
+ - **One decisive photo beats five mediocre ones.** Hero imagery should commit to a mood; padding with more stock doesn't rescue an indecisive one. <!-- rule:brand-imagery-one-decisive-photo -->
94
+ - **Alt text is part of the voice.** "Coastal fettuccine, hand-cut, served on the terrace" beats "pasta dish". <!-- rule:brand-imagery-alt-text -->
95
+
96
+ "Imagery" here is broader than stock photography: product screenshots, custom data visualizations, generated SVG, and canvas/WebGL scenes are all imagery. Text-only pages where typography alone carries the entire visual weight are the failure mode.
97
+
98
+ ### Motion
99
+
100
+ - One well-orchestrated page-load beats scattered micro-interactions, when the brand invites it. Some brands skip entrance motion entirely; the restraint is the voice. <!-- rule:brand-motion-one-page-load -->
101
+
102
+ ### Brand bans (on top of the shared absolute bans)
103
+
104
+ - Monospace as lazy shorthand for "technical / developer." If the brand isn't technical, mono reads as costume. <!-- rule:brand-ban-mono-as-shorthand -->
105
+ - Large rounded-corner icons above every heading. Screams template. <!-- rule:brand-ban-large-rounded-icons -->
106
+ - Single-family pages that picked the family by reflex, not voice. (A single family chosen deliberately is fine.) <!-- rule:brand-ban-single-family-by-reflex -->
107
+ - All-caps body copy. Reserve caps for short labels and headings. <!-- rule:brand-ban-all-caps-body -->
108
+ - Timid palettes and average layouts. Safe = invisible. <!-- rule:brand-ban-timid-palettes -->
109
+ - Zero imagery on a brief that implies imagery (restaurant, hotel, food, travel, fashion, photography, hobbyist). Colored blocks where a hero photo belongs. <!-- rule:brand-ban-zero-imagery -->
110
+ - Defaulting to editorial-magazine aesthetics (display serif + italic + drop caps + broadsheet grid) on briefs that aren't magazine-shaped. Editorial is ONE aesthetic lane, not the default brand aesthetic. <!-- rule:brand-ban-editorial-default -->
111
+ - Repeated tiny uppercase tracked labels above every section heading. A single strong kicker can be voice; repeating it as section grammar is AI scaffolding unless it's a deliberate, named brand system. <!-- rule:brand-ban-repeated-section-kickers -->
112
+
113
+ ### Brand permissions
114
+
115
+ Brand can afford things product can't. Take them.
116
+
117
+ - Ambitious first-load motion. Reveals and typographic choreography that earn their place; not fade-on-scroll for every section. <!-- rule:brand-permission-first-load-motion -->
118
+ - Single-purpose viewports. One dominant idea per fold, long scroll, deliberate pacing. <!-- rule:brand-permission-single-purpose-viewports -->
119
+ - Unexpected color strategies. Palette IS voice; a calm brand and a restless brand should not share palette mechanics. <!-- rule:brand-permission-unexpected-color -->
120
+ - Art direction per section. Different sections can have different visual worlds if the narrative demands it. Consistency of voice beats consistency of treatment. <!-- rule:brand-permission-art-direction -->
121
+
122
+ ## Product register
123
+
124
+ When design SERVES the product: app UIs, admin dashboards, settings panels, data tables, tools, authenticated surfaces, anything where the user is in a task.
125
+
126
+ ### The product slop test
127
+
128
+ Not "would someone say AI made this." Familiarity is often a feature here. The test is: would a user fluent in the category's best tools (Linear, Figma, Notion, Raycast, Stripe come to mind) sit down and trust this interface, or pause at every subtly-off component?
129
+
130
+ Product UI's failure mode isn't flatness, it's strangeness without purpose: over-decorated buttons, mismatched form controls, gratuitous motion, display fonts where labels should be, invented affordances for standard tasks. The bar is earned familiarity. The tool should disappear into the task.
131
+
132
+ ### Typography
133
+
134
+ - **One family is often right.** Product UIs don't need display/body pairing. A well-tuned sans carries headings, buttons, labels, body, data. <!-- rule:product-typo-one-family -->
135
+ - **Fixed rem scale, not fluid.** Clamp-sized headings don't serve product UI. Users view at consistent DPI, and a fluid h1 that shrinks in a sidebar looks worse, not better. <!-- rule:product-typo-fixed-rem-scale -->
136
+ - **Tighter scale ratio.** 1.125–1.2 between steps is typical. More type elements here than on brand surfaces; exaggerated contrast creates noise. <!-- rule:product-typo-tighter-ratio -->
137
+ - **Line length still applies for prose** (65–75ch). Data and compact UI can run denser; tables at 120ch+ are fine. <!-- rule:product-typo-line-length -->
138
+
139
+ ### Color
140
+
141
+ Product defaults to Restrained. A single surface can earn Committed (a dashboard where one category color carries a report, an onboarding flow with a drenched welcome screen), but Restrained is the floor. <!-- rule:product-color-restrained-default -->
142
+
143
+ - State-rich semantic vocabulary: hover, focus, active, disabled, selected, loading, error, warning, success, info. Standardize these. <!-- rule:product-color-state-vocab -->
144
+ - Accent color used for primary actions, current selection, and state indicators only, not decoration. <!-- rule:product-color-accent-only -->
145
+ - A second neutral layer for sidebars, toolbars, and panels (slightly cooler or warmer than the content surface). <!-- rule:product-color-second-neutral -->
146
+
147
+ ### Layout
148
+
149
+ - Responsive behavior is structural (collapse sidebar, responsive table, breakpoint-driven columns), not fluid typography. <!-- rule:product-layout-responsive-structural -->
150
+
151
+ ### Components
152
+
153
+ Every interactive component has: default, hover, focus, active, disabled, loading, error. Don't ship with half of these. <!-- rule:product-components-all-states -->
154
+
155
+ - Skeleton states for loading, not spinners in the middle of content. <!-- rule:product-components-skeleton-loading -->
156
+ - Empty states that teach the interface, not "nothing here." <!-- rule:product-components-empty-states -->
157
+ - Consistent affordances across the surface. Same button shape. Same form-control vocabulary. Same icon style. <!-- rule:product-components-consistent-affordances -->
158
+
159
+ ### Motion
160
+
161
+ - 150–250 ms on most transitions. Users are in flow; don't make them wait for choreography. <!-- rule:product-motion-quick-transitions -->
162
+ - Motion conveys state, not decoration. State change, feedback, loading, reveal: nothing else. <!-- rule:product-motion-state-not-decoration -->
163
+ - No orchestrated page-load sequences. Product loads into a task; users don't want to watch it load. <!-- rule:product-motion-no-page-load-sequence -->
164
+
165
+ ### Product bans (on top of the shared absolute bans)
166
+
167
+ - Decorative motion that doesn't convey state. <!-- rule:product-ban-decorative-motion -->
168
+ - Inconsistent component vocabulary across screens. If the "save" button looks different in two places, one is wrong. <!-- rule:product-ban-inconsistent-components -->
169
+ - Display fonts in UI labels, buttons, data. <!-- rule:product-ban-display-fonts-ui -->
170
+ - Reinventing standard affordances for flavor (custom scrollbars, weird form controls, non-standard modals). <!-- rule:product-ban-reinvented-affordances -->
171
+ - Heavy color or full-saturation accents on inactive states. <!-- rule:product-ban-heavy-inactive-color -->
172
+ - Modal as first thought. Modals are usually laziness. Exhaust inline / progressive alternatives first. <!-- rule:product-ban-modal-first-thought -->
173
+
174
+ ### Product permissions
175
+
176
+ Product can afford things brand surfaces can't.
177
+
178
+ - System fonts and familiar sans defaults (Inter, SF Pro, system-ui stacks).
179
+ - Standard navigation patterns: top bar + side nav, breadcrumbs, tabs, command palettes.
180
+ - Density. Tables with many rows, panels with many labels, dense information when users need it.
181
+ - Consistency over surprise. The same visual vocabulary screen to screen is a virtue; delight is saved for moments, not pages.
@@ -0,0 +1,71 @@
1
+ # Genre — atmospheric
2
+
3
+ > Derived from [hallmark](https://github.com/nutlope/hallmark) (MIT — see `hallmark.LICENSE` in this directory). Sanitized and adapted for ArkaOS.
4
+
5
+ For the AI-creative product page. Dark canvas with warm radial blooms, confident sans display, expressive but plain-English copy, single warm accent. The aesthetic of a tool you'd actually want to use after dark — generative music, video, image, voice.
6
+
7
+ ## When to pick it
8
+
9
+ Brief mentions any of: *AI tool, generative, music, video, image, voice, late-night, atmospheric, dark mode, expressive, creative tool, model playground, vibe-coded, dreamlike, nocturnal*. Also pick when the user names a *mood* that requires darkness (e.g. "moody", "cinematic", "after hours").
10
+
11
+ ## Themes that belong
12
+
13
+ `Bloom` (canonical light-paper), `Midnight`, `Terminal`, `Aurora`, `Lumen`. Five themes; the rotation walks them when atmospheric is active.
14
+
15
+ `Lumen` is the premium AI-tool register — Modal / Anthropic / ElevenLabs / Cluely / Adept / Granola. One focal CSS artefact + classical italic-serif headline + mono technical eyebrow. **Two palette drops** (Night Foundry — dark amber-gold, emits; Day Foundry — light indigo, refracts). The only atmospheric theme with a serif display and the only one whose canvas treatment is one *built* artefact rather than two diffuse blooms.
16
+
17
+ ## Voice
18
+
19
+ - **Display** — Geist Sans 600 or similar weighty sans, plain English, no ornament. Letter-spacing tight (`-0.03em` or tighter).
20
+ - **Body** — same family, 400. Light grey on dark (`oklch(86% 0.008 40)`).
21
+ - **Accent** — single warm hue (orange / amber / red / pink). Used in radial-gradient blooms on the canvas, on focus rings, on small tags. Never on display text (that's gate 2 universal — gradient text stays banned).
22
+ - **Layout** — centred or near-centred heroes. The canvas itself is the design; the type sits on top of an atmospheric ground.
23
+ - **Motion** — fade-in only. No slide, no bounce. The atmosphere does the work.
24
+ - **Copy tone** — direct, slightly poetic, specific. *"Make a house song about quitting your job."* is the calibration.
25
+
26
+ ## What this genre allows
27
+
28
+ - **Radial-gradient bloom** on the body background — up to two blooms, each ~20–30 % footprint, fixed-attached, no animation. Gate 29 universal is loosened here.
29
+ - **Centred heroes** — gate 6 universal is loosened. The canvas frames the type.
30
+ - **Pill-rounded CTAs** with accent fill — confident, not pastel.
31
+ - **Glow shadows** on hover (cards lift toward the user with a soft warm shadow).
32
+ - **Larger expressive type** — display can hit 6 rem (`clamp(3rem, 6vw + 1rem, 6rem)`).
33
+
34
+ ## What this genre disallows
35
+
36
+ - **Light-paper aesthetics** — the *default* canvas is dark. Bloom and Lumen's Day Foundry are the documented light-paper exceptions; both still emit/refract light from a focal canvas treatment. Don't sneak white sections into a dark-paper build.
37
+ - **Italic in headers** — banned globally (a top AI tell). Atmospheric display is roman; Lumen ships Instrument Serif as a **roman** headline face, with the verb landmark carried by accent colour + a drawn underline, never italics. Body stays Geist Sans.
38
+ - **Hairlines** — atmospheric uses elevated cards (`paper-2`, `paper-3`) instead of hairline-on-paper.
39
+ - **Multiple accent hues** — one warm bloom + one secondary (pink/red) is the maximum. No teal-and-amber juggling.
40
+ - **Glassmorphism** — banned. Atmospheric is *atmospheric*, not glass. (see doctrine hub §12 absolute bans)
41
+ - **Gradient text** — gate 2 universal. Stays banned.
42
+
43
+ ## Voice fixtures
44
+
45
+ - *"Built for the dark."*
46
+ - *"The page should feel like a place you could sit in."*
47
+ - *"A canvas, then a tool."*
48
+ - *"Generate, refine, ship — between Tuesday and Wednesday."*
49
+ - *"The instrument is dark. The output is yours."*
50
+ - *"Built to think in real time."* — Lumen voice; the verb is the landmark via accent colour + underline, never italics.
51
+ - *"A single primitive that scales down to zero."* — Lumen voice; technical, declarative.
52
+
53
+ ## Nav and footer voice
54
+
55
+ - **Default nav:** N5 Floating pill — the blur backdrop sells the atmospheric mood. The pill sits over the dark canvas and the bloom shows through the blur.
56
+ - **Acceptable also:** N9 Edge-aligned minimal (when the canvas is loud enough that nav should disappear into it); N4 ⌘K-only (when the audience is technical).
57
+ - **Default footer:** Ft5 Statement — closes the page with a sentence. Atmospheric pages argue something; the footer states it.
58
+ - **Acceptable also:** Ft1 Mast-headed; Ft2 Inline single line.
59
+ - **Banned for atmospheric:** N6 Newspaper masthead (editorial vocabulary); N7 Brutal slab (fights the calm); Ft8 Marquee scroll (kinetic, breaks the dark canvas); Ft3 Index columns (AI-footer fingerprint).
60
+
61
+ See `component-cookbook.md` § Navigation and § Footers for the full archetypes + code.
62
+
63
+ ## Stamp signature
64
+
65
+ ```css
66
+ /* [arka:design-dna] macrostructure=<name> genre=atmospheric anchor=<oklch> display=<font> body=<font> theme=<name> enrichment=<tier> nav=<N#> footer=<Ft#> critique=P#H#E#S#R#V# */
67
+ ```
68
+
69
+ ## Reference register
70
+
71
+ The aesthetic to match: dark canvas with two warm blooms behind the content, plain-English heroic display, single warm accent on small surfaces. Hand-built, not stock-AI.
@@ -0,0 +1,74 @@
1
+ # Genre — editorial (default)
2
+
3
+ > Derived from [hallmark](https://github.com/nutlope/hallmark) (MIT — see `hallmark.LICENSE` in this directory). Sanitized and adapted for ArkaOS.
4
+
5
+ The canonical voice of the ArkaOS design flow. Pages built for content-led briefs: portfolios, manifestos, type specimens, agency sites, magazine pieces, indie podcasts, bakery / brand stories, considered B2C marketing.
6
+
7
+ This is what the ArkaOS design flow looks like when no other genre signal fires. It is the silent default.
8
+
9
+ ## When to pick it
10
+
11
+ Default. Pick editorial when the brief does not name a specialised aesthetic — when the user said "a landing page for X" without telling you whether X is enterprise, atmospheric, or playful. Most briefs land here.
12
+
13
+ ## Themes that belong
14
+
15
+ `Specimen`, `Newsprint`, `Atelier`, `Garden`, `Almanac`, `Studio`, `Riso`, `Sport`, `Brutal`, `Manifesto`, `Editorial`, `Carnival`. Twelve themes — plenty of variety inside the genre.
16
+
17
+ `Carnival` is the loud-maximalist editorial register — Dropout TV / Fly.io / Stones Throw / Third Man Records. Duo-tone accent system (mustard + oxblood), chunky variable display, decorative ornaments, hard-offset shadows. The loud sibling to Riso / Manifesto / Brutal.
18
+
19
+ ## Voice
20
+
21
+ - **Display** — roman serif, condensed sans, or display-heavy. Not Inter. Not Geist. The weight commits to an extreme (300 or 700+). Italic is body-emphasis only — never the header face (global rule).
22
+ - **Body** — workhorse serif (Newsreader, Cormorant) or a plain non-default sans (The Future, Söhne). Readable at 45–75 ch.
23
+ - **Accent** — single warm or cool hue, used at < 5 % of any viewport.
24
+ - **Layout** — asymmetric. Hairlines, not card borders. Generous whitespace.
25
+ - **Motion** — quiet. One orchestrated entrance. No bounces.
26
+ - **Copy tone** — specific, hand-set, slightly literary. Verbs over adjectives.
27
+
28
+ ## What this genre allows
29
+
30
+ - Hairline rules, fleurons, drop caps, double rules.
31
+ - Italic body in long-form content.
32
+ - Asymmetric column counts (2:5, 3:7) on prose pages.
33
+ - Hand-built SVG illustrations, pure-CSS art (Tier A enrichment).
34
+ - Numbered display labels, edge-aligned headlines.
35
+ - Single-accent-colour highlighting (`<mark>` band at x-height).
36
+
37
+ ## What this genre disallows
38
+
39
+ The universal slop-test gates apply, plus these editorial-specific bans:
40
+
41
+ - **Pill-rounded buttons** with gradient fill — pill is fine, gradient on a pill is not.
42
+ - **Centred-everything heroes** (gate 6 universal). Editorial heroes are left-biased or asymmetric.
43
+ - **Card-in-card** layouts (gate 4 universal).
44
+ - **Three-column equal-icon-tile feature grid** (gate 3 universal).
45
+ - **Glassmorphism** — never; the medium is paper, not glass. (see doctrine hub §12 absolute bans)
46
+ - **Pure black or pure white** as paper or ink (gate 7). Tint everything toward the anchor.
47
+
48
+ ## Voice fixtures
49
+
50
+ Each macrostructure under editorial picks from these opening-line patterns. Imitate the *shape*, not the wording.
51
+
52
+ - *"Type, set with care."*
53
+ - *"Print discipline, on screen."*
54
+ - *"A small skill that argues against the average."*
55
+ - *"We compose the page like a broadsheet — hairlines, columns, restraint."*
56
+ - *"Restraint, repeated, becomes a signature."*
57
+
58
+ ## Nav and footer voice
59
+
60
+ - **Default nav:** N6 Newspaper masthead — full-width, large centred wordmark, thin issue/date row in serif small caps, double-rule below. Reads as broadsheet.
61
+ - **Acceptable also:** N1a Wordmark + 2 links (when destinations are minimal); N9 Edge-aligned minimal (when the page is letter-shaped or atelier-quiet).
62
+ - **Default footer:** Ft1 Mast-headed (wordmark anchors a single horizontal band, tagline + small links beside).
63
+ - **Acceptable also:** Ft2 Inline single line; Ft4 Dense colophon (newsprint / almanac voices); Ft6 Letter close (atelier / garden / personal); Ft7 Newsletter-first (when the brand legitimately publishes).
64
+ - **Banned for editorial:** N5 Floating pill (modern-minimal vocabulary), N7 Brutal slab (fights the restraint), Ft8 Marquee scroll (kinetic; wrong genre).
65
+
66
+ See `component-cookbook.md` § Navigation and § Footers for the full archetypes + code.
67
+
68
+ ## Stamp signature
69
+
70
+ Output's CSS comment header reads:
71
+
72
+ ```css
73
+ /* [arka:design-dna] macrostructure=<name> genre=editorial anchor=<oklch> display=<font> body=<font> theme=<name> enrichment=<tier> nav=<N#> footer=<Ft#> critique=P#H#E#S#R#V# */
74
+ ```
@@ -0,0 +1,73 @@
1
+ # Genre — modern-minimal
2
+
3
+ > Derived from [hallmark](https://github.com/nutlope/hallmark) (MIT — see `hallmark.LICENSE` in this directory). Sanitized and adapted for ArkaOS.
4
+
5
+ For the polished enterprise / dev-tool / API page. Stripe / Linear / ElevenLabs school: Geist sans, large confident displays, generous whitespace, pill CTAs, monochrome with optional accent. Minimalism with conviction, not the absence of choice.
6
+
7
+ ## When to pick it
8
+
9
+ Brief mentions any of: *SaaS, enterprise, API, platform, developer tool, infra, B2B, dashboard, billing, Stripe-like, Linear-like, ElevenLabs-like, dev experience, ship fast*. Also pick when the user names a brand colour but the rest of the brief is restrained.
10
+
11
+ ## Themes that belong
12
+
13
+ `Coral` (canonical) — warm-grey paper, single warm coral accent, Geist throughout, soft pill CTAs. The "Stripe-not-Linear" warmth.
14
+
15
+ `Cobalt` — the cool dev-tool / API / docs register (the GitBook + Firecrawl school, executed **cobalt-on-light, not orange**). Cool engineered near-white paper, one electric cobalt signal accent, Space Grotesk display + Inter body + JetBrains Mono code, ruler-drawn hairlines, tight 6 px radii, a bordered ⌘K nav, and a live code/API request–response hero. The technical, instrument-panel sibling to Coral's warmth — the rotation walks Coral ⇄ Cobalt when modern-minimal is active.
16
+
17
+ The two differ on every axis a glance registers: Coral is warm-grey + coral + Geist + pills; Cobalt is cool-white + electric blue + Space Grotesk/mono + tight-radius bordered controls. Future themes can join this genre too — anything monochrome or near-monochrome with an Inter-class sans display and a single restrained accent.
18
+
19
+ ## Voice
20
+
21
+ - **Display** — Geist Sans 500–700, Inter Tight Display 600+, or similar. Letter-spacing tight (`-0.02em` to `-0.035em`).
22
+ - **Body** — Geist Sans 400, Inter 400. Same family as display (single-family discipline).
23
+ - **Accent** — monochrome (accent IS ink) or a single restrained hue used only on focus rings. No chromatic floods.
24
+ - **Layout** — two-column heroes (title left, lede right), generous whitespace, refined card surfaces with subtle borders.
25
+ - **Motion** — minimal. Reveals are off; the page is composed.
26
+ - **Copy tone** — declarative, specific, technical. "Built for X" is not banned but must name the X concretely.
27
+
28
+ ## What this genre allows
29
+
30
+ - **Pill-rounded CTAs** — both filled and outlined. Black-filled primary + white-outlined secondary is the canonical pair.
31
+ - **Pure white paper** (`#fff` / `oklch(100% 0 0)`) — gate 7 is loosened here.
32
+ - **Zero-chroma neutrals** — gate 22 is loosened here. The Stripe / ElevenLabs school is monochrome by design.
33
+ - **Two-column hero with title-left + paragraph-right** — explicitly canonical for this genre.
34
+ - **Refined card surface** with very subtle border (`oklch(91% 0 0)`) and 8 px radius.
35
+ - **Large, tight-set displays** (`clamp(2.5rem, 5vw + 0.5rem, 4.75rem)`).
36
+
37
+ ## What this genre disallows
38
+
39
+ - **Italic serif body** — modern-minimal stays sans top-to-bottom.
40
+ - **Hairline-everything** — borders are thin but visible, not the editorial 0.5 px hairline aesthetic.
41
+ - **Asymmetric prose columns** — modern-minimal aligns left, justified to a regular grid.
42
+ - **Drop caps, fleurons, ornament** — none of it.
43
+ - **Bouncy / overshoot easings** — gate 12 universal applies strictly here.
44
+ - **Gradient text** — gate 2 universal. Stays banned.
45
+ - **Glassmorphism** — banned. (see doctrine hub §12 absolute bans)
46
+
47
+ ## Voice fixtures
48
+
49
+ - *"Built to ship."*
50
+ - *"The platform that scales with you."*
51
+ - *"From idea to production in an afternoon."*
52
+ - *"Thirty thousand teams build with X."*
53
+ - *"One API. Every channel."*
54
+
55
+ ## Nav and footer voice
56
+
57
+ - **Default nav:** N5 Floating pill — content-sized, detached from edges, blur backdrop, soft shadow. Vercel / Linear / Framer / Raycast vocabulary.
58
+ - **Acceptable also:** N1 Wordmark + 2 links (when destinations are genuinely minimal); N9 Edge-aligned minimal (when the brand earns the silence).
59
+ - **Default footer:** Ft2 Inline single line — wordmark + tagline + tiny credit, hairline rule above. Restrained.
60
+ - **Acceptable also:** Ft1 Mast-headed; Ft5 Statement (when the page wants a closing line).
61
+ - **Banned for modern-minimal:** N6 Newspaper masthead (editorial vocabulary); N7 Brutal slab (fights the restraint); Ft8 Marquee scroll (kinetic, wrong voice); Ft3 Index columns at full saturation (the AI-footer fingerprint — gate 43).
62
+
63
+ See `component-cookbook.md` § Navigation and § Footers for the full archetypes + code.
64
+
65
+ ## Stamp signature
66
+
67
+ ```css
68
+ /* [arka:design-dna] macrostructure=<name> genre=modern-minimal anchor=<oklch> display=<font> body=<font> theme=<name> enrichment=<tier> nav=<N#> footer=<Ft#> critique=P#H#E#S#R#V# */
69
+ ```
70
+
71
+ ## Reference register (for the LLM, not credited to anyone)
72
+
73
+ The aesthetic to match: confident sans display, clean white canvas, two-column hero, pill CTAs, mono accent. The user knows what this looks like when they see it. Do not name external sites in the output.
@@ -0,0 +1,72 @@
1
+ # Genre — playful
2
+
3
+ > Derived from [hallmark](https://github.com/nutlope/hallmark) (MIT — see `hallmark.LICENSE` in this directory). Sanitized and adapted for ArkaOS.
4
+
5
+ For the consumer / friendly / onboarding-led page. Soft surfaces, mild colour, motion that responds to hover, friendlier voice. Closer to Notion's marketing or Figma's onboarding than to Stripe's API docs.
6
+
7
+ ## When to pick it
8
+
9
+ Brief mentions any of: *fun, consumer, casual, family, kids, friendly, approachable, onboarding-heavy, community, social, tactile-but-soft, post-Linear-soft*. Pick playful sparingly — most consumer briefs still belong to editorial (warm-paper, hand-set) unless the user explicitly asks for *softer* and *friendlier*.
10
+
11
+ ## Themes that belong
12
+
13
+ `Hum` (vibrant, alive) is the genre's canonical theme — the post-Brilliant-alive register: multi-accent cream + pear + cyan + coral, mandatory motion, a single character moment. Pick it when the brief wants "feels alive in the room with you." For the quieter, more restrained end of friendly — "friendly but soft" rather than "alive" — reach instead for modern-minimal (Coral): a single low-chroma accent on warm paper, smooth easings, motion optional.
14
+
15
+ `Hum` is the catalog's only **rounded-sans-multi-accent** theme — it relaxes several playful defaults: bouncy spring easings are allowed (and canonical) on its primary CTA, accent chroma goes higher than 0.16, and motion is mandatory not optional. It answers a specific brief: a learning platform for curious adults, a daily-curiosity app, a habit tracker with character — products that should feel warm and alive, not merely tidy.
16
+
17
+ ## Voice
18
+
19
+ - **Display** — Geist Sans 600 with tighter tracking (`-0.025em`), or a bricolage-style display weighted at 700. Friendly, not childish.
20
+ - **Body** — Geist Sans 400 in a slightly muted ink (not pure black).
21
+ - **Accent** — soft indigo, warm coral, or muted rose at low chroma. Always low — never the saturated consumer-app pop.
22
+ - **Layout** — slightly rounded surfaces, soft drop shadows, friendlier card edges (12 px radius is the upper bound).
23
+ - **Motion** — responsive on hover (cards lift slightly). One small bounce-free reveal per section. No spring physics on UI state.
24
+ - **Copy tone** — warm, direct, specific. Avoid quirk for quirk's sake. *"Made for teams who write together."* over *"For the squad ✨"*.
25
+
26
+ ## What this genre allows
27
+
28
+ - **Soft drop shadows** on cards (`0 8px 24px -10px <accent at low chroma>`). Restrained.
29
+ - **12 px radius** on cards, 8 px on inputs, 999 px on pills.
30
+ - **Hover-lift animations** on cards (`translateY(-2px)` + shadow expansion).
31
+ - **Mild tinted backgrounds** on alternating sections (paper-2 vs paper, with a tinted band).
32
+ - **Soft accent colours** — `oklch(50% 0.13 282)` (indigo) and similar, never above 0.16 chroma.
33
+
34
+ ## What this genre disallows
35
+
36
+ - **Saturated consumer-app pinks / purples** — playful keeps chroma low by default. **Hum is the documented exception** — pear-yellow at chroma 0.18, sky-cyan at 0.18, coral at 0.24 are allowed and canonical for Hum builds only.
37
+ - **Emoji-as-decoration** — emoji can appear in copy ("we built X 🌱") but never as visual ornament replacing iconography.
38
+ - **Comic Sans, Comic Neue, anything that signals "we're zany"** — playful stays sophisticated, even at full vibrancy.
39
+ - **Bouncy / overshoot easings** — playful uses smooth easings by default. **Hum is the documented exception** — spring overshoot (`cubic-bezier(0.34, 1.56, 0.64, 1)`) is canonical on the primary CTA and character moment (one each per page).
40
+ - **Glassmorphism** — banned across all genres. (see doctrine hub §12 absolute bans)
41
+ - **Gradient text** — gate 2 universal. Stays banned.
42
+
43
+ ## Voice fixtures
44
+
45
+ - *"Made for teams who write together."* — Hum voice
46
+ - *"Soft, but exact."* — Hum voice
47
+ - *"Software can be soft and exact at once. That's the trick."* — Hum voice
48
+ - *"A small tool, gently opinionated."* — Hum voice
49
+ - *"Your daily 30-second curio."* — Hum voice
50
+ - *"Get really good at one thing this quarter."* — Hum voice
51
+ - *"Notice yourself, in 30 seconds."* — Hum voice
52
+ - *"Learn something genuinely new today."* — Hum voice
53
+
54
+ ## Nav and footer voice
55
+
56
+ - **Default nav:** N7 Brutal slab — heavy uppercase wordmark + tracked uppercase links + 2 px border-bottom. The voice is loud but composed.
57
+ - **Acceptable also:** N1 Wordmark + 2 links (when destinations are minimal); N3 Side-rail (when the page is long-scroll and section-numbered, e.g. Studio).
58
+ - **Default footer:** Ft8 Marquee scroll — horizontal repeating tagline + dot separator. Honours `prefers-reduced-motion: reduce`.
59
+ - **Acceptable also:** Ft5 Statement; Ft3 Index columns (only when the page is a hub).
60
+ - **Banned for playful:** N5 Floating pill (modern-minimal vocabulary, fights the loud register); N6 Newspaper masthead (editorial); Ft6 Letter close (warm-quiet voice; wrong genre).
61
+
62
+ See `component-cookbook.md` § Navigation and § Footers for the full archetypes + code.
63
+
64
+ ## Stamp signature
65
+
66
+ ```css
67
+ /* [arka:design-dna] macrostructure=<name> genre=playful anchor=<oklch> display=<font> body=<font> theme=<name> enrichment=<tier> nav=<N#> footer=<Ft#> critique=P#H#E#S#R#V# */
68
+ ```
69
+
70
+ ## Reference register
71
+
72
+ The aesthetic to match: soft surfaces, low-chroma colour, friendly-but-restrained type, hover-responsive motion. The post-Linear soft school. Never childish, never quirk-for-quirk.
@@ -0,0 +1,21 @@
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.