{
  "id": "apricot-press-shop",
  "name": "Pantry Shop",
  "theme": "apricot-press",
  "category": "Commerce",
  "description": "A shop where each product states which recipes use it, so the purchase is justified by the cooking rather than by the packaging.",
  "layout": "A ruled two-column product list — no cards, no grid — where each row hangs its price in mono and lists the recipes that call for it.",
  "modules": [
    {
      "key": "head",
      "name": "Shop head",
      "html": "\n<header class=\"sh\"><span class=\"k\">The pantry</span><h1>Twelve things we actually use</h1><p>Everything here appears in at least three recipes in the archive. If something stops being used, it stops being sold.</p></header>"
    },
    {
      "key": "list",
      "name": "Product list",
      "html": "\n<section class=\"pl\">\n  <article><div class=\"pi\"><h3>Cantabrian anchovies</h3><span class=\"pr n\">£11.40</span></div><p>Salted, in oil, 95 g. Firm enough to fillet cleanly and salty enough that you use fewer.</p><p class=\"uses\"><span class=\"al\">Used in</span>Beans and burnt butter · Bitter leaves · The only dressing · four others</p></article>\n  <article><div class=\"pi\"><h3>Dried cannellini, 2025 harvest</h3><span class=\"pr n\">£6.80</span></div><p>500 g. Last year's crop, which soaks in six hours rather than twelve and holds its shape.</p><p class=\"uses\"><span class=\"al\">Used in</span>Beans and burnt butter · White beans, rosemary, chilli · Bean and bread soup</p></article>\n  <article><div class=\"pi\"><h3>Semolina, coarse</h3><span class=\"pr n\">£4.20</span></div><p>1 kg. The grade that gives the cake its texture; fine semolina makes a different and worse cake.</p><p class=\"uses\"><span class=\"al\">Used in</span>Semolina cake · Fried semolina · Pasta, hand rolled</p></article>\n  <article><div class=\"pi\"><h3>Red wine vinegar, 6 years</h3><span class=\"pr n\">£9.60</span></div><p>500 ml. Aged in oak, which is why it does not need sugar to taste round.</p><p class=\"uses\"><span class=\"al\">Used in</span>The only dressing · Bitter leaves · Braised fennel · six others</p></article>\n</section>"
    },
    {
      "key": "bundle",
      "name": "Issue bundle",
      "html": "\n<aside class=\"bd\"><h2>Everything for issue 41</h2><p>The four pantry items above, plus bay and a lemon, in one box. Enough for all six recipes with the beans left over.</p><div class=\"br\"><span class=\"pr n\">£28.40</span><span class=\"sv n\">saves £3.60</span><button type=\"button\" class=\"buy\">Add the box</button></div></aside>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "apricot-press-shop",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-02T00:03:15+09:00",
    "updatedAt": "2026-09-02T00:03:15+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/apricot-press-shop.json",
  "structure": "A ruled two-column product list — no cards, no grid — where each row hangs its price in mono and lists the recipes that call for it.",
  "html": "<div class=\"dz dz-apricot-press-shop\" data-design=\"apricot-press-shop\" data-theme=\"apricot-press\">\n<section class=\"dz-mod\" data-mod=\"head\" aria-label=\"Shop head\">\n<header class=\"sh\"><span class=\"k\">The pantry</span><h1>Twelve things we actually use</h1><p>Everything here appears in at least three recipes in the archive. If something stops being used, it stops being sold.</p></header></section>\n<section class=\"dz-mod\" data-mod=\"list\" aria-label=\"Product list\">\n<section class=\"pl\">\n  <article><div class=\"pi\"><h3>Cantabrian anchovies</h3><span class=\"pr n\">£11.40</span></div><p>Salted, in oil, 95 g. Firm enough to fillet cleanly and salty enough that you use fewer.</p><p class=\"uses\"><span class=\"al\">Used in</span>Beans and burnt butter · Bitter leaves · The only dressing · four others</p></article>\n  <article><div class=\"pi\"><h3>Dried cannellini, 2025 harvest</h3><span class=\"pr n\">£6.80</span></div><p>500 g. Last year's crop, which soaks in six hours rather than twelve and holds its shape.</p><p class=\"uses\"><span class=\"al\">Used in</span>Beans and burnt butter · White beans, rosemary, chilli · Bean and bread soup</p></article>\n  <article><div class=\"pi\"><h3>Semolina, coarse</h3><span class=\"pr n\">£4.20</span></div><p>1 kg. The grade that gives the cake its texture; fine semolina makes a different and worse cake.</p><p class=\"uses\"><span class=\"al\">Used in</span>Semolina cake · Fried semolina · Pasta, hand rolled</p></article>\n  <article><div class=\"pi\"><h3>Red wine vinegar, 6 years</h3><span class=\"pr n\">£9.60</span></div><p>500 ml. Aged in oak, which is why it does not need sugar to taste round.</p><p class=\"uses\"><span class=\"al\">Used in</span>The only dressing · Bitter leaves · Braised fennel · six others</p></article>\n</section></section>\n<section class=\"dz-mod\" data-mod=\"bundle\" aria-label=\"Issue bundle\">\n<aside class=\"bd\"><h2>Everything for issue 41</h2><p>The four pantry items above, plus bay and a lemon, in one box. Enough for all six recipes with the beans left over.</p><div class=\"br\"><span class=\"pr n\">£28.40</span><span class=\"sv n\">saves £3.60</span><button type=\"button\" class=\"buy\">Add the box</button></div></aside></section>\n</div>",
  "css": "\n.dz-apricot-press-shop { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 34px; max-width: 1000px; margin: 0 auto; }\n.dz-apricot-press-shop .k { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; font-weight: 700; color: var(--muted-foreground); }\n.dz-apricot-press-shop .n { font-family: var(--pv-mono); font-size: 13.5px; }\n.dz-apricot-press-shop .sh { padding-bottom: 20px; border-bottom: 1px solid var(--border); margin-bottom: 8px; }\n.dz-apricot-press-shop h1 { font-family: var(--pv-display); font-weight: 400; font-size: 42px; margin: 6px 0 10px; letter-spacing: -.02em; }\n.dz-apricot-press-shop .sh p { margin: 0; font-size: 15.5px; line-height: 1.7; max-width: 60ch; color: var(--muted-foreground); }\n.dz-apricot-press-shop .pl { display: grid; grid-template-columns: 1fr 1fr; gap: 0 44px; }\n.dz-apricot-press-shop .pl article { padding: 20px 0; border-bottom: 1px solid var(--border); }\n.dz-apricot-press-shop .pi { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 8px; }\n.dz-apricot-press-shop .pl h3 { font-family: var(--pv-display); font-weight: 400; font-size: 20px; margin: 0; }\n.dz-apricot-press-shop .pr { font-size: 17px; }\n.dz-apricot-press-shop .pl p { margin: 0 0 8px; font-size: 14.5px; line-height: 1.66; }\n.dz-apricot-press-shop .uses { color: var(--accent); font-size: 13.5px; margin: 0; }\n.dz-apricot-press-shop .al { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; font-weight: 700; color: var(--muted-foreground); color: var(--accent); display: block; }\n.dz-apricot-press-shop .bd { margin-top: 26px; background: var(--card); border-radius: var(--pv-radius-lg); padding: 24px; }\n.dz-apricot-press-shop h2 { font-family: var(--pv-display); font-weight: 400; font-size: 20px; margin: 0 0 8px; }\n.dz-apricot-press-shop .bd p { margin: 0 0 16px; font-size: 14.5px; line-height: 1.66; max-width: 60ch; }\n.dz-apricot-press-shop .br { display: flex; align-items: center; gap: 16px; }\n.dz-apricot-press-shop .br .pr { font-size: 26px; }\n.dz-apricot-press-shop .sv { color: var(--accent); }\n.dz-apricot-press-shop .buy { margin-left: auto; font: inherit; font-size: 14px; font-weight: 700; background: var(--primary); color: var(--primary-foreground); border: 0; padding: 13px 24px; border-radius: var(--pv-radius-md); cursor: pointer; }\n",
  "requiredTheme": "/api/v1/themes/apricot-press.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Bree+Serif:wght@400;500;600;700&family=Nunito+Sans:wght@400;500;600;700&family=Ubuntu+Mono:wght@400;500;600;700&display=swap"
}