{
  "id": "airmail-desk-service",
  "name": "Service Page",
  "theme": "airmail-desk",
  "category": "Landing",
  "description": "A product page for a correspondence tool that argues from what it refuses to do, with the refusals given as much room as the features.",
  "layout": "An envelope hero with the stripe on one edge, a two-column set of what it does and what it will not do, and a plain plan row.",
  "modules": [
    {
      "key": "hero",
      "name": "Envelope hero",
      "html": "\n<header class=\"eh\"><span class=\"sm\"></span><div class=\"ab\"><span>From Airmail Desk</span><span>To anyone who still writes letters</span><span>2026</span></div><h1>Correspondence, not messaging</h1><p>A tool for exchanges that take days rather than seconds. Every item has a from, a to, a date and a reference, and there is no typing indicator anywhere in it.</p><a class=\"btn\" href=\"#\">Try it for a month</a></header>"
    },
    {
      "key": "does",
      "name": "What it does",
      "html": "\n<section class=\"tw\">\n  <div><span class=\"k\">It does</span><ul>\n    <li>Threads by correspondence rather than by subject line, so a reply four months later joins the right conversation.</li>\n    <li>Keeps every reference number you assign and makes them the primary way to find anything.</li>\n    <li>Shows who owes whom a reply, which turns out to be the only status anybody wants.</li>\n    <li>Exports everything as plain text files with the address block as a header, forever, without asking why.</li>\n  </ul></div>\n  <div><span class=\"k\">It will not</span><ul>\n    <li>Show read receipts. Whether somebody has opened a letter is not your business.</li>\n    <li>Notify you in real time. Post arrives twice a day, at 08:00 and 16:00, and that is a setting you can turn off but not up.</li>\n    <li>Suggest replies. Everything here is written by a person to a person.</li>\n    <li>Recall a sent letter. Once it has gone out through the top of the screen it has gone.</li>\n  </ul></div>\n</section>"
    },
    {
      "key": "plans",
      "name": "Plan row",
      "html": "\n<section class=\"pr\"><span class=\"k\">Plans</span>\n<div class=\"row\"><div><b>Personal</b><p>One desk, unlimited correspondents, full export.</p></div><span class=\"pc n\">£4 / month</span><button type=\"button\" class=\"sec\">Choose</button></div>\n<div class=\"row\"><div><b>Society</b><p>Up to forty desks with a shared archive and a bulletin sender.</p></div><span class=\"pc n\">£40 / month</span><button type=\"button\" class=\"pri\">Choose</button></div>\n<p class=\"fine\">Both plans include the export. If we ever shut down you get a tarball of plain text, not a promise.</p></section>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "airmail-desk-service",
    "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-service.json",
  "structure": "An envelope hero with the stripe on one edge, a two-column set of what it does and what it will not do, and a plain plan row.",
  "html": "<div class=\"dz dz-airmail-desk-service\" data-design=\"airmail-desk-service\" data-theme=\"airmail-desk\">\n<section class=\"dz-mod\" data-mod=\"hero\" aria-label=\"Envelope hero\">\n<header class=\"eh\"><span class=\"sm\"></span><div class=\"ab\"><span>From Airmail Desk</span><span>To anyone who still writes letters</span><span>2026</span></div><h1>Correspondence, not messaging</h1><p>A tool for exchanges that take days rather than seconds. Every item has a from, a to, a date and a reference, and there is no typing indicator anywhere in it.</p><a class=\"btn\" href=\"#\">Try it for a month</a></header></section>\n<section class=\"dz-mod\" data-mod=\"does\" aria-label=\"What it does\">\n<section class=\"tw\">\n  <div><span class=\"k\">It does</span><ul>\n    <li>Threads by correspondence rather than by subject line, so a reply four months later joins the right conversation.</li>\n    <li>Keeps every reference number you assign and makes them the primary way to find anything.</li>\n    <li>Shows who owes whom a reply, which turns out to be the only status anybody wants.</li>\n    <li>Exports everything as plain text files with the address block as a header, forever, without asking why.</li>\n  </ul></div>\n  <div><span class=\"k\">It will not</span><ul>\n    <li>Show read receipts. Whether somebody has opened a letter is not your business.</li>\n    <li>Notify you in real time. Post arrives twice a day, at 08:00 and 16:00, and that is a setting you can turn off but not up.</li>\n    <li>Suggest replies. Everything here is written by a person to a person.</li>\n    <li>Recall a sent letter. Once it has gone out through the top of the screen it has gone.</li>\n  </ul></div>\n</section></section>\n<section class=\"dz-mod\" data-mod=\"plans\" aria-label=\"Plan row\">\n<section class=\"pr\"><span class=\"k\">Plans</span>\n<div class=\"row\"><div><b>Personal</b><p>One desk, unlimited correspondents, full export.</p></div><span class=\"pc n\">£4 / month</span><button type=\"button\" class=\"sec\">Choose</button></div>\n<div class=\"row\"><div><b>Society</b><p>Up to forty desks with a shared archive and a bulletin sender.</p></div><span class=\"pc n\">£40 / month</span><button type=\"button\" class=\"pri\">Choose</button></div>\n<p class=\"fine\">Both plans include the export. If we ever shut down you get a tarball of plain text, not a promise.</p></section></section>\n</div>",
  "css": "\n.dz-airmail-desk-service { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 30px 26px; max-width: 940px; margin: 0 auto; }\n.dz-airmail-desk-service .k { text-transform: uppercase; letter-spacing: .14em; font-size: 10.5px; font-weight: 600; color: var(--muted-foreground); display: block; }\n.dz-airmail-desk-service .n { font-family: var(--pv-mono); letter-spacing: .03em; }\n.dz-airmail-desk-service .eh { position: relative; border: 1px solid var(--border); border-radius: var(--pv-radius-sm); padding: 26px; margin-bottom: 30px; }\n.dz-airmail-desk-service .eh::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-service .sm { position: absolute; right: 26px; top: 26px; width: 46px; height: 54px; border: 1px dashed var(--border); border-radius: 2px; }\n.dz-airmail-desk-service .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-service h1 { font-family: var(--pv-display); font-weight: 600; letter-spacing: -.01em; font-size: 44px; margin: 0 0 12px; letter-spacing: -.02em; }\n.dz-airmail-desk-service .eh p { margin: 0 0 20px; font-size: 16.5px; line-height: 1.66; max-width: 56ch; }\n.dz-airmail-desk-service .btn { display: inline-block; font-size: 14px; background: var(--primary); color: var(--primary-foreground); padding: 12px 24px; border-radius: var(--pv-radius-sm); text-decoration: none; }\n.dz-airmail-desk-service .tw { display: grid; grid-template-columns: 1fr 1fr; gap: 34px; margin-bottom: 30px; }\n.dz-airmail-desk-service .tw ul { list-style: none; margin: 10px 0 0; padding: 0; }\n.dz-airmail-desk-service .tw li { padding: 11px 0; border-bottom: 1px solid var(--border); font-size: 14.5px; line-height: 1.6; }\n.dz-airmail-desk-service .tw div:last-child li { color: var(--muted-foreground); }\n.dz-airmail-desk-service .row { display: grid; grid-template-columns: 1fr auto auto; gap: 20px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--border); }\n.dz-airmail-desk-service .row b { display: block; font-size: 16px; margin-bottom: 4px; }\n.dz-airmail-desk-service .row p { margin: 0; font-size: 13.5px; color: var(--muted-foreground); }\n.dz-airmail-desk-service .pc { font-size: 15px; }\n.dz-airmail-desk-service button { font: inherit; font-size: 13.5px; padding: 11px 22px; border-radius: var(--pv-radius-sm); cursor: pointer; }\n.dz-airmail-desk-service .pri { background: var(--primary); color: var(--primary-foreground); border: 0; }\n.dz-airmail-desk-service .sec { background: transparent; color: var(--foreground); border: 1px solid var(--border); }\n.dz-airmail-desk-service .fine { margin: 16px 0 0; 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"
}