@tidyfactor/design 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/.tidyfactor +52 -0
  2. package/AGENTS.md +75 -0
  3. package/CHANGELOG.md +210 -0
  4. package/LICENSE +17 -0
  5. package/README.ar.md +398 -0
  6. package/README.de.md +44 -0
  7. package/README.es.md +44 -0
  8. package/README.fa.md +44 -0
  9. package/README.fr.md +44 -0
  10. package/README.md +418 -0
  11. package/README.pt.md +44 -0
  12. package/README.zh.md +44 -0
  13. package/SKILL-REGISTRY.md +69 -0
  14. package/SKILL.md +46 -0
  15. package/VISION.md +43 -0
  16. package/assets/blog.png +0 -0
  17. package/assets/content_layout.png +0 -0
  18. package/assets/content_output.png +0 -0
  19. package/assets/dark.png +0 -0
  20. package/assets/dashboard_layout.png +0 -0
  21. package/assets/dashboard_output.png +0 -0
  22. package/assets/ecommerce_layout.png +0 -0
  23. package/assets/ecommerce_output.png +0 -0
  24. package/assets/github-social-preview-2.png +0 -0
  25. package/assets/github-social-preview.png +0 -0
  26. package/assets/hero-banner.png +0 -0
  27. package/assets/light.png +0 -0
  28. package/assets/media_layout.png +0 -0
  29. package/assets/media_output.png +0 -0
  30. package/assets/og-default.png +0 -0
  31. package/assets/video.png +0 -0
  32. package/bin/add-skill.js +31 -0
  33. package/bin/create-kit.js +372 -0
  34. package/bin/remove-skill.js +137 -0
  35. package/brand.json +279 -0
  36. package/memory/01-design-schools.md +85 -0
  37. package/memory/02-design-tokens.md +41 -0
  38. package/memory/03-narrative-conversion.md +47 -0
  39. package/memory/04-motion-principles.md +44 -0
  40. package/memory/05-component-anatomy.md +34 -0
  41. package/memory/06-quality-bar.md +83 -0
  42. package/memory/07-consistency-contract.md +33 -0
  43. package/memory/08-arabic-bilingual.md +54 -0
  44. package/memory/09-prototype-flow.md +36 -0
  45. package/memory/10-python-tooling.md +64 -0
  46. package/memory/11-brand-json-v2.md +86 -0
  47. package/memory/12-typography-matrix.md +31 -0
  48. package/memory/13-layout-archetypes.md +30 -0
  49. package/memory/14-nav-footer-catalog.md +26 -0
  50. package/memory/15-performance-budget.md +18 -0
  51. package/memory/16-design-movements-guide.md +1084 -0
  52. package/memory/17-storytelling-industries-ux.md +143 -0
  53. package/memory/18-design-decision-engine.md +81 -0
  54. package/package.json +64 -0
  55. package/references/commands/_template.md +27 -0
  56. package/references/commands/assets.md +35 -0
  57. package/references/commands/audit.md +15 -0
  58. package/references/commands/brand.md +85 -0
  59. package/references/commands/brief.md +107 -0
  60. package/references/commands/clone.md +26 -0
  61. package/references/commands/components.md +46 -0
  62. package/references/commands/dashboard.md +45 -0
  63. package/references/commands/deploy.md +45 -0
  64. package/references/commands/flow.md +44 -0
  65. package/references/commands/handoff.md +53 -0
  66. package/references/commands/i18n.md +64 -0
  67. package/references/commands/init.md +30 -0
  68. package/references/commands/layout.md +81 -0
  69. package/references/commands/motion.md +62 -0
  70. package/references/commands/nav-footer.md +54 -0
  71. package/references/commands/page.md +45 -0
  72. package/references/commands/palette.md +35 -0
  73. package/references/commands/perf.md +57 -0
  74. package/references/commands/retrofit.md +15 -0
  75. package/references/commands/school.md +41 -0
  76. package/references/commands/states.md +48 -0
  77. package/references/commands/study.md +98 -0
  78. package/references/commands/tokens.md +45 -0
  79. package/references/commands/typography.md +87 -0
  80. package/references/foundations/daisyui.md +44 -0
  81. package/references/foundations/hybrid.md +32 -0
  82. package/references/foundations/native.md +31 -0
  83. package/references/foundations/tailwind-utility.md +43 -0
  84. package/references/memory/01-design-schools.md +85 -0
  85. package/references/memory/02-design-tokens.md +41 -0
  86. package/references/memory/03-narrative-conversion.md +47 -0
  87. package/references/memory/04-motion-principles.md +44 -0
  88. package/references/memory/05-component-anatomy.md +34 -0
  89. package/references/memory/06-quality-bar.md +83 -0
  90. package/references/memory/07-consistency-contract.md +33 -0
  91. package/references/memory/08-arabic-bilingual.md +54 -0
  92. package/references/memory/09-prototype-flow.md +36 -0
  93. package/references/memory/10-python-tooling.md +64 -0
  94. package/references/memory/11-brand-json-v2.md +86 -0
  95. package/references/memory/12-typography-matrix.md +31 -0
  96. package/references/memory/13-layout-archetypes.md +30 -0
  97. package/references/memory/14-nav-footer-catalog.md +26 -0
  98. package/references/memory/15-performance-budget.md +18 -0
  99. package/references/memory/16-design-movements-guide.md +1084 -0
  100. package/references/memory/17-storytelling-industries-ux.md +143 -0
  101. package/references/memory/18-design-decision-engine.md +81 -0
  102. package/references/memory/architecture.md +39 -0
  103. package/references/memory/decision-points.md +50 -0
  104. package/references/memory/foundations.md +15 -0
  105. package/references/memory/quality-bar.md +20 -0
  106. package/references/tidyfactor-vision.md +66 -0
  107. package/references/workflow.md +49 -0
  108. package/references/workflows/audit-prototype.md +26 -0
  109. package/references/workflows/brief.md +30 -0
  110. package/references/workflows/clone-prototype.md +27 -0
  111. package/references/workflows/init-prototype.md +28 -0
  112. package/references/workflows/retrofit-prototype.md +25 -0
  113. package/scripts/__pycache__/_utils.cpython-312.pyc +0 -0
  114. package/scripts/_utils.py +60 -0
  115. package/scripts/build.py +194 -0
  116. package/scripts/check_alpha.py +52 -0
  117. package/scripts/extract_palette.py +139 -0
  118. package/scripts/generate_transitions.py +105 -0
  119. package/scripts/inspect_images.py +48 -0
  120. package/scripts/minify_assets.py +140 -0
  121. package/scripts/optimize_assets.py +91 -0
  122. package/scripts/optimize_images.py +176 -0
  123. package/scripts/prepare_images.py +67 -0
  124. package/scripts/remove_backgrounds.py +61 -0
  125. package/scripts/test_build.py +228 -0
  126. package/templates/design-system/base.css +75 -0
  127. package/templates/design-system/components.css +229 -0
  128. package/templates/design-system/interactions.js +31 -0
  129. package/templates/design-system/motion.js +42 -0
  130. package/templates/design-system/tokens.css +81 -0
  131. package/templates/design-system/utilities.css +47 -0
  132. package/templates/index.html +84 -0
  133. package/templates/proto-nav.js +56 -0
  134. package/tools/build-skill.js +126 -0
  135. package/tools/validate-skill.js +144 -0
  136. package/tools/validate_skill.py +121 -0
@@ -0,0 +1,54 @@
1
+ # Arabic & Bilingual Design — Reference for `i18n`
2
+
3
+ Conventions carried consistently across Alwkala's production work and the
4
+ rest of the TidyFactor ecosystem (`tidyfactor-html`, `tidyfactor-cinematic`)
5
+ — not generic RTL advice.
6
+
7
+ ## Typography
8
+ - Headings: **El Messiri** — modern, geometric-leaning, reads as
9
+ contemporary rather than traditional/calligraphic.
10
+ - Body: **Tajawal** — high legibility at small sizes, wide weight range.
11
+ - **Never Amiri** for UI/display purposes — it's a naskh-style text face
12
+ suited to long-form literary/religious typesetting, not product/marketing
13
+ UI; it reads as the wrong register for almost every brief this skill
14
+ serves.
15
+ - Arabic type generally needs slightly larger sizes and more line-height
16
+ than the Latin equivalent at the same visual weight — don't reuse the
17
+ Latin type scale unchanged.
18
+
19
+ ## Layout mirroring
20
+ - Mirrors: navigation order, breadcrumbs, form label alignment, icon
21
+ direction for directional affordances (back/next arrows), the reading
22
+ flow of card grids.
23
+ - Does NOT mirror: numerals (Arabic numerals in most modern digital
24
+ products are written left-to-right even inside RTL text), embedded Latin
25
+ brand names/wordmarks, code or tabular data blocks.
26
+ - Use `unicode-bidi: isolate` (or `dir="ltr"` spans) around any LTR content
27
+ embedded inside RTL flow to prevent bidi algorithm artifacts (numbers or
28
+ Latin words appearing in the wrong order).
29
+
30
+ ## Logo & identity
31
+ Logo/wordmark stays pixel-identical and unmirrored across locales — brand
32
+ identity doesn't flip with the reading direction, even when everything
33
+ around it does.
34
+
35
+ ## Bilingual site patterns
36
+ - **Separate localized pages** — clean, works with every command
37
+ unchanged, best when content structure genuinely differs by locale.
38
+ - **Single page, dual-tree toggle** — both language trees present in one
39
+ file, toggled via `proto-nav.js` — best for fast side-by-side prototype
40
+ review with a client, worse for a real production site (both trees ship
41
+ to every visitor).
42
+ Pick one per project and record it in `brand.json`; don't mix within a
43
+ project.
44
+
45
+ ## Voice & tone
46
+ If `brand.json`'s `voice.*` block has a localized Arabic register, apply it
47
+ directly — a good Arabic UI voice is not a literal translation of the
48
+ English one; register, formality, and idiom differ by convention.
49
+
50
+ ## Interaction states in RTL
51
+ Re-check, don't just assume: dropdown/menu open-direction, modal
52
+ close-button position, tooltip anchor side, and any icon implying
53
+ directionality — all need a considered RTL equivalent, not just a global
54
+ `transform: scaleX(-1)`.
@@ -0,0 +1,36 @@
1
+ # Prototype Flow & Present Mode — Reference for `flow`
2
+
3
+ ## What makes this a "prototype" rather than a set of pages
4
+ A Figma prototype's core value isn't the individual frames — it's the
5
+ click-through experience that lets a stakeholder feel the product before
6
+ it's built. This skill's `flow` command exists to reproduce that
7
+ experience in real, running HTML rather than a design tool's simulation.
8
+
9
+ ## Journey-first, not link-everything
10
+ Map 2-4 real journeys from the brief (e.g. "visitor discovers pricing →
11
+ signs up → sees the empty-state dashboard → adds first item → sees
12
+ populated dashboard") and wire those specifically. A prototype where every
13
+ page links to every other page has no narrative — it's a sitemap, not a
14
+ journey.
15
+
16
+ ## The prototype toolbar
17
+ A small, clearly-a-tool-not-part-of-the-design floating control
18
+ (`proto-nav.js`) giving:
19
+ - Jump to any page (for the reviewer exploring freely)
20
+ - "Restart flow" (return to the journey's first page)
21
+ - State toggles where a page/screen has meaningful alternate states
22
+ (empty vs. populated dashboard, logged-out vs. logged-in) without
23
+ needing separate physical pages for each
24
+
25
+ ## State toggles without a backend
26
+ A dashboard's empty/loading/error/populated states can be selected via a
27
+ URL query parameter (`?state=empty`) read by a small inline check in the
28
+ shared `interactions.js`, or via the toolbar directly — this keeps the
29
+ prototype's states real and inspectable without simulating an actual data
30
+ layer.
31
+
32
+ ## What to strip before a production handoff
33
+ `proto-nav.js` and any state-toggle scaffolding are prototype-only tools —
34
+ flag them explicitly in `deploy`'s output so they don't accidentally ship
35
+ if this project is later handed to `tidyfactor-html`/`tidyfactor-php-*` for
36
+ production.
@@ -0,0 +1,64 @@
1
+ # 10 · Python Tooling & Asset Refinement Guide
2
+
3
+ The **TidyFactor Design** skill includes a lightweight Python tooling suite in `scripts/` to provide AI Agents with local media manipulation, palette extraction, background removal, and image optimization capabilities.
4
+
5
+ ---
6
+
7
+ ## 🛠️ Tooling Suite Inventory
8
+
9
+ | Script | Primary Responsibility | Dependencies | Command Trigger |
10
+ |---|---|---|---|
11
+ | **`scripts/extract_palette.py`** | Image color quantization, WCAG 2.1 AA contrast check, `brand.json` & `tokens.css` sync | `Pillow` | `palette`, `tokens`, `init`, `clone` |
12
+ | **`scripts/remove_backgrounds.py`** | AI background removal (`rembg`) for transparent PNG logos, product shots, & cutouts | `rembg`, `Pillow` | `init`, `components`, `page`, `retrofit` |
13
+ | **`scripts/optimize_assets.py`** | Resizes heavy assets to design token bounds (heroes max 1200px, cards 400px, logos 240px) | `Pillow` | `deploy`, `audit` |
14
+ | **`scripts/minify_assets.py`** | Bundles & minifies CSS/JS for presentation deployment | Standard Python | `deploy` |
15
+ | **`scripts/inspect_images.py`** | Inspects image dimensions, color channels, and alpha channel status | Standard Python | `audit` |
16
+
17
+ ---
18
+
19
+ ## 1 · Color Palette Extraction (`scripts/extract_palette.py`)
20
+
21
+ Extracts primary, secondary, and accent colors from reference images, photos, or logos. Computes WCAG 2.1 AA contrast scores.
22
+
23
+ ```bash
24
+ # Extract palette and sync brand.json + tokens.css
25
+ python scripts/extract_palette.py assets/logo.png --json brand.json --css design-system/tokens.css
26
+ ```
27
+
28
+ ---
29
+
30
+ ## 2 · AI Background Removal (`scripts/remove_backgrounds.py`)
31
+
32
+ Isolates product shots, logos, or hero items into transparent PNG cutouts using `rembg`:
33
+
34
+ ```bash
35
+ # Single file background removal
36
+ python scripts/remove_backgrounds.py assets/product.jpg -o assets/product-cut.png
37
+
38
+ # Batch processing
39
+ python scripts/remove_backgrounds.py assets/logo1.jpg:assets/logo1.png assets/card.jpg:assets/card.png
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 3 · Asset Resizing & Optimization (`scripts/optimize_assets.py`)
45
+
46
+ Constrains image dimensions to design system tokens to prevent layout shifts and heavy page loads:
47
+
48
+ ```bash
49
+ # Resize hero images to max 1200px dimension
50
+ python scripts/optimize_assets.py assets/hero.jpg --max-dim 1200
51
+
52
+ # Resize logo assets to max 240px dimension
53
+ python scripts/optimize_assets.py assets/logo.png --max-dim 240
54
+ ```
55
+
56
+ ---
57
+
58
+ ## 📋 Dependency Management
59
+
60
+ Dependencies are documented in `requirements.txt`:
61
+ ```bash
62
+ pip install -r requirements.txt
63
+ ```
64
+ If `rembg` or `Pillow` is missing, scripts output clear installation guidance without crashing.
@@ -0,0 +1,86 @@
1
+ # 11 · brand.json v2 Schema Reference
2
+
3
+ The single source of truth for brand identity across all TidyFactor surfaces. Every
4
+ design-system file, component, and page reads tokens from this file — never hardcode
5
+ a hex value or font name inline.
6
+
7
+ ## Schema version
8
+
9
+ `"schemaVersion": "brand-core-v2"` — the v2 schema adds dual-mode colors, shadows, radius,
10
+ spacing scale, motion tokens, breakpoints, iconography, component token refs,
11
+ localization, and accessibility floor.
12
+
13
+ ## Required sections
14
+
15
+ | Section | Purpose |
16
+ |---|---|
17
+ | `meta` | Product name, tagline, description, version, lastUpdated |
18
+ | `identity` | Logo paths (full, fullDark, mark, favicon), social preview (ogImage) |
19
+ | `voice` | Tone, personality, registers (professional/casual/error/success), doNotUse words |
20
+ | `colors.light` | 16 semantic tokens for light mode (background, surface, surface2, border, text, textMuted, primary, primaryForeground, secondary, secondaryForeground, accent, success, warning, danger, info, codeBackground) |
21
+ | `colors.dark` | Mirror 16 tokens for dark mode |
22
+ | `typography` | Families (heading, body, display, mono, arabicHeading, arabicBody), weights, scale, lineHeight, letterSpacing, googleFontsUrl |
23
+ | `spacing` | baseUnit (4px) + scale (0–24) |
24
+ | `radius` | none, sm, md, lg, xl, full, default |
25
+ | `shadows` | sm, md, lg, focusRing (uses `color-mix()`) |
26
+ | `motion` | duration (fast/base/slow), easing (standard/emphasized/spring), reducedMotion policy, scope |
27
+ | `breakpoints` | sm, md, lg, xl, 2xl |
28
+ | `iconography` | set (lucide), strokeWidth, sizes, rule |
29
+ | `components` | Token refs for button, input, card, codeBlock |
30
+ | `localization` | defaultLocale, supportedLocales, rtl, rtlLocales, mirrorOnRtl, dateFormat |
31
+ | `accessibility` | minTouchTarget (44px), focusVisible policy, altTextPolicy |
32
+ | `foundation` | Locked CSS foundation (native, tailwind, daisyui, hybrid, shadcn, pico, bootstrap, alpine) |
33
+ | `school` | Design school (minimalist, brutalist, neo-skeuomorphic, glassmorphic, editorial, playful) |
34
+ | `usage` | sharedBy (which kits consume this file), rules (governance) |
35
+
36
+ ## Dual-mode colors rule
37
+
38
+ Brand colors (`primary`, `accent`) do NOT change between light/dark — only
39
+ `background`, `surface`, `border`, and `text` tokens shift. This ensures brand
40
+ recognition across modes.
41
+
42
+ ## Token reference convention (components section)
43
+
44
+ Component specs reference other sections via dot-path strings:
45
+ ```json
46
+ "button": {
47
+ "radius": "radius.md",
48
+ "primaryBg": "colors.primary",
49
+ "primaryFg": "colors.primaryForeground"
50
+ }
51
+ ```
52
+ These are resolved at build-time by the design-system generator — they are NOT
53
+ runtime CSS variable references.
54
+
55
+ ## `focusRing` shadow using `color-mix()`
56
+
57
+ ```json
58
+ "focusRing": "0 0 0 3px color-mix(in srgb, var(--primary) 40%, transparent)"
59
+ ```
60
+ This produces a 40%-opacity brand-colored focus ring that automatically adapts
61
+ to the active primary color. Supported in all modern browsers (Safari 16.4+,
62
+ Chrome 111+, Firefox 113+).
63
+
64
+ ## Backward compatibility (v1 → v2 migration)
65
+
66
+ | v1 token | v2 equivalent |
67
+ |---|---|
68
+ | `colors.primary` | `colors.light.primary` / `colors.dark.primary` |
69
+ | `colors.neutralDark` | `colors.light.text` |
70
+ | `colors.neutralLight` | `colors.light.surface` |
71
+ | `colors.paper` | `colors.light.background` |
72
+ | `colors.ink` | `colors.light.text` |
73
+ | `colors.inkSoft` | `colors.light.textMuted` |
74
+ | `typography.headings.arabic` | `typography.families.arabicHeading` |
75
+ | `typography.body.arabic` | `typography.families.arabicBody` |
76
+ | `typography.headings.latin` | `typography.families.display.primary` |
77
+ | `typography.body.latin` | `typography.families.body.primary` |
78
+
79
+ ## Checklist
80
+ - [ ] `$schema` is `"brand-core-v2"`
81
+ - [ ] Both `colors.light` and `colors.dark` have all 16 tokens
82
+ - [ ] `contrastPolicy` specifies WCAG AA minimum
83
+ - [ ] `motion.reducedMotion` policy is stated
84
+ - [ ] `accessibility.minTouchTarget` is ≥ 44px
85
+ - [ ] `foundation` is one of the 8 supported options
86
+ - [ ] `googleFontsUrl` loads ONLY families referenced in `typography.families`
@@ -0,0 +1,31 @@
1
+ # 12 · Typography Matrix — Mood-Routed Font Pairings
2
+
3
+ This document defines the 7 mood-routed typography pairings for `tidyfactor-design`.
4
+ While the default pairing (`El Messiri` + `Tajawal` + `Cormorant Garamond`) remains safe and clean for general builds, brand personality often demands a distinctive font pairing matching the visual layout's emotional register.
5
+
6
+ ## Constraint Rules
7
+ 1. **Clean over calligraphic for display headings**: Never use **Amiri** or any Naskh/manuscript script face above ~24px.
8
+ 2. **Display-only font rules**: Faces like **Jomhuria** are display-only (≥48px) and must never be used for body text.
9
+ 3. **CDN-only**: All fonts must be available via Google Fonts. No self-hosting or build step required.
10
+
11
+ ## Mood → Typography Pairing Matrix
12
+
13
+ | Mood | Arabic Heading | Arabic Body | Latin Accent | Best Layouts | Avoid For |
14
+ |---|---|---|---|---|---|
15
+ | **Default luxury** | El Messiri | Tajawal | Cormorant Garamond | Any | — |
16
+ | **Editorial / literary** | Markazi Text | IBM Plex Sans Arabic | Fraunces | `story` (editorial) | `app` (too soft for UI chrome) |
17
+ | **Art-Deco / high fashion** | Jomhuria *(display ≥48px)* | Cairo | Bodoni Moda | `film` (fullbleed) | `creator` (too loud) |
18
+ | **Modern minimal / tech** | Cairo | Cairo (weight-differentiated) | Marcellus | `app` (interface), `creator` | `space` (reads cold) |
19
+ | **Warm hospitality / travel** | El Messiri | Almarai | Prata | `space` (spatial) | — |
20
+ | **E-Commerce & conversion** | El Messiri | Tajawal | Cormorant Garamond | `product`, `store` | — |
21
+ | **Automotive / performance** | El Messiri + Oswald (numerals) | Tajawal | Oswald | `film`, `story` (auto) | non-automotive |
22
+
23
+ ## Google Fonts Loading Standard
24
+
25
+ Always use preconnect links and load only the required families to satisfy the performance budget (≤3 families, ≤4 weights):
26
+
27
+ ```html
28
+ <link rel="preconnect" href="https://fonts.googleapis.com">
29
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
30
+ <link href="https://fonts.googleapis.com/css2?family=El+Messiri:wght@400;600;700&family=Tajawal:wght@400;500;700&display=swap" rel="stylesheet">
31
+ ```
@@ -0,0 +1,30 @@
1
+ # 13 · Layout Archetypes — Surface Blueprints
2
+
3
+ This document specifies the 8 macrostructure layout archetypes available in `tidyfactor-design`.
4
+
5
+ ## Archetype Overview
6
+
7
+ | Layout | Codename | Hero Type | Section Rhythm | Best For |
8
+ |---|---|---|---|---|
9
+ | **Film** | `fullbleed` | Cutout + aura + motes | Hero → Film (600vh canvas) → Product reveal → Lifestyle → CTA | Physical luxury goods, brand stories |
10
+ | **Story** | `editorial` | Split-screen image & copy | Hero → Film (420vh) → Feature grid → Origin story → CTA | Specs-heavy products, events, founders |
11
+ | **Space** | `spatial` | Wide architectural shot | Hero → Spatial film (500vh) → Space details → Location → CTA | Real estate, architecture, hospitality |
12
+ | **App** | `interface` | Device mockup frame | Hero → UI flow film (420vh) → Feature highlights → Proof → CTA | SaaS, web/mobile applications |
13
+ | **Creator** | `minimal` | Centered cutout / photo | Hero → Statement → Story & Portrait → Portfolio → CTA | Personal brands, digital products |
14
+ | **Product** | `product` | Product + Price + Buy CTA | Hero product → Spec highlights → Reviews → Purchase CTA | High-conversion single-product store |
15
+ | **Store** | `store` | Banner + Category nav | Store banner → Category filter → Catalog grid → Footer | Multi-product catalog store |
16
+ | **Auto** | `auto` | Hero vehicle + HUD gauge | Hero → 3D stage slider → Tech specs → Performance gallery → CTA | Automotive, performance engineering |
17
+
18
+ ## Hero Layering Architecture
19
+
20
+ Every cinematic or luxury layout uses nested container layers so each layer owns a single transform channel without conflicts:
21
+
22
+ ```
23
+ .stage (perspective)
24
+ .aura → Radial background glow (CSS pulse + parallax)
25
+ .motes → Floating particles drift
26
+ .hero-inner
27
+ .media-float → CSS float animation (translateY bob)
28
+ .media-tilt → JS pointer-driven 3D rotateX/rotateY
29
+ img.cutout → GSAP entrance transform (scale/opacity)
30
+ ```
@@ -0,0 +1,26 @@
1
+ # 14 · Navigation & Footer Catalogs
2
+
3
+ Reference catalog for Navigation (N1–N9) and Footer (Ft1–Ft8) components.
4
+
5
+ ## Navigation Archetypes
6
+
7
+ - **N1: Floating Pill** — Glassmorphic floating navigation pill (`max-w-fit mx-auto`), rounded corners. Ideal for modern SaaS and mobile interfaces.
8
+ - **N2: Newspaper Masthead** — Traditional publishing layout with centered brand title, divider rule, and category links below.
9
+ - **N3: Brutal Slab** — Stark 4px bottom border, monochrome uppercase labels, sharp edges.
10
+ - **N4: Terminal / CLI** — Monospace typography with prompt caret `>` markers on dark background.
11
+ - **N5: Edge-Aligned Minimal** — Wordmark aligned hard left, navigation links hard right. Zero center clutter.
12
+ - **N6: Split Brand** — Centered brand emblem with links balanced on left and right sides.
13
+ - **N7: Double-Decker Utility** — Top notification/language bar paired with main brand header.
14
+ - **N8: Vertical Rail** — Fixed left/right navigation rail for web app dashboards.
15
+ - **N9: Fullscreen Overlay** — Trigger button opening full-viewport navigation overlay.
16
+
17
+ ## Footer Archetypes
18
+
19
+ - **Ft1: Mast-Headed** — Giant brand wordmark overlaying top of footer section with multi-column links below.
20
+ - **Ft2: Minimal Inline** — Clean single-line layout containing wordmark, links, and copyright notice.
21
+ - **Ft3: Colophon / Credits** | Displays build metadata, typography credits, server location, and license.
22
+ - **Ft4: Big Statement** | Prominent quote or mission statement block preceding link navigation.
23
+ - **Ft5: Letter Close** | Personal signed letter from founder/creator with CTA before footer links.
24
+ - **Ft6: Newsletter-First** | Large email signup form occupying primary focal space.
25
+ - **Ft7: Marquee Scroll** | Continuous horizontal text ticker banner above secondary links.
26
+ - **Ft8: Sitemap Grid** | Comprehensive multi-column link directory with locale and theme switchers.
@@ -0,0 +1,18 @@
1
+ # 15 · Performance Budget Specification
2
+
3
+ Mechanical performance budgets for asset weight and DOM performance across all prototypes in `tidyfactor-design`.
4
+
5
+ ## Asset Class Budget Table
6
+
7
+ | Asset Class | Budget Limit | Validation Command / Check |
8
+ |---|---|---|
9
+ | Frame Sequence (`assets/seq/*.jpg`) | ≤ 6.0 MB total | Sum of directory file sizes |
10
+ | Individual Frame JPG | ≤ 60 KB at 1280px | Individual file size check |
11
+ | Hero Cutout Image | ≤ 400 KB | Image optimizer `scripts/optimize_assets.py` |
12
+ | Logo / Emblem Asset | ≤ 40 KB | Image optimizer check |
13
+ | Font Families | ≤ 3 families, ≤ 4 weights | Count in Google Fonts `<link>` tag |
14
+ | Design System CSS | ≤ 150 KB total | Combined size of `design-system/*.css` |
15
+
16
+ ## LCP Image Optimization Rule
17
+ Hero LCP (Largest Contentful Paint) images MUST NOT use `loading="lazy"`. Doing so degrades load performance and violates Quality Bar Rule #16.
18
+ Below-the-fold images MUST use `loading="lazy"`.