howone 0.1.29 → 0.1.30

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 (219) hide show
  1. package/package.json +1 -1
  2. package/templates/vite/.howone/skills/hallmark/SKILL.md +48 -42
  3. package/templates/vite/.howone/skills/hallmark/references/anti-patterns.md +12 -6
  4. package/templates/vite/.howone/skills/hallmark/references/assets.md +7 -0
  5. package/templates/vite/.howone/skills/hallmark/references/component-cookbook.md +19 -10
  6. package/templates/vite/.howone/skills/hallmark/references/components/f2-sticky-scroll-stack.md +1 -1
  7. package/templates/vite/.howone/skills/hallmark/references/components/ft6-letter-close.md +1 -1
  8. package/templates/vite/.howone/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +1 -1
  9. package/templates/vite/.howone/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +1 -1
  10. package/templates/vite/.howone/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +1 -1
  11. package/templates/vite/.howone/skills/hallmark/references/components/n11-mega-menu.md +40 -0
  12. package/templates/vite/.howone/skills/hallmark/references/components/n12-banner-retract.md +34 -0
  13. package/templates/vite/.howone/skills/hallmark/references/components/n13-inline-cmdk-pill.md +39 -0
  14. package/templates/vite/.howone/skills/hallmark/references/components/n1b-saas-three-section.md +35 -0
  15. package/templates/vite/.howone/skills/hallmark/references/components/n9-edge-aligned-minimal.md +1 -1
  16. package/templates/vite/.howone/skills/hallmark/references/components/s3-sticky-pinned.md +2 -2
  17. package/templates/vite/.howone/skills/hallmark/references/copy.md +8 -8
  18. package/templates/vite/.howone/skills/hallmark/references/custom-craft.md +2 -2
  19. package/templates/vite/.howone/skills/hallmark/references/custom-theme.md +50 -12
  20. package/templates/vite/.howone/skills/hallmark/references/export-formats.md +1 -1
  21. package/templates/vite/.howone/skills/hallmark/references/genres/atmospheric.md +11 -7
  22. package/templates/vite/.howone/skills/hallmark/references/genres/editorial.md +6 -4
  23. package/templates/vite/.howone/skills/hallmark/references/genres/modern-minimal.md +10 -6
  24. package/templates/vite/.howone/skills/hallmark/references/genres/playful.md +15 -10
  25. package/templates/vite/.howone/skills/hallmark/references/hero-enrichment.md +13 -12
  26. package/templates/vite/.howone/skills/hallmark/references/interaction-and-states.md +2 -1
  27. package/templates/vite/.howone/skills/hallmark/references/layout-and-space.md +4 -3
  28. package/templates/vite/.howone/skills/hallmark/references/macrostructures/04-stat-led.md +3 -1
  29. package/templates/vite/.howone/skills/hallmark/references/macrostructures/12-letter.md +1 -1
  30. package/templates/vite/.howone/skills/hallmark/references/macrostructures.md +1 -1
  31. package/templates/vite/.howone/skills/hallmark/references/microinteractions.md +1 -3
  32. package/templates/vite/.howone/skills/hallmark/references/preview-examples.md +12 -12
  33. package/templates/vite/.howone/skills/hallmark/references/responsive.md +8 -8
  34. package/templates/vite/.howone/skills/hallmark/references/slop-test.md +72 -85
  35. package/templates/vite/.howone/skills/hallmark/references/structure.md +9 -13
  36. package/templates/vite/.howone/skills/hallmark/references/study.md +40 -17
  37. package/templates/vite/.howone/skills/hallmark/references/themes/carnival.md +301 -0
  38. package/templates/vite/.howone/skills/hallmark/references/themes/cobalt.md +146 -0
  39. package/templates/vite/.howone/skills/hallmark/references/themes/hum.md +403 -0
  40. package/templates/vite/.howone/skills/hallmark/references/themes/lumen.md +478 -0
  41. package/templates/vite/.howone/skills/hallmark/references/typography.md +3 -3
  42. package/templates/vite/.howone/skills/hallmark/references/verbs/redesign.md +1 -1
  43. package/templates/vite/.howone/skills/hallmark/LICENSE +0 -21
  44. package/templates/vite/.howone/skills/hallmark/README.md +0 -147
  45. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
  46. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
  47. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  48. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  49. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  50. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  51. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  52. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  53. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  54. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  55. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
  56. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
  57. package/templates/vite/.howone/skills/hallmark/package.json +0 -36
  58. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  59. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
  60. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
  61. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
  62. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
  63. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
  64. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
  65. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
  66. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
  67. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
  68. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
  69. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
  70. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
  71. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
  72. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
  73. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
  74. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
  75. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
  76. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
  77. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
  78. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
  79. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
  80. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
  81. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
  82. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
  83. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
  84. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
  85. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
  86. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
  87. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
  88. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
  89. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  90. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  91. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  92. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  93. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  94. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  95. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  96. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  97. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  98. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  99. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  100. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  101. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  102. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  103. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  104. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  105. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  106. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  107. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  108. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  109. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  110. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  111. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  112. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
  113. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
  114. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
  115. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
  131. package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
  132. package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
  133. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
  134. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
  135. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
  136. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
  137. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
  138. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
  139. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
  140. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
  141. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
  142. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
  143. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
  144. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
  145. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
  146. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
  147. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
  148. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
  149. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
  150. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
  151. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
  152. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
  153. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
  154. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
  155. package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
  156. package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
  157. package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
  158. package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
  159. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
  160. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
  161. package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
  162. package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
  163. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
  164. package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
  165. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
  166. package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
  167. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
  168. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
  169. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
  170. package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
  171. package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
  172. package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
  173. package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
  174. package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
  175. package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
  176. package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
  177. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
  178. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
  179. package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
  180. package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
  181. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
  182. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
  183. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
  184. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
  185. package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
  186. package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
  187. package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
  188. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
  189. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
  190. package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
  191. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
  192. package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
  193. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
  194. package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
  195. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
  196. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  197. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
  198. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
  199. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
  200. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
  201. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
  202. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
  203. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
  204. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
  205. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
  206. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
  207. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
  208. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
  209. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
  210. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
  211. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
  212. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
  213. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
  214. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
  215. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
  216. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
  217. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
  218. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  219. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
@@ -1,250 +0,0 @@
1
- /* Hallmark · macrostructure: Long Document · H5 hero knobs: salutation=command, body=2 paragraphs, signoff=mit-license
2
- * theme: Terminal · accent: phosphor-green ~6% (functional, not decorative)
3
- * enrichment: Tier-A inline CSS-art terminal blocks (no sticky pin, no Lottie)
4
- * studied: no · context: explicit · v0.6.0
5
- */
6
-
7
- :root {
8
- --color-paper: oklch(13% 0.020 150);
9
- --color-paper-2: oklch(17% 0.022 150);
10
- --color-rule: oklch(28% 0.025 150);
11
- --color-ink: oklch(86% 0.040 150);
12
- --color-ink-soft: oklch(62% 0.040 150);
13
- --color-accent: oklch(82% 0.20 150);
14
- --color-accent-dim: oklch(58% 0.16 150);
15
- --color-amber: oklch(78% 0.18 80);
16
-
17
- --font-mono: "IBM Plex Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
18
-
19
- --space-3xs: 0.25rem;
20
- --space-2xs: 0.5rem;
21
- --space-xs: 0.75rem;
22
- --space-sm: 1rem;
23
- --space-md: 1.5rem;
24
- --space-lg: 2rem;
25
- --space-xl: 3rem;
26
- --space-2xl: 4.5rem;
27
- --space-3xl: 6.5rem;
28
-
29
- --measure-prose: 64ch;
30
-
31
- --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
32
- --dur-micro: 100ms;
33
- }
34
-
35
- * { box-sizing: border-box; }
36
-
37
- html, body { overflow-x: clip; }
38
-
39
- body {
40
- margin: 0;
41
- background: var(--color-paper);
42
- color: var(--color-ink);
43
- font-family: var(--font-mono);
44
- font-size: 0.9375rem;
45
- line-height: 1.6;
46
- -webkit-font-smoothing: antialiased;
47
- }
48
-
49
- .page {
50
- max-width: 56rem;
51
- margin: 0 auto;
52
- padding: var(--space-2xl) var(--space-lg) var(--space-3xl);
53
- }
54
-
55
- /* Masthead */
56
- .masthead {
57
- display: flex;
58
- justify-content: space-between;
59
- align-items: center;
60
- border-block-end: 1px solid var(--color-rule);
61
- padding-block-end: var(--space-sm);
62
- margin-block-end: var(--space-2xl);
63
- font-size: 0.8125rem;
64
- text-transform: uppercase;
65
- letter-spacing: 0.06em;
66
- color: var(--color-ink-soft);
67
- }
68
-
69
- .masthead__brand { color: var(--color-accent); }
70
- .masthead__meta { font-variant-numeric: tabular-nums; }
71
-
72
- /* Lede — the salutation-as-command */
73
- .lede {
74
- font-size: clamp(1.25rem, 2.2vw, 1.75rem);
75
- line-height: 1.4;
76
- margin: 0 0 var(--space-xl);
77
- color: var(--color-ink);
78
- max-width: var(--measure-prose);
79
- }
80
-
81
- .lede__prompt {
82
- color: var(--color-accent);
83
- margin-inline-end: 0.5ch;
84
- }
85
-
86
- .lede__caret {
87
- display: inline-block;
88
- width: 0.55ch;
89
- height: 1.15em;
90
- background: var(--color-accent);
91
- vertical-align: -0.18em;
92
- margin-inline-start: 0.15em;
93
- animation: caret 1s steps(2, jump-none) infinite;
94
- }
95
-
96
- @keyframes caret {
97
- 0%, 50% { opacity: 1; }
98
- 50.01%, 100% { opacity: 0; }
99
- }
100
-
101
- @media (prefers-reduced-motion: reduce) {
102
- .lede__caret { animation: none; opacity: 0.7; }
103
- }
104
-
105
- /* Body prose */
106
- .prose {
107
- max-width: var(--measure-prose);
108
- font-size: 0.9375rem;
109
- line-height: 1.7;
110
- }
111
-
112
- .prose p {
113
- margin: 0 0 var(--space-md);
114
- color: var(--color-ink);
115
- }
116
-
117
- .prose strong { color: var(--color-accent); font-weight: 500; }
118
-
119
- .prose a {
120
- color: var(--color-accent);
121
- text-decoration: underline;
122
- text-decoration-color: var(--color-accent-dim);
123
- text-underline-offset: 3px;
124
- transition: text-decoration-color var(--dur-micro) var(--ease-out);
125
- }
126
-
127
- .prose a:hover, .prose a:focus-visible {
128
- text-decoration-color: var(--color-accent);
129
- }
130
-
131
- .prose a:focus-visible {
132
- outline: 2px solid var(--color-accent);
133
- outline-offset: 3px;
134
- }
135
-
136
- /* Inline terminal blocks */
137
- .term {
138
- background: var(--color-paper-2);
139
- border: 1px solid var(--color-rule);
140
- border-radius: 4px;
141
- padding: var(--space-md);
142
- margin: var(--space-lg) 0;
143
- font-size: 0.875rem;
144
- line-height: 1.55;
145
- overflow-x: auto;
146
- position: relative;
147
- }
148
-
149
- .term__line { display: block; white-space: pre; color: var(--color-ink); }
150
- .term__line .term__prompt { color: var(--color-accent); }
151
- .term__line .term__flag { color: var(--color-amber); }
152
- .term__line .term__comment { color: var(--color-ink-soft); }
153
- .term__line.term__line--out { color: var(--color-ink-soft); }
154
-
155
- /* Section headings */
156
- .section {
157
- margin-block-start: var(--space-2xl);
158
- padding-block-start: var(--space-md);
159
- border-block-start: 1px solid var(--color-rule);
160
- }
161
-
162
- .section__head {
163
- display: flex;
164
- justify-content: space-between;
165
- align-items: baseline;
166
- margin: 0 0 var(--space-md);
167
- font-size: 0.8125rem;
168
- text-transform: uppercase;
169
- letter-spacing: 0.08em;
170
- color: var(--color-ink-soft);
171
- }
172
-
173
- .section__num {
174
- color: var(--color-accent);
175
- font-weight: 500;
176
- }
177
-
178
- /* Numbered note rows (How it works) */
179
- .notes { display: grid; gap: var(--space-md); }
180
- .note {
181
- display: grid;
182
- grid-template-columns: 4ch 1fr;
183
- gap: var(--space-md);
184
- align-items: baseline;
185
- }
186
- .note__num {
187
- color: var(--color-accent);
188
- font-variant-numeric: tabular-nums;
189
- }
190
- .note__body {
191
- color: var(--color-ink);
192
- max-width: var(--measure-prose);
193
- }
194
- .note__body strong { color: var(--color-accent); font-weight: 500; }
195
-
196
- /* Flag spec table */
197
- .flags {
198
- width: 100%;
199
- border-collapse: collapse;
200
- font-size: 0.8125rem;
201
- }
202
- .flags th, .flags td {
203
- text-align: start;
204
- padding: var(--space-2xs) var(--space-sm) var(--space-2xs) 0;
205
- border-block-end: 1px solid var(--color-rule);
206
- vertical-align: baseline;
207
- }
208
- .flags th {
209
- font-weight: 500;
210
- color: var(--color-ink-soft);
211
- text-transform: uppercase;
212
- letter-spacing: 0.06em;
213
- }
214
- .flags td:first-child { color: var(--color-accent); width: 18ch; }
215
-
216
- /* Colophon */
217
- .colophon {
218
- margin-block-start: var(--space-3xl);
219
- padding-block-start: var(--space-md);
220
- border-block-start: 1px solid var(--color-rule);
221
- display: flex;
222
- flex-wrap: wrap;
223
- gap: var(--space-md) var(--space-xl);
224
- font-size: 0.8125rem;
225
- text-transform: uppercase;
226
- letter-spacing: 0.06em;
227
- color: var(--color-ink-soft);
228
- }
229
-
230
- .colophon a {
231
- color: var(--color-ink-soft);
232
- text-decoration: none;
233
- transition: color var(--dur-micro) var(--ease-out);
234
- }
235
-
236
- .colophon a:hover, .colophon a:focus-visible {
237
- color: var(--color-accent);
238
- }
239
-
240
- .colophon a:focus-visible {
241
- outline: 2px solid var(--color-accent);
242
- outline-offset: 3px;
243
- }
244
-
245
- /* Mobile */
246
- @media (max-width: 40rem) {
247
- .page { padding: var(--space-xl) var(--space-md) var(--space-2xl); }
248
- .lede { font-size: 1.125rem; }
249
- .note { grid-template-columns: 3ch 1fr; gap: var(--space-sm); }
250
- }
@@ -1,64 +0,0 @@
1
- # Test 03 v2 — Maple Street Bread (artisan bakery)
2
-
3
- ## The prompt (verbatim, same as v1)
4
-
5
- > "Landing page for Maple Street Bread. Audience: locals who want to buy bread. Use: see what's available + visit. Tone: warm, hand-set, considered."
6
-
7
- ## Step 0 · Pre-flight
8
-
9
- > *"No pre-flight signals — proceeding with full Hallmark stack."*
10
-
11
- ## Step 1 · Design-context gate — fully answered
12
-
13
- Audience, use, tone all explicit.
14
-
15
- ## Step 2.5 · Project memory rotation
16
-
17
- > *"Previous run on this brief picked Long Document + Linen + Tier-B SVG loaf. Picking from {Catalogue, Photographic, Letter} this time — Catalogue wins because the brief says 'see what's available' (the user is shopping a board, not reading a story)."*
18
- >
19
- > *"Theme rotation: Linen (light · geometric-sans · warm-amber) → Almanac (light · roman-serif · warm-amber). Differs on display style. Passes."*
20
-
21
- ## Step 3 · Visual ruleset loaded
22
-
23
- `macrostructures.md` (Catalogue), `component-cookbook.md` (item-card archetypes, market-board headings), `typography.md` (Almanac pairing — IM Fell Display + Source Serif body), `color.md` (warm parchment palette), `microinteractions.md` (single primitive: hover line-rule on item rows), `anti-patterns.md`.
24
-
25
- ## Step 4 · Hero enrichment
26
-
27
- > *"Enrichment: Tier-A pure-CSS bread silhouettes per item. Each row has a small (96 px) hand-drawn loaf shape rendered as inline SVG with a single accent stroke. No photography (raw bread photos read as Midjourney). No Lottie. Eight breads × eight tiny SVGs = ~140 lines of inline SVG total."*
28
-
29
- ## Step 5 · Preview
30
-
31
- ```markdown
32
- **Hallmark · v0.6.0**
33
-
34
- - **Macrostructure** · Catalogue
35
- - **Theme** · Almanac (warm parchment paper · IM Fell Display roman-serif · warm-amber accent ~3%)
36
- - **Enrichment** · Tier-A pure-CSS / inline-SVG bread silhouettes (one per item, 96px)
37
- - **Sections** · Masthead · Today's bake (8-item catalogue grid) · Visit · Colophon
38
- - **Motion** · row hover-rule (1 primitive)
39
- - **Slop test** · 38 / 38 ✓
40
- - **Diversification** · differs from v1 (Long Document/Linen) on macrostructure + display style
41
- ```
42
-
43
- ## Step 6 · Macrostructure stamp
44
-
45
- ```
46
- /* Hallmark · macrostructure: Catalogue · F1 catalogue knobs: tiles=8, columns=2, rule=hairline-between
47
- * theme: Almanac · accent: warm-amber ~3% · enrichment: tier-A inline SVG bread silhouettes
48
- * studied: no · context: explicit · v0.6.0
49
- */
50
- ```
51
-
52
- ## What changed vs v1
53
-
54
- - **Macro:** Long Document → Catalogue. v1 was a prose-led page with the menu as a quiet aside; v2 makes the menu the hero. The brief says "see what's available + visit" — Catalogue answers it more directly.
55
- - **Theme:** Linen → Almanac. Both warm-paper, both light. Linen is geometric-sans display; Almanac is roman-serif display (IM Fell, period almanac feel). Display style differs.
56
- - **Enrichment:** v1's single hand-built loaf with a `@property --rise` breathing loop becomes eight smaller item-level silhouettes, no animation. The page is busier, which Catalogue can carry; the v1 page would have been overloaded.
57
- - **Voice:** v1 opened with a time-stamped salutation ("Saturday, 6:14 a.m."); v2 opens with a market-board "Today's bake" with date and a count.
58
-
59
- ## What stayed the same
60
-
61
- - Brand: Maple Street Bread, Lisbon.
62
- - Tier-A/B custom-craft (no Lottie, no Midjourney).
63
- - Slop test: 38 / 38 ✓.
64
- - Footer: visit and hours (no online ordering — same as the brief).
@@ -1,131 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Maple Street Bread — daily catalogue</title>
7
- <meta name="description" content="A small artisan bakery in Lisbon. Sourdough, slow, by hand. Open at seven, thirty loaves, gone by noon, no online orders." />
8
- <link rel="preconnect" href="https://fonts.googleapis.com" />
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
- <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IM+Fell+English+SC&family=IM+Fell+English:ital@0;1&family=Source+Serif+4:ital,wght@0,400;0,500;1,400&display=swap" />
11
- <link rel="stylesheet" href="style.css" />
12
- </head>
13
- <body>
14
- <main class="page">
15
- <header class="masthead">
16
- <hr class="masthead__rule" />
17
- <h1 class="masthead__brand">Maple Street Bread</h1>
18
- <p class="masthead__sub">Lisbon · est. 2026 · n.º 47 · sourdough <strong>by hand</strong></p>
19
- </header>
20
-
21
- <section class="todays">
22
- <h2 class="todays__head">Today's bake</h2>
23
- <p class="todays__date">Saturday — 6:14 a.m. — eight breads, gone by noon</p>
24
- </section>
25
-
26
- <ul class="catalogue" role="list" aria-label="Today's breads">
27
- <!-- 1 -->
28
- <li class="bread">
29
- <span class="bread__shape bread__shape--accent" aria-hidden="true">
30
- <svg viewBox="0 0 96 96"><ellipse cx="48" cy="52" rx="36" ry="22"/><path d="M22 50 q12 -16 26 -16 t26 16"/><path d="M30 50 q4 -8 18 -8" /></svg>
31
- </span>
32
- <div class="bread__body">
33
- <h3 class="bread__name">Country sourdough</h3>
34
- <p class="bread__desc">Wild starter, 80 % white, 20 % wholewheat, twenty-four hour cold proof.</p>
35
- </div>
36
- <span class="bread__price">€5.50</span>
37
- </li>
38
- <!-- 2 -->
39
- <li class="bread">
40
- <span class="bread__shape" aria-hidden="true">
41
- <svg viewBox="0 0 96 96"><path d="M14 48 L82 48 M14 48 q4 -10 8 0 M30 48 q4 -10 8 0 M46 48 q4 -10 8 0 M62 48 q4 -10 8 0"/><ellipse cx="48" cy="48" rx="38" ry="6"/></svg>
42
- </span>
43
- <div class="bread__body">
44
- <h3 class="bread__name">Baguette tradition</h3>
45
- <p class="bread__desc">T65 flour, four hours bulk, scored deep. Two per customer.</p>
46
- </div>
47
- <span class="bread__price">€2.80</span>
48
- </li>
49
- <!-- 3 -->
50
- <li class="bread">
51
- <span class="bread__shape" aria-hidden="true">
52
- <svg viewBox="0 0 96 96"><rect x="20" y="32" width="56" height="32" rx="4"/><circle cx="34" cy="44" r="2"/><circle cx="48" cy="40" r="2"/><circle cx="62" cy="48" r="2"/><circle cx="42" cy="56" r="2"/><circle cx="58" cy="52" r="2"/></svg>
53
- </span>
54
- <div class="bread__body">
55
- <h3 class="bread__name">Focaccia, rosemary</h3>
56
- <p class="bread__desc">Twenty-eight squares, olive oil, sea-salt, herb from the garden behind.</p>
57
- </div>
58
- <span class="bread__price">€4.20</span>
59
- </li>
60
- <!-- 4 -->
61
- <li class="bread">
62
- <span class="bread__shape bread__shape--accent" aria-hidden="true">
63
- <svg viewBox="0 0 96 96"><circle cx="48" cy="48" r="32"/><circle cx="48" cy="48" r="20"/><path d="M48 16 L48 80 M16 48 L80 48"/></svg>
64
- </span>
65
- <div class="bread__body">
66
- <h3 class="bread__name">Boule, miche</h3>
67
- <p class="bread__desc">A 2 kg round, kept overnight, eats for three meals. Slice across the grain.</p>
68
- </div>
69
- <span class="bread__price">€11.00</span>
70
- </li>
71
- <!-- 5 -->
72
- <li class="bread">
73
- <span class="bread__shape" aria-hidden="true">
74
- <svg viewBox="0 0 96 96"><path d="M16 56 q16 -32 32 -32 t32 32"/><path d="M22 50 L32 50 M40 44 L50 44 M58 48 L68 48"/></svg>
75
- </span>
76
- <div class="bread__body">
77
- <h3 class="bread__name">Rye, dark</h3>
78
- <p class="bread__desc">100 % rye, no wheat. Caraway and treacle. Keeps a week, slices thin.</p>
79
- </div>
80
- <span class="bread__price">€6.20</span>
81
- </li>
82
- <!-- 6 -->
83
- <li class="bread">
84
- <span class="bread__shape" aria-hidden="true">
85
- <svg viewBox="0 0 96 96"><path d="M20 50 q14 -20 28 -20 t28 20" /><path d="M20 50 q14 18 28 18 t28 -18"/><path d="M48 30 L48 68"/></svg>
86
- </span>
87
- <div class="bread__body">
88
- <h3 class="bread__name">Brioche feuilletée</h3>
89
- <p class="bread__desc">Laminated brioche, Friday only. Six per bake.</p>
90
- </div>
91
- <span class="bread__price bread__price--out">sold out</span>
92
- </li>
93
- <!-- 7 -->
94
- <li class="bread">
95
- <span class="bread__shape bread__shape--accent" aria-hidden="true">
96
- <svg viewBox="0 0 96 96"><path d="M16 70 L48 24 L80 70 Z"/><path d="M30 70 L48 44 L66 70"/></svg>
97
- </span>
98
- <div class="bread__body">
99
- <h3 class="bread__name">Walnut levain</h3>
100
- <p class="bread__desc">Sourdough, eight per cent walnut, baked dark. Cheese-board bread.</p>
101
- </div>
102
- <span class="bread__price">€7.40</span>
103
- </li>
104
- <!-- 8 -->
105
- <li class="bread">
106
- <span class="bread__shape" aria-hidden="true">
107
- <svg viewBox="0 0 96 96"><circle cx="32" cy="48" r="14"/><circle cx="64" cy="48" r="14"/><path d="M32 34 L32 62 M64 34 L64 62"/></svg>
108
- </span>
109
- <div class="bread__body">
110
- <h3 class="bread__name">Bola d'óleo, twins</h3>
111
- <p class="bread__desc">Two small soft rolls, olive oil, salt-flaked. Sold paired.</p>
112
- </div>
113
- <span class="bread__price">€3.00</span>
114
- </li>
115
- </ul>
116
-
117
- <section class="visit">
118
- <h2 class="visit__head">Visit</h2>
119
- <div class="visit__lines">
120
- <span><strong>Rua dos Anjos 92, Lisbon</strong></span>
121
- <span><em>Tuesday – Saturday, 7 a.m. until the loaves are gone (usually noon)</em></span>
122
- <span><em>No online orders. Bring a bag.</em></span>
123
- </div>
124
- </section>
125
-
126
- <footer class="colophon">
127
- <span>Maple Street · Saturday, May the first · the year twenty twenty-six</span>
128
- </footer>
129
- </main>
130
- </body>
131
- </html>
@@ -1,240 +0,0 @@
1
- /* Hallmark · macrostructure: Catalogue · F1 catalogue knobs: tiles=8, columns=2, rule=hairline-between
2
- * theme: Almanac · accent: warm-amber ~3% · enrichment: tier-A inline SVG bread silhouettes
3
- * studied: no · context: explicit · v0.6.0
4
- */
5
-
6
- :root {
7
- --color-paper: oklch(94% 0.022 80);
8
- --color-paper-2: oklch(91% 0.024 80);
9
- --color-ink: oklch(24% 0.020 50);
10
- --color-ink-soft: oklch(40% 0.020 55);
11
- --color-rule: oklch(78% 0.020 70);
12
- --color-accent: oklch(58% 0.14 50);
13
-
14
- --font-display: "IM Fell English SC", "IM Fell English", "EB Garamond", "Cormorant Garamond", Georgia, serif;
15
- --font-body: "Source Serif 4", "Iowan Old Style", Georgia, serif;
16
-
17
- --space-3xs: 0.25rem;
18
- --space-2xs: 0.5rem;
19
- --space-xs: 0.75rem;
20
- --space-sm: 1rem;
21
- --space-md: 1.5rem;
22
- --space-lg: 2rem;
23
- --space-xl: 3rem;
24
- --space-2xl: 4.5rem;
25
- --space-3xl: 6.5rem;
26
-
27
- --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
28
- --dur-micro: 140ms;
29
- }
30
-
31
- * { box-sizing: border-box; }
32
- html, body { overflow-x: clip; }
33
-
34
- body {
35
- margin: 0;
36
- background: var(--color-paper);
37
- background-image:
38
- radial-gradient(circle at 20% 10%, oklch(92% 0.026 75 / 0.5), transparent 40%),
39
- radial-gradient(circle at 80% 90%, oklch(92% 0.026 60 / 0.4), transparent 50%);
40
- color: var(--color-ink);
41
- font-family: var(--font-body);
42
- font-size: 1.0625rem;
43
- line-height: 1.55;
44
- -webkit-font-smoothing: antialiased;
45
- }
46
-
47
- .page {
48
- max-width: 64rem;
49
- margin: 0 auto;
50
- padding: var(--space-2xl) var(--space-lg) var(--space-3xl);
51
- }
52
-
53
- /* Masthead — almanac plate-banner */
54
- .masthead {
55
- text-align: center;
56
- border-block-end: 2px double var(--color-rule);
57
- padding-block-end: var(--space-lg);
58
- margin-block-end: var(--space-2xl);
59
- }
60
-
61
- .masthead__rule {
62
- width: 4ch;
63
- border: 0;
64
- border-block-start: 1px solid var(--color-ink);
65
- margin: 0 auto var(--space-md);
66
- }
67
-
68
- .masthead__brand {
69
- font-family: var(--font-display);
70
- font-size: clamp(2.5rem, 6vw, 4.5rem);
71
- font-weight: 400;
72
- letter-spacing: 0.02em;
73
- margin: 0 0 var(--space-2xs);
74
- color: var(--color-ink);
75
- line-height: 1;
76
- }
77
-
78
- .masthead__sub {
79
- font-family: var(--font-display);
80
- font-size: 0.875rem;
81
- letter-spacing: 0.16em;
82
- text-transform: uppercase;
83
- color: var(--color-ink-soft);
84
- margin: 0;
85
- }
86
-
87
- .masthead__sub strong { color: var(--color-accent); font-weight: 400; }
88
-
89
- /* Today's bake — section heading */
90
- .todays {
91
- text-align: center;
92
- margin-block-end: var(--space-xl);
93
- }
94
-
95
- .todays__head {
96
- font-family: var(--font-display);
97
- font-size: clamp(1.5rem, 3vw, 2.25rem);
98
- font-weight: 400;
99
- letter-spacing: 0.02em;
100
- margin: 0 0 var(--space-2xs);
101
- color: var(--color-ink);
102
- }
103
-
104
- .todays__date {
105
- font-family: var(--font-body);
106
- font-style: italic;
107
- font-size: 1rem;
108
- color: var(--color-ink-soft);
109
- margin: 0;
110
- }
111
-
112
- /* Catalogue grid */
113
- .catalogue {
114
- display: grid;
115
- grid-template-columns: repeat(2, 1fr);
116
- gap: 0;
117
- border-block-start: 1px solid var(--color-rule);
118
- }
119
-
120
- .bread {
121
- display: grid;
122
- grid-template-columns: 96px 1fr auto;
123
- align-items: center;
124
- gap: var(--space-md);
125
- padding: var(--space-lg) var(--space-md);
126
- border-block-end: 1px solid var(--color-rule);
127
- position: relative;
128
- transition: background var(--dur-micro) var(--ease-out);
129
- }
130
-
131
- .bread:nth-child(odd) {
132
- border-inline-end: 1px solid var(--color-rule);
133
- }
134
-
135
- .bread:hover { background: var(--color-paper-2); }
136
-
137
- .bread__shape {
138
- width: 96px;
139
- height: 96px;
140
- display: flex;
141
- align-items: center;
142
- justify-content: center;
143
- color: var(--color-ink-soft);
144
- }
145
-
146
- .bread__shape svg {
147
- width: 100%;
148
- height: 100%;
149
- fill: none;
150
- stroke: currentColor;
151
- stroke-width: 1.5;
152
- stroke-linecap: round;
153
- stroke-linejoin: round;
154
- }
155
-
156
- .bread__shape--accent svg { stroke: var(--color-accent); }
157
-
158
- .bread__body { min-width: 0; }
159
-
160
- .bread__name {
161
- font-family: var(--font-display);
162
- font-size: 1.375rem;
163
- font-weight: 400;
164
- letter-spacing: 0.01em;
165
- margin: 0 0 var(--space-3xs);
166
- color: var(--color-ink);
167
- }
168
-
169
- .bread__desc {
170
- font-family: var(--font-body);
171
- font-style: italic;
172
- font-size: 0.9375rem;
173
- color: var(--color-ink-soft);
174
- margin: 0;
175
- line-height: 1.4;
176
- }
177
-
178
- .bread__price {
179
- font-family: var(--font-display);
180
- font-size: 1.125rem;
181
- font-variant-numeric: tabular-nums;
182
- color: var(--color-ink);
183
- white-space: nowrap;
184
- }
185
-
186
- .bread__price--out {
187
- color: var(--color-ink-soft);
188
- font-style: italic;
189
- font-family: var(--font-body);
190
- font-size: 0.9375rem;
191
- }
192
-
193
- /* Visit */
194
- .visit {
195
- margin-block-start: var(--space-2xl);
196
- padding: var(--space-xl) var(--space-md);
197
- border-block-start: 2px double var(--color-rule);
198
- border-block-end: 2px double var(--color-rule);
199
- text-align: center;
200
- }
201
-
202
- .visit__head {
203
- font-family: var(--font-display);
204
- font-size: 1.5rem;
205
- font-weight: 400;
206
- margin: 0 0 var(--space-md);
207
- }
208
-
209
- .visit__lines {
210
- display: grid;
211
- gap: var(--space-2xs);
212
- font-family: var(--font-body);
213
- font-size: 1rem;
214
- color: var(--color-ink);
215
- }
216
-
217
- .visit__lines em {
218
- font-style: italic;
219
- color: var(--color-ink-soft);
220
- }
221
-
222
- /* Colophon */
223
- .colophon {
224
- margin-block-start: var(--space-2xl);
225
- text-align: center;
226
- font-family: var(--font-display);
227
- font-size: 0.75rem;
228
- letter-spacing: 0.16em;
229
- text-transform: uppercase;
230
- color: var(--color-ink-soft);
231
- }
232
-
233
- /* Mobile */
234
- @media (max-width: 48rem) {
235
- .catalogue { grid-template-columns: 1fr; }
236
- .bread:nth-child(odd) { border-inline-end: none; }
237
- .bread { grid-template-columns: 64px 1fr auto; gap: var(--space-sm); padding: var(--space-md) var(--space-2xs); }
238
- .bread__shape { width: 64px; height: 64px; }
239
- .bread__name { font-size: 1.125rem; }
240
- }