spirewise 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -15
- package/bin/cli.js +65 -37
- package/install.sh +3 -3
- package/package.json +2 -4
- package/skills/README.md +0 -1
- package/skills/ai-agent-os-design-system/README.md +105 -0
- package/skills/ai-agent-os-design-system/SKILL.md +195 -0
- package/skills/ai-agent-os-design-system/accessibility-system.md +67 -0
- package/skills/ai-agent-os-design-system/color-system.md +102 -0
- package/skills/ai-agent-os-design-system/component-library.md +147 -0
- package/skills/ai-agent-os-design-system/design-principles.md +79 -0
- package/skills/ai-agent-os-design-system/example-page-structures.md +93 -0
- package/skills/ai-agent-os-design-system/layout-system.md +74 -0
- package/skills/ai-agent-os-design-system/motion-system.md +85 -0
- package/skills/ai-agent-os-design-system/spacing-system.md +87 -0
- package/skills/ai-agent-os-design-system/typography-system.md +91 -0
- package/skills/ai-agent-os-design-system/website-generation-rules.md +192 -0
- package/skills/ai-dark-futuristic-design-system/README.md +91 -0
- package/skills/ai-dark-futuristic-design-system/SKILL.md +179 -0
- package/skills/ai-dark-futuristic-design-system/accessibility-system.md +61 -0
- package/skills/ai-dark-futuristic-design-system/color-system.md +99 -0
- package/skills/ai-dark-futuristic-design-system/component-library.md +140 -0
- package/skills/ai-dark-futuristic-design-system/design-principles.md +66 -0
- package/skills/ai-dark-futuristic-design-system/example-page-structures.md +124 -0
- package/skills/ai-dark-futuristic-design-system/layout-system.md +85 -0
- package/skills/ai-dark-futuristic-design-system/motion-system.md +76 -0
- package/skills/ai-dark-futuristic-design-system/spacing-system.md +73 -0
- package/skills/ai-dark-futuristic-design-system/typography-system.md +89 -0
- package/skills/ai-dark-futuristic-design-system/website-generation-rules.md +220 -0
- package/skills/apple-premium-minimal-design-system/README.md +95 -0
- package/skills/apple-premium-minimal-design-system/SKILL.md +166 -0
- package/skills/apple-premium-minimal-design-system/accessibility-system.md +60 -0
- package/skills/apple-premium-minimal-design-system/color-system.md +100 -0
- package/skills/apple-premium-minimal-design-system/component-library.md +136 -0
- package/skills/apple-premium-minimal-design-system/design-principles.md +65 -0
- package/skills/apple-premium-minimal-design-system/example-page-structures.md +90 -0
- package/skills/apple-premium-minimal-design-system/layout-system.md +89 -0
- package/skills/apple-premium-minimal-design-system/motion-system.md +75 -0
- package/skills/apple-premium-minimal-design-system/spacing-system.md +73 -0
- package/skills/apple-premium-minimal-design-system/typography-system.md +86 -0
- package/skills/apple-premium-minimal-design-system/website-generation-rules.md +207 -0
- package/skills/bento-grid-design-system/README.md +97 -0
- package/skills/bento-grid-design-system/SKILL.md +185 -0
- package/skills/bento-grid-design-system/accessibility-system.md +54 -0
- package/skills/bento-grid-design-system/color-system.md +98 -0
- package/skills/bento-grid-design-system/component-library.md +138 -0
- package/skills/bento-grid-design-system/design-principles.md +72 -0
- package/skills/bento-grid-design-system/example-page-structures.md +91 -0
- package/skills/bento-grid-design-system/layout-system.md +93 -0
- package/skills/bento-grid-design-system/motion-system.md +81 -0
- package/skills/bento-grid-design-system/spacing-system.md +77 -0
- package/skills/bento-grid-design-system/typography-system.md +85 -0
- package/skills/bento-grid-design-system/website-generation-rules.md +193 -0
- package/skills/brutalist-tech-design-system/README.md +100 -0
- package/skills/brutalist-tech-design-system/SKILL.md +185 -0
- package/skills/brutalist-tech-design-system/accessibility-system.md +61 -0
- package/skills/brutalist-tech-design-system/color-system.md +101 -0
- package/skills/brutalist-tech-design-system/component-library.md +117 -0
- package/skills/brutalist-tech-design-system/design-principles.md +73 -0
- package/skills/brutalist-tech-design-system/example-page-structures.md +92 -0
- package/skills/brutalist-tech-design-system/layout-system.md +74 -0
- package/skills/brutalist-tech-design-system/motion-system.md +80 -0
- package/skills/brutalist-tech-design-system/spacing-system.md +86 -0
- package/skills/brutalist-tech-design-system/typography-system.md +94 -0
- package/skills/brutalist-tech-design-system/website-generation-rules.md +195 -0
- package/skills/crunchbase-profile-generator/README.md +64 -0
- package/skills/crunchbase-profile-generator/SKILL.md +189 -0
- package/skills/editorial-luxury-design-system/README.md +98 -0
- package/skills/editorial-luxury-design-system/SKILL.md +187 -0
- package/skills/editorial-luxury-design-system/accessibility-system.md +63 -0
- package/skills/editorial-luxury-design-system/color-system.md +95 -0
- package/skills/editorial-luxury-design-system/component-library.md +131 -0
- package/skills/editorial-luxury-design-system/design-principles.md +77 -0
- package/skills/editorial-luxury-design-system/example-page-structures.md +94 -0
- package/skills/editorial-luxury-design-system/layout-system.md +80 -0
- package/skills/editorial-luxury-design-system/motion-system.md +82 -0
- package/skills/editorial-luxury-design-system/spacing-system.md +77 -0
- package/skills/editorial-luxury-design-system/typography-system.md +107 -0
- package/skills/editorial-luxury-design-system/website-generation-rules.md +194 -0
- package/skills/enterprise-data-viz-design-system/README.md +98 -0
- package/skills/enterprise-data-viz-design-system/SKILL.md +195 -0
- package/skills/enterprise-data-viz-design-system/accessibility-system.md +68 -0
- package/skills/enterprise-data-viz-design-system/color-system.md +112 -0
- package/skills/enterprise-data-viz-design-system/component-library.md +142 -0
- package/skills/enterprise-data-viz-design-system/design-principles.md +75 -0
- package/skills/enterprise-data-viz-design-system/example-page-structures.md +89 -0
- package/skills/enterprise-data-viz-design-system/layout-system.md +75 -0
- package/skills/enterprise-data-viz-design-system/motion-system.md +86 -0
- package/skills/enterprise-data-viz-design-system/spacing-system.md +85 -0
- package/skills/enterprise-data-viz-design-system/typography-system.md +100 -0
- package/skills/enterprise-data-viz-design-system/website-generation-rules.md +196 -0
- package/skills/f6s-copywriting/README.md +16 -6
- package/skills/f6s-copywriting/SKILL.md +162 -46
- package/skills/glassmorphism-design-system/README.md +98 -0
- package/skills/glassmorphism-design-system/SKILL.md +190 -0
- package/skills/glassmorphism-design-system/accessibility-system.md +62 -0
- package/skills/glassmorphism-design-system/color-system.md +128 -0
- package/skills/glassmorphism-design-system/component-library.md +120 -0
- package/skills/glassmorphism-design-system/design-principles.md +77 -0
- package/skills/glassmorphism-design-system/example-page-structures.md +92 -0
- package/skills/glassmorphism-design-system/layout-system.md +81 -0
- package/skills/glassmorphism-design-system/motion-system.md +86 -0
- package/skills/glassmorphism-design-system/spacing-system.md +73 -0
- package/skills/glassmorphism-design-system/typography-system.md +90 -0
- package/skills/glassmorphism-design-system/website-generation-rules.md +195 -0
- package/skills/linkedin-copywriting/README.md +15 -8
- package/skills/linkedin-copywriting/SKILL.md +129 -51
- package/skills/motion-storytelling-design-system/README.md +100 -0
- package/skills/motion-storytelling-design-system/SKILL.md +191 -0
- package/skills/motion-storytelling-design-system/accessibility-system.md +71 -0
- package/skills/motion-storytelling-design-system/color-system.md +101 -0
- package/skills/motion-storytelling-design-system/component-library.md +122 -0
- package/skills/motion-storytelling-design-system/design-principles.md +81 -0
- package/skills/motion-storytelling-design-system/example-page-structures.md +91 -0
- package/skills/motion-storytelling-design-system/layout-system.md +79 -0
- package/skills/motion-storytelling-design-system/motion-system.md +116 -0
- package/skills/motion-storytelling-design-system/spacing-system.md +83 -0
- package/skills/motion-storytelling-design-system/typography-system.md +89 -0
- package/skills/motion-storytelling-design-system/website-generation-rules.md +200 -0
- package/skills/nvidia-inception-idea-booster/README.md +43 -24
- package/skills/nvidia-inception-idea-booster/SKILL.md +260 -116
- package/skills/nvidia-inception-starter/README.md +6 -5
- package/skills/nvidia-inception-starter/SKILL.md +80 -43
- package/skills/nvidia-product-inventor/README.md +44 -37
- package/skills/nvidia-product-inventor/SKILL.md +265 -227
- package/skills/nvidia-startup-idea-founder/README.md +66 -26
- package/skills/nvidia-startup-idea-founder/SKILL.md +245 -189
- package/skills/product-demo-first-design-system/README.md +96 -0
- package/skills/product-demo-first-design-system/SKILL.md +185 -0
- package/skills/product-demo-first-design-system/accessibility-system.md +58 -0
- package/skills/product-demo-first-design-system/color-system.md +109 -0
- package/skills/product-demo-first-design-system/component-library.md +142 -0
- package/skills/product-demo-first-design-system/design-principles.md +66 -0
- package/skills/product-demo-first-design-system/example-page-structures.md +95 -0
- package/skills/product-demo-first-design-system/layout-system.md +76 -0
- package/skills/product-demo-first-design-system/motion-system.md +82 -0
- package/skills/product-demo-first-design-system/spacing-system.md +74 -0
- package/skills/product-demo-first-design-system/typography-system.md +87 -0
- package/skills/product-demo-first-design-system/website-generation-rules.md +194 -0
- package/skills/website-design-skills/01-proof/README.md +0 -47
- package/skills/website-design-skills/01-proof/SKILL.md +0 -303
- package/skills/website-design-skills/02-kajabi/README.md +0 -42
- package/skills/website-design-skills/02-kajabi/SKILL.md +0 -272
- package/skills/website-design-skills/03-lattice/README.md +0 -42
- package/skills/website-design-skills/03-lattice/SKILL.md +0 -271
- package/skills/website-design-skills/04-petal/README.md +0 -42
- package/skills/website-design-skills/04-petal/SKILL.md +0 -271
- package/skills/website-design-skills/05-dropbox-sign/README.md +0 -42
- package/skills/website-design-skills/05-dropbox-sign/SKILL.md +0 -271
- package/skills/website-design-skills/06-distributional/README.md +0 -42
- package/skills/website-design-skills/06-distributional/SKILL.md +0 -271
- package/skills/website-design-skills/07-appcues/README.md +0 -42
- package/skills/website-design-skills/07-appcues/SKILL.md +0 -271
- package/skills/website-design-skills/08-memberstack/README.md +0 -42
- package/skills/website-design-skills/08-memberstack/SKILL.md +0 -271
- package/skills/website-design-skills/09-flank/README.md +0 -42
- package/skills/website-design-skills/09-flank/SKILL.md +0 -275
- package/skills/website-design-skills/10-slidebean/README.md +0 -42
- package/skills/website-design-skills/10-slidebean/SKILL.md +0 -275
- package/skills/website-design-skills/11-formstack/README.md +0 -42
- package/skills/website-design-skills/11-formstack/SKILL.md +0 -275
- package/skills/website-design-skills/12-thalamus/README.md +0 -42
- package/skills/website-design-skills/12-thalamus/SKILL.md +0 -275
- package/skills/website-design-skills/13-grow/README.md +0 -42
- package/skills/website-design-skills/13-grow/SKILL.md +0 -275
- package/skills/website-design-skills/14-gemnote/README.md +0 -42
- package/skills/website-design-skills/14-gemnote/SKILL.md +0 -275
- package/skills/website-design-skills/15-draftbit/README.md +0 -42
- package/skills/website-design-skills/15-draftbit/SKILL.md +0 -275
- package/skills/website-design-skills/16-payman/README.md +0 -42
- package/skills/website-design-skills/16-payman/SKILL.md +0 -273
- package/skills/website-design-skills/17-effortel/README.md +0 -42
- package/skills/website-design-skills/17-effortel/SKILL.md +0 -272
- package/skills/website-design-skills/18-adopt/README.md +0 -42
- package/skills/website-design-skills/18-adopt/SKILL.md +0 -273
- package/skills/website-design-skills/19-kraftful/README.md +0 -42
- package/skills/website-design-skills/19-kraftful/SKILL.md +0 -273
- package/skills/website-design-skills/20-greenhouse/README.md +0 -42
- package/skills/website-design-skills/20-greenhouse/SKILL.md +0 -273
- package/skills/website-design-skills/21-weavy/README.md +0 -42
- package/skills/website-design-skills/21-weavy/SKILL.md +0 -273
- package/skills/website-design-skills/22-safetykit/README.md +0 -42
- package/skills/website-design-skills/22-safetykit/SKILL.md +0 -273
- package/skills/website-design-skills/23-modulify/README.md +0 -42
- package/skills/website-design-skills/23-modulify/SKILL.md +0 -270
- package/skills/website-design-skills/24-realm/README.md +0 -42
- package/skills/website-design-skills/24-realm/SKILL.md +0 -270
- package/skills/website-design-skills/25-modyfi/README.md +0 -42
- package/skills/website-design-skills/25-modyfi/SKILL.md +0 -269
- package/skills/website-design-skills/26-altitude/README.md +0 -42
- package/skills/website-design-skills/26-altitude/SKILL.md +0 -270
- package/skills/website-design-skills/27-way/README.md +0 -42
- package/skills/website-design-skills/27-way/SKILL.md +0 -270
- package/skills/website-design-skills/28-zentail/README.md +0 -42
- package/skills/website-design-skills/28-zentail/SKILL.md +0 -270
- package/skills/website-design-skills/29-zams/README.md +0 -42
- package/skills/website-design-skills/29-zams/SKILL.md +0 -270
- package/skills/website-design-skills/30-user-interviews/README.md +0 -44
- package/skills/website-design-skills/30-user-interviews/SKILL.md +0 -273
- package/skills/website-design-skills/31-bland/README.md +0 -44
- package/skills/website-design-skills/31-bland/SKILL.md +0 -273
- package/skills/website-design-skills/32-nauto/README.md +0 -44
- package/skills/website-design-skills/32-nauto/SKILL.md +0 -273
- package/skills/website-design-skills/33-bill/README.md +0 -44
- package/skills/website-design-skills/33-bill/SKILL.md +0 -273
- package/skills/website-design-skills/34-localyzer/README.md +0 -44
- package/skills/website-design-skills/34-localyzer/SKILL.md +0 -273
- package/skills/website-design-skills/35-jasper/README.md +0 -44
- package/skills/website-design-skills/35-jasper/SKILL.md +0 -273
- package/skills/website-design-skills/README.md +0 -108
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Accessibility System — Bento Grid
|
|
2
|
+
|
|
3
|
+
Bento layouts add a11y risk around **reading order, link-wrapped tiles, and dense grids**.
|
|
4
|
+
This system bakes WCAG 2.1 AA into the look, including the tile/grid patterns.
|
|
5
|
+
|
|
6
|
+
## Color & contrast
|
|
7
|
+
- **Body text ≥ 4.5:1**, large/UI text **≥ 3:1**, on the tile's real surface — check
|
|
8
|
+
light tiles (`--tile`), accent tiles (`--text-on-accent` on `--grad-accent`), and dark
|
|
9
|
+
tiles (`--text-on-dark` on `--tile-dark`). Use `--text-secondary`/`--text-muted` for
|
|
10
|
+
content; never `--text-faint` for real text.
|
|
11
|
+
- **Non-text contrast ≥ 3:1** for tile hairlines that carry meaning, icons, focus rings.
|
|
12
|
+
- **Don't encode meaning in color alone** — status pairs color with an icon/label; the
|
|
13
|
+
highlighted pricing tile says "Most popular" in text, not just color.
|
|
14
|
+
- **Gradient/low-contrast text banned for body**; `--grad-text` only on large hero display.
|
|
15
|
+
|
|
16
|
+
## Reading order & structure (key for grids)
|
|
17
|
+
- **DOM order = reading order.** Author tiles in a sensible reading order; `grid-auto-flow:
|
|
18
|
+
dense` may move tiles *visually*, so verify the DOM order still makes sense (anchor →
|
|
19
|
+
supporting) for screen readers and keyboard users. Avoid large visual/DOM mismatches.
|
|
20
|
+
- One `<h1>` per page; each tile with a title uses a real heading (`<h3>`/`<h4>`) so the
|
|
21
|
+
page has a coherent outline. Landmarks: `<header><nav><main id="main"><section><footer>`.
|
|
22
|
+
- A bento that's a list of similar items can be a `<ul>` of `<li>` tiles for semantics.
|
|
23
|
+
|
|
24
|
+
## Tiles as links/controls
|
|
25
|
+
- A clickable tile should wrap its content in a single `<a href>` (or be a `<button>`),
|
|
26
|
+
containing a real heading — not a div with a click handler. One primary link per tile
|
|
27
|
+
(avoid nested interactive elements that confuse focus order).
|
|
28
|
+
- Every interactive tile/element has **visible focus**: `:focus-visible { outline:2px
|
|
29
|
+
solid var(--ring); outline-offset:2px }`. Never bare `outline:none`.
|
|
30
|
+
- **Keyboard:** all tiles/controls reachable and operable; logical tab order; no traps
|
|
31
|
+
(except intended modal focus-trap with ESC). **Skip link** to `#main` first in DOM.
|
|
32
|
+
|
|
33
|
+
## Media & motion
|
|
34
|
+
- Informative tile media has meaningful **`alt`**; decorative visuals (spotlight glows,
|
|
35
|
+
faint gradients, mock chrome) are `aria-hidden`/`alt=""`.
|
|
36
|
+
- Honor `prefers-reduced-motion` (see motion-system): tiles appear in final state; no
|
|
37
|
+
spotlight/parallax/marquee; metric count-ups render final value in DOM.
|
|
38
|
+
- No flashing > 3×/sec; no autoplaying audio.
|
|
39
|
+
|
|
40
|
+
## Forms
|
|
41
|
+
- Programmatic `<label>` per input (placeholders aren't labels); `<fieldset><legend>` for
|
|
42
|
+
groups; errors in text + `aria-describedby`, focus to first error.
|
|
43
|
+
|
|
44
|
+
## Touch & responsive
|
|
45
|
+
- **Tap targets ≥ 44×44px** (incl. small tiles acting as links). The grid reflows
|
|
46
|
+
6→4→2→1 columns; no horizontal scroll at 320px; 200% zoom OK; pinch-zoom not disabled.
|
|
47
|
+
|
|
48
|
+
## Checklist (run before finishing)
|
|
49
|
+
1. Text/icons meet AA contrast on light, accent, **and** dark tiles.
|
|
50
|
+
2. DOM/reading order is sensible despite `dense` flow; tiles use real headings; landmarks + one H1.
|
|
51
|
+
3. Clickable tiles are real links/buttons wrapping a heading; visible focus; keyboard-complete; skip link.
|
|
52
|
+
4. Informative tile media has alt; decorative hidden; reduced-motion honored.
|
|
53
|
+
5. Labelled, error-accessible forms.
|
|
54
|
+
6. 44px targets; grid reflows to single column at 320px; 200% zoom; zoom not disabled.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Color System — Bento Grid
|
|
2
|
+
|
|
3
|
+
A versatile palette built around **tiles**: a calm canvas, soft tile surfaces with gentle
|
|
4
|
+
elevation and faint per-tile gradients, one restrained accent, and accessible text. Ships
|
|
5
|
+
**light by default** with a **dark base** included — the bento system works in both.
|
|
6
|
+
Sections separate via panels + grid gaps + tile surfaces — **never borders**. Override
|
|
7
|
+
only `--accent-*` to rebrand. Contrast: body ≥ 4.5:1, large/secondary ≥ 3:1.
|
|
8
|
+
|
|
9
|
+
## Tokens (`:root`) — light base (default)
|
|
10
|
+
|
|
11
|
+
```css
|
|
12
|
+
:root {
|
|
13
|
+
/* ---- Canvas + section panels ---- */
|
|
14
|
+
--bg-canvas: #f6f7f9; /* page background (tiles float on this) */
|
|
15
|
+
--bg-white: #ffffff; /* white section panel */
|
|
16
|
+
--bg-muted: #eef0f4; /* alternate section panel */
|
|
17
|
+
|
|
18
|
+
/* ---- Tile surfaces (the bento cards) ---- */
|
|
19
|
+
--tile: #ffffff; /* default tile */
|
|
20
|
+
--tile-alt: #f3f5f8; /* secondary tile (for contrast within a grid) */
|
|
21
|
+
--tile-accent: #f1f0ff; /* highlight/CTA tile (accent-tinted) */
|
|
22
|
+
--tile-dark: #0e1116; /* a "dark feature" tile on a light page (media/code) */
|
|
23
|
+
--tile-glass: rgba(255,255,255,0.7); /* glass tile (sparingly) */
|
|
24
|
+
|
|
25
|
+
/* ---- Text ramp ---- */
|
|
26
|
+
--text-primary: #0c0e14;
|
|
27
|
+
--text-secondary: #3b4250;
|
|
28
|
+
--text-muted: #6a7283;
|
|
29
|
+
--text-faint: #9aa1b0; /* decorative/disabled — non-essential only */
|
|
30
|
+
--text-on-accent: #ffffff;
|
|
31
|
+
--text-on-dark: #e7eaf0; /* text inside --tile-dark */
|
|
32
|
+
|
|
33
|
+
/* ---- Borders / hairlines (tile edges/inputs — NOT between sections) ---- */
|
|
34
|
+
--border-subtle: rgba(12,14,20,0.06);
|
|
35
|
+
--border-default: rgba(12,14,20,0.10);
|
|
36
|
+
--border-strong: rgba(12,14,20,0.16);
|
|
37
|
+
--ring: #6d5efc; /* focus ring */
|
|
38
|
+
|
|
39
|
+
/* ---- Accent ---- */
|
|
40
|
+
--accent: #6d5efc; /* violet-indigo — primary actions/links/highlights */
|
|
41
|
+
--accent-hover: #7d70ff;
|
|
42
|
+
--accent-press: #5a4ce6;
|
|
43
|
+
--accent-2: #18b4c9; /* teal — secondary highlight */
|
|
44
|
+
--accent-soft: rgba(109,94,252,0.10);
|
|
45
|
+
|
|
46
|
+
/* ---- Semantic ---- */
|
|
47
|
+
--success: #1aa35a; --success-soft: rgba(26,163,90,0.12);
|
|
48
|
+
--warning: #b4690e; --warning-soft: rgba(180,105,14,0.12);
|
|
49
|
+
--error: #d92d3c; --error-soft: rgba(217,45,60,0.12);
|
|
50
|
+
--info: #6d5efc; --info-soft: rgba(109,94,252,0.12);
|
|
51
|
+
|
|
52
|
+
/* ---- Gradients (faint, per-tile accents) ---- */
|
|
53
|
+
--grad-tile: linear-gradient(160deg, #ffffff 0%, #f3f2ff 100%); /* subtle tile sheen */
|
|
54
|
+
--grad-accent: linear-gradient(135deg, #6d5efc 0%, #18b4c9 100%); /* accent/CTA tile */
|
|
55
|
+
--grad-spot: radial-gradient(70% 80% at 30% 0%, rgba(109,94,252,0.14) 0%, transparent 60%);
|
|
56
|
+
--grad-text: linear-gradient(90deg, #0c0e14 0%, #6d5efc 100%);
|
|
57
|
+
|
|
58
|
+
/* ---- Elevation (tiles float gently) ---- */
|
|
59
|
+
--shadow-sm: 0 1px 2px rgba(12,14,20,0.05);
|
|
60
|
+
--shadow-md: 0 8px 24px rgba(12,14,20,0.08);
|
|
61
|
+
--shadow-lg: 0 24px 56px rgba(12,14,20,0.12);
|
|
62
|
+
--shadow-tile: 0 2px 6px rgba(12,14,20,0.05), 0 16px 40px rgba(12,14,20,0.06);
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Palette roles
|
|
67
|
+
|
|
68
|
+
- **Canvas + panels** (`--bg-*`): full-bleed section fills; alternate `--bg-canvas`/
|
|
69
|
+
`--bg-muted`/white between sections to separate by color — **never a border**.
|
|
70
|
+
- **Tile surfaces** (`--tile*`): the bento cards. Mix `--tile`, `--tile-alt`, an
|
|
71
|
+
accent-tinted `--tile-accent`, and an occasional **dark feature tile** (`--tile-dark`
|
|
72
|
+
with `--text-on-dark`) to vary the grid. All use `--shadow-tile` + large radius.
|
|
73
|
+
- **Text** (`--text-*`): primary tile titles, secondary tile body, muted meta. Use
|
|
74
|
+
`--text-on-dark` inside dark tiles. Never `--text-faint` for real content.
|
|
75
|
+
- **Borders** (`--border-*`): hairline tile edges/inputs only — not section dividers.
|
|
76
|
+
- **Accent** (`--accent*`): primary CTA, links, and 1–2 highlight tiles per section
|
|
77
|
+
(e.g., the CTA tile via `--grad-accent`). `--accent-2` for secondary highlights.
|
|
78
|
+
- **Gradients** (`--grad-*`): `--grad-tile` as a faint sheen on a few tiles; `--grad-spot`
|
|
79
|
+
behind a hero bento; `--grad-accent` on the CTA/highlight tile; `--grad-text` on one
|
|
80
|
+
hero phrase. Subtle, not on every tile.
|
|
81
|
+
- **Success / Warning / Error / Info**: status, badges, validation only.
|
|
82
|
+
|
|
83
|
+
## Usage rules
|
|
84
|
+
|
|
85
|
+
1. **Vary tiles, not chaos.** Within a grid, alternate `--tile`/`--tile-alt` and add **one**
|
|
86
|
+
accent or dark tile for focus — keep it cohesive.
|
|
87
|
+
2. **Separate sections with panels + gaps + tile surfaces, not lines.** Mandatory.
|
|
88
|
+
3. **Faint gradients only.** At most a couple of subtly-gradient tiles per section; never
|
|
89
|
+
rainbow or every-tile-gradient (anti-pattern).
|
|
90
|
+
4. **Consistent elevation/radius** across tiles so the grid reads as one set.
|
|
91
|
+
5. **Check contrast** on light tiles, accent tiles, and dark tiles (`--text-on-dark`).
|
|
92
|
+
|
|
93
|
+
## Optional dark base
|
|
94
|
+
|
|
95
|
+
`[data-theme="dark"]`: `--bg-canvas:#070809; --bg-white:#0e1014; --bg-muted:#14171d;
|
|
96
|
+
--tile:#12151c; --tile-alt:#0e1116; --tile-accent:#171a2e; --text-primary:#f4f6fb;
|
|
97
|
+
--text-secondary:#c4cad6; --text-muted:#8a92a6; --accent:#8b7bff;` and re-verify
|
|
98
|
+
contrast. Bento works equally well dark; **light is the default identity.**
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Component Library — Bento Grid
|
|
2
|
+
|
|
3
|
+
Specs for the 17 required components **plus the Bento Grid engine and Bento Tile
|
|
4
|
+
variants** that define this system. Each: purpose, anatomy, tokens, states, responsive +
|
|
5
|
+
a11y. Semantic HTML; shared tokens; **no borders between sections** (tile surfaces +
|
|
6
|
+
grid gaps separate ideas; whitespace/panels separate sections).
|
|
7
|
+
|
|
8
|
+
Shared primitives:
|
|
9
|
+
|
|
10
|
+
```css
|
|
11
|
+
.btn { display:inline-flex; align-items:center; gap: var(--space-2);
|
|
12
|
+
font-weight:600; font-size:.9375rem; padding: var(--space-3) var(--space-6);
|
|
13
|
+
border-radius: var(--radius-pill); border:1px solid transparent; cursor:pointer;
|
|
14
|
+
transition: transform .15s ease, background .2s ease, box-shadow .2s ease; }
|
|
15
|
+
.btn:active { transform: translateY(1px); }
|
|
16
|
+
.btn-primary { background: var(--accent); color: var(--text-on-accent); }
|
|
17
|
+
.btn-primary:hover { background: var(--accent-hover); }
|
|
18
|
+
.btn-secondary { background: var(--tile-alt); color: var(--text-primary);
|
|
19
|
+
border-color: var(--border-default); }
|
|
20
|
+
:where(a,button,input,[tabindex]):focus-visible { outline:2px solid var(--ring);
|
|
21
|
+
outline-offset:2px; border-radius: var(--radius-sm); }
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## ★ Bento Grid (the signature) — see layout-system for the engine
|
|
25
|
+
```css
|
|
26
|
+
.bento { display:grid; grid-template-columns:repeat(6,1fr);
|
|
27
|
+
grid-auto-rows:var(--bento-row); gap:var(--bento-gap); grid-auto-flow:dense; }
|
|
28
|
+
.tile { background: var(--tile); border:1px solid var(--border-subtle);
|
|
29
|
+
border-radius: var(--radius-tile); padding: var(--tile-pad);
|
|
30
|
+
box-shadow: var(--shadow-tile); display:flex; flex-direction:column; gap: var(--stack);
|
|
31
|
+
position:relative; overflow:hidden; transition: transform .2s ease, box-shadow .2s ease; }
|
|
32
|
+
.tile:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }
|
|
33
|
+
.tile--alt { background: var(--tile-alt); }
|
|
34
|
+
.tile--accent { background: var(--grad-accent); color: var(--text-on-accent); }
|
|
35
|
+
.tile--dark { background: var(--tile-dark); color: var(--text-on-dark); }
|
|
36
|
+
.tile--glass { background: var(--tile-glass); backdrop-filter: blur(12px); }
|
|
37
|
+
```
|
|
38
|
+
Each section's bento has **one anchor tile + varied-span supporting tiles**, one idea per
|
|
39
|
+
tile, mixed content types. Tiles are keyboard/focus accessible if interactive
|
|
40
|
+
(link-wrapped tile → `<a class="tile">` with a real heading inside).
|
|
41
|
+
|
|
42
|
+
## ★ Bento Tile variants
|
|
43
|
+
- **Feature tile** — icon + title + short body (+ optional mini visual). The workhorse.
|
|
44
|
+
- **Metric tile** — big tabular-nums number + label (stat).
|
|
45
|
+
- **Media tile** — image/clip filling the tile (`object-fit:cover`), title overlaid.
|
|
46
|
+
- **Code tile** — `--tile-dark`, mono snippet + filename/copy (a mini Code Preview).
|
|
47
|
+
- **Quote tile** — short testimonial + avatar/name (a mini testimonial).
|
|
48
|
+
- **Integration tile** — a logo + name (small `t-1x1`/`t-2x1`).
|
|
49
|
+
- **CTA tile** — `--tile--accent` with headline + button (the section's primary action).
|
|
50
|
+
- **List tile** — a compact checklist (e.g., "What's included").
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 1. Navbar (+ dropdown/mega-menu + breadcrumb)
|
|
55
|
+
Sticky glass bar. Logo · nav links · primary CTA + "Sign in" · mobile hamburger.
|
|
56
|
+
**Extensionless hrefs** (`/platform`). **Dropdown/mega-menu** (vanilla JS) opens a
|
|
57
|
+
multi-column panel — itself often a mini bento of link tiles. Mobile: full-screen
|
|
58
|
+
overlay, accordion, focus-trap, ESC. **Breadcrumb** on deep pages. a11y:
|
|
59
|
+
`aria-haspopup/expanded`, `aria-current="page"`.
|
|
60
|
+
|
|
61
|
+
## 2. Hero
|
|
62
|
+
Layout HB-A (hero bento) or HB-B (split + bento). Eyebrow · H1 (optional `--grad-text`
|
|
63
|
+
on one word) · lead · CTA pair, plus a **bento** of an anchor tile (product/headline) +
|
|
64
|
+
small stat/logo/CTA tiles. One H1, one primary CTA. `--grad-spot` behind. Decorative glow `aria-hidden`.
|
|
65
|
+
|
|
66
|
+
## 3. Feature Grid → **Capabilities bento**
|
|
67
|
+
Layout FB-A/FB-B. A bento of **Feature tiles** with one anchor feature (`t-3x2`) and
|
|
68
|
+
supporting tiles of mixed content. Hover lift. This is the core feature section.
|
|
69
|
+
|
|
70
|
+
## 4. Bento Grid (component)
|
|
71
|
+
The reusable grid + tile set above — used by most sections. Always anchor + varied spans,
|
|
72
|
+
one idea per tile, real content (no empty/filler tiles).
|
|
73
|
+
|
|
74
|
+
## 5. Testimonials
|
|
75
|
+
**Quote tiles** in a bento (one large featured quote `t-3x2` + small quote tiles), or a
|
|
76
|
+
3-up quote grid. `<blockquote>` + `<cite>`; carousel optional with prev/next.
|
|
77
|
+
|
|
78
|
+
## 6. Logos Section → **Logo bento**
|
|
79
|
+
Integration/customer logos as small **Integration tiles** + one "why teams choose us"
|
|
80
|
+
anchor tile; or a simple monochrome logo row. Logos `<img alt="Company">`.
|
|
81
|
+
|
|
82
|
+
## 7. Pricing
|
|
83
|
+
Layout P-A/P-B. Tiers as tiles (price tabular-nums, feature list, CTA); highlighted tier
|
|
84
|
+
`--tile--accent`/ring + "Most popular"; monthly/annual toggle. a11y: real `role="switch"`/radio.
|
|
85
|
+
|
|
86
|
+
## 8. FAQ
|
|
87
|
+
Accordion (Q-A) or **FAQ-as-tiles** (Q-B: each Q/A a tile). Accordion: `<button>` +
|
|
88
|
+
collapsible answer, height/opacity animation. a11y: `aria-expanded`/`aria-controls`.
|
|
89
|
+
|
|
90
|
+
## 9. CTA → **CTA tile band**
|
|
91
|
+
A prominent **CTA tile** (`--tile--accent`, `--grad-accent`) with headline + primary
|
|
92
|
+
button (+ secondary text link), full-width or anchoring a small bento. `--section-y-lg`, no border.
|
|
93
|
+
|
|
94
|
+
## 10. Footer
|
|
95
|
+
FT-A: brand · 4–6 link columns · legal · locale/social. Muted text, generous space, soft
|
|
96
|
+
panel; columns can be light tiles. `<footer>`, `<nav>` link lists.
|
|
97
|
+
|
|
98
|
+
## 11. Dashboard Preview
|
|
99
|
+
A product screenshot/app shell inside a large **Media/Dashboard tile** (anchor), with
|
|
100
|
+
real-looking data, soft elevation, optional parallax. Decorative → `aria-hidden`;
|
|
101
|
+
informative → alt text.
|
|
102
|
+
|
|
103
|
+
## 12. Agent Workflow Section
|
|
104
|
+
Steps as connected tiles (Plan → Retrieve → Act → Verify), or one anchor tile showing the
|
|
105
|
+
agent + small step tiles. Animate sequential reveal. a11y: `<ol>` text equivalent.
|
|
106
|
+
|
|
107
|
+
## 13. Code Preview → **Code tile**
|
|
108
|
+
`--tile--dark` mono snippet with filename tab + copy button (+ optional language tabs).
|
|
109
|
+
Low-saturation syntax tint. `<pre><code>`; copy `aria-label`.
|
|
110
|
+
|
|
111
|
+
## 14. Terminal Preview
|
|
112
|
+
A dark **Code tile** styled as a terminal (header + prompt lines; optional typewriter →
|
|
113
|
+
final state under reduced motion). Real text, not an image.
|
|
114
|
+
|
|
115
|
+
## 15. Trust Section → **Stat bento**
|
|
116
|
+
**Metric tiles** (big tabular-nums numbers + muted labels; count-up on reveal, final
|
|
117
|
+
value in DOM) + one wide quote/logo band tile (`t-6x1`). Accent on numbers only.
|
|
118
|
+
|
|
119
|
+
## 16. Security Section
|
|
120
|
+
Compliance badges (SOC 2/ISO/GDPR/HIPAA) + assurances (encryption, SSO/SAML, audit logs)
|
|
121
|
+
as small **List/Feature tiles** + a "Read security docs" link. Badges have alt text.
|
|
122
|
+
|
|
123
|
+
## 17. Enterprise Section
|
|
124
|
+
"Built for enterprise" bento: SSO/RBAC/SLAs/VPC value props as tiles + a "Talk to sales"
|
|
125
|
+
**CTA tile** + optional logo bento. Soft panels, no border.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Component rules
|
|
130
|
+
- **Bento-first:** prefer composing sections as bentos with an anchor + varied spans;
|
|
131
|
+
one idea per tile; vary content types; never empty/filler tiles.
|
|
132
|
+
- Compose from shared `.btn`/`.tile`/tokens — no bespoke colors/radii per component.
|
|
133
|
+
- Every interactive tile/element has hover **and** `:focus-visible`; link-tiles wrap a
|
|
134
|
+
real heading; tiles are keyboard navigable.
|
|
135
|
+
- Every component reflows to fewer columns / single column by `md`/`sm` (grid engine).
|
|
136
|
+
- Decorative visuals `aria-hidden`; informative tile media has meaningful `alt`.
|
|
137
|
+
- Restraint: ≤ a couple of subtly-gradient/accent tiles per section; hairlines only on
|
|
138
|
+
tiles/inputs — **never between page sections**.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Design Principles — Bento Grid
|
|
2
|
+
|
|
3
|
+
The philosophy distilled from bento-led leaders (Apple product pages, Linear, Vercel,
|
|
4
|
+
Raycast, Resend, Notion) and modern AI sites (OpenAI, Anthropic, Perplexity, Cursor).
|
|
5
|
+
|
|
6
|
+
## The one-sentence philosophy
|
|
7
|
+
|
|
8
|
+
**Package every idea into a tile.** A bento page is a designed mosaic of self-contained
|
|
9
|
+
cards of varied size — each holding one thought — arranged so the page reads as a clean,
|
|
10
|
+
scannable, premium box of modules.
|
|
11
|
+
|
|
12
|
+
## Core principles
|
|
13
|
+
|
|
14
|
+
1. **Bento as the default layout.** Prefer an asymmetric grid of tiles over plain
|
|
15
|
+
stacked rows. Most sections are a bento grid.
|
|
16
|
+
2. **One idea per tile.** A tile holds a single, complete thought (feature + visual,
|
|
17
|
+
metric, quote, code, media, integration). If a tile says two things, split it.
|
|
18
|
+
3. **Span = importance.** Bigger tiles carry the more important idea; small tiles carry
|
|
19
|
+
supporting facts. Every section has **one anchor tile** that dominates.
|
|
20
|
+
4. **Varied spans, intentional rhythm.** Mix 1×1, 2×1, 1×2, 2×2 tiles into a balanced
|
|
21
|
+
composition — never a monotonous uniform grid, never random chaos.
|
|
22
|
+
5. **The grid replaces dividers.** Separation between ideas comes from grid gaps and
|
|
23
|
+
tile surfaces; separation between **sections** comes from whitespace and panels —
|
|
24
|
+
**never borders**.
|
|
25
|
+
6. **Calm canvas, characterful tiles.** The page is quiet; each tile can carry its own
|
|
26
|
+
small personality (a faint gradient, an icon, a mini visual) without overwhelming.
|
|
27
|
+
7. **Soft, rounded, elevated.** Large radii + gentle elevation make tiles feel tactile
|
|
28
|
+
and modern (Apple bento). Consistent radius/shadow across all tiles.
|
|
29
|
+
8. **Scannable first, deep second.** A visitor should grasp a section by skimming tile
|
|
30
|
+
titles; detail lives inside the tile for those who look closer.
|
|
31
|
+
9. **Quiet motion brings tiles alive.** Staggered reveals, subtle hover lift, optional
|
|
32
|
+
pointer spotlight — motion animates tiles, not the page. Honor `prefers-reduced-motion`.
|
|
33
|
+
10. **Consistency over novelty.** Reuse tile variants + tokens everywhere; a coherent
|
|
34
|
+
tile system beats bespoke one-offs.
|
|
35
|
+
|
|
36
|
+
## Visual-hierarchy laws
|
|
37
|
+
|
|
38
|
+
- **One H1 per page.** Within a bento section, the **anchor tile** is the focal point.
|
|
39
|
+
- **Size + position = hierarchy:** the largest/top-left-ish tile reads first; arrange so
|
|
40
|
+
the eye flows anchor → supporting tiles.
|
|
41
|
+
- **Contrast ladder:** primary text, secondary, muted — readable (AA). Tile titles are
|
|
42
|
+
primary; tile body secondary; tile meta muted.
|
|
43
|
+
- **One primary CTA per viewport**, often as its own accent **CTA tile** within the grid.
|
|
44
|
+
- **Group by the grid + tile surface**, not by boxes/borders around sections.
|
|
45
|
+
- **Accent = importance.** Reserve the accent for the primary action and 1–2 highlight
|
|
46
|
+
tiles per section — not every tile.
|
|
47
|
+
|
|
48
|
+
## Bento composition recipes
|
|
49
|
+
|
|
50
|
+
- **Anchor + satellites:** one 2×2 (or 2×1) anchor + four 1×1 tiles around it.
|
|
51
|
+
- **Feature trio + wide stat:** three 1×1 feature tiles + one 3×1 metric/quote band.
|
|
52
|
+
- **Hero bento:** big 2×2 product/headline tile + small tiles (stat, logo, CTA) beside.
|
|
53
|
+
- **Mosaic:** 6–9 tiles of mixed spans for a dense capabilities overview.
|
|
54
|
+
- Keep one clear anchor per recipe; vary tile content types (text, media, metric, code).
|
|
55
|
+
|
|
56
|
+
## Reference cues (what each does well)
|
|
57
|
+
|
|
58
|
+
- **Apple (product bento):** rounded elevated tiles, big anchor + small detail tiles,
|
|
59
|
+
generous gaps, calm background.
|
|
60
|
+
- **Linear / Raycast:** dark bento of feature tiles with subtle gradients + mini visuals.
|
|
61
|
+
- **Vercel / Resend:** crisp modular tiles mixing code, metrics, and product shots.
|
|
62
|
+
- **Notion / Cron:** friendly rounded tiles, clear one-idea-per-tile structure.
|
|
63
|
+
|
|
64
|
+
## Do / Don't
|
|
65
|
+
|
|
66
|
+
**Do:** design the grid (anchor + varied spans) · one idea per tile · consistent radius/
|
|
67
|
+
elevation · mix content types across tiles · calm canvas · one accent · gaps + panels to
|
|
68
|
+
separate · real tile content · graceful mobile reflow.
|
|
69
|
+
|
|
70
|
+
**Don't:** monotonous uniform grids with no anchor · empty/filler tiles · two ideas in
|
|
71
|
+
one tile · borders between sections · heavy gradients on every tile · glass overload ·
|
|
72
|
+
tiny low-contrast text · motion that distracts · stock "AI brain" clichés.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Example Page Structures — Bento Grid
|
|
2
|
+
|
|
3
|
+
Ready-to-assemble, **bento-led** page blueprints. Each section names a layout (see
|
|
4
|
+
`layout-system.md`) and components/tiles (see `component-library.md`). Most sections are
|
|
5
|
+
bento grids with **one anchor tile + varied-span supporting tiles**, one idea per tile.
|
|
6
|
+
No borders between sections (separate by whitespace + alternating panels + tile surfaces).
|
|
7
|
+
|
|
8
|
+
Legend: `HB-* / FB-* / MB-* / P-* / C-* / Q-* / FT-*` layouts · tiles/components by name.
|
|
9
|
+
|
|
10
|
+
## MANDATORY: 15+ page site map (≈20), 10+ sections/page, clean URLs
|
|
11
|
+
|
|
12
|
+
Always ship a **full multipage website with 15+ pages (≈20)** — never a single landing
|
|
13
|
+
page. Every page carries **at least 10 sections (≈12)**, **no borders/dividers between
|
|
14
|
+
sections**, pure HTML/CSS/vanilla JS, **extensionless URLs**. Required 20-page map:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/ Home /customers Customers
|
|
18
|
+
/platform Platform /case-studies Case Studies
|
|
19
|
+
/solutions Solutions /developers Developers
|
|
20
|
+
/products Products /docs Documentation ← + DOC-A subpages
|
|
21
|
+
/features Features /about About
|
|
22
|
+
/ai-agents AI Agents /careers Careers
|
|
23
|
+
/enterprise Enterprise /blog Blog ← + article pages
|
|
24
|
+
/security Security /contact Contact
|
|
25
|
+
/pricing Pricing /partners Partners
|
|
26
|
+
/resources Resources /faq FAQ
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Each blueprint below is a **10-section** skeleton — extend toward 12, never fewer than
|
|
30
|
+
10. Every page must include: **Hero (bento) · Feature Sections (bento) · Product
|
|
31
|
+
Highlights · Trust Signals · Testimonials · Use Cases · Statistics (stat bento) ·
|
|
32
|
+
Integrations · CTA (CTA tile) · Footer.**
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 1. Home (default)
|
|
37
|
+
1. **Navbar** (glass, dropdowns) — extensionless links
|
|
38
|
+
2. **Hero bento** `HB-A` — anchor tile (H1 + product/headline) + stat tile + logo tile + **CTA tile**
|
|
39
|
+
3. **Logo bento** `MB-B` — trusted-by logos as tiles
|
|
40
|
+
4. **Capabilities bento** `FB-A` — anchor feature `t-3x2` + supporting feature tiles (core)
|
|
41
|
+
5. **Anchor + satellites** `FB-B` — a second capability cluster (different content mix)
|
|
42
|
+
6. **Stat bento** `MB-A` — metric tiles + wide quote band
|
|
43
|
+
7. **Testimonials** — featured quote tile + small quote tiles
|
|
44
|
+
8. **Integrations bento** — integration tiles + "why" anchor tile
|
|
45
|
+
9. **Pricing** `P-A` (or teaser) — tiers as tiles
|
|
46
|
+
10. **CTA tile band** `C-A` + **Footer** `FT-A`
|
|
47
|
+
|
|
48
|
+
## 2. Platform / Product
|
|
49
|
+
1. Navbar · 2. **Hero bento** `HB-B` · 3. **Capabilities bento** `FB-A` · 4. **Dashboard
|
|
50
|
+
tile** (anchor media) · 5. **Anchor + satellites** `FB-B` · 6. **Code tile** bento · 7.
|
|
51
|
+
Use Cases bento · 8. **Stat bento** · 9. Testimonials · 10. CTA tile + Footer
|
|
52
|
+
|
|
53
|
+
## 3. Features
|
|
54
|
+
1. Navbar · 2. Hero bento · 3.–8. several **capabilities bentos** (`FB-A`/`FB-B`), each a
|
|
55
|
+
different anchor feature + supporting tiles (vary text/media/metric/code tiles) · 9.
|
|
56
|
+
Integrations bento · 10. CTA tile + Footer
|
|
57
|
+
|
|
58
|
+
## 4. Developers / Documentation
|
|
59
|
+
- **Developers:** Navbar · **Hero bento** with **Code/Terminal tile** anchor · Logo bento
|
|
60
|
+
· **Code tile** bento (SDK snippets) · Capabilities bento · Use Cases · Stat bento · CTA
|
|
61
|
+
tile ("Read docs" + "Get API key") · Footer (≥10).
|
|
62
|
+
- **Docs:** Layout `DOC-A` three-pane; callouts as tiles; inline Code tiles; breadcrumb.
|
|
63
|
+
|
|
64
|
+
## 5. Enterprise / Security
|
|
65
|
+
1. Navbar · 2. Hero bento (outcome-led) · 3. Logo bento · 4. Capabilities bento · 5.
|
|
66
|
+
**Enterprise bento** (SSO/RBAC/SLAs/VPC tiles + CTA tile) · 6. **Security** (compliance
|
|
67
|
+
tiles) · 7. **Stat bento**/ROI · 8. Testimonials (exec) · 9. CTA tile (demo/contact) · 10. Footer
|
|
68
|
+
|
|
69
|
+
## 6. Pricing
|
|
70
|
+
1. Navbar · 2. Hero (short + toggle) · 3. **Pricing** `P-A/P-B` tiles · 4. Feature
|
|
71
|
+
comparison (bento of "what's included" tiles) · 5. **Enterprise** band tile · 6. Logo
|
|
72
|
+
bento · 7. **Stat bento** · 8. Testimonials · 9. **FAQ-as-tiles** `Q-B` · 10. CTA tile + Footer
|
|
73
|
+
|
|
74
|
+
## 7. Content pages (About, Careers, Customers, Case Studies, Blog, Partners, Resources, Contact, FAQ)
|
|
75
|
+
Reach **≥10 sections** by composing bentos: Hero bento → body bentos (values tiles,
|
|
76
|
+
timeline, open-role tiles, customer-logo bento, case-study anchor + result tiles, article
|
|
77
|
+
tiles, partner-tier tiles, resource tiles, contact form) → Trust Signals → Testimonials →
|
|
78
|
+
Stat bento → Integrations → CTA tile → Footer.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Assembly notes
|
|
83
|
+
- **Scale is mandatory:** 15+ pages, **≥10 sections each**, **most as bento grids**. Never
|
|
84
|
+
a single page, a thin page, or a monotonous uniform grid.
|
|
85
|
+
- **Every bento has one anchor tile + varied spans**, one idea per tile, mixed content
|
|
86
|
+
types, **real content** (no empty/filler tiles).
|
|
87
|
+
- **No borders/dividers between sections** — whitespace + alternating panels + tile
|
|
88
|
+
surfaces. One bento (one theme) per section.
|
|
89
|
+
- Vary the content types across tiles (text, media, metric, code, quote, logo, CTA) so
|
|
90
|
+
each grid feels rich, not repetitive.
|
|
91
|
+
- Reflow gracefully: 6→4→2→1 columns; spanning tiles collapse predictably on mobile.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Layout & Grid System — Bento Grid
|
|
2
|
+
|
|
3
|
+
The heart of this system: a **bento grid engine** (CSS Grid, no libraries) plus the
|
|
4
|
+
canonical bento section layouts. Tiles span columns/rows; the grid reflows gracefully.
|
|
5
|
+
**No borders between sections.**
|
|
6
|
+
|
|
7
|
+
## Bento grid engine
|
|
8
|
+
|
|
9
|
+
A 12-ish column grid where tiles claim spans. Use a 6-column desktop grid (clean for
|
|
10
|
+
1–6 spans) with `grid-auto-flow: dense` to pack tiles.
|
|
11
|
+
|
|
12
|
+
```css
|
|
13
|
+
.bento {
|
|
14
|
+
display: grid;
|
|
15
|
+
grid-template-columns: repeat(6, 1fr);
|
|
16
|
+
grid-auto-rows: var(--bento-row);
|
|
17
|
+
gap: var(--bento-gap);
|
|
18
|
+
grid-auto-flow: dense;
|
|
19
|
+
}
|
|
20
|
+
/* Span utilities (col x row) */
|
|
21
|
+
.t-2x1 { grid-column: span 2; } /* small wide */
|
|
22
|
+
.t-3x1 { grid-column: span 3; } /* half-width band */
|
|
23
|
+
.t-2x2 { grid-column: span 2; grid-row: span 2; }/* square anchor */
|
|
24
|
+
.t-3x2 { grid-column: span 3; grid-row: span 2; }/* large anchor */
|
|
25
|
+
.t-4x2 { grid-column: span 4; grid-row: span 2; }/* hero anchor */
|
|
26
|
+
.t-6x1 { grid-column: span 6; } /* full-width band */
|
|
27
|
+
.t-1x1 { grid-column: span 1; } /* small (rare on 6-col) */
|
|
28
|
+
|
|
29
|
+
/* Tablet → 4 columns, Mobile → 2 then 1 */
|
|
30
|
+
@media (max-width: 1024px){
|
|
31
|
+
.bento { grid-template-columns: repeat(4, 1fr); }
|
|
32
|
+
.t-4x2,.t-3x2,.t-6x1 { grid-column: span 4; }
|
|
33
|
+
.t-3x1 { grid-column: span 2; }
|
|
34
|
+
}
|
|
35
|
+
@media (max-width: 680px){
|
|
36
|
+
.bento { grid-template-columns: repeat(2, 1fr); grid-auto-rows: auto; }
|
|
37
|
+
.t-2x2,.t-3x2,.t-4x2,.t-6x1,.t-3x1 { grid-column: span 2; grid-row: auto; }
|
|
38
|
+
.t-2x1,.t-1x1 { grid-column: span 1; }
|
|
39
|
+
}
|
|
40
|
+
@media (max-width: 460px){
|
|
41
|
+
.bento { grid-template-columns: 1fr; }
|
|
42
|
+
.bento > * { grid-column: 1 / -1 !important; grid-row: auto !important; }
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Rule:** every bento section has **one anchor tile** (`t-3x2`/`t-4x2`/`t-2x2`) plus
|
|
47
|
+
varied supporting spans. Use `dense` flow so smaller tiles fill gaps tidily.
|
|
48
|
+
|
|
49
|
+
## Canonical bento section layouts
|
|
50
|
+
|
|
51
|
+
### Hero
|
|
52
|
+
- **HB-A Hero bento (default):** a big **anchor tile** (`t-4x2`, the headline/product)
|
|
53
|
+
+ small tiles (a stat, a logo strip, a "Get started" **CTA tile**) filling the row.
|
|
54
|
+
- **HB-B Hero split + bento:** centered eyebrow→H1→lead→CTA on top, then a bento row of
|
|
55
|
+
feature/metric tiles below.
|
|
56
|
+
|
|
57
|
+
### Feature
|
|
58
|
+
- **FB-A Capabilities bento:** 6–9 feature tiles of mixed spans; one `t-3x2` anchor
|
|
59
|
+
feature + small feature tiles; vary content (text, mini visual, code, metric).
|
|
60
|
+
- **FB-B Anchor + satellites:** one `t-2x2`/`t-3x2` anchor + four `t-2x1`/`t-1x1` tiles.
|
|
61
|
+
- **FB-C Alternating bentos:** stacked bento rows, each led by a different anchor.
|
|
62
|
+
|
|
63
|
+
### Metrics / Social proof
|
|
64
|
+
- **MB-A Stat bento:** 3–4 metric tiles + one wide quote/logo band (`t-6x1`).
|
|
65
|
+
- **MB-B Logo bento:** integration/customer logos as small tiles + one "why" anchor tile.
|
|
66
|
+
|
|
67
|
+
### Pricing / CTA / FAQ / Footer
|
|
68
|
+
- **P-A 3-tier** (middle highlighted) — tiers as tiles; toggle above. **P-B 2-tier +
|
|
69
|
+
enterprise** band tile.
|
|
70
|
+
- **C-A CTA tile band:** a full-width accent **CTA tile** (`--grad-accent`) inside a
|
|
71
|
+
section, or a small bento ending with a prominent CTA tile. `--section-y-lg`, no border.
|
|
72
|
+
- **Q-A Accordion FAQ** (`--container-md`) or **Q-B FAQ-as-tiles** (each Q/A a tile).
|
|
73
|
+
- **FT-A Mega footer** (brand + 4–6 link columns + legal); **FT-B minimal**.
|
|
74
|
+
|
|
75
|
+
### Dashboard / Docs
|
|
76
|
+
- **D-A Dashboard tile:** a product screenshot/app shell inside a large anchor tile.
|
|
77
|
+
- **DOC-A Three-pane docs:** nav · prose (`--container-md`) · TOC; callouts can be tiles.
|
|
78
|
+
|
|
79
|
+
## Composition rules
|
|
80
|
+
|
|
81
|
+
1. **Separate sections by panel + space, NEVER borders.** Alternate `--bg-canvas`/
|
|
82
|
+
`--bg-muted`/white; `.section{border:0}`; no `<hr>`. Tiles' own surfaces handle
|
|
83
|
+
*intra*-section separation.
|
|
84
|
+
2. **Every bento has one anchor tile + varied spans.** No monotonous uniform grids; no
|
|
85
|
+
empty/filler tiles. One idea per tile.
|
|
86
|
+
3. **Vary tile content types** across a grid (text, media, metric, code, quote, logo, CTA).
|
|
87
|
+
4. **Full-bleed panel, contained grid:** sections span edge-to-edge; inner `.container`/
|
|
88
|
+
`.container--wide` constrains the bento.
|
|
89
|
+
5. **At least 10 sections per page**, and **15+ pages**; most sections are bentos. Never thin.
|
|
90
|
+
6. **Rhythm:** Hero bento → logos/trust → capabilities bento → metrics bento →
|
|
91
|
+
testimonials → integrations bento → pricing → FAQ → CTA tile → footer.
|
|
92
|
+
7. **Reflow gracefully:** 6→4→2→1 columns; spanning tiles collapse predictably (engine
|
|
93
|
+
above). The mosaic stays tidy at every breakpoint.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Motion System — Bento Grid
|
|
2
|
+
|
|
3
|
+
Motion brings the **tiles** to life: staggered reveals as a grid scrolls in, subtle hover
|
|
4
|
+
lift, an optional pointer spotlight, and small in-tile content micro-interactions. The
|
|
5
|
+
page stays calm; tiles do the moving. Everything degrades under `prefers-reduced-motion`.
|
|
6
|
+
|
|
7
|
+
Distilled from Apple bento reveals, Linear/Raycast tile hovers, and OpenAI/Anthropic/
|
|
8
|
+
Perplexity/Cursor restraint.
|
|
9
|
+
|
|
10
|
+
## Tokens
|
|
11
|
+
|
|
12
|
+
```css
|
|
13
|
+
:root {
|
|
14
|
+
--dur-fast: 140ms; --dur-base: 240ms; --dur-slow: 380ms; --dur-slower: 620ms;
|
|
15
|
+
--ease-out: cubic-bezier(0.2, 1, 0.3, 1);
|
|
16
|
+
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Principles
|
|
21
|
+
1. **Animate tiles, not the page.** Focal motion is the grid revealing + tile hovers.
|
|
22
|
+
2. **Short + eased** (140–380ms); reserve 620ms for big anchor-tile reveals.
|
|
23
|
+
3. **Move a little:** translate 8–18px, hover lift 2–3px, scale ≤1.02.
|
|
24
|
+
4. **One focal animation per viewport.** Stagger, don't stampede.
|
|
25
|
+
5. **Cheap props only** (`transform`/`opacity`).
|
|
26
|
+
|
|
27
|
+
## Patterns (tile-centric)
|
|
28
|
+
|
|
29
|
+
- **Grid reveal (signature):** tiles start `opacity:0; translateY(16px)` → `.in` via
|
|
30
|
+
`IntersectionObserver`, `--dur-slow` `--ease-out`, **staggered ~60–80ms** in DOM order
|
|
31
|
+
so the bento assembles. Reveal once.
|
|
32
|
+
- **Tile hover:** `translateY(-3px)` + shadow `--shadow-tile`→`--shadow-lg` + a faint
|
|
33
|
+
`--grad-tile`/`--grad-spot` brighten over `--dur-base`. Anchor/media tiles can scale
|
|
34
|
+
inner media 1.0→1.03.
|
|
35
|
+
- **Pointer spotlight (optional):** a soft radial glow follows the cursor inside a tile
|
|
36
|
+
(CSS custom props updated on `pointermove`); desktop only, off for touch/reduced motion.
|
|
37
|
+
- **In-tile micro-interactions:** copy-button check swap, toggle slide, number count-up
|
|
38
|
+
on a metric tile, code-tile cursor blink, small chart draw.
|
|
39
|
+
- **CTA tile pulse:** a very subtle one-time glow on the accent CTA tile when revealed.
|
|
40
|
+
- **Nav on scroll:** glass blur + faint shadow after ~24px scroll.
|
|
41
|
+
- **Section/page transitions:** soft cross-fade + small rise; no harsh wipes.
|
|
42
|
+
- **Marquee (logo bento):** slow, linear, pausable, duplicated track.
|
|
43
|
+
|
|
44
|
+
## Reduced motion (required)
|
|
45
|
+
|
|
46
|
+
```css
|
|
47
|
+
@media (prefers-reduced-motion: reduce) {
|
|
48
|
+
*, *::before, *::after { animation-duration:.001ms !important;
|
|
49
|
+
animation-iteration-count:1 !important; transition-duration:.001ms !important;
|
|
50
|
+
scroll-behavior:auto !important; }
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
Under reduced motion: tiles appear in final state immediately; disable spotlight/parallax/
|
|
54
|
+
marquee/typewriter; metric tiles show final value (count-up skipped). Hover lift may stay
|
|
55
|
+
(it's instant) but no large transforms.
|
|
56
|
+
|
|
57
|
+
## Minimal vanilla helpers
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
// staggered bento reveal
|
|
61
|
+
const io = new IntersectionObserver((es)=>es.forEach((e,i)=>{ if(e.isIntersecting){
|
|
62
|
+
e.target.style.transitionDelay = `${Math.min(i*70, 320)}ms`;
|
|
63
|
+
e.target.classList.add('in'); io.unobserve(e.target);} }, {threshold:.15}));
|
|
64
|
+
document.querySelectorAll('.bento > .tile').forEach(t=>{ t.setAttribute('data-reveal',''); io.observe(t); });
|
|
65
|
+
|
|
66
|
+
// optional pointer spotlight
|
|
67
|
+
document.querySelectorAll('.tile[data-spot]').forEach(t=>{
|
|
68
|
+
t.addEventListener('pointermove', e=>{ const r=t.getBoundingClientRect();
|
|
69
|
+
t.style.setProperty('--mx', `${e.clientX-r.left}px`);
|
|
70
|
+
t.style.setProperty('--my', `${e.clientY-r.top}px`); });
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
```css
|
|
74
|
+
[data-reveal]{ opacity:0; transform: translateY(16px);
|
|
75
|
+
transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
|
|
76
|
+
[data-reveal].in{ opacity:1; transform:none; }
|
|
77
|
+
.tile[data-spot]::before{ content:""; position:absolute; inset:0; pointer-events:none;
|
|
78
|
+
background: radial-gradient(180px 180px at var(--mx) var(--my), var(--accent-soft), transparent 60%);
|
|
79
|
+
opacity:0; transition: opacity var(--dur-base) ease; }
|
|
80
|
+
.tile[data-spot]:hover::before{ opacity:1; }
|
|
81
|
+
```
|