@stylecrib/cli 0.0.0-stage → 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 +163 -2
- 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 +7182 -0
- package/package.json +69 -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,178 @@
|
|
|
1
|
+
import type { Direction } from "../schema";
|
|
2
|
+
|
|
3
|
+
export const businessTiles: Direction = {
|
|
4
|
+
name: "business-tiles",
|
|
5
|
+
ethos:
|
|
6
|
+
"SAP Fiori 3 principles · Fiori tile dashboards · S/4HANA enterprise utility · 72-typeface humanism · process-friendly enterprise",
|
|
7
|
+
references: [
|
|
8
|
+
{ brand: "SAP Fiori 3", trait: "tile-dashboard design language, cool-gray canvas, SAP blue accent" },
|
|
9
|
+
{ brand: "S/4HANA", trait: "marketing register for the ERP suite — enterprise utility made approachable" },
|
|
10
|
+
{ brand: "SAP Ariba", trait: "procurement screens, table-dense process surfaces" },
|
|
11
|
+
{ brand: "SAP Concur", trait: "expense surfaces, friendly forms over rigid workflow" },
|
|
12
|
+
{ brand: "SAP Build Apps", trait: "low-code tooling, tile-first information architecture" },
|
|
13
|
+
],
|
|
14
|
+
feel:
|
|
15
|
+
"Enterprise productivity that doesn't feel hostile. SAP's iconic Fiori tile dashboard pattern. " +
|
|
16
|
+
"Soft cool-gray backgrounds, SAP-blue signal color, friendly rounded utility. Reads as 'ERP that's " +
|
|
17
|
+
"actually been used by humans recently.' The opposite of stuffy enterprise — process-aware but approachable.",
|
|
18
|
+
|
|
19
|
+
fonts: {
|
|
20
|
+
display: {
|
|
21
|
+
family: "Inter",
|
|
22
|
+
fallback: ["72", "SAP72", "system-ui", "-apple-system", "sans-serif"],
|
|
23
|
+
from: "Inter as open-source approximation of SAP's proprietary 72 typeface — licensed SAP customers should swap 72 in",
|
|
24
|
+
googleFont: "Inter:wght@400;500;600;700",
|
|
25
|
+
weights: [400, 500, 600, 700],
|
|
26
|
+
},
|
|
27
|
+
body: {
|
|
28
|
+
family: "Inter",
|
|
29
|
+
fallback: ["72", "SAP72", "system-ui", "-apple-system", "sans-serif"],
|
|
30
|
+
from: "Inter body — humanist sans, matches the 72-typeface rhythm Fiori expects",
|
|
31
|
+
googleFont: "Inter:wght@400;500;600",
|
|
32
|
+
weights: [400, 500, 600],
|
|
33
|
+
},
|
|
34
|
+
mono: {
|
|
35
|
+
family: "JetBrains Mono",
|
|
36
|
+
fallback: ["72 Mono", "SAP72 Mono", "ui-monospace", "SFMono-Regular", "Consolas", "monospace"],
|
|
37
|
+
from: "JetBrains Mono — used for IDs, document numbers, posting keys, GL accounts",
|
|
38
|
+
googleFont: "JetBrains+Mono:wght@400;500",
|
|
39
|
+
weights: [400, 500],
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
typography: {
|
|
44
|
+
headingTracking: "-0.005em",
|
|
45
|
+
bodyTracking: "0",
|
|
46
|
+
fontFeatureSettings: '"tnum", "ss01"',
|
|
47
|
+
h1ScaleClamp: "clamp(1.5rem, 3vw, 2.25rem)",
|
|
48
|
+
bodyBaseSize: "0.875rem",
|
|
49
|
+
bodyLineHeight: "1.5",
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
colors: {
|
|
53
|
+
background: { hsl: "213 14% 95%", from: "Fiori cool-gray canvas — distinguishes ERP from marketing" },
|
|
54
|
+
foreground: { hsl: "220 35% 22%", from: "deep slate — Fiori text-primary" },
|
|
55
|
+
card: { hsl: "0 0% 100%", from: "Fiori tile surface — white tile on cool-gray canvas" },
|
|
56
|
+
popover: { hsl: "0 0% 100%", from: "Fiori menus and popovers — same tile-white" },
|
|
57
|
+
|
|
58
|
+
primary: { hsl: "218 100% 35%", from: "SAP blue — the brand mark color, Fiori interactive accent" },
|
|
59
|
+
primaryForeground: { hsl: "0 0% 100%", from: "white on SAP blue" },
|
|
60
|
+
|
|
61
|
+
secondary: { hsl: "213 14% 90%", from: "Fiori tertiary surface — gray a notch darker than canvas" },
|
|
62
|
+
secondaryForeground: { hsl: "220 35% 22%", from: "deep slate on secondary gray" },
|
|
63
|
+
muted: { hsl: "213 14% 90%", from: "Fiori muted — same as secondary" },
|
|
64
|
+
mutedForeground: { hsl: "220 12% 45%", from: "Fiori secondary text — labels, meta, table captions" },
|
|
65
|
+
accent: { hsl: "213 30% 92%", from: "Fiori hover surface — faint blue-tinted gray" },
|
|
66
|
+
accentForeground: { hsl: "220 35% 22%", from: "deep slate on hover" },
|
|
67
|
+
|
|
68
|
+
border: { hsl: "213 14% 86%", from: "Fiori tile border — visible structural hairline" },
|
|
69
|
+
input: { hsl: "213 14% 78%", from: "Fiori input border — a shade darker than tile border for affordance" },
|
|
70
|
+
ring: { hsl: "218 100% 35%", from: "SAP blue — focus ring on active states" },
|
|
71
|
+
|
|
72
|
+
destructive: { hsl: "354 75% 45%", from: "Fiori semantic error red — destructive actions and error states" },
|
|
73
|
+
destructiveForeground: { hsl: "0 0% 100%", from: "white on error red" },
|
|
74
|
+
|
|
75
|
+
brand: {
|
|
76
|
+
"tile-bg": { hsl: "0 0% 100%", from: "Fiori tile surface — white tile on the cool-gray canvas" },
|
|
77
|
+
"tile-border": { hsl: "213 14% 86%", from: "Fiori tile hairline border — structural, visible at dashboard density" },
|
|
78
|
+
"info-blue": { hsl: "200 100% 42%", from: "Fiori info blue — informational chips and links" },
|
|
79
|
+
"accent-orange": { hsl: "28 100% 50%", from: "Fiori warning orange — process attention, in-progress workflows" },
|
|
80
|
+
"success-green": { hsl: "140 50% 40%", from: "Fiori success green — positive semantic state" },
|
|
81
|
+
"sap-blue": { hsl: "218 100% 35%", from: "SAP brand blue — alias for primary" },
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
spacing: {
|
|
86
|
+
base: 4,
|
|
87
|
+
scale: [2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 64],
|
|
88
|
+
containerMax: "max-w-screen-2xl",
|
|
89
|
+
containerPadding: "px-4 lg:px-6",
|
|
90
|
+
sectionPadding: {
|
|
91
|
+
hero: "pt-10 pb-8 lg:pt-14 lg:pb-10",
|
|
92
|
+
default: "py-8 lg:py-12",
|
|
93
|
+
tight: "py-4 lg:py-6",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
radius: {
|
|
98
|
+
base: "0.25rem",
|
|
99
|
+
pillsAllowed: true,
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
shadows: {
|
|
103
|
+
style: "soft",
|
|
104
|
+
utilities: {
|
|
105
|
+
"shadow-tile":
|
|
106
|
+
"0 1px 2px hsl(220 35% 22% / 0.06), 0 1px 1px hsl(220 35% 22% / 0.04)",
|
|
107
|
+
"shadow-tile-hover":
|
|
108
|
+
"0 4px 8px hsl(220 35% 22% / 0.08), 0 2px 4px hsl(220 35% 22% / 0.05)",
|
|
109
|
+
"shadow-tile-focus":
|
|
110
|
+
"0 0 0 2px hsl(var(--primary) / 0.4)",
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
motion: {
|
|
115
|
+
easing: "cubic-bezier(0.22, 1, 0.36, 1)",
|
|
116
|
+
durations: {
|
|
117
|
+
reveal: 200,
|
|
118
|
+
loop: 1200,
|
|
119
|
+
ambient: 0,
|
|
120
|
+
},
|
|
121
|
+
keyframes: {
|
|
122
|
+
"fade-in": {
|
|
123
|
+
css:
|
|
124
|
+
"from { opacity: 0; }\n" +
|
|
125
|
+
"to { opacity: 1; }",
|
|
126
|
+
defaultDuration: 200,
|
|
127
|
+
iteration: "once",
|
|
128
|
+
purpose: "200ms entry fade — tiles, popovers, menus, dialog content",
|
|
129
|
+
},
|
|
130
|
+
"tile-lift": {
|
|
131
|
+
css:
|
|
132
|
+
"from { transform: translateY(2px); opacity: 0.85; }\n" +
|
|
133
|
+
"to { transform: translateY(0); opacity: 1; }",
|
|
134
|
+
defaultDuration: 200,
|
|
135
|
+
iteration: "once",
|
|
136
|
+
purpose: "Fiori tile hover/load — small lift, business-paced, not theatrical",
|
|
137
|
+
},
|
|
138
|
+
"fade-out": {
|
|
139
|
+
css:
|
|
140
|
+
"from { opacity: 1; }\n" +
|
|
141
|
+
"to { opacity: 0; }",
|
|
142
|
+
defaultDuration: 150,
|
|
143
|
+
iteration: "once",
|
|
144
|
+
purpose: "150ms exit fade — popovers, menus, dismissed dialogs",
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
respectsReducedMotion: true,
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
density: "high",
|
|
151
|
+
|
|
152
|
+
patterns: {
|
|
153
|
+
button:
|
|
154
|
+
"Primary = solid SAP blue, white text, 4px radius, weight 600 (bg-primary text-primary-foreground rounded-sm font-semibold). " +
|
|
155
|
+
"Secondary = ghost with foreground text and 1px input border (bg-transparent border). " +
|
|
156
|
+
"Emphasized = filled SAP blue with subtle gradient (bg-gradient-to-b from-primary to-[hsl(218_100%_30%)]). " +
|
|
157
|
+
"Sizes: small (h-7 px-2.5 text-xs) and default (h-8 px-3 text-sm).",
|
|
158
|
+
card:
|
|
159
|
+
"Fiori tile: rounded-sm (4px), bg-tile-bg (white), 1px tile-border, shadow-tile drop. " +
|
|
160
|
+
"Tight padding (p-4 lg:p-5). Tile header row uses bottom hairline. " +
|
|
161
|
+
"Hover lifts to shadow-tile-hover; focus uses shadow-tile-focus ring.",
|
|
162
|
+
input:
|
|
163
|
+
"Compact (h-8 text-sm), 1px input border, bg-tile-bg, rounded-sm. " +
|
|
164
|
+
"Focus uses 2px SAP-blue ring. Label above, helper below in mutedForeground. " +
|
|
165
|
+
"Inline validation in destructive red; warning orange for in-progress process state.",
|
|
166
|
+
cta:
|
|
167
|
+
"Primary action is the SAP-blue button. Secondary = ghost. Emphasized variant reserved for the " +
|
|
168
|
+
"single most important action on a process screen (Submit, Post, Approve). " +
|
|
169
|
+
"Marketing-style double-CTAs do not exist in this language — ERP screens have one verb.",
|
|
170
|
+
},
|
|
171
|
+
|
|
172
|
+
details: {
|
|
173
|
+
selectionBg: "hsl(var(--primary) / 0.2)",
|
|
174
|
+
selectionFg: "hsl(var(--foreground))",
|
|
175
|
+
focusRing: "2px solid hsl(var(--ring))",
|
|
176
|
+
scrollbarStyle: "auto",
|
|
177
|
+
},
|
|
178
|
+
};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Cabana Poster
|
|
2
|
+
|
|
3
|
+
> Vintage travel-poster register applied to a warm lifestyle brand — cream canvas at
|
|
4
|
+
|
|
5
|
+
**Slug:** `cabana-poster` — **Surface:** web — **Density:** balanced
|
|
6
|
+
|
|
7
|
+
## Influence
|
|
8
|
+
|
|
9
|
+
Vintage 1960s-70s travel-poster typography (Windsor / Cooper Black
|
|
10
|
+
outlined display treatments used on airline posters, Miami / Palm
|
|
11
|
+
Springs / Tulum lifestyle brands), independent Australian and
|
|
12
|
+
inner-north creative spaces at their most confident, and modern
|
|
13
|
+
hospitality-forward coworking / clubhouse brands that reject the
|
|
14
|
+
Silicon Valley aesthetic in favour of a warmer, cheekier, more
|
|
15
|
+
place-specific register. Distinct from other Family C bases through
|
|
16
|
+
the WARM CREAM canvas + OUTLINED YELLOW DISPLAY WORDMARK + STICKY
|
|
17
|
+
NOTE testimonial cards + HANDWRITTEN SCRIPT signature moments —
|
|
18
|
+
none of which the other Family C bases carry.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Signature move
|
|
22
|
+
|
|
23
|
+
Warm cream canvas at #eedfca — the register's non-negotiable base
|
|
24
|
+
(deliberately NOT #F4F1EA, which is the Claude-cream AI-tell). Every
|
|
25
|
+
card, button, input, tile, photo-frame, and sticky note ships at 0px
|
|
26
|
+
border radius — sharp edges are the second non-negotiable move. The
|
|
27
|
+
hero is a FULL-BLEED photograph of the actual physical space or an
|
|
28
|
+
atmospheric outdoor scene (palm trees, beach, warm-lit street) under
|
|
29
|
+
directional light. Over that photo sits the WORDMARK in the Windsor
|
|
30
|
+
display face — YELLOW FILL (#ffd200) + ESPRESSO-BROWN STROKE OUTLINE
|
|
31
|
+
at ~10-14px stroke width, at ~200px scale, mixed case (never
|
|
32
|
+
uppercase). Directly beneath the wordmark: a small custom SVG
|
|
33
|
+
LINE-ILLUSTRATION of the actual physical space (storefront /
|
|
34
|
+
building / entrance) drawn in cream on cream, ~180px wide. Below
|
|
35
|
+
that: a small DIEGETIC ADDRESS PLATE in 11px mono-caps 0.16em
|
|
36
|
+
("FACTORY 2 / 10-12 EXAMPLE RD / SUBURB VIC 3057").
|
|
37
|
+
Below the hero: a horizontal MARQUEE TICKER in an orange band —
|
|
38
|
+
"Follow us @PORT_CABANA · 247 ACCESS · 1800-EXAMPLE · HOT DESKS
|
|
39
|
+
AVAILABLE · SUPER FAST" scrolling at 24s per loop. Below the
|
|
40
|
+
marquee: an INTRO COPY SPLIT — LEFT: big Windsor headline "Your
|
|
41
|
+
cheeky inner-north coworking oasis." at 64px. RIGHT: two-column
|
|
42
|
+
Pitch Sans body copy with a small handwritten-italic subline.
|
|
43
|
+
Next: a PHOTO GALLERY BAND — 3 photos at varied sizes, ONE of them
|
|
44
|
+
framed with a bright YELLOW ARCH-SHAPE SVG FRAME (the arch being a
|
|
45
|
+
key vintage-poster device). A bespoke SVG smiley mark drops in the
|
|
46
|
+
gutter as PUNCTUATION. Next: a big "EXPERIENCE THE ULTIMATE
|
|
47
|
+
COWORKING LIFESTYLE" headline in Windsor with a HANDWRITTEN SCRIPT
|
|
48
|
+
"As Seen on TV!" callout in seafoam (Caveat) beneath. A 3-TAB
|
|
49
|
+
WIDGET (Hot Desking / Permanent Desk / Private Studio) crossfades
|
|
50
|
+
its body card + big photo panel per tab. Below: TESTIMONIALS AS
|
|
51
|
+
POST-IT NOTES — 2-3 sticky-note-aesthetic cards (yellow, orange,
|
|
52
|
+
lime rectangles at ~360x240px, sharp corners, subtle static
|
|
53
|
+
rotation of -2deg / 0deg / +3deg, typewriter-style body copy).
|
|
54
|
+
Finally, a "COME SAY HI" callout section: a dark deep-forest
|
|
55
|
+
photo-band (garage-door / studio-entrance photograph) with a CREAM
|
|
56
|
+
CARD OVERLAY in the center reading "Come Say Hi" (Windsor 48px),
|
|
57
|
+
"Seeing is believing, baby" (script 24px), a two-line body block,
|
|
58
|
+
and a DEEP-FOREST OUTLINED BUTTON reading "Arrange a visit."
|
|
59
|
+
Footer at the bottom: acknowledgement paragraph on the left, giant
|
|
60
|
+
outlined wordmark + small building illustration in the middle,
|
|
61
|
+
utility links (Home / Join / About / The Space / Our Members /
|
|
62
|
+
Contact) top-left column. Brand character sits in the outlined
|
|
63
|
+
yellow wordmark, the full-bleed photography, the multi-color
|
|
64
|
+
scattered accents used SPARINGLY, and the handwritten-script
|
|
65
|
+
signature moments — not in decoration, not in polish, not in
|
|
66
|
+
uniform grids.
|
|
67
|
+
|
|
68
|
+
## Palette
|
|
69
|
+
|
|
70
|
+
- **bg:** `#eedfca`
|
|
71
|
+
- **surface:** `#ffffff`
|
|
72
|
+
- **ink:** `#352207`
|
|
73
|
+
- **accent:** `#ffd200`
|
|
74
|
+
- **secondary:** `#f38211`
|
|
75
|
+
|
|
76
|
+
## Typography
|
|
77
|
+
|
|
78
|
+
- **Display:** Windsor (reference proprietary face — warm 1905 chunky-serif with friendly proportions and a slightly quirky character). Free fallback stack — "Rozha One", "DM Serif Display", "Playfair Display", Georgia, serif. Weight 700, mixed case (NEVER uppercase — Windsor loses its character under textTransform:uppercase like Shrikhand does). Top of scale ~64px hero wordmark, 48px section headline, 32px subhead, 24px h3. The wordmark ships with YELLOW FILL + ESPRESSO BROWN OUTLINE STROKE — that's the vintage travel-poster signature. Every other display use is a solid espresso-brown fill.
|
|
79
|
+
- **Body:** Pitch Sans (reference — Klim's Pitch Sans, a modern geometric sans). Free fallback stack — "Space Grotesk", "DM Sans", Inter, system-ui, sans-serif. Weight 500-600, mixed case, 15-16px body copy, line-height 1.55. Small labels get 12px 600-weight sentence case.
|
|
80
|
+
- **Mono:** none. Cabana Poster is a warm consumer lifestyle surface. Mono has no role.
|
|
81
|
+
- **Scale:** 1.333 (perfect fourth — comfortable poster-scale contrast without collapsing into monumental hero-only)
|
|
82
|
+
|
|
83
|
+
## Motion
|
|
84
|
+
|
|
85
|
+
Ships live in the section renderer (no external dependencies):
|
|
86
|
+
1. Marquee ticker — the orange utility-label bar scrolls horizontally at 24s per loop, continuously (pauses on hover). Per reference — spec allows.
|
|
87
|
+
2. Photo-gallery hover — each gallery photo scales(1.02) + shifts +/-2px vertically on hover, 240ms cubic-bezier(0.19,1,0.22,1). Reads as "picking up a print" tactile response.
|
|
88
|
+
3. Tab-widget crossfade — Hot Desking / Permanent Desk / Private Studio tabs crossfade their body-card + photo-panel content over 300ms on click. No slide, no scale — just opacity.
|
|
89
|
+
4. Post-it note stagger — testimonial post-it notes fade in with 120ms stagger + 500ms cubic-bezier on IntersectionObserver visibility. Each note also has a subtle static rotation (-2deg, 0deg, +3deg) so they look casually pinned.
|
|
90
|
+
5. Come-Say-Hi callout reveal — the cream card overlay on the dark deep-forest photo band fades in from opacity 0 with a subtle scale(0.98 → 1) over 600ms on IntersectionObserver visibility.
|
|
91
|
+
6. Handwritten script gentle sway — the "As Seen on TV!" and "Come Say Hi" script snippets rotate 1deg back-and-forth on a 4s loop, subtle enough to feel alive but not distracting.
|
|
92
|
+
7. Wordmark reveal — the outlined display wordmark fades in with subtle scale(0.96 → 1) over 800ms on first paint. No letter-stagger.
|
|
93
|
+
8. prefers-reduced-motion: reduce — marquee paused; hover disabled; post-it stagger disabled (all show at once); script sway paused; wordmark shows at final scale immediately. State changes still fire (tab switching still crossfades opacity).
|
|
94
|
+
|
|
95
|
+
Customer installs these as dependencies for the deeper motion tier:
|
|
96
|
+
- Lenis — smooth inertial scroll (page benefits from inertial cadence between the photo bands).
|
|
97
|
+
- GSAP DrawSVG for the outlined display wordmark drawing letter-by-letter over the beach photo hero.
|
|
98
|
+
- Real Vimeo/Cloudinary video player for the "AS SEEN ON TV!" video-thumbnail if the customer has a real reel.
|
|
99
|
+
|
|
100
|
+
Motion character: warm, playful, tactile, slightly retro. Custom cubic-bezier(0.19,1,0.22,1) for reveals. The register lives between vintage travel-poster print and modern hospitality-forward web — motion should feel like paper being handled, not like a SaaS product tour.
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
## Imagery
|
|
104
|
+
|
|
105
|
+
FULL-BLEED photography of the actual physical space, natural
|
|
106
|
+
outdoor scenes (palm trees, beach, warm-lit streets), or lifestyle
|
|
107
|
+
moments (people working, hanging out, using the space). The
|
|
108
|
+
reference uses atmospheric beach/palm-tree photography for the hero
|
|
109
|
+
and interior-photography for the gallery. FPO imagery here should
|
|
110
|
+
read as directional-light photography with warm-forward color
|
|
111
|
+
grading — never generic stock, never gradient blobs, never radial
|
|
112
|
+
glow fallbacks. One gallery photo gets a BRIGHT YELLOW ARCH-SHAPE
|
|
113
|
+
SVG frame as a signature poster device. The rest of the gallery
|
|
114
|
+
photos sit plain on the cream canvas with no frame. NO stock
|
|
115
|
+
workplace photography (the "diverse laptops at a coffee shop" tell).
|
|
116
|
+
NO warm-radial gradients as image fallbacks. NO drop-shadow-md on
|
|
117
|
+
photo cards. Bespoke SVG marks (smiley, palm, sun, arrow, hand,
|
|
118
|
+
building-line, phone, calendar, weather glyph) are dropped as
|
|
119
|
+
PUNCTUATION at specific compositional moments — never as a uniform
|
|
120
|
+
icon row.
|
|
121
|
+
|
|
122
|
+
## Best for
|
|
123
|
+
|
|
124
|
+
- Coworking spaces and creative clubhouses with a distinct place-specific character
|
|
125
|
+
- Warm lifestyle brands (hospitality, boutique retail, hair salons, cafes) with a cheek-forward voice
|
|
126
|
+
- Independent creative studios with a hospitality-forward register
|
|
127
|
+
- Boutique wellness spaces (yoga, pilates, sauna, cold-plunge) leaning warm-vintage
|
|
128
|
+
- Small hotels + bed-and-breakfasts + eco-retreats + surf houses + rural stays
|
|
129
|
+
- Culture-forward brands (bookstores, record shops, print studios) with a warm-vintage character
|
|
130
|
+
|
|
131
|
+
## Reject if
|
|
132
|
+
|
|
133
|
+
_Director grades each of the following as a pass/fail check. Any violation blocks the theme._
|
|
134
|
+
|
|
135
|
+
- Dark canvas (near-black / true-black / any dark gray) as the primary background — canvas IS warm cream at #eedfca. Swapping to a dark canvas collapses this into generic-atmospheric slop and kills the vintage-poster register.
|
|
136
|
+
- Pure white (#FFFFFF) or #F4F1EA claude-cream as the canvas — #eedfca is measured and deliberately WARMER than the AI-tell claude-cream. Swapping to F4F1EA is the biggest signal the theme has been washed out toward AI-default warmth.
|
|
137
|
+
- Sans-serif display type — the display face MUST be a warm chunky serif (Windsor reference; Rozha One / DM Serif Display / Playfair Display fallback). Inter Display / Anton / DM Sans have the wrong register.
|
|
138
|
+
- Rounded corners on cards, buttons, inputs, photo frames, or sticky notes — 0px radius everywhere. The one arch-shape frame is bespoke SVG, not a border-radius.
|
|
139
|
+
- Corporate polish — no drop-shadow-md, no soft-glow, no gradient backdrop, no glassmorphism. Photo panels sit flat on the canvas; sticky notes have zero shadow (they're vintage-poster sticky notes, not skeuomorphic ones).
|
|
140
|
+
- Multi-color accent flooding — the accents (yellow, lime, orange, pink, seafoam) appear SPARINGLY as punctuation. Never floods a whole section background in any accent color; the cream canvas is the primary.
|
|
141
|
+
- Uniform 3-column feature grids — the photo gallery band alternates size, orientation, and frame treatment. Not a template.
|
|
142
|
+
- Handwritten script for body copy or eyebrow labels — the script (Caveat / Homemade Apple) is used ONLY for a small vocabulary of signature moments ('As Seen on TV!', 'Come Say Hi', 'Seeing is believing, baby'). Never for body copy or eyebrow slop.
|
|
143
|
+
- Uniform icon row of bespoke SVG marks — the 13 SVG marks in the reference are dropped as PUNCTUATION at specific compositional moments. Never as a uniform 3-across or 4-across icon-and-caption grid.
|
|
144
|
+
- Stock diverse-workplace photography (laptops around a table, hands-typing, smiling-team-portrait) — imagery MUST feel place-specific + directional-light + warm-forward. Interior-of-the-actual-space or atmospheric-outdoor, not stock.
|
|
145
|
+
- Emoji or decorative unicode marks — bespoke SVG carries all the ornamentation.
|
|
146
|
+
|
|
147
|
+
## Banned defaults (inherited + theme-specific)
|
|
148
|
+
|
|
149
|
+
- claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is DELIBERATELY #eedfca (warmer than claude-cream) to refuse the AI-tell. Swapping to F4F1EA is the tell.
|
|
150
|
+
- void+acid (near-black bg + single bright acid-green or vermilion accent)
|
|
151
|
+
- broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns on non-editorial content)
|
|
152
|
+
- tech-bro purple gradient (purple→blue gradient hero + centered headline + double CTA + emoji icons)
|
|
153
|
+
- uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)
|
|
154
|
+
- sans-display-anywhere (this theme's whole point is the warm Windsor chunky-serif wordmark. A sans-serif display used anywhere — hero, section headline, wordmark — immediately collapses the vintage-poster register.)
|
|
155
|
+
- white-canvas-flood (canvas is #eedfca warm cream, not white. White is a raised-panel surface color for the hot-desk card and gallery photo frames only. Making white the whole page background collapses the theme into generic-lifestyle slop.)
|
|
156
|
+
- rounded-sticky-notes (post-it note testimonial cards are SHARP-CORNERED. Real vintage post-its had square edges. Rounded corners on the sticky notes is the skeuomorphic-mimic tell.)
|
|
157
|
+
- multi-accent-flood (yellow + lime + orange + pink + seafoam are PUNCTUATION accents. Flooding an entire section background in any accent color collapses the theme into candy-slop.)
|
|
158
|
+
- uniform-photo-grid (photo gallery alternates size, orientation, and frame treatment. Uniform 3-across or 4-across photo grids are the AI-default lifestyle-site tell.)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"slug":"cabana-poster","gates":[{"gate":"slop-blocklist","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-04T22:52:40.651Z","dismissed":[]},{"gate":"regression-scan","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-04T22:52:40.662Z","dismissed":[]},{"gate":"avoid-rubric","verdict":{"passed":true,"failures":[]},"ran_at":"2026-07-04T22:53:19.505Z","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-04T22:53:19.507Z","dismissed":[]}],"overall":"PASS","ran_at":"2026-07-04T22:52:40.651Z"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Generated from theme.yml. Merge into your tailwind.config.ts under theme.extend.
|
|
2
|
+
// slug: cabana-poster
|
|
3
|
+
export const cabanaPosterTailwindExtend = {
|
|
4
|
+
colors: {
|
|
5
|
+
bg: "#eedfca",
|
|
6
|
+
surface: "#ffffff",
|
|
7
|
+
ink: "#352207",
|
|
8
|
+
accent: "#ffd200",
|
|
9
|
+
secondary: "#f38211",
|
|
10
|
+
},
|
|
11
|
+
fontFamily: {
|
|
12
|
+
display: ["Windsor (reference proprietary face — warm 1905 chunky-serif with friendly proportions and a slightly quirky character). Free fallback stack — \"Rozha One\", \"DM Serif Display\", \"Playfair Display\", Georgia, serif. Weight 700, mixed case (NEVER uppercase — Windsor loses its character under textTransform:uppercase like Shrikhand does). Top of scale ~64px hero wordmark, 48px section headline, 32px subhead, 24px h3. The wordmark ships with YELLOW FILL + ESPRESSO BROWN OUTLINE STROKE — that's the vintage travel-poster signature. Every other display use is a solid espresso-brown fill."],
|
|
13
|
+
body: ["Pitch Sans (reference — Klim's Pitch Sans, a modern geometric sans). Free fallback stack — \"Space Grotesk\", \"DM Sans\", Inter, system-ui, sans-serif. Weight 500-600, mixed case, 15-16px body copy, line-height 1.55. Small labels get 12px 600-weight sentence case."],
|
|
14
|
+
mono: ["none. Cabana Poster is a warm consumer lifestyle surface. Mono has no role."],
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Cabana Poster — Family C, Editorial & Print.
|
|
2
|
+
#
|
|
3
|
+
# Vintage travel-poster register applied to a warm lifestyle brand.
|
|
4
|
+
# Cream canvas (#eedfca — measured, deliberately NOT #F4F1EA to refuse
|
|
5
|
+
# the AI-tell), espresso-brown ink (#352207 — never black), a bright
|
|
6
|
+
# yellow-fill + brown-outlined Windsor-style display wordmark, and a
|
|
7
|
+
# scattered palette of candy accents (yellow, electric lime, burnt
|
|
8
|
+
# orange, bubblegum pink, seafoam) used sparingly as punctuation.
|
|
9
|
+
#
|
|
10
|
+
# Sharp corners everywhere (0px radius on every card, button, input,
|
|
11
|
+
# tile, sticky note). Full-bleed photography under directional light.
|
|
12
|
+
# Handwritten script for a small vocabulary of signature moments only —
|
|
13
|
+
# "As Seen on TV!", "Come Say Hi", "Seeing is believing, baby" — never
|
|
14
|
+
# for body copy or eyebrow labels.
|
|
15
|
+
#
|
|
16
|
+
# Authored from Matt's provided design brief (2026-07-04,
|
|
17
|
+
# coparadiso.com reference — a real cheeky inner-north coworking
|
|
18
|
+
# space in Melbourne). Placeholder brand: "PORT CABANA" — a fictional
|
|
19
|
+
# coworking / lifestyle imprint. Original name, original copy, no
|
|
20
|
+
# reproductions of any reference. The register expresses "warm-vintage
|
|
21
|
+
# cheek" through the outlined display wordmark + full-bleed
|
|
22
|
+
# photography + sticky-note testimonial cards + handwritten script
|
|
23
|
+
# signatures + a sparse but insistent multi-color accent palette.
|
|
24
|
+
#
|
|
25
|
+
# Thirteenth theme via the v2 harness. Fifth Family C theme (after
|
|
26
|
+
# ember-poster + case-panel + marker-mag + pill-editorial). Eighth
|
|
27
|
+
# NEW BASE.
|
|
28
|
+
#
|
|
29
|
+
# Alternative slugs considered — postcard-holiday (evocative but drops
|
|
30
|
+
# the cabana-lounge register), paradise-poster (too source-adjacent),
|
|
31
|
+
# beach-brief (too literal), holiday-brief (imprecise), tropi-print
|
|
32
|
+
# (jargony), lounge-cream (drops the poster typography anchor). Cabana
|
|
33
|
+
# Poster picked because "cabana" nails the warm-tropical-lounge
|
|
34
|
+
# register and "poster" carries the vintage travel-poster typographic
|
|
35
|
+
# signature. Both words are common-noun and aesthetic — no
|
|
36
|
+
# right-of-publicity or trademark exposure.
|
|
37
|
+
|
|
38
|
+
name: Cabana Poster
|
|
39
|
+
concept: Vintage travel-poster register applied to a warm lifestyle brand — cream canvas at #eedfca (never white) with an outlined bright-yellow display wordmark, espresso-brown ink, full-bleed directional-light photography, sticky-note testimonial cards, and a small vocabulary of handwritten-script signature moments. Multi-color candy accents (golden yellow, electric lime, burnt orange, bubblegum pink, seafoam) used sparingly as punctuation, never flooded.
|
|
40
|
+
influence: |
|
|
41
|
+
Vintage 1960s-70s travel-poster typography (Windsor / Cooper Black
|
|
42
|
+
outlined display treatments used on airline posters, Miami / Palm
|
|
43
|
+
Springs / Tulum lifestyle brands), independent Australian and
|
|
44
|
+
inner-north creative spaces at their most confident, and modern
|
|
45
|
+
hospitality-forward coworking / clubhouse brands that reject the
|
|
46
|
+
Silicon Valley aesthetic in favour of a warmer, cheekier, more
|
|
47
|
+
place-specific register. Distinct from other Family C bases through
|
|
48
|
+
the WARM CREAM canvas + OUTLINED YELLOW DISPLAY WORDMARK + STICKY
|
|
49
|
+
NOTE testimonial cards + HANDWRITTEN SCRIPT signature moments —
|
|
50
|
+
none of which the other Family C bases carry.
|
|
51
|
+
|
|
52
|
+
family: C
|
|
53
|
+
base_number: 28
|
|
54
|
+
base_note: |
|
|
55
|
+
New-base candidate in Family C, warm-vintage-lifestyle subregion.
|
|
56
|
+
Distinct from other Family C bases through the OUTLINED DISPLAY
|
|
57
|
+
WORDMARK (yellow fill + espresso stroke — the register's typographic
|
|
58
|
+
fingerprint) and the multi-color candy-accent palette. Ember Poster
|
|
59
|
+
is warm-DARK editorial serif; Cabana Poster is warm-LIGHT vintage
|
|
60
|
+
travel-poster. Case Panel is agency portfolio bento. Marker Mag is
|
|
61
|
+
student-DIY marker chaos. Pill Editorial is 999px cultural editorial.
|
|
62
|
+
Cabana Poster fills the WARM-LIGHT-VINTAGE-LIFESTYLE slot the family
|
|
63
|
+
has been missing.
|
|
64
|
+
|
|
65
|
+
render_url: http://localhost:5173/themes/cabana-poster
|
|
66
|
+
|
|
67
|
+
surface: web
|
|
68
|
+
|
|
69
|
+
typography:
|
|
70
|
+
display: Windsor (reference proprietary face — warm 1905 chunky-serif with friendly proportions and a slightly quirky character). Free fallback stack — "Rozha One", "DM Serif Display", "Playfair Display", Georgia, serif. Weight 700, mixed case (NEVER uppercase — Windsor loses its character under textTransform:uppercase like Shrikhand does). Top of scale ~64px hero wordmark, 48px section headline, 32px subhead, 24px h3. The wordmark ships with YELLOW FILL + ESPRESSO BROWN OUTLINE STROKE — that's the vintage travel-poster signature. Every other display use is a solid espresso-brown fill.
|
|
71
|
+
body: Pitch Sans (reference — Klim's Pitch Sans, a modern geometric sans). Free fallback stack — "Space Grotesk", "DM Sans", Inter, system-ui, sans-serif. Weight 500-600, mixed case, 15-16px body copy, line-height 1.55. Small labels get 12px 600-weight sentence case.
|
|
72
|
+
script: |
|
|
73
|
+
Caveat, Homemade Apple, Kalam, cursive — used SPARINGLY for a small
|
|
74
|
+
vocabulary of handwritten-script signature moments only (As Seen on
|
|
75
|
+
TV!, Come Say Hi, Seeing is believing, baby). Weight 700, mixed
|
|
76
|
+
case, ~24-32px. NEVER used for body copy or eyebrow labels — a
|
|
77
|
+
handwritten register cannot scale to body copy without becoming twee.
|
|
78
|
+
mono: none. Cabana Poster is a warm consumer lifestyle surface. Mono has no role.
|
|
79
|
+
scale: 1.333 (perfect fourth — comfortable poster-scale contrast without collapsing into monumental hero-only)
|
|
80
|
+
eyebrow_exception: |
|
|
81
|
+
The universal slop-blocklist bans mono-caps eyebrows as a general
|
|
82
|
+
defensive rule. Cabana Poster LEGITIMATELY uses a small vocabulary
|
|
83
|
+
of uppercase 0.16em-tracked 11px labels as DIEGETIC ADDRESS PLATE
|
|
84
|
+
labels ("FACTORY 2 / 10-12 EXAMPLE RD / SUBURB VIC 3057") and
|
|
85
|
+
marquee-ticker utility labels ("247 ACCESS · 1800-EXAMPLE · HOT
|
|
86
|
+
DESKS AVAILABLE") because the reference site uses them EXACTLY
|
|
87
|
+
in this register — they read as vintage-signage plates, not
|
|
88
|
+
marketing eyebrows. This is a THEME-SPECIFIC EXCEPTION that must
|
|
89
|
+
be manually preserved during harness grading.
|
|
90
|
+
|
|
91
|
+
palette:
|
|
92
|
+
bg: "#eedfca" # canvas — warm cream, measured
|
|
93
|
+
surface: "#ffffff" # raised white panel — used for hot-desk card + photo gallery frames
|
|
94
|
+
ink: "#352207" # espresso brown — primary text (NEVER black)
|
|
95
|
+
accent: "#ffd200" # golden yellow — the display outline fill + primary button
|
|
96
|
+
secondary: "#f38211" # burnt orange — marquee bar + secondary highlights
|
|
97
|
+
cream: "#eedfca" # alias for bg
|
|
98
|
+
darkInk: "#163e35" # deep forest — inverted photo-band overlay + arrange-a-visit button
|
|
99
|
+
mute: "#8c6f47" # dimmed espresso — small labels + captions
|
|
100
|
+
lime: "#c1fc50" # electric lime — post-it sticky note variant
|
|
101
|
+
pink: "#f775a5" # bubblegum pink — post-it sticky note variant
|
|
102
|
+
seafoam: "#3ec2b4" # seafoam — accent moments (never floods)
|
|
103
|
+
|
|
104
|
+
density: balanced
|
|
105
|
+
|
|
106
|
+
motion: |
|
|
107
|
+
Ships live in the section renderer (no external dependencies):
|
|
108
|
+
1. Marquee ticker — the orange utility-label bar scrolls horizontally at 24s per loop, continuously (pauses on hover). Per reference — spec allows.
|
|
109
|
+
2. Photo-gallery hover — each gallery photo scales(1.02) + shifts +/-2px vertically on hover, 240ms cubic-bezier(0.19,1,0.22,1). Reads as "picking up a print" tactile response.
|
|
110
|
+
3. Tab-widget crossfade — Hot Desking / Permanent Desk / Private Studio tabs crossfade their body-card + photo-panel content over 300ms on click. No slide, no scale — just opacity.
|
|
111
|
+
4. Post-it note stagger — testimonial post-it notes fade in with 120ms stagger + 500ms cubic-bezier on IntersectionObserver visibility. Each note also has a subtle static rotation (-2deg, 0deg, +3deg) so they look casually pinned.
|
|
112
|
+
5. Come-Say-Hi callout reveal — the cream card overlay on the dark deep-forest photo band fades in from opacity 0 with a subtle scale(0.98 → 1) over 600ms on IntersectionObserver visibility.
|
|
113
|
+
6. Handwritten script gentle sway — the "As Seen on TV!" and "Come Say Hi" script snippets rotate 1deg back-and-forth on a 4s loop, subtle enough to feel alive but not distracting.
|
|
114
|
+
7. Wordmark reveal — the outlined display wordmark fades in with subtle scale(0.96 → 1) over 800ms on first paint. No letter-stagger.
|
|
115
|
+
8. prefers-reduced-motion: reduce — marquee paused; hover disabled; post-it stagger disabled (all show at once); script sway paused; wordmark shows at final scale immediately. State changes still fire (tab switching still crossfades opacity).
|
|
116
|
+
|
|
117
|
+
Customer installs these as dependencies for the deeper motion tier:
|
|
118
|
+
- Lenis — smooth inertial scroll (page benefits from inertial cadence between the photo bands).
|
|
119
|
+
- GSAP DrawSVG for the outlined display wordmark drawing letter-by-letter over the beach photo hero.
|
|
120
|
+
- Real Vimeo/Cloudinary video player for the "AS SEEN ON TV!" video-thumbnail if the customer has a real reel.
|
|
121
|
+
|
|
122
|
+
Motion character: warm, playful, tactile, slightly retro. Custom cubic-bezier(0.19,1,0.22,1) for reveals. The register lives between vintage travel-poster print and modern hospitality-forward web — motion should feel like paper being handled, not like a SaaS product tour.
|
|
123
|
+
|
|
124
|
+
signature: |
|
|
125
|
+
Warm cream canvas at #eedfca — the register's non-negotiable base
|
|
126
|
+
(deliberately NOT #F4F1EA, which is the Claude-cream AI-tell). Every
|
|
127
|
+
card, button, input, tile, photo-frame, and sticky note ships at 0px
|
|
128
|
+
border radius — sharp edges are the second non-negotiable move. The
|
|
129
|
+
hero is a FULL-BLEED photograph of the actual physical space or an
|
|
130
|
+
atmospheric outdoor scene (palm trees, beach, warm-lit street) under
|
|
131
|
+
directional light. Over that photo sits the WORDMARK in the Windsor
|
|
132
|
+
display face — YELLOW FILL (#ffd200) + ESPRESSO-BROWN STROKE OUTLINE
|
|
133
|
+
at ~10-14px stroke width, at ~200px scale, mixed case (never
|
|
134
|
+
uppercase). Directly beneath the wordmark: a small custom SVG
|
|
135
|
+
LINE-ILLUSTRATION of the actual physical space (storefront /
|
|
136
|
+
building / entrance) drawn in cream on cream, ~180px wide. Below
|
|
137
|
+
that: a small DIEGETIC ADDRESS PLATE in 11px mono-caps 0.16em
|
|
138
|
+
("FACTORY 2 / 10-12 EXAMPLE RD / SUBURB VIC 3057").
|
|
139
|
+
Below the hero: a horizontal MARQUEE TICKER in an orange band —
|
|
140
|
+
"Follow us @PORT_CABANA · 247 ACCESS · 1800-EXAMPLE · HOT DESKS
|
|
141
|
+
AVAILABLE · SUPER FAST" scrolling at 24s per loop. Below the
|
|
142
|
+
marquee: an INTRO COPY SPLIT — LEFT: big Windsor headline "Your
|
|
143
|
+
cheeky inner-north coworking oasis." at 64px. RIGHT: two-column
|
|
144
|
+
Pitch Sans body copy with a small handwritten-italic subline.
|
|
145
|
+
Next: a PHOTO GALLERY BAND — 3 photos at varied sizes, ONE of them
|
|
146
|
+
framed with a bright YELLOW ARCH-SHAPE SVG FRAME (the arch being a
|
|
147
|
+
key vintage-poster device). A bespoke SVG smiley mark drops in the
|
|
148
|
+
gutter as PUNCTUATION. Next: a big "EXPERIENCE THE ULTIMATE
|
|
149
|
+
COWORKING LIFESTYLE" headline in Windsor with a HANDWRITTEN SCRIPT
|
|
150
|
+
"As Seen on TV!" callout in seafoam (Caveat) beneath. A 3-TAB
|
|
151
|
+
WIDGET (Hot Desking / Permanent Desk / Private Studio) crossfades
|
|
152
|
+
its body card + big photo panel per tab. Below: TESTIMONIALS AS
|
|
153
|
+
POST-IT NOTES — 2-3 sticky-note-aesthetic cards (yellow, orange,
|
|
154
|
+
lime rectangles at ~360x240px, sharp corners, subtle static
|
|
155
|
+
rotation of -2deg / 0deg / +3deg, typewriter-style body copy).
|
|
156
|
+
Finally, a "COME SAY HI" callout section: a dark deep-forest
|
|
157
|
+
photo-band (garage-door / studio-entrance photograph) with a CREAM
|
|
158
|
+
CARD OVERLAY in the center reading "Come Say Hi" (Windsor 48px),
|
|
159
|
+
"Seeing is believing, baby" (script 24px), a two-line body block,
|
|
160
|
+
and a DEEP-FOREST OUTLINED BUTTON reading "Arrange a visit."
|
|
161
|
+
Footer at the bottom: acknowledgement paragraph on the left, giant
|
|
162
|
+
outlined wordmark + small building illustration in the middle,
|
|
163
|
+
utility links (Home / Join / About / The Space / Our Members /
|
|
164
|
+
Contact) top-left column. Brand character sits in the outlined
|
|
165
|
+
yellow wordmark, the full-bleed photography, the multi-color
|
|
166
|
+
scattered accents used SPARINGLY, and the handwritten-script
|
|
167
|
+
signature moments — not in decoration, not in polish, not in
|
|
168
|
+
uniform grids.
|
|
169
|
+
|
|
170
|
+
imagery: |
|
|
171
|
+
FULL-BLEED photography of the actual physical space, natural
|
|
172
|
+
outdoor scenes (palm trees, beach, warm-lit streets), or lifestyle
|
|
173
|
+
moments (people working, hanging out, using the space). The
|
|
174
|
+
reference uses atmospheric beach/palm-tree photography for the hero
|
|
175
|
+
and interior-photography for the gallery. FPO imagery here should
|
|
176
|
+
read as directional-light photography with warm-forward color
|
|
177
|
+
grading — never generic stock, never gradient blobs, never radial
|
|
178
|
+
glow fallbacks. One gallery photo gets a BRIGHT YELLOW ARCH-SHAPE
|
|
179
|
+
SVG frame as a signature poster device. The rest of the gallery
|
|
180
|
+
photos sit plain on the cream canvas with no frame. NO stock
|
|
181
|
+
workplace photography (the "diverse laptops at a coffee shop" tell).
|
|
182
|
+
NO warm-radial gradients as image fallbacks. NO drop-shadow-md on
|
|
183
|
+
photo cards. Bespoke SVG marks (smiley, palm, sun, arrow, hand,
|
|
184
|
+
building-line, phone, calendar, weather glyph) are dropped as
|
|
185
|
+
PUNCTUATION at specific compositional moments — never as a uniform
|
|
186
|
+
icon row.
|
|
187
|
+
|
|
188
|
+
best_for:
|
|
189
|
+
- Coworking spaces and creative clubhouses with a distinct place-specific character
|
|
190
|
+
- Warm lifestyle brands (hospitality, boutique retail, hair salons, cafes) with a cheek-forward voice
|
|
191
|
+
- Independent creative studios with a hospitality-forward register
|
|
192
|
+
- Boutique wellness spaces (yoga, pilates, sauna, cold-plunge) leaning warm-vintage
|
|
193
|
+
- Small hotels + bed-and-breakfasts + eco-retreats + surf houses + rural stays
|
|
194
|
+
- Culture-forward brands (bookstores, record shops, print studios) with a warm-vintage character
|
|
195
|
+
|
|
196
|
+
avoid:
|
|
197
|
+
- "Dark canvas (near-black / true-black / any dark gray) as the primary background — canvas IS warm cream at #eedfca. Swapping to a dark canvas collapses this into generic-atmospheric slop and kills the vintage-poster register."
|
|
198
|
+
- "Pure white (#FFFFFF) or #F4F1EA claude-cream as the canvas — #eedfca is measured and deliberately WARMER than the AI-tell claude-cream. Swapping to F4F1EA is the biggest signal the theme has been washed out toward AI-default warmth."
|
|
199
|
+
- "Sans-serif display type — the display face MUST be a warm chunky serif (Windsor reference; Rozha One / DM Serif Display / Playfair Display fallback). Inter Display / Anton / DM Sans have the wrong register."
|
|
200
|
+
- "Rounded corners on cards, buttons, inputs, photo frames, or sticky notes — 0px radius everywhere. The one arch-shape frame is bespoke SVG, not a border-radius."
|
|
201
|
+
- "Corporate polish — no drop-shadow-md, no soft-glow, no gradient backdrop, no glassmorphism. Photo panels sit flat on the canvas; sticky notes have zero shadow (they're vintage-poster sticky notes, not skeuomorphic ones)."
|
|
202
|
+
- "Multi-color accent flooding — the accents (yellow, lime, orange, pink, seafoam) appear SPARINGLY as punctuation. Never floods a whole section background in any accent color; the cream canvas is the primary."
|
|
203
|
+
- "Uniform 3-column feature grids — the photo gallery band alternates size, orientation, and frame treatment. Not a template."
|
|
204
|
+
- "Handwritten script for body copy or eyebrow labels — the script (Caveat / Homemade Apple) is used ONLY for a small vocabulary of signature moments ('As Seen on TV!', 'Come Say Hi', 'Seeing is believing, baby'). Never for body copy or eyebrow slop."
|
|
205
|
+
- "Uniform icon row of bespoke SVG marks — the 13 SVG marks in the reference are dropped as PUNCTUATION at specific compositional moments. Never as a uniform 3-across or 4-across icon-and-caption grid."
|
|
206
|
+
- "Stock diverse-workplace photography (laptops around a table, hands-typing, smiling-team-portrait) — imagery MUST feel place-specific + directional-light + warm-forward. Interior-of-the-actual-space or atmospheric-outdoor, not stock."
|
|
207
|
+
- "Emoji or decorative unicode marks — bespoke SVG carries all the ornamentation."
|
|
208
|
+
|
|
209
|
+
banned_defaults:
|
|
210
|
+
# Global blocklist from BESPOKE_THEME_SYSTEM.md
|
|
211
|
+
- "claude-cream (#F4F1EA + serif + #D97757) — this theme's canvas is DELIBERATELY #eedfca (warmer than claude-cream) to refuse the AI-tell. Swapping to F4F1EA is the tell."
|
|
212
|
+
- "void+acid (near-black bg + single bright acid-green or vermilion accent)"
|
|
213
|
+
- "broadsheet-on-noneditorial (hairline rules + zero border-radius + newspaper columns on non-editorial content)"
|
|
214
|
+
- "tech-bro purple gradient (purple→blue gradient hero + centered headline + double CTA + emoji icons)"
|
|
215
|
+
- "uniform-everything (identical padding + one weight of one sans doing every job + rounded-2xl + shadow-md cards)"
|
|
216
|
+
# Base-specific
|
|
217
|
+
- "sans-display-anywhere (this theme's whole point is the warm Windsor chunky-serif wordmark. A sans-serif display used anywhere — hero, section headline, wordmark — immediately collapses the vintage-poster register.)"
|
|
218
|
+
- "white-canvas-flood (canvas is #eedfca warm cream, not white. White is a raised-panel surface color for the hot-desk card and gallery photo frames only. Making white the whole page background collapses the theme into generic-lifestyle slop.)"
|
|
219
|
+
- "rounded-sticky-notes (post-it note testimonial cards are SHARP-CORNERED. Real vintage post-its had square edges. Rounded corners on the sticky notes is the skeuomorphic-mimic tell.)"
|
|
220
|
+
- "multi-accent-flood (yellow + lime + orange + pink + seafoam are PUNCTUATION accents. Flooding an entire section background in any accent color collapses the theme into candy-slop.)"
|
|
221
|
+
- "uniform-photo-grid (photo gallery alternates size, orientation, and frame treatment. Uniform 3-across or 4-across photo grids are the AI-default lifestyle-site tell.)"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Generated from theme.yml. Do not edit by hand — edit theme.yml + re-materialize.
|
|
2
|
+
|
|
3
|
+
export const tokens = {
|
|
4
|
+
slug: "cabana-poster",
|
|
5
|
+
family: "C",
|
|
6
|
+
base: "28",
|
|
7
|
+
palette: {
|
|
8
|
+
"bg": "#eedfca",
|
|
9
|
+
"surface": "#ffffff",
|
|
10
|
+
"ink": "#352207",
|
|
11
|
+
"accent": "#ffd200",
|
|
12
|
+
"secondary": "#f38211",
|
|
13
|
+
"cream": "#eedfca",
|
|
14
|
+
"darkInk": "#163e35",
|
|
15
|
+
"mute": "#8c6f47",
|
|
16
|
+
"lime": "#c1fc50",
|
|
17
|
+
"pink": "#f775a5",
|
|
18
|
+
"seafoam": "#3ec2b4"
|
|
19
|
+
},
|
|
20
|
+
typography: {
|
|
21
|
+
"display": "Windsor (reference proprietary face — warm 1905 chunky-serif with friendly proportions and a slightly quirky character). Free fallback stack — \"Rozha One\", \"DM Serif Display\", \"Playfair Display\", Georgia, serif. Weight 700, mixed case (NEVER uppercase — Windsor loses its character under textTransform:uppercase like Shrikhand does). Top of scale ~64px hero wordmark, 48px section headline, 32px subhead, 24px h3. The wordmark ships with YELLOW FILL + ESPRESSO BROWN OUTLINE STROKE — that's the vintage travel-poster signature. Every other display use is a solid espresso-brown fill.",
|
|
22
|
+
"body": "Pitch Sans (reference — Klim's Pitch Sans, a modern geometric sans). Free fallback stack — \"Space Grotesk\", \"DM Sans\", Inter, system-ui, sans-serif. Weight 500-600, mixed case, 15-16px body copy, line-height 1.55. Small labels get 12px 600-weight sentence case.",
|
|
23
|
+
"script": "Caveat, Homemade Apple, Kalam, cursive — used SPARINGLY for a small\nvocabulary of handwritten-script signature moments only (As Seen on\nTV!, Come Say Hi, Seeing is believing, baby). Weight 700, mixed\ncase, ~24-32px. NEVER used for body copy or eyebrow labels — a\nhandwritten register cannot scale to body copy without becoming twee.\n",
|
|
24
|
+
"mono": "none. Cabana Poster is a warm consumer lifestyle surface. Mono has no role.",
|
|
25
|
+
"scale": "1.333 (perfect fourth — comfortable poster-scale contrast without collapsing into monumental hero-only)",
|
|
26
|
+
"eyebrow_exception": "The universal slop-blocklist bans mono-caps eyebrows as a general\ndefensive rule. Cabana Poster LEGITIMATELY uses a small vocabulary\nof uppercase 0.16em-tracked 11px labels as DIEGETIC ADDRESS PLATE\nlabels (\"FACTORY 2 / 10-12 EXAMPLE RD / SUBURB VIC 3057\") and\nmarquee-ticker utility labels (\"247 ACCESS · 1800-EXAMPLE · HOT\nDESKS AVAILABLE\") because the reference site uses them EXACTLY\nin this register — they read as vintage-signage plates, not\nmarketing eyebrows. This is a THEME-SPECIFIC EXCEPTION that must\nbe manually preserved during harness grading.\n"
|
|
27
|
+
},
|
|
28
|
+
surface: "web",
|
|
29
|
+
density: "balanced",
|
|
30
|
+
motion: "Ships live in the section renderer (no external dependencies):\n1. Marquee ticker — the orange utility-label bar scrolls horizontally at 24s per loop, continuously (pauses on hover). Per reference — spec allows.\n2. Photo-gallery hover — each gallery photo scales(1.02) + shifts +/-2px vertically on hover, 240ms cubic-bezier(0.19,1,0.22,1). Reads as \"picking up a print\" tactile response.\n3. Tab-widget crossfade — Hot Desking / Permanent Desk / Private Studio tabs crossfade their body-card + photo-panel content over 300ms on click. No slide, no scale — just opacity.\n4. Post-it note stagger — testimonial post-it notes fade in with 120ms stagger + 500ms cubic-bezier on IntersectionObserver visibility. Each note also has a subtle static rotation (-2deg, 0deg, +3deg) so they look casually pinned.\n5. Come-Say-Hi callout reveal — the cream card overlay on the dark deep-forest photo band fades in from opacity 0 with a subtle scale(0.98 → 1) over 600ms on IntersectionObserver visibility.\n6. Handwritten script gentle sway — the \"As Seen on TV!\" and \"Come Say Hi\" script snippets rotate 1deg back-and-forth on a 4s loop, subtle enough to feel alive but not distracting.\n7. Wordmark reveal — the outlined display wordmark fades in with subtle scale(0.96 → 1) over 800ms on first paint. No letter-stagger.\n8. prefers-reduced-motion: reduce — marquee paused; hover disabled; post-it stagger disabled (all show at once); script sway paused; wordmark shows at final scale immediately. State changes still fire (tab switching still crossfades opacity).\n\nCustomer installs these as dependencies for the deeper motion tier:\n- Lenis — smooth inertial scroll (page benefits from inertial cadence between the photo bands).\n- GSAP DrawSVG for the outlined display wordmark drawing letter-by-letter over the beach photo hero.\n- Real Vimeo/Cloudinary video player for the \"AS SEEN ON TV!\" video-thumbnail if the customer has a real reel.\n\nMotion character: warm, playful, tactile, slightly retro. Custom cubic-bezier(0.19,1,0.22,1) for reveals. The register lives between vintage travel-poster print and modern hospitality-forward web — motion should feel like paper being handled, not like a SaaS product tour.\n",
|
|
31
|
+
signature: "Warm cream canvas at #eedfca — the register's non-negotiable base\n(deliberately NOT #F4F1EA, which is the Claude-cream AI-tell). Every\ncard, button, input, tile, photo-frame, and sticky note ships at 0px\nborder radius — sharp edges are the second non-negotiable move. The\nhero is a FULL-BLEED photograph of the actual physical space or an\natmospheric outdoor scene (palm trees, beach, warm-lit street) under\ndirectional light. Over that photo sits the WORDMARK in the Windsor\ndisplay face — YELLOW FILL (#ffd200) + ESPRESSO-BROWN STROKE OUTLINE\nat ~10-14px stroke width, at ~200px scale, mixed case (never\nuppercase). Directly beneath the wordmark: a small custom SVG\nLINE-ILLUSTRATION of the actual physical space (storefront /\nbuilding / entrance) drawn in cream on cream, ~180px wide. Below\nthat: a small DIEGETIC ADDRESS PLATE in 11px mono-caps 0.16em\n(\"FACTORY 2 / 10-12 EXAMPLE RD / SUBURB VIC 3057\").\nBelow the hero: a horizontal MARQUEE TICKER in an orange band —\n\"Follow us @PORT_CABANA · 247 ACCESS · 1800-EXAMPLE · HOT DESKS\nAVAILABLE · SUPER FAST\" scrolling at 24s per loop. Below the\nmarquee: an INTRO COPY SPLIT — LEFT: big Windsor headline \"Your\ncheeky inner-north coworking oasis.\" at 64px. RIGHT: two-column\nPitch Sans body copy with a small handwritten-italic subline.\nNext: a PHOTO GALLERY BAND — 3 photos at varied sizes, ONE of them\nframed with a bright YELLOW ARCH-SHAPE SVG FRAME (the arch being a\nkey vintage-poster device). A bespoke SVG smiley mark drops in the\ngutter as PUNCTUATION. Next: a big \"EXPERIENCE THE ULTIMATE\nCOWORKING LIFESTYLE\" headline in Windsor with a HANDWRITTEN SCRIPT\n\"As Seen on TV!\" callout in seafoam (Caveat) beneath. A 3-TAB\nWIDGET (Hot Desking / Permanent Desk / Private Studio) crossfades\nits body card + big photo panel per tab. Below: TESTIMONIALS AS\nPOST-IT NOTES — 2-3 sticky-note-aesthetic cards (yellow, orange,\nlime rectangles at ~360x240px, sharp corners, subtle static\nrotation of -2deg / 0deg / +3deg, typewriter-style body copy).\nFinally, a \"COME SAY HI\" callout section: a dark deep-forest\nphoto-band (garage-door / studio-entrance photograph) with a CREAM\nCARD OVERLAY in the center reading \"Come Say Hi\" (Windsor 48px),\n\"Seeing is believing, baby\" (script 24px), a two-line body block,\nand a DEEP-FOREST OUTLINED BUTTON reading \"Arrange a visit.\"\nFooter at the bottom: acknowledgement paragraph on the left, giant\noutlined wordmark + small building illustration in the middle,\nutility links (Home / Join / About / The Space / Our Members /\nContact) top-left column. Brand character sits in the outlined\nyellow wordmark, the full-bleed photography, the multi-color\nscattered accents used SPARINGLY, and the handwritten-script\nsignature moments — not in decoration, not in polish, not in\nuniform grids.\n",
|
|
32
|
+
} as const;
|
|
33
|
+
|
|
34
|
+
export type Tokens = typeof tokens;
|