@tryvitris/website-harness 0.1.0-beta.6 → 0.1.0-beta.7

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 (458) hide show
  1. package/README.md +4 -4
  2. package/agent/graph.yaml +0 -2
  3. package/agent/refs/components.md +5 -41
  4. package/agent/refs/compose.md +1 -1
  5. package/agent/refs/implement.md +2 -2
  6. package/agent/refs/jev.md +1 -1
  7. package/agent/refs/layout.md +1 -1
  8. package/agent/refs/storyboard.md +1 -1
  9. package/agent/refs/template-adaptation.md +1 -1
  10. package/bin/api/agent/evaluate.js +10 -15
  11. package/bin/api/agent/grade.js +10 -15
  12. package/bin/api/cli/api.js +18 -23
  13. package/bin/api/cli.js +20 -25
  14. package/bin/api/engine.js +11 -16
  15. package/bin/api/hosting.js +12 -17
  16. package/bin/api/index.js +2 -3
  17. package/bin/api/references.js +1 -2
  18. package/bin/api/render.js +2 -4
  19. package/bin/chunks/{chunk-4GZCAWWK.js → chunk-4MFPATAB.js} +2 -4
  20. package/bin/chunks/{chunk-5OOPJNGN.js → chunk-5JTBC6UK.js} +1 -4
  21. package/bin/chunks/{chunk-Z2UNY47A.js → chunk-5YSPWKFF.js} +1 -1
  22. package/bin/chunks/{chunk-FYN4T4SV.js → chunk-7V3OKLKH.js} +15 -26
  23. package/bin/chunks/{chunk-3CTBXY5K.js → chunk-FRABKM65.js} +1936 -1899
  24. package/bin/chunks/{chunk-4DM5TTLG.js → chunk-H7Y72HXC.js} +5 -5
  25. package/bin/chunks/{chunk-R7YELY3C.js → chunk-HL6JVA4A.js} +100 -81
  26. package/bin/chunks/{chunk-54JC5L35.js → chunk-O55LAQ2C.js} +3 -5
  27. package/bin/chunks/{chunk-VH7PM7KJ.js → chunk-P56ZDMX7.js} +4 -6
  28. package/bin/chunks/{chunk-7VLBEAFW.js → chunk-PGFFKPK6.js} +2 -2
  29. package/bin/chunks/{chunk-YQYHROLZ.js → chunk-QRWGFLUU.js} +2 -2
  30. package/bin/chunks/{chunk-CBEJZO4L.js → chunk-TTAUU3AZ.js} +2 -2
  31. package/bin/chunks/{chunk-E5Y46VBX.js → chunk-VTI32UGJ.js} +200 -103
  32. package/bin/chunks/{chunk-DRJQ4OOU.js → chunk-WOORR67N.js} +0 -45
  33. package/bin/chunks/{chunk-B5I45LFD.js → chunk-YZWEXHT4.js} +11 -13
  34. package/bin/chunks/{chunk-YCVGD2CG.js → chunk-ZIROO2U4.js} +1204 -1176
  35. package/bin/chunks/{chunk-42IXFXUD.js → chunk-ZWFG4GPG.js} +11 -15
  36. package/bin/chunks/{design-context-store-IAT2P2OC.js → design-context-store-DCZOAK56.js} +10 -15
  37. package/bin/chunks/{packets-VBMY4SQJ.js → packets-QOLWPRNV.js} +10 -15
  38. package/bin/chunks/{policy-2I37JUU3.js → policy-MP2JZXI3.js} +1 -1
  39. package/bin/chunks/{preparation-S4MG3RPL.js → preparation-T2IOD5SJ.js} +10 -15
  40. package/bin/chunks/{questions-HKELBDFL.js → questions-XK545GCX.js} +1 -11
  41. package/bin/types/src/agent/composition-authoring.d.ts +2 -2
  42. package/bin/types/src/agent/jev/calibration.d.ts +2 -2
  43. package/bin/types/src/agent/jev/config.d.ts +1 -1
  44. package/bin/types/src/agent/jev/questions.d.ts +0 -10
  45. package/bin/types/src/agent/jev/types.d.ts +0 -2
  46. package/bin/types/src/agent/site-inputs.d.ts +9 -1
  47. package/bin/types/src/agent/template-catalog.d.ts +20 -0
  48. package/bin/types/src/agent/theme-selection.d.ts +4 -2
  49. package/bin/types/src/build/archives.d.ts +2 -0
  50. package/bin/vitris-art.js +10 -15
  51. package/bin/vitris-build.js +3 -5
  52. package/bin/vitris-create-site.js +12 -17
  53. package/bin/vitris-cursor-hook.js +10 -15
  54. package/bin/vitris-eval.js +12 -17
  55. package/bin/vitris-go.js +14 -19
  56. package/bin/vitris-harvest.js +11 -16
  57. package/bin/vitris-knowledge.js +11 -16
  58. package/bin/vitris-launch-preflight.js +11 -17
  59. package/bin/vitris-motion-view.js +13 -19
  60. package/bin/vitris-references.js +4 -7
  61. package/bin/vitris-refresh.js +11 -16
  62. package/bin/vitris-stock.js +1 -1
  63. package/bin/vitris-themes.js +10 -15
  64. package/bin/vitris-upgrade.js +11 -16
  65. package/bin/vitris-verify-browser.js +43 -8
  66. package/bin/vitris-verify-performance.js +3 -5
  67. package/bin/vitris.js +20 -25
  68. package/design-system/MASTER.md +2 -2
  69. package/docs/CLI.md +2 -1
  70. package/docs/DISTRIBUTION.md +1 -1
  71. package/package.json +2 -7
  72. package/templates/site/README.md +2 -0
  73. package/templates/site/gitignore +1 -0
  74. package/bin/chunks/chunk-6H3T46F5.js +0 -25
  75. package/bin/chunks/chunk-ANMJRJQ5.js +0 -31
  76. package/bin/chunks/chunk-FOXUQXTV.js +0 -278
  77. package/bin/chunks/chunk-HNORQ74T.js +0 -40
  78. package/bin/chunks/chunk-T7DGRVTP.js +0 -458
  79. package/bin/types/src/agent/jev/block-catalog.d.ts +0 -95
  80. package/bin/types/src/agent/jev/component-select.d.ts +0 -102
  81. package/bin/types/src/blocks/library-profile.d.ts +0 -9
  82. package/bin/types/src/blocks/metadata.d.ts +0 -65
  83. package/bin/vitris-blocks.js +0 -238
  84. package/blocks/CONVENTIONS.md +0 -121
  85. package/blocks/INDEX.md +0 -130
  86. package/blocks/about/about-awards/README.md +0 -36
  87. package/blocks/about/about-awards/styles.css +0 -13
  88. package/blocks/about/about-awards/template.html +0 -1
  89. package/blocks/about/about-credentials/README.md +0 -33
  90. package/blocks/about/about-credentials/block.meta.json +0 -85
  91. package/blocks/about/about-credentials/styles.css +0 -4
  92. package/blocks/about/about-credentials/template.html +0 -1
  93. package/blocks/about/about-founder/README.md +0 -35
  94. package/blocks/about/about-founder/styles.css +0 -9
  95. package/blocks/about/about-founder/template.html +0 -1
  96. package/blocks/about/about-mission/README.md +0 -31
  97. package/blocks/about/about-mission/styles.css +0 -5
  98. package/blocks/about/about-mission/template.html +0 -1
  99. package/blocks/about/about-statement/README.md +0 -28
  100. package/blocks/about/about-statement/styles.css +0 -7
  101. package/blocks/about/about-statement/template.html +0 -1
  102. package/blocks/about/about-story/README.md +0 -35
  103. package/blocks/about/about-story/styles.css +0 -5
  104. package/blocks/about/about-story/template.html +0 -1
  105. package/blocks/about/about-timeline/README.md +0 -33
  106. package/blocks/about/about-timeline/styles.css +0 -8
  107. package/blocks/about/about-timeline/template.html +0 -1
  108. package/blocks/about/about-values/README.md +0 -31
  109. package/blocks/about/about-values/styles.css +0 -3
  110. package/blocks/about/about-values/template.html +0 -1
  111. package/blocks/blog/blog-featured/README.md +0 -39
  112. package/blocks/blog/blog-featured/styles.css +0 -12
  113. package/blocks/blog/blog-featured/template.html +0 -1
  114. package/blocks/blog/blog-index/README.md +0 -34
  115. package/blocks/blog/blog-index/styles.css +0 -6
  116. package/blocks/blog/blog-index/template.html +0 -1
  117. package/blocks/blog/blog-post-header/README.md +0 -31
  118. package/blocks/blog/blog-post-header/styles.css +0 -8
  119. package/blocks/blog/blog-post-header/template.html +0 -1
  120. package/blocks/contact/contact-cards/README.md +0 -32
  121. package/blocks/contact/contact-cards/styles.css +0 -7
  122. package/blocks/contact/contact-cards/template.html +0 -1
  123. package/blocks/contact/contact-chips/README.md +0 -41
  124. package/blocks/contact/contact-chips/styles.css +0 -13
  125. package/blocks/contact/contact-chips/template.html +0 -1
  126. package/blocks/contact/contact-hours/README.md +0 -41
  127. package/blocks/contact/contact-hours/block.meta.json +0 -87
  128. package/blocks/contact/contact-hours/styles.css +0 -8
  129. package/blocks/contact/contact-hours/template.html +0 -1
  130. package/blocks/contact/contact-map/README.md +0 -39
  131. package/blocks/contact/contact-map/styles.css +0 -10
  132. package/blocks/contact/contact-map/template.html +0 -1
  133. package/blocks/contact/contact-offices/README.md +0 -32
  134. package/blocks/contact/contact-offices/styles.css +0 -8
  135. package/blocks/contact/contact-offices/template.html +0 -1
  136. package/blocks/contact/contact-phone-first/README.md +0 -33
  137. package/blocks/contact/contact-phone-first/block.meta.json +0 -86
  138. package/blocks/contact/contact-phone-first/styles.css +0 -11
  139. package/blocks/contact/contact-phone-first/template.html +0 -1
  140. package/blocks/contact/contact-split/README.md +0 -43
  141. package/blocks/contact/contact-split/styles.css +0 -12
  142. package/blocks/contact/contact-split/template.html +0 -1
  143. package/blocks/contact/contact-visit/README.md +0 -36
  144. package/blocks/contact/contact-visit/block.meta.json +0 -88
  145. package/blocks/contact/contact-visit/styles.css +0 -13
  146. package/blocks/contact/contact-visit/template.html +0 -1
  147. package/blocks/contact/service-areas/README.md +0 -32
  148. package/blocks/contact/service-areas/styles.css +0 -9
  149. package/blocks/contact/service-areas/template.html +0 -1
  150. package/blocks/content/glossary/README.md +0 -35
  151. package/blocks/content/glossary/styles.css +0 -6
  152. package/blocks/content/glossary/template.html +0 -1
  153. package/blocks/content/list-split/README.md +0 -33
  154. package/blocks/content/list-split/styles.css +0 -13
  155. package/blocks/content/list-split/template.html +0 -1
  156. package/blocks/content/prose-split/README.md +0 -32
  157. package/blocks/content/prose-split/styles.css +0 -12
  158. package/blocks/content/prose-split/template.html +0 -1
  159. package/blocks/content/specification-ledger/README.md +0 -32
  160. package/blocks/content/specification-ledger/block.meta.json +0 -85
  161. package/blocks/content/specification-ledger/styles.css +0 -10
  162. package/blocks/content/specification-ledger/template.html +0 -1
  163. package/blocks/cta/cta-band/README.md +0 -33
  164. package/blocks/cta/cta-band/styles.css +0 -11
  165. package/blocks/cta/cta-band/template.html +0 -1
  166. package/blocks/cta/cta-card/README.md +0 -35
  167. package/blocks/cta/cta-card/styles.css +0 -8
  168. package/blocks/cta/cta-card/template.html +0 -1
  169. package/blocks/cta/cta-floating-bar/README.md +0 -28
  170. package/blocks/cta/cta-floating-bar/styles.css +0 -8
  171. package/blocks/cta/cta-floating-bar/template.html +0 -1
  172. package/blocks/cta/cta-inline/README.md +0 -30
  173. package/blocks/cta/cta-inline/styles.css +0 -9
  174. package/blocks/cta/cta-inline/template.html +0 -1
  175. package/blocks/cta/cta-newsletter/README.md +0 -34
  176. package/blocks/cta/cta-newsletter/styles.css +0 -8
  177. package/blocks/cta/cta-newsletter/template.html +0 -1
  178. package/blocks/cta/cta-photo-fan/README.md +0 -36
  179. package/blocks/cta/cta-photo-fan/styles.css +0 -14
  180. package/blocks/cta/cta-photo-fan/template.html +0 -1
  181. package/blocks/cta/cta-split/README.md +0 -38
  182. package/blocks/cta/cta-split/styles.css +0 -10
  183. package/blocks/cta/cta-split/template.html +0 -1
  184. package/blocks/faq/faq-accordion/README.md +0 -36
  185. package/blocks/faq/faq-accordion/styles.css +0 -6
  186. package/blocks/faq/faq-accordion/template.html +0 -1
  187. package/blocks/faq/faq-grouped/README.md +0 -40
  188. package/blocks/faq/faq-grouped/styles.css +0 -20
  189. package/blocks/faq/faq-grouped/template.html +0 -1
  190. package/blocks/faq/faq-split/README.md +0 -37
  191. package/blocks/faq/faq-split/styles.css +0 -5
  192. package/blocks/faq/faq-split/template.html +0 -1
  193. package/blocks/faq/faq-tabs/README.md +0 -36
  194. package/blocks/faq/faq-tabs/styles.css +0 -3
  195. package/blocks/faq/faq-tabs/template.html +0 -1
  196. package/blocks/feature/feature-bento/README.md +0 -33
  197. package/blocks/feature/feature-bento/styles.css +0 -7
  198. package/blocks/feature/feature-bento/template.html +0 -1
  199. package/blocks/feature/feature-compare-table/README.md +0 -44
  200. package/blocks/feature/feature-compare-table/styles.css +0 -15
  201. package/blocks/feature/feature-compare-table/template.html +0 -1
  202. package/blocks/feature/feature-comparison/README.md +0 -34
  203. package/blocks/feature/feature-comparison/styles.css +0 -6
  204. package/blocks/feature/feature-comparison/template.html +0 -1
  205. package/blocks/feature/feature-grid-3/README.md +0 -34
  206. package/blocks/feature/feature-grid-3/styles.css +0 -8
  207. package/blocks/feature/feature-grid-3/template.html +0 -1
  208. package/blocks/feature/feature-icon-list/README.md +0 -39
  209. package/blocks/feature/feature-icon-list/styles.css +0 -9
  210. package/blocks/feature/feature-icon-list/template.html +0 -1
  211. package/blocks/feature/feature-spotlight/README.md +0 -39
  212. package/blocks/feature/feature-spotlight/styles.css +0 -5
  213. package/blocks/feature/feature-spotlight/template.html +0 -1
  214. package/blocks/feature/feature-stats-band/README.md +0 -33
  215. package/blocks/feature/feature-stats-band/styles.css +0 -8
  216. package/blocks/feature/feature-stats-band/template.html +0 -1
  217. package/blocks/feature/feature-tabs/README.md +0 -38
  218. package/blocks/feature/feature-tabs/styles.css +0 -7
  219. package/blocks/feature/feature-tabs/template.html +0 -1
  220. package/blocks/feature/feature-thumb-list/README.md +0 -38
  221. package/blocks/feature/feature-thumb-list/styles.css +0 -13
  222. package/blocks/feature/feature-thumb-list/template.html +0 -1
  223. package/blocks/feature/feature-zigzag/README.md +0 -31
  224. package/blocks/feature/feature-zigzag/styles.css +0 -6
  225. package/blocks/feature/feature-zigzag/template.html +0 -1
  226. package/blocks/footer/footer-columns/README.md +0 -39
  227. package/blocks/footer/footer-columns/styles.css +0 -16
  228. package/blocks/footer/footer-columns/template.html +0 -1
  229. package/blocks/footer/footer-compact/README.md +0 -33
  230. package/blocks/footer/footer-compact/styles.css +0 -12
  231. package/blocks/footer/footer-compact/template.html +0 -1
  232. package/blocks/footer/footer-cta/README.md +0 -37
  233. package/blocks/footer/footer-cta/styles.css +0 -18
  234. package/blocks/footer/footer-cta/template.html +0 -1
  235. package/blocks/footer/footer-social/README.md +0 -37
  236. package/blocks/footer/footer-social/styles.css +0 -17
  237. package/blocks/footer/footer-social/template.html +0 -1
  238. package/blocks/footer/footer-wordmark/README.md +0 -40
  239. package/blocks/footer/footer-wordmark/styles.css +0 -19
  240. package/blocks/footer/footer-wordmark/template.html +0 -1
  241. package/blocks/gallery/gallery-before-after/README.md +0 -31
  242. package/blocks/gallery/gallery-before-after/styles.css +0 -6
  243. package/blocks/gallery/gallery-before-after/template.html +0 -1
  244. package/blocks/gallery/gallery-carousel/README.md +0 -32
  245. package/blocks/gallery/gallery-carousel/styles.css +0 -7
  246. package/blocks/gallery/gallery-carousel/template.html +0 -1
  247. package/blocks/gallery/gallery-grid/README.md +0 -39
  248. package/blocks/gallery/gallery-grid/styles.css +0 -13
  249. package/blocks/gallery/gallery-grid/template.html +0 -1
  250. package/blocks/gallery/gallery-masonry/README.md +0 -33
  251. package/blocks/gallery/gallery-masonry/styles.css +0 -4
  252. package/blocks/gallery/gallery-masonry/template.html +0 -1
  253. package/blocks/gallery/gallery-mosaic-split/README.md +0 -40
  254. package/blocks/gallery/gallery-mosaic-split/styles.css +0 -15
  255. package/blocks/gallery/gallery-mosaic-split/template.html +0 -1
  256. package/blocks/hero/hero-asymmetric/README.md +0 -34
  257. package/blocks/hero/hero-asymmetric/styles.css +0 -13
  258. package/blocks/hero/hero-asymmetric/template.html +0 -10
  259. package/blocks/hero/hero-before-after/README.md +0 -38
  260. package/blocks/hero/hero-before-after/styles.css +0 -8
  261. package/blocks/hero/hero-before-after/template.html +0 -19
  262. package/blocks/hero/hero-editorial/README.md +0 -34
  263. package/blocks/hero/hero-editorial/block.meta.json +0 -85
  264. package/blocks/hero/hero-editorial/styles.css +0 -6
  265. package/blocks/hero/hero-editorial/template.html +0 -10
  266. package/blocks/hero/hero-evidence/README.md +0 -32
  267. package/blocks/hero/hero-evidence/block.meta.json +0 -85
  268. package/blocks/hero/hero-evidence/styles.css +0 -13
  269. package/blocks/hero/hero-evidence/template.html +0 -1
  270. package/blocks/hero/hero-form/README.md +0 -46
  271. package/blocks/hero/hero-form/styles.css +0 -11
  272. package/blocks/hero/hero-form/template.html +0 -15
  273. package/blocks/hero/hero-menu/README.md +0 -36
  274. package/blocks/hero/hero-menu/styles.css +0 -7
  275. package/blocks/hero/hero-menu/template.html +0 -10
  276. package/blocks/hero/hero-overlay/README.md +0 -35
  277. package/blocks/hero/hero-overlay/styles.css +0 -14
  278. package/blocks/hero/hero-overlay/template.html +0 -10
  279. package/blocks/hero/hero-page/README.md +0 -35
  280. package/blocks/hero/hero-page/styles.css +0 -19
  281. package/blocks/hero/hero-page/template.html +0 -1
  282. package/blocks/hero/hero-product/README.md +0 -41
  283. package/blocks/hero/hero-product/styles.css +0 -11
  284. package/blocks/hero/hero-product/template.html +0 -14
  285. package/blocks/hero/hero-service/README.md +0 -37
  286. package/blocks/hero/hero-service/block.meta.json +0 -85
  287. package/blocks/hero/hero-service/styles.css +0 -17
  288. package/blocks/hero/hero-service/template.html +0 -1
  289. package/blocks/hero/hero-split/README.md +0 -36
  290. package/blocks/hero/hero-split/styles.css +0 -7
  291. package/blocks/hero/hero-split/template.html +0 -11
  292. package/blocks/hero/hero-statement/README.md +0 -33
  293. package/blocks/hero/hero-statement/styles.css +0 -8
  294. package/blocks/hero/hero-statement/template.html +0 -1
  295. package/blocks/hero/hero-stats/README.md +0 -37
  296. package/blocks/hero/hero-stats/styles.css +0 -10
  297. package/blocks/hero/hero-stats/template.html +0 -10
  298. package/blocks/hero/hero-video-still/README.md +0 -36
  299. package/blocks/hero/hero-video-still/styles.css +0 -9
  300. package/blocks/hero/hero-video-still/template.html +0 -13
  301. package/blocks/icons.md +0 -44
  302. package/blocks/incentives/incentive-banner/README.md +0 -28
  303. package/blocks/incentives/incentive-banner/styles.css +0 -7
  304. package/blocks/incentives/incentive-banner/template.html +0 -1
  305. package/blocks/incentives/incentive-cards/README.md +0 -31
  306. package/blocks/incentives/incentive-cards/styles.css +0 -4
  307. package/blocks/incentives/incentive-cards/template.html +0 -1
  308. package/blocks/navbar/nav-announcement/README.md +0 -35
  309. package/blocks/navbar/nav-announcement/styles.css +0 -10
  310. package/blocks/navbar/nav-announcement/template.html +0 -14
  311. package/blocks/navbar/nav-centered/README.md +0 -35
  312. package/blocks/navbar/nav-centered/styles.css +0 -11
  313. package/blocks/navbar/nav-centered/template.html +0 -12
  314. package/blocks/navbar/nav-minimal/README.md +0 -29
  315. package/blocks/navbar/nav-minimal/styles.css +0 -5
  316. package/blocks/navbar/nav-minimal/template.html +0 -6
  317. package/blocks/navbar/nav-split/README.md +0 -34
  318. package/blocks/navbar/nav-split/styles.css +0 -11
  319. package/blocks/navbar/nav-split/template.html +0 -11
  320. package/blocks/navbar/nav-utility/README.md +0 -37
  321. package/blocks/navbar/nav-utility/styles.css +0 -17
  322. package/blocks/navbar/nav-utility/template.html +0 -12
  323. package/blocks/pricing/menu-featured/README.md +0 -34
  324. package/blocks/pricing/menu-featured/styles.css +0 -4
  325. package/blocks/pricing/menu-featured/template.html +0 -1
  326. package/blocks/pricing/menu-sections/README.md +0 -33
  327. package/blocks/pricing/menu-sections/styles.css +0 -9
  328. package/blocks/pricing/menu-sections/template.html +0 -1
  329. package/blocks/pricing/pricing-table/README.md +0 -40
  330. package/blocks/pricing/pricing-table/styles.css +0 -9
  331. package/blocks/pricing/pricing-table/template.html +0 -1
  332. package/blocks/pricing/pricing-tiers/README.md +0 -34
  333. package/blocks/pricing/pricing-tiers/styles.css +0 -7
  334. package/blocks/pricing/pricing-tiers/template.html +0 -1
  335. package/blocks/pricing/pricing-toggle/README.md +0 -34
  336. package/blocks/pricing/pricing-toggle/styles.css +0 -10
  337. package/blocks/pricing/pricing-toggle/template.html +0 -1
  338. package/blocks/process/process-carousel/README.md +0 -33
  339. package/blocks/process/process-carousel/styles.css +0 -5
  340. package/blocks/process/process-carousel/template.html +0 -1
  341. package/blocks/process/process-split/README.md +0 -35
  342. package/blocks/process/process-split/styles.css +0 -6
  343. package/blocks/process/process-split/template.html +0 -1
  344. package/blocks/process/process-stepper/README.md +0 -40
  345. package/blocks/process/process-stepper/styles.css +0 -11
  346. package/blocks/process/process-stepper/template.html +0 -1
  347. package/blocks/process/process-steps/README.md +0 -35
  348. package/blocks/process/process-steps/styles.css +0 -6
  349. package/blocks/process/process-steps/template.html +0 -1
  350. package/blocks/process/process-sticky/README.md +0 -38
  351. package/blocks/process/process-sticky/styles.css +0 -12
  352. package/blocks/process/process-sticky/template.html +0 -1
  353. package/blocks/process/process-timeline/README.md +0 -35
  354. package/blocks/process/process-timeline/styles.css +0 -10
  355. package/blocks/process/process-timeline/template.html +0 -1
  356. package/blocks/services/services-cards/README.md +0 -34
  357. package/blocks/services/services-cards/styles.css +0 -3
  358. package/blocks/services/services-cards/template.html +0 -1
  359. package/blocks/services/services-carousel/README.md +0 -34
  360. package/blocks/services/services-carousel/styles.css +0 -6
  361. package/blocks/services/services-carousel/template.html +0 -1
  362. package/blocks/services/services-list/README.md +0 -32
  363. package/blocks/services/services-list/block.meta.json +0 -85
  364. package/blocks/services/services-list/styles.css +0 -10
  365. package/blocks/services/services-list/template.html +0 -1
  366. package/blocks/services/services-menu/README.md +0 -39
  367. package/blocks/services/services-menu/styles.css +0 -6
  368. package/blocks/services/services-menu/template.html +0 -1
  369. package/blocks/services/services-packages/README.md +0 -34
  370. package/blocks/services/services-packages/styles.css +0 -6
  371. package/blocks/services/services-packages/template.html +0 -1
  372. package/blocks/services/services-panels/README.md +0 -36
  373. package/blocks/services/services-panels/styles.css +0 -15
  374. package/blocks/services/services-panels/template.html +0 -1
  375. package/blocks/services/services-photo-grid/README.md +0 -39
  376. package/blocks/services/services-photo-grid/styles.css +0 -10
  377. package/blocks/services/services-photo-grid/template.html +0 -1
  378. package/blocks/services/services-priority/README.md +0 -33
  379. package/blocks/services/services-priority/block.meta.json +0 -86
  380. package/blocks/services/services-priority/styles.css +0 -16
  381. package/blocks/services/services-priority/template.html +0 -1
  382. package/blocks/stats/stats-cards/README.md +0 -31
  383. package/blocks/stats/stats-cards/styles.css +0 -4
  384. package/blocks/stats/stats-cards/template.html +0 -1
  385. package/blocks/stats/stats-mosaic/README.md +0 -27
  386. package/blocks/stats/stats-mosaic/styles.css +0 -9
  387. package/blocks/stats/stats-mosaic/template.html +0 -1
  388. package/blocks/stats/stats-row/README.md +0 -29
  389. package/blocks/stats/stats-row/styles.css +0 -8
  390. package/blocks/stats/stats-row/template.html +0 -1
  391. package/blocks/stats/stats-split/README.md +0 -35
  392. package/blocks/stats/stats-split/styles.css +0 -3
  393. package/blocks/stats/stats-split/template.html +0 -1
  394. package/blocks/team/team-featured/README.md +0 -42
  395. package/blocks/team/team-featured/styles.css +0 -9
  396. package/blocks/team/team-featured/template.html +0 -1
  397. package/blocks/team/team-grid/README.md +0 -35
  398. package/blocks/team/team-grid/styles.css +0 -8
  399. package/blocks/team/team-grid/template.html +0 -1
  400. package/blocks/team/team-list/README.md +0 -32
  401. package/blocks/team/team-list/styles.css +0 -7
  402. package/blocks/team/team-list/template.html +0 -1
  403. package/blocks/testimonial/testimonial-carousel/README.md +0 -32
  404. package/blocks/testimonial/testimonial-carousel/styles.css +0 -7
  405. package/blocks/testimonial/testimonial-carousel/template.html +0 -1
  406. package/blocks/testimonial/testimonial-grid/README.md +0 -32
  407. package/blocks/testimonial/testimonial-grid/styles.css +0 -5
  408. package/blocks/testimonial/testimonial-grid/template.html +0 -1
  409. package/blocks/testimonial/testimonial-mosaic/README.md +0 -38
  410. package/blocks/testimonial/testimonial-mosaic/styles.css +0 -14
  411. package/blocks/testimonial/testimonial-mosaic/template.html +0 -1
  412. package/blocks/testimonial/testimonial-platform/README.md +0 -34
  413. package/blocks/testimonial/testimonial-platform/styles.css +0 -17
  414. package/blocks/testimonial/testimonial-platform/template.html +0 -1
  415. package/blocks/testimonial/testimonial-rating/README.md +0 -28
  416. package/blocks/testimonial/testimonial-rating/styles.css +0 -6
  417. package/blocks/testimonial/testimonial-rating/template.html +0 -1
  418. package/blocks/testimonial/testimonial-spotlight/README.md +0 -31
  419. package/blocks/testimonial/testimonial-spotlight/styles.css +0 -9
  420. package/blocks/testimonial/testimonial-spotlight/template.html +0 -1
  421. package/blocks/testimonial/testimonial-switcher/README.md +0 -39
  422. package/blocks/testimonial/testimonial-switcher/styles.css +0 -23
  423. package/blocks/testimonial/testimonial-switcher/template.html +0 -1
  424. package/blocks/testimonial/testimonial-wall/README.md +0 -34
  425. package/blocks/testimonial/testimonial-wall/styles.css +0 -7
  426. package/blocks/testimonial/testimonial-wall/template.html +0 -1
  427. package/blocks/trust-strip/trust-badges/README.md +0 -30
  428. package/blocks/trust-strip/trust-badges/styles.css +0 -5
  429. package/blocks/trust-strip/trust-badges/template.html +0 -1
  430. package/blocks/trust-strip/trust-certs/README.md +0 -31
  431. package/blocks/trust-strip/trust-certs/styles.css +0 -12
  432. package/blocks/trust-strip/trust-certs/template.html +0 -1
  433. package/blocks/trust-strip/trust-logos/README.md +0 -32
  434. package/blocks/trust-strip/trust-logos/styles.css +0 -5
  435. package/blocks/trust-strip/trust-logos/template.html +0 -1
  436. package/blocks/trust-strip/trust-quote/README.md +0 -29
  437. package/blocks/trust-strip/trust-quote/styles.css +0 -5
  438. package/blocks/trust-strip/trust-quote/template.html +0 -1
  439. package/blocks/trust-strip/trust-reviews/README.md +0 -35
  440. package/blocks/trust-strip/trust-reviews/styles.css +0 -9
  441. package/blocks/trust-strip/trust-reviews/template.html +0 -1
  442. package/blocks/work/case-alternating/README.md +0 -34
  443. package/blocks/work/case-alternating/block.meta.json +0 -86
  444. package/blocks/work/case-alternating/styles.css +0 -7
  445. package/blocks/work/case-alternating/template.html +0 -1
  446. package/blocks/work/case-carousel/README.md +0 -26
  447. package/blocks/work/case-carousel/styles.css +0 -7
  448. package/blocks/work/case-carousel/template.html +0 -1
  449. package/blocks/work/case-header/README.md +0 -38
  450. package/blocks/work/case-header/styles.css +0 -18
  451. package/blocks/work/case-header/template.html +0 -1
  452. package/blocks/work/project-evidence/README.md +0 -35
  453. package/blocks/work/project-evidence/block.meta.json +0 -87
  454. package/blocks/work/project-evidence/styles.css +0 -12
  455. package/blocks/work/project-evidence/template.html +0 -1
  456. package/blocks/work/project-grid/README.md +0 -38
  457. package/blocks/work/project-grid/styles.css +0 -9
  458. package/blocks/work/project-grid/template.html +0 -1
@@ -1,33 +0,0 @@
1
- # cta-band
2
-
3
- Full-width conversion band.
4
-
5
- - **Category:** cta
6
- - **Media:** none
7
- - **Registers:** all
8
- - **Variants:** dark, accent
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional eyebrow |
15
- | `heading` | `<h2>` — one line, the ask |
16
- | `lede` | Optional one-sentence `<p class="lede">` |
17
- | `actions` | 1–2 buttons; primary first |
18
-
19
- ## Example
20
-
21
- ```html
22
- <cta-band>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Free estimates</p>
24
- <h2 slot="heading">Ready when you are.</h2>
25
- <p slot="lede" class="lede">Book an inspection this week and have a written estimate in your inbox by Friday.</p>
26
- <a slot="actions" class="btn btn-lg" href="/contact">Get a free estimate</a>
27
- <a slot="actions" class="btn-outline btn-lg" href="tel:+15550102000"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3h4l2 5-3 2a12 12 0 0 0 6 6l2-3 5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 4 5a2 2 0 0 1 2-2z"/></svg>(555) 010-2000</a>
28
- </cta-band>
29
- ```
30
-
31
- Variants: `<cta-band variant="dark">` (also: `accent`).
32
-
33
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,11 +0,0 @@
1
- .c-cta-band__inner{display:grid;gap:var(--space-6);padding:var(--space-7) var(--space-6);background:var(--color-surface-2);border-radius:var(--radius-lg)}
2
- @media(min-width:900px){.c-cta-band__inner{grid-template-columns:1fr auto;align-items:center;padding:var(--space-8) var(--space-8)}}
3
- .c-cta-band__copy{display:grid;gap:var(--space-3);max-width:40rem}
4
- .c-cta-band__copy h2{font-size:var(--step-4)}
5
- .c-cta-band__actions{flex-shrink:0}
6
- .c-cta-band--dark .c-cta-band__inner{--color-bg:#141210;--color-text:#F7F4EF;--color-muted:#B8B0A4;--color-surface:#1E1B18;--color-surface-2:#2A2622;--color-border:#3A342E;--color-focus:#F7F4EF;background:var(--color-bg);color:var(--color-text)}
7
- .c-cta-band--accent .c-cta-band__inner{background:var(--color-accent);color:var(--color-accent-text);--color-muted:color-mix(in srgb,var(--color-accent-text) 80%,transparent);--color-border:color-mix(in srgb,var(--color-accent-text) 45%,transparent)}
8
- .c-cta-band--accent .c-cta-band__inner .btn{background:var(--color-accent-text);color:var(--color-accent)}
9
- .c-cta-band--accent .c-cta-band__inner .btn:hover{background:color-mix(in srgb,var(--color-accent-text) 90%,var(--color-accent))}
10
- .c-cta-band--accent .c-cta-band__inner .btn-outline{color:var(--color-accent-text)}
11
- .c-cta-band--accent .c-cta-band__inner .eyebrow{color:var(--color-muted)}
@@ -1 +0,0 @@
1
- <section class="c-cta-band section"><div class="wrap"><div class="c-cta-band__inner"><div class="c-cta-band__copy"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="btn-group c-cta-band__actions"><slot name="actions"></slot></div></div></div></section>
@@ -1,35 +0,0 @@
1
- # cta-card
2
-
3
- Centered elevated CTA card.
4
-
5
- - **Category:** cta
6
- - **Media:** optional media
7
- - **Registers:** beauty, food, b2b
8
- - **Variants:** muted
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional eyebrow |
15
- | `heading` | `<h2>` |
16
- | `lede` | `<p class="lede">` |
17
- | `actions` | 1–2 buttons |
18
- | `note` | Optional `<small>` under the buttons (hours, guarantee) |
19
-
20
- ## Example
21
-
22
- ```html
23
- <cta-card>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">New clients</p>
25
- <h2 slot="heading">First visit, 20% off any color service.</h2>
26
- <p slot="lede" class="lede">Book online in under a minute. Free 15-minute consult included, no commitment.</p>
27
- <a slot="actions" class="btn btn-lg" href="/book">Book online</a>
28
- <a slot="actions" class="btn-outline btn-lg" href="tel:+15550102000">Call the salon</a>
29
- <small slot="note">Open Tue–Sat · walk-ins welcome after 3 pm</small>
30
- </cta-card>
31
- ```
32
-
33
- Variants: `<cta-card variant="muted">`.
34
-
35
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,8 +0,0 @@
1
- .c-cta-card__card{max-width:50rem;margin-inline:auto;text-align:center}
2
- .c-cta-card__card .card__body{padding:var(--space-8) var(--space-6);gap:var(--space-4);justify-items:center}
3
- .c-cta-card__card h2{font-size:var(--step-4);max-width:20ch}
4
- .c-cta-card__card .lede{margin-inline:auto}
5
- .c-cta-card__actions{justify-content:center;margin-top:var(--space-2)}
6
- .c-cta-card__card small{color:var(--color-muted)}
7
- .c-cta-card--muted{background:var(--color-surface-2)}
8
- .c-cta-card--muted .c-cta-card__card{box-shadow:none;border-color:var(--color-border)}
@@ -1 +0,0 @@
1
- <section class="c-cta-card section"><div class="wrap"><div class="card card--elevated c-cta-card__card"><div class="card__body"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot><div class="btn-group c-cta-card__actions"><slot name="actions"></slot></div><slot name="note"></slot></div></div></div></section>
@@ -1,28 +0,0 @@
1
- # cta-floating-bar
2
-
3
- Compact bottom/inline urgency bar (static).
4
-
5
- - **Category:** cta
6
- - **Media:** none
7
- - **Registers:** trade, food
8
- - **Variants:** sticky, accent
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `(default)` | One line of text (`<strong>` the offer) |
15
- | `actions` | One `.btn.btn-sm` |
16
-
17
- ## Example
18
-
19
- ```html
20
- <cta-floating-bar>
21
- <strong>Spring special:</strong> free gutter guards with any full roof replacement booked before May 31.
22
- <a slot="actions" class="btn btn-sm" href="/contact">Claim the offer</a>
23
- </cta-floating-bar>
24
- ```
25
-
26
- Variants: `<cta-floating-bar variant="sticky">` (also: `accent`).
27
-
28
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,8 +0,0 @@
1
- .c-cta-floating-bar{padding-block:var(--space-4)}
2
- .c-cta-floating-bar__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3) var(--space-5);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-2)}
3
- .c-cta-floating-bar__text{margin:0;font-size:var(--step-0);color:var(--color-muted)}
4
- .c-cta-floating-bar__text strong{color:var(--color-text)}
5
- .c-cta-floating-bar--sticky{position:sticky;bottom:0;z-index:40}
6
- .c-cta-floating-bar--accent .c-cta-floating-bar__inner{background:var(--color-accent);color:var(--color-accent-text);border-color:transparent}
7
- .c-cta-floating-bar--accent .c-cta-floating-bar__text,.c-cta-floating-bar--accent .c-cta-floating-bar__text strong{color:var(--color-accent-text)}
8
- .c-cta-floating-bar--accent .btn{background:var(--color-accent-text);color:var(--color-accent)}
@@ -1 +0,0 @@
1
- <aside class="c-cta-floating-bar"><div class="wrap"><div class="c-cta-floating-bar__inner"><p class="c-cta-floating-bar__text"><slot></slot></p><div class="btn-group"><slot name="actions"></slot></div></div></div></aside>
@@ -1,30 +0,0 @@
1
- # cta-inline
2
-
3
- Quiet one-line CTA: heading beside a button with the team's faces.
4
-
5
- - **Category:** cta
6
- - **Media:** 2–3 tiny portraits
7
- - **Registers:** b2b, professional, beauty
8
- - **Variants:** center
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `heading` | `<h2>` |
15
- | `lede` | Optional `<p class="lede">` |
16
- | `action` | One `<a class="btn-outline">` containing `<span class="avatar-group">` + label |
17
-
18
- ## Example
19
-
20
- ```html
21
- <cta-inline>
22
- <h2 slot="heading">Ready to bring your brand to life?</h2>
23
- <p slot="lede" class="lede">Book a 30-minute call. We'll tell you honestly whether we're the right studio for it.</p>
24
- <a slot="action" class="btn-outline" href="/contact"><span class="avatar-group"><img src="/media/harvest/avatar-1.jpg" alt="" width="96" height="96" class="avatar"><img src="/media/harvest/avatar-2.jpg" alt="" width="96" height="96" class="avatar"><img src="/media/harvest/avatar-3.jpg" alt="" width="96" height="96" class="avatar"></span>Talk with the team</a>
25
- </cta-inline>
26
- ```
27
-
28
- Variants: `<cta-inline variant="center">`.
29
-
30
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,9 +0,0 @@
1
- .c-cta-inline{border-top:1px solid var(--color-border)}
2
- .c-cta-inline__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-5) var(--space-7)}
3
- .c-cta-inline__copy{display:grid;gap:var(--space-2);max-width:36rem}
4
- .c-cta-inline__copy h2{font-size:var(--step-3)}
5
- .c-cta-inline__action .btn-outline,.c-cta-inline__action .btn{padding-left:.6rem}
6
- .c-cta-inline__action .avatar-group{margin-right:.25rem}
7
- .c-cta-inline__action .avatar{width:1.75rem;height:1.75rem;box-shadow:0 0 0 2px var(--color-bg)}
8
- .c-cta-inline--center .c-cta-inline__row{flex-direction:column;justify-content:center;text-align:center}
9
- .c-cta-inline--center .c-cta-inline__copy{justify-items:center}
@@ -1 +0,0 @@
1
- <section class="c-cta-inline section"><div class="wrap c-cta-inline__row"><div class="c-cta-inline__copy"><slot name="heading"></slot><slot name="lede"></slot></div><div class="c-cta-inline__action"><slot name="action"></slot></div></div></section>
@@ -1,34 +0,0 @@
1
- # cta-newsletter
2
-
3
- Email capture strip.
4
-
5
- - **Category:** cta
6
- - **Media:** none
7
- - **Registers:** food, beauty, b2b
8
- - **Variants:** dark
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `heading` | `<h2>` (short) |
15
- | `lede` | `<p class="lede">` — what they get and how often |
16
- | `form` | `<form data-lead-form>` with an `.input-row` (email `.input` + `.btn`) and optional `<small>` |
17
-
18
- ## Example
19
-
20
- ```html
21
- <cta-newsletter>
22
- <h2 slot="heading">What's baking this week</h2>
23
- <p slot="lede" class="lede">One email every Thursday: the weekend menu, specials, and when the croissants come out. No fluff.</p>
24
- <form slot="form" data-lead-form>
25
- <label class="visually-hidden" for="nl-email">Email</label>
26
- <div class="input-row"><input class="input" id="nl-email" name="email" type="email" autocomplete="email" placeholder="you@example.com" required><button class="btn" type="submit">Subscribe</button></div>
27
- <small>Unsubscribe any time. We never share your address.</small>
28
- </form>
29
- </cta-newsletter>
30
- ```
31
-
32
- Variants: `<cta-newsletter variant="dark">`.
33
-
34
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,8 +0,0 @@
1
- .c-cta-newsletter__inner{display:grid;gap:var(--space-6);align-items:center}
2
- @media(min-width:900px){.c-cta-newsletter__inner{grid-template-columns:1fr 1fr;gap:var(--space-8)}}
3
- .c-cta-newsletter__copy{display:grid;gap:var(--space-3)}
4
- .c-cta-newsletter__copy h2{font-size:var(--step-3)}
5
- .c-cta-newsletter__form form{display:grid;gap:var(--space-3)}
6
- .c-cta-newsletter__form .input-row .input{background:var(--color-surface)}
7
- .c-cta-newsletter__form small{color:var(--color-muted)}
8
- .c-cta-newsletter--dark{--color-bg:#141210;--color-text:#F7F4EF;--color-muted:#B8B0A4;--color-surface:#1E1B18;--color-surface-2:#2A2622;--color-border:#3A342E;--color-focus:#F7F4EF;background:var(--color-bg);color:var(--color-text)}
@@ -1 +0,0 @@
1
- <section class="c-cta-newsletter section section--muted"><div class="wrap c-cta-newsletter__inner"><div class="c-cta-newsletter__copy"><slot name="heading"></slot><slot name="lede"></slot></div><div class="c-cta-newsletter__form"><slot name="form"></slot></div></div></section>
@@ -1,36 +0,0 @@
1
- # cta-photo-fan
2
-
3
- Fanned polaroid photos over a centered closing CTA.
4
-
5
- - **Category:** cta
6
- - **Media:** 5 square photos
7
- - **Registers:** trade, beauty, food
8
- - **Variants:** muted
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `photos` | 5 square `<img>` (~480px), decorative |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` |
17
- | `actions` | 1–2 buttons |
18
-
19
- ## Example
20
-
21
- ```html
22
- <cta-photo-fan>
23
- <img src="/media/harvest/fan-1.jpg" alt="" width="480" height="480" slot="photos" loading="lazy">
24
- <img src="/media/harvest/fan-2.jpg" alt="" width="480" height="480" slot="photos" loading="lazy">
25
- <img src="/media/harvest/fan-3.jpg" alt="" width="480" height="480" slot="photos" loading="lazy">
26
- <img src="/media/harvest/fan-4.jpg" alt="" width="480" height="480" slot="photos" loading="lazy">
27
- <img src="/media/harvest/fan-5.jpg" alt="" width="480" height="480" slot="photos" loading="lazy">
28
- <h2 slot="heading">Done in days. Built for decades.</h2>
29
- <p slot="lede" class="lede">A licensed local crew, honest answers, and a 25-year warranty in writing — anywhere in Greater Portland.</p>
30
- <a slot="actions" class="btn btn-lg" href="/contact">Get a free estimate</a>
31
- </cta-photo-fan>
32
- ```
33
-
34
- Variants: `<cta-photo-fan variant="muted">`.
35
-
36
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,14 +0,0 @@
1
- .c-cta-photo-fan{overflow:hidden}
2
- .c-cta-photo-fan__inner{display:grid;gap:var(--space-7);justify-items:center}
3
- .c-cta-photo-fan__fan{display:flex;justify-content:center;align-items:flex-end;height:clamp(8rem,20vw,12rem)}
4
- .c-cta-photo-fan__fan img{width:clamp(6.5rem,16vw,10rem);height:auto;aspect-ratio:1;object-fit:cover;margin-inline:-.9rem;padding:.3rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-2);transform-origin:50% 120%}
5
- .c-cta-photo-fan__fan img:nth-child(1){transform:rotate(-16deg) translateY(1.4rem)}
6
- .c-cta-photo-fan__fan img:nth-child(2){transform:rotate(-8deg) translateY(.45rem);z-index:1}
7
- .c-cta-photo-fan__fan img:nth-child(3){z-index:2}
8
- .c-cta-photo-fan__fan img:nth-child(4){transform:rotate(8deg) translateY(.45rem);z-index:1}
9
- .c-cta-photo-fan__fan img:nth-child(5){transform:rotate(16deg) translateY(1.4rem)}
10
- .c-cta-photo-fan__copy{display:grid;gap:var(--space-4);justify-items:center;text-align:center;max-width:36rem}
11
- .c-cta-photo-fan__copy h2{font-size:var(--step-4)}
12
- .c-cta-photo-fan__copy .lede{text-align:center}
13
- .c-cta-photo-fan__copy .btn-group{justify-content:center;margin-top:var(--space-2)}
14
- .c-cta-photo-fan--muted{background:var(--color-surface-2)}
@@ -1 +0,0 @@
1
- <section class="c-cta-photo-fan section section--roomy"><div class="wrap c-cta-photo-fan__inner"><div class="c-cta-photo-fan__fan" aria-hidden="true"><slot name="photos"></slot></div><div class="c-cta-photo-fan__copy"><slot name="heading"></slot><slot name="lede"></slot><div class="btn-group"><slot name="actions"></slot></div></div></div></section>
@@ -1,38 +0,0 @@
1
- # cta-split
2
-
3
- CTA copy + form or phone block.
4
-
5
- - **Category:** cta
6
- - **Media:** optional
7
- - **Registers:** trade, professional
8
- - **Variants:** dark
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional eyebrow |
15
- | `heading` | `<h2>` |
16
- | `lede` | `<p class="lede">` |
17
- | `bullets` | Optional 2–3 `<li>` with check icon |
18
- | `panel` | Contents of the right-hand card: `<h3>`, phone button, hours — or a short `<form data-lead-form>` |
19
-
20
- ## Example
21
-
22
- ```html
23
- <cta-split>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Emergency repairs</p>
25
- <h2 slot="heading">Leaking right now? Call.</h2>
26
- <p slot="lede" class="lede">We keep one crew on call for active leaks. Tarping the same day, a permanent fix scheduled inside the week.</p>
27
- <li slot="bullets"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Same-day emergency tarping</li>
28
- <li slot="bullets"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>No after-hours surcharge for existing customers</li>
29
- <li slot="bullets"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Insurance photos and documentation included</li>
30
- <h3 slot="panel">Talk to a roofer now</h3>
31
- <a slot="panel" class="btn btn-lg" href="tel:+15550102000"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3h4l2 5-3 2a12 12 0 0 0 6 6l2-3 5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 4 5a2 2 0 0 1 2-2z"/></svg>(555) 010-2000</a>
32
- <small slot="panel">7 am – 9 pm, seven days. After hours, leave a message — we call back within the hour.</small>
33
- </cta-split>
34
- ```
35
-
36
- Variants: `<cta-split variant="dark">`.
37
-
38
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,10 +0,0 @@
1
- .c-cta-split__copy{display:grid;gap:var(--space-4)}
2
- .c-cta-split__copy h2{font-size:var(--step-4)}
3
- .c-cta-split__list:empty{display:none}
4
- .c-cta-split__panel{max-width:28rem;width:100%;justify-self:end}
5
- .c-cta-split__panel .card__body{padding:var(--space-6);gap:var(--space-4);text-align:center;justify-items:center}
6
- .c-cta-split__panel h3{font-size:var(--step-2)}
7
- .c-cta-split__panel .btn{width:100%}
8
- .c-cta-split__panel small{color:var(--color-muted)}
9
- .c-cta-split--dark{--color-bg:#141210;--color-text:#F7F4EF;--color-muted:#B8B0A4;--color-surface:#1E1B18;--color-surface-2:#2A2622;--color-border:#3A342E;--color-focus:#F7F4EF;background:var(--color-bg);color:var(--color-text)}
10
- .c-cta-split--dark .card{box-shadow:none}
@@ -1 +0,0 @@
1
- <section class="c-cta-split section"><div class="wrap split"><div class="c-cta-split__copy"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot><ul class="list-check c-cta-split__list"><slot name="bullets"></slot></ul></div><div class="card card--elevated c-cta-split__panel"><div class="card__body"><slot name="panel"></slot></div></div></div></section>
@@ -1,36 +0,0 @@
1
- # faq-accordion
2
-
3
- Default details/summary FAQ.
4
-
5
- - **Category:** faq
6
- - **Media:** none
7
- - **Registers:** all
8
- - **Variants:** two-col
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` |
17
- | `items` | 5–8 `<details>` with `<summary>` question and `<p>` answer |
18
-
19
- ## Example
20
-
21
- ```html
22
- <faq-accordion>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">FAQ</p>
24
- <h2 slot="heading">Questions we get on every estimate</h2>
25
- <p slot="lede" class="lede">Anything else? Call us — a person answers.</p>
26
- <details slot="items"><summary>How soon can you start?</summary><p>Repairs usually within the week. Full replacements book two to three weeks out in spring and fall, faster in summer.</p></details>
27
- <details slot="items"><summary>Do you offer financing?</summary><p>Yes — 12-month 0% and longer terms through our lending partner. Apply in five minutes; approval doesn't affect your credit score.</p></details>
28
- <details slot="items"><summary>Are you licensed and insured?</summary><p>Maine license #RC-20419, $2M general liability, and workers' comp on every employee. Certificates come with the estimate.</p></details>
29
- <details slot="items"><summary>What does the warranty cover?</summary><p>Ten years on our workmanship — any leak caused by installation, we fix free. Manufacturer warranties on materials run 30 years to lifetime.</p></details>
30
- <details slot="items"><summary>Will you clean up?</summary><p>Magnet sweep of the lawn and driveway twice a day, gutters cleared, and shingles hauled to a recycler, not a landfill.</p></details>
31
- </faq-accordion>
32
- ```
33
-
34
- Variants: `<faq-accordion variant="two-col">`.
35
-
36
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,6 +0,0 @@
1
- .c-faq-accordion__list{max-width:46rem;margin-inline:auto}
2
- @media(min-width:900px){
3
- .c-faq-accordion--two-col .c-faq-accordion__list{max-width:none;display:grid;grid-template-columns:1fr 1fr;gap:0 var(--space-8);border-top:0}
4
- .c-faq-accordion--two-col .c-faq-accordion__list details{border-top:1px solid var(--color-border);border-bottom:0}
5
- .c-faq-accordion--two-col .c-faq-accordion__list details:nth-last-child(-n+2){border-bottom:1px solid var(--color-border)}
6
- }
@@ -1 +0,0 @@
1
- <section class="c-faq-accordion section"><div class="wrap"><div class="section__head section__head--center"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="accordion c-faq-accordion__list"><slot name="items"></slot></div></div></section>
@@ -1,40 +0,0 @@
1
- # faq-grouped
2
-
3
- Grouped FAQ with a sticky jump-nav and optional rating card.
4
-
5
- - **Category:** faq
6
- - **Media:** none
7
- - **Registers:** trade, professional, b2b
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `nav` | One `<a href="#group-id">` per group |
18
- | `aside` | Optional `<div class="card card--flat">` (rating, phone) under the nav |
19
- | `groups` | 3–6 `<div id="group-id"><h3>Group</h3><div class="accordion"><details><summary>…</summary><p>…</p></details>…</div></div>` |
20
-
21
- ## Example
22
-
23
- ```html
24
- <faq-grouped>
25
- <p slot="eyebrow" class="eyebrow eyebrow--accent">FAQ</p>
26
- <h2 slot="heading">Common questions from homeowners.</h2>
27
- <p slot="lede" class="lede">Costs, timelines, insurance, warranties, and what to expect on install day — answered the way we'd explain it to a neighbour.</p>
28
- <a slot="nav" href="#faq-pricing">Estimates &amp; pricing</a>
29
- <a slot="nav" href="#faq-job">During the job</a>
30
- <a slot="nav" href="#faq-roof">Your roof, explained</a>
31
- <a slot="nav" href="#faq-warranty">Warranty &amp; after</a>
32
- <div slot="aside" class="card card--flat"><div class="card__body"><p class="stat__value">4.9</p><p><span class="rating" aria-label="5 out of 5 stars"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l2.6 5.3L20 9.2l-4 3.9.9 5.4L12 15.9 7.1 18.5 8 13.1 4 9.2l5.4-.9L12 3z"/></svg></span> from 1,200+ Google reviews</p></div></div>
33
- <div slot="groups" id="faq-pricing"><h3>Estimates &amp; pricing</h3><div class="accordion"><details open><summary>How much does an estimate cost?</summary><p>Nothing. We get on your roof, take photos, and give you a written estimate — whether or not you hire us.</p></details><details><summary>Do you offer financing?</summary><p>Yes — 0% for 18 months through a local credit union, or fixed-rate plans up to ten years.</p></details><details><summary>Do I have to be there for the estimate?</summary><p>No. We'll send the photos and the written quote the same day and talk it through by phone.</p></details></div></div>
34
- <div slot="groups" id="faq-job"><h3>During the job</h3><div class="accordion"><details><summary>Do I need to be home during the install?</summary><p>No. We need access to the driveway and an outdoor outlet — that's it.</p></details><details><summary>How long will my roof take?</summary><p>Most homes are one or two days. We'll give you a firm window in the estimate.</p></details><details><summary>What if it rains in the forecast?</summary><p>We don't open a roof we can't close the same day. If weather moves in, we reschedule and tell you first.</p></details></div></div>
35
- <div slot="groups" id="faq-roof"><h3>Your roof, explained</h3><div class="accordion"><details><summary>Why does my roof look wavy?</summary><p>Usually damp or delaminated decking. We check every sheet during tear-off and replace what's soft.</p></details><details><summary>What is underlayment, and do I need it?</summary><p>The water barrier under the shingles. Code requires it, and we use a synthetic that won't wrinkle or tear.</p></details></div></div>
36
- <div slot="groups" id="faq-warranty"><h3>Warranty &amp; after</h3><div class="accordion"><details><summary>What does the warranty actually cover?</summary><p>Twenty-five years on our workmanship, in writing, plus the manufacturer's material warranty. If a leak is our fault, we fix it for free.</p></details><details><summary>Does the warranty transfer if I sell?</summary><p>Yes, once, to the next owner — a selling point most buyers ask about.</p></details></div></div>
37
- </faq-grouped>
38
- ```
39
-
40
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,20 +0,0 @@
1
- .c-faq-grouped__grid{display:grid;gap:var(--space-6)}
2
- .c-faq-grouped__side{display:grid;gap:var(--space-5);align-content:start}
3
- .c-faq-grouped__nav{display:flex;flex-wrap:wrap;gap:var(--space-2)}
4
- .c-faq-grouped__nav a{display:inline-flex;align-items:center;min-height:2.25rem;padding:.3rem .9rem;border:1px solid var(--color-border);border-radius:var(--radius-pill);font-size:var(--step-0);color:var(--color-muted);text-decoration:none}
5
- .c-faq-grouped__nav a:hover{color:var(--color-text);border-color:var(--color-text)}
6
- .c-faq-grouped__aside{display:none}
7
- .c-faq-grouped__aside .card__body{gap:var(--space-1);padding:var(--space-5)}
8
- .c-faq-grouped__aside .stat__value{font-size:var(--step-4)}
9
- .c-faq-grouped__aside p{margin:0;font-size:var(--step-0)}
10
- .c-faq-grouped__groups{display:grid;gap:var(--space-7)}
11
- .c-faq-grouped__groups > div{scroll-margin-top:calc(var(--header-h) + var(--space-4))}
12
- .c-faq-grouped__groups h3{font-size:var(--step-2);margin-bottom:var(--space-3)}
13
- @media(min-width:900px){
14
- .c-faq-grouped__grid{grid-template-columns:minmax(0,14rem) minmax(0,1fr);gap:var(--space-9)}
15
- .c-faq-grouped__nav{display:grid;gap:0}
16
- .c-faq-grouped__nav a{min-height:0;padding:.45rem .85rem;border:0;border-left:2px solid var(--color-border);border-radius:0}
17
- .c-faq-grouped__nav a:hover{border-left-color:var(--color-text)}
18
- .c-faq-grouped__aside{display:block}
19
- .c-faq-grouped__aside:empty{display:none}
20
- }
@@ -1 +0,0 @@
1
- <section class="c-faq-grouped section"><div class="wrap"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="c-faq-grouped__grid"><div class="c-faq-grouped__side sticky-col"><nav class="c-faq-grouped__nav" aria-label="Question groups"><slot name="nav"></slot></nav><div class="c-faq-grouped__aside"><slot name="aside"></slot></div></div><div class="c-faq-grouped__groups"><slot name="groups"></slot></div></div></div></section>
@@ -1,37 +0,0 @@
1
- # faq-split
2
-
3
- FAQ beside contact CTA.
4
-
5
- - **Category:** faq
6
- - **Media:** none
7
- - **Registers:** trade, professional, b2b
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` |
17
- | `actions` | 1–2 buttons (call / contact) |
18
- | `items` | 4–6 `<details>` with `<summary>` + `<p>` |
19
-
20
- ## Example
21
-
22
- ```html
23
- <faq-split>
24
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Good to know</p>
25
- <h2 slot="heading">Before you book</h2>
26
- <p slot="lede" class="lede">Short answers to the things people ask on the first call.</p>
27
- <a slot="actions" class="btn" href="tel:+15550102000"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3h4l2 5-3 2a12 12 0 0 0 6 6l2-3 5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 4 5a2 2 0 0 1 2-2z"/></svg>(555) 010-2000</a>
28
- <a slot="actions" class="btn-outline" href="/contact">Send a message</a>
29
- <details slot="items"><summary>How soon can you start?</summary><p>Repairs usually within the week. Full replacements book two to three weeks out in spring and fall, faster in summer.</p></details>
30
- <details slot="items"><summary>Do you offer financing?</summary><p>Yes — 12-month 0% and longer terms through our lending partner. Apply in five minutes; approval doesn't affect your credit score.</p></details>
31
- <details slot="items"><summary>Are you licensed and insured?</summary><p>Maine license #RC-20419, $2M general liability, and workers' comp on every employee. Certificates come with the estimate.</p></details>
32
- <details slot="items"><summary>What does the warranty cover?</summary><p>Ten years on our workmanship — any leak caused by installation, we fix free. Manufacturer warranties on materials run 30 years to lifetime.</p></details>
33
- <details slot="items"><summary>Will you clean up?</summary><p>Magnet sweep of the lawn and driveway twice a day, gutters cleared, and shingles hauled to a recycler, not a landfill.</p></details>
34
- </faq-split>
35
- ```
36
-
37
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,5 +0,0 @@
1
- .c-faq-split__copy .section__head{margin-bottom:var(--space-5)}
2
- @media(min-width:720px){.c-faq-split .split{grid-template-columns:2fr 3fr}.c-faq-split__copy{position:sticky;top:calc(var(--header-h) + var(--space-5))}}
3
- .c-faq-split__card{padding:0 var(--space-6)}
4
- .c-faq-split__list{border-top:0}
5
- .c-faq-split__list details:last-child{border-bottom:0}
@@ -1 +0,0 @@
1
- <section class="c-faq-split section section--muted"><div class="wrap split split--top"><div class="c-faq-split__copy"><div class="section__head"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="btn-group"><slot name="actions"></slot></div></div><div class="card c-faq-split__card"><div class="accordion c-faq-split__list"><slot name="items"></slot></div></div></div></section>
@@ -1,36 +0,0 @@
1
- # faq-tabs
2
-
3
- Categorized FAQ tabs.
4
-
5
- - **Category:** faq
6
- - **Media:** none
7
- - **Registers:** b2b, professional
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` |
17
- | `tabs` | A `.tabs__list.tabs__list--pill[role=tablist]`, then one `.tabs__panel[role=tabpanel]` per category, each containing an `.accordion` of `<details>` |
18
-
19
- ## Example
20
-
21
- ```html
22
- <faq-tabs>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">Help center</p>
24
- <h2 slot="heading">Answers by topic</h2>
25
- <div slot="tabs" class="tabs__list tabs__list--pill" role="tablist">
26
- <button type="button" class="tabs__tab" role="tab" id="fq-1" aria-controls="fq-p1" aria-selected="true">Billing</button>
27
- <button type="button" class="tabs__tab" role="tab" id="fq-2" aria-controls="fq-p2" aria-selected="false">Onboarding</button>
28
- <button type="button" class="tabs__tab" role="tab" id="fq-3" aria-controls="fq-p3" aria-selected="false">Security</button>
29
- </div>
30
- <div slot="tabs" class="tabs__panel" role="tabpanel" id="fq-p1" aria-labelledby="fq-1"><div class="accordion"><details><summary>When am I billed?</summary><p>On the 1st of each month for that month. Annual plans are billed once, up front, with the 15% discount applied.</p></details><details><summary>Can I change plans mid-month?</summary><p>Yes. Upgrades apply immediately and are prorated; downgrades take effect at the next billing date.</p></details><details><summary>Is there a setup fee?</summary><p>No setup fee. Catch-up bookkeeping for prior months is quoted separately if you need it.</p></details></div></div>
31
- <div slot="tabs" class="tabs__panel" role="tabpanel" id="fq-p2" aria-labelledby="fq-2" hidden><div class="accordion"><details><summary>What do you need from me to start?</summary><p>Read-only bank and credit card feeds, your last tax return, and payroll access. Most owners finish intake in under an hour.</p></details><details><summary>How long until my first close?</summary><p>Four weeks from intake for a clean set of books; longer if we're cleaning up prior years.</p></details></div></div>
32
- <div slot="tabs" class="tabs__panel" role="tabpanel" id="fq-p3" aria-labelledby="fq-3" hidden><div class="accordion"><details><summary>Do you have access to move money?</summary><p>Never. All bank connections are read-only, and we don't hold check-signing authority.</p></details><details><summary>Where is my data stored?</summary><p>In your own accounting system. We work inside your books; nothing is copied to ours.</p></details></div></div>
33
- </faq-tabs>
34
- ```
35
-
36
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,3 +0,0 @@
1
- .c-faq-tabs__tabs{justify-items:center;max-width:46rem;margin-inline:auto}
2
- .c-faq-tabs__tabs .tabs__panel{width:100%}
3
- .c-faq-tabs__tabs .accordion{margin-top:var(--space-2)}
@@ -1 +0,0 @@
1
- <section class="c-faq-tabs section"><div class="wrap"><div class="section__head section__head--center"><slot name="eyebrow"></slot><slot name="heading"></slot><slot name="lede"></slot></div><div class="tabs c-faq-tabs__tabs" data-island="tabs"><slot name="tabs"></slot></div></div></section>
@@ -1,33 +0,0 @@
1
- # feature-bento
2
-
3
- Mixed-span bento feature board.
4
-
5
- - **Category:** feature
6
- - **Media:** mixed media tiles
7
- - **Registers:** b2b, beauty, food
8
- - **Variants:** (none)
9
-
10
- ## Slots
11
-
12
- | Slot | Content |
13
- |------|---------|
14
- | `eyebrow` | Optional `<p class="eyebrow">` |
15
- | `heading` | `<h2>` |
16
- | `lede` | Optional `<p class="lede">` (one sentence) |
17
- | `tiles` | 4–6 `.card` tiles using `bento__wide` / `bento__narrow` / `bento__tall`; mix one media tile, one stat, and copy tiles |
18
-
19
- ## Example
20
-
21
- ```html
22
- <feature-bento>
23
- <p slot="eyebrow" class="eyebrow eyebrow--accent">How we work</p>
24
- <h2 slot="heading">One team from estimate to final walkthrough.</h2>
25
- <p slot="lede" class="lede">No subcontractor roulette — the crew that quotes the job is the crew that shows up.</p>
26
- <article slot="tiles" class="card bento__wide"><div class="card__media"><img src="/media/harvest/crew.jpg" alt="Our crew on a Cape Elizabeth job site" width="1600" height="900" loading="lazy"></div><div class="card__body"><h3>One crew, start to finish</h3><p>Eight employees, zero subcontractors. The foreman who quotes the job runs the job.</p></div></article>
27
- <div slot="tiles" class="card card--flat bento__narrow"><div class="card__body"><div class="stat"><p class="stat__value">48h</p><p class="stat__label">Written estimate turnaround</p></div></div></div>
28
- <div slot="tiles" class="card bento__narrow"><div class="card__body"><span class="icon-tile"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3 4 6v6c0 5 3.5 8.5 8 9 4.5-.5 8-4 8-9V6l-8-3z"/><path d="m9 12 2 2 4-4"/></svg></span><h3>Insured to $2M</h3><p>Certificates included with every estimate.</p></div></div>
29
- <div slot="tiles" class="card bento__wide"><div class="card__body"><h3>Everything in writing</h3><p>Materials by brand and line, a start window, and a fixed price.</p><ul class="list-check"><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Fixed-price contract</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Daily photo updates</li><li><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>Final walkthrough checklist</li></ul></div></div>
30
- </feature-bento>
31
- ```
32
-
33
- Copy this folder into the site repo as `components/<your-name>/`, rename the root class to `c-<your-name>`, and adapt slots, copy, and media.
@@ -1,7 +0,0 @@
1
- .c-feature-bento__grid{gap:var(--space-4)}
2
- @media(max-width:719px){.c-feature-bento__grid{grid-template-columns:1fr}.c-feature-bento__grid > *{grid-column:auto}}
3
- .c-feature-bento__grid .card{height:100%}
4
- .c-feature-bento__grid .card__body{padding:var(--space-6);gap:var(--space-3)}
5
- .c-feature-bento__grid .card__media{aspect-ratio:16/9}
6
- .c-feature-bento__grid .stat__value{font-size:var(--step-5)}
7
- .c-feature-bento__grid .list-check{margin-top:var(--space-2)}