howone 0.1.28 → 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 (224) 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/howone/03-sdk/07-ai-action-calls.md +28 -86
  44. package/templates/vite/.howone/skills/howone/03-sdk/09-workflow-execute-sse.md +105 -0
  45. package/templates/vite/.howone/skills/howone/04-ai/03-ai-sdk-handoff.md +15 -13
  46. package/templates/vite/.howone/skills/howone/SKILL.md +2 -2
  47. package/templates/vite/package.json +1 -1
  48. package/templates/vite/.howone/skills/hallmark/LICENSE +0 -21
  49. package/templates/vite/.howone/skills/hallmark/README.md +0 -147
  50. package/templates/vite/.howone/skills/hallmark/ROADMAP.md +0 -201
  51. package/templates/vite/.howone/skills/hallmark/docs/recipes.md +0 -186
  52. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-anya.jpg +0 -0
  53. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-bananastudio.jpg +0 -0
  54. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-hyperlane.jpg +0 -0
  55. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-najm.jpg +0 -0
  56. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-slow-pour.jpg +0 -0
  57. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-soroe.jpg +0 -0
  58. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-tally.jpg +0 -0
  59. package/templates/vite/.howone/skills/hallmark/docs/screenshots/hero-wayfare.jpg +0 -0
  60. package/templates/vite/.howone/skills/hallmark/docs/study-examples.md +0 -176
  61. package/templates/vite/.howone/skills/hallmark/docs/talk-slides.md +0 -364
  62. package/templates/vite/.howone/skills/hallmark/package.json +0 -36
  63. package/templates/vite/.howone/skills/hallmark/site/OG-hallmark.png +0 -0
  64. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/brief.md +0 -71
  65. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/index.html +0 -64
  66. package/templates/vite/.howone/skills/hallmark/site/_tests/01-tide-podcast/style.css +0 -240
  67. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/brief.md +0 -65
  68. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/index.html +0 -105
  69. package/templates/vite/.howone/skills/hallmark/site/_tests/02-streampipe-cli/style.css +0 -250
  70. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/brief.md +0 -64
  71. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/index.html +0 -131
  72. package/templates/vite/.howone/skills/hallmark/site/_tests/03-maple-bakery/style.css +0 -240
  73. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/brief.md +0 -67
  74. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/index.html +0 -86
  75. package/templates/vite/.howone/skills/hallmark/site/_tests/04-meridian-manifesto/style.css +0 -262
  76. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/brief.md +0 -63
  77. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/index.html +0 -167
  78. package/templates/vite/.howone/skills/hallmark/site/_tests/05-tracejam-saas/style.css +0 -457
  79. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/brief.md +0 -65
  80. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/index.html +0 -159
  81. package/templates/vite/.howone/skills/hallmark/site/_tests/06-anya-portfolio/style.css +0 -288
  82. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/brief.md +0 -64
  83. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/index.html +0 -146
  84. package/templates/vite/.howone/skills/hallmark/site/_tests/07-foundry-compliance/style.css +0 -484
  85. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/brief.md +0 -64
  86. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/index.html +0 -116
  87. package/templates/vite/.howone/skills/hallmark/site/_tests/08-cohort-courses/style.css +0 -354
  88. package/templates/vite/.howone/skills/hallmark/site/_tests/09-slow-pour/index.html +0 -638
  89. package/templates/vite/.howone/skills/hallmark/site/_tests/10-owl-hours/index.html +0 -515
  90. package/templates/vite/.howone/skills/hallmark/site/_tests/11-soroe-ceramics/index.html +0 -515
  91. package/templates/vite/.howone/skills/hallmark/site/_tests/12-loafer/index.html +0 -608
  92. package/templates/vite/.howone/skills/hallmark/site/_tests/13-alma/index.html +0 -587
  93. package/templates/vite/.howone/skills/hallmark/site/_tests/README.md +0 -157
  94. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-loop.mp4 +0 -0
  95. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/BananaStudio-still.jpg +0 -0
  96. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-example.mp4 +0 -0
  97. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Hyperlane-still.jpg +0 -0
  98. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-loop.mp4 +0 -0
  99. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Najm-still.jpg +0 -0
  100. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Podcast-loop.mp4 +0 -0
  101. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-loop.mp4 +0 -0
  102. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/SaaS-still.jpg +0 -0
  103. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-loop.mp4 +0 -0
  104. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/Soroe-still.jpg +0 -0
  105. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/after-quiet-hour.png +0 -0
  106. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-loop.mp4 +0 -0
  107. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/anya-still.jpg +0 -0
  108. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/audit-example.png +0 -0
  109. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/before-quiet-hour.png +0 -0
  110. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/example-redesign-uractivation.png +0 -0
  111. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-loop.mp4 +0 -0
  112. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/slow-pour-still.jpg +0 -0
  113. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/study-example.png +0 -0
  114. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/uractivation-after-loop.mp4 +0 -0
  115. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-loop.mp4 +0 -0
  116. package/templates/vite/.howone/skills/hallmark/site/_tests/_thumbs/wayfare-still.jpg +0 -0
  117. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/index.html +0 -77
  118. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/01-coffeebox/style.css +0 -238
  119. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/index.html +0 -110
  120. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/02-loop/style.css +0 -326
  121. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/index.html +0 -134
  122. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/03-mossroot/style.css +0 -262
  123. package/templates/vite/.howone/skills/hallmark/site/_tests/custom/README.md +0 -30
  124. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/README.md +0 -17
  125. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/audit-report.md +0 -56
  126. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/input.html +0 -160
  127. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/audit/notes.md +0 -29
  128. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/input.html +0 -63
  129. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/notes.md +0 -72
  130. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/redesign/output.html +0 -374
  131. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/diagnosis.md +0 -52
  132. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/input-description.md +0 -29
  133. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/notes.md +0 -61
  134. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.css +0 -193
  135. package/templates/vite/.howone/skills/hallmark/site/_tests/verbs/study/output.html +0 -66
  136. package/templates/vite/.howone/skills/hallmark/site/css/base.css +0 -194
  137. package/templates/vite/.howone/skills/hallmark/site/css/components.css +0 -4886
  138. package/templates/vite/.howone/skills/hallmark/site/css/sections.css +0 -2072
  139. package/templates/vite/.howone/skills/hallmark/site/css/tokens.css +0 -1129
  140. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/index.html +0 -475
  141. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/styles.css +0 -1584
  142. package/templates/vite/.howone/skills/hallmark/site/examples/bananastudio/tokens.css +0 -96
  143. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/index.html +0 -344
  144. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/script.js +0 -103
  145. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/styles.css +0 -1103
  146. package/templates/vite/.howone/skills/hallmark/site/examples/hyperlane/tokens.css +0 -83
  147. package/templates/vite/.howone/skills/hallmark/site/examples/najm/index.html +0 -368
  148. package/templates/vite/.howone/skills/hallmark/site/examples/najm/script.js +0 -133
  149. package/templates/vite/.howone/skills/hallmark/site/examples/najm/styles.css +0 -1062
  150. package/templates/vite/.howone/skills/hallmark/site/examples/najm/tokens.css +0 -97
  151. package/templates/vite/.howone/skills/hallmark/site/examples/tally/app.js +0 -84
  152. package/templates/vite/.howone/skills/hallmark/site/examples/tally/index.html +0 -446
  153. package/templates/vite/.howone/skills/hallmark/site/examples/tally/styles.css +0 -1087
  154. package/templates/vite/.howone/skills/hallmark/site/examples/tally/tokens.css +0 -101
  155. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/index.html +0 -359
  156. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/style.css +0 -1168
  157. package/templates/vite/.howone/skills/hallmark/site/examples/wayfare/tokens.css +0 -81
  158. package/templates/vite/.howone/skills/hallmark/site/favicon-dark.svg +0 -5
  159. package/templates/vite/.howone/skills/hallmark/site/favicon-light.svg +0 -5
  160. package/templates/vite/.howone/skills/hallmark/site/index.html +0 -1043
  161. package/templates/vite/.howone/skills/hallmark/site/js/main.js +0 -1175
  162. package/templates/vite/.howone/skills/hallmark/vercel.json +0 -6
  163. package/templates/vite/.howone/skills/impeccable/SKILL.md +0 -168
  164. package/templates/vite/.howone/skills/impeccable/agents/impeccable-asset-producer.md +0 -101
  165. package/templates/vite/.howone/skills/impeccable/reference/adapt.md +0 -190
  166. package/templates/vite/.howone/skills/impeccable/reference/animate.md +0 -175
  167. package/templates/vite/.howone/skills/impeccable/reference/audit.md +0 -133
  168. package/templates/vite/.howone/skills/impeccable/reference/bolder.md +0 -113
  169. package/templates/vite/.howone/skills/impeccable/reference/brand.md +0 -118
  170. package/templates/vite/.howone/skills/impeccable/reference/clarify.md +0 -174
  171. package/templates/vite/.howone/skills/impeccable/reference/codex.md +0 -105
  172. package/templates/vite/.howone/skills/impeccable/reference/cognitive-load.md +0 -106
  173. package/templates/vite/.howone/skills/impeccable/reference/color-and-contrast.md +0 -105
  174. package/templates/vite/.howone/skills/impeccable/reference/colorize.md +0 -154
  175. package/templates/vite/.howone/skills/impeccable/reference/craft.md +0 -123
  176. package/templates/vite/.howone/skills/impeccable/reference/critique.md +0 -273
  177. package/templates/vite/.howone/skills/impeccable/reference/delight.md +0 -302
  178. package/templates/vite/.howone/skills/impeccable/reference/distill.md +0 -111
  179. package/templates/vite/.howone/skills/impeccable/reference/document.md +0 -427
  180. package/templates/vite/.howone/skills/impeccable/reference/extract.md +0 -69
  181. package/templates/vite/.howone/skills/impeccable/reference/harden.md +0 -347
  182. package/templates/vite/.howone/skills/impeccable/reference/heuristics-scoring.md +0 -234
  183. package/templates/vite/.howone/skills/impeccable/reference/interaction-design.md +0 -195
  184. package/templates/vite/.howone/skills/impeccable/reference/layout.md +0 -141
  185. package/templates/vite/.howone/skills/impeccable/reference/live.md +0 -622
  186. package/templates/vite/.howone/skills/impeccable/reference/motion-design.md +0 -109
  187. package/templates/vite/.howone/skills/impeccable/reference/onboard.md +0 -234
  188. package/templates/vite/.howone/skills/impeccable/reference/optimize.md +0 -258
  189. package/templates/vite/.howone/skills/impeccable/reference/overdrive.md +0 -130
  190. package/templates/vite/.howone/skills/impeccable/reference/personas.md +0 -179
  191. package/templates/vite/.howone/skills/impeccable/reference/polish.md +0 -242
  192. package/templates/vite/.howone/skills/impeccable/reference/product.md +0 -62
  193. package/templates/vite/.howone/skills/impeccable/reference/quieter.md +0 -99
  194. package/templates/vite/.howone/skills/impeccable/reference/responsive-design.md +0 -114
  195. package/templates/vite/.howone/skills/impeccable/reference/shape.md +0 -165
  196. package/templates/vite/.howone/skills/impeccable/reference/spatial-design.md +0 -100
  197. package/templates/vite/.howone/skills/impeccable/reference/teach.md +0 -156
  198. package/templates/vite/.howone/skills/impeccable/reference/typeset.md +0 -124
  199. package/templates/vite/.howone/skills/impeccable/reference/typography.md +0 -159
  200. package/templates/vite/.howone/skills/impeccable/reference/ux-writing.md +0 -107
  201. package/templates/vite/.howone/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  202. package/templates/vite/.howone/skills/impeccable/scripts/command-metadata.json +0 -94
  203. package/templates/vite/.howone/skills/impeccable/scripts/critique-storage.mjs +0 -242
  204. package/templates/vite/.howone/skills/impeccable/scripts/design-parser.mjs +0 -820
  205. package/templates/vite/.howone/skills/impeccable/scripts/detect-csp.mjs +0 -198
  206. package/templates/vite/.howone/skills/impeccable/scripts/detect.mjs +0 -21
  207. package/templates/vite/.howone/skills/impeccable/scripts/impeccable-paths.mjs +0 -110
  208. package/templates/vite/.howone/skills/impeccable/scripts/is-generated.mjs +0 -69
  209. package/templates/vite/.howone/skills/impeccable/scripts/live-accept.mjs +0 -595
  210. package/templates/vite/.howone/skills/impeccable/scripts/live-browser-session.js +0 -123
  211. package/templates/vite/.howone/skills/impeccable/scripts/live-browser.js +0 -4860
  212. package/templates/vite/.howone/skills/impeccable/scripts/live-complete.mjs +0 -75
  213. package/templates/vite/.howone/skills/impeccable/scripts/live-completion.mjs +0 -18
  214. package/templates/vite/.howone/skills/impeccable/scripts/live-inject.mjs +0 -446
  215. package/templates/vite/.howone/skills/impeccable/scripts/live-poll.mjs +0 -200
  216. package/templates/vite/.howone/skills/impeccable/scripts/live-resume.mjs +0 -48
  217. package/templates/vite/.howone/skills/impeccable/scripts/live-server.mjs +0 -838
  218. package/templates/vite/.howone/skills/impeccable/scripts/live-session-store.mjs +0 -254
  219. package/templates/vite/.howone/skills/impeccable/scripts/live-status.mjs +0 -47
  220. package/templates/vite/.howone/skills/impeccable/scripts/live-wrap.mjs +0 -632
  221. package/templates/vite/.howone/skills/impeccable/scripts/live.mjs +0 -247
  222. package/templates/vite/.howone/skills/impeccable/scripts/load-context.mjs +0 -141
  223. package/templates/vite/.howone/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  224. package/templates/vite/.howone/skills/impeccable/scripts/pin.mjs +0 -214
@@ -1,515 +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, viewport-fit=cover" />
6
- <title>Soroe — Six vessels, Spring 2026.</title>
7
- <meta name="description" content="A small ceramics studio in Nara. Six vessels per season, then the kiln rests. Each piece signed and dated." />
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=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;1,9..144,400;1,9..144,500&family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500&display=swap" />
11
- <style>
12
- /* Hallmark · macrostructure: Long Document · theme: Studio · enrichment: Tier-A SVG vessels
13
- * tone: quiet handmade archival · anchor hue: chromatic-green
14
- * studied: no · pre-emit critique: P5 H4 E5 S5 R5 V4
15
- */
16
-
17
- :root {
18
- /* Studio — light · italic-serif · chromatic-green (sage paper · forest accent) */
19
- --color-paper: oklch(96.5% 0.014 95);
20
- --color-paper-2: oklch(94% 0.016 95);
21
- --color-paper-3: oklch(90% 0.020 98);
22
- --color-rule: oklch(76% 0.016 95);
23
- --color-rule-2: oklch(58% 0.020 98);
24
- --color-muted: oklch(42% 0.024 120);
25
- --color-ink-2: oklch(24% 0.030 130);
26
- --color-ink: oklch(15% 0.032 135);
27
- --color-accent: oklch(46% 0.140 145); /* forest green */
28
- --color-focus: oklch(46% 0.140 145);
29
-
30
- --font-display: "Fraunces", "Tiempos", ui-serif, Georgia, serif;
31
- --font-body: "Geist", "Söhne", ui-sans-serif, system-ui, sans-serif;
32
- --font-serif: "Fraunces", ui-serif, Georgia, serif;
33
- --font-label: "Geist Mono", ui-monospace, monospace;
34
- --font-mono: "Geist Mono", ui-monospace, monospace;
35
-
36
- --text-xs: 0.75rem;
37
- --text-sm: 0.875rem;
38
- --text-md: 1rem;
39
- --text-lg: 1.25rem;
40
- --text-xl: 1.75rem;
41
- --text-2xl: 2.5rem;
42
- --text-display: clamp(3rem, 7vw + 0.5rem, 6.5rem);
43
-
44
- --tracking-display: -0.025em;
45
- --tracking-tight: -0.015em;
46
- --tracking-label: 0.16em;
47
- --lh-tight: 1;
48
- --lh-snug: 1.2;
49
- --lh-relaxed: 1.6;
50
-
51
- --space-3xs: 0.25rem;
52
- --space-2xs: 0.5rem;
53
- --space-xs: 0.75rem;
54
- --space-sm: 1rem;
55
- --space-md: 1.5rem;
56
- --space-lg: 2rem;
57
- --space-xl: 3rem;
58
- --space-2xl: 4.5rem;
59
- --space-3xl: 6.5rem;
60
-
61
- --rule-hair: 1px;
62
- --page-gutter: clamp(1.25rem, 4vw, 3rem);
63
- --page-max: 62rem;
64
-
65
- --dur-micro: 80ms;
66
- --dur-short: 150ms;
67
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
68
- }
69
-
70
- *, *::before, *::after { box-sizing: border-box; }
71
- html, body { overflow-x: clip; }
72
-
73
- html {
74
- background: var(--color-paper);
75
- color: var(--color-ink);
76
- font-family: var(--font-body);
77
- font-size: 16px;
78
- line-height: var(--lh-relaxed);
79
- -webkit-font-smoothing: antialiased;
80
- text-rendering: optimizeLegibility;
81
- }
82
-
83
- body {
84
- margin: 0;
85
- padding-inline: var(--page-gutter);
86
- }
87
-
88
- main {
89
- margin-inline: auto;
90
- max-width: var(--page-max);
91
- }
92
-
93
- a { color: inherit; text-decoration: none; }
94
- a:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 3px; }
95
-
96
- img, svg { display: block; max-width: 100%; }
97
-
98
- h1, h2, h3, p, ul, ol, dl { margin: 0; }
99
-
100
- /* — Masthead ———————————————————————————————————————— */
101
- .masthead {
102
- display: flex;
103
- align-items: baseline;
104
- justify-content: space-between;
105
- gap: var(--space-md);
106
- padding-block: var(--space-md);
107
- border-block-end: var(--rule-hair) solid var(--color-rule-2);
108
- }
109
-
110
- .masthead__wordmark {
111
- font-family: var(--font-display);
112
- font-style: italic;
113
- font-weight: 500;
114
- font-size: var(--text-lg);
115
- letter-spacing: var(--tracking-tight);
116
- color: var(--color-ink);
117
- }
118
-
119
- .masthead__meta {
120
- font-family: var(--font-label);
121
- font-size: var(--text-xs);
122
- letter-spacing: var(--tracking-label);
123
- text-transform: uppercase;
124
- color: var(--color-muted);
125
- }
126
-
127
- /* — Salutation hero ———————————————————————————————— */
128
- .opening {
129
- padding-block: var(--space-3xl) var(--space-2xl);
130
- display: grid;
131
- gap: var(--space-md);
132
- }
133
-
134
- .opening__eyebrow {
135
- font-family: var(--font-label);
136
- font-size: var(--text-xs);
137
- letter-spacing: var(--tracking-label);
138
- text-transform: uppercase;
139
- color: var(--color-accent);
140
- margin-block-end: var(--space-md);
141
- }
142
-
143
- .opening__title {
144
- font-family: var(--font-display);
145
- font-style: italic;
146
- font-weight: 400;
147
- font-size: var(--text-display);
148
- line-height: var(--lh-tight);
149
- letter-spacing: var(--tracking-display);
150
- color: var(--color-ink);
151
- max-width: 18ch;
152
- overflow-wrap: anywhere;
153
- min-width: 0;
154
- }
155
-
156
- .opening__sub {
157
- font-family: var(--font-body);
158
- font-size: var(--text-lg);
159
- line-height: var(--lh-snug);
160
- color: var(--color-ink-2);
161
- max-width: 52ch;
162
- margin-block-start: var(--space-md);
163
- }
164
-
165
- .opening__signoff {
166
- margin-block-start: var(--space-md);
167
- font-family: var(--font-display);
168
- font-style: italic;
169
- font-weight: 500;
170
- font-size: var(--text-md);
171
- color: var(--color-ink-2);
172
- }
173
-
174
- /* — Vessel index ———————————————————————————————————— */
175
- .index {
176
- padding-block: var(--space-2xl) var(--space-2xl);
177
- border-block-start: var(--rule-hair) solid var(--color-rule);
178
- }
179
-
180
- .index__head {
181
- display: grid;
182
- grid-template-columns: 1fr auto;
183
- gap: var(--space-md);
184
- align-items: baseline;
185
- padding-block-end: var(--space-md);
186
- border-block-end: var(--rule-hair) solid var(--color-rule-2);
187
- }
188
-
189
- .index__title {
190
- font-family: var(--font-display);
191
- font-style: italic;
192
- font-weight: 500;
193
- font-size: var(--text-2xl);
194
- letter-spacing: var(--tracking-tight);
195
- color: var(--color-ink);
196
- }
197
-
198
- .index__count {
199
- font-family: var(--font-label);
200
- font-size: var(--text-xs);
201
- letter-spacing: var(--tracking-label);
202
- text-transform: uppercase;
203
- color: var(--color-muted);
204
- }
205
-
206
- .vessels {
207
- list-style: none;
208
- padding: 0;
209
- display: grid;
210
- }
211
-
212
- .vessel {
213
- display: grid;
214
- grid-template-columns: 6rem minmax(0, 1fr) 12rem;
215
- gap: var(--space-xl);
216
- align-items: center;
217
- padding-block: var(--space-xl);
218
- border-block-end: var(--rule-hair) solid var(--color-rule);
219
- }
220
-
221
- @media (max-width: 56rem) {
222
- .vessel {
223
- grid-template-columns: 5rem minmax(0, 1fr);
224
- gap: var(--space-md);
225
- }
226
- .vessel__price { grid-column: 2; justify-self: start; padding-block-start: var(--space-xs); }
227
- }
228
-
229
- .vessel__svg {
230
- width: 100%;
231
- height: auto;
232
- color: var(--color-ink);
233
- }
234
-
235
- .vessel__body {
236
- display: grid;
237
- gap: var(--space-2xs);
238
- }
239
-
240
- .vessel__num {
241
- font-family: var(--font-label);
242
- font-size: var(--text-xs);
243
- letter-spacing: var(--tracking-label);
244
- text-transform: uppercase;
245
- color: var(--color-muted);
246
- }
247
-
248
- .vessel__name {
249
- font-family: var(--font-display);
250
- font-style: italic;
251
- font-weight: 500;
252
- font-size: var(--text-xl);
253
- line-height: var(--lh-tight);
254
- letter-spacing: var(--tracking-tight);
255
- color: var(--color-ink);
256
- }
257
-
258
- .vessel__notes {
259
- font-family: var(--font-body);
260
- font-size: var(--text-md);
261
- line-height: var(--lh-relaxed);
262
- color: var(--color-ink-2);
263
- max-width: 42ch;
264
- }
265
-
266
- .vessel__price {
267
- display: grid;
268
- gap: 0.2rem;
269
- justify-self: end;
270
- text-align: end;
271
- }
272
-
273
- @media (max-width: 56rem) {
274
- .vessel__price { justify-self: start; text-align: start; }
275
- }
276
-
277
- .vessel__price-amount {
278
- font-family: var(--font-display);
279
- font-style: italic;
280
- font-weight: 500;
281
- font-size: var(--text-xl);
282
- color: var(--color-ink);
283
- font-feature-settings: "tnum";
284
- }
285
-
286
- .vessel__price-state {
287
- font-family: var(--font-label);
288
- font-size: var(--text-xs);
289
- letter-spacing: var(--tracking-label);
290
- text-transform: uppercase;
291
- color: var(--color-muted);
292
- }
293
-
294
- .vessel__price-state--reserved { color: var(--color-accent); }
295
-
296
- .vessel:last-child { border-block-end: 0; }
297
-
298
- /* — Visit ————————————————————————————————————————— */
299
- .visit {
300
- padding-block: var(--space-3xl) var(--space-2xl);
301
- border-block-start: var(--rule-hair) solid var(--color-rule-2);
302
- display: grid;
303
- grid-template-columns: minmax(8rem, 14rem) minmax(0, 1fr);
304
- gap: var(--space-2xl);
305
- }
306
-
307
- @media (max-width: 56rem) {
308
- .visit { grid-template-columns: 1fr; gap: var(--space-md); }
309
- }
310
-
311
- .visit__label {
312
- font-family: var(--font-label);
313
- font-size: var(--text-xs);
314
- letter-spacing: var(--tracking-label);
315
- text-transform: uppercase;
316
- color: var(--color-muted);
317
- }
318
-
319
- .visit__body {
320
- display: grid;
321
- gap: var(--space-md);
322
- font-family: var(--font-body);
323
- font-size: var(--text-md);
324
- line-height: var(--lh-relaxed);
325
- color: var(--color-ink-2);
326
- max-width: 52ch;
327
- }
328
-
329
- .visit__address {
330
- font-family: var(--font-display);
331
- font-style: italic;
332
- font-weight: 500;
333
- font-size: var(--text-xl);
334
- color: var(--color-ink);
335
- line-height: var(--lh-snug);
336
- }
337
-
338
- /* — Colophon ————————————————————————————————————— */
339
- .colophon {
340
- margin-block-start: var(--space-2xl);
341
- padding-block: var(--space-md);
342
- border-block-start: var(--rule-hair) solid var(--color-rule-2);
343
- display: grid;
344
- gap: var(--space-md);
345
- font-family: var(--font-label);
346
- font-size: var(--text-xs);
347
- letter-spacing: var(--tracking-label);
348
- text-transform: uppercase;
349
- color: var(--color-muted);
350
- }
351
-
352
- .colophon__row {
353
- display: flex;
354
- justify-content: space-between;
355
- flex-wrap: wrap;
356
- gap: var(--space-md);
357
- }
358
-
359
- .colophon strong { color: var(--color-ink); font-weight: 500; }
360
-
361
- @media (prefers-reduced-motion: reduce) {
362
- *, *::before, *::after { transition: none !important; animation: none !important; }
363
- }
364
- </style>
365
- </head>
366
- <body>
367
-
368
- <main>
369
-
370
- <header class="masthead">
371
- <h1 class="masthead__wordmark">Soroe.</h1>
372
- <p class="masthead__meta">Spring 2026 · No. ix</p>
373
- </header>
374
-
375
- <section class="opening" aria-labelledby="o-title">
376
- <p class="opening__eyebrow">A letter to collectors</p>
377
- <h2 class="opening__title" id="o-title">Six vessels, this spring — then the kiln rests until July.</h2>
378
- <p class="opening__sub">
379
- Each piece is hand-thrown in our studio outside Nara, fired once at 1,260 °C, signed on the foot, and dated. We send the kiln-log with the box. When a piece is reserved, it leaves the index — there are no waitlists.
380
- </p>
381
- <p class="opening__signoff">— Mariko, the studio.</p>
382
- </section>
383
-
384
- <section class="index" aria-labelledby="i-title">
385
- <header class="index__head">
386
- <h2 class="index__title" id="i-title">The index — six pieces.</h2>
387
- <p class="index__count">Updated 14 May · 04 / 06 available</p>
388
- </header>
389
-
390
- <ol class="vessels">
391
-
392
- <li class="vessel">
393
- <svg class="vessel__svg" viewBox="0 0 80 110" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true">
394
- <path d="M 18 18 L 26 12 L 54 12 L 62 18" />
395
- <path d="M 22 18 C 14 36 16 78 24 96 C 30 102 50 102 56 96 C 64 78 66 36 58 18" />
396
- <path d="M 28 96 L 28 100 L 52 100 L 52 96" />
397
- </svg>
398
- <div class="vessel__body">
399
- <span class="vessel__num">i.</span>
400
- <h3 class="vessel__name">Tall pourer, ash glaze.</h3>
401
- <p class="vessel__notes">22 cm · stoneware · soft pour spout · holds about 800 ml. Foot-rim shows the wheel's last turn; left unsanded.</p>
402
- </div>
403
- <p class="vessel__price">
404
- <span class="vessel__price-amount">¥ 14,800</span>
405
- <span class="vessel__price-state">Available</span>
406
- </p>
407
- </li>
408
-
409
- <li class="vessel">
410
- <svg class="vessel__svg" viewBox="0 0 80 110" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true">
411
- <path d="M 12 36 C 18 22 62 22 68 36 C 76 50 70 80 64 90 C 56 102 24 102 16 90 C 10 80 4 50 12 36 Z" />
412
- <ellipse cx="40" cy="36" rx="28" ry="6" />
413
- </svg>
414
- <div class="vessel__body">
415
- <span class="vessel__num">ii.</span>
416
- <h3 class="vessel__name">Wide bowl, kuro.</h3>
417
- <p class="vessel__notes">26 cm across · iron-rich black slip · meant for the centre of the table — one bunch of greens, or one ripe persimmon.</p>
418
- </div>
419
- <p class="vessel__price">
420
- <span class="vessel__price-amount">¥ 21,000</span>
421
- <span class="vessel__price-state vessel__price-state--reserved">Reserved</span>
422
- </p>
423
- </li>
424
-
425
- <li class="vessel">
426
- <svg class="vessel__svg" viewBox="0 0 80 110" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true">
427
- <path d="M 24 8 L 56 8 L 60 18 L 56 28 L 60 36 C 68 50 64 86 56 96 C 50 102 30 102 24 96 C 16 86 12 50 20 36 L 24 28 L 20 18 Z" />
428
- <ellipse cx="40" cy="14" rx="14" ry="3" stroke-opacity="0.5" />
429
- </svg>
430
- <div class="vessel__body">
431
- <span class="vessel__num">iii.</span>
432
- <h3 class="vessel__name">Stem vase, narrow.</h3>
433
- <p class="vessel__notes">18 cm · for a single branch. The neck pinches because we wanted the stem to lean — not because the throw failed.</p>
434
- </div>
435
- <p class="vessel__price">
436
- <span class="vessel__price-amount">¥ 9,200</span>
437
- <span class="vessel__price-state">Available</span>
438
- </p>
439
- </li>
440
-
441
- <li class="vessel">
442
- <svg class="vessel__svg" viewBox="0 0 80 110" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true">
443
- <path d="M 14 30 C 14 18 66 18 66 30 L 66 86 C 66 100 14 100 14 86 Z" />
444
- <path d="M 14 30 L 66 30" />
445
- </svg>
446
- <div class="vessel__body">
447
- <span class="vessel__num">iv.</span>
448
- <h3 class="vessel__name">Cylinder, soft white.</h3>
449
- <p class="vessel__notes">14 cm · matte porcelain · two of these were thrown side by side. They are not identical, and that's the point.</p>
450
- </div>
451
- <p class="vessel__price">
452
- <span class="vessel__price-amount">¥ 6,800</span>
453
- <span class="vessel__price-state">Available</span>
454
- </p>
455
- </li>
456
-
457
- <li class="vessel">
458
- <svg class="vessel__svg" viewBox="0 0 80 110" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true">
459
- <path d="M 8 50 C 8 34 32 24 40 24 C 48 24 72 34 72 50 C 72 76 56 96 40 96 C 24 96 8 76 8 50 Z" />
460
- <path d="M 32 24 L 32 12 L 48 12 L 48 24" />
461
- </svg>
462
- <div class="vessel__body">
463
- <span class="vessel__num">v.</span>
464
- <h3 class="vessel__name">Round jug, river celadon.</h3>
465
- <p class="vessel__notes">19 cm at widest · holds 1.6 L · the small blue cast in the glaze is iron from the local water — we cannot reproduce it.</p>
466
- </div>
467
- <p class="vessel__price">
468
- <span class="vessel__price-amount">¥ 24,000</span>
469
- <span class="vessel__price-state vessel__price-state--reserved">Reserved</span>
470
- </p>
471
- </li>
472
-
473
- <li class="vessel">
474
- <svg class="vessel__svg" viewBox="0 0 80 110" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" aria-hidden="true">
475
- <path d="M 22 40 L 22 30 L 30 24 L 50 24 L 58 30 L 58 40 C 64 56 64 80 58 92 C 52 100 28 100 22 92 C 16 80 16 56 22 40 Z" />
476
- <path d="M 22 40 L 58 40" stroke-opacity="0.4" />
477
- </svg>
478
- <div class="vessel__body">
479
- <span class="vessel__num">vi.</span>
480
- <h3 class="vessel__name">Lidded jar, salt-cure.</h3>
481
- <p class="vessel__notes">17 cm · we use one for our kitchen salt. The lid sits with a soft scrape; that's the seal, not a flaw.</p>
482
- </div>
483
- <p class="vessel__price">
484
- <span class="vessel__price-amount">¥ 11,500</span>
485
- <span class="vessel__price-state">Available</span>
486
- </p>
487
- </li>
488
-
489
- </ol>
490
- </section>
491
-
492
- <section class="visit" aria-labelledby="v-title">
493
- <p class="visit__label">Visit the studio</p>
494
- <div class="visit__body">
495
- <h2 class="visit__address" id="v-title">Tuesday &amp; Saturday, 14:00–17:00.</h2>
496
- <p>The studio is a converted carpenter's workshop ten minutes north of Nara station. Walk up the lane until the persimmon tree, then left. Tea is offered. Pieces marked <em style="color: var(--color-accent);">available</em> can be reserved with a 30% deposit; the balance settles when the piece ships.</p>
497
- <p>Soroe Studio · 1-14 Higashi-Hokke, Nara · <a style="color: var(--color-ink); border-bottom: 1px solid var(--color-rule-2);" href="mailto:hello@soroe.studio">hello@soroe.studio</a></p>
498
- </div>
499
- </section>
500
-
501
- <footer class="colophon">
502
- <div class="colophon__row">
503
- <p>Soroe <strong>· Mariko Iwasaki, ceramicist</strong></p>
504
- <p>Spring 2026 · No. ix</p>
505
- </div>
506
- <div class="colophon__row">
507
- <p>Set in <strong>Fraunces italic</strong> &amp; <strong>Geist</strong>.</p>
508
- <p>Each piece signed and dated.</p>
509
- </div>
510
- </footer>
511
-
512
- </main>
513
-
514
- </body>
515
- </html>