sinapse-ai 9.4.0 → 9.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 (266) hide show
  1. package/.claude/CLAUDE.md +10 -4
  2. package/.claude/hooks/enforce-architecture-first.py +197 -197
  3. package/.claude/hooks/enforce-git-push-authority.sh +25 -4
  4. package/.claude/hooks/mind-clone-governance.py +193 -193
  5. package/.claude/hooks/read-protection.py +152 -152
  6. package/.claude/hooks/sql-governance.py +183 -183
  7. package/.claude/hooks/verify-packages.cjs +83 -0
  8. package/.claude/hooks/write-path-validation.py +195 -195
  9. package/.claude/rules/hook-governance.md +1 -0
  10. package/.claude/rules/mandatory-delegation.md +24 -0
  11. package/.claude/rules/project-intelligence.md +63 -0
  12. package/.claude/rules/response-format.md +4 -0
  13. package/.claude/rules/safe-collaboration.md +4 -2
  14. package/.claude/rules/security-data-protection.md +18 -0
  15. package/.claude/rules/squad-awareness.md +93 -67
  16. package/.claude/rules/token-economy.md +148 -0
  17. package/.codex/agents/analyst.md +90 -0
  18. package/.codex/agents/architect.md +78 -0
  19. package/.codex/agents/data-engineer.md +38 -0
  20. package/.codex/agents/developer.md +97 -0
  21. package/.codex/agents/devops.md +121 -0
  22. package/.codex/agents/product-lead.md +27 -0
  23. package/.codex/agents/project-lead.md +28 -0
  24. package/.codex/agents/quality-gate.md +89 -0
  25. package/.codex/agents/sprint-lead.md +28 -0
  26. package/.codex/agents/squad-creator.md +58 -0
  27. package/.codex/agents/ux-design-expert.md +28 -0
  28. package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
  29. package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
  30. package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
  31. package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
  32. package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
  33. package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
  34. package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
  35. package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
  36. package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
  37. package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
  38. package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
  39. package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
  40. package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
  41. package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
  42. package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
  43. package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
  44. package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
  45. package/.sinapse-ai/core/doctor/index.js +157 -50
  46. package/.sinapse-ai/core/ids/registry-updater.js +6 -1
  47. package/.sinapse-ai/core/logger/index.js +319 -0
  48. package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
  49. package/.sinapse-ai/core/telemetry/index.js +247 -0
  50. package/.sinapse-ai/data/entity-registry.yaml +1384 -944
  51. package/.sinapse-ai/development/agents/architect.md +5 -0
  52. package/.sinapse-ai/development/agents/data-engineer.md +38 -0
  53. package/.sinapse-ai/development/agents/developer.md +28 -0
  54. package/.sinapse-ai/development/agents/devops.md +4 -0
  55. package/.sinapse-ai/development/agents/product-lead.md +27 -0
  56. package/.sinapse-ai/development/agents/project-lead.md +28 -0
  57. package/.sinapse-ai/development/agents/quality-gate.md +4 -0
  58. package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
  59. package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
  60. package/.sinapse-ai/development/agents/squad-creator.md +58 -0
  61. package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
  62. package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
  63. package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
  64. package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
  65. package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
  66. package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
  67. package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
  68. package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
  69. package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
  70. package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
  71. package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
  72. package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
  73. package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
  74. package/.sinapse-ai/development/skills/model-router.md +92 -0
  75. package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
  76. package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
  77. package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
  78. package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
  79. package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
  80. package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
  81. package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
  82. package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
  83. package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
  84. package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
  85. package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
  86. package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
  87. package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
  88. package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
  89. package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
  90. package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
  91. package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
  92. package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
  93. package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
  94. package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
  95. package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
  96. package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
  97. package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
  98. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
  99. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
  100. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
  101. package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
  102. package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
  103. package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
  104. package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
  105. package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
  106. package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
  107. package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
  108. package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
  109. package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
  110. package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
  111. package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
  112. package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
  113. package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
  114. package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
  115. package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
  116. package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
  117. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
  118. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
  119. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
  120. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
  121. package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
  122. package/.sinapse-ai/install-manifest.yaml +275 -140
  123. package/.sinapse-ai/local-config.yaml.template +65 -65
  124. package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
  125. package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
  126. package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
  127. package/.sinapse-ai/monitor/hooks/notification.py +30 -30
  128. package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
  129. package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
  130. package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
  131. package/.sinapse-ai/monitor/hooks/stop.py +30 -30
  132. package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
  133. package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
  134. package/.sinapse-ai/product/templates/adr.hbs +126 -126
  135. package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
  136. package/.sinapse-ai/product/templates/epic.hbs +213 -213
  137. package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
  138. package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
  139. package/.sinapse-ai/product/templates/prd.hbs +202 -202
  140. package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
  141. package/.sinapse-ai/product/templates/story.hbs +264 -264
  142. package/.sinapse-ai/product/templates/task.hbs +171 -171
  143. package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
  144. package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
  145. package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
  146. package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
  147. package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
  148. package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
  149. package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
  150. package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
  151. package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
  152. package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
  153. package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
  154. package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
  155. package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
  156. package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
  157. package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
  158. package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
  159. package/LICENSE +34 -34
  160. package/README.en.md +167 -20
  161. package/README.md +190 -22
  162. package/bin/cli.js +510 -196
  163. package/bin/postinstall.js +564 -0
  164. package/bin/sinapse-cli +283 -283
  165. package/bin/sinapse-graph.js +9 -0
  166. package/bin/sinapse-init.js +36 -4
  167. package/bin/sinapse-minimal.js +20 -9
  168. package/bin/sinapse.js +202 -122
  169. package/bin/utils/deprecation-warning.js +46 -0
  170. package/bin/utils/pre-push-safety.js +14 -0
  171. package/docs/TELEMETRY.md +131 -0
  172. package/docs/chrome-brain-upgrade-plan.md +624 -0
  173. package/docs/framework/orqx-plan.md +1 -1
  174. package/docs/installation/chrome-brain.md +17 -7
  175. package/docs/mega-upgrade-orchestration-plan.md +71 -0
  176. package/docs/pt/contributing.md +20 -0
  177. package/docs/research-synthesis-for-upgrade.md +511 -0
  178. package/docs/security-audit-report.md +306 -0
  179. package/package.json +20 -8
  180. package/packages/installer/src/config/configure-environment.js +19 -44
  181. package/packages/installer/src/detection/detect-project-type.js +181 -63
  182. package/packages/installer/src/installer/manifest-signature.js +32 -17
  183. package/packages/installer/src/wizard/i18n.js +12 -0
  184. package/packages/installer/src/wizard/ide-config-generator.js +8 -39
  185. package/packages/installer/src/wizard/index.js +119 -14
  186. package/packages/installer/src/wizard/questions.js +2 -3
  187. package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
  188. package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
  189. package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
  190. package/packages/sinapse-install/bin/edmcp.js +0 -0
  191. package/packages/sinapse-install/bin/sinapse-install.js +0 -0
  192. package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
  193. package/scripts/check-markdown-links.py +353 -353
  194. package/scripts/coverage-report-summary.js +169 -0
  195. package/scripts/generate-install-manifest.js +6 -2
  196. package/scripts/release-readiness.js +169 -0
  197. package/scripts/test-install-matrix-local.sh +153 -0
  198. package/scripts/validate-install-docs.js +394 -0
  199. package/scripts/validate-no-external-refs.js +376 -0
  200. package/scripts/validate-squad-orqx.js +302 -0
  201. package/scripts/validate-story-meta.js +263 -0
  202. package/squads/claude-code-mastery/CHANGELOG.md +1 -1
  203. package/squads/claude-code-mastery/README.md +2 -2
  204. package/squads/claude-code-mastery/squad.yaml +1 -1
  205. package/squads/squad-artdir/README.md +90 -0
  206. package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
  207. package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
  208. package/squads/squad-artdir/agents/color-psychologist.md +166 -0
  209. package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
  210. package/squads/squad-artdir/agents/design-system-architect.md +100 -0
  211. package/squads/squad-artdir/agents/ia-architect.md +169 -0
  212. package/squads/squad-artdir/agents/interaction-designer.md +162 -0
  213. package/squads/squad-artdir/agents/layout-engineer.md +163 -0
  214. package/squads/squad-artdir/agents/motion-architect.md +185 -0
  215. package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
  216. package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
  217. package/squads/squad-artdir/agents/product-surface-director.md +86 -0
  218. package/squads/squad-artdir/agents/type-systemist.md +138 -0
  219. package/squads/squad-artdir/agents/visual-strategist.md +127 -0
  220. package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
  221. package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
  222. package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
  223. package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
  224. package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
  225. package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
  226. package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
  227. package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
  228. package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
  229. package/squads/squad-artdir/package.json +20 -0
  230. package/squads/squad-artdir/squad.yaml +271 -0
  231. package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
  232. package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
  233. package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
  234. package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
  235. package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
  236. package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
  237. package/squads/squad-artdir/tasks/design-color-system.md +81 -0
  238. package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
  239. package/squads/squad-artdir/tasks/design-token-system.md +58 -0
  240. package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
  241. package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
  242. package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
  243. package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
  244. package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
  245. package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
  246. package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
  247. package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
  248. package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
  249. package/squads/squad-brand/squad.yaml +20 -6
  250. package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
  251. package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
  252. package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
  253. package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
  254. package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
  255. package/squads/squad-content/squad.yaml +187 -27
  256. package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
  257. package/squads/squad-copy/squad.yaml +19 -4
  258. package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
  259. package/squads/squad-design/squad.yaml +19 -4
  260. package/.sinapse-ai/core/registry/service-registry.json +0 -6346
  261. package/.sinapse-ai/data/registry-update-log.jsonl +0 -1323
  262. package/.sinapse-ai/manifests/agents.csv +0 -29
  263. package/.sinapse-ai/manifests/tasks.csv +0 -204
  264. package/.sinapse-ai/manifests/workers.csv +0 -196
  265. package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
  266. package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
@@ -0,0 +1,457 @@
1
+ # Deliverables Templates
2
+
3
+ > Templates dos 8 deliverables padrao da squad-artdir.
4
+ > Cada deliverable tem estrutura, conteudo obrigatorio e exemplo.
5
+
6
+ ---
7
+
8
+ ## Deliverable 1: Art Direction Brief
9
+
10
+ ### Template
11
+
12
+ ```yaml
13
+ # Art Direction Brief: {Project Name}
14
+ # Generated by: squad-artdir (Canvas)
15
+ # Date: {date}
16
+
17
+ ## Project Overview
18
+ project_name: "{name}"
19
+ project_type: landing_page | website | campaign | product_page
20
+ client: "{client name}"
21
+ objective: "{primary conversion objective}"
22
+
23
+ ## Audience
24
+ primary:
25
+ description: "{who they are}"
26
+ demographics: "{age, role, industry}"
27
+ psychographics: "{values, motivations, pain points}"
28
+ tech_savviness: low | medium | high
29
+ secondary:
30
+ description: "{secondary audience if exists}"
31
+
32
+ ## Positioning
33
+ category: "{market category}"
34
+ competitors_visual: ["{comp1}", "{comp2}", "{comp3}"]
35
+ differentiation: "{how we stand apart visually}"
36
+ brand_voice_visual: "{adjectives: bold, minimal, warm, etc.}"
37
+
38
+ ## Visual Language (Pilar 1)
39
+ mood:
40
+ adjectives: ["{adj1}", "{adj2}", "{adj3}", "{adj4}", "{adj5}"]
41
+ references: ["{ref_url_1}", "{ref_url_2}", "{ref_url_3}"]
42
+ territory: "{visual territory description}"
43
+ decisions:
44
+ mode: dark | light | adaptive
45
+ mode_rationale: "{psychological justification}"
46
+ density: sparse | balanced | dense
47
+ density_rationale: "{why this density for this audience}"
48
+ temperature: warm | neutral | cool
49
+ weight: light | medium | heavy
50
+ contrast: subtle | balanced | stark
51
+ movement: static | subtle | kinetic
52
+
53
+ ## Color System (Pilar 2)
54
+ accent:
55
+ color: "{hex}"
56
+ name: "{descriptive name}"
57
+ neuropsychological_rationale: "{why this color — brain science}"
58
+ neutral:
59
+ base: "{hex}"
60
+ rationale: "{why}"
61
+ semantic: "{success, warning, error, info hex values}"
62
+ von_restorff_application: "{how accent creates isolation effect}"
63
+ wcag_compliance: "{AAA for CTAs, AA for text — verified}"
64
+
65
+ ## Typography (Pilar 3)
66
+ heading_font: "{font name}"
67
+ body_font: "{font name}"
68
+ accent_font: "{font name if any}"
69
+ pairing_rationale: "{why this pairing — positioning signal}"
70
+ type_scale: "Major Third (1.25) | Perfect Fourth (1.333) | {custom}"
71
+ fluid: true | false
72
+ special_treatments: ["{treatment 1}", "{treatment 2}"]
73
+
74
+ ## Motion System (Pilar 4)
75
+ philosophy: "{what personality does motion express}"
76
+ primary_lib: GSAP | Framer Motion | CSS | Lenis
77
+ smooth_scroll: true | false
78
+ scroll_driven: true | false
79
+ hero_technique: "{frame sequence | text reveal | parallax | static}"
80
+ stagger_default: "{value}ms"
81
+ easing_default: "{name} ({cubic-bezier})"
82
+ performance_budget: "60fps desktop, 30fps mobile"
83
+ reduced_motion: "{fallback strategy}"
84
+
85
+ ## Information Architecture (Pilar 5)
86
+ section_sequence:
87
+ - role: HOOK
88
+ description: "{what this section does cognitively}"
89
+ principle: "{psychological principle}"
90
+ - role: PROMISE
91
+ description: "{...}"
92
+ principle: "{...}"
93
+ # ... continue for all sections
94
+ retention_devices: ["{Zeigarnik loops}", "{progressive disclosure}", "{etc}"]
95
+
96
+ ## CRO Patterns (Pilar 6)
97
+ patterns_applied:
98
+ - pattern: "{name}"
99
+ location: "{where in page}"
100
+ principle: "{psychological basis}"
101
+ impact_hypothesis: "{metric: direction, rationale}"
102
+ cta_strategy:
103
+ primary: "{text + position}"
104
+ secondary: "{text + position}"
105
+ sticky: true | false
106
+
107
+ ## Layout System (Pilar 7)
108
+ grid: "12-column | custom"
109
+ spacing_base: "4px | 8px"
110
+ max_width: "{value}"
111
+ full_bleed_sections: ["{section 1}", "{section 2}"]
112
+ responsive_strategy: "mobile-first with breakpoints at {values}"
113
+
114
+ ## Accessibility (Transversal)
115
+ wcag_target: AA | AAA
116
+ reduced_motion: mandatory
117
+ color_blindness: verified
118
+ keyboard_nav: complete
119
+ screen_reader: tested
120
+
121
+ ## Impact Hypotheses
122
+ - metric: "{metric_1}"
123
+ prediction: "{direction}"
124
+ rationale: "{psychological principle}"
125
+ - metric: "{metric_2}"
126
+ prediction: "{direction}"
127
+ rationale: "{psychological principle}"
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Deliverable 2: Design Token System
133
+
134
+ ### Template
135
+
136
+ ```yaml
137
+ # Design Tokens: {Project Name}
138
+
139
+ tokens:
140
+ color:
141
+ accent:
142
+ 50: "{hex}"
143
+ 100: "{hex}"
144
+ # ... 200-800
145
+ 900: "{hex}"
146
+ neutral:
147
+ 0: "#ffffff"
148
+ 50: "{hex}"
149
+ # ... 100-900
150
+ 950: "{hex}"
151
+ semantic:
152
+ success: "{hex}"
153
+ warning: "{hex}"
154
+ error: "{hex}"
155
+ info: "{hex}"
156
+ surface:
157
+ bg-primary: "{hex}"
158
+ bg-secondary: "{hex}"
159
+ bg-tertiary: "{hex}"
160
+ fg-primary: "{hex}"
161
+ fg-secondary: "{hex}"
162
+ fg-tertiary: "{hex}"
163
+
164
+ typography:
165
+ font-heading: "{family}, {fallback}"
166
+ font-body: "{family}, {fallback}"
167
+ font-accent: "{family}, {fallback}"
168
+ scale:
169
+ 5xl: "clamp({min}, {preferred}, {max})"
170
+ 4xl: "clamp({min}, {preferred}, {max})"
171
+ # ... 3xl, 2xl, xl, lg, base, sm, xs
172
+ tracking:
173
+ tight: "-0.04em"
174
+ normal: "0"
175
+ wide: "0.08em"
176
+ leading:
177
+ tight: "1.1"
178
+ normal: "1.5"
179
+ relaxed: "1.75"
180
+
181
+ spacing:
182
+ 1: "0.25rem" # 4px
183
+ 2: "0.5rem" # 8px
184
+ 3: "0.75rem" # 12px
185
+ 4: "1rem" # 16px
186
+ # ... continue scale
187
+ 48: "12rem" # 192px
188
+
189
+ motion:
190
+ duration:
191
+ micro: "200ms"
192
+ entrance: "500ms"
193
+ exit: "300ms"
194
+ page: "500ms"
195
+ ambient: "8000ms"
196
+ easing:
197
+ out: "cubic-bezier(0.22, 1, 0.36, 1)"
198
+ in: "cubic-bezier(0.55, 0, 1, 0.45)"
199
+ inOut: "cubic-bezier(0.76, 0, 0.24, 1)"
200
+ dramatic: "cubic-bezier(0.16, 1, 0.3, 1)"
201
+ bounce: "cubic-bezier(0.34, 1.56, 0.64, 1)"
202
+ stagger: "80ms"
203
+
204
+ layout:
205
+ container-max: "{value}"
206
+ grid-columns: 12
207
+ grid-gutter: "{value}"
208
+ border-radius:
209
+ sm: "4px"
210
+ md: "8px"
211
+ lg: "16px"
212
+ full: "9999px"
213
+ ```
214
+
215
+ ---
216
+
217
+ ## Deliverable 3: Motion Spec
218
+
219
+ ### Template
220
+
221
+ ```yaml
222
+ # Motion Spec: {Project Name}
223
+
224
+ philosophy: "{what personality motion expresses}"
225
+ libs: ["{primary}", "{secondary}"]
226
+ smooth_scroll:
227
+ enabled: true
228
+ lib: Lenis
229
+ config:
230
+ duration: 1.2
231
+ easing: "expo decay"
232
+
233
+ hero:
234
+ technique: "{name}"
235
+ description: "{what it does}"
236
+ trigger: "{page load | scroll | click}"
237
+ duration: "{value}"
238
+ easing: "{value}"
239
+
240
+ sections:
241
+ - name: "{section name}"
242
+ animations:
243
+ - element: "{selector}"
244
+ type: "{fade | slide | scale | clip-path | etc}"
245
+ direction: "{up | left | right | in}"
246
+ duration: "{value}"
247
+ easing: "{value}"
248
+ stagger: "{value if multiple}"
249
+ trigger: "{scroll enter | click | load}"
250
+ scrub: true | false
251
+ pin: true | false
252
+
253
+ interactions:
254
+ - element: "{selector}"
255
+ state: "{hover | active | focus}"
256
+ properties:
257
+ - property: "{transform | opacity | etc}"
258
+ from: "{value}"
259
+ to: "{value}"
260
+ duration: "{value}"
261
+ easing: "{value}"
262
+
263
+ reduced_motion:
264
+ strategy: "{remove all motion | fade only | instant appear}"
265
+ fallbacks:
266
+ - original: "{animation description}"
267
+ reduced: "{simplified version}"
268
+
269
+ performance:
270
+ fps_target: "60fps desktop, 30fps mobile"
271
+ max_simultaneous: 30
272
+ gpu_only: true
273
+ will_change_strategy: "add before, remove after"
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Deliverable 4: Annotated Wireflow
279
+
280
+ ### Template
281
+
282
+ ```
283
+ # Annotated Wireflow: {Project Name}
284
+
285
+ For each section:
286
+
287
+ ## Section {N}: {Name}
288
+ - **Cognitive Role:** {HOOK | PROMISE | PROOF | QUALIFY | EDUCATE | DEMONSTRATE | COMPARE | OVERCOME | CONVERT | REINFORCE}
289
+ - **Psychological Principle:** {principle name + brief explanation}
290
+ - **Content Elements:** {list of content blocks}
291
+ - **Layout:** {full-bleed | contained | split}
292
+ - **Motion:** {entrance animation + scroll behavior}
293
+ - **CTA:** {present? type? position?}
294
+ - **Transition to Next:** {how this section connects to the next cognitively}
295
+ - **Impact Hypothesis:** {metric + direction + rationale}
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Deliverable 5: Component Library Spec
301
+
302
+ ### Template
303
+
304
+ ```yaml
305
+ # Component Library Spec: {Project Name}
306
+
307
+ components:
308
+ - name: "{ComponentName}"
309
+ description: "{what it does}"
310
+ variants: ["{variant1}", "{variant2}"]
311
+ states:
312
+ default: "{description}"
313
+ hover: "{description + animation}"
314
+ active: "{description + animation}"
315
+ focus: "{description — WCAG compliant}"
316
+ disabled: "{description}"
317
+ loading: "{description + animation}"
318
+ props:
319
+ - name: "{prop}"
320
+ type: "{type}"
321
+ default: "{value}"
322
+ accessibility:
323
+ role: "{ARIA role}"
324
+ label: "{aria-label strategy}"
325
+ keyboard: "{keyboard interaction}"
326
+ tokens_used: ["{token1}", "{token2}"]
327
+ ```
328
+
329
+ ---
330
+
331
+ ## Deliverable 6: CRO Patterns Map
332
+
333
+ ### Template
334
+
335
+ ```yaml
336
+ # CRO Patterns Map: {Project Name}
337
+
338
+ patterns:
339
+ - name: "{Pattern Name}"
340
+ location: "{Section N — Name}"
341
+ type: "{social_proof | comparison | scarcity | risk_reversal | cta | form | pricing}"
342
+ principle: "{psychological principle}"
343
+ implementation: "{brief description}"
344
+ impact_hypothesis:
345
+ metric: "{CTR | conversion | scroll_depth | time_on_page | bounce_rate}"
346
+ direction: "{increase | decrease}"
347
+ magnitude: "{estimated % change}"
348
+ rationale: "{why this prediction}"
349
+ priority: high | medium | low
350
+ effort: low | medium | high
351
+ ```
352
+
353
+ ---
354
+
355
+ ## Deliverable 7: Implementation Guide
356
+
357
+ ### Template
358
+
359
+ ```markdown
360
+ # Implementation Guide: {Project Name}
361
+
362
+ ## Tech Stack Recommendations
363
+ - Framework: {Next.js | Astro | etc}
364
+ - Animation: {GSAP | Framer Motion | CSS}
365
+ - Scroll: {Lenis | native}
366
+ - Fonts: {loading strategy}
367
+ - Images: {optimization strategy}
368
+
369
+ ## Critical Path (implement in this order)
370
+ 1. {Setup + layout + typography}
371
+ 2. {Color system + components}
372
+ 3. {Content + IA structure}
373
+ 4. {Motion + interactions}
374
+ 5. {CRO patterns}
375
+ 6. {Accessibility pass}
376
+ 7. {Performance optimization}
377
+ 8. {Testing + validation}
378
+
379
+ ## Developer Notes
380
+ - {Specific technical considerations}
381
+ - {Performance gotchas}
382
+ - {Accessibility requirements}
383
+ - {Browser support targets}
384
+ ```
385
+
386
+ ---
387
+
388
+ ## Deliverable 8: Validation Checklist
389
+
390
+ ### Template
391
+
392
+ ```markdown
393
+ # Validation Checklist: {Project Name}
394
+
395
+ ## Pilar 1: Visual Hierarchy
396
+ - [ ] Clear focal point per viewport
397
+ - [ ] Consistent heading hierarchy
398
+ - [ ] Von Restorff applied to CTAs
399
+ - [ ] Reading pattern matches content type
400
+
401
+ ## Pilar 2: Color System
402
+ - [ ] Max 1 accent + 1 neutral
403
+ - [ ] WCAG AAA (7:1) on CTAs
404
+ - [ ] WCAG AA (4.5:1) on body text
405
+ - [ ] Semantic colors functional
406
+ - [ ] Color-blindness safe
407
+
408
+ ## Pilar 3: Typography
409
+ - [ ] Font pairing justified by positioning
410
+ - [ ] Type scale consistent (modular)
411
+ - [ ] Fluid typography with clamp()
412
+ - [ ] Font loading optimized
413
+
414
+ ## Pilar 4: Motion
415
+ - [ ] Every animation has psychological justification
416
+ - [ ] GPU-only properties
417
+ - [ ] 60fps desktop, 30fps+ mobile
418
+ - [ ] prefers-reduced-motion fallbacks
419
+ - [ ] No animation > 5s without user control
420
+
421
+ ## Pilar 5: Information Architecture
422
+ - [ ] Section sequence follows cognitive roles
423
+ - [ ] Progressive disclosure implemented
424
+ - [ ] Zeigarnik loops present
425
+ - [ ] Peak moment identified
426
+ - [ ] End moment is strong
427
+
428
+ ## Pilar 6: CRO Patterns
429
+ - [ ] Social proof present and verifiable
430
+ - [ ] Multiple CTAs at different intent levels
431
+ - [ ] Risk reversal addresses top objections
432
+ - [ ] Comparison framed favorably
433
+ - [ ] Impact hypotheses documented
434
+
435
+ ## Pilar 7: Layout & Spacing
436
+ - [ ] 4px/8px baseline grid
437
+ - [ ] Section spacing creates cognitive breathing
438
+ - [ ] Full-bleed vs contained justified
439
+ - [ ] Responsive breakpoints tested
440
+ - [ ] Max content width enforced
441
+
442
+ ## WCAG Compliance
443
+ - [ ] Contrast ratios verified
444
+ - [ ] Keyboard navigation complete
445
+ - [ ] Screen reader tested
446
+ - [ ] Focus states visible
447
+ - [ ] Skip link present
448
+ - [ ] Alt text on all images
449
+ - [ ] Form labels present
450
+
451
+ ## Performance
452
+ - [ ] Lighthouse score > 90
453
+ - [ ] FCP < 1.5s
454
+ - [ ] LCP < 2.5s
455
+ - [ ] CLS < 0.1
456
+ - [ ] Total JS < 200KB gzipped
457
+ ```
@@ -0,0 +1,247 @@
1
+ # Motion Technique Catalog
2
+
3
+ > Catalogo completo de tecnicas de motion para art direction.
4
+ > Cada tecnica inclui: quando usar, lib recomendada, easing, duracao, performance e principio psicologico.
5
+
6
+ ---
7
+
8
+ ## Categorias de Motion
9
+
10
+ ### 1. Micro-interactions (150-400ms)
11
+
12
+ Respostas imediatas a acoes do usuario. Devem ser quase imperceptiveis conscientemente, mas sentidas como "responsividade".
13
+
14
+ | Tecnica | Duracao | Easing | Lib | Trigger | Principio |
15
+ |---------|---------|--------|-----|---------|-----------|
16
+ | Button hover brighten | 200ms | power2.out | CSS | mouseenter | Feedback (affordance) |
17
+ | Button press scale | 100ms | power1.in | CSS | mousedown | Squash & Stretch |
18
+ | Button release bounce | 200ms | back.out(1.2) | CSS | mouseup | Follow Through |
19
+ | Input focus glow | 200ms | power1.out | CSS | focus | Feedback (state change) |
20
+ | Toggle switch | 250ms | back.out(1.4) | GSAP | click | Slow In/Out |
21
+ | Checkbox draw | 300ms | power2.out | SVG/CSS | change | Timing (confirmation) |
22
+ | Tooltip appear | 200ms | power2.out | CSS | hover 300ms delay | Staging |
23
+ | Icon morph | 300ms | power2.inOut | GSAP | state change | Appeal |
24
+ | Link underline grow | 200ms | power2.out | CSS | mouseenter | Secondary Action |
25
+ | Card hover lift | 250ms | power2.out | CSS | mouseenter | Exaggeration (subtle) |
26
+
27
+ **Performance:** CSS transitions only. Nenhum JS necessario para micro-interactions basicas.
28
+
29
+ ### 2. Entrance Animations (300-800ms)
30
+
31
+ Elementos que aparecem no viewport. Devem comunicar "eu cheguei" sem atrasar a leitura.
32
+
33
+ | Tecnica | Duracao | Easing | Lib | Trigger | Principio |
34
+ |---------|---------|--------|-----|---------|-----------|
35
+ | Fade in | 400ms | power2.out | CSS/GSAP | scroll enter | Timing (peso minimo) |
36
+ | Slide up + fade | 600ms | power3.out | GSAP | scroll enter | Slow In/Out |
37
+ | Slide left/right + fade | 600ms | power3.out | GSAP | scroll enter | Staging |
38
+ | Scale up + fade | 500ms | power2.out | GSAP | scroll enter | Squash & Stretch |
39
+ | Stagger children | 400ms + 80ms stagger | power2.out | GSAP | scroll enter | Follow Through |
40
+ | Clip-path reveal | 600ms | power3.out | GSAP | scroll enter | Staging (dramatic) |
41
+ | Text split reveal | 800ms | power3.out | GSAP SplitText | scroll enter | Timing + Staging |
42
+ | Counter increment | 1000ms | power2.out | GSAP | scroll enter | Anticipation (buildup) |
43
+ | Draw SVG path | 800ms | power2.inOut | GSAP DrawSVG | scroll enter | Straight Ahead |
44
+ | Blur to sharp | 500ms | power2.out | CSS/GSAP | scroll enter | Staging (focus) |
45
+
46
+ **Performance:** GSAP ScrollTrigger com `start: "top 80%"` como default trigger. Intersection Observer como fallback.
47
+
48
+ ### 3. Scroll-Driven Animations (Scrubbed)
49
+
50
+ Animacoes vinculadas ao scroll position. O usuario controla o ritmo — NUNCA auto-play.
51
+
52
+ | Tecnica | Scrub | Pin | Lib | Principio |
53
+ |---------|-------|-----|-----|-----------|
54
+ | Parallax layers | true | false | GSAP ScrollTrigger | Depth (Solid Drawing) |
55
+ | Pinned section | true | true | GSAP ScrollTrigger | Staging (palco fixo) |
56
+ | Frame sequence | true | true | GSAP ScrollTrigger | Cinema (Straight Ahead) |
57
+ | Horizontal scroll | true | true | GSAP ScrollTrigger | Staging (direcional) |
58
+ | Text scramble on scroll | true | true | GSAP + custom | Anticipation |
59
+ | Progress bar | true | false | CSS/JS | Zeigarnik, goal gradient |
60
+ | Counter scrub | true | false | GSAP | Anchoring (numeros) |
61
+ | Clip-path morph | true | true | GSAP | Staging (reveal) |
62
+ | Opacity scrub | true | false | GSAP/CSS | Progressive disclosure |
63
+ | Scale scrub | true | false | GSAP | Exaggeration |
64
+
65
+ **Performance:** `scrub: true` usa `requestAnimationFrame` internamente. `pin: true` usa `position: fixed` — testar em mobile.
66
+
67
+ ### 4. Page Transitions (400-800ms)
68
+
69
+ Transicoes entre paginas ou views. Devem comunicar continuidade, nao interrupacao.
70
+
71
+ | Tecnica | Duracao | Easing | Lib | Principio |
72
+ |---------|---------|--------|-----|-----------|
73
+ | Crossfade | 400ms | power2.inOut | GSAP/Barba | Timing (simples) |
74
+ | Slide + fade | 500ms | power2.inOut | GSAP/Barba | Arcs |
75
+ | Clip-path wipe | 600ms | power3.inOut | GSAP | Staging (dramatic) |
76
+ | Scale out/in | 500ms | power2.inOut | GSAP | Exaggeration |
77
+ | Shared element morph | 600ms | power3.out | GSAP FLIP | Continuity |
78
+ | View Transitions API | 300ms | ease-in-out | Native | Timing (native) |
79
+ | Cover reveal (overlay) | 800ms | power3.inOut | GSAP | Staging |
80
+ | Curtain (split) | 600ms | power2.inOut | GSAP | Appeal |
81
+
82
+ **Performance:** Barba.js para MPA, View Transitions API para suporte nativo, GSAP para SPA custom.
83
+
84
+ ### 5. Ambient/Background (3000ms+)
85
+
86
+ Motion continuo que cria atmosfera sem demandar atencao. Deve ser percebido subconscientemente.
87
+
88
+ | Tecnica | Duracao | Loop | Lib | Principio |
89
+ |---------|---------|------|-----|-----------|
90
+ | Gradient shift | 8-15s | infinite | CSS | Appeal (atmosphere) |
91
+ | Noise texture | continuous | infinite | GLSL/Canvas | Appeal (texture) |
92
+ | Particle drift | continuous | infinite | Three.js/Canvas | Appeal (life) |
93
+ | Floating elements | 5-10s | infinite | CSS/GSAP | Secondary Action |
94
+ | Glow pulse | 2-4s | infinite | CSS | Secondary Action |
95
+ | Cursor trail | continuous | n/a | JS | Appeal (interactivity) |
96
+ | Live clock | 1s interval | infinite | JS | Secondary Action |
97
+ | Subtle parallax | continuous | n/a | JS/CSS | Solid Drawing (depth) |
98
+
99
+ **Performance:** Ambient animations DEVEM rodar em GPU. Testar FPS em mobile. Desativar em `prefers-reduced-motion`.
100
+
101
+ ---
102
+
103
+ ## Easing Reference Completo
104
+
105
+ ### REGRA: Nunca usar `linear` para motion de UI
106
+
107
+ Linear e aceitavel APENAS para:
108
+ - Marquee text (scroll continuo)
109
+ - Loading spinner rotation
110
+ - Progress bar fill
111
+ - Ambient gradient shift
112
+
113
+ ### Easing por Intencao
114
+
115
+ | Intencao | Easing | CSS cubic-bezier | GSAP |
116
+ |----------|--------|-----------------|------|
117
+ | Entrada natural | power2.out | (0.22, 1, 0.36, 1) | "power2.out" |
118
+ | Entrada dramatica | power3.out | (0.16, 1, 0.3, 1) | "power3.out" |
119
+ | Entrada explosiva | expo.out | (0.19, 1, 0.22, 1) | "expo.out" |
120
+ | Saida suave | power2.in | (0.55, 0, 1, 0.45) | "power2.in" |
121
+ | Saida dramatica | power3.in | (0.7, 0, 0.84, 0) | "power3.in" |
122
+ | Transicao equilibrada | power2.inOut | (0.76, 0, 0.24, 1) | "power2.inOut" |
123
+ | Transicao dramatica | power3.inOut | (0.85, 0, 0.15, 1) | "power3.inOut" |
124
+ | Bounce/overshoot | back.out | (0.34, 1.56, 0.64, 1) | "back.out(1.7)" |
125
+ | Elastic | elastic.out | N/A (spring-based) | "elastic.out(1, 0.3)" |
126
+ | Suave/ambient | sine.inOut | (0.37, 0, 0.63, 1) | "sine.inOut" |
127
+
128
+ ### Duration Rules
129
+
130
+ | Categoria | Range | Default |
131
+ |-----------|-------|---------|
132
+ | Micro (hover, click) | 100-300ms | 200ms |
133
+ | Entrance (reveal) | 300-800ms | 500ms |
134
+ | Exit (dismiss) | 200-400ms | 300ms |
135
+ | Page transition | 400-800ms | 500ms |
136
+ | Scroll scrub | viewport-based | N/A |
137
+ | Ambient | 3000-15000ms | 8000ms |
138
+ | Stagger delay | 30-120ms | 80ms |
139
+
140
+ ---
141
+
142
+ ## Performance Rules
143
+
144
+ ### GPU-Only Properties
145
+
146
+ | USAR (GPU composited) | NUNCA USAR (layout thrashing) |
147
+ |----------------------|------------------------------|
148
+ | `transform: translate()` | `top`, `left`, `right`, `bottom` |
149
+ | `transform: scale()` | `width`, `height` |
150
+ | `transform: rotate()` | `margin`, `padding` |
151
+ | `opacity` | `font-size` |
152
+ | `filter` (com cuidado) | `border-width` |
153
+ | `clip-path` (GPU em browsers modernos) | `box-shadow` (layout em alguns browsers) |
154
+
155
+ ### will-change Strategy
156
+
157
+ ```css
158
+ /* Adicionar ANTES da animacao */
159
+ .element-about-to-animate {
160
+ will-change: transform, opacity;
161
+ }
162
+
163
+ /* Remover APOS a animacao */
164
+ .element-finished-animating {
165
+ will-change: auto;
166
+ }
167
+
168
+ /* NUNCA aplicar globalmente */
169
+ * { will-change: transform; } /* PROIBIDO */
170
+ ```
171
+
172
+ ### Mobile Performance Budget
173
+
174
+ | Metrica | Budget |
175
+ |---------|--------|
176
+ | Elementos animados simultaneamente | Max 30 |
177
+ | Frame rate minimo | 30fps |
178
+ | DOM nodes animados | Max 50 no viewport |
179
+ | Texture size (Three.js) | Max 1024x1024 mobile |
180
+ | Total JS para animacao | Max 100KB gzipped |
181
+
182
+ ### Intersection Observer Pattern
183
+
184
+ ```javascript
185
+ // CORRETO: Intersection Observer para trigger
186
+ const observer = new IntersectionObserver((entries) => {
187
+ entries.forEach(entry => {
188
+ if (entry.isIntersecting) {
189
+ animateElement(entry.target);
190
+ observer.unobserve(entry.target); // Uma vez
191
+ }
192
+ });
193
+ }, { threshold: 0.2 });
194
+
195
+ // ERRADO: Scroll event listener
196
+ window.addEventListener('scroll', () => { /* NUNCA */ });
197
+ ```
198
+
199
+ ---
200
+
201
+ ## prefers-reduced-motion Strategy
202
+
203
+ ### Abordagem Progressiva
204
+
205
+ ```css
206
+ /* Nivel 1: Remover transitions e animations */
207
+ @media (prefers-reduced-motion: reduce) {
208
+ *, *::before, *::after {
209
+ animation-duration: 0.01ms !important;
210
+ animation-iteration-count: 1 !important;
211
+ transition-duration: 0.01ms !important;
212
+ scroll-behavior: auto !important;
213
+ }
214
+ }
215
+ ```
216
+
217
+ ```javascript
218
+ // Nivel 2: Desabilitar GSAP ScrollTrigger
219
+ const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
220
+
221
+ if (prefersReduced) {
222
+ // Mostrar todo conteudo sem animacao
223
+ gsap.globalTimeline.clear();
224
+ ScrollTrigger.getAll().forEach(st => st.kill());
225
+
226
+ // Conteudo visivel imediatamente
227
+ document.querySelectorAll('[data-animate]').forEach(el => {
228
+ el.style.opacity = '1';
229
+ el.style.transform = 'none';
230
+ });
231
+ }
232
+ ```
233
+
234
+ ### Substituicoes
235
+
236
+ | Com Motion | Sem Motion |
237
+ |-----------|-----------|
238
+ | Slide + fade entrance | Instant appear (opacity 1) |
239
+ | Parallax scroll | Static positioning |
240
+ | Frame sequence | First frame static |
241
+ | Text scramble | Text static visible |
242
+ | Marquee scroll | Static grid of items |
243
+ | Custom cursor | System cursor |
244
+ | Hover scale | Hover color change |
245
+ | Page transition | Instant page swap |
246
+ | Loading spinner | "Loading..." text |
247
+ | Background particles | Static background |