{
  "id": "airmail-desk-bulletin",
  "name": "Bulletin Page",
  "theme": "airmail-desk",
  "category": "Marketing",
  "description": "A newsletter landing page that shows a real past issue in full rather than describing what subscribers get, and puts the correction policy above the sign-up.",
  "layout": "A wide envelope panel holding a complete sample issue, then a plain archive list, and a sign-up row with no card around it.",
  "modules": [
    {
      "key": "sample",
      "name": "Sample issue",
      "html": "\n<section class=\"si\"><span class=\"sm\"></span>\n<div class=\"ab\"><span>From The Kilcarn Society</span><span>To Members</span><span>09 June 2026</span><span>Ref KS-2026-041</span></div>\n<h1>June bulletin, and a correction</h1>\n<p>The date of the summer meeting given in last month's bulletin was wrong. It is the <b class=\"u\">27th</b>, not the 17th. The venue is unchanged and nobody has yet turned up on the wrong day, which we are treating as luck rather than evidence.</p>\n<p>Three things this month. The Ferreira exchange records have been digitised and are on the site. The bindery has finished the two volumes damaged in the January flood. And the accession backlog stands at 1,047 sheets, which is nine fewer than in May, which is not a trend.</p>\n<p class=\"sg\">— The committee</p></section>"
    },
    {
      "key": "archive",
      "name": "Archive list",
      "html": "\n<section class=\"ar\"><span class=\"k\">Every issue since 2019</span>\n<ol>\n  <li><span class=\"ad\">Ref KS-2026-041 · 09 June 2026</span><span class=\"sj\">June bulletin, and a correction</span></li>\n  <li><span class=\"ad\">Ref KS-2026-038 · 12 May 2026</span><span class=\"sj\">May bulletin</span></li>\n  <li><span class=\"ad\">Ref KS-2026-034 · 14 Apr 2026</span><span class=\"sj\">April bulletin, and the flood volumes</span></li>\n  <li><span class=\"ad\">Ref KS-2026-029 · 10 Mar 2026</span><span class=\"sj\">March bulletin</span></li>\n  <li><span class=\"ad\">Ref KS-2026-024 · 11 Feb 2026</span><span class=\"sj\">February bulletin, and the AGM notice</span></li>\n</ol></section>"
    },
    {
      "key": "policy",
      "name": "Correction policy",
      "html": "\n<section class=\"cp\"><span class=\"k\">What we do when we get it wrong</span><p>Corrections go at the top of the next bulletin, in the same size as everything else, with the original error stated in full. We do not silently edit the archive and we do not send a second email to a subset of people. Every issue you can see below is the issue as it was sent.</p></section>"
    },
    {
      "key": "signup",
      "name": "Sign-up row",
      "html": "\n<footer class=\"su\"><label><span class=\"k\">Monthly, on the second Tuesday</span><input type=\"email\" placeholder=\"you@example.org\"></label><button type=\"button\" class=\"pri\">Subscribe</button><span class=\"fine\">One email a month. Unsubscribe link at the bottom of every one, and it works immediately.</span></footer>"
    }
  ],
  "moduleCount": 4,
  "reorderable": true,
  "meta": {
    "id": "airmail-desk-bulletin",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-02T00:08:33+09:00",
    "updatedAt": "2026-09-02T00:08:33+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/airmail-desk-bulletin.json",
  "structure": "A wide envelope panel holding a complete sample issue, then a plain archive list, and a sign-up row with no card around it.",
  "html": "<div class=\"dz dz-airmail-desk-bulletin\" data-design=\"airmail-desk-bulletin\" data-theme=\"airmail-desk\">\n<section class=\"dz-mod\" data-mod=\"sample\" aria-label=\"Sample issue\">\n<section class=\"si\"><span class=\"sm\"></span>\n<div class=\"ab\"><span>From The Kilcarn Society</span><span>To Members</span><span>09 June 2026</span><span>Ref KS-2026-041</span></div>\n<h1>June bulletin, and a correction</h1>\n<p>The date of the summer meeting given in last month's bulletin was wrong. It is the <b class=\"u\">27th</b>, not the 17th. The venue is unchanged and nobody has yet turned up on the wrong day, which we are treating as luck rather than evidence.</p>\n<p>Three things this month. The Ferreira exchange records have been digitised and are on the site. The bindery has finished the two volumes damaged in the January flood. And the accession backlog stands at 1,047 sheets, which is nine fewer than in May, which is not a trend.</p>\n<p class=\"sg\">— The committee</p></section></section>\n<section class=\"dz-mod\" data-mod=\"archive\" aria-label=\"Archive list\">\n<section class=\"ar\"><span class=\"k\">Every issue since 2019</span>\n<ol>\n  <li><span class=\"ad\">Ref KS-2026-041 · 09 June 2026</span><span class=\"sj\">June bulletin, and a correction</span></li>\n  <li><span class=\"ad\">Ref KS-2026-038 · 12 May 2026</span><span class=\"sj\">May bulletin</span></li>\n  <li><span class=\"ad\">Ref KS-2026-034 · 14 Apr 2026</span><span class=\"sj\">April bulletin, and the flood volumes</span></li>\n  <li><span class=\"ad\">Ref KS-2026-029 · 10 Mar 2026</span><span class=\"sj\">March bulletin</span></li>\n  <li><span class=\"ad\">Ref KS-2026-024 · 11 Feb 2026</span><span class=\"sj\">February bulletin, and the AGM notice</span></li>\n</ol></section></section>\n<section class=\"dz-mod\" data-mod=\"policy\" aria-label=\"Correction policy\">\n<section class=\"cp\"><span class=\"k\">What we do when we get it wrong</span><p>Corrections go at the top of the next bulletin, in the same size as everything else, with the original error stated in full. We do not silently edit the archive and we do not send a second email to a subset of people. Every issue you can see below is the issue as it was sent.</p></section></section>\n<section class=\"dz-mod\" data-mod=\"signup\" aria-label=\"Sign-up row\">\n<footer class=\"su\"><label><span class=\"k\">Monthly, on the second Tuesday</span><input type=\"email\" placeholder=\"you@example.org\"></label><button type=\"button\" class=\"pri\">Subscribe</button><span class=\"fine\">One email a month. Unsubscribe link at the bottom of every one, and it works immediately.</span></footer></section>\n</div>",
  "css": "\n.dz-airmail-desk-bulletin { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 30px 26px; max-width: 860px; margin: 0 auto; }\n.dz-airmail-desk-bulletin .k { text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 600; color: var(--muted-foreground); display: block; }\n.dz-airmail-desk-bulletin .si { position: relative; border: 1px solid var(--border); border-radius: var(--pv-radius-sm); padding: 24px; margin-bottom: 26px; }\n.dz-airmail-desk-bulletin .si::before { content: \"\"; position: absolute; left: 0; top: 0; bottom: 0; width: 8px; background: repeating-linear-gradient(45deg,\n  var(--primary) 0 8px, transparent 8px 16px, var(--accent) 16px 24px, transparent 24px 32px); }\n.dz-airmail-desk-bulletin .sm { position: absolute; right: 24px; top: 24px; width: 46px; height: 54px; border: 1px dashed var(--border); border-radius: 2px; }\n.dz-airmail-desk-bulletin .ab { font-family: var(--pv-mono); font-size: 12.5px; letter-spacing: .03em; line-height: 1.42; color: var(--muted-foreground); display: grid; gap: 1px; margin-bottom: 16px; }\n.dz-airmail-desk-bulletin h1 { font-family: var(--pv-display); font-weight: 600; letter-spacing: -.01em; font-size: 29px; margin: 0 0 12px; }\n.dz-airmail-desk-bulletin .si p { margin: 0 0 14px; font-size: 15.5px; line-height: 1.66; max-width: 62ch; }\n.dz-airmail-desk-bulletin .u { border-bottom: 2px solid var(--accent); padding-bottom: 1px; font-weight: 400; }\n.dz-airmail-desk-bulletin .sg { color: var(--muted-foreground); font-size: 14px; }\n.dz-airmail-desk-bulletin .ar ol { list-style: none; margin: 10px 0 0; padding: 0; }\n.dz-airmail-desk-bulletin .ar li { display: grid; grid-template-columns: 260px 1fr; gap: 18px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; }\n.dz-airmail-desk-bulletin .ad { font-family: var(--pv-mono); font-size: 12.5px; letter-spacing: .03em; line-height: 1.42; color: var(--muted-foreground); }\n.dz-airmail-desk-bulletin .cp { margin: 26px 0; padding-top: 18px; border-top: 1px solid var(--border); }\n.dz-airmail-desk-bulletin .cp p { margin: 8px 0 0; font-size: 14.5px; line-height: 1.66; max-width: 62ch; }\n.dz-airmail-desk-bulletin .su { display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: end; padding-top: 20px; border-top: 1px solid var(--border); }\n.dz-airmail-desk-bulletin input { display: block; width: 100%; margin-top: 6px; font: inherit; font-size: 15px; padding: 11px 13px; background: var(--card); border: 1px solid var(--input); border-radius: var(--pv-radius-sm); color: var(--foreground); }\n.dz-airmail-desk-bulletin .pri { font: inherit; font-size: 14px; background: var(--primary); color: var(--primary-foreground); border: 0; padding: 12px 26px; border-radius: var(--pv-radius-sm); cursor: pointer; }\n.dz-airmail-desk-bulletin .fine { grid-column: 1 / -1; font-size: 12.5px; color: var(--muted-foreground); }\n",
  "requiredTheme": "/api/v1/themes/airmail-desk.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Gabarito:wght@400;500;600;700&family=Urbanist:wght@400;500;600;700&family=Kode+Mono:wght@400;500;600;700&display=swap"
}