@stylecrib/cli 0.3.1 → 0.3.2
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/README.md +94 -9
- package/agents/MANIFEST.yml +136 -0
- package/agents/README.md +75 -0
- package/agents/art-director.md +168 -0
- package/agents/audacity-director.md +109 -0
- package/agents/brand-identity.md +179 -0
- package/agents/brand-precedent.md +119 -0
- package/agents/brief-enforcer.md +136 -0
- package/agents/component-qa.md +167 -0
- package/agents/cto.md +49 -0
- package/agents/design-director.md +184 -0
- package/agents/design-systems-engineer.md +162 -0
- package/agents/direction-curator.md +133 -0
- package/agents/homogeneity-detector.md +104 -0
- package/agents/logo-designer.md +240 -0
- package/agents/marketing-designer.md +156 -0
- package/agents/media-curator.md +165 -0
- package/agents/motion-engineer.md +270 -0
- package/agents/qa-conductor.md +143 -0
- package/agents/render-qa.md +133 -0
- package/agents/upgrade-simulator.md +123 -0
- package/agents/vp-architecture.md +49 -0
- package/agents/vp-engineering.md +49 -0
- package/dist/index.js +1577 -463
- package/package.json +11 -4
- package/themes/README.md +70 -0
- package/themes/acrylic-soft/THEME.md +142 -0
- package/themes/acrylic-soft/tokens.ts +180 -0
- package/themes/agency-creative/THEME.md +91 -0
- package/themes/agency-creative/tokens.ts +202 -0
- package/themes/agency-portfolio/THEME.md +109 -0
- package/themes/agency-portfolio/tokens.ts +159 -0
- package/themes/ai-startup/THEME.md +95 -0
- package/themes/ai-startup/tokens.ts +162 -0
- package/themes/airline-modern/THEME.md +104 -0
- package/themes/airline-modern/tokens.ts +179 -0
- package/themes/arc-stack/.anchor-render.png +0 -0
- package/themes/arc-stack/THEME.md +125 -0
- package/themes/arc-stack/audit.log.jsonl +6 -0
- package/themes/arc-stack/dismissals.jsonl +3 -0
- package/themes/arc-stack/tailwind.snippet.ts +17 -0
- package/themes/arc-stack/theme.yml +153 -0
- package/themes/arc-stack/tokens.ts +29 -0
- package/themes/architectural/THEME.md +102 -0
- package/themes/architectural/tokens.ts +159 -0
- package/themes/atelier-radiance/THEME.md +93 -0
- package/themes/atelier-radiance/audit.log.jsonl +1 -0
- package/themes/atelier-radiance/tailwind.snippet.ts +15 -0
- package/themes/atelier-radiance/theme.yml +130 -0
- package/themes/atelier-radiance/tokens.ts +29 -0
- package/themes/automotive-ev/THEME.md +87 -0
- package/themes/automotive-ev/tokens.ts +183 -0
- package/themes/automotive-luxury/THEME.md +88 -0
- package/themes/automotive-luxury/tokens.ts +175 -0
- package/themes/baby-modern/THEME.md +79 -0
- package/themes/baby-modern/tokens.ts +184 -0
- package/themes/banking-gravity/THEME.md +171 -0
- package/themes/banking-gravity/tokens.ts +169 -0
- package/themes/beauty-clean/THEME.md +92 -0
- package/themes/beauty-clean/tokens.ts +176 -0
- package/themes/beauty-luxury/THEME.md +96 -0
- package/themes/beauty-luxury/tokens.ts +178 -0
- package/themes/bento-modular/.anchor-render.png +0 -0
- package/themes/bento-modular/BUILD_BRIEF.md +171 -0
- package/themes/bento-modular/THEME.md +80 -0
- package/themes/bento-modular/audit.log.jsonl +3 -0
- package/themes/bento-modular/dismissals.jsonl +1 -0
- package/themes/bento-modular/tailwind.snippet.ts +17 -0
- package/themes/bento-modular/theme.yml +83 -0
- package/themes/bento-modular/tokens.ts +27 -0
- package/themes/bookstore-indie/THEME.md +78 -0
- package/themes/bookstore-indie/tokens.ts +147 -0
- package/themes/brutalist/THEME.md +96 -0
- package/themes/brutalist/tokens.ts +151 -0
- package/themes/business-tiles/THEME.md +141 -0
- package/themes/business-tiles/tokens.ts +178 -0
- package/themes/cabana-poster/THEME.md +158 -0
- package/themes/cabana-poster/audit.log.jsonl +1 -0
- package/themes/cabana-poster/tailwind.snippet.ts +16 -0
- package/themes/cabana-poster/theme.yml +221 -0
- package/themes/cabana-poster/tokens.ts +34 -0
- package/themes/case-panel/THEME.md +126 -0
- package/themes/case-panel/audit.log.jsonl +2 -0
- package/themes/case-panel/tailwind.snippet.ts +15 -0
- package/themes/case-panel/theme.yml +153 -0
- package/themes/case-panel/tokens.ts +28 -0
- package/themes/cinematic-dark/THEME.md +97 -0
- package/themes/cinematic-dark/tokens.ts +195 -0
- package/themes/classic-car/THEME.md +86 -0
- package/themes/classic-car/tokens.ts +173 -0
- package/themes/cloud-friendly/THEME.md +152 -0
- package/themes/cloud-friendly/tokens.ts +181 -0
- package/themes/community-niche/THEME.md +102 -0
- package/themes/community-niche/tokens.ts +177 -0
- package/themes/corporate-grid/THEME.md +154 -0
- package/themes/corporate-grid/tokens.ts +182 -0
- package/themes/couture-luxury/THEME.md +85 -0
- package/themes/couture-luxury/tokens.ts +146 -0
- package/themes/creator-social/THEME.md +131 -0
- package/themes/creator-social/tokens.ts +249 -0
- package/themes/crypto-onchain/THEME.md +100 -0
- package/themes/crypto-onchain/tokens.ts +207 -0
- package/themes/cycling-brand/THEME.md +78 -0
- package/themes/cycling-brand/tokens.ts +185 -0
- package/themes/dating-friendly/THEME.md +102 -0
- package/themes/dating-friendly/tokens.ts +178 -0
- package/themes/dense-utility/THEME.md +85 -0
- package/themes/dense-utility/tokens.ts +155 -0
- package/themes/devtool-cli/THEME.md +100 -0
- package/themes/devtool-cli/tokens.ts +195 -0
- package/themes/devtool-docs/THEME.md +105 -0
- package/themes/devtool-docs/tokens.ts +177 -0
- package/themes/editorial/THEME.md +129 -0
- package/themes/editorial/audit.log.jsonl +2 -0
- package/themes/editorial/tailwind.snippet.ts +15 -0
- package/themes/editorial/theme.yml +173 -0
- package/themes/editorial/tokens.ts +29 -0
- package/themes/education-formal/THEME.md +154 -0
- package/themes/education-formal/audit.log.jsonl +1 -0
- package/themes/education-formal/tailwind.snippet.ts +15 -0
- package/themes/education-formal/theme.yml +186 -0
- package/themes/education-formal/tokens.ts +29 -0
- package/themes/education-warm/THEME.md +91 -0
- package/themes/education-warm/tokens.ts +185 -0
- package/themes/ember-poster/README.md +79 -0
- package/themes/ember-poster/THEME.md +101 -0
- package/themes/ember-poster/audit.log.jsonl +17 -0
- package/themes/ember-poster/package.json +34 -0
- package/themes/ember-poster/tailwind.snippet.ts +17 -0
- package/themes/ember-poster/theme.yml +109 -0
- package/themes/ember-poster/tokens.ts +27 -0
- package/themes/enterprise-cloud/THEME.md +139 -0
- package/themes/enterprise-cloud/tokens.ts +179 -0
- package/themes/enterprise-tech/.anchor-render.png +0 -0
- package/themes/enterprise-tech/THEME.md +167 -0
- package/themes/enterprise-tech/audit.log.jsonl +1 -0
- package/themes/enterprise-tech/tailwind.snippet.ts +15 -0
- package/themes/enterprise-tech/theme.yml +202 -0
- package/themes/enterprise-tech/tokens.ts +29 -0
- package/themes/ev-charging/THEME.md +94 -0
- package/themes/ev-charging/tokens.ts +185 -0
- package/themes/farm-direct/THEME.md +92 -0
- package/themes/farm-direct/tokens.ts +180 -0
- package/themes/fintech-card/THEME.md +96 -0
- package/themes/fintech-card/tokens.ts +191 -0
- package/themes/fintech-trust/THEME.md +94 -0
- package/themes/fintech-trust/tokens.ts +192 -0
- package/themes/food-blog/THEME.md +98 -0
- package/themes/food-blog/tokens.ts +183 -0
- package/themes/forum-classic/THEME.md +100 -0
- package/themes/forum-classic/tokens.ts +168 -0
- package/themes/fresh-plate/.anchor-render.png +0 -0
- package/themes/fresh-plate/THEME.md +144 -0
- package/themes/fresh-plate/audit.log.jsonl +2 -0
- package/themes/fresh-plate/dismissals.jsonl +3 -0
- package/themes/fresh-plate/tailwind.snippet.ts +16 -0
- package/themes/fresh-plate/theme.yml +189 -0
- package/themes/fresh-plate/tokens.ts +30 -0
- package/themes/furniture-modern/THEME.md +94 -0
- package/themes/furniture-modern/tokens.ts +176 -0
- package/themes/gaming-esports/THEME.md +146 -0
- package/themes/gaming-esports/tokens.ts +199 -0
- package/themes/gaming-streamer/THEME.md +139 -0
- package/themes/gaming-streamer/tokens.ts +201 -0
- package/themes/glassmorphic-modern/THEME.md +119 -0
- package/themes/glassmorphic-modern/tokens.ts +174 -0
- package/themes/government-civic/THEME.md +138 -0
- package/themes/government-civic/tokens.ts +164 -0
- package/themes/gym-chain/THEME.md +79 -0
- package/themes/gym-chain/tokens.ts +196 -0
- package/themes/healthcare-bright/THEME.md +95 -0
- package/themes/healthcare-bright/tokens.ts +184 -0
- package/themes/home-decor/THEME.md +94 -0
- package/themes/home-decor/tokens.ts +177 -0
- package/themes/hotel-boutique/THEME.md +110 -0
- package/themes/hotel-boutique/tokens.ts +179 -0
- package/themes/hyperminimal-mono/THEME.md +91 -0
- package/themes/hyperminimal-mono/tokens.ts +150 -0
- package/themes/indie-art-game/THEME.md +107 -0
- package/themes/indie-art-game/tokens.ts +216 -0
- package/themes/insurance-legacy/THEME.md +101 -0
- package/themes/insurance-legacy/tokens.ts +182 -0
- package/themes/insurance-modern/THEME.md +103 -0
- package/themes/insurance-modern/tokens.ts +192 -0
- package/themes/kaiju-reveal/THEME.md +97 -0
- package/themes/kaiju-reveal/tokens.ts +185 -0
- package/themes/kinetic-data/THEME.md +172 -0
- package/themes/kinetic-data/audit.log.jsonl +1 -0
- package/themes/kinetic-data/tailwind.snippet.ts +16 -0
- package/themes/kinetic-data/theme.yml +207 -0
- package/themes/kinetic-data/tokens.ts +30 -0
- package/themes/kinetic-headline/.anchor-render.png +0 -0
- package/themes/kinetic-headline/BUILD_BRIEF.md +156 -0
- package/themes/kinetic-headline/THEME.md +78 -0
- package/themes/kinetic-headline/audit.log.jsonl +4 -0
- package/themes/kinetic-headline/dismissals.jsonl +1 -0
- package/themes/kinetic-headline/tailwind.snippet.ts +16 -0
- package/themes/kinetic-headline/theme.yml +81 -0
- package/themes/kinetic-headline/tokens.ts +26 -0
- package/themes/law-firm/THEME.md +108 -0
- package/themes/law-firm/tokens.ts +158 -0
- package/themes/lawtech-modern/THEME.md +107 -0
- package/themes/lawtech-modern/tokens.ts +192 -0
- package/themes/linkedin-pro/THEME.md +102 -0
- package/themes/linkedin-pro/tokens.ts +174 -0
- package/themes/logistics-modern/THEME.md +94 -0
- package/themes/logistics-modern/tokens.ts +187 -0
- package/themes/magazine-glossy/THEME.md +74 -0
- package/themes/magazine-glossy/tokens.ts +158 -0
- package/themes/marker-mag/THEME.md +128 -0
- package/themes/marker-mag/audit.log.jsonl +1 -0
- package/themes/marker-mag/tailwind.snippet.ts +15 -0
- package/themes/marker-mag/theme.yml +159 -0
- package/themes/marker-mag/tokens.ts +27 -0
- package/themes/marketplace-modern/THEME.md +135 -0
- package/themes/marketplace-modern/tokens.ts +186 -0
- package/themes/marketplace-vintage/THEME.md +110 -0
- package/themes/marketplace-vintage/tokens.ts +185 -0
- package/themes/maximalist/THEME.md +96 -0
- package/themes/maximalist/tokens.ts +168 -0
- package/themes/mid-century/THEME.md +109 -0
- package/themes/mid-century/tokens.ts +162 -0
- package/themes/motorcycle-brand/THEME.md +86 -0
- package/themes/motorcycle-brand/tokens.ts +174 -0
- package/themes/museum/THEME.md +83 -0
- package/themes/museum/tokens.ts +147 -0
- package/themes/music-streaming/THEME.md +101 -0
- package/themes/music-streaming/tokens.ts +187 -0
- package/themes/music-vinyl/THEME.md +98 -0
- package/themes/music-vinyl/tokens.ts +167 -0
- package/themes/nature-distilled/.anchor-render.png +0 -0
- package/themes/nature-distilled/BUILD_BRIEF.md +158 -0
- package/themes/nature-distilled/THEME.md +81 -0
- package/themes/nature-distilled/audit.log.jsonl +2 -0
- package/themes/nature-distilled/tailwind.snippet.ts +16 -0
- package/themes/nature-distilled/theme.yml +91 -0
- package/themes/nature-distilled/tokens.ts +26 -0
- package/themes/news-tabloid/THEME.md +72 -0
- package/themes/news-tabloid/tokens.ts +158 -0
- package/themes/news-tech/THEME.md +75 -0
- package/themes/news-tech/tokens.ts +149 -0
- package/themes/newsletter/THEME.md +82 -0
- package/themes/newsletter/tokens.ts +138 -0
- package/themes/newspaper-classic/THEME.md +74 -0
- package/themes/newspaper-classic/tokens.ts +159 -0
- package/themes/nonprofit-arts/THEME.md +78 -0
- package/themes/nonprofit-arts/tokens.ts +157 -0
- package/themes/nonprofit-warm/THEME.md +105 -0
- package/themes/nonprofit-warm/tokens.ts +188 -0
- package/themes/outdoor-adventure/THEME.md +113 -0
- package/themes/outdoor-adventure/tokens.ts +181 -0
- package/themes/overland-broadside/THEME.md +119 -0
- package/themes/overland-broadside/audit.log.jsonl +1 -0
- package/themes/overland-broadside/tailwind.snippet.ts +17 -0
- package/themes/overland-broadside/theme.yml +138 -0
- package/themes/overland-broadside/tokens.ts +27 -0
- package/themes/performance-engineered/THEME.md +162 -0
- package/themes/performance-engineered/audit.log.jsonl +1 -0
- package/themes/performance-engineered/tailwind.snippet.ts +15 -0
- package/themes/performance-engineered/theme.yml +193 -0
- package/themes/performance-engineered/tokens.ts +29 -0
- package/themes/pet-food/THEME.md +78 -0
- package/themes/pet-food/tokens.ts +185 -0
- package/themes/pharma-clinical/THEME.md +164 -0
- package/themes/pharma-clinical/audit.log.jsonl +1 -0
- package/themes/pharma-clinical/tailwind.snippet.ts +15 -0
- package/themes/pharma-clinical/theme.yml +201 -0
- package/themes/pharma-clinical/tokens.ts +29 -0
- package/themes/pill-editorial/THEME.md +125 -0
- package/themes/pill-editorial/audit.log.jsonl +1 -0
- package/themes/pill-editorial/tailwind.snippet.ts +15 -0
- package/themes/pill-editorial/theme.yml +168 -0
- package/themes/pill-editorial/tokens.ts +31 -0
- package/themes/podcast-warm/THEME.md +103 -0
- package/themes/podcast-warm/tokens.ts +192 -0
- package/themes/publisher-indie/THEME.md +78 -0
- package/themes/publisher-indie/tokens.ts +148 -0
- package/themes/raw-concrete/BUILD_BRIEF.md +157 -0
- package/themes/raw-concrete/THEME.md +76 -0
- package/themes/raw-concrete/audit.log.jsonl +10 -0
- package/themes/raw-concrete/tailwind.snippet.ts +16 -0
- package/themes/raw-concrete/theme.yml +88 -0
- package/themes/raw-concrete/tokens.ts +27 -0
- package/themes/realestate-luxury/THEME.md +94 -0
- package/themes/realestate-luxury/tokens.ts +169 -0
- package/themes/realestate-marketplace/THEME.md +106 -0
- package/themes/realestate-marketplace/tokens.ts +183 -0
- package/themes/restaurant-modern/THEME.md +109 -0
- package/themes/restaurant-modern/tokens.ts +172 -0
- package/themes/runway-fashion/THEME.md +99 -0
- package/themes/runway-fashion/tokens.ts +167 -0
- package/themes/saturday-morning/THEME.md +117 -0
- package/themes/saturday-morning/tokens.ts +281 -0
- package/themes/schema.ts +235 -0
- package/themes/signal-dark/BUILD_BRIEF.md +168 -0
- package/themes/signal-dark/THEME.md +107 -0
- package/themes/signal-dark/tokens.ts +181 -0
- package/themes/soft-modern/THEME.md +91 -0
- package/themes/soft-modern/tokens.ts +166 -0
- package/themes/solar-residential/THEME.md +92 -0
- package/themes/solar-residential/tokens.ts +176 -0
- package/themes/sports-league/THEME.md +180 -0
- package/themes/sports-league/audit.log.jsonl +1 -0
- package/themes/sports-league/tailwind.snippet.ts +15 -0
- package/themes/sports-league/theme.yml +213 -0
- package/themes/sports-league/tokens.ts +32 -0
- package/themes/stadium-sport/THEME.md +114 -0
- package/themes/stadium-sport/tokens.ts +187 -0
- package/themes/streetwear-hype/THEME.md +100 -0
- package/themes/streetwear-hype/tokens.ts +174 -0
- package/themes/studio-architect/THEME.md +108 -0
- package/themes/studio-architect/tokens.ts +162 -0
- package/themes/studio-photographer/THEME.md +88 -0
- package/themes/studio-photographer/tokens.ts +164 -0
- package/themes/team-kanban/.anchor-render.png +0 -0
- package/themes/team-kanban/THEME.md +167 -0
- package/themes/team-kanban/audit.log.jsonl +2 -0
- package/themes/team-kanban/dismissals.jsonl +1 -0
- package/themes/team-kanban/tailwind.snippet.ts +15 -0
- package/themes/team-kanban/theme.yml +209 -0
- package/themes/team-kanban/tokens.ts +35 -0
- package/themes/telehealth-modern/THEME.md +95 -0
- package/themes/telehealth-modern/tokens.ts +197 -0
- package/themes/tourism-board/THEME.md +111 -0
- package/themes/tourism-board/tokens.ts +173 -0
- package/themes/toys-modern/THEME.md +79 -0
- package/themes/toys-modern/tokens.ts +200 -0
- package/themes/travel-luxury/THEME.md +95 -0
- package/themes/travel-luxury/tokens.ts +162 -0
- package/themes/vacation-rental/THEME.md +105 -0
- package/themes/vacation-rental/tokens.ts +174 -0
- package/themes/vault-reel/THEME.md +134 -0
- package/themes/vault-reel/audit.log.jsonl +3 -0
- package/themes/vault-reel/tailwind.snippet.ts +16 -0
- package/themes/vault-reel/theme.yml +167 -0
- package/themes/vault-reel/tokens.ts +30 -0
- package/themes/vet-modern/THEME.md +79 -0
- package/themes/vet-modern/tokens.ts +194 -0
- package/themes/web3-restraint/THEME.md +87 -0
- package/themes/web3-restraint/tokens.ts +154 -0
- package/themes/wellness-active/THEME.md +102 -0
- package/themes/wellness-active/tokens.ts +203 -0
- package/themes/wellness-spa/THEME.md +93 -0
- package/themes/wellness-spa/tokens.ts +173 -0
- package/themes/y2k-chrome/THEME.md +118 -0
- package/themes/y2k-chrome/tokens.ts +249 -0
- package/themes/yoga-studio/THEME.md +76 -0
- package/themes/yoga-studio/tokens.ts +163 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Kinetic Data
|
|
2
|
+
|
|
3
|
+
> Editorial data-journalism register — FT-pink cream canvas at
|
|
4
|
+
|
|
5
|
+
**Slug:** `kinetic-data` — **Surface:** web — **Density:** balanced
|
|
6
|
+
|
|
7
|
+
## Influence
|
|
8
|
+
|
|
9
|
+
Modern editorial data-journalism (NYT Upshot section at its most
|
|
10
|
+
chart-forward, Financial Times Chart Doctor, Reuters Graphics,
|
|
11
|
+
Bloomberg Businessweek Graphics, ProPublica investigative
|
|
12
|
+
visualizations). Distinct from institutional dashboards through the
|
|
13
|
+
EDITORIAL VOICE + LONG-FORM NARRATIVE + HAND-DRAWN CALLOUT
|
|
14
|
+
ANNOTATIONS + SOURCE-CITATION discipline. The register carries a
|
|
15
|
+
reader through the data with editorial writing, not with an
|
|
16
|
+
interactive product tour.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Signature move
|
|
20
|
+
|
|
21
|
+
FT-pink cream canvas at #fff1e5 — the register's non-negotiable base
|
|
22
|
+
(deliberately warmer than pure cream, distinctly editorial-warm and
|
|
23
|
+
distinctly NOT the pharma cream #f7f3e8 or the Yale ivory #f7f1e0).
|
|
24
|
+
Charcoal ink #333333 (warmer than pure black) with ONE editorial-red
|
|
25
|
+
accent #c8102e used ONLY for chart lines, hand-drawn callout arrows,
|
|
26
|
+
hover states, and pull-quote borders. Sharp corners everywhere.
|
|
27
|
+
|
|
28
|
+
MASTHEAD — a "THE READOUT" serif display wordmark on the left in the
|
|
29
|
+
Playfair-family display at 28px (mixed case, letter-spacing -0.01em,
|
|
30
|
+
drop caps optional), horizontal nav (Charts / Economy / Politics /
|
|
31
|
+
Climate / Newsletter / About) center, filled editorial-red "Subscribe"
|
|
32
|
+
button right-aligned. Shrinks after 200px scroll.
|
|
33
|
+
|
|
34
|
+
LIVE DATA TICKER — a thin band directly below the masthead with 4
|
|
35
|
+
mono numeric readouts updating every 4 seconds (unemployment / market
|
|
36
|
+
close / inflation / consumer sentiment). Format: 'UNEMPLOYMENT · 3.7% ·
|
|
37
|
+
▲ 0.1' in mono with red up/down deltas.
|
|
38
|
+
|
|
39
|
+
CHART OF THE DAY (hero) — a two-column split. LEFT column carries a
|
|
40
|
+
small caps 'CHART OF THE DAY · MARCH 2026' label + big Playfair
|
|
41
|
+
display headline ('When the labor market cooled') + editorial body
|
|
42
|
+
copy in Inter Tight at 16px + author byline. RIGHT column carries a
|
|
43
|
+
MONUMENTAL LINE CHART SVG at ~640x400px — the line draws via
|
|
44
|
+
stroke-dashoffset over 1800ms, then 3 red arrow-and-caption
|
|
45
|
+
ANNOTATIONS fade in pointing to specific data points ('Peak monthly
|
|
46
|
+
additions, February 2024', 'Fed pause, June 2024', 'Latest reading:
|
|
47
|
+
47k below trend'). Chart axis labels in Inter Tight 11px, source line
|
|
48
|
+
in small caps ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026').
|
|
49
|
+
|
|
50
|
+
BY THE NUMBERS — 4-column monumental numeric callout grid. Each
|
|
51
|
+
column: 'Numeric callout (240% / 47k / -12% / 3.7% Playfair display
|
|
52
|
+
at 72px in editorial red) + short caption + source citation'. Numbers
|
|
53
|
+
count up from 0 → target on scroll into view.
|
|
54
|
+
|
|
55
|
+
BAR CHART SECTION — a two-column split. LEFT: Playfair headline
|
|
56
|
+
('Where the jobs actually landed.') + editorial body + methodology
|
|
57
|
+
note. RIGHT: HORIZONTAL BAR CHART SVG at ~560x480px with 8 sectors,
|
|
58
|
+
bars grow from 0 to target width with 80ms per-bar stagger on scroll,
|
|
59
|
+
baseline red rule draws first, longest bar highlighted red with
|
|
60
|
+
numeric label at end of bar.
|
|
61
|
+
|
|
62
|
+
DATA NARRATIVE — long-form editorial paragraphs with INLINE SMALL
|
|
63
|
+
MULTIPLES (mini line charts at 120x60px embedded in the body copy
|
|
64
|
+
as reader-supporting visualizations). Drop-cap on first paragraph in
|
|
65
|
+
Playfair 88px red.
|
|
66
|
+
|
|
67
|
+
AREA CHART SECTION — full-width area chart at ~1200x480px showing a
|
|
68
|
+
historical trend with editorial red area fill revealing via clip-path
|
|
69
|
+
animation. 4 red arrow-and-caption annotations at inflection points.
|
|
70
|
+
Body copy beneath.
|
|
71
|
+
|
|
72
|
+
SMALL MULTIPLES GRID — 8 mini line charts in a 4×2 grid showing the
|
|
73
|
+
same measurement across 8 subjects (regions / industries / countries).
|
|
74
|
+
Each chart has its own line draw + region label + numeric value.
|
|
75
|
+
Stagger reveal 120ms per chart.
|
|
76
|
+
|
|
77
|
+
BYLINE + METHODOLOGY — an inverted white surface with author photo
|
|
78
|
+
(bespoke SVG portrait), author bio, and a small caps 'METHODOLOGY'
|
|
79
|
+
section explaining the data provenance and calculations.
|
|
80
|
+
|
|
81
|
+
NEWSLETTER SUBSCRIBE STRIP — a warm cream inverted band with a
|
|
82
|
+
bespoke SVG chart-worthy illustration + subscribe form with mono
|
|
83
|
+
input placeholder.
|
|
84
|
+
|
|
85
|
+
FOOTER — dark inverted band with a Playfair 'THE READOUT'
|
|
86
|
+
wordmark at ~120px, 4-column utility grid (Editorial / Data / About /
|
|
87
|
+
Newsletter), and a small caps 'A FICTIONAL DAILY DATA-JOURNALISM
|
|
88
|
+
OUTLET' colophon line.
|
|
89
|
+
|
|
90
|
+
Six bespoke SVG marks (arrow-annotation, mini-line-chart, mini-bar-
|
|
91
|
+
chart, callout-bracket, source-citation-mark, byline-mark) drop as
|
|
92
|
+
PUNCTUATION at specific compositional moments, never as a uniform
|
|
93
|
+
icon row.
|
|
94
|
+
|
|
95
|
+
## Palette
|
|
96
|
+
|
|
97
|
+
- **bg:** `#fff1e5`
|
|
98
|
+
- **surface:** `#ffffff`
|
|
99
|
+
- **ink:** `#333333`
|
|
100
|
+
- **accent:** `#c8102e`
|
|
101
|
+
- **secondary:** `#0a5a5a`
|
|
102
|
+
|
|
103
|
+
## Typography
|
|
104
|
+
|
|
105
|
+
- **Display:** An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — "Playfair Display", "PT Serif Display", "Georgia", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em.
|
|
106
|
+
- **Body:** A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — "Inter Tight", Inter, "Söhne", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts.
|
|
107
|
+
- **Mono:** A geometric mono for numeric data readouts and live ticker values — "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment.
|
|
108
|
+
- **Scale:** 1.333 (perfect fourth — comfortable for long-form data journalism with strong hierarchy contrast)
|
|
109
|
+
|
|
110
|
+
## Motion
|
|
111
|
+
|
|
112
|
+
Ships live in the section renderer (no external dependencies):
|
|
113
|
+
1. Hero + Chart of the Day reveal — headline fades in from opacity 0 + translateY(20px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. The line chart draws via SVG stroke-dashoffset from 0 to full path length over 1800ms cubic-bezier immediately after headline lands.
|
|
114
|
+
2. Chart callout annotations — 3 red arrow-and-caption annotations fade in AFTER the chart line finishes drawing, staggered 200ms each. Each annotation is anchored to a specific data point with a hand-drawn arrow.
|
|
115
|
+
3. Live data ticker — 4 numeric readouts at the top of the page cycle their values every 4 seconds via mock event stream (small delta each tick — reads as live-updating BLS-style stats).
|
|
116
|
+
4. Bar chart animation — bars grow from 0 to target height with 80ms per-bar stagger + 700ms cubic-bezier on IntersectionObserver at 35% threshold. Baseline red rule draws first.
|
|
117
|
+
5. Area chart animation — area fill reveals via clip-path animation from left to right over 1600ms cubic-bezier on scroll into view. Line traces along the top edge.
|
|
118
|
+
6. Small multiples grid stagger — 8 small line charts stagger reveal at 120ms per chart, each with its own stroke-dashoffset draw.
|
|
119
|
+
7. Numeric callout counters — 'By the Numbers' section numbers count up from 0 → target on IntersectionObserver at 30% threshold, 2000ms ease-out.
|
|
120
|
+
8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier at 25% threshold.
|
|
121
|
+
9. Nav shrink on scroll after 200px.
|
|
122
|
+
10. prefers-reduced-motion: reduce — all reveals disabled; chart lines show at full stroke; bars at full height; areas fully filled; ticker still updates (state readout); state changes still fire.
|
|
123
|
+
|
|
124
|
+
Motion character: editorial, measured, source-cited. Custom cubic-bezier(0.23,1,0.32,1) for reveals. Never marketing-loud, never product-launch — reads as a data-journalism piece landing, not a SaaS product.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
## Imagery
|
|
128
|
+
|
|
129
|
+
BESPOKE SVG chart illustrations — the reference uses hand-illustrated
|
|
130
|
+
editorial charts (line / bar / area / small multiples) with
|
|
131
|
+
hand-drawn callout annotations and clean typographic axis labels.
|
|
132
|
+
FPO imagery here should read as considered editorial data
|
|
133
|
+
visualization (custom-drawn SVG charts, editorial-red single-hue
|
|
134
|
+
color scheme, small annotation arrows, source-citation lines).
|
|
135
|
+
NO stock chart imagery, NO 3D-rendered chart mockups, NO
|
|
136
|
+
warm-radial-gradient placeholder fills.
|
|
137
|
+
|
|
138
|
+
## Best for
|
|
139
|
+
|
|
140
|
+
- Editorial data-journalism outlets (NYT Upshot / FT Chart Doctor / Reuters Graphics style)
|
|
141
|
+
- Investigative data-forward publications (ProPublica, Bloomberg Businessweek Graphics)
|
|
142
|
+
- Financial-news editorial sites with a data emphasis
|
|
143
|
+
- Think-tank quarterly publications with chart-heavy analysis
|
|
144
|
+
- Government / academic statistical reports (BLS / EU statistics agencies)
|
|
145
|
+
- Data-forward economic newsletters (Stratechery, Money Stuff-style)
|
|
146
|
+
|
|
147
|
+
## Reject if
|
|
148
|
+
|
|
149
|
+
_Director grades each of the following as a pass/fail check. Any violation blocks the theme._
|
|
150
|
+
|
|
151
|
+
- Dark canvas — Kinetic Data's canvas is FT-PINK CREAM #fff1e5. Dark canvas inverts the editorial data-journalism register into a monitoring-dashboard register (which is a different theme — Enterprise Tech).
|
|
152
|
+
- Pure white or claude-cream canvas — #fff1e5 is deliberately WARMER and MORE SATURATED than pure cream, matching FT's distinctive salmon-pink canvas. Swapping to white/pure-cream kills the specific warmth of this base.
|
|
153
|
+
- Sans-serif display — the display face MUST be an editorial serif (Playfair / PT Serif / Georgia fallback). Sans display collapses the register into modern SaaS.
|
|
154
|
+
- Multi-color chart palettes — the whole register's move is ONE editorial-red hue doing all the chart line/annotation/callout work. Introducing blue + green + orange for chart data series collapses the discipline into generic-dashboard slop.
|
|
155
|
+
- Rounded corners on cards, buttons, or chart-container frames — 0px radius everywhere.
|
|
156
|
+
- Static charts with no animation — the register REQUIRES kinetic reveal. Line via stroke-dashoffset, bars via animated height, areas via clip-path. Static rendering collapses the theme's own name.
|
|
157
|
+
- Marketing-loud copy ('game-changing insights', 'unlock your data') — the register requires MEASURED editorial voice. Marketing-loud copy collapses into SaaS slop.
|
|
158
|
+
- 3D-rendered chart mockups or glossy dashboard imagery — visuals must be bespoke SVG editorial charts. 3D renders read as consumer-tech, not editorial journalism.
|
|
159
|
+
- Mono-caps eyebrow labels outside the two legitimate use sites — CHART DESIGNATION markers ('CHART OF THE DAY') and SOURCE citation lines ('SOURCE · US BLS · MARCH 2026') are the ONLY permitted uses. Any additional 'SECTION · X' plate is slop-blocklist violation.
|
|
160
|
+
|
|
161
|
+
## Banned defaults (inherited + theme-specific)
|
|
162
|
+
|
|
163
|
+
- claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is #fff1e5 FT-pink, distinct from claude-cream.
|
|
164
|
+
- void+acid (near-black bg + single bright acid-green or vermilion accent) — canvas is cream, not dark.
|
|
165
|
+
- broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns) — Kinetic Data IS editorial so newspaper columns are legitimate, but hairline rules + 0px radius + newspaper columns must serve the chart-forward register, not fight it.
|
|
166
|
+
- tech-bro purple gradient
|
|
167
|
+
- uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)
|
|
168
|
+
- dark-canvas-inversion (canvas is FT-pink cream. Swapping to dark inverts the editorial data-journalism register into a monitoring-dashboard register.)
|
|
169
|
+
- sans-display-anywhere (editorial serif display is the register's fingerprint. Sans display collapses into SaaS.)
|
|
170
|
+
- multi-color-chart-palettes (ONE editorial-red hue does 100% of the chart accent work. Introducing multi-color chart palettes collapses into generic-dashboard slop.)
|
|
171
|
+
- static-charts (the register's own name — kinetic — requires kinetic chart reveals. Static charts fail the register.)
|
|
172
|
+
- 3d-chart-mockups (charts must be bespoke SVG editorial illustrations. 3D renders read as consumer-tech.)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"slug":"kinetic-data","gates":[{"gate":"slop-blocklist","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T05:59:43.467Z","dismissed":[]},{"gate":"regression-scan","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T05:59:43.478Z","dismissed":[]},{"gate":"avoid-rubric","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-05T06:00:21.381Z","dismissed":[]},{"gate":"anchor-compare","verdict":{"passed":true,"failures":[],"skipped":"Family C rubric.md missing at /Users/mattfrischer/Taste/site/design-system/golden-set/C/rubric.md — anchor-compare skipped."},"ran_at":"2026-07-05T06:00:21.381Z","dismissed":[]}],"overall":"PASS","ran_at":"2026-07-05T05:59:43.467Z"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Generated from theme.yml. Merge into your tailwind.config.ts under theme.extend.
|
|
2
|
+
// slug: kinetic-data
|
|
3
|
+
export const kineticDataTailwindExtend = {
|
|
4
|
+
colors: {
|
|
5
|
+
bg: "#fff1e5",
|
|
6
|
+
surface: "#ffffff",
|
|
7
|
+
ink: "#333333",
|
|
8
|
+
accent: "#c8102e",
|
|
9
|
+
secondary: "#0a5a5a",
|
|
10
|
+
},
|
|
11
|
+
fontFamily: {
|
|
12
|
+
display: ["An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — \"Playfair Display\", \"PT Serif Display\", \"Georgia\", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em."],
|
|
13
|
+
body: ["A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — \"Inter Tight\", Inter, \"Söhne\", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts."],
|
|
14
|
+
mono: ["A geometric mono for numeric data readouts and live ticker values — \"IBM Plex Mono\", \"JetBrains Mono\", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment."],
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Kinetic Data — Family C, Editorial & Print (data-journalism subregion).
|
|
2
|
+
#
|
|
3
|
+
# NYT Upshot / FT Chart Doctor-anchored editorial data journalism.
|
|
4
|
+
# FT-pink cream canvas at #fff1e5 + charcoal ink (#333333) + ONE
|
|
5
|
+
# editorial-red accent (#c8102e) used for chart lines, annotations,
|
|
6
|
+
# and callout arrows. Editorial display serif + sans body pair (NYT
|
|
7
|
+
# Cheltenham + Franklin fallback: Playfair + Inter). Custom animated
|
|
8
|
+
# charts (line / bar / area / small multiples) with drawn callout
|
|
9
|
+
# annotations pointing to specific data points. Sharp corners
|
|
10
|
+
# everywhere.
|
|
11
|
+
#
|
|
12
|
+
# Influence anchor: New York Times Upshot section + Financial Times
|
|
13
|
+
# Chart Doctor + Reuters Graphics. Placeholder brand: "THE READOUT" —
|
|
14
|
+
# a fictional daily data-journalism outlet.
|
|
15
|
+
#
|
|
16
|
+
# Distinct from other Family C bases:
|
|
17
|
+
# - Editorial (v2) is Aperture photography-first quarterly
|
|
18
|
+
# - Pharma Clinical is Genentech warm-professional pharma
|
|
19
|
+
# - Education Formal is Yale institutional (dark navy)
|
|
20
|
+
# - Ember Poster is warm-dark editorial with hand-drawn ornaments
|
|
21
|
+
# - Cabana Poster is vintage travel-poster warmth
|
|
22
|
+
# Kinetic Data fills the EDITORIAL DATA JOURNALISM slot — chart-forward
|
|
23
|
+
# editorial magazine with animated data reveals, monumental numeric
|
|
24
|
+
# callouts, and a live data ticker.
|
|
25
|
+
#
|
|
26
|
+
# Twentieth theme via the v2 harness. Ninth Family C theme.
|
|
27
|
+
# Upgrade of the existing v1 archetype-fallback slug.
|
|
28
|
+
|
|
29
|
+
name: Kinetic Data
|
|
30
|
+
concept: Editorial data-journalism register — FT-pink cream canvas at #fff1e5 with charcoal ink and ONE editorial-red accent used for chart lines, annotations, and callout arrows. Editorial display serif for headlines paired with sans body for chart labels. Custom animated line / bar / area / small-multiples charts drawn via SVG stroke-dashoffset and animated fill-height, with hand-drawn callout annotations pointing to specific data points. Live data ticker at the top updating every 4s, monumental numeric callouts ('240%' 'k' style) at Chart of the Day scale, and a long-form data narrative with inline small multiples. Reads like an NYT Upshot / FT Chart Doctor feature — measured, source-cited, chart-anchored.
|
|
31
|
+
influence: |
|
|
32
|
+
Modern editorial data-journalism (NYT Upshot section at its most
|
|
33
|
+
chart-forward, Financial Times Chart Doctor, Reuters Graphics,
|
|
34
|
+
Bloomberg Businessweek Graphics, ProPublica investigative
|
|
35
|
+
visualizations). Distinct from institutional dashboards through the
|
|
36
|
+
EDITORIAL VOICE + LONG-FORM NARRATIVE + HAND-DRAWN CALLOUT
|
|
37
|
+
ANNOTATIONS + SOURCE-CITATION discipline. The register carries a
|
|
38
|
+
reader through the data with editorial writing, not with an
|
|
39
|
+
interactive product tour.
|
|
40
|
+
|
|
41
|
+
family: C
|
|
42
|
+
base_number: 34
|
|
43
|
+
base_note: |
|
|
44
|
+
Family C editorial subregion, DATA-JOURNALISM slot. Distinct from
|
|
45
|
+
other Family C editorial bases through the CHART-FORWARD composition
|
|
46
|
+
(every section anchored by a custom SVG chart), the ANIMATED CHART
|
|
47
|
+
DRAWING signature (line via stroke-dashoffset, bars via animated
|
|
48
|
+
height, areas via clipPath), the HAND-DRAWN CALLOUT ANNOTATIONS
|
|
49
|
+
(small red arrows pointing to specific data points with editorial
|
|
50
|
+
captions), and the LIVE DATA TICKER at the top. Editorial v2 is
|
|
51
|
+
photography-first; Kinetic Data is chart-first. Upgrade of the
|
|
52
|
+
existing v1 kinetic-data slug from archetype-fallback.
|
|
53
|
+
|
|
54
|
+
render_url: http://localhost:5173/themes/kinetic-data
|
|
55
|
+
|
|
56
|
+
surface: web
|
|
57
|
+
|
|
58
|
+
typography:
|
|
59
|
+
display: An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — "Playfair Display", "PT Serif Display", "Georgia", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em.
|
|
60
|
+
body: A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — "Inter Tight", Inter, "Söhne", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts.
|
|
61
|
+
mono: A geometric mono for numeric data readouts and live ticker values — "IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment.
|
|
62
|
+
scale: 1.333 (perfect fourth — comfortable for long-form data journalism with strong hierarchy contrast)
|
|
63
|
+
eyebrow_exception: |
|
|
64
|
+
Kinetic Data LEGITIMATELY uses two small-caps use sites — CHART DESIGNATION markers ('CHART OF THE DAY' / 'BY THE NUMBERS' / 'MEASURED') and SOURCE citation lines ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026'). These are DIEGETIC editorial-newspaper markers (chart-designation labels + source citations), not decorative eyebrow slop.
|
|
65
|
+
|
|
66
|
+
palette:
|
|
67
|
+
bg: "#fff1e5" # canvas — FT-pink cream, distinctive editorial warmth
|
|
68
|
+
surface: "#ffffff" # raised white panel for chart backgrounds
|
|
69
|
+
ink: "#333333" # charcoal ink (warmer than pure black — editorial reading)
|
|
70
|
+
accent: "#c8102e" # editorial red — chart lines, annotations, callouts
|
|
71
|
+
cream: "#fff1e5" # alias for bg
|
|
72
|
+
darkInk: "#0a0a0a" # near-black for masthead + inverted band
|
|
73
|
+
mute: "#8a8580" # dimmed warm-gray for captions, chart axis labels
|
|
74
|
+
secondary: "#0a5a5a" # deep teal — secondary chart data series (used sparingly)
|
|
75
|
+
|
|
76
|
+
density: balanced
|
|
77
|
+
|
|
78
|
+
motion: |
|
|
79
|
+
Ships live in the section renderer (no external dependencies):
|
|
80
|
+
1. Hero + Chart of the Day reveal — headline fades in from opacity 0 + translateY(20px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. The line chart draws via SVG stroke-dashoffset from 0 to full path length over 1800ms cubic-bezier immediately after headline lands.
|
|
81
|
+
2. Chart callout annotations — 3 red arrow-and-caption annotations fade in AFTER the chart line finishes drawing, staggered 200ms each. Each annotation is anchored to a specific data point with a hand-drawn arrow.
|
|
82
|
+
3. Live data ticker — 4 numeric readouts at the top of the page cycle their values every 4 seconds via mock event stream (small delta each tick — reads as live-updating BLS-style stats).
|
|
83
|
+
4. Bar chart animation — bars grow from 0 to target height with 80ms per-bar stagger + 700ms cubic-bezier on IntersectionObserver at 35% threshold. Baseline red rule draws first.
|
|
84
|
+
5. Area chart animation — area fill reveals via clip-path animation from left to right over 1600ms cubic-bezier on scroll into view. Line traces along the top edge.
|
|
85
|
+
6. Small multiples grid stagger — 8 small line charts stagger reveal at 120ms per chart, each with its own stroke-dashoffset draw.
|
|
86
|
+
7. Numeric callout counters — 'By the Numbers' section numbers count up from 0 → target on IntersectionObserver at 30% threshold, 2000ms ease-out.
|
|
87
|
+
8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier at 25% threshold.
|
|
88
|
+
9. Nav shrink on scroll after 200px.
|
|
89
|
+
10. prefers-reduced-motion: reduce — all reveals disabled; chart lines show at full stroke; bars at full height; areas fully filled; ticker still updates (state readout); state changes still fire.
|
|
90
|
+
|
|
91
|
+
Motion character: editorial, measured, source-cited. Custom cubic-bezier(0.23,1,0.32,1) for reveals. Never marketing-loud, never product-launch — reads as a data-journalism piece landing, not a SaaS product.
|
|
92
|
+
|
|
93
|
+
signature: |
|
|
94
|
+
FT-pink cream canvas at #fff1e5 — the register's non-negotiable base
|
|
95
|
+
(deliberately warmer than pure cream, distinctly editorial-warm and
|
|
96
|
+
distinctly NOT the pharma cream #f7f3e8 or the Yale ivory #f7f1e0).
|
|
97
|
+
Charcoal ink #333333 (warmer than pure black) with ONE editorial-red
|
|
98
|
+
accent #c8102e used ONLY for chart lines, hand-drawn callout arrows,
|
|
99
|
+
hover states, and pull-quote borders. Sharp corners everywhere.
|
|
100
|
+
|
|
101
|
+
MASTHEAD — a "THE READOUT" serif display wordmark on the left in the
|
|
102
|
+
Playfair-family display at 28px (mixed case, letter-spacing -0.01em,
|
|
103
|
+
drop caps optional), horizontal nav (Charts / Economy / Politics /
|
|
104
|
+
Climate / Newsletter / About) center, filled editorial-red "Subscribe"
|
|
105
|
+
button right-aligned. Shrinks after 200px scroll.
|
|
106
|
+
|
|
107
|
+
LIVE DATA TICKER — a thin band directly below the masthead with 4
|
|
108
|
+
mono numeric readouts updating every 4 seconds (unemployment / market
|
|
109
|
+
close / inflation / consumer sentiment). Format: 'UNEMPLOYMENT · 3.7% ·
|
|
110
|
+
▲ 0.1' in mono with red up/down deltas.
|
|
111
|
+
|
|
112
|
+
CHART OF THE DAY (hero) — a two-column split. LEFT column carries a
|
|
113
|
+
small caps 'CHART OF THE DAY · MARCH 2026' label + big Playfair
|
|
114
|
+
display headline ('When the labor market cooled') + editorial body
|
|
115
|
+
copy in Inter Tight at 16px + author byline. RIGHT column carries a
|
|
116
|
+
MONUMENTAL LINE CHART SVG at ~640x400px — the line draws via
|
|
117
|
+
stroke-dashoffset over 1800ms, then 3 red arrow-and-caption
|
|
118
|
+
ANNOTATIONS fade in pointing to specific data points ('Peak monthly
|
|
119
|
+
additions, February 2024', 'Fed pause, June 2024', 'Latest reading:
|
|
120
|
+
47k below trend'). Chart axis labels in Inter Tight 11px, source line
|
|
121
|
+
in small caps ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026').
|
|
122
|
+
|
|
123
|
+
BY THE NUMBERS — 4-column monumental numeric callout grid. Each
|
|
124
|
+
column: 'Numeric callout (240% / 47k / -12% / 3.7% Playfair display
|
|
125
|
+
at 72px in editorial red) + short caption + source citation'. Numbers
|
|
126
|
+
count up from 0 → target on scroll into view.
|
|
127
|
+
|
|
128
|
+
BAR CHART SECTION — a two-column split. LEFT: Playfair headline
|
|
129
|
+
('Where the jobs actually landed.') + editorial body + methodology
|
|
130
|
+
note. RIGHT: HORIZONTAL BAR CHART SVG at ~560x480px with 8 sectors,
|
|
131
|
+
bars grow from 0 to target width with 80ms per-bar stagger on scroll,
|
|
132
|
+
baseline red rule draws first, longest bar highlighted red with
|
|
133
|
+
numeric label at end of bar.
|
|
134
|
+
|
|
135
|
+
DATA NARRATIVE — long-form editorial paragraphs with INLINE SMALL
|
|
136
|
+
MULTIPLES (mini line charts at 120x60px embedded in the body copy
|
|
137
|
+
as reader-supporting visualizations). Drop-cap on first paragraph in
|
|
138
|
+
Playfair 88px red.
|
|
139
|
+
|
|
140
|
+
AREA CHART SECTION — full-width area chart at ~1200x480px showing a
|
|
141
|
+
historical trend with editorial red area fill revealing via clip-path
|
|
142
|
+
animation. 4 red arrow-and-caption annotations at inflection points.
|
|
143
|
+
Body copy beneath.
|
|
144
|
+
|
|
145
|
+
SMALL MULTIPLES GRID — 8 mini line charts in a 4×2 grid showing the
|
|
146
|
+
same measurement across 8 subjects (regions / industries / countries).
|
|
147
|
+
Each chart has its own line draw + region label + numeric value.
|
|
148
|
+
Stagger reveal 120ms per chart.
|
|
149
|
+
|
|
150
|
+
BYLINE + METHODOLOGY — an inverted white surface with author photo
|
|
151
|
+
(bespoke SVG portrait), author bio, and a small caps 'METHODOLOGY'
|
|
152
|
+
section explaining the data provenance and calculations.
|
|
153
|
+
|
|
154
|
+
NEWSLETTER SUBSCRIBE STRIP — a warm cream inverted band with a
|
|
155
|
+
bespoke SVG chart-worthy illustration + subscribe form with mono
|
|
156
|
+
input placeholder.
|
|
157
|
+
|
|
158
|
+
FOOTER — dark inverted band with a Playfair 'THE READOUT'
|
|
159
|
+
wordmark at ~120px, 4-column utility grid (Editorial / Data / About /
|
|
160
|
+
Newsletter), and a small caps 'A FICTIONAL DAILY DATA-JOURNALISM
|
|
161
|
+
OUTLET' colophon line.
|
|
162
|
+
|
|
163
|
+
Six bespoke SVG marks (arrow-annotation, mini-line-chart, mini-bar-
|
|
164
|
+
chart, callout-bracket, source-citation-mark, byline-mark) drop as
|
|
165
|
+
PUNCTUATION at specific compositional moments, never as a uniform
|
|
166
|
+
icon row.
|
|
167
|
+
|
|
168
|
+
imagery: |
|
|
169
|
+
BESPOKE SVG chart illustrations — the reference uses hand-illustrated
|
|
170
|
+
editorial charts (line / bar / area / small multiples) with
|
|
171
|
+
hand-drawn callout annotations and clean typographic axis labels.
|
|
172
|
+
FPO imagery here should read as considered editorial data
|
|
173
|
+
visualization (custom-drawn SVG charts, editorial-red single-hue
|
|
174
|
+
color scheme, small annotation arrows, source-citation lines).
|
|
175
|
+
NO stock chart imagery, NO 3D-rendered chart mockups, NO
|
|
176
|
+
warm-radial-gradient placeholder fills.
|
|
177
|
+
|
|
178
|
+
best_for:
|
|
179
|
+
- Editorial data-journalism outlets (NYT Upshot / FT Chart Doctor / Reuters Graphics style)
|
|
180
|
+
- Investigative data-forward publications (ProPublica, Bloomberg Businessweek Graphics)
|
|
181
|
+
- Financial-news editorial sites with a data emphasis
|
|
182
|
+
- Think-tank quarterly publications with chart-heavy analysis
|
|
183
|
+
- Government / academic statistical reports (BLS / EU statistics agencies)
|
|
184
|
+
- Data-forward economic newsletters (Stratechery, Money Stuff-style)
|
|
185
|
+
|
|
186
|
+
avoid:
|
|
187
|
+
- "Dark canvas — Kinetic Data's canvas is FT-PINK CREAM #fff1e5. Dark canvas inverts the editorial data-journalism register into a monitoring-dashboard register (which is a different theme — Enterprise Tech)."
|
|
188
|
+
- "Pure white or claude-cream canvas — #fff1e5 is deliberately WARMER and MORE SATURATED than pure cream, matching FT's distinctive salmon-pink canvas. Swapping to white/pure-cream kills the specific warmth of this base."
|
|
189
|
+
- "Sans-serif display — the display face MUST be an editorial serif (Playfair / PT Serif / Georgia fallback). Sans display collapses the register into modern SaaS."
|
|
190
|
+
- "Multi-color chart palettes — the whole register's move is ONE editorial-red hue doing all the chart line/annotation/callout work. Introducing blue + green + orange for chart data series collapses the discipline into generic-dashboard slop."
|
|
191
|
+
- "Rounded corners on cards, buttons, or chart-container frames — 0px radius everywhere."
|
|
192
|
+
- "Static charts with no animation — the register REQUIRES kinetic reveal. Line via stroke-dashoffset, bars via animated height, areas via clip-path. Static rendering collapses the theme's own name."
|
|
193
|
+
- "Marketing-loud copy ('game-changing insights', 'unlock your data') — the register requires MEASURED editorial voice. Marketing-loud copy collapses into SaaS slop."
|
|
194
|
+
- "3D-rendered chart mockups or glossy dashboard imagery — visuals must be bespoke SVG editorial charts. 3D renders read as consumer-tech, not editorial journalism."
|
|
195
|
+
- "Mono-caps eyebrow labels outside the two legitimate use sites — CHART DESIGNATION markers ('CHART OF THE DAY') and SOURCE citation lines ('SOURCE · US BLS · MARCH 2026') are the ONLY permitted uses. Any additional 'SECTION · X' plate is slop-blocklist violation."
|
|
196
|
+
|
|
197
|
+
banned_defaults:
|
|
198
|
+
- "claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is #fff1e5 FT-pink, distinct from claude-cream."
|
|
199
|
+
- "void+acid (near-black bg + single bright acid-green or vermilion accent) — canvas is cream, not dark."
|
|
200
|
+
- "broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns) — Kinetic Data IS editorial so newspaper columns are legitimate, but hairline rules + 0px radius + newspaper columns must serve the chart-forward register, not fight it."
|
|
201
|
+
- "tech-bro purple gradient"
|
|
202
|
+
- "uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)"
|
|
203
|
+
- "dark-canvas-inversion (canvas is FT-pink cream. Swapping to dark inverts the editorial data-journalism register into a monitoring-dashboard register.)"
|
|
204
|
+
- "sans-display-anywhere (editorial serif display is the register's fingerprint. Sans display collapses into SaaS.)"
|
|
205
|
+
- "multi-color-chart-palettes (ONE editorial-red hue does 100% of the chart accent work. Introducing multi-color chart palettes collapses into generic-dashboard slop.)"
|
|
206
|
+
- "static-charts (the register's own name — kinetic — requires kinetic chart reveals. Static charts fail the register.)"
|
|
207
|
+
- "3d-chart-mockups (charts must be bespoke SVG editorial illustrations. 3D renders read as consumer-tech.)"
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Generated from theme.yml. Do not edit by hand — edit theme.yml + re-materialize.
|
|
2
|
+
|
|
3
|
+
export const tokens = {
|
|
4
|
+
slug: "kinetic-data",
|
|
5
|
+
family: "C",
|
|
6
|
+
base: "34",
|
|
7
|
+
palette: {
|
|
8
|
+
"bg": "#fff1e5",
|
|
9
|
+
"surface": "#ffffff",
|
|
10
|
+
"ink": "#333333",
|
|
11
|
+
"accent": "#c8102e",
|
|
12
|
+
"cream": "#fff1e5",
|
|
13
|
+
"darkInk": "#0a0a0a",
|
|
14
|
+
"mute": "#8a8580",
|
|
15
|
+
"secondary": "#0a5a5a"
|
|
16
|
+
},
|
|
17
|
+
typography: {
|
|
18
|
+
"display": "An editorial display serif with strong stress contrast and a hint of newspaper masthead character — the reference uses NYT Cheltenham / FT Financier. Free fallback stack — \"Playfair Display\", \"PT Serif Display\", \"Georgia\", serif. Weight 700-900, mixed case for section titles and Chart of the Day headline (NEVER uppercase — collapses newspaper feel), small-caps only for section markers. Top of scale ~72px hero headline, 48px section titles, 32px chart-of-the-day title. Letter-spacing -0.01em.",
|
|
19
|
+
"body": "A tight sans for body copy and chart labels — the reference uses NYT Franklin / FT Metric. Free fallback stack — \"Inter Tight\", Inter, \"Söhne\", system-ui, sans-serif. Weight 400 for body copy at 16px 1.65 line-height (generous for long-form data journalism reading), 500 for chart axis labels + small caps section markers, 600 for numeric callouts.",
|
|
20
|
+
"mono": "A geometric mono for numeric data readouts and live ticker values — \"IBM Plex Mono\", \"JetBrains Mono\", ui-monospace, monospace. Weight 400-500, 11-14px. LEGITIMATE here because live-ticker data readouts require tabular alignment.",
|
|
21
|
+
"scale": "1.333 (perfect fourth — comfortable for long-form data journalism with strong hierarchy contrast)",
|
|
22
|
+
"eyebrow_exception": "Kinetic Data LEGITIMATELY uses two small-caps use sites — CHART DESIGNATION markers ('CHART OF THE DAY' / 'BY THE NUMBERS' / 'MEASURED') and SOURCE citation lines ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026'). These are DIEGETIC editorial-newspaper markers (chart-designation labels + source citations), not decorative eyebrow slop.\n"
|
|
23
|
+
},
|
|
24
|
+
surface: "web",
|
|
25
|
+
density: "balanced",
|
|
26
|
+
motion: "Ships live in the section renderer (no external dependencies):\n1. Hero + Chart of the Day reveal — headline fades in from opacity 0 + translateY(20px) over 800ms cubic-bezier(0.23,1,0.32,1) on first paint. The line chart draws via SVG stroke-dashoffset from 0 to full path length over 1800ms cubic-bezier immediately after headline lands.\n2. Chart callout annotations — 3 red arrow-and-caption annotations fade in AFTER the chart line finishes drawing, staggered 200ms each. Each annotation is anchored to a specific data point with a hand-drawn arrow.\n3. Live data ticker — 4 numeric readouts at the top of the page cycle their values every 4 seconds via mock event stream (small delta each tick — reads as live-updating BLS-style stats).\n4. Bar chart animation — bars grow from 0 to target height with 80ms per-bar stagger + 700ms cubic-bezier on IntersectionObserver at 35% threshold. Baseline red rule draws first.\n5. Area chart animation — area fill reveals via clip-path animation from left to right over 1600ms cubic-bezier on scroll into view. Line traces along the top edge.\n6. Small multiples grid stagger — 8 small line charts stagger reveal at 120ms per chart, each with its own stroke-dashoffset draw.\n7. Numeric callout counters — 'By the Numbers' section numbers count up from 0 → target on IntersectionObserver at 30% threshold, 2000ms ease-out.\n8. Section reveals — each below-fold section fades in from opacity 0 + translateY(24px) → 0 over 700ms cubic-bezier at 25% threshold.\n9. Nav shrink on scroll after 200px.\n10. prefers-reduced-motion: reduce — all reveals disabled; chart lines show at full stroke; bars at full height; areas fully filled; ticker still updates (state readout); state changes still fire.\n\nMotion character: editorial, measured, source-cited. Custom cubic-bezier(0.23,1,0.32,1) for reveals. Never marketing-loud, never product-launch — reads as a data-journalism piece landing, not a SaaS product.\n",
|
|
27
|
+
signature: "FT-pink cream canvas at #fff1e5 — the register's non-negotiable base\n(deliberately warmer than pure cream, distinctly editorial-warm and\ndistinctly NOT the pharma cream #f7f3e8 or the Yale ivory #f7f1e0).\nCharcoal ink #333333 (warmer than pure black) with ONE editorial-red\naccent #c8102e used ONLY for chart lines, hand-drawn callout arrows,\nhover states, and pull-quote borders. Sharp corners everywhere.\n\nMASTHEAD — a \"THE READOUT\" serif display wordmark on the left in the\nPlayfair-family display at 28px (mixed case, letter-spacing -0.01em,\ndrop caps optional), horizontal nav (Charts / Economy / Politics /\nClimate / Newsletter / About) center, filled editorial-red \"Subscribe\"\nbutton right-aligned. Shrinks after 200px scroll.\n\nLIVE DATA TICKER — a thin band directly below the masthead with 4\nmono numeric readouts updating every 4 seconds (unemployment / market\nclose / inflation / consumer sentiment). Format: 'UNEMPLOYMENT · 3.7% ·\n▲ 0.1' in mono with red up/down deltas.\n\nCHART OF THE DAY (hero) — a two-column split. LEFT column carries a\nsmall caps 'CHART OF THE DAY · MARCH 2026' label + big Playfair\ndisplay headline ('When the labor market cooled') + editorial body\ncopy in Inter Tight at 16px + author byline. RIGHT column carries a\nMONUMENTAL LINE CHART SVG at ~640x400px — the line draws via\nstroke-dashoffset over 1800ms, then 3 red arrow-and-caption\nANNOTATIONS fade in pointing to specific data points ('Peak monthly\nadditions, February 2024', 'Fed pause, June 2024', 'Latest reading:\n47k below trend'). Chart axis labels in Inter Tight 11px, source line\nin small caps ('SOURCE · US BUREAU OF LABOR STATISTICS · MARCH 2026').\n\nBY THE NUMBERS — 4-column monumental numeric callout grid. Each\ncolumn: 'Numeric callout (240% / 47k / -12% / 3.7% Playfair display\nat 72px in editorial red) + short caption + source citation'. Numbers\ncount up from 0 → target on scroll into view.\n\nBAR CHART SECTION — a two-column split. LEFT: Playfair headline\n('Where the jobs actually landed.') + editorial body + methodology\nnote. RIGHT: HORIZONTAL BAR CHART SVG at ~560x480px with 8 sectors,\nbars grow from 0 to target width with 80ms per-bar stagger on scroll,\nbaseline red rule draws first, longest bar highlighted red with\nnumeric label at end of bar.\n\nDATA NARRATIVE — long-form editorial paragraphs with INLINE SMALL\nMULTIPLES (mini line charts at 120x60px embedded in the body copy\nas reader-supporting visualizations). Drop-cap on first paragraph in\nPlayfair 88px red.\n\nAREA CHART SECTION — full-width area chart at ~1200x480px showing a\nhistorical trend with editorial red area fill revealing via clip-path\nanimation. 4 red arrow-and-caption annotations at inflection points.\nBody copy beneath.\n\nSMALL MULTIPLES GRID — 8 mini line charts in a 4×2 grid showing the\nsame measurement across 8 subjects (regions / industries / countries).\nEach chart has its own line draw + region label + numeric value.\nStagger reveal 120ms per chart.\n\nBYLINE + METHODOLOGY — an inverted white surface with author photo\n(bespoke SVG portrait), author bio, and a small caps 'METHODOLOGY'\nsection explaining the data provenance and calculations.\n\nNEWSLETTER SUBSCRIBE STRIP — a warm cream inverted band with a\nbespoke SVG chart-worthy illustration + subscribe form with mono\ninput placeholder.\n\nFOOTER — dark inverted band with a Playfair 'THE READOUT'\nwordmark at ~120px, 4-column utility grid (Editorial / Data / About /\nNewsletter), and a small caps 'A FICTIONAL DAILY DATA-JOURNALISM\nOUTLET' colophon line.\n\nSix bespoke SVG marks (arrow-annotation, mini-line-chart, mini-bar-\nchart, callout-bracket, source-citation-mark, byline-mark) drop as\nPUNCTUATION at specific compositional moments, never as a uniform\nicon row.\n",
|
|
28
|
+
} as const;
|
|
29
|
+
|
|
30
|
+
export type Tokens = typeof tokens;
|
|
Binary file
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Kinetic-Headline — Build Brief
|
|
2
|
+
|
|
3
|
+
> The contract this theme ships with. Read at commit time by the
|
|
4
|
+
> brief-enforcer subagent; handed to Claude Code via the Copy-for-Claude
|
|
5
|
+
> button on the theme detail page.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## MANDATORY BUILD DIRECTIVE — you MUST
|
|
10
|
+
|
|
11
|
+
1. **Hold the paper canvas** — dark `#0B0B0F` on the dark canvas, cotton
|
|
12
|
+
`#FAFAFA` on the light canvas. Never pure black. Never pure white.
|
|
13
|
+
The canvas toggle swaps between them; the SIGNAL variant is
|
|
14
|
+
independent.
|
|
15
|
+
2. **Use ONE accent color per page** — the palette variant. The accent
|
|
16
|
+
is used ONLY for: the studio "Say hello" nav CTA border + text, the
|
|
17
|
+
selected-work highlight, one link border in the body. Nothing else.
|
|
18
|
+
3. **Set the hero display at the theme's variable-weight range:**
|
|
19
|
+
`fontFamily: "Bricolage Grotesque Variable"` (or `Neue Haas Grotesk
|
|
20
|
+
Display` fallback) with `font-variation-settings: 'wght' 400 → 700`
|
|
21
|
+
morphing on paint. `clamp(3rem, 8vw, 8rem)`, tracking -0.03em.
|
|
22
|
+
4. **Restraint everywhere else.** Body copy in Uncut Sans / Inter at
|
|
23
|
+
17px line-height 1.55. No mono anywhere as decorative label. Mono
|
|
24
|
+
permitted ONLY for the "sixty-second install" microcopy pattern
|
|
25
|
+
(code-shaped things).
|
|
26
|
+
5. **Single-column body** — hero content stays under 900px max-width.
|
|
27
|
+
Multi-column layout ONLY on the "Selected work" project list and
|
|
28
|
+
"Recognition" awards strip.
|
|
29
|
+
6. **Real Pexels photos for the featured-project and portrait bands.**
|
|
30
|
+
No SVG stand-ins for photo-worthy subjects. Photos: workspace
|
|
31
|
+
(project section), designer-at-monitor (portrait section), abstract
|
|
32
|
+
typography (recognition), each shot at 3:2 or 16:9.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## SLOP-BLOCKLIST — you MUST NOT
|
|
37
|
+
|
|
38
|
+
- **Mono-caps decorative eyebrows** (`FEATURED · X`, `SELECTED WORK`,
|
|
39
|
+
`THE STUDIO`). CSS fingerprint: `textTransform: uppercase` +
|
|
40
|
+
`letterSpacing ≥ 0.14em` at `fontSize < 20px`. Not on this theme's
|
|
41
|
+
chrome inventory.
|
|
42
|
+
- **Dot-separated decorative metadata** in visible copy
|
|
43
|
+
(`Featured · Herald Financial · 2026`, `Founded · Team · Location`).
|
|
44
|
+
Content-level `·` inside prose (e.g. `Zurich, Switzerland`) is fine.
|
|
45
|
+
- **`№` / N.º / no. / vol. ornaments.**
|
|
46
|
+
- **Auto-advancing hero sliders** (setInterval < 6s mutating a headline
|
|
47
|
+
word or image); **cycling headline words** (`we [design][build][ship]`).
|
|
48
|
+
- **3-pillar identical feature-card grids** as the marketing spine.
|
|
49
|
+
The Selected Work section is a LIST of projects, not a grid of
|
|
50
|
+
identical pillars.
|
|
51
|
+
- **Ticker bars** or horizontal marquees.
|
|
52
|
+
- **Vague trust copy:** hand-crafted, thoughtfully-made, considered,
|
|
53
|
+
for-teams-that-care.
|
|
54
|
+
- **Roman-numeral copyright** (`MMXXVI`).
|
|
55
|
+
- **Attribution of influence in visible copy** — Studio Feixen,
|
|
56
|
+
Pentagram, Base Design, MUBI can be studied but never NAMED in
|
|
57
|
+
slug, copy, or UI.
|
|
58
|
+
- **A second accent color** for hover / focus / status. There's ONE
|
|
59
|
+
accent per page.
|
|
60
|
+
- **Warm-glow radial gradients** as image fallbacks (Stripe/Linear
|
|
61
|
+
AI-default slop).
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## CHROME INVENTORY — the allow-list
|
|
66
|
+
|
|
67
|
+
- **Sticky palette + canvas picker strip** — meta-UI at the top; the
|
|
68
|
+
brief-enforcer treats picker labels as picker chrome, not theme
|
|
69
|
+
composition. Labels use body font, sentence-case, no letter-spacing.
|
|
70
|
+
- **Masthead nav** — brand mark (small filled square in accent) +
|
|
71
|
+
studio wordmark (Bricolage 700 at 18px, letter-spacing -0.02em) +
|
|
72
|
+
4 nav items (body font, sentence-case, 14px) + 1 accent-bordered
|
|
73
|
+
"Say hello" CTA (accent border + accent text, no fill).
|
|
74
|
+
- **Variable-weight morphing hero** — display at clamp(3rem, 8vw,
|
|
75
|
+
8rem), `font-variation-settings: 'wght' 400 → 700` transition on
|
|
76
|
+
paint, tracking -0.03em, one line-break max.
|
|
77
|
+
- **Featured-project section** — real photo (3:2) + display h2 for
|
|
78
|
+
project title + body copy + "View case study →" ghost link with
|
|
79
|
+
accent underline. NOT a card, NOT a grid tile.
|
|
80
|
+
- **Selected-work list** — vertical stack, each row = display-font
|
|
81
|
+
project title + year in sentence-case body + one-line description +
|
|
82
|
+
accent underline on hover. Divider hairlines between rows. NEVER
|
|
83
|
+
a 3-col grid.
|
|
84
|
+
- **Portrait band** — designer photo (5:6 or 4:5) + display h3 +
|
|
85
|
+
1-2 paragraphs of body copy + one accent-bordered ghost CTA.
|
|
86
|
+
- **Recognition strip** — 3-6 award / press logos, each in body font
|
|
87
|
+
at 16px, evenly spaced. NO ticker animation.
|
|
88
|
+
- **Contact CTA** — display h2 + accent-filled button (radius 4px,
|
|
89
|
+
accent bg + `footerInk` text) + optional email underneath.
|
|
90
|
+
- **Dark footer band** — inverted canvas (uses `footerBg` +
|
|
91
|
+
`footerInk`), brand wordmark + one-line note + 3 columns of
|
|
92
|
+
small links + tiny copyright (regular Arabic numerals).
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## SIGNATURE MOVES — verbs, not adjectives
|
|
97
|
+
|
|
98
|
+
- **Morph the headline weight from 400 → 700** on paint over 400ms
|
|
99
|
+
cubic-bezier(0.22, 1, 0.36, 1). `font-variation-settings` transition
|
|
100
|
+
is the ONLY animation on the hero. No fade-rise, no ambient drift.
|
|
101
|
+
- **Underline selected-work rows with the accent** on hover — 1px
|
|
102
|
+
hairline animates from left to right over 240ms. This is how the
|
|
103
|
+
list reads as a portfolio, not a feature grid.
|
|
104
|
+
- **Set project titles in the body font at display scale** (48-64px)
|
|
105
|
+
— Bricolage Grotesque at 500 weight, sentence-case, tracking
|
|
106
|
+
-0.025em. Never uppercase. This is the tell that separates a
|
|
107
|
+
studio-portfolio register from a marketing-page register.
|
|
108
|
+
- **Photos are 3:2 landscape** except the portrait which is 4:5.
|
|
109
|
+
Warm shadow + cool highlight grade so the accent doesn't compete.
|
|
110
|
+
- **The accent-bordered CTA is the studio's signature move** —
|
|
111
|
+
transparent bg, 1px accent border, accent text, no glow. Never a
|
|
112
|
+
solid accent-filled button.
|
|
113
|
+
- **Restraint elsewhere** — every other section is single-column,
|
|
114
|
+
body font, one accent element per section max. The morphing hero
|
|
115
|
+
earns the moment by being the only maximalist thing on the page.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## COLOR TOKENS
|
|
120
|
+
|
|
121
|
+
**Dark canvas** — `bg #0B0B0F` / `surface #16161B` / `ink #F5F5F5` /
|
|
122
|
+
`mute #8B8B92`. Footer band inverts to `footerBg: #FAFAFA` +
|
|
123
|
+
`footerInk: #0B0B0F`.
|
|
124
|
+
|
|
125
|
+
**Light canvas** — `bg #FAFAFA` / `surface #F0F0F0` / `ink #0A0A0A` /
|
|
126
|
+
`mute #7A7A7A`. Footer band inverts to `footerBg: #0A0A0A` +
|
|
127
|
+
`footerInk: #FAFAFA`.
|
|
128
|
+
|
|
129
|
+
**Accent** (per palette variant — 10 studio-brand hues; default `cobalt`
|
|
130
|
+
`#3D5AFE` on dark, `#3D5AFE` on light).
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## TYPOGRAPHY
|
|
135
|
+
|
|
136
|
+
- **Display:** Bricolage Grotesque Variable (fallback Neue Haas Grotesk
|
|
137
|
+
Display, Inter). Weight morphs 400 → 700 on paint. Hero clamp(3rem,
|
|
138
|
+
8vw, 8rem), tracking -0.03em.
|
|
139
|
+
- **Body:** Uncut Sans (fallback Inter), 17px, line-height 1.55,
|
|
140
|
+
tracking -0.005em.
|
|
141
|
+
- **Mono:** IBM Plex Mono — ONLY for the "sixty-second install"
|
|
142
|
+
microcopy and code-shaped things. Never for decorative labels.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## SECTION SKELETON
|
|
147
|
+
|
|
148
|
+
1. Sticky palette + canvas picker strip.
|
|
149
|
+
2. Masthead nav (Studio Feixen wordmark + 4 nav items + "Say hello").
|
|
150
|
+
3. Hero — variable-weight morphing display headline.
|
|
151
|
+
4. Featured project — real photo + display title + body + ghost CTA.
|
|
152
|
+
5. Selected work — vertical list of 6 projects.
|
|
153
|
+
6. Studio / about split — designer portrait + body copy.
|
|
154
|
+
7. Recognition — award / press credits row.
|
|
155
|
+
8. Contact CTA — display + accent-filled button.
|
|
156
|
+
9. Dark footer band.
|