@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,2044 @@
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>Ember Supply — 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+Mono:wght@400;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
+ /* HERO gradient only (no global bleed) */
93
+ .Ember-shell .Ember-bg-grad {
94
+ background:
95
+ radial-gradient(ellipse at 72% 24%, rgba(255,69,0,.09) 0%, transparent 55%),
96
+ radial-gradient(ellipse at 30% 66%, rgba(229,165,88,.06) 0%, transparent 55%),
97
+ radial-gradient(ellipse at bottom, rgba(212,165,116,.04) 0%, transparent 65%),
98
+ linear-gradient(180deg, var(--Ember-bg0) 0%, var(--Ember-bg1) 55%, var(--Ember-bg2) 100%);
99
+ }
100
+
101
+ /* ---------- Header (dark everywhere) ---------- */
102
+ .Ember-header {
103
+ position: fixed;
104
+ inset: 0 0 auto 0;
105
+ height: var(--Ember-header);
106
+ z-index: 10000;
107
+ background: rgba(10,10,10,.86);
108
+ box-shadow: 0 1px 0 rgba(255,69,0,.06);
109
+ transition: transform .28s var(--Ember-ease), backdrop-filter .28s var(--Ember-ease), background-color .28s var(--Ember-ease);
110
+ will-change: transform;
111
+ }
112
+
113
+ @supports(backdrop-filter:blur(1px)) {
114
+ .Ember-header {
115
+ backdrop-filter: blur(8px);
116
+ }
117
+ .Ember-header.is-scrolling {
118
+ backdrop-filter: blur(14px);
119
+ }
120
+ }
121
+
122
+ .Ember-header.is-hidden {
123
+ transform: translateY(-100%);
124
+ }
125
+
126
+ .Ember-row {
127
+ max-width: var(--Ember-maxw);
128
+ margin: 0 auto;
129
+ height: 100%;
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: space-between;
133
+ padding: 0 56px;
134
+ }
135
+
136
+ .Ember-logo {
137
+ height: 68px;
138
+ display: flex;
139
+ align-items: center;
140
+ text-decoration: none;
141
+ position: relative;
142
+ transition: transform .25s var(--Ember-ease);
143
+ }
144
+
145
+ .Ember-logo img {
146
+ height: 100%;
147
+ width: auto;
148
+ display: block;
149
+ filter: brightness(.96);
150
+ transition: filter .25s var(--Ember-ease);
151
+ }
152
+
153
+ .Ember-logo::after {
154
+ content: "";
155
+ position: absolute;
156
+ left: 50%;
157
+ bottom: -6px;
158
+ transform: translateX(-50%) scaleX(0);
159
+ width: 100%;
160
+ height: 2px;
161
+ background: linear-gradient(90deg, transparent, var(--Ember-orange), transparent);
162
+ transition: transform .3s var(--Ember-ease);
163
+ }
164
+
165
+ .Ember-logo:hover {
166
+ transform: translateY(-1px);
167
+ }
168
+
169
+ .Ember-logo:hover img {
170
+ filter: brightness(1.1) drop-shadow(0 0 10px rgba(255,69,0,.4));
171
+ }
172
+
173
+ .Ember-logo:hover::after {
174
+ transform: translateX(-50%) scaleX(1);
175
+ }
176
+
177
+ /* Desktop nav (hover/underline everywhere, only current underlined) */
178
+ .Ember-nav {
179
+ list-style: none;
180
+ display: flex;
181
+ gap: 44px;
182
+ }
183
+
184
+ .Ember-nav a {
185
+ color: var(--Ember-muted);
186
+ text-decoration: none;
187
+ font-size: 15px;
188
+ letter-spacing: .08em;
189
+ text-transform: uppercase;
190
+ font-weight: 700;
191
+ position: relative;
192
+ outline: none;
193
+ }
194
+
195
+ .Ember-nav a::before {
196
+ content: "";
197
+ position: absolute;
198
+ left: 0;
199
+ right: 0;
200
+ bottom: -4px;
201
+ height: 2px;
202
+ background: linear-gradient(90deg, var(--Ember-orange), var(--Ember-bronze-light));
203
+ transform: scaleX(0);
204
+ transition: transform .25s var(--Ember-ease);
205
+ transform-origin: center;
206
+ }
207
+
208
+ .Ember-nav a:hover,
209
+ .Ember-nav a.is-active,
210
+ .Ember-nav a:focus-visible {
211
+ color: var(--Ember-ink);
212
+ }
213
+
214
+ .Ember-nav a:hover::before,
215
+ .Ember-nav a.is-active::before,
216
+ .Ember-nav a:focus-visible::before {
217
+ transform: scaleX(1);
218
+ }
219
+
220
+ /* Burger + Mobile menu with matching underline */
221
+ .Ember-burger {
222
+ display: none;
223
+ background: none;
224
+ border: 0;
225
+ padding: 10px;
226
+ cursor: pointer;
227
+ touch-action: manipulation;
228
+ }
229
+
230
+ .Ember-burger span {
231
+ display: block;
232
+ width: 24px;
233
+ height: 2px;
234
+ background: var(--Ember-orange);
235
+ margin: 5px 0;
236
+ transition: transform .25s, opacity .25s;
237
+ }
238
+
239
+ .Ember-burger.is-open span:nth-child(1) {
240
+ transform: rotate(45deg) translate(5px, 6px);
241
+ }
242
+
243
+ .Ember-burger.is-open span:nth-child(2) {
244
+ opacity: 0;
245
+ }
246
+
247
+ .Ember-burger.is-open span:nth-child(3) {
248
+ transform: rotate(-45deg) translate(6px, -6px);
249
+ }
250
+
251
+ .Ember-mobile {
252
+ position: fixed;
253
+ left: 0;
254
+ right: 0;
255
+ top: var(--Ember-header);
256
+ background: rgba(15,15,15,.98);
257
+ transform: translateY(-100%);
258
+ opacity: 0;
259
+ visibility: hidden;
260
+ transition: transform .28s var(--Ember-ease), opacity .28s;
261
+ z-index: 9999;
262
+ padding: 22px;
263
+ border-bottom: 1px solid rgba(255,69,0,.14);
264
+ }
265
+
266
+ .Ember-mobile.is-open {
267
+ transform: translateY(0);
268
+ opacity: 1;
269
+ visibility: visible;
270
+ }
271
+
272
+ .Ember-mobile ul {
273
+ list-style: none;
274
+ display: flex;
275
+ flex-direction: column;
276
+ gap: 20px;
277
+ margin: 0;
278
+ }
279
+
280
+ .Ember-mobile a {
281
+ color: var(--Ember-ink);
282
+ text-decoration: none;
283
+ letter-spacing: .08em;
284
+ text-transform: uppercase;
285
+ font-weight: 800;
286
+ position: relative;
287
+ outline: none;
288
+ padding: 8px 0;
289
+ }
290
+
291
+ .Ember-mobile a::before {
292
+ content: "";
293
+ position: absolute;
294
+ left: 0;
295
+ right: 0;
296
+ bottom: -2px;
297
+ height: 2px;
298
+ background: linear-gradient(90deg, var(--Ember-orange), var(--Ember-bronze-light));
299
+ transform: scaleX(0);
300
+ transition: transform .25s var(--Ember-ease);
301
+ transform-origin: center;
302
+ }
303
+
304
+ .Ember-mobile a:focus-visible::before,
305
+ .Ember-mobile a:active::before,
306
+ .Ember-mobile a.is-active::before,
307
+ .Ember-mobile a.tap-anim::before {
308
+ transform: scaleX(1);
309
+ }
310
+
311
+ /* ===== HERO SECTION ===== */
312
+ .Ember-hero {
313
+ position: relative;
314
+ min-height: 460px;
315
+ height: 60dvh;
316
+ overflow: hidden;
317
+ }
318
+
319
+ .Ember-hero .wrap {
320
+ max-width: var(--Ember-maxw);
321
+ height: 100%;
322
+ margin: 0 auto;
323
+ padding: 0 56px;
324
+ display: grid;
325
+ grid-template-columns: 1fr 1fr;
326
+ align-items: center;
327
+ gap: 12px;
328
+ position: relative;
329
+ z-index: 1;
330
+ }
331
+
332
+ .Ember-left {
333
+ display: flex;
334
+ flex-direction: column;
335
+ gap: 16px;
336
+ position: relative;
337
+ z-index: 2;
338
+ align-items: center;
339
+ text-align: center;
340
+ justify-content: center;
341
+ margin-top: min(7vh, 84px);
342
+ }
343
+
344
+ .Ember-title {
345
+ font-size: clamp(38px, 5.6vw, 78px);
346
+ line-height: .94;
347
+ letter-spacing: -.02em;
348
+ text-transform: uppercase;
349
+ color: var(--Ember-ink);
350
+ opacity: 0;
351
+ transform: translateY(20px);
352
+ }
353
+
354
+ .Ember-title span:first-child {
355
+ display: block;
356
+ font-size: .46em;
357
+ color: #a7adb4;
358
+ letter-spacing: .16em;
359
+ margin-bottom: 4px;
360
+ }
361
+
362
+ .Ember-title strong {
363
+ background: linear-gradient(135deg, var(--Ember-orange) 0%, var(--Ember-bronze-light) 45%, var(--Ember-orange) 100%);
364
+ -webkit-background-clip: text;
365
+ background-clip: text;
366
+ -webkit-text-fill-color: transparent;
367
+ }
368
+
369
+ .Ember-copy {
370
+ max-width: 640px;
371
+ color: #b9c0c6;
372
+ font-size: 18px;
373
+ opacity: 0;
374
+ transform: translateY(16px);
375
+ }
376
+
377
+ .Ember-cta {
378
+ display: inline-flex;
379
+ align-items: center;
380
+ gap: 8px;
381
+ margin-top: 8px;
382
+ padding: 12px 26px;
383
+ border-radius: 999px;
384
+ background: var(--Ember-bronze);
385
+ color: #fff;
386
+ text-decoration: none;
387
+ font-weight: 900;
388
+ letter-spacing: .1em;
389
+ text-transform: uppercase;
390
+ border: 2px solid var(--Ember-bronze);
391
+ box-shadow: 0 10px 26px rgba(205,127,50,.22);
392
+ opacity: 0;
393
+ transform: translateY(12px);
394
+ }
395
+
396
+ .Ember-cta svg {
397
+ width: 20px;
398
+ height: 20px;
399
+ }
400
+
401
+ .Ember-cta:where(:hover, :focus-visible) {
402
+ background: var(--Ember-bronze-dark);
403
+ transform: translateY(8px);
404
+ }
405
+
406
+ /* GLB "statue" accent (consistent top-right) */
407
+ .Ember-glb {
408
+ position: absolute;
409
+ top: -8%;
410
+ right: -10%;
411
+ width: clamp(170px, 20vw, 280px);
412
+ height: clamp(170px, 20vw, 280px);
413
+ opacity: 0;
414
+ transform: translateY(18px) scale(.9);
415
+ z-index: 0;
416
+ pointer-events: none;
417
+ filter: drop-shadow(0 30px 60px rgba(0,0,0,.28));
418
+ }
419
+
420
+ .Ember-glb::before {
421
+ content: "";
422
+ position: absolute;
423
+ inset: -40% -40% -40% -40%;
424
+ background: radial-gradient(ellipse at 50% 50%, rgba(255,69,0,.05) 0%, transparent 60%);
425
+ filter: blur(90px);
426
+ opacity: .42;
427
+ pointer-events: none;
428
+ }
429
+
430
+ .Ember-glb model-viewer {
431
+ width: 100%;
432
+ height: 100%;
433
+ background: transparent;
434
+ --poster-color: transparent;
435
+ --progress-bar-color: rgba(255,69,0,.18);
436
+ --progress-bar-height: 1px;
437
+ --progress-mask: transparent;
438
+ display: block;
439
+ filter: brightness(.42) saturate(.6) contrast(1.2);
440
+ }
441
+
442
+ /* One-time entrance */
443
+ .Ember-shell.is-hero-visible .Ember-title {
444
+ animation: EmberUp .7s var(--Ember-ease) .05s forwards;
445
+ }
446
+
447
+ .Ember-shell.is-hero-visible .Ember-copy {
448
+ animation: EmberUp .7s var(--Ember-ease) .16s forwards;
449
+ }
450
+
451
+ .Ember-shell.is-hero-visible .Ember-cta {
452
+ animation: EmberUp .7s var(--Ember-ease) .28s forwards;
453
+ }
454
+
455
+ .Ember-shell.is-hero-visible .Ember-glb {
456
+ animation: EmberPop .9s var(--Ember-ease) .18s forwards;
457
+ }
458
+
459
+ .Ember-title strong {
460
+ position: relative;
461
+ }
462
+
463
+ .Ember-shell.is-hero-visible .Ember-title strong::after {
464
+ content: "";
465
+ position: absolute;
466
+ left: 0;
467
+ right: 0;
468
+ bottom: -6px;
469
+ height: 2px;
470
+ background: linear-gradient(90deg, transparent, var(--Ember-orange), var(--Ember-bronze-light), transparent);
471
+ animation: EmberSweep .9s var(--Ember-ease) .32s both;
472
+ }
473
+
474
+ @keyframes EmberUp {
475
+ to {
476
+ opacity: 1;
477
+ transform: translateY(0);
478
+ }
479
+ }
480
+
481
+ @keyframes EmberPop {
482
+ 50% {
483
+ opacity: .5;
484
+ transform: translateY(0) scale(1.02);
485
+ }
486
+ 100% {
487
+ opacity: .35;
488
+ transform: translateY(0) scale(1);
489
+ }
490
+ }
491
+
492
+ @keyframes EmberSweep {
493
+ 0% {
494
+ transform: scaleX(0);
495
+ }
496
+ 100% {
497
+ transform: scaleX(1);
498
+ }
499
+ }
500
+
501
+ /* Spacer for non-home pages */
502
+ .Ember-spacer {
503
+ height: var(--Ember-header);
504
+ display: none;
505
+ }
506
+
507
+ /* ===== MAIN CONTENT SECTIONS ===== */
508
+
509
+ /* Manifesto Section */
510
+ .manifesto {
511
+ padding: var(--space-xl) var(--space-sm);
512
+ background: linear-gradient(180deg,
513
+ #3a3a3a 0%,
514
+ #4a4a4a 20%,
515
+ #6a6a6a 50%,
516
+ #9a9a9a 80%,
517
+ var(--off-white) 100%);
518
+ position: relative;
519
+ }
520
+
521
+ .manifesto-container {
522
+ max-width: 1400px;
523
+ margin: 0 auto;
524
+ display: grid;
525
+ grid-template-columns: 1fr 1fr;
526
+ gap: var(--space-lg);
527
+ align-items: center;
528
+ }
529
+
530
+ .manifesto-content {
531
+ opacity: 0;
532
+ transform: translateX(-40px);
533
+ }
534
+
535
+ .manifesto-content.visible {
536
+ animation: slideRight 0.8s ease forwards;
537
+ }
538
+
539
+ .manifesto-title {
540
+ font-family: 'Bebas Neue', sans-serif;
541
+ font-size: clamp(3rem, 7vw, 5.5rem);
542
+ line-height: 0.95;
543
+ letter-spacing: -0.02em;
544
+ text-transform: uppercase;
545
+ margin-bottom: var(--space-sm);
546
+ color: var(--white);
547
+ }
548
+
549
+ .manifesto-title .highlight {
550
+ color: var(--fire-orange);
551
+ position: relative;
552
+ }
553
+
554
+ .manifesto-text {
555
+ font-size: clamp(1.125rem, 2vw, 1.25rem);
556
+ line-height: 1.7;
557
+ color: var(--light-smoke);
558
+ margin-bottom: var(--space-sm);
559
+ }
560
+
561
+ .manifesto-text strong {
562
+ color: var(--white);
563
+ font-weight: 700;
564
+ }
565
+
566
+ .manifesto-visual {
567
+ position: relative;
568
+ opacity: 0;
569
+ transform: translateX(40px);
570
+ }
571
+
572
+ .manifesto-visual.visible {
573
+ animation: slideLeft 0.8s ease forwards;
574
+ }
575
+
576
+ .manifesto-image-container {
577
+ position: relative;
578
+ width: 100%;
579
+ padding-bottom: 100%;
580
+ overflow: hidden;
581
+ border-radius: var(--radius);
582
+ box-shadow: 0 20px 60px rgba(0,0,0,0.3);
583
+ }
584
+
585
+ .manifesto-image {
586
+ position: absolute;
587
+ top: 0;
588
+ left: 0;
589
+ width: 100%;
590
+ height: 100%;
591
+ object-fit: cover;
592
+ object-position: center;
593
+ filter: grayscale(100%);
594
+ transition: filter 0.6s ease, transform 0.6s ease;
595
+ }
596
+
597
+ .manifesto-visual:hover .manifesto-image {
598
+ filter: grayscale(0%);
599
+ transform: scale(1.05);
600
+ }
601
+
602
+ /* Collections Section */
603
+ .collections {
604
+ padding: var(--space-xl) var(--space-sm);
605
+ background: linear-gradient(180deg,
606
+ var(--off-white) 0%,
607
+ var(--light-gray) 30%,
608
+ #e0e0e0 60%,
609
+ #d0d0d0 100%);
610
+ }
611
+
612
+ .collections-header {
613
+ text-align: center;
614
+ margin-bottom: var(--space-lg);
615
+ }
616
+
617
+ .collections-badge {
618
+ font-family: 'Space Mono', monospace;
619
+ font-size: clamp(0.875rem, 2vw, 1rem);
620
+ font-weight: 700;
621
+ letter-spacing: 0.15em;
622
+ text-transform: uppercase;
623
+ color: var(--fire-orange);
624
+ margin-bottom: var(--space-xs);
625
+ }
626
+
627
+ .collections-title {
628
+ font-family: 'Bebas Neue', sans-serif;
629
+ font-size: clamp(3rem, 7vw, 4.5rem);
630
+ text-transform: uppercase;
631
+ margin-bottom: var(--space-xs);
632
+ color: var(--black);
633
+ }
634
+
635
+ .collections-grid {
636
+ display: grid;
637
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
638
+ gap: 2rem;
639
+ max-width: 1400px;
640
+ margin: 0 auto;
641
+ }
642
+
643
+ .collection-card {
644
+ position: relative;
645
+ aspect-ratio: 3/4;
646
+ background: var(--white);
647
+ overflow: hidden;
648
+ cursor: pointer;
649
+ text-decoration: none;
650
+ color: inherit;
651
+ opacity: 0;
652
+ transform: translateY(40px);
653
+ border-radius: var(--radius);
654
+ box-shadow: 0 10px 30px rgba(0,0,0,0.1);
655
+ transition: all 0.4s ease;
656
+ }
657
+
658
+ .collection-card.visible {
659
+ animation: fadeUpStagger 0.6s ease forwards;
660
+ }
661
+
662
+ .collection-card:nth-child(2) {
663
+ animation-delay: 0.1s;
664
+ }
665
+
666
+ .collection-card:nth-child(3) {
667
+ animation-delay: 0.2s;
668
+ }
669
+
670
+ .collection-card:hover {
671
+ transform: translateY(-10px);
672
+ box-shadow: 0 20px 50px rgba(0,0,0,0.2);
673
+ }
674
+
675
+ .collection-image {
676
+ width: 100%;
677
+ height: 100%;
678
+ object-fit: cover;
679
+ object-position: center;
680
+ transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
681
+ }
682
+
683
+ .collection-card:hover .collection-image {
684
+ transform: scale(1.1);
685
+ }
686
+
687
+ .collection-overlay {
688
+ position: absolute;
689
+ bottom: 0;
690
+ left: 0;
691
+ right: 0;
692
+ padding: clamp(2rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2rem);
693
+ background: linear-gradient(to top, rgba(0,0,0,0.95), rgba(0,0,0,0.7) 30%, transparent);
694
+ transform: translateY(10px);
695
+ transition: transform 0.4s ease;
696
+ }
697
+
698
+ .collection-card:hover .collection-overlay {
699
+ transform: translateY(0);
700
+ }
701
+
702
+ .collection-name {
703
+ font-family: 'Bebas Neue', sans-serif;
704
+ font-size: clamp(1.75rem, 4vw, 2.25rem);
705
+ text-transform: uppercase;
706
+ margin-bottom: 0.5rem;
707
+ letter-spacing: 0.05em;
708
+ color: var(--white);
709
+ }
710
+
711
+ .collection-description {
712
+ font-size: clamp(0.9rem, 2vw, 1rem);
713
+ color: var(--light-smoke);
714
+ margin-bottom: 1rem;
715
+ line-height: 1.5;
716
+ }
717
+
718
+ .collection-link {
719
+ font-family: 'Space Mono', monospace;
720
+ font-size: clamp(0.75rem, 1.5vw, 0.875rem);
721
+ font-weight: 700;
722
+ letter-spacing: 0.1em;
723
+ text-transform: uppercase;
724
+ color: var(--fire-orange);
725
+ }
726
+
727
+ /* Values Section with Glass to Solid Animation */
728
+ .values {
729
+ padding: var(--space-xl) var(--space-sm);
730
+ background: linear-gradient(180deg,
731
+ #d0d0d0 0%,
732
+ #a0a0a0 30%,
733
+ var(--asphalt) 60%,
734
+ var(--steel) 100%);
735
+ }
736
+
737
+ .values-container {
738
+ max-width: 1200px;
739
+ margin: 0 auto;
740
+ }
741
+
742
+ .values-header {
743
+ text-align: center;
744
+ margin-bottom: var(--space-lg);
745
+ }
746
+
747
+ .values-title {
748
+ font-family: 'Bebas Neue', sans-serif;
749
+ font-size: clamp(3rem, 7vw, 4.5rem);
750
+ text-transform: uppercase;
751
+ margin-bottom: var(--space-xs);
752
+ color: var(--white);
753
+ }
754
+
755
+ .values-grid {
756
+ display: grid;
757
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
758
+ gap: clamp(1.5rem, 3vw, 2rem);
759
+ }
760
+
761
+ .value-card {
762
+ padding: clamp(2rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2rem);
763
+ background: rgba(255,255,255,0.02);
764
+ border: 1px solid rgba(255,255,255,0.1);
765
+ backdrop-filter: blur(20px);
766
+ border-radius: var(--radius);
767
+ transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
768
+ opacity: 0;
769
+ transform: translateY(30px);
770
+ }
771
+
772
+ .value-card.visible {
773
+ opacity: 1;
774
+ transform: translateY(0);
775
+ }
776
+
777
+ .value-card.solid {
778
+ background: rgba(255,255,255,0.12);
779
+ backdrop-filter: blur(0px);
780
+ border-color: var(--fire-orange);
781
+ box-shadow: 0 20px 40px rgba(255,69,0,0.15);
782
+ }
783
+
784
+ .value-card:hover {
785
+ transform: translateY(-10px);
786
+ }
787
+
788
+ .value-number {
789
+ font-family: 'Space Mono', monospace;
790
+ font-size: clamp(0.875rem, 2vw, 1rem);
791
+ color: var(--fire-orange);
792
+ margin-bottom: 1rem;
793
+ font-weight: 700;
794
+ }
795
+
796
+ .value-title {
797
+ font-family: 'Bebas Neue', sans-serif;
798
+ font-size: clamp(1.75rem, 3.5vw, 2rem);
799
+ text-transform: uppercase;
800
+ margin-bottom: 1rem;
801
+ letter-spacing: 0.05em;
802
+ color: var(--white);
803
+ }
804
+
805
+ .value-description {
806
+ font-size: clamp(1rem, 2vw, 1.125rem);
807
+ line-height: 1.6;
808
+ color: var(--light-smoke);
809
+ }
810
+
811
+ /* Community Section with Enhanced Animations */
812
+ .community {
813
+ padding: var(--space-xl) var(--space-sm);
814
+ background: linear-gradient(180deg,
815
+ var(--steel) 0%,
816
+ var(--asphalt) 30%,
817
+ #4a4a4a 60%,
818
+ var(--light-gray) 100%);
819
+ }
820
+
821
+ .community-container {
822
+ max-width: 1200px;
823
+ margin: 0 auto;
824
+ text-align: center;
825
+ }
826
+
827
+ .community-title {
828
+ font-family: 'Bebas Neue', sans-serif;
829
+ font-size: clamp(3rem, 7vw, 4.5rem);
830
+ text-transform: uppercase;
831
+ margin-bottom: var(--space-sm);
832
+ color: var(--white);
833
+ }
834
+
835
+ .community-subtitle {
836
+ font-size: clamp(1.125rem, 2.5vw, 1.375rem);
837
+ color: var(--light-smoke);
838
+ max-width: 600px;
839
+ margin: 0 auto var(--space-lg);
840
+ line-height: 1.5;
841
+ }
842
+
843
+ .community-grid {
844
+ display: grid;
845
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
846
+ gap: clamp(1.5rem, 3vw, 2rem);
847
+ margin-bottom: var(--space-lg);
848
+ }
849
+
850
+ .community-feature {
851
+ padding: clamp(2rem, 3vw, 2.5rem);
852
+ background: rgba(255,255,255,0.08);
853
+ border-radius: var(--radius);
854
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
855
+ opacity: 0;
856
+ transform: rotateY(-90deg) translateZ(100px);
857
+ transform-style: preserve-3d;
858
+ backface-visibility: hidden;
859
+ }
860
+
861
+ .community-feature.visible {
862
+ opacity: 1;
863
+ transform: rotateY(0) translateZ(0);
864
+ }
865
+
866
+ .community-feature:nth-child(1).visible {
867
+ animation: flipInUnique1 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
868
+ }
869
+
870
+ .community-feature:nth-child(2).visible {
871
+ animation: flipInUnique2 0.8s cubic-bezier(0.4, 0, 0.2, 1) 0.1s forwards;
872
+ }
873
+
874
+ .community-feature:nth-child(3).visible {
875
+ animation: flipInUnique3 0.8s cubic-bezier(0.4, 0, 0.2, 1) 0.2s forwards;
876
+ }
877
+
878
+ .community-feature:nth-child(4).visible {
879
+ animation: flipInUnique4 0.8s cubic-bezier(0.4, 0, 0.2, 1) 0.3s forwards;
880
+ }
881
+
882
+ @keyframes flipInUnique1 {
883
+ from {
884
+ opacity: 0;
885
+ transform: perspective(1000px) rotateY(-90deg) translateX(-50px);
886
+ }
887
+ to {
888
+ opacity: 1;
889
+ transform: perspective(1000px) rotateY(0) translateX(0);
890
+ }
891
+ }
892
+
893
+ @keyframes flipInUnique2 {
894
+ from {
895
+ opacity: 0;
896
+ transform: perspective(1000px) rotateX(90deg) translateY(-50px);
897
+ }
898
+ to {
899
+ opacity: 1;
900
+ transform: perspective(1000px) rotateX(0) translateY(0);
901
+ }
902
+ }
903
+
904
+ @keyframes flipInUnique3 {
905
+ from {
906
+ opacity: 0;
907
+ transform: perspective(1000px) rotateY(90deg) translateX(50px);
908
+ }
909
+ to {
910
+ opacity: 1;
911
+ transform: perspective(1000px) rotateY(0) translateX(0);
912
+ }
913
+ }
914
+
915
+ @keyframes flipInUnique4 {
916
+ from {
917
+ opacity: 0;
918
+ transform: perspective(1000px) rotateX(-90deg) translateY(50px);
919
+ }
920
+ to {
921
+ opacity: 1;
922
+ transform: perspective(1000px) rotateX(0) translateY(0);
923
+ }
924
+ }
925
+
926
+ .community-feature:hover {
927
+ transform: translateY(-10px) scale(1.05);
928
+ background: rgba(255,255,255,0.12);
929
+ box-shadow: 0 20px 40px rgba(255,69,0,0.2);
930
+ }
931
+
932
+ .community-icon {
933
+ font-size: clamp(2.5rem, 5vw, 3rem);
934
+ margin-bottom: 1rem;
935
+ }
936
+
937
+ .community-feature-title {
938
+ font-family: 'Bebas Neue', sans-serif;
939
+ font-size: clamp(1.5rem, 3vw, 1.75rem);
940
+ text-transform: uppercase;
941
+ margin-bottom: 0.5rem;
942
+ color: var(--white);
943
+ letter-spacing: 0.05em;
944
+ }
945
+
946
+ .community-feature-text {
947
+ font-size: clamp(0.95rem, 2vw, 1.125rem);
948
+ color: var(--light-smoke);
949
+ line-height: 1.5;
950
+ }
951
+
952
+ /* Coming Soon Section with Clock Animation */
953
+ .coming-soon {
954
+ padding: var(--space-xl) var(--space-sm);
955
+ background: linear-gradient(180deg,
956
+ var(--light-gray) 0%,
957
+ var(--white) 30%,
958
+ var(--off-white) 100%);
959
+ text-align: center;
960
+ }
961
+
962
+ .coming-soon-container {
963
+ max-width: 800px;
964
+ margin: 0 auto;
965
+ }
966
+
967
+ .coming-soon-title {
968
+ font-family: 'Bebas Neue', sans-serif;
969
+ font-size: clamp(3rem, 7vw, 4.5rem);
970
+ text-transform: uppercase;
971
+ margin-bottom: var(--space-sm);
972
+ color: var(--black);
973
+ opacity: 0;
974
+ transform: scale(0.3) rotateX(90deg);
975
+ }
976
+
977
+ .coming-soon-title.visible {
978
+ animation: titleReveal 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
979
+ }
980
+
981
+ @keyframes titleReveal {
982
+ to {
983
+ opacity: 1;
984
+ transform: scale(1) rotateX(0);
985
+ }
986
+ }
987
+
988
+ .coming-soon-date {
989
+ font-family: 'Space Mono', monospace;
990
+ font-size: clamp(1.25rem, 3vw, 1.5rem);
991
+ color: var(--fire-orange);
992
+ margin-bottom: var(--space-md);
993
+ font-weight: 700;
994
+ }
995
+
996
+ .countdown {
997
+ display: grid;
998
+ grid-template-columns: repeat(4, 1fr);
999
+ gap: clamp(0.75rem, 2vw, 2rem);
1000
+ margin-bottom: var(--space-lg);
1001
+ }
1002
+
1003
+ .countdown-item {
1004
+ text-align: center;
1005
+ padding: clamp(1rem, 2.5vw, 1.5rem);
1006
+ background: var(--white);
1007
+ border-radius: var(--radius);
1008
+ box-shadow: 0 5px 20px rgba(0,0,0,0.05);
1009
+ }
1010
+
1011
+ .countdown-number {
1012
+ font-family: 'Bebas Neue', sans-serif;
1013
+ font-size: clamp(2.5rem, 5vw, 3.5rem);
1014
+ color: var(--fire-orange);
1015
+ display: block;
1016
+ }
1017
+
1018
+ .countdown-label {
1019
+ font-family: 'Space Mono', monospace;
1020
+ font-size: clamp(0.75rem, 1.5vw, 0.875rem);
1021
+ text-transform: uppercase;
1022
+ letter-spacing: 0.1em;
1023
+ color: var(--asphalt);
1024
+ font-weight: 700;
1025
+ }
1026
+
1027
+ /* Newsletter Section */
1028
+ .newsletter {
1029
+ padding: var(--space-lg) var(--space-sm);
1030
+ background: linear-gradient(180deg,
1031
+ var(--off-white) 0%,
1032
+ var(--light-gray) 50%,
1033
+ var(--asphalt) 100%);
1034
+ }
1035
+
1036
+ .newsletter-container {
1037
+ max-width: 600px;
1038
+ margin: 0 auto;
1039
+ text-align: center;
1040
+ }
1041
+
1042
+ .newsletter-title {
1043
+ font-family: 'Bebas Neue', sans-serif;
1044
+ font-size: clamp(2.5rem, 6vw, 3rem);
1045
+ text-transform: uppercase;
1046
+ margin-bottom: var(--space-xs);
1047
+ color: var(--black);
1048
+ }
1049
+
1050
+ .newsletter-text {
1051
+ color: var(--asphalt);
1052
+ margin-bottom: var(--space-sm);
1053
+ font-size: clamp(1rem, 2vw, 1.125rem);
1054
+ }
1055
+
1056
+ .newsletter-form {
1057
+ display: flex;
1058
+ gap: 1rem;
1059
+ flex-direction: column;
1060
+ }
1061
+
1062
+ @media (min-width: 500px) {
1063
+ .newsletter-form {
1064
+ flex-direction: row;
1065
+ }
1066
+ }
1067
+
1068
+ .newsletter-input {
1069
+ flex: 1;
1070
+ padding: clamp(0.875rem, 2vw, 1rem) clamp(1rem, 2.5vw, 1.5rem);
1071
+ background: var(--white);
1072
+ border: 2px solid var(--light-gray);
1073
+ border-radius: var(--radius);
1074
+ color: var(--black);
1075
+ font-family: var(--font-body);
1076
+ font-size: clamp(0.875rem, 2vw, 1rem);
1077
+ transition: all 0.3s ease;
1078
+ }
1079
+
1080
+ .newsletter-input:focus {
1081
+ outline: none;
1082
+ border-color: var(--fire-orange);
1083
+ }
1084
+
1085
+ .newsletter-input::placeholder {
1086
+ color: var(--smoke);
1087
+ }
1088
+
1089
+ .newsletter-button {
1090
+ padding: clamp(0.875rem, 2vw, 1rem) clamp(1.5rem, 3vw, 2rem);
1091
+ background: var(--fire-orange);
1092
+ border: none;
1093
+ border-radius: var(--radius);
1094
+ color: var(--white);
1095
+ font-family: 'Space Mono', monospace;
1096
+ font-weight: 700;
1097
+ text-transform: uppercase;
1098
+ letter-spacing: 0.1em;
1099
+ cursor: pointer;
1100
+ transition: all 0.3s ease;
1101
+ font-size: clamp(0.875rem, 2vw, 1rem);
1102
+ }
1103
+
1104
+ .newsletter-button:hover {
1105
+ background: var(--racing-red);
1106
+ transform: translateY(-2px);
1107
+ box-shadow: 0 10px 20px rgba(220,20,60,0.3);
1108
+ }
1109
+
1110
+ /* ===== FOOTER STYLES ===== */
1111
+ .Ember-footer {
1112
+ background: linear-gradient(180deg, var(--steel) 0%, #1a1a1a 20%, var(--black) 100%);
1113
+ padding: 80px 0 30px;
1114
+ border-top: 1px solid rgba(255, 69, 0, 0.1);
1115
+ position: relative;
1116
+ }
1117
+
1118
+ /* Top accent line */
1119
+ .Ember-footer::before {
1120
+ content: '';
1121
+ position: absolute;
1122
+ top: 0;
1123
+ left: 0;
1124
+ right: 0;
1125
+ height: 2px;
1126
+ background: linear-gradient(90deg,
1127
+ transparent,
1128
+ var(--fire-orange) 20%,
1129
+ var(--racing-red) 50%,
1130
+ var(--fire-orange) 80%,
1131
+ transparent);
1132
+ opacity: 0.6;
1133
+ }
1134
+
1135
+ .Ember-footer-container {
1136
+ max-width: 1400px;
1137
+ margin: 0 auto;
1138
+ padding: 0 40px;
1139
+ }
1140
+
1141
+ /* Main Footer Content */
1142
+ .Ember-footer-content {
1143
+ display: grid;
1144
+ grid-template-columns: 2fr 1fr 1fr 1.5fr;
1145
+ gap: 60px;
1146
+ margin-bottom: 60px;
1147
+ }
1148
+
1149
+ /* Brand Column */
1150
+ .Ember-footer-brand {
1151
+ display: flex;
1152
+ flex-direction: column;
1153
+ gap: 25px;
1154
+ }
1155
+
1156
+ .Ember-footer-logo {
1157
+ display: inline-block;
1158
+ height: 60px;
1159
+ width: auto;
1160
+ transition: all 0.3s ease;
1161
+ }
1162
+
1163
+ .Ember-footer-logo img {
1164
+ height: 100%;
1165
+ width: auto;
1166
+ filter: brightness(0.9);
1167
+ transition: filter 0.3s ease;
1168
+ }
1169
+
1170
+ .Ember-footer-logo:hover img {
1171
+ filter: brightness(1.1) drop-shadow(0 0 10px rgba(255, 69, 0, 0.5));
1172
+ }
1173
+
1174
+ .Ember-footer-tagline {
1175
+ font-size: 18px;
1176
+ line-height: 1.6;
1177
+ color: var(--smoke);
1178
+ font-style: italic;
1179
+ letter-spacing: 0.5px;
1180
+ }
1181
+
1182
+ .Ember-footer-description {
1183
+ font-size: 14px;
1184
+ line-height: 1.8;
1185
+ color: var(--smoke);
1186
+ max-width: 400px;
1187
+ }
1188
+
1189
+ /* Navigation Columns */
1190
+ .Ember-footer-nav {
1191
+ display: flex;
1192
+ flex-direction: column;
1193
+ gap: 20px;
1194
+ }
1195
+
1196
+ .Ember-footer-nav h3 {
1197
+ font-size: 12px;
1198
+ font-weight: 700;
1199
+ text-transform: uppercase;
1200
+ letter-spacing: 2px;
1201
+ color: var(--fire-orange);
1202
+ margin-bottom: 5px;
1203
+ position: relative;
1204
+ padding-bottom: 10px;
1205
+ }
1206
+
1207
+ .Ember-footer-nav h3::after {
1208
+ content: '';
1209
+ position: absolute;
1210
+ bottom: 0;
1211
+ left: 0;
1212
+ width: 0;
1213
+ height: 2px;
1214
+ background: var(--fire-orange);
1215
+ transition: width 0.6s ease;
1216
+ }
1217
+
1218
+ .Ember-footer-nav h3.animate::after {
1219
+ width: 100%;
1220
+ }
1221
+
1222
+ /* Special styling for Connect section titles */
1223
+ .Ember-footer-connect h3 {
1224
+ font-size: 12px;
1225
+ font-weight: 700;
1226
+ text-transform: uppercase;
1227
+ letter-spacing: 2px;
1228
+ background: linear-gradient(135deg, var(--bronze) 0%, var(--bronze-light) 50%, var(--bronze) 100%);
1229
+ -webkit-background-clip: text;
1230
+ -webkit-text-fill-color: transparent;
1231
+ background-clip: text;
1232
+ margin-bottom: 5px;
1233
+ position: relative;
1234
+ padding-bottom: 10px;
1235
+ }
1236
+
1237
+ .Ember-footer-connect h3::after {
1238
+ content: '';
1239
+ position: absolute;
1240
+ bottom: 0;
1241
+ left: 0;
1242
+ width: 0;
1243
+ height: 2px;
1244
+ background: linear-gradient(90deg, var(--bronze), var(--bronze-light));
1245
+ transition: width 0.6s ease;
1246
+ }
1247
+
1248
+ .Ember-footer-connect h3.animate::after {
1249
+ width: 100%;
1250
+ }
1251
+
1252
+ .Ember-footer-nav ul {
1253
+ list-style: none;
1254
+ display: flex;
1255
+ flex-direction: column;
1256
+ gap: 12px;
1257
+ }
1258
+
1259
+ .Ember-footer-nav a {
1260
+ color: var(--smoke);
1261
+ text-decoration: none;
1262
+ font-size: 15px;
1263
+ font-weight: 500;
1264
+ transition: all 0.3s ease;
1265
+ position: relative;
1266
+ display: inline-block;
1267
+ }
1268
+
1269
+ .Ember-footer-nav a::before {
1270
+ content: '';
1271
+ position: absolute;
1272
+ bottom: -2px;
1273
+ left: 0;
1274
+ width: 0;
1275
+ height: 1px;
1276
+ background: var(--fire-orange);
1277
+ transition: width 0.3s ease;
1278
+ }
1279
+
1280
+ .Ember-footer-nav a:hover::before {
1281
+ width: 100%;
1282
+ }
1283
+
1284
+ .Ember-footer-nav a:hover {
1285
+ color: var(--white);
1286
+ transform: translateX(3px);
1287
+ }
1288
+
1289
+ /* Social & Newsletter Column */
1290
+ .Ember-footer-connect {
1291
+ display: flex;
1292
+ flex-direction: column;
1293
+ gap: 25px;
1294
+ }
1295
+
1296
+ .Ember-social-links {
1297
+ display: flex;
1298
+ gap: 15px;
1299
+ margin-top: 10px;
1300
+ }
1301
+
1302
+ .Ember-social-link {
1303
+ width: 40px;
1304
+ height: 40px;
1305
+ border: 1px solid rgba(255, 69, 0, 0.3);
1306
+ border-radius: 4px;
1307
+ display: flex;
1308
+ align-items: center;
1309
+ justify-content: center;
1310
+ text-decoration: none;
1311
+ color: var(--smoke);
1312
+ transition: all 0.3s ease;
1313
+ background: rgba(255, 255, 255, 0.02);
1314
+ }
1315
+
1316
+ .Ember-social-link:hover {
1317
+ background: var(--fire-orange);
1318
+ border-color: var(--fire-orange);
1319
+ color: var(--white);
1320
+ transform: translateY(-3px);
1321
+ box-shadow: 0 5px 15px rgba(255, 69, 0, 0.3);
1322
+ }
1323
+
1324
+ /* Newsletter Signup */
1325
+ .Ember-newsletter-mini {
1326
+ margin-top: 10px;
1327
+ }
1328
+
1329
+ .Ember-newsletter-form {
1330
+ display: flex;
1331
+ gap: 10px;
1332
+ margin-top: 15px;
1333
+ }
1334
+
1335
+ .Ember-newsletter-input {
1336
+ flex: 1;
1337
+ padding: 12px 15px;
1338
+ background: rgba(255, 255, 255, 0.05);
1339
+ border: 1px solid rgba(255, 255, 255, 0.1);
1340
+ border-radius: 4px;
1341
+ color: var(--white);
1342
+ font-size: 14px;
1343
+ transition: all 0.3s ease;
1344
+ }
1345
+
1346
+ .Ember-newsletter-input::placeholder {
1347
+ color: var(--smoke);
1348
+ }
1349
+
1350
+ .Ember-newsletter-input:focus {
1351
+ outline: none;
1352
+ border-color: var(--fire-orange);
1353
+ background: rgba(255, 255, 255, 0.08);
1354
+ }
1355
+
1356
+ .Ember-newsletter-submit {
1357
+ padding: 12px 20px;
1358
+ background: var(--fire-orange);
1359
+ color: var(--white);
1360
+ border: none;
1361
+ border-radius: 4px;
1362
+ font-weight: 700;
1363
+ text-transform: uppercase;
1364
+ font-size: 12px;
1365
+ letter-spacing: 1px;
1366
+ cursor: pointer;
1367
+ transition: all 0.3s ease;
1368
+ }
1369
+
1370
+ .Ember-newsletter-submit:hover {
1371
+ background: var(--racing-red);
1372
+ transform: translateY(-2px);
1373
+ box-shadow: 0 5px 15px rgba(255, 69, 0, 0.3);
1374
+ }
1375
+
1376
+ /* Footer Bottom */
1377
+ .Ember-footer-bottom {
1378
+ padding-top: 30px;
1379
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
1380
+ display: flex;
1381
+ justify-content: space-between;
1382
+ align-items: center;
1383
+ flex-wrap: wrap;
1384
+ gap: 20px;
1385
+ }
1386
+
1387
+ .Ember-footer-copyright {
1388
+ color: var(--smoke);
1389
+ font-size: 14px;
1390
+ }
1391
+
1392
+ .Ember-footer-legal {
1393
+ display: flex;
1394
+ gap: 30px;
1395
+ align-items: center;
1396
+ }
1397
+
1398
+ .Ember-footer-legal a {
1399
+ color: var(--smoke);
1400
+ text-decoration: none;
1401
+ font-size: 14px;
1402
+ transition: color 0.3s ease;
1403
+ }
1404
+
1405
+ .Ember-footer-legal a:hover {
1406
+ color: var(--white);
1407
+ }
1408
+
1409
+ /* ===== ANIMATIONS ===== */
1410
+ @keyframes slideRight {
1411
+ to {
1412
+ opacity: 1;
1413
+ transform: translateX(0);
1414
+ }
1415
+ }
1416
+
1417
+ @keyframes slideLeft {
1418
+ to {
1419
+ opacity: 1;
1420
+ transform: translateX(0);
1421
+ }
1422
+ }
1423
+
1424
+ @keyframes fadeUpStagger {
1425
+ to {
1426
+ opacity: 1;
1427
+ transform: translateY(0);
1428
+ }
1429
+ }
1430
+
1431
+ /* ===== RESPONSIVE DESIGN ===== */
1432
+ @media (max-width: 1024px) {
1433
+ .Ember-row {
1434
+ padding: 0 24px;
1435
+ }
1436
+ .Ember-logo {
1437
+ height: 62px;
1438
+ }
1439
+ .manifesto-container {
1440
+ grid-template-columns: 1fr;
1441
+ gap: var(--space-md);
1442
+ }
1443
+ .manifesto-visual {
1444
+ order: -1;
1445
+ max-width: 500px;
1446
+ margin: 0 auto;
1447
+ }
1448
+ .manifesto-content {
1449
+ text-align: center;
1450
+ }
1451
+ .collections-grid {
1452
+ grid-template-columns: 1fr;
1453
+ max-width: 500px;
1454
+ margin: 0 auto;
1455
+ }
1456
+ .values-grid {
1457
+ grid-template-columns: 1fr;
1458
+ max-width: 500px;
1459
+ margin: 0 auto;
1460
+ }
1461
+ .community-grid {
1462
+ grid-template-columns: repeat(2, 1fr);
1463
+ }
1464
+ .Ember-footer-content {
1465
+ grid-template-columns: 1fr 1fr;
1466
+ gap: 40px;
1467
+ }
1468
+ }
1469
+
1470
+ @media (max-width: 768px) {
1471
+ .Ember-shell {
1472
+ --Ember-header: var(--Ember-header-md);
1473
+ }
1474
+ .Ember-burger {
1475
+ display: block;
1476
+ }
1477
+ .Ember-nav {
1478
+ display: none;
1479
+ }
1480
+ .Ember-logo {
1481
+ height: 56px;
1482
+ }
1483
+ .Ember-hero {
1484
+ height: 72dvh;
1485
+ min-height: 540px;
1486
+ }
1487
+ .Ember-hero .wrap {
1488
+ grid-template-columns: 1fr;
1489
+ text-align: center;
1490
+ }
1491
+ .Ember-left {
1492
+ align-items: center;
1493
+ margin-top: min(8vh, 96px);
1494
+ }
1495
+ .Ember-copy {
1496
+ margin: 0 auto;
1497
+ }
1498
+ /* keep the GLB consistently top-right on mobile too */
1499
+ .Ember-glb {
1500
+ top: -10%;
1501
+ right: -14%;
1502
+ width: clamp(160px, 40vw, 260px);
1503
+ height: clamp(160px, 40vw, 260px);
1504
+ }
1505
+ .community-grid {
1506
+ grid-template-columns: 1fr;
1507
+ max-width: 400px;
1508
+ margin: 0 auto var(--space-lg);
1509
+ }
1510
+ .countdown {
1511
+ grid-template-columns: repeat(2, 1fr);
1512
+ }
1513
+ .Ember-footer {
1514
+ padding: 60px 0 30px;
1515
+ }
1516
+ .Ember-footer-container {
1517
+ padding: 0 24px;
1518
+ }
1519
+ .Ember-footer-content {
1520
+ grid-template-columns: 1fr;
1521
+ gap: 40px;
1522
+ text-align: center;
1523
+ }
1524
+ .Ember-footer-nav h3.animate::after,
1525
+ .Ember-footer-connect h3.animate::after {
1526
+ left: 50%;
1527
+ transform: translateX(-50%);
1528
+ width: 100%;
1529
+ }
1530
+ .Ember-footer-nav ul {
1531
+ align-items: center;
1532
+ }
1533
+ .Ember-social-links {
1534
+ justify-content: center;
1535
+ }
1536
+ .Ember-footer-bottom {
1537
+ flex-direction: column;
1538
+ text-align: center;
1539
+ }
1540
+ .Ember-footer-legal {
1541
+ flex-direction: column;
1542
+ gap: 15px;
1543
+ }
1544
+ .Ember-newsletter-form {
1545
+ flex-direction: column;
1546
+ }
1547
+ }
1548
+
1549
+ @media (prefers-reduced-motion: reduce) {
1550
+ .Ember-shell.is-hero-visible .Ember-title,
1551
+ .Ember-shell.is-hero-visible .Ember-copy,
1552
+ .Ember-shell.is-hero-visible .Ember-cta,
1553
+ .Ember-shell.is-hero-visible .Ember-glb {
1554
+ animation: none;
1555
+ opacity: 1;
1556
+ transform: none;
1557
+ }
1558
+ }
1559
+ </style>
1560
+ <link href="https://example.com/" 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="Ember Supply — 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/" 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="Ember Supply — 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/", "isPartOf": {"@type": "CreativeWork", "name": "Ember AgentSam Prebuild"}}</script></head>
1561
+ <body>
1562
+ <!-- Ember Header + Home Hero (scoped, v1.5.0) -->
1563
+ <div class="Ember-shell" id="EmberApp">
1564
+ <!-- Header -->
1565
+ <header class="Ember-header" id="EmberHeader">
1566
+ <div class="Ember-row">
1567
+ <a aria-label="Ember Supply" class="Ember-logo" href="/">
1568
+ <img alt="Ember Supply" height="68" src="/assets/generated/media-2db4f5ff9e.webp" width="256"/>
1569
+ </a>
1570
+ <nav aria-label="Primary" class="Ember-primary">
1571
+ <ul class="Ember-nav">
1572
+ <li><a href="./">Home</a></li>
1573
+ <li><a href="./shop.html">Shop</a></li>
1574
+ <li><a href="./about.html">About</a></li>
1575
+ <li><a href="./community.html">Community</a></li>
1576
+ </ul>
1577
+ </nav>
1578
+ <button aria-controls="EmberMobile" aria-expanded="false" aria-label="Open menu" class="Ember-burger" id="EmberBurger">
1579
+ <span></span><span></span><span></span>
1580
+ </button>
1581
+ </div>
1582
+ </header>
1583
+ <!-- Mobile Menu -->
1584
+ <nav aria-label="Mobile" class="Ember-mobile" id="EmberMobile">
1585
+ <ul>
1586
+ <li><a href="./">Home</a></li>
1587
+ <li><a href="./shop.html">Shop</a></li>
1588
+ <li><a href="./about.html">About</a></li>
1589
+ <li><a href="./community.html">Community</a></li>
1590
+ </ul>
1591
+ </nav>
1592
+ <!-- Home-only Hero -->
1593
+ <section class="Ember-hero Ember-bg-grad" id="EmberHero">
1594
+ <div class="wrap">
1595
+ <div class="Ember-left">
1596
+ <h1 class="Ember-title">
1597
+ <span>TIME IS THE</span>
1598
+ <strong>REAL HORSEPOWER</strong>
1599
+ </h1>
1600
+ <p class="Ember-copy">For those who've earned their freedom — on two wheels, four wheels, water, or in the garage.</p>
1601
+ <a class="Ember-cta" href="./shop.html">
1602
+ <span>Explore More</span>
1603
+ <svg aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24"><path d="M5 12h14M12 5l7 7-7 7"></path></svg>
1604
+ </a>
1605
+ </div>
1606
+ <!-- GLB "statue" accent (consistent top-right) -->
1607
+ <div aria-hidden="true" class="Ember-glb">
1608
+ <model-viewer alt="" camera-controls="false" camera-orbit="0deg 75deg 110%" disable-pan="" disable-zoom="" environment-image="neutral" field-of-view="35deg" id="EmberMV" interaction-prompt="none" loading="lazy" reveal="manual" shadow-intensity="0" src="/assets/generated/media-df02ccdfcf.webp">
1609
+ </model-viewer>
1610
+ </div>
1611
+ </div>
1612
+ </section>
1613
+ <!-- Spacer for non-home pages -->
1614
+ <div class="Ember-spacer" id="EmberSpacer"></div>
1615
+ </div>
1616
+ <!-- Manifesto Section -->
1617
+ <section class="manifesto">
1618
+ <div class="manifesto-container">
1619
+ <div class="manifesto-content">
1620
+ <h2 class="manifesto-title">
1621
+ Some chase<br/>
1622
+ <span class="highlight">horsepower.</span><br/>
1623
+ We chase<br/>
1624
+ <span class="highlight">hours.</span>
1625
+ </h2>
1626
+ <p class="manifesto-text">
1627
+ Ember Supply isn't about how fast you go — it's about finally having the time to go at all.
1628
+ </p>
1629
+ <p class="manifesto-text">
1630
+ Born in a River Parish garage, built for those who've earned their freedom. Whether you're a veteran who's done your time, a weekend warrior stealing moments, or a young gun working toward that first real ride.
1631
+ </p>
1632
+ <p class="manifesto-text">
1633
+ <strong>You get it. Time is everything money can't buy back.</strong>
1634
+ </p>
1635
+ </div>
1636
+ <div class="manifesto-visual">
1637
+ <div class="manifesto-image-container">
1638
+ <img alt="Ember Supply Lifestyle" class="manifesto-image" loading="lazy" src="/assets/generated/media-1e0b1e6ee6.webp"/>
1639
+ </div>
1640
+ </div>
1641
+ </div>
1642
+ </section>
1643
+ <!-- Collections Section -->
1644
+ <section class="collections">
1645
+ <div class="collections-header">
1646
+ <div class="collections-badge">Limited Drops</div>
1647
+ <h2 class="collections-title">Fuel Your Style</h2>
1648
+ </div>
1649
+ <div class="collections-grid">
1650
+ <a class="collection-card" href="https://example.com/collections/high-octane-performance-gear">
1651
+ <img alt="High Octane Collection" class="collection-image" loading="lazy" src="/assets/generated/media-58182cf167.webp"/>
1652
+ <div class="collection-overlay">
1653
+ <h3 class="collection-name">High Octane</h3>
1654
+ <p class="collection-description">Performance gear for redline living</p>
1655
+ <span class="collection-link">Shop Collection →</span>
1656
+ </div>
1657
+ </a>
1658
+ <a class="collection-card" href="https://example.com/collections/masters">
1659
+ <img alt="Masters Collection" class="collection-image" loading="lazy" src="/assets/generated/media-fab72cd344.webp"/>
1660
+ <div class="collection-overlay">
1661
+ <h3 class="collection-name">Masters</h3>
1662
+ <p class="collection-description">For those who've earned their stripes</p>
1663
+ <span class="collection-link">Shop Collection →</span>
1664
+ </div>
1665
+ </a>
1666
+ <a class="collection-card" href="https://example.com/collections/essentials">
1667
+ <img alt="Essentials Collection" class="collection-image" loading="lazy" src="/assets/generated/media-931439701c.webp"/>
1668
+ <div class="collection-overlay">
1669
+ <h3 class="collection-name">Essentials</h3>
1670
+ <p class="collection-description">Daily drivers for the daily grind</p>
1671
+ <span class="collection-link">Shop Collection →</span>
1672
+ </div>
1673
+ </a>
1674
+ </div>
1675
+ </section>
1676
+ <!-- Values Section -->
1677
+ <section class="values">
1678
+ <div class="values-container">
1679
+ <div class="values-header">
1680
+ <h2 class="values-title">More Than Merch</h2>
1681
+ </div>
1682
+ <div class="values-grid">
1683
+ <div class="value-card">
1684
+ <div class="value-number">01</div>
1685
+ <h3 class="value-title">Earned Not Given</h3>
1686
+ <p class="value-description">
1687
+ Every thread tells a story of hard work and dedication. This isn't fast fashion — it's a lifestyle earned through years of grinding.
1688
+ </p>
1689
+ </div>
1690
+ <div class="value-card">
1691
+ <div class="value-number">02</div>
1692
+ <h3 class="value-title">Built in River Parish</h3>
1693
+ <p class="value-description">
1694
+ Proudly designed, cut, and sewn in Louisiana. Supporting local means building something real in a world of dropshipped dreams.
1695
+ </p>
1696
+ </div>
1697
+ <div class="value-card">
1698
+ <div class="value-number">03</div>
1699
+ <h3 class="value-title">Community First</h3>
1700
+ <p class="value-description">
1701
+ From garage nights to poker runs, we're building connections that matter. Real people, real stories, real freedom.
1702
+ </p>
1703
+ </div>
1704
+ </div>
1705
+ </div>
1706
+ </section>
1707
+ <!-- Community Section -->
1708
+ <section class="community">
1709
+ <div class="community-container">
1710
+ <h2 class="community-title">Join the Movement</h2>
1711
+ <p class="community-subtitle">
1712
+ Where every mile has a story and every hour is earned
1713
+ </p>
1714
+ <div class="community-grid">
1715
+ <div class="community-feature">
1716
+ <div class="community-icon">🏁</div>
1717
+ <h3 class="community-feature-title">Hunt Drops</h3>
1718
+ <p class="community-feature-text">Exclusive scavenger hunts for limited gear</p>
1719
+ </div>
1720
+ <div class="community-feature">
1721
+ <div class="community-icon">🔧</div>
1722
+ <h3 class="community-feature-title">Garage Nights</h3>
1723
+ <p class="community-feature-text">Monthly meetups in River Parish and beyond</p>
1724
+ </div>
1725
+ <div class="community-feature">
1726
+ <div class="community-icon">⚡</div>
1727
+ <h3 class="community-feature-title">Fuel Stops</h3>
1728
+ <p class="community-feature-text">Pop-ups where stories meet the road</p>
1729
+ </div>
1730
+ <div class="community-feature">
1731
+ <div class="community-icon">🎯</div>
1732
+ <h3 class="community-feature-title">Early Access</h3>
1733
+ <p class="community-feature-text">First dibs on every limited release</p>
1734
+ </div>
1735
+ </div>
1736
+ </div>
1737
+ </section>
1738
+ <!-- Coming Soon Section -->
1739
+ <section class="coming-soon">
1740
+ <div class="coming-soon-container">
1741
+ <h2 class="coming-soon-title">The Clock is Ticking</h2>
1742
+ <p class="coming-soon-date">First Drop • November 3rd, 2025</p>
1743
+ <div class="countdown">
1744
+ <div class="countdown-item">
1745
+ <span class="countdown-number" id="days">00</span>
1746
+ <span class="countdown-label">Days</span>
1747
+ </div>
1748
+ <div class="countdown-item">
1749
+ <span class="countdown-number" id="hours">00</span>
1750
+ <span class="countdown-label">Hours</span>
1751
+ </div>
1752
+ <div class="countdown-item">
1753
+ <span class="countdown-number" id="minutes">00</span>
1754
+ <span class="countdown-label">Minutes</span>
1755
+ </div>
1756
+ <div class="countdown-item">
1757
+ <span class="countdown-number" id="seconds">00</span>
1758
+ <span class="countdown-label">Seconds</span>
1759
+ </div>
1760
+ </div>
1761
+ </div>
1762
+ </section>
1763
+ <!-- Newsletter Section -->
1764
+ <section class="newsletter">
1765
+ <div class="newsletter-container">
1766
+ <h2 class="newsletter-title">Stay Fueled Up</h2>
1767
+ <p class="newsletter-text">
1768
+ Get first access to drops, event invites, and the stories that matter.
1769
+ </p>
1770
+ <form class="newsletter-form" onsubmit="handleNewsletterSubmit(event)">
1771
+ <input class="newsletter-input" placeholder="Enter your email" required="" type="email"/>
1772
+ <button class="newsletter-button" type="submit">Join</button>
1773
+ </form>
1774
+ </div>
1775
+ </section>
1776
+ <!-- FOOTER -->
1777
+ <footer class="Ember-footer">
1778
+ <div class="Ember-footer-container">
1779
+ <div class="Ember-footer-content">
1780
+ <!-- Brand Column -->
1781
+ <div class="Ember-footer-brand">
1782
+ <a class="Ember-footer-logo" href="./">
1783
+ <img alt="Ember Supply" src="/assets/generated/media-2db4f5ff9e.webp"/>
1784
+ </a>
1785
+ <p class="Ember-footer-tagline">"Time is the real flex."</p>
1786
+ <p class="Ember-footer-description">
1787
+ For those who've earned their freedom through hard work, service, and dedication.
1788
+ This is more than apparel — it's a badge of the life you've built.
1789
+ </p>
1790
+ </div>
1791
+ <!-- Quick Links -->
1792
+ <div class="Ember-footer-nav">
1793
+ <h3>Explore</h3>
1794
+ <ul>
1795
+ <li><a href="https://example.com/pages/shop">Shop</a></li>
1796
+ <li><a href="https://example.com/pages/community">Community</a></li>
1797
+ <li><a href="https://example.com/pages/collab">Collaborate</a></li>
1798
+ </ul>
1799
+ </div>
1800
+ <!-- Support -->
1801
+ <div class="Ember-footer-nav">
1802
+ <h3>Support</h3>
1803
+ <ul>
1804
+ <li><a href="https://example.com/pages/contact">Contact</a></li>
1805
+ <li><a href="https://example.com/pages/data-sharing-opt-out">Privacy Policy</a></li>
1806
+ </ul>
1807
+ </div>
1808
+ <!-- Connect -->
1809
+ <div class="Ember-footer-connect">
1810
+ <div>
1811
+ <h3>Stay Connected</h3>
1812
+ <div class="Ember-social-links">
1813
+ <a aria-label="Instagram" class="Ember-social-link" href="#">
1814
+ <svg fill="none" height="20" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24" width="20">
1815
+ <rect height="20" rx="5" ry="5" width="20" x="2" y="2"></rect>
1816
+ <path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path>
1817
+ <line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line>
1818
+ </svg>
1819
+ </a>
1820
+ <a aria-label="Facebook" class="Ember-social-link" href="#">
1821
+ <svg fill="none" height="20" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24" width="20">
1822
+ <path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>
1823
+ </svg>
1824
+ </a>
1825
+ <a aria-label="YouTube" class="Ember-social-link" href="#">
1826
+ <svg fill="none" height="20" stroke="currentColor" stroke-width="2" viewbox="0 0 24 24" width="20">
1827
+ <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>
1828
+ <polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>
1829
+ </svg>
1830
+ </a>
1831
+ </div>
1832
+ </div>
1833
+ <div class="Ember-newsletter-mini">
1834
+ <h3>Get Updates</h3>
1835
+ <form class="Ember-newsletter-form">
1836
+ <input class="Ember-newsletter-input" placeholder="Your email" type="email"/>
1837
+ <button class="Ember-newsletter-submit" type="submit">Join</button>
1838
+ </form>
1839
+ </div>
1840
+ </div>
1841
+ </div>
1842
+ <!-- Footer Bottom -->
1843
+ <div class="Ember-footer-bottom">
1844
+ <p class="Ember-footer-copyright">
1845
+ © 2025 Ember Supply. All rights reserved.
1846
+ </p>
1847
+ <div class="Ember-footer-legal">
1848
+ <span style="color: var(--smoke); font-size: 14px;">Built for those who've earned it.</span>
1849
+ </div>
1850
+ </div>
1851
+ </div>
1852
+ </footer>
1853
+ <script>
1854
+ (function(){
1855
+ const $ = (s, r=document)=>r.querySelector(s);
1856
+ const $$ = (s, r=document)=>Array.from(r.querySelectorAll(s));
1857
+
1858
+ const app = $('#EmberApp');
1859
+ const header = $('#EmberHeader');
1860
+ const burger = $('#EmberBurger');
1861
+ const mobile = $('#EmberMobile');
1862
+ const hero = $('#EmberHero');
1863
+ const spacer = $('#EmberSpacer');
1864
+
1865
+ // Robust home detection
1866
+ const path = location.pathname.replace(/\/+$/,'') || '/';
1867
+ const isHome = (path==='/' || path==='/index' || path==='/index.html');
1868
+
1869
+ // Home: show hero + load model-viewer only on Home
1870
+ if(isHome){
1871
+ hero.hidden = false;
1872
+
1873
+ // Defer model-viewer ESM until needed
1874
+ const s = document.createElement('script');
1875
+ s.type = 'module';
1876
+ s.src = 'https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js';
1877
+ document.head.appendChild(s);
1878
+
1879
+ // One-time entrance & reveal (prevents early GPU/texture work)
1880
+ const io = new IntersectionObserver((entries)=>{
1881
+ if(entries[0]?.isIntersecting){
1882
+ app.classList.add('is-hero-visible');
1883
+ const mv = document.getElementById('EmberMV');
1884
+ // Show poster first, then reveal GLB once in view (smoother)
1885
+ if(mv && typeof mv.dismissPoster === 'function'){
1886
+ // small delay lets fonts/hero paint before GLB initializes
1887
+ setTimeout(()=>mv.dismissPoster(), 120);
1888
+ }
1889
+ io.disconnect();
1890
+ }
1891
+ },{threshold:0.35});
1892
+ io.observe(hero);
1893
+ } else {
1894
+ spacer.style.display = 'block';
1895
+ }
1896
+
1897
+ // ACTIVE LINK: only current page underlined
1898
+ const norm = (u)=>u.replace(/\/+$/,'') || '/';
1899
+ function setActive(anchors){
1900
+ anchors.forEach(a=>a.classList.remove('is-active'));
1901
+ const here = norm(location.pathname);
1902
+ let best = null, bestLen = -1;
1903
+ anchors.forEach(a=>{
1904
+ const href = norm(a.getAttribute('href')||'/');
1905
+ if(href==='/' && here!=='/') return;
1906
+ if(href==='/' && here==='/'){ best=a; bestLen=1; return; }
1907
+ if(href!=='/' && here.startsWith(href) && href.length>bestLen){ best=a; bestLen=href.length; }
1908
+ });
1909
+ if(!best && here==='/'){ best = anchors.find(a=>norm(a.getAttribute('href')||'/')==='/'); }
1910
+ if(best){ best.classList.add('is-active'); }
1911
+ }
1912
+ setActive($$('.Ember-nav a')); setActive($$('#EmberMobile a'));
1913
+
1914
+ // Header behavior: blur on scroll, hide on strong downward scroll
1915
+ let lastY = window.scrollY;
1916
+ const onScroll = ()=>{
1917
+ const y = window.scrollY, down = y > lastY;
1918
+ header.classList.toggle('is-scrolling', y>10);
1919
+ header.classList.toggle('is-hidden', y>120 && down);
1920
+ lastY = y;
1921
+ };
1922
+ window.addEventListener('scroll', onScroll, {passive:true}); onScroll();
1923
+
1924
+ // Mobile menu + underline tap animation
1925
+ const closeMenu = ()=>{
1926
+ burger.classList.remove('is-open');
1927
+ mobile.classList.remove('is-open');
1928
+ burger.setAttribute('aria-expanded','false');
1929
+ };
1930
+ burger.addEventListener('click', ()=>{
1931
+ const open = !burger.classList.contains('is-open');
1932
+ burger.classList.toggle('is-open', open);
1933
+ mobile.classList.toggle('is-open', open);
1934
+ burger.setAttribute('aria-expanded', String(open));
1935
+ });
1936
+ document.addEventListener('click', (e)=>{
1937
+ if(!mobile.contains(e.target) && !burger.contains(e.target)) closeMenu();
1938
+ });
1939
+ document.addEventListener('keydown', (e)=>{ if(e.key==='Escape') closeMenu(); });
1940
+
1941
+ $$('#EmberMobile a').forEach(a=>{
1942
+ a.addEventListener('click', ()=>{
1943
+ a.classList.add('tap-anim');
1944
+ setTimeout(()=>a.classList.remove('tap-anim'), 350);
1945
+ closeMenu();
1946
+ });
1947
+ });
1948
+
1949
+ // (Optional) save-data users: keep poster, skip heavy GLB init
1950
+ const saveData = 'connection' in navigator && navigator.connection && navigator.connection.saveData;
1951
+ if(saveData){ const mv = $('#EmberMV'); if(mv){ mv.setAttribute('reveal','interaction'); } }
1952
+
1953
+ })();
1954
+
1955
+ // Intersection Observer for scroll animations
1956
+ const observerOptions = {
1957
+ threshold: 0.1,
1958
+ rootMargin: '0px 0px -10px 0px'
1959
+ };
1960
+
1961
+ const observer = new IntersectionObserver((entries) => {
1962
+ entries.forEach(entry => {
1963
+ if (entry.isIntersecting) {
1964
+ entry.target.classList.add('visible');
1965
+ }
1966
+ });
1967
+ }, observerOptions);
1968
+
1969
+ // Observe elements
1970
+ document.querySelectorAll('.manifesto-content, .manifesto-visual, .collection-card, .value-card, .community-feature, .coming-soon-title').forEach(el => {
1971
+ observer.observe(el);
1972
+ });
1973
+
1974
+ // Special observer for value cards glass to solid animation
1975
+ const valueObserver = new IntersectionObserver((entries) => {
1976
+ entries.forEach(entry => {
1977
+ if (entry.isIntersecting) {
1978
+ const ratio = entry.intersectionRatio;
1979
+ if (ratio > 0.5) {
1980
+ entry.target.classList.add('solid');
1981
+ }
1982
+ }
1983
+ });
1984
+ }, {
1985
+ threshold: [0, 0.25, 0.5, 0.75, 1]
1986
+ });
1987
+
1988
+ document.querySelectorAll('.value-card').forEach(card => {
1989
+ valueObserver.observe(card);
1990
+ });
1991
+
1992
+ // Countdown Timer
1993
+ function updateCountdown() {
1994
+ const launchDate = new Date('November 3, 2025 00:00:00').getTime();
1995
+ const now = new Date().getTime();
1996
+ const distance = launchDate - now;
1997
+
1998
+ const days = Math.floor(distance / (1000 * 60 * 60 * 24));
1999
+ const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
2000
+ const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
2001
+ const seconds = Math.floor((distance % (1000 * 60)) / 1000);
2002
+
2003
+ document.getElementById('days').textContent = String(days).padStart(2, '0');
2004
+ document.getElementById('hours').textContent = String(hours).padStart(2, '0');
2005
+ document.getElementById('minutes').textContent = String(minutes).padStart(2, '0');
2006
+ document.getElementById('seconds').textContent = String(seconds).padStart(2, '0');
2007
+ }
2008
+
2009
+ setInterval(updateCountdown, 1000);
2010
+ updateCountdown();
2011
+
2012
+ // Newsletter form handler
2013
+ function handleNewsletterSubmit(e) {
2014
+ e.preventDefault();
2015
+ alert('Thanks for joining! We\'ll keep you fueled up with updates.');
2016
+ e.target.reset();
2017
+ }
2018
+
2019
+ // Intersection Observer for footer heading animations
2020
+ (function() {
2021
+ const footerHeadings = document.querySelectorAll('.Ember-footer-nav h3, .Ember-footer-connect h3');
2022
+
2023
+ if (!footerHeadings.length) return;
2024
+
2025
+ const observerOptions = {
2026
+ threshold: 0.5,
2027
+ rootMargin: '0px 0px -50px 0px'
2028
+ };
2029
+
2030
+ const headingObserver = new IntersectionObserver((entries) => {
2031
+ entries.forEach(entry => {
2032
+ if (entry.isIntersecting) {
2033
+ entry.target.classList.add('animate');
2034
+ }
2035
+ });
2036
+ }, observerOptions);
2037
+
2038
+ footerHeadings.forEach(heading => {
2039
+ headingObserver.observe(heading);
2040
+ });
2041
+ })();
2042
+ </script>
2043
+ </body>
2044
+ </html>