@inneranimalmedia/agentsam-sdk 2.6.11 → 2.6.12

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 (411) hide show
  1. package/apps/cad-creator/shared/cad/package.json +1 -1
  2. package/apps/client-cms-editor/backend/package.json +2 -2
  3. package/apps/client-cms-editor/frontend/package.json +3 -3
  4. package/apps/client-cms-editor/frontend/src/adapters/http-authoring.test.ts +161 -0
  5. package/apps/client-cms-editor/frontend/src/adapters/http.ts +296 -65
  6. package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +47 -16
  7. package/apps/client-cms-editor/frontend/src/editor/composition-groups.test.ts +40 -0
  8. package/apps/client-cms-editor/frontend/src/editor/legacy/CmsEditorPrototype.tsx +28 -28
  9. package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +3 -3
  10. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +5 -4
  11. package/apps/client-cms-editor/frontend/src/styles/studio.css +150 -149
  12. package/apps/client-cms-editor/package.json +1 -1
  13. package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +1 -1
  14. package/apps/client-cms-editor/shared/cms/package.json +1 -1
  15. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +42 -1
  16. package/docs/CMS_CONTEXTUAL_COMPOSER.md +4 -4
  17. package/docs/PRODUCT_LIFECYCLE.md +38 -38
  18. package/docs/REPO_FILE_MAP.txt +2 -2
  19. package/docs/THEME_REFINERY.md +6 -6
  20. package/docs/WINDOWS_RUNTIME_INSTALL.md +1 -1
  21. package/docs/adr/ADR-0002-brand-campaign-plugin-boundaries.md +603 -0
  22. package/docs/adr/ADR-0003-copro-clean-room-product-architecture.md +34 -0
  23. package/docs/adr/ADR-0003-product-portfolio-and-package-taxonomy.md +146 -0
  24. package/docs/adr/ADR-0004-product-composition-and-provider-neutrality.md +56 -0
  25. package/docs/adr/ADR-0005-offer-graduation-standard.md +66 -0
  26. package/docs/adr/README.md +25 -0
  27. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +1 -1
  28. package/docs/architecture/DUAL_ANALYTICS_PRODUCT.md +1 -1
  29. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +1 -1
  30. package/docs/content-studio/REVISION_GATE_2026-09-27.md +3 -3
  31. package/docs/contracts/google-cloud-oauth-setup.md +1 -1
  32. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +3 -3
  33. package/docs/plans/ASTRA-BRIEF-2026-09-18.md +1 -1
  34. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +2 -2
  35. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +1 -1
  36. package/docs/plans/NEXT-AGENT-HANDOFF.md +2 -2
  37. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +68 -68
  38. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +1 -1
  39. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +1 -1
  40. package/docs/prd/PRD-agentsam-analytics.md +174 -0
  41. package/docs/prd/PRD-agentsam-brand.md +181 -0
  42. package/docs/prd/PRD-agentsam-browser.md +177 -0
  43. package/docs/prd/PRD-agentsam-cad-studio.md +177 -0
  44. package/docs/prd/PRD-agentsam-campaign.md +1178 -0
  45. package/docs/prd/PRD-agentsam-commerce-studio.md +180 -0
  46. package/docs/prd/PRD-agentsam-content-studio.md +179 -0
  47. package/docs/prd/PRD-agentsam-copro.md +39 -0
  48. package/docs/prd/PRD-agentsam-database-studio.md +175 -0
  49. package/docs/prd/PRD-agentsam-developer-studio.md +175 -0
  50. package/docs/prd/PRD-agentsam-hosted-runtime.md +180 -0
  51. package/docs/prd/PRD-agentsam-knowledge.md +174 -0
  52. package/docs/prd/PRD-agentsam-local-studio.md +180 -0
  53. package/docs/prd/PRD-agentsam-merch.md +177 -0
  54. package/docs/prd/PRD-agentsam-platform.md +179 -0
  55. package/docs/prd/PRD-agentsam-site-studio.md +180 -0
  56. package/docs/prd/PRD-agentsam-work.md +180 -0
  57. package/docs/prd/README.md +39 -0
  58. package/docs/product/COPRO-DONOR-AUDIT.md +9 -0
  59. package/docs/product/COPRO-EXECUTION-PLAN.md +81 -0
  60. package/docs/product/COPRO-UI-QUALITY-GATE.md +119 -0
  61. package/docs/product/OFFER-PORTFOLIO.md +158 -0
  62. package/docs/product/PACKAGE-TAXONOMY.md +78 -0
  63. package/examples/hyperspace-demo/dist/assets/index-SZ2LfOpJ.js +242 -0
  64. package/examples/hyperspace-demo/dist/index.html +13 -0
  65. package/native/agentsam-machine/core/src/lib.rs +2 -2
  66. package/package.json +55 -35
  67. package/packages/agentsam-brand/package.json +3 -2
  68. package/packages/agentsam-brand/src/public.js +192 -0
  69. package/packages/agentsam-contracts/README.md +1 -1
  70. package/packages/agentsam-contracts/package.json +1 -1
  71. package/packages/agentsam-errors/package.json +1 -1
  72. package/packages/agentsam-goap/package.json +2 -2
  73. package/packages/agentsam-hooks/package.json +1 -1
  74. package/packages/agentsam-knowledge/package.json +1 -1
  75. package/packages/agentsam-merch/package.json +1 -1
  76. package/packages/agentsam-merch/test/merch.test.mjs +1 -1
  77. package/packages/agentsam-nav/dist/browser.global.js +34 -71
  78. package/packages/agentsam-nav/dist/browser.js +759 -3157
  79. package/packages/agentsam-nav/dist/index.js +751 -3149
  80. package/packages/agentsam-nav/package.json +1 -1
  81. package/packages/agentsam-queue-control/package.json +1 -1
  82. package/packages/agentsam-repository/package.json +1 -1
  83. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +670 -0
  84. package/packages/agentsam-vault/package.json +1 -1
  85. package/packages/agentsam-workbench/package.json +5 -4
  86. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +28 -4
  87. package/packages/agentsam-workbench/src/agent/contextual-composer.css +72 -70
  88. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +228 -10
  89. package/packages/connectors/cfoa/package.json +1 -1
  90. package/packages/heuristic-theme/package.json +1 -1
  91. package/packages/identity/package.json +1 -1
  92. package/packages/identity/src/frontend/auth-portal/pages/login.html +1 -1
  93. package/packages/identity/src/frontend/auth-portal/pages/reset.html +1 -1
  94. package/packages/identity/src/frontend/auth-portal/pages/signup.html +1 -1
  95. package/packages/identity/tests/chatgpt-provider.test.mjs +3 -3
  96. package/packages/identity/tests/oauth-consent-view.test.mjs +11 -11
  97. package/packages/providers/completeful/README.md +3 -3
  98. package/packages/providers/completeful/package.json +1 -1
  99. package/packages/theme-cypress/README.md +11 -0
  100. package/packages/{theme-church-site → theme-cypress}/package.json +14 -11
  101. package/packages/theme-cypress/prebuild.json +23 -0
  102. package/packages/theme-cypress/site/assets/generated/favicon.svg +7 -0
  103. package/packages/theme-cypress/site/assets/generated/media-044ba16613.webp +0 -0
  104. package/packages/theme-cypress/site/assets/generated/media-0a1ea6f6d9.webp +0 -0
  105. package/packages/theme-cypress/site/assets/generated/media-0c06778307.webp +0 -0
  106. package/packages/theme-cypress/site/assets/generated/media-1539ed373a.webp +0 -0
  107. package/packages/theme-cypress/site/assets/generated/media-2df479fd2d.webp +0 -0
  108. package/packages/theme-cypress/site/assets/generated/media-2e8bd0d9bc.webp +0 -0
  109. package/packages/theme-cypress/site/assets/generated/media-41d4e2643c.webp +0 -0
  110. package/packages/theme-cypress/site/assets/generated/media-46205bfde8.webp +0 -0
  111. package/packages/theme-cypress/site/assets/generated/media-50c5f3e279.webp +0 -0
  112. package/packages/theme-cypress/site/assets/generated/media-5f1467778c.webp +0 -0
  113. package/packages/theme-cypress/site/assets/generated/media-6703642b22.webp +0 -0
  114. package/packages/theme-cypress/site/assets/generated/media-87a490bc8e.webp +0 -0
  115. package/packages/theme-cypress/site/assets/generated/media-997c10ef39.webp +0 -0
  116. package/packages/theme-cypress/site/assets/generated/media-a423735c21.webp +0 -0
  117. package/packages/theme-cypress/site/assets/generated/media-c9cea5245b.webp +0 -0
  118. package/packages/theme-cypress/site/assets/generated/media-cab3c84c60.webp +0 -0
  119. package/packages/theme-cypress/site/assets/generated/media-ce06595d59.webp +0 -0
  120. package/packages/theme-cypress/site/assets/generated/media-d268905e7e.webp +0 -0
  121. package/packages/theme-cypress/site/assets/generated/media-f6711b5053.webp +0 -0
  122. package/packages/theme-cypress/site/assets/generated/media-manifest.json +226 -0
  123. package/packages/theme-cypress/site/assets/generated/social-card.webp +0 -0
  124. package/packages/theme-cypress/site/assets/generated/theme-mark-192.png +0 -0
  125. package/packages/theme-cypress/site/assets/generated/theme-mark-512.png +0 -0
  126. package/packages/theme-cypress/site/assets/generated/theme-mark.svg +7 -0
  127. package/packages/theme-cypress/site/beliefs.html +175 -0
  128. package/packages/theme-cypress/site/community.html +175 -0
  129. package/packages/theme-cypress/site/connect.html +319 -0
  130. package/packages/theme-cypress/site/donate.html +106 -0
  131. package/packages/theme-cypress/site/groups.html +1352 -0
  132. package/packages/theme-cypress/site/help.html +1 -0
  133. package/packages/theme-cypress/site/icons/clock.svg +4 -0
  134. package/packages/theme-cypress/site/icons/email.svg +4 -0
  135. package/packages/theme-cypress/site/icons/giving.svg +4 -0
  136. package/packages/theme-cypress/site/icons/home.svg +4 -0
  137. package/packages/theme-cypress/site/icons/location.svg +4 -0
  138. package/packages/theme-cypress/site/icons/media.svg +4 -0
  139. package/packages/theme-cypress/site/icons/ministries.svg +6 -0
  140. package/packages/theme-cypress/site/icons/prayer.svg +5 -0
  141. package/packages/theme-cypress/site/icons/visit.svg +6 -0
  142. package/packages/theme-cypress/site/index.html +1013 -0
  143. package/packages/theme-cypress/site/mensgroup.html +477 -0
  144. package/packages/theme-cypress/site/mission.html +512 -0
  145. package/packages/theme-cypress/site/unified-footer.css +172 -0
  146. package/packages/theme-cypress/site/unified-footer.js +175 -0
  147. package/packages/theme-cypress/site/unified-header.css +226 -0
  148. package/packages/theme-cypress/site/unified-header.js +111 -0
  149. package/packages/theme-cypress/site/womansgroup.html +452 -0
  150. package/packages/{theme-church-site → theme-cypress}/src/index.js +22 -35
  151. package/packages/theme-cypress/src/node.js +69 -0
  152. package/packages/theme-cypress/test/theme.test.mjs +47 -0
  153. package/packages/theme-ember/README.md +11 -0
  154. package/packages/{theme-fuelnfree-site → theme-ember}/package.json +14 -11
  155. package/packages/theme-ember/prebuild.json +23 -0
  156. package/packages/theme-ember/site/about.html +1840 -0
  157. package/packages/theme-ember/site/assets/generated/favicon.svg +7 -0
  158. package/packages/theme-ember/site/assets/generated/media-1e0b1e6ee6.webp +0 -0
  159. package/packages/theme-ember/site/assets/generated/media-2371dcb426.webp +0 -0
  160. package/packages/theme-ember/site/assets/generated/media-2db4f5ff9e.webp +0 -0
  161. package/packages/theme-ember/site/assets/generated/media-4ed07a756e.webp +0 -0
  162. package/packages/theme-ember/site/assets/generated/media-58182cf167.webp +0 -0
  163. package/packages/theme-ember/site/assets/generated/media-5b8b8472ae.webp +0 -0
  164. package/packages/theme-ember/site/assets/generated/media-71f4bd16a1.webp +0 -0
  165. package/packages/theme-ember/site/assets/generated/media-7c1c8120bc.webp +0 -0
  166. package/packages/theme-ember/site/assets/generated/media-832b176433.webp +0 -0
  167. package/packages/theme-ember/site/assets/generated/media-931439701c.webp +0 -0
  168. package/packages/theme-ember/site/assets/generated/media-c2860d40d1.webp +0 -0
  169. package/packages/theme-ember/site/assets/generated/media-c56974d198.webp +0 -0
  170. package/packages/theme-ember/site/assets/generated/media-cb83a44ff4.webp +0 -0
  171. package/packages/theme-ember/site/assets/generated/media-df02ccdfcf.webp +0 -0
  172. package/packages/theme-ember/site/assets/generated/media-fab72cd344.webp +0 -0
  173. package/packages/theme-ember/site/assets/generated/media-manifest.json +190 -0
  174. package/packages/theme-ember/site/assets/generated/social-card.webp +0 -0
  175. package/packages/theme-ember/site/assets/generated/theme-mark-192.png +0 -0
  176. package/packages/theme-ember/site/assets/generated/theme-mark-512.png +0 -0
  177. package/packages/theme-ember/site/assets/generated/theme-mark.svg +7 -0
  178. package/packages/theme-ember/site/community.html +1664 -0
  179. package/packages/theme-ember/site/index.html +2044 -0
  180. package/packages/theme-ember/site/shop.html +2104 -0
  181. package/packages/{theme-fuelnfree-site → theme-ember}/src/index.js +23 -33
  182. package/packages/theme-ember/src/node.js +69 -0
  183. package/packages/theme-ember/test/theme.test.mjs +47 -0
  184. package/packages/theme-forge/README.md +11 -0
  185. package/packages/theme-forge/package.json +44 -0
  186. package/packages/theme-forge/prebuild.json +23 -0
  187. package/packages/theme-forge/site/apple-touch-icon.png +0 -0
  188. package/packages/theme-forge/site/assets/generated/favicon.svg +7 -0
  189. package/packages/theme-forge/site/assets/generated/media-manifest.json +17 -0
  190. package/packages/theme-forge/site/assets/generated/social-card.webp +0 -0
  191. package/packages/theme-forge/site/assets/generated/theme-mark-192.png +0 -0
  192. package/packages/theme-forge/site/assets/generated/theme-mark-512.png +0 -0
  193. package/packages/theme-forge/site/assets/generated/theme-mark.svg +7 -0
  194. package/packages/theme-forge/site/assets/index-DBOqQVsA.css +1 -0
  195. package/packages/theme-forge/site/assets/index-pXC0o9jp.js +241 -0
  196. package/packages/theme-forge/site/assets/workbox-window.prod.es5-Bd17z0YL.js +2 -0
  197. package/packages/theme-forge/site/index.html +5 -0
  198. package/packages/theme-forge/site/manifest.webmanifest +1 -0
  199. package/packages/theme-forge/site/pwa-192x192.png +0 -0
  200. package/packages/theme-forge/site/pwa-512x512.png +0 -0
  201. package/packages/theme-forge/site/sw.js +107 -0
  202. package/packages/theme-forge/site/workbox-7e5eb42b.js +3395 -0
  203. package/packages/theme-forge/src/index.js +76 -0
  204. package/packages/theme-forge/src/node.js +69 -0
  205. package/packages/theme-forge/test/theme.test.mjs +47 -0
  206. package/packages/theme-grove/README.md +11 -0
  207. package/packages/{theme-floors-site → theme-grove}/package.json +14 -11
  208. package/packages/theme-grove/prebuild.json +23 -0
  209. package/packages/theme-grove/site/assets/generated/favicon.svg +7 -0
  210. package/packages/theme-grove/site/assets/generated/media-098b13d75a.webp +0 -0
  211. package/packages/theme-grove/site/assets/generated/media-0c064db1aa.webp +0 -0
  212. package/packages/theme-grove/site/assets/generated/media-0fbfef655e.webp +0 -0
  213. package/packages/theme-grove/site/assets/generated/media-14759c7460.webp +0 -0
  214. package/packages/theme-grove/site/assets/generated/media-19b23d2a8f.webp +0 -0
  215. package/packages/theme-grove/site/assets/generated/media-2012f04243.webp +0 -0
  216. package/packages/theme-grove/site/assets/generated/media-23b8c5e2bb.webp +0 -0
  217. package/packages/theme-grove/site/assets/generated/media-2bffb1a6ef.webp +0 -0
  218. package/packages/theme-grove/site/assets/generated/media-2e1523a5b0.webp +0 -0
  219. package/packages/theme-grove/site/assets/generated/media-31107c21f2.webp +0 -0
  220. package/packages/theme-grove/site/assets/generated/media-31373ec865.webp +0 -0
  221. package/packages/theme-grove/site/assets/generated/media-45e8e27542.webp +0 -0
  222. package/packages/theme-grove/site/assets/generated/media-4aa9846fe7.webp +0 -0
  223. package/packages/theme-grove/site/assets/generated/media-5476b24219.webp +0 -0
  224. package/packages/theme-grove/site/assets/generated/media-7a227d3e4b.webp +0 -0
  225. package/packages/theme-grove/site/assets/generated/media-b183eed550.webp +0 -0
  226. package/packages/theme-grove/site/assets/generated/media-b2c650f9ab.webp +0 -0
  227. package/packages/theme-grove/site/assets/generated/media-b5d7471694.webp +0 -0
  228. package/packages/theme-grove/site/assets/generated/media-c86498fdb4.webp +0 -0
  229. package/packages/theme-grove/site/assets/generated/media-ce2cfff9a1.webp +0 -0
  230. package/packages/theme-grove/site/assets/generated/media-cf41a5f324.webp +0 -0
  231. package/packages/theme-grove/site/assets/generated/media-ec6c01bf8d.webp +0 -0
  232. package/packages/theme-grove/site/assets/generated/media-manifest.json +267 -0
  233. package/packages/theme-grove/site/assets/generated/social-card.webp +0 -0
  234. package/packages/theme-grove/site/assets/generated/theme-mark-192.png +0 -0
  235. package/packages/theme-grove/site/assets/generated/theme-mark-512.png +0 -0
  236. package/packages/theme-grove/site/assets/generated/theme-mark.svg +7 -0
  237. package/packages/theme-grove/site/index.html +1429 -0
  238. package/packages/theme-grove/site/pages/contact.html +664 -0
  239. package/packages/theme-grove/site/pages/gallery.html +216 -0
  240. package/packages/theme-grove/site/pages/privacy.html +180 -0
  241. package/packages/theme-grove/site/pages/process.html +592 -0
  242. package/packages/theme-grove/site/pages/services.html +567 -0
  243. package/packages/theme-grove/site/pages/terms.html +189 -0
  244. package/packages/theme-grove/site/shared/footer.css +140 -0
  245. package/packages/theme-grove/site/shared/footer.html +41 -0
  246. package/packages/{theme-floors-site → theme-grove}/src/index.js +24 -35
  247. package/packages/theme-grove/src/node.js +69 -0
  248. package/packages/theme-grove/test/theme.test.mjs +47 -0
  249. package/packages/theme-harbor/README.md +11 -0
  250. package/packages/{theme-insurance-site → theme-harbor}/package.json +14 -11
  251. package/packages/theme-harbor/prebuild.json +23 -0
  252. package/packages/theme-harbor/site/assets/generated/favicon.svg +7 -0
  253. package/packages/theme-harbor/site/assets/generated/media-manifest.json +17 -0
  254. package/packages/theme-harbor/site/assets/generated/social-card.webp +0 -0
  255. package/packages/theme-harbor/site/assets/generated/theme-mark-192.png +0 -0
  256. package/packages/theme-harbor/site/assets/generated/theme-mark-512.png +0 -0
  257. package/packages/theme-harbor/site/assets/generated/theme-mark.svg +7 -0
  258. package/packages/theme-harbor/site/assets/index-D58RKkr-.js +239 -0
  259. package/packages/theme-harbor/site/assets/index-Dd3YN9Mf.css +1 -0
  260. package/packages/theme-harbor/site/index.html +15 -0
  261. package/packages/theme-harbor/src/index.js +76 -0
  262. package/packages/theme-harbor/src/node.js +69 -0
  263. package/packages/theme-harbor/test/theme.test.mjs +47 -0
  264. package/packages/theme-resolve/README.md +11 -0
  265. package/packages/theme-resolve/package.json +44 -0
  266. package/packages/theme-resolve/prebuild.json +23 -0
  267. package/packages/theme-resolve/site/assets/generated/favicon.svg +7 -0
  268. package/packages/theme-resolve/site/assets/generated/media-216610d365.webp +0 -0
  269. package/packages/theme-resolve/site/assets/generated/media-2a9e0f623f.webp +0 -0
  270. package/packages/theme-resolve/site/assets/generated/media-a70660bfa9.webp +0 -0
  271. package/packages/theme-resolve/site/assets/generated/media-bc1322e813.webp +0 -0
  272. package/packages/theme-resolve/site/assets/generated/media-ced60fcecc.webp +0 -0
  273. package/packages/theme-resolve/site/assets/generated/media-manifest.json +72 -0
  274. package/packages/theme-resolve/site/assets/generated/social-card.webp +0 -0
  275. package/packages/theme-resolve/site/assets/generated/theme-mark-192.png +0 -0
  276. package/packages/theme-resolve/site/assets/generated/theme-mark-512.png +0 -0
  277. package/packages/theme-resolve/site/assets/generated/theme-mark.svg +7 -0
  278. package/packages/theme-resolve/site/assets/index-BSaLpPG1.css +2 -0
  279. package/packages/theme-resolve/site/assets/index-D8au46Z5.js +17 -0
  280. package/packages/theme-resolve/site/index.html +22 -0
  281. package/packages/theme-resolve/src/index.js +69 -0
  282. package/packages/theme-resolve/src/node.js +69 -0
  283. package/packages/theme-resolve/test/theme.test.mjs +47 -0
  284. package/packages/theme-scenes/package.json +1 -1
  285. package/packages/theme-scenes/src/registry.js +32 -49
  286. package/packages/theme-summit/README.md +11 -0
  287. package/packages/{theme-shinshu-site → theme-summit}/package.json +14 -11
  288. package/packages/theme-summit/prebuild.json +23 -0
  289. package/packages/theme-summit/site/adventures.html +450 -0
  290. package/packages/theme-summit/site/assets/generated/favicon.svg +7 -0
  291. package/packages/theme-summit/site/assets/generated/media-1e958ea679.webp +0 -0
  292. package/packages/theme-summit/site/assets/generated/media-9d4521abba.webp +0 -0
  293. package/packages/theme-summit/site/assets/generated/media-manifest.json +39 -0
  294. package/packages/theme-summit/site/assets/generated/social-card.webp +0 -0
  295. package/packages/theme-summit/site/assets/generated/theme-mark-192.png +0 -0
  296. package/packages/theme-summit/site/assets/generated/theme-mark-512.png +0 -0
  297. package/packages/theme-summit/site/assets/generated/theme-mark.svg +7 -0
  298. package/packages/theme-summit/site/business-card.html +315 -0
  299. package/packages/theme-summit/site/chatbot.js +312 -0
  300. package/packages/theme-summit/site/gallery.html +524 -0
  301. package/packages/theme-summit/site/i18n.js +947 -0
  302. package/packages/theme-summit/site/icons.svg +87 -0
  303. package/packages/theme-summit/site/index.html +2415 -0
  304. package/packages/theme-summit/site/pages/about.html +100 -0
  305. package/packages/theme-summit/site/pages/contact.html +117 -0
  306. package/packages/theme-summit/site/pages/dashboard.html +111 -0
  307. package/packages/theme-summit/site/pages/index.html +129 -0
  308. package/packages/theme-summit/site/pages/services.html +125 -0
  309. package/packages/theme-summit/site/shared/footer.html +41 -0
  310. package/packages/theme-summit/site/shared/layout.js +315 -0
  311. package/packages/theme-summit/site/shared/nav.html +19 -0
  312. package/packages/theme-summit/site/shared/styles.css +696 -0
  313. package/packages/theme-summit/site/theme-styles.css +131 -0
  314. package/packages/theme-summit/site/themes.js +442 -0
  315. package/packages/{theme-shinshu-site → theme-summit}/src/index.js +23 -35
  316. package/packages/theme-summit/src/node.js +69 -0
  317. package/packages/theme-summit/test/theme.test.mjs +47 -0
  318. package/packages/theme-violet/README.md +11 -0
  319. package/packages/{theme-companions-site → theme-violet}/package.json +14 -11
  320. package/packages/theme-violet/prebuild.json +23 -0
  321. package/packages/theme-violet/site/assets/generated/favicon.svg +7 -0
  322. package/packages/theme-violet/site/assets/generated/media-07b46d6457.webp +0 -0
  323. package/packages/theme-violet/site/assets/generated/media-09d38ddffc.webp +0 -0
  324. package/packages/theme-violet/site/assets/generated/media-254b0e2ad3.webp +0 -0
  325. package/packages/theme-violet/site/assets/generated/media-3a1b5c0a8d.webp +0 -0
  326. package/packages/theme-violet/site/assets/generated/media-3a78eb7d9d.webp +0 -0
  327. package/packages/theme-violet/site/assets/generated/media-49076977d8.webp +0 -0
  328. package/packages/theme-violet/site/assets/generated/media-6342d50dbd.webp +0 -0
  329. package/packages/theme-violet/site/assets/generated/media-646c65381e.webp +0 -0
  330. package/packages/theme-violet/site/assets/generated/media-7a5fb7c91a.webp +0 -0
  331. package/packages/theme-violet/site/assets/generated/media-9bbd133220.webp +0 -0
  332. package/packages/theme-violet/site/assets/generated/media-9e73307c2a.webp +0 -0
  333. package/packages/theme-violet/site/assets/generated/media-af382146a0.webp +0 -0
  334. package/packages/theme-violet/site/assets/generated/media-b2ae348b43.webp +0 -0
  335. package/packages/theme-violet/site/assets/generated/media-b8f43a3887.webp +0 -0
  336. package/packages/theme-violet/site/assets/generated/media-c96a3e1979.webp +0 -0
  337. package/packages/theme-violet/site/assets/generated/media-cd07daa54a.webp +0 -0
  338. package/packages/theme-violet/site/assets/generated/media-e03ab6b5fe.webp +0 -0
  339. package/packages/theme-violet/site/assets/generated/media-eae4917d25.webp +0 -0
  340. package/packages/theme-violet/site/assets/generated/media-f227ec5690.webp +0 -0
  341. package/packages/theme-violet/site/assets/generated/media-fb57ffd474.webp +0 -0
  342. package/packages/theme-violet/site/assets/generated/media-manifest.json +245 -0
  343. package/packages/theme-violet/site/assets/generated/social-card.webp +0 -0
  344. package/packages/theme-violet/site/assets/generated/theme-mark-192.png +0 -0
  345. package/packages/theme-violet/site/assets/generated/theme-mark-512.png +0 -0
  346. package/packages/theme-violet/site/assets/generated/theme-mark.svg +7 -0
  347. package/packages/theme-violet/site/global/cpas-contact.css +405 -0
  348. package/packages/theme-violet/site/global/cpas-donate-v2.css +931 -0
  349. package/packages/theme-violet/site/global/cpas-drawer-override.css +1 -0
  350. package/packages/theme-violet/site/global/cpas-footer.html +38 -0
  351. package/packages/theme-violet/site/global/cpas-header.html +30 -0
  352. package/packages/theme-violet/site/global/cpas-hero-watercolor.css +275 -0
  353. package/packages/theme-violet/site/global/cpas-modals.js +802 -0
  354. package/packages/theme-violet/site/global/cpas-public-surface.css +982 -0
  355. package/packages/theme-violet/site/global/cpas-shell.css +3980 -0
  356. package/packages/theme-violet/site/global/cpas-shell.js +107 -0
  357. package/packages/theme-violet/site/global/cpas-shelter-hub.css +326 -0
  358. package/packages/theme-violet/site/index.html +141 -0
  359. package/packages/theme-violet/site/pages/about/campaigns.html +28 -0
  360. package/packages/theme-violet/site/pages/about/cta.html +25 -0
  361. package/packages/theme-violet/site/pages/about/hero.html +46 -0
  362. package/packages/theme-violet/site/pages/about/paths.html +24 -0
  363. package/packages/theme-violet/site/pages/about/why_we_exist.html +28 -0
  364. package/packages/theme-violet/site/pages/home/campaigns.html +67 -0
  365. package/packages/theme-violet/site/pages/home/hero.html +42 -0
  366. package/packages/theme-violet/site/pages/home/how-it-helps.html +32 -0
  367. package/packages/theme-violet/site/pages/home/impact-stats.html +31 -0
  368. package/packages/theme-violet/site/pages/home/mission.html +36 -0
  369. package/packages/theme-violet/site/pages/home/newsletter.html +29 -0
  370. package/packages/theme-violet/site/pages/home/transport-win.html +22 -0
  371. package/packages/theme-violet/site/pages/index.html +141 -0
  372. package/packages/theme-violet/src/index.js +76 -0
  373. package/packages/theme-violet/src/node.js +69 -0
  374. package/packages/theme-violet/test/theme.test.mjs +47 -0
  375. package/packages/work-graph/package.json +1 -1
  376. package/protocol/features/README.md +1 -1
  377. package/protocol/features/catalog.json +12 -12
  378. package/protocol/features/examples/provider-resend.feature.json +2 -2
  379. package/protocol/presets/catalog.json +1 -1
  380. package/protocol/theme-refinery/prebuild-registry.json +45 -0
  381. package/protocol/theme-refinery/product-metadata.schema.json +63 -26
  382. package/protocol/theme-refinery/receipts/prebuild-remaster-20261004.json +21 -0
  383. package/src/plugins/completeful.js +2 -2
  384. package/packages/theme-church-site/README.md +0 -10
  385. package/packages/theme-church-site/src/harvest.json +0 -16
  386. package/packages/theme-church-site/test/theme.test.mjs +0 -21
  387. package/packages/theme-companions-site/README.md +0 -10
  388. package/packages/theme-companions-site/src/harvest.json +0 -14
  389. package/packages/theme-companions-site/src/index.js +0 -87
  390. package/packages/theme-companions-site/test/theme.test.mjs +0 -21
  391. package/packages/theme-floors-site/README.md +0 -10
  392. package/packages/theme-floors-site/src/harvest.json +0 -16
  393. package/packages/theme-floors-site/test/theme.test.mjs +0 -21
  394. package/packages/theme-fuelnfree-site/README.md +0 -10
  395. package/packages/theme-fuelnfree-site/src/harvest.json +0 -15
  396. package/packages/theme-fuelnfree-site/test/theme.test.mjs +0 -21
  397. package/packages/theme-handyman-site/README.md +0 -10
  398. package/packages/theme-handyman-site/package.json +0 -41
  399. package/packages/theme-handyman-site/src/harvest.json +0 -12
  400. package/packages/theme-handyman-site/src/index.js +0 -88
  401. package/packages/theme-handyman-site/test/theme.test.mjs +0 -21
  402. package/packages/theme-insurance-site/README.md +0 -10
  403. package/packages/theme-insurance-site/src/harvest.json +0 -12
  404. package/packages/theme-insurance-site/src/index.js +0 -88
  405. package/packages/theme-insurance-site/test/theme.test.mjs +0 -21
  406. package/packages/theme-shinshu-site/README.md +0 -10
  407. package/packages/theme-shinshu-site/src/harvest.json +0 -14
  408. package/packages/theme-shinshu-site/test/theme.test.mjs +0 -21
  409. package/protocol/theme-refinery/lineage-registry.json +0 -105
  410. package/protocol/theme-refinery/receipts/products-registry-batch-20260924.json +0 -318
  411. package/protocol/theme-refinery/receipts/theme-harvest-20260924.json +0 -472
@@ -0,0 +1,1840 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8"/>
6
+ <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
7
+ <title>Built in the Garage — Ember</title>
8
+ <!-- Premium Typography -->
9
+ <link href="https://fonts.googleapis.com" rel="preconnect"/>
10
+ <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
11
+ <link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&amp;family=Inter:wght@400;500;600;700;900&amp;family=Space+Grotesk:wght@400;500;600;700&amp;display=swap" rel="stylesheet"/>
12
+ <style>
13
+ * {
14
+ margin: 0;
15
+ padding: 0;
16
+ box-sizing: border-box;
17
+ }
18
+
19
+ :root {
20
+ --black: #0a0a0a;
21
+ --steel: #1a1a1a;
22
+ --asphalt: #2a2a2a;
23
+ --smoke: #8a8a8a;
24
+ --light-smoke: #b0b0b0;
25
+ --light-gray: #f0f0f0;
26
+ --off-white: #f8f8f8;
27
+ --white: #ffffff;
28
+ --fire-orange: #ff4500;
29
+ --racing-red: #dc143c;
30
+ --louisiana-gold: #FFD700;
31
+ --bronze: #CD7F32;
32
+ --bronze-light: #E5A558;
33
+ --bronze-dark: #9B5F1F;
34
+
35
+ /* Typography */
36
+ --font-display: 'Bebas Neue', sans-serif;
37
+ --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
38
+ --font-mono: 'Space Mono', monospace;
39
+
40
+ /* Spacing */
41
+ --space-xs: clamp(0.75rem, 2vw, 1rem);
42
+ --space-sm: clamp(1rem, 3vw, 1.5rem);
43
+ --space-md: clamp(2rem, 5vw, 3rem);
44
+ --space-lg: clamp(3rem, 7vw, 5rem);
45
+ --space-xl: clamp(4rem, 9vw, 7rem);
46
+
47
+ /* Border Radius */
48
+ --radius: 12px;
49
+
50
+ /* Ember Specific Variables */
51
+ --Ember-ease: cubic-bezier(.2,.8,.2,1);
52
+ --Ember-header: 80px;
53
+ --Ember-header-md: 70px;
54
+ --Ember-maxw: 1440px;
55
+ }
56
+
57
+ html {
58
+ scroll-behavior: smooth;
59
+ }
60
+
61
+ body {
62
+ font-family: var(--font-body);
63
+ background-color: var(--black);
64
+ color: var(--white);
65
+ overflow-x: hidden;
66
+ line-height: 1.6;
67
+ -webkit-font-smoothing: antialiased;
68
+ -moz-osx-font-smoothing: grayscale;
69
+ }
70
+
71
+ /* ===== HEADER STYLES ===== */
72
+ .Ember-shell {
73
+ --Ember-ease: cubic-bezier(.2,.8,.2,1);
74
+ --Ember-bronze: #CD7F32;
75
+ --Ember-bronze-light: #E5A558;
76
+ --Ember-bronze-dark: #9B5F1F;
77
+ --Ember-ink: #fff;
78
+ --Ember-muted: #c8cdd2;
79
+ --Ember-orange: #ff4500;
80
+ --Ember-bg0: #0a0a0a;
81
+ --Ember-bg1: #141414;
82
+ --Ember-bg2: #1f1f1f;
83
+ --Ember-header: 80px;
84
+ --Ember-header-md: 70px;
85
+ --Ember-maxw: 1440px;
86
+ }
87
+
88
+ .Ember-shell * {
89
+ box-sizing: border-box;
90
+ }
91
+
92
+ /* ---------- Header (dark everywhere) ---------- */
93
+ .Ember-header {
94
+ position: fixed;
95
+ inset: 0 0 auto 0;
96
+ height: var(--Ember-header);
97
+ z-index: 10000;
98
+ background: rgba(10,10,10,.86);
99
+ box-shadow: 0 1px 0 rgba(255,69,0,.06);
100
+ transition: transform .28s var(--Ember-ease), backdrop-filter .28s var(--Ember-ease), background-color .28s var(--Ember-ease);
101
+ will-change: transform;
102
+ }
103
+
104
+ @supports(backdrop-filter:blur(1px)) {
105
+ .Ember-header {
106
+ backdrop-filter: blur(8px);
107
+ }
108
+ .Ember-header.is-scrolling {
109
+ backdrop-filter: blur(14px);
110
+ }
111
+ }
112
+
113
+ .Ember-header.is-hidden {
114
+ transform: translateY(-100%);
115
+ }
116
+
117
+ .Ember-row {
118
+ max-width: var(--Ember-maxw);
119
+ margin: 0 auto;
120
+ height: 100%;
121
+ display: flex;
122
+ align-items: center;
123
+ justify-content: space-between;
124
+ padding: 0 56px;
125
+ }
126
+
127
+ .Ember-logo {
128
+ height: 68px;
129
+ display: flex;
130
+ align-items: center;
131
+ text-decoration: none;
132
+ position: relative;
133
+ transition: transform .25s var(--Ember-ease);
134
+ }
135
+
136
+ .Ember-logo img {
137
+ height: 100%;
138
+ width: auto;
139
+ display: block;
140
+ filter: brightness(.96);
141
+ transition: filter .25s var(--Ember-ease);
142
+ }
143
+
144
+ .Ember-logo::after {
145
+ content: "";
146
+ position: absolute;
147
+ left: 50%;
148
+ bottom: -6px;
149
+ transform: translateX(-50%) scaleX(0);
150
+ width: 100%;
151
+ height: 2px;
152
+ background: linear-gradient(90deg, transparent, var(--Ember-orange), transparent);
153
+ transition: transform .3s var(--Ember-ease);
154
+ }
155
+
156
+ .Ember-logo:hover {
157
+ transform: translateY(-1px);
158
+ }
159
+
160
+ .Ember-logo:hover img {
161
+ filter: brightness(1.1) drop-shadow(0 0 10px rgba(255,69,0,.4));
162
+ }
163
+
164
+ .Ember-logo:hover::after {
165
+ transform: translateX(-50%) scaleX(1);
166
+ }
167
+
168
+ /* Desktop nav (hover/underline everywhere, only current underlined) */
169
+ .Ember-nav {
170
+ list-style: none;
171
+ display: flex;
172
+ gap: 44px;
173
+ }
174
+
175
+ .Ember-nav a {
176
+ color: var(--Ember-muted);
177
+ text-decoration: none;
178
+ font-size: 15px;
179
+ letter-spacing: .08em;
180
+ text-transform: uppercase;
181
+ font-weight: 700;
182
+ position: relative;
183
+ outline: none;
184
+ }
185
+
186
+ .Ember-nav a::before {
187
+ content: "";
188
+ position: absolute;
189
+ left: 0;
190
+ right: 0;
191
+ bottom: -4px;
192
+ height: 2px;
193
+ background: linear-gradient(90deg, var(--Ember-orange), var(--Ember-bronze-light));
194
+ transform: scaleX(0);
195
+ transition: transform .25s var(--Ember-ease);
196
+ transform-origin: center;
197
+ }
198
+
199
+ .Ember-nav a:hover,
200
+ .Ember-nav a.is-active,
201
+ .Ember-nav a:focus-visible {
202
+ color: var(--Ember-ink);
203
+ }
204
+
205
+ .Ember-nav a:hover::before,
206
+ .Ember-nav a.is-active::before,
207
+ .Ember-nav a:focus-visible::before {
208
+ transform: scaleX(1);
209
+ }
210
+
211
+ /* Burger + Mobile menu with matching underline */
212
+ .Ember-burger {
213
+ display: none;
214
+ background: none;
215
+ border: 0;
216
+ padding: 10px;
217
+ cursor: pointer;
218
+ touch-action: manipulation;
219
+ }
220
+
221
+ .Ember-burger span {
222
+ display: block;
223
+ width: 24px;
224
+ height: 2px;
225
+ background: var(--Ember-orange);
226
+ margin: 5px 0;
227
+ transition: transform .25s, opacity .25s;
228
+ }
229
+
230
+ .Ember-burger.is-open span:nth-child(1) {
231
+ transform: rotate(45deg) translate(5px, 6px);
232
+ }
233
+
234
+ .Ember-burger.is-open span:nth-child(2) {
235
+ opacity: 0;
236
+ }
237
+
238
+ .Ember-burger.is-open span:nth-child(3) {
239
+ transform: rotate(-45deg) translate(6px, -6px);
240
+ }
241
+
242
+ .Ember-mobile {
243
+ position: fixed;
244
+ left: 0;
245
+ right: 0;
246
+ top: var(--Ember-header);
247
+ background: rgba(15,15,15,.98);
248
+ transform: translateY(-100%);
249
+ opacity: 0;
250
+ visibility: hidden;
251
+ transition: transform .28s var(--Ember-ease), opacity .28s;
252
+ z-index: 9999;
253
+ padding: 22px;
254
+ border-bottom: 1px solid rgba(255,69,0,.14);
255
+ }
256
+
257
+ .Ember-mobile.is-open {
258
+ transform: translateY(0);
259
+ opacity: 1;
260
+ visibility: visible;
261
+ }
262
+
263
+ .Ember-mobile ul {
264
+ list-style: none;
265
+ display: flex;
266
+ flex-direction: column;
267
+ gap: 20px;
268
+ margin: 0;
269
+ }
270
+
271
+ .Ember-mobile a {
272
+ color: var(--Ember-ink);
273
+ text-decoration: none;
274
+ letter-spacing: .08em;
275
+ text-transform: uppercase;
276
+ font-weight: 800;
277
+ position: relative;
278
+ outline: none;
279
+ padding: 8px 0;
280
+ }
281
+
282
+ .Ember-mobile a::before {
283
+ content: "";
284
+ position: absolute;
285
+ left: 0;
286
+ right: 0;
287
+ bottom: -2px;
288
+ height: 2px;
289
+ background: linear-gradient(90deg, var(--Ember-orange), var(--Ember-bronze-light));
290
+ transform: scaleX(0);
291
+ transition: transform .25s var(--Ember-ease);
292
+ transform-origin: center;
293
+ }
294
+
295
+ .Ember-mobile a:focus-visible::before,
296
+ .Ember-mobile a:active::before,
297
+ .Ember-mobile a.is-active::before,
298
+ .Ember-mobile a.tap-anim::before {
299
+ transform: scaleX(1);
300
+ }
301
+
302
+ /* Spacer for non-home pages */
303
+ .Ember-spacer {
304
+ height: var(--Ember-header);
305
+ display: block;
306
+ }
307
+
308
+ /* ===== ABOUT PAGE STYLES ===== */
309
+ :root {
310
+ --steel: #2d2d2d;
311
+ --asphalt: #404040;
312
+ --smoke: #969696;
313
+ --light-gray: #f5f5f5;
314
+ --fire-orange: #ff4500;
315
+ --racing-red: #dc143c;
316
+ --diesel-green: #2d4a2b;
317
+ --coffee-brown: #3e2723;
318
+ --louisiana-gold: #FFD700;
319
+ --warm-gradient-1: #ff6b35;
320
+ --warm-gradient-2: #f77737;
321
+
322
+ /* Typography */
323
+ --font-heading: 'Bebas Neue', sans-serif;
324
+ --font-subheading: 'Space Grotesk', sans-serif;
325
+ --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
326
+ }
327
+
328
+ /* Typography Base */
329
+ .about-page h1,
330
+ .about-page h2,
331
+ .about-page h3 {
332
+ font-family: var(--font-heading);
333
+ letter-spacing: 0.02em;
334
+ }
335
+
336
+ .about-page h4,
337
+ .about-page h5,
338
+ .about-page h6 {
339
+ font-family: var(--font-subheading);
340
+ font-weight: 600;
341
+ }
342
+
343
+ .about-page p {
344
+ font-family: var(--font-body);
345
+ font-weight: 400;
346
+ letter-spacing: -0.011em;
347
+ }
348
+
349
+ /* Hero Section */
350
+ .about-hero {
351
+ position: relative;
352
+ min-height: 70vh;
353
+ background: linear-gradient(135deg, var(--black) 0%, var(--steel) 100%);
354
+ display: flex;
355
+ align-items: center;
356
+ justify-content: center;
357
+ overflow: hidden;
358
+ }
359
+
360
+ .about-hero::before {
361
+ content: '';
362
+ position: absolute;
363
+ top: 0;
364
+ left: 0;
365
+ width: 100%;
366
+ height: 100%;
367
+ background: url('/assets/generated/theme-mark.svg') center/cover;
368
+ opacity: 0.3;
369
+ transform: translateZ(0);
370
+ will-change: transform;
371
+ }
372
+
373
+ .about-hero-content {
374
+ position: relative;
375
+ z-index: 2;
376
+ text-align: center;
377
+ max-width: 900px;
378
+ padding: 100px 20px 60px;
379
+ }
380
+
381
+ .hero-meta-info {
382
+ margin-bottom: 2.5rem;
383
+ opacity: 0;
384
+ animation: fadeInDown 1s cubic-bezier(0.4, 0, 0.2, 1) 0.2s forwards;
385
+ }
386
+
387
+ .hero-meta-info p {
388
+ font-size: 12px;
389
+ font-family: var(--font-subheading);
390
+ font-weight: 500;
391
+ letter-spacing: 0.2em;
392
+ text-transform: uppercase;
393
+ margin: 8px 0;
394
+ opacity: 0.7;
395
+ transition: color 0.6s cubic-bezier(0.4, 0, 0.2, 1);
396
+ }
397
+
398
+ .hero-meta-info p.color-animate {
399
+ background: linear-gradient(90deg, var(--smoke) 0%, var(--racing-red) 50%, var(--smoke) 100%);
400
+ background-size: 200% 100%;
401
+ background-position: 0% 0%;
402
+ -webkit-background-clip: text;
403
+ -webkit-text-fill-color: transparent;
404
+ background-clip: text;
405
+ transition: background-position 1s cubic-bezier(0.4, 0, 0.2, 1);
406
+ }
407
+
408
+ .hero-meta-info .divider {
409
+ display: inline-block;
410
+ width: 40px;
411
+ height: 1px;
412
+ background: linear-gradient(90deg, transparent, var(--fire-orange), transparent);
413
+ margin: 20px 0;
414
+ opacity: 0.6;
415
+ }
416
+
417
+ .about-hero-title {
418
+ font-size: clamp(56px, 7vw, 96px);
419
+ font-weight: 400;
420
+ color: var(--white);
421
+ margin-bottom: 24px;
422
+ text-transform: uppercase;
423
+ line-height: 0.9;
424
+ opacity: 0;
425
+ animation: fadeInUp 1s cubic-bezier(0.4, 0, 0.2, 1) 0.4s forwards;
426
+ }
427
+
428
+ .about-hero-subtitle {
429
+ font-size: 18px;
430
+ font-family: var(--font-body);
431
+ font-weight: 400;
432
+ color: var(--smoke);
433
+ max-width: 600px;
434
+ margin: 0 auto;
435
+ line-height: 1.7;
436
+ opacity: 0;
437
+ animation: fadeInUp 1s cubic-bezier(0.4, 0, 0.2, 1) 0.6s forwards;
438
+ }
439
+
440
+ /* Moment Section */
441
+ .moment-section {
442
+ padding: 120px 40px;
443
+ background: var(--white);
444
+ }
445
+
446
+ .moment-container {
447
+ max-width: 1000px;
448
+ margin: 0 auto;
449
+ text-align: center;
450
+ }
451
+
452
+ .moment-title {
453
+ font-size: clamp(42px, 5vw, 64px);
454
+ font-weight: 400;
455
+ margin-bottom: 48px;
456
+ color: var(--black);
457
+ text-transform: uppercase;
458
+ }
459
+
460
+ .moment-story {
461
+ font-size: 17px;
462
+ line-height: 1.8;
463
+ color: var(--asphalt);
464
+ max-width: 800px;
465
+ margin: 0 auto;
466
+ }
467
+
468
+ .moment-story strong {
469
+ color: var(--fire-orange);
470
+ font-weight: 600;
471
+ font-family: var(--font-subheading);
472
+ }
473
+
474
+ .moment-quote {
475
+ margin: 60px auto;
476
+ padding: 40px;
477
+ background: linear-gradient(135deg, var(--light-gray), rgba(255, 69, 0, 0.05));
478
+ border-left: 4px solid var(--fire-orange);
479
+ max-width: 700px;
480
+ position: relative;
481
+ opacity: 0;
482
+ transform: translateX(-30px);
483
+ }
484
+
485
+ .moment-quote.visible {
486
+ animation: slideInFromLeft 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
487
+ }
488
+
489
+ .moment-quote p {
490
+ font-size: 26px;
491
+ font-style: italic;
492
+ font-family: var(--font-subheading);
493
+ color: var(--steel);
494
+ margin: 0;
495
+ letter-spacing: -0.02em;
496
+ }
497
+
498
+ /* Video Section */
499
+ .video-section {
500
+ padding: 80px 40px;
501
+ background: linear-gradient(180deg, var(--white) 0%, var(--light-gray) 100%);
502
+ }
503
+
504
+ .video-container {
505
+ max-width: 1200px;
506
+ margin: 0 auto;
507
+ position: relative;
508
+ padding-bottom: 56.25%;
509
+ height: 0;
510
+ overflow: hidden;
511
+ background: var(--black);
512
+ }
513
+
514
+ .video-container video {
515
+ position: absolute;
516
+ top: 0;
517
+ left: 0;
518
+ width: 100%;
519
+ height: 100%;
520
+ object-fit: cover;
521
+ }
522
+
523
+ /* Collections Section */
524
+ .collections-section {
525
+ padding: 120px 40px;
526
+ background: var(--light-gray);
527
+ }
528
+
529
+ .collections-container {
530
+ max-width: 1400px;
531
+ margin: 0 auto;
532
+ }
533
+
534
+ .collections-header {
535
+ text-align: center;
536
+ margin-bottom: 80px;
537
+ }
538
+
539
+ .collections-header h2 {
540
+ font-size: clamp(42px, 5vw, 64px);
541
+ font-weight: 400;
542
+ margin-bottom: 20px;
543
+ color: var(--black);
544
+ text-transform: uppercase;
545
+ }
546
+
547
+ .collections-grid {
548
+ display: grid;
549
+ grid-template-columns: repeat(3, 1fr);
550
+ gap: 40px;
551
+ }
552
+
553
+ .collection-card {
554
+ background: var(--white);
555
+ overflow: hidden;
556
+ transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
557
+ cursor: pointer;
558
+ opacity: 0;
559
+ transform: translateY(40px);
560
+ text-decoration: none;
561
+ display: block;
562
+ }
563
+
564
+ .collection-card.visible {
565
+ opacity: 1;
566
+ transform: translateY(0);
567
+ }
568
+
569
+ .collection-card:hover {
570
+ transform: translateY(-12px);
571
+ box-shadow: 0 24px 48px rgba(0,0,0,0.12);
572
+ }
573
+
574
+ .collection-image {
575
+ height: 280px;
576
+ background: var(--steel);
577
+ position: relative;
578
+ overflow: hidden;
579
+ }
580
+
581
+ .collection-image img {
582
+ width: 100%;
583
+ height: 100%;
584
+ object-fit: cover;
585
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
586
+ }
587
+
588
+ .collection-card:hover .collection-image img {
589
+ transform: scale(1.08);
590
+ }
591
+
592
+ .collection-badge {
593
+ position: absolute;
594
+ top: 24px;
595
+ right: 24px;
596
+ background: var(--fire-orange);
597
+ color: var(--white);
598
+ padding: 10px 20px;
599
+ font-size: 11px;
600
+ font-family: var(--font-subheading);
601
+ font-weight: 600;
602
+ text-transform: uppercase;
603
+ letter-spacing: 0.15em;
604
+ }
605
+
606
+ .collection-content {
607
+ padding: 36px;
608
+ }
609
+
610
+ .collection-title {
611
+ font-size: 28px;
612
+ font-weight: 400;
613
+ margin-bottom: 12px;
614
+ color: var(--black);
615
+ text-transform: uppercase;
616
+ }
617
+
618
+ .collection-description {
619
+ color: var(--asphalt);
620
+ margin-bottom: 24px;
621
+ line-height: 1.7;
622
+ font-size: 15px;
623
+ }
624
+
625
+ .collection-link {
626
+ color: var(--fire-orange);
627
+ font-weight: 600;
628
+ font-family: var(--font-subheading);
629
+ text-decoration: none;
630
+ text-transform: uppercase;
631
+ letter-spacing: 0.1em;
632
+ font-size: 13px;
633
+ display: inline-block;
634
+ }
635
+
636
+ /* Against Section */
637
+ .against-section {
638
+ padding: 120px 40px;
639
+ background: linear-gradient(180deg,
640
+ var(--light-gray) 0%,
641
+ var(--steel) 30%,
642
+ var(--steel) 70%,
643
+ var(--asphalt) 100%);
644
+ color: var(--white);
645
+ }
646
+
647
+ .against-container {
648
+ max-width: 1200px;
649
+ margin: 0 auto;
650
+ }
651
+
652
+ .against-header {
653
+ text-align: center;
654
+ margin-bottom: 80px;
655
+ }
656
+
657
+ .against-header h2 {
658
+ font-size: clamp(42px, 5vw, 64px);
659
+ font-weight: 400;
660
+ color: var(--white);
661
+ text-transform: uppercase;
662
+ }
663
+
664
+ .against-grid {
665
+ display: grid;
666
+ grid-template-columns: repeat(3, 1fr);
667
+ gap: 60px;
668
+ }
669
+
670
+ .against-item {
671
+ text-align: center;
672
+ }
673
+
674
+ .against-icon {
675
+ font-size: 48px;
676
+ margin-bottom: 24px;
677
+ display: inline-block;
678
+ transform: rotate(-10deg);
679
+ opacity: 0.3;
680
+ transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
681
+ }
682
+
683
+ .against-title {
684
+ font-size: 22px;
685
+ font-family: var(--font-subheading);
686
+ font-weight: 600;
687
+ color: var(--fire-orange);
688
+ margin-bottom: 16px;
689
+ text-transform: uppercase;
690
+ position: relative;
691
+ display: inline-block;
692
+ letter-spacing: 0.05em;
693
+ }
694
+
695
+ .against-title::after {
696
+ content: '';
697
+ position: absolute;
698
+ top: 50%;
699
+ width: 0;
700
+ height: 3px;
701
+ background: var(--racing-red);
702
+ transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
703
+ transform: translateY(-50%);
704
+ }
705
+
706
+ .against-item:nth-child(1) .against-title::after,
707
+ .against-item:nth-child(3) .against-title::after {
708
+ left: -10%;
709
+ }
710
+
711
+ .against-item:nth-child(2) .against-title::after {
712
+ right: -10%;
713
+ }
714
+
715
+ .against-title.crossed::after {
716
+ width: 120%;
717
+ }
718
+
719
+ .against-description {
720
+ color: var(--smoke);
721
+ line-height: 1.7;
722
+ font-size: 15px;
723
+ }
724
+
725
+ /* River Parish Section */
726
+ .lafayette-section {
727
+ padding: 120px 40px;
728
+ background: linear-gradient(180deg,
729
+ var(--asphalt) 0%,
730
+ #5a4a3a 20%,
731
+ #8b6914 50%,
732
+ #b8860b 70%,
733
+ var(--louisiana-gold) 85%,
734
+ #f4e5c2 100%);
735
+ position: relative;
736
+ }
737
+
738
+ .lafayette-container {
739
+ max-width: 1000px;
740
+ margin: 0 auto;
741
+ text-align: center;
742
+ position: relative;
743
+ z-index: 1;
744
+ }
745
+
746
+ .lafayette-badge {
747
+ display: inline-block;
748
+ color: var(--black);
749
+ padding: 12px 32px;
750
+ font-weight: 600;
751
+ letter-spacing: 0.15em;
752
+ text-transform: uppercase;
753
+ margin-bottom: 2rem;
754
+ font-size: 13px;
755
+ border: 2px solid var(--black);
756
+ background: rgba(255,255,255,0.1);
757
+ backdrop-filter: blur(10px);
758
+ }
759
+
760
+ .lafayette-title {
761
+ font-size: clamp(42px, 5vw, 64px);
762
+ font-weight: 400;
763
+ color: var(--black);
764
+ margin-bottom: 36px;
765
+ text-transform: uppercase;
766
+ }
767
+
768
+ /* Story Section */
769
+ .full-story-section {
770
+ padding: 120px 40px;
771
+ background: linear-gradient(180deg,
772
+ #f4e5c2 0%,
773
+ var(--white) 20%,
774
+ var(--white) 100%);
775
+ }
776
+
777
+ .story-section {
778
+ display: grid;
779
+ grid-template-columns: 1fr 1fr;
780
+ gap: 80px;
781
+ align-items: center;
782
+ margin-bottom: 100px;
783
+ max-width: 1200px;
784
+ margin-left: auto;
785
+ margin-right: auto;
786
+ }
787
+
788
+ .story-section.reverse {
789
+ direction: rtl;
790
+ }
791
+
792
+ .story-section.reverse .story-content {
793
+ direction: ltr;
794
+ }
795
+
796
+ .story-image {
797
+ position: relative;
798
+ height: 450px;
799
+ background: var(--steel);
800
+ overflow: hidden;
801
+ }
802
+
803
+ .story-image.vertical {
804
+ height: 600px;
805
+ }
806
+
807
+ .story-image img,
808
+ .story-image video {
809
+ width: 100%;
810
+ height: 100%;
811
+ object-fit: cover;
812
+ }
813
+
814
+ /* Values Section */
815
+ .values-about-section {
816
+ padding: 120px 40px;
817
+ background: linear-gradient(180deg,
818
+ var(--white) 0%,
819
+ var(--light-gray) 30%,
820
+ #ffe8e0 70%,
821
+ #ffcfc0 100%);
822
+ }
823
+
824
+ .values-about-grid {
825
+ display: grid;
826
+ grid-template-columns: repeat(4, 1fr);
827
+ gap: 32px;
828
+ max-width: 1400px;
829
+ margin: 0 auto;
830
+ }
831
+
832
+ .value-about-card {
833
+ background: rgba(255,255,255,0.8);
834
+ padding: 48px 32px;
835
+ text-align: center;
836
+ border: 2px solid transparent;
837
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
838
+ backdrop-filter: blur(10px);
839
+ }
840
+
841
+ .value-about-card:hover {
842
+ border-color: var(--fire-orange);
843
+ transform: translateY(-12px);
844
+ box-shadow: 0 24px 48px rgba(0,0,0,0.1);
845
+ background: var(--white);
846
+ }
847
+
848
+ /* CTA Section */
849
+ .about-cta-section {
850
+ padding: 120px 40px;
851
+ background: linear-gradient(180deg,
852
+ #ffcfc0 0%,
853
+ var(--warm-gradient-1) 20%,
854
+ var(--fire-orange) 50%,
855
+ var(--racing-red) 100%);
856
+ text-align: center;
857
+ }
858
+
859
+ .about-cta-btn {
860
+ display: inline-block;
861
+ padding: 20px 48px;
862
+ background: var(--white);
863
+ color: var(--fire-orange);
864
+ text-decoration: none;
865
+ font-weight: 600;
866
+ text-transform: uppercase;
867
+ letter-spacing: 0.1em;
868
+ font-size: 14px;
869
+ border-radius: 2px;
870
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
871
+ margin: 10px;
872
+ }
873
+
874
+ .about-cta-btn:hover {
875
+ background: var(--black);
876
+ color: var(--white);
877
+ transform: translateY(-3px);
878
+ }
879
+
880
+ /* Animations */
881
+ @keyframes fadeInUp {
882
+ from {
883
+ opacity: 0;
884
+ transform: translateY(30px);
885
+ }
886
+ to {
887
+ opacity: 1;
888
+ transform: translateY(0);
889
+ }
890
+ }
891
+
892
+ @keyframes fadeInDown {
893
+ from {
894
+ opacity: 0;
895
+ transform: translateY(-20px);
896
+ }
897
+ to {
898
+ opacity: 1;
899
+ transform: translateY(0);
900
+ }
901
+ }
902
+
903
+ @keyframes slideInFromLeft {
904
+ to {
905
+ opacity: 1;
906
+ transform: translateX(0);
907
+ }
908
+ }
909
+
910
+ .animate-on-scroll {
911
+ opacity: 0;
912
+ transform: translateY(40px);
913
+ transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
914
+ }
915
+
916
+ .animate-on-scroll.visible {
917
+ opacity: 1;
918
+ transform: translateY(0);
919
+ }
920
+
921
+ /* ===== FOOTER STYLES ===== */
922
+ .Ember-footer {
923
+ background: linear-gradient(180deg, var(--steel) 0%, #1a1a1a 20%, var(--black) 100%);
924
+ padding: 80px 0 30px;
925
+ border-top: 1px solid rgba(255, 69, 0, 0.1);
926
+ position: relative;
927
+ }
928
+
929
+ /* Top accent line */
930
+ .Ember-footer::before {
931
+ content: '';
932
+ position: absolute;
933
+ top: 0;
934
+ left: 0;
935
+ right: 0;
936
+ height: 2px;
937
+ background: linear-gradient(90deg,
938
+ transparent,
939
+ var(--fire-orange) 20%,
940
+ var(--racing-red) 50%,
941
+ var(--fire-orange) 80%,
942
+ transparent);
943
+ opacity: 0.6;
944
+ }
945
+
946
+ .Ember-footer-container {
947
+ max-width: 1400px;
948
+ margin: 0 auto;
949
+ padding: 0 40px;
950
+ }
951
+
952
+ /* Main Footer Content */
953
+ .Ember-footer-content {
954
+ display: grid;
955
+ grid-template-columns: 2fr 1fr 1fr 1.5fr;
956
+ gap: 60px;
957
+ margin-bottom: 60px;
958
+ }
959
+
960
+ /* Brand Column */
961
+ .Ember-footer-brand {
962
+ display: flex;
963
+ flex-direction: column;
964
+ gap: 25px;
965
+ }
966
+
967
+ .Ember-footer-logo {
968
+ display: inline-block;
969
+ height: 60px;
970
+ width: auto;
971
+ transition: all 0.3s ease;
972
+ }
973
+
974
+ .Ember-footer-logo img {
975
+ height: 100%;
976
+ width: auto;
977
+ filter: brightness(0.9);
978
+ transition: filter 0.3s ease;
979
+ }
980
+
981
+ .Ember-footer-logo:hover img {
982
+ filter: brightness(1.1) drop-shadow(0 0 10px rgba(255, 69, 0, 0.5));
983
+ }
984
+
985
+ .Ember-footer-tagline {
986
+ font-size: 18px;
987
+ line-height: 1.6;
988
+ color: var(--smoke);
989
+ font-style: italic;
990
+ letter-spacing: 0.5px;
991
+ }
992
+
993
+ .Ember-footer-description {
994
+ font-size: 14px;
995
+ line-height: 1.8;
996
+ color: var(--smoke);
997
+ max-width: 400px;
998
+ }
999
+
1000
+ /* Navigation Columns */
1001
+ .Ember-footer-nav {
1002
+ display: flex;
1003
+ flex-direction: column;
1004
+ gap: 20px;
1005
+ }
1006
+
1007
+ .Ember-footer-nav h3 {
1008
+ font-size: 12px;
1009
+ font-weight: 700;
1010
+ text-transform: uppercase;
1011
+ letter-spacing: 2px;
1012
+ color: var(--fire-orange);
1013
+ margin-bottom: 5px;
1014
+ position: relative;
1015
+ padding-bottom: 10px;
1016
+ }
1017
+
1018
+ .Ember-footer-nav h3::after {
1019
+ content: '';
1020
+ position: absolute;
1021
+ bottom: 0;
1022
+ left: 0;
1023
+ width: 0;
1024
+ height: 2px;
1025
+ background: var(--fire-orange);
1026
+ transition: width 0.6s ease;
1027
+ }
1028
+
1029
+ .Ember-footer-nav h3.animate::after {
1030
+ width: 100%;
1031
+ }
1032
+
1033
+ /* Special styling for Connect section titles */
1034
+ .Ember-footer-connect h3 {
1035
+ font-size: 12px;
1036
+ font-weight: 700;
1037
+ text-transform: uppercase;
1038
+ letter-spacing: 2px;
1039
+ background: linear-gradient(135deg, var(--bronze) 0%, var(--bronze-light) 50%, var(--bronze) 100%);
1040
+ -webkit-background-clip: text;
1041
+ -webkit-text-fill-color: transparent;
1042
+ background-clip: text;
1043
+ margin-bottom: 5px;
1044
+ position: relative;
1045
+ padding-bottom: 10px;
1046
+ }
1047
+
1048
+ .Ember-footer-connect h3::after {
1049
+ content: '';
1050
+ position: absolute;
1051
+ bottom: 0;
1052
+ left: 0;
1053
+ width: 0;
1054
+ height: 2px;
1055
+ background: linear-gradient(90deg, var(--bronze), var(--bronze-light));
1056
+ transition: width 0.6s ease;
1057
+ }
1058
+
1059
+ .Ember-footer-connect h3.animate::after {
1060
+ width: 100%;
1061
+ }
1062
+
1063
+ .Ember-footer-nav ul {
1064
+ list-style: none;
1065
+ display: flex;
1066
+ flex-direction: column;
1067
+ gap: 12px;
1068
+ }
1069
+
1070
+ .Ember-footer-nav a {
1071
+ color: var(--smoke);
1072
+ text-decoration: none;
1073
+ font-size: 15px;
1074
+ font-weight: 500;
1075
+ transition: all 0.3s ease;
1076
+ position: relative;
1077
+ display: inline-block;
1078
+ }
1079
+
1080
+ .Ember-footer-nav a::before {
1081
+ content: '';
1082
+ position: absolute;
1083
+ bottom: -2px;
1084
+ left: 0;
1085
+ width: 0;
1086
+ height: 1px;
1087
+ background: var(--fire-orange);
1088
+ transition: width 0.3s ease;
1089
+ }
1090
+
1091
+ .Ember-footer-nav a:hover::before {
1092
+ width: 100%;
1093
+ }
1094
+
1095
+ .Ember-footer-nav a:hover {
1096
+ color: var(--white);
1097
+ transform: translateX(3px);
1098
+ }
1099
+
1100
+ /* Social & Newsletter Column */
1101
+ .Ember-footer-connect {
1102
+ display: flex;
1103
+ flex-direction: column;
1104
+ gap: 25px;
1105
+ }
1106
+
1107
+ .Ember-social-links {
1108
+ display: flex;
1109
+ gap: 15px;
1110
+ margin-top: 10px;
1111
+ }
1112
+
1113
+ .Ember-social-link {
1114
+ width: 40px;
1115
+ height: 40px;
1116
+ border: 1px solid rgba(255, 69, 0, 0.3);
1117
+ border-radius: 4px;
1118
+ display: flex;
1119
+ align-items: center;
1120
+ justify-content: center;
1121
+ text-decoration: none;
1122
+ color: var(--smoke);
1123
+ transition: all 0.3s ease;
1124
+ background: rgba(255, 255, 255, 0.02);
1125
+ }
1126
+
1127
+ .Ember-social-link:hover {
1128
+ background: var(--fire-orange);
1129
+ border-color: var(--fire-orange);
1130
+ color: var(--white);
1131
+ transform: translateY(-3px);
1132
+ box-shadow: 0 5px 15px rgba(255, 69, 0, 0.3);
1133
+ }
1134
+
1135
+ /* Newsletter Signup */
1136
+ .fft-newsletter-mini {
1137
+ margin-top: 10px;
1138
+ }
1139
+
1140
+ .fft-newsletter-form {
1141
+ display: flex;
1142
+ gap: 10px;
1143
+ margin-top: 15px;
1144
+ }
1145
+
1146
+ .fft-newsletter-input {
1147
+ flex: 1;
1148
+ padding: 12px 15px;
1149
+ background: rgba(255, 255, 255, 0.05);
1150
+ border: 1px solid rgba(255, 255, 255, 0.1);
1151
+ border-radius: 4px;
1152
+ color: var(--white);
1153
+ font-size: 14px;
1154
+ transition: all 0.3s ease;
1155
+ }
1156
+
1157
+ .fft-newsletter-input::placeholder {
1158
+ color: var(--smoke);
1159
+ }
1160
+
1161
+ .fft-newsletter-input:focus {
1162
+ outline: none;
1163
+ border-color: var(--fire-orange);
1164
+ background: rgba(255, 255, 255, 0.08);
1165
+ }
1166
+
1167
+ .fft-newsletter-submit {
1168
+ padding: 12px 20px;
1169
+ background: var(--fire-orange);
1170
+ color: var(--white);
1171
+ border: none;
1172
+ border-radius: 4px;
1173
+ font-weight: 700;
1174
+ text-transform: uppercase;
1175
+ font-size: 12px;
1176
+ letter-spacing: 1px;
1177
+ cursor: pointer;
1178
+ transition: all 0.3s ease;
1179
+ }
1180
+
1181
+ .fft-newsletter-submit:hover {
1182
+ background: var(--racing-red);
1183
+ transform: translateY(-2px);
1184
+ box-shadow: 0 5px 15px rgba(255, 69, 0, 0.3);
1185
+ }
1186
+
1187
+ /* Footer Bottom */
1188
+ .Ember-footer-bottom {
1189
+ padding-top: 30px;
1190
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
1191
+ display: flex;
1192
+ justify-content: space-between;
1193
+ align-items: center;
1194
+ flex-wrap: wrap;
1195
+ gap: 20px;
1196
+ }
1197
+
1198
+ .Ember-footer-copyright {
1199
+ color: var(--smoke);
1200
+ font-size: 14px;
1201
+ }
1202
+
1203
+ .Ember-footer-legal {
1204
+ display: flex;
1205
+ gap: 30px;
1206
+ align-items: center;
1207
+ }
1208
+
1209
+ .Ember-footer-legal a {
1210
+ color: var(--smoke);
1211
+ text-decoration: none;
1212
+ font-size: 14px;
1213
+ transition: color 0.3s ease;
1214
+ }
1215
+
1216
+ .Ember-footer-legal a:hover {
1217
+ color: var(--white);
1218
+ }
1219
+
1220
+ /* ===== RESPONSIVE DESIGN ===== */
1221
+ @media (max-width: 1024px) {
1222
+ .Ember-row {
1223
+ padding: 0 24px;
1224
+ }
1225
+ .Ember-logo {
1226
+ height: 62px;
1227
+ }
1228
+ .story-section {
1229
+ grid-template-columns: 1fr;
1230
+ gap: 40px;
1231
+ }
1232
+ .story-section.reverse {
1233
+ direction: ltr;
1234
+ }
1235
+ .values-about-grid {
1236
+ grid-template-columns: repeat(2, 1fr);
1237
+ }
1238
+ .collections-grid {
1239
+ grid-template-columns: 1fr;
1240
+ }
1241
+ .against-grid {
1242
+ grid-template-columns: 1fr;
1243
+ gap: 40px;
1244
+ }
1245
+ .Ember-footer-content {
1246
+ grid-template-columns: 1fr 1fr;
1247
+ gap: 40px;
1248
+ }
1249
+ }
1250
+
1251
+ @media (max-width: 768px) {
1252
+ .Ember-shell {
1253
+ --Ember-header: var(--Ember-header-md);
1254
+ }
1255
+ .Ember-burger {
1256
+ display: block;
1257
+ }
1258
+ .Ember-nav {
1259
+ display: none;
1260
+ }
1261
+ .Ember-logo {
1262
+ height: 56px;
1263
+ }
1264
+ .about-hero-content {
1265
+ padding: 80px 20px 40px;
1266
+ }
1267
+ .values-about-grid {
1268
+ grid-template-columns: 1fr;
1269
+ }
1270
+ .Ember-footer {
1271
+ padding: 60px 0 30px;
1272
+ }
1273
+ .Ember-footer-container {
1274
+ padding: 0 24px;
1275
+ }
1276
+ .Ember-footer-content {
1277
+ grid-template-columns: 1fr;
1278
+ gap: 40px;
1279
+ text-align: center;
1280
+ }
1281
+ .Ember-footer-nav h3.animate::after,
1282
+ .Ember-footer-connect h3.animate::after {
1283
+ left: 50%;
1284
+ transform: translateX(-50%);
1285
+ width: 100%;
1286
+ }
1287
+ .Ember-footer-nav ul {
1288
+ align-items: center;
1289
+ }
1290
+ .Ember-social-links {
1291
+ justify-content: center;
1292
+ }
1293
+ .Ember-footer-bottom {
1294
+ flex-direction: column;
1295
+ text-align: center;
1296
+ }
1297
+ .Ember-footer-legal {
1298
+ flex-direction: column;
1299
+ gap: 15px;
1300
+ }
1301
+ .fft-newsletter-form {
1302
+ flex-direction: column;
1303
+ }
1304
+ }
1305
+ </style>
1306
+ <link href="https://example.com/about.html" rel="canonical"/><meta content="Ember is an editorial commerce prebuild for bold product discovery, brand stories, collection launches, and community—without defaulting to a tiled grid." name="description"/><meta content="index,follow,max-image-preview:large" name="robots"/><meta content="#111111" name="theme-color"/><meta content="website" property="og:type"/><meta content="Built in the Garage — Ember" property="og:title"/><meta content="Ember is an editorial commerce prebuild for bold product discovery, brand stories, collection launches, and community—without defaulting to a tiled grid." property="og:description"/><meta content="https://example.com/about.html" property="og:url"/><meta content="https://example.com/assets/generated/social-card.webp" property="og:image"/><meta content="summary_large_image" name="twitter:card"/><meta content="Built in the Garage — Ember" name="twitter:title"/><meta content="Ember is an editorial commerce prebuild for bold product discovery, brand stories, collection launches, and community—without defaulting to a tiled grid." name="twitter:description"/><meta content="https://example.com/assets/generated/social-card.webp" name="twitter:image"/><script data-agentsam-seo="theme-remaster" type="application/ld+json">{"@context": "https://schema.org", "@type": "WebSite", "name": "Ember Supply", "description": "Ember is an editorial commerce prebuild for bold product discovery, brand stories, collection launches, and community—without defaulting to a tiled grid.", "url": "https://example.com/about.html", "isPartOf": {"@type": "CreativeWork", "name": "Ember AgentSam Prebuild"}}</script></head>
1307
+ <body>
1308
+ <!-- Ember Header -->
1309
+ <div class="Ember-shell" id="EmberApp">
1310
+ <!-- Header -->
1311
+ <header class="Ember-header" id="EmberHeader">
1312
+ <div class="Ember-row">
1313
+ <a aria-label="Ember Supply" class="Ember-logo" href="./">
1314
+ <img alt="Ember Supply" height="68" src="/assets/generated/media-2db4f5ff9e.webp" width="256"/>
1315
+ </a>
1316
+ <nav aria-label="Primary" class="Ember-primary">
1317
+ <ul class="Ember-nav">
1318
+ <li><a href="./">Home</a></li>
1319
+ <li><a href="./shop.html">Shop</a></li>
1320
+ <li><a class="is-active" href="./about.html">About</a></li>
1321
+ <li><a href="./community.html">Community</a></li>
1322
+ </ul>
1323
+ </nav>
1324
+ <button aria-controls="EmberMobile" aria-expanded="false" aria-label="Open menu" class="Ember-burger" id="EmberBurger">
1325
+ <span></span><span></span><span></span>
1326
+ </button>
1327
+ </div>
1328
+ </header>
1329
+ <!-- Mobile Menu -->
1330
+ <nav aria-label="Mobile" class="Ember-mobile" id="EmberMobile">
1331
+ <ul>
1332
+ <li><a href="./">Home</a></li>
1333
+ <li><a href="./shop.html">Shop</a></li>
1334
+ <li><a class="is-active" href="./about.html">About</a></li>
1335
+ <li><a href="./community.html">Community</a></li>
1336
+ </ul>
1337
+ </nav>
1338
+ <!-- Spacer for non-home pages -->
1339
+ <div class="Ember-spacer" id="EmberSpacer"></div>
1340
+ </div>
1341
+ <!-- ABOUT PAGE CONTENT -->
1342
+ <div class="about-page">
1343
+ <!-- Hero Section -->
1344
+ <section class="about-hero">
1345
+ <div class="about-hero-content">
1346
+ <div class="hero-meta-info">
1347
+ <p class="meta-text-1">Est. 2025</p>
1348
+ <span class="divider"></span>
1349
+ <p class="meta-text-2">Made in River Parish, Louisiana</p>
1350
+ </div>
1351
+ <h1 class="about-hero-title">Built in the Garage</h1>
1352
+ <p class="about-hero-subtitle">
1353
+ Born from blood, sweat, and years of earning our freedom. This is more than a brand — it's a brotherhood.
1354
+ </p>
1355
+ </div>
1356
+ </section>
1357
+ <!-- Moment Section -->
1358
+ <section class="moment-section">
1359
+ <div class="moment-container animate-on-scroll">
1360
+ <h2 class="moment-title">The Moment Everything Changed</h2>
1361
+ <div class="moment-story">
1362
+ <p>
1363
+ <strong>3:47 AM. Highway 90. Just outside River Parish.</strong>
1364
+ </p>
1365
+ <p>
1366
+ After pulling a 16-hour shift, watching the sun rise over the Cypress Basin from the seat of my bike,
1367
+ it hit me. I'd spent 20 years trading time for money, thinking someday I'd have enough to finally live.
1368
+ But watching those old-timers at the truck stop — guys who'd "made it" but were too broken or too late to
1369
+ enjoy it — I realized the real luxury wasn't in my bank account.
1370
+ </p>
1371
+ <div class="moment-quote">
1372
+ <p>"Time isn't money. Time is everything money can't buy back."</p>
1373
+ </div>
1374
+ <p>
1375
+ That morning, Ember Supply was born. Not as a business plan, but as a middle finger to the lie that
1376
+ we should wait until retirement to live. Every piece we make is a reminder: the goal isn't to get rich
1377
+ enough to buy freedom. It's to be free enough to get rich in experiences.
1378
+ </p>
1379
+ </div>
1380
+ </div>
1381
+ </section>
1382
+ <!-- Video Section -->
1383
+ <section class="video-section">
1384
+ <div class="video-container">
1385
+ <video autoplay="" loop="" muted="" playsinline="">
1386
+ <source src="/assets/generated/media-c56974d198.webp" type="video/mp4"/>
1387
+ </video>
1388
+ </div>
1389
+ </section>
1390
+ <!-- Collections Section -->
1391
+ <section class="collections-section">
1392
+ <div class="collections-container">
1393
+ <div class="collections-header animate-on-scroll">
1394
+ <h2>The Gear That Gets It</h2>
1395
+ </div>
1396
+ <div class="collections-grid">
1397
+ <a class="collection-card" href="./shop.html">
1398
+ <div class="collection-image">
1399
+ <div class="collection-badge">Core Collection</div>
1400
+ <img alt="Ember Supply Core Collection" src="/assets/generated/media-1e0b1e6ee6.webp"/>
1401
+ </div>
1402
+ <div class="collection-content">
1403
+ <h3 class="collection-title">The Essentials</h3>
1404
+ <p class="collection-description">
1405
+ Daily drivers. The tees, hoodies, and gear that remind you why you grind —
1406
+ so you don't have to forever.
1407
+ </p>
1408
+ <span class="collection-link">Explore Core →</span>
1409
+ </div>
1410
+ </a>
1411
+ <a class="collection-card" href="./shop.html">
1412
+ <div class="collection-image">
1413
+ <div class="collection-badge">High Octane</div>
1414
+ <img alt="High Octane Performance Collection" src="/assets/generated/media-832b176433.webp"/>
1415
+ </div>
1416
+ <div class="collection-content">
1417
+ <h3 class="collection-title">High Octane</h3>
1418
+ <p class="collection-description">
1419
+ Performance gear for when you're burning rubber, not burning out.
1420
+ Technical fabrics meet garage style.
1421
+ </p>
1422
+ <span class="collection-link">Shop Performance →</span>
1423
+ </div>
1424
+ </a>
1425
+ <a class="collection-card" href="./shop.html">
1426
+ <div class="collection-image">
1427
+ <div class="collection-badge">Limited Drops</div>
1428
+ <img alt="Masters Series Limited Edition" src="/assets/generated/media-7c1c8120bc.webp"/>
1429
+ </div>
1430
+ <div class="collection-content">
1431
+ <h3 class="collection-title">Masters Series</h3>
1432
+ <p class="collection-description">
1433
+ Small batch. Big stories. Limited pieces honoring those who've mastered
1434
+ the art of living on their terms.
1435
+ </p>
1436
+ <span class="collection-link">View Drops →</span>
1437
+ </div>
1438
+ </a>
1439
+ </div>
1440
+ </div>
1441
+ </section>
1442
+ <!-- Against Section -->
1443
+ <section class="against-section">
1444
+ <div class="against-container">
1445
+ <div class="against-header animate-on-scroll">
1446
+ <h2>What We Stand Against</h2>
1447
+ </div>
1448
+ <div class="against-grid">
1449
+ <div class="against-item animate-on-scroll">
1450
+ <div class="against-icon">💼</div>
1451
+ <h3 class="against-title strike-title">The 40-Year Plan</h3>
1452
+ <p class="against-description">
1453
+ Waiting until 65 to start living. We believe life happens now,
1454
+ not after four decades of postponement.
1455
+ </p>
1456
+ </div>
1457
+ <div class="against-item animate-on-scroll">
1458
+ <div class="against-icon">⏰</div>
1459
+ <h3 class="against-title strike-title">Time Poverty</h3>
1460
+ <p class="against-description">
1461
+ Being cash rich but time broke. What good is a garage full of toys
1462
+ if you never have time to play?
1463
+ </p>
1464
+ </div>
1465
+ <div class="against-item animate-on-scroll">
1466
+ <div class="against-icon">🏢</div>
1467
+ <h3 class="against-title strike-title">Corporate Chains</h3>
1468
+ <p class="against-description">
1469
+ Golden handcuffs and corner offices that become expensive prisons.
1470
+ Freedom isn't negotiable.
1471
+ </p>
1472
+ </div>
1473
+ </div>
1474
+ </div>
1475
+ </section>
1476
+ <!-- River Parish Section -->
1477
+ <section class="lafayette-section">
1478
+ <div class="lafayette-container animate-on-scroll">
1479
+ <div class="lafayette-badge">🔥 Louisiana Made 🔥</div>
1480
+ <h2 class="lafayette-title">Crafted in River Parish</h2>
1481
+ <div class="lafayette-content">
1482
+ <p>
1483
+ Every piece is designed, cut, sewn, and shipped from River Parish, Louisiana.
1484
+ Not because it's trendy or marketable, but because this is where the culture lives.
1485
+ </p>
1486
+ </div>
1487
+ </div>
1488
+ </section>
1489
+ <!-- Story Section -->
1490
+ <section class="full-story-section">
1491
+ <div class="full-story-header animate-on-scroll">
1492
+ <h2 class="full-story-title" style="text-align: center;">The <span style="color: var(--fire-orange);">Full</span> Story</h2>
1493
+ </div>
1494
+ <div class="story-section">
1495
+ <div class="story-content">
1496
+ <p>
1497
+ Ember Supply isn't backed by investors or focus groups. It started with grease under the
1498
+ fingernails and a realization that hit harder than Louisiana summer heat.
1499
+ </p>
1500
+ </div>
1501
+ <div class="story-image">
1502
+ <img alt="Ember Supply Origins" src="/assets/generated/media-1e0b1e6ee6.webp"/>
1503
+ </div>
1504
+ </div>
1505
+ <div class="story-section reverse">
1506
+ <div class="story-content">
1507
+ <p>
1508
+ Every thread is sewn with purpose in River Parish — not to save costs, but to build something real
1509
+ in a world of dropshipped dreams.
1510
+ </p>
1511
+ </div>
1512
+ <div class="story-image">
1513
+ <video autoplay="" loop="" muted="" playsinline="">
1514
+ <source src="/assets/generated/media-c2860d40d1.webp" type="video/mp4"/>
1515
+ </video>
1516
+ </div>
1517
+ </div>
1518
+ <div class="story-section">
1519
+ <div class="story-content">
1520
+ <p>
1521
+ From that first sunrise on Highway 90 to every late-night garage session since, we've stayed true
1522
+ to one principle: time is the only real currency.
1523
+ </p>
1524
+ </div>
1525
+ <div class="story-image vertical">
1526
+ <img alt="High Octane Lifestyle" src="/assets/generated/media-58182cf167.webp"/>
1527
+ </div>
1528
+ </div>
1529
+ </section>
1530
+ <!-- Values Section -->
1531
+ <section class="values-about-section">
1532
+ <div class="values-about-header animate-on-scroll">
1533
+ <h2 style="text-align: center; font-size: clamp(42px, 5vw, 64px); text-transform: uppercase;">What Drives Us</h2>
1534
+ </div>
1535
+ <div class="values-about-grid">
1536
+ <div class="value-about-card">
1537
+ <div style="font-size: 48px; margin-bottom: 24px;">⏱️</div>
1538
+ <h3 style="font-size: 17px; text-transform: uppercase; margin-bottom: 16px;">Time as Currency</h3>
1539
+ <p style="font-size: 14px; line-height: 1.7;">
1540
+ The only resource you can't earn back. We measure wealth in free hours, not dollar signs.
1541
+ </p>
1542
+ </div>
1543
+ <div class="value-about-card">
1544
+ <div style="font-size: 48px; margin-bottom: 24px;">⚡</div>
1545
+ <h3 style="font-size: 17px; text-transform: uppercase; margin-bottom: 16px;">Fuel Everything</h3>
1546
+ <p style="font-size: 14px; line-height: 1.7;">
1547
+ Gas, diesel, jet fuel, coffee — whatever powers your passion, we celebrate it.
1548
+ </p>
1549
+ </div>
1550
+ <div class="value-about-card">
1551
+ <div style="font-size: 48px; margin-bottom: 24px;">🤝</div>
1552
+ <h3 style="font-size: 17px; text-transform: uppercase; margin-bottom: 16px;">Cross-Gen Unity</h3>
1553
+ <p style="font-size: 14px; line-height: 1.7;">
1554
+ Old heads and young bucks united by shared values, not shared birthdays.
1555
+ </p>
1556
+ </div>
1557
+ <div class="value-about-card">
1558
+ <div style="font-size: 48px; margin-bottom: 24px;">🏁</div>
1559
+ <h3 style="font-size: 17px; text-transform: uppercase; margin-bottom: 16px;">Culture &gt; Commerce</h3>
1560
+ <p style="font-size: 14px; line-height: 1.7;">
1561
+ Building a movement, not just moving product. Community first, sales second.
1562
+ </p>
1563
+ </div>
1564
+ </div>
1565
+ </section>
1566
+ <!-- CTA Section -->
1567
+ <section class="about-cta-section">
1568
+ <div class="about-cta-container animate-on-scroll">
1569
+ <h2 style="font-size: clamp(42px, 5vw, 64px); color: white; text-transform: uppercase; margin-bottom: 24px;">Ready to Claim Your Time?</h2>
1570
+ <p style="font-size: 18px; color: rgba(255,255,255,0.9); margin-bottom: 48px;">
1571
+ Join a growing tribe that measures success in sunsets, not spreadsheets.
1572
+ </p>
1573
+ <div>
1574
+ <a class="about-cta-btn" href="./shop.html">
1575
+ Shop the Collection
1576
+ </a>
1577
+ <a class="about-cta-btn" href="./community.html" style="background: transparent; border: 2px solid white; color: white;">
1578
+ Join the Movement
1579
+ </a>
1580
+ </div>
1581
+ </div>
1582
+ </section>
1583
+ </div>
1584
+ <!-- FOOTER -->
1585
+ <footer class="Ember-footer">
1586
+ <div class="Ember-footer-container">
1587
+ <div class="Ember-footer-content">
1588
+ <!-- Brand Column -->
1589
+ <div class="Ember-footer-brand">
1590
+ <a class="Ember-footer-logo" href="./">
1591
+ <img alt="Ember Supply" src="/assets/generated/media-2db4f5ff9e.webp"/>
1592
+ </a>
1593
+ <p class="Ember-footer-tagline">"Time is the real flex."</p>
1594
+ <p class="Ember-footer-description">
1595
+ For those who've earned their freedom through hard work, service, and dedication.
1596
+ This is more than apparel — it's a badge of the life you've built.
1597
+ </p>
1598
+ </div>
1599
+ <!-- Quick Links -->
1600
+ <div class="Ember-footer-nav">
1601
+ <h3>Explore</h3>
1602
+ <ul>
1603
+ <li><a href="https://example.com/pages/shop">Shop</a></li>
1604
+ <li><a href="https://example.com/pages/community">Community</a></li>
1605
+ <li><a href="https://example.com/pages/collab">Collaborate</a></li>
1606
+ </ul>
1607
+ </div>
1608
+ <!-- Support -->
1609
+ <div class="Ember-footer-nav">
1610
+ <h3>Support</h3>
1611
+ <ul>
1612
+ <li><a href="https://example.com/pages/contact">Contact</a></li>
1613
+ <li><a href="https://example.com/pages/data-sharing-opt-out">Privacy Policy</a></li>
1614
+ </ul>
1615
+ </div>
1616
+ <!-- Connect -->
1617
+ <div class="Ember-footer-connect">
1618
+ <div>
1619
+ <h3>Stay Connected</h3>
1620
+ <div class="Ember-social-links">
1621
+ <a aria-label="Instagram" class="Ember-social-link" href="#">
1622
+ <svg fill="none" height="20" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24" width="20">
1623
+ <rect height="20" rx="5" ry="5" width="20" x="2" y="2"></rect>
1624
+ <path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path>
1625
+ <line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line>
1626
+ </svg>
1627
+ </a>
1628
+ <a aria-label="Facebook" class="Ember-social-link" href="#">
1629
+ <svg fill="none" height="20" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24" width="20">
1630
+ <path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>
1631
+ </svg>
1632
+ </a>
1633
+ <a aria-label="YouTube" class="Ember-social-link" href="#">
1634
+ <svg fill="none" height="20" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24" width="20">
1635
+ <path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path>
1636
+ <polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>
1637
+ </svg>
1638
+ </a>
1639
+ </div>
1640
+ </div>
1641
+ <div class="fft-newsletter-mini">
1642
+ <h3>Get Updates</h3>
1643
+ <form class="fft-newsletter-form">
1644
+ <input class="fft-newsletter-input" placeholder="Your email" type="email"/>
1645
+ <button class="fft-newsletter-submit" type="submit">Join</button>
1646
+ </form>
1647
+ </div>
1648
+ </div>
1649
+ </div>
1650
+ <!-- Footer Bottom -->
1651
+ <div class="Ember-footer-bottom">
1652
+ <p class="Ember-footer-copyright">
1653
+ © 2025 Ember Supply. All rights reserved.
1654
+ </p>
1655
+ <div class="Ember-footer-legal">
1656
+ <span style="color: var(--smoke); font-size: 14px;">Built for those who've earned it.</span>
1657
+ </div>
1658
+ </div>
1659
+ </div>
1660
+ </footer>
1661
+ <script>
1662
+ (function(){
1663
+ const $ = (s, r=document)=>r.querySelector(s);
1664
+ const $$ = (s, r=document)=>Array.from(r.querySelectorAll(s));
1665
+
1666
+ const app = $('#EmberApp');
1667
+ const header = $('#EmberHeader');
1668
+ const burger = $('#EmberBurger');
1669
+ const mobile = $('#EmberMobile');
1670
+
1671
+ // ACTIVE LINK: only current page underlined
1672
+ const norm = (u)=>u.replace(/\/+$/,'') || '/';
1673
+ function setActive(anchors){
1674
+ anchors.forEach(a=>a.classList.remove('is-active'));
1675
+ const here = norm(location.pathname);
1676
+ let best = null, bestLen = -1;
1677
+ anchors.forEach(a=>{
1678
+ const href = norm(a.getAttribute('href')||'/');
1679
+ if(href==='/' && here!=='/') return;
1680
+ if(href==='/' && here==='/'){ best=a; bestLen=1; return; }
1681
+ if(href!=='/' && here.startsWith(href) && href.length>bestLen){ best=a; bestLen=href.length; }
1682
+ });
1683
+ if(!best && here==='/'){ best = anchors.find(a=>norm(a.getAttribute('href')||'/')==='/'); }
1684
+ if(best){ best.classList.add('is-active'); }
1685
+ }
1686
+ setActive($$('.Ember-nav a')); setActive($$('#EmberMobile a'));
1687
+
1688
+ // Header behavior: blur on scroll, hide on strong downward scroll
1689
+ let lastY = window.scrollY;
1690
+ const onScroll = ()=>{
1691
+ const y = window.scrollY, down = y > lastY;
1692
+ header.classList.toggle('is-scrolling', y>10);
1693
+ header.classList.toggle('is-hidden', y>120 && down);
1694
+ lastY = y;
1695
+ };
1696
+ window.addEventListener('scroll', onScroll, {passive:true}); onScroll();
1697
+
1698
+ // Mobile menu + underline tap animation
1699
+ const closeMenu = ()=>{
1700
+ burger.classList.remove('is-open');
1701
+ mobile.classList.remove('is-open');
1702
+ burger.setAttribute('aria-expanded','false');
1703
+ };
1704
+ burger.addEventListener('click', ()=>{
1705
+ const open = !burger.classList.contains('is-open');
1706
+ burger.classList.toggle('is-open', open);
1707
+ mobile.classList.toggle('is-open', open);
1708
+ burger.setAttribute('aria-expanded', String(open));
1709
+ });
1710
+ document.addEventListener('click', (e)=>{
1711
+ if(!mobile.contains(e.target) && !burger.contains(e.target)) closeMenu();
1712
+ });
1713
+ document.addEventListener('keydown', (e)=>{ if(e.key==='Escape') closeMenu(); });
1714
+
1715
+ $$('#EmberMobile a').forEach(a=>{
1716
+ a.addEventListener('click', ()=>{
1717
+ a.classList.add('tap-anim');
1718
+ setTimeout(()=>a.classList.remove('tap-anim'), 350);
1719
+ closeMenu();
1720
+ });
1721
+ });
1722
+
1723
+ })();
1724
+
1725
+ // ABOUT PAGE FUNCTIONALITY
1726
+ document.addEventListener('DOMContentLoaded', function() {
1727
+ // Scroll animations
1728
+ const animateOnScroll = () => {
1729
+ const elements = document.querySelectorAll('.animate-on-scroll');
1730
+
1731
+ const observer = new IntersectionObserver((entries) => {
1732
+ entries.forEach(entry => {
1733
+ if (entry.isIntersecting) {
1734
+ entry.target.classList.add('visible');
1735
+ }
1736
+ });
1737
+ }, {
1738
+ threshold: 0.1
1739
+ });
1740
+
1741
+ elements.forEach(element => {
1742
+ observer.observe(element);
1743
+ });
1744
+ };
1745
+
1746
+ animateOnScroll();
1747
+
1748
+ // Collection cards animation
1749
+ const cards = document.querySelectorAll('.collection-card');
1750
+ const cardObserver = new IntersectionObserver((entries) => {
1751
+ entries.forEach(entry => {
1752
+ if (entry.isIntersecting) {
1753
+ entry.target.classList.add('visible');
1754
+ }
1755
+ });
1756
+ }, {
1757
+ threshold: 0.2
1758
+ });
1759
+
1760
+ cards.forEach(card => {
1761
+ cardObserver.observe(card);
1762
+ });
1763
+
1764
+ // Quote animation
1765
+ const quote = document.querySelector('.moment-quote');
1766
+ if (quote) {
1767
+ const quoteObserver = new IntersectionObserver((entries) => {
1768
+ entries.forEach(entry => {
1769
+ if (entry.isIntersecting) {
1770
+ entry.target.classList.add('visible');
1771
+ }
1772
+ });
1773
+ }, {
1774
+ threshold: 0.5
1775
+ });
1776
+ quoteObserver.observe(quote);
1777
+ }
1778
+
1779
+ // Strike through animation
1780
+ const strikeTitles = document.querySelectorAll('.strike-title');
1781
+ const strikeObserver = new IntersectionObserver((entries) => {
1782
+ entries.forEach(entry => {
1783
+ if (entry.isIntersecting && entry.intersectionRatio >= 0.6) {
1784
+ entry.target.classList.add('crossed');
1785
+ }
1786
+ });
1787
+ }, {
1788
+ threshold: 0.6
1789
+ });
1790
+
1791
+ strikeTitles.forEach(title => {
1792
+ strikeObserver.observe(title);
1793
+ });
1794
+
1795
+ // Hero text color animation
1796
+ const metaText1 = document.querySelector('.meta-text-1');
1797
+ const metaText2 = document.querySelector('.meta-text-2');
1798
+
1799
+ window.addEventListener('scroll', () => {
1800
+ const scrolled = window.pageYOffset;
1801
+ const heroHeight = document.querySelector('.about-hero').offsetHeight;
1802
+ const scrollPercent = Math.min(scrolled / (heroHeight * 0.5), 1);
1803
+
1804
+ if (metaText1 && metaText2) {
1805
+ metaText1.classList.add('color-animate');
1806
+ metaText2.classList.add('color-animate');
1807
+
1808
+ const bgPosition = scrollPercent * 100;
1809
+ metaText1.style.backgroundPosition = bgPosition + '% 0%';
1810
+ metaText2.style.backgroundPosition = bgPosition + '% 0%';
1811
+ }
1812
+ });
1813
+ });
1814
+
1815
+ // Footer heading animations
1816
+ (function() {
1817
+ const footerHeadings = document.querySelectorAll('.Ember-footer-nav h3, .Ember-footer-connect h3');
1818
+
1819
+ if (!footerHeadings.length) return;
1820
+
1821
+ const observerOptions = {
1822
+ threshold: 0.5,
1823
+ rootMargin: '0px 0px -50px 0px'
1824
+ };
1825
+
1826
+ const headingObserver = new IntersectionObserver((entries) => {
1827
+ entries.forEach(entry => {
1828
+ if (entry.isIntersecting) {
1829
+ entry.target.classList.add('animate');
1830
+ }
1831
+ });
1832
+ }, observerOptions);
1833
+
1834
+ footerHeadings.forEach(heading => {
1835
+ headingObserver.observe(heading);
1836
+ });
1837
+ })();
1838
+ </script>
1839
+ </body>
1840
+ </html>