{
  "id": "shortwave-desk-service",
  "name": "Service Front",
  "theme": "shortwave-desk",
  "category": "Landing",
  "description": "A front page for a monitoring service that leads with the live band strip itself, because the product is the picture and no headline improves on it.",
  "layout": "A live band strip as the hero, a three-panel capability row on the slate ground, and a plain access list of endpoints in readout chips.",
  "modules": [
    {
      "key": "hero",
      "name": "Live hero",
      "html": "\n<header class=\"lh\"><span class=\"k\">Live · 09:14 UTC</span><div class=\"scale\">\n  <i class=\"t\" style=\"--x:8%\"></i><i class=\"t\" style=\"--x:20%\"></i><i class=\"t\" style=\"--x:32%\"></i><i class=\"t\" style=\"--x:44%\"></i><i class=\"t\" style=\"--x:56%\"></i><i class=\"t\" style=\"--x:68%\"></i><i class=\"t\" style=\"--x:80%\"></i><i class=\"t\" style=\"--x:92%\"></i>\n  <i class=\"pk\" style=\"--x:47%\"></i>\n  <span class=\"cur\" style=\"--x:36%\"><b>9,410</b></span>\n</div>\n<h1>Fourteen frequencies, watched continuously since 1998</h1><p>Signal strength, drift and recordings for the northern shortwave network. The band strip above is the live one; it is not a screenshot.</p></header>"
    },
    {
      "key": "panels",
      "name": "Capability panels",
      "html": "\n<section class=\"cp\">\n  <div><span class=\"k\">Continuous</span><h2>Nothing is sampled</h2><p>Three receivers cover the whole 49, 41 and 31 metre bands without gaps. Every second of every scheduled window is recorded, not polled.</p></div>\n  <div><span class=\"k\">Peaks</span><h2>Anomalies are kept</h2><p>Anything more than 15 dB over the local noise floor is flagged, retained indefinitely and shown on the propagation matrix within a minute.</p></div>\n  <div><span class=\"k\">Open</span><h2>The archive is public</h2><p>Twenty-eight years of logs and eight years of audio. No key, no rate limit worth mentioning, and bulk archives by year.</p></div>\n</section>"
    },
    {
      "key": "access",
      "name": "Endpoint list",
      "html": "\n<section class=\"ep\"><span class=\"k\">How to get it</span>\n<ul>\n  <li><span class=\"rd\">/v1/band/live</span><span class=\"d\">Current tuning, signal and drift for all three receivers</span></li>\n  <li><span class=\"rd\">/v1/log?from=&amp;to=</span><span class=\"d\">Reception log entries, up to a year per request</span></li>\n  <li><span class=\"rd\">/v1/peaks</span><span class=\"d\">Everything above the flag threshold, newest first</span></li>\n  <li><span class=\"rd\">/archive/2026.tar.zst</span><span class=\"d\">A whole year of audio and logs, 61 GB</span></li>\n</ul>\n<p class=\"fine\">If you are pulling the whole archive nightly, use the bulk file. It is cheaper for both of us and it is the same data.</p></section>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "shortwave-desk-service",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T23:54:36+09:00",
    "updatedAt": "2026-09-01T23:54:36+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/shortwave-desk-service.json",
  "structure": "A live band strip as the hero, a three-panel capability row on the slate ground, and a plain access list of endpoints in readout chips.",
  "html": "<div class=\"dz dz-shortwave-desk-service\" data-design=\"shortwave-desk-service\" data-theme=\"shortwave-desk\">\n<section class=\"dz-mod\" data-mod=\"hero\" aria-label=\"Live hero\">\n<header class=\"lh\"><span class=\"k\">Live · 09:14 UTC</span><div class=\"scale\">\n  <i class=\"t\" style=\"--x:8%\"></i><i class=\"t\" style=\"--x:20%\"></i><i class=\"t\" style=\"--x:32%\"></i><i class=\"t\" style=\"--x:44%\"></i><i class=\"t\" style=\"--x:56%\"></i><i class=\"t\" style=\"--x:68%\"></i><i class=\"t\" style=\"--x:80%\"></i><i class=\"t\" style=\"--x:92%\"></i>\n  <i class=\"pk\" style=\"--x:47%\"></i>\n  <span class=\"cur\" style=\"--x:36%\"><b>9,410</b></span>\n</div>\n<h1>Fourteen frequencies, watched continuously since 1998</h1><p>Signal strength, drift and recordings for the northern shortwave network. The band strip above is the live one; it is not a screenshot.</p></header></section>\n<section class=\"dz-mod\" data-mod=\"panels\" aria-label=\"Capability panels\">\n<section class=\"cp\">\n  <div><span class=\"k\">Continuous</span><h2>Nothing is sampled</h2><p>Three receivers cover the whole 49, 41 and 31 metre bands without gaps. Every second of every scheduled window is recorded, not polled.</p></div>\n  <div><span class=\"k\">Peaks</span><h2>Anomalies are kept</h2><p>Anything more than 15 dB over the local noise floor is flagged, retained indefinitely and shown on the propagation matrix within a minute.</p></div>\n  <div><span class=\"k\">Open</span><h2>The archive is public</h2><p>Twenty-eight years of logs and eight years of audio. No key, no rate limit worth mentioning, and bulk archives by year.</p></div>\n</section></section>\n<section class=\"dz-mod\" data-mod=\"access\" aria-label=\"Endpoint list\">\n<section class=\"ep\"><span class=\"k\">How to get it</span>\n<ul>\n  <li><span class=\"rd\">/v1/band/live</span><span class=\"d\">Current tuning, signal and drift for all three receivers</span></li>\n  <li><span class=\"rd\">/v1/log?from=&amp;to=</span><span class=\"d\">Reception log entries, up to a year per request</span></li>\n  <li><span class=\"rd\">/v1/peaks</span><span class=\"d\">Everything above the flag threshold, newest first</span></li>\n  <li><span class=\"rd\">/archive/2026.tar.zst</span><span class=\"d\">A whole year of audio and logs, 61 GB</span></li>\n</ul>\n<p class=\"fine\">If you are pulling the whole archive nightly, use the bulk file. It is cheaper for both of us and it is the same data.</p></section></section>\n</div>",
  "css": "\n.dz-shortwave-desk-service { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 26px; }\n.dz-shortwave-desk-service .k { text-transform: uppercase; letter-spacing: .16em; font-size: 10px; font-weight: 700; color: var(--muted-foreground); display: block; }\n.dz-shortwave-desk-service .rd { font-family: var(--pv-mono); font-size: 12px; letter-spacing: .01em; background: var(--secondary); padding: 5px 9px; border-radius: var(--pv-radius-sm); display: inline-block; }\n.dz-shortwave-desk-service .lh { background: var(--card); border-radius: var(--pv-radius-lg); padding: 18px; padding: 26px; margin-bottom: 18px; }\n.dz-shortwave-desk-service .scale { position: relative; height: 72px; background: var(--secondary); border-radius: var(--pv-radius-sm); margin: 12px 0 22px; }\n.dz-shortwave-desk-service .t { position: absolute; left: var(--x); bottom: 0; width: 1px; height: 14px; background: var(--muted-foreground); opacity: .6; }\n.dz-shortwave-desk-service .pk { position: absolute; left: var(--x); bottom: 0; width: 3px; height: 46px; background: var(--accent); }\n.dz-shortwave-desk-service .cur { position: absolute; left: var(--x); top: 0; bottom: 0; width: 2px; background: var(--primary); animation: dz-swf-glide 9s ease-in-out infinite alternate; }\n.dz-shortwave-desk-service .cur b { position: absolute; top: 6px; left: 7px; font-family: var(--pv-mono); font-size: 12px; letter-spacing: .01em; background: var(--secondary); padding: 5px 9px; border-radius: var(--pv-radius-sm); display: inline-block; background: var(--primary); color: var(--primary-foreground); white-space: nowrap; }\n.dz-shortwave-desk-service @keyframes dz-swf-glide { from { transform: translateX(-40px) } to { transform: translateX(40px) } }\n.dz-shortwave-desk-service h1 { font-family: var(--pv-display); font-weight: 700; letter-spacing: -.02em; font-size: 40px; line-height: 1.1; margin: 0 0 12px; max-width: 26ch; }\n.dz-shortwave-desk-service .lh p { margin: 0; font-size: 15.5px; line-height: 1.62; max-width: 66ch; color: var(--muted-foreground); }\n.dz-shortwave-desk-service .cp { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-bottom: 18px; }\n.dz-shortwave-desk-service .cp div { background: var(--card); border-radius: var(--pv-radius-lg); padding: 18px; }\n.dz-shortwave-desk-service h2 { font-family: var(--pv-display); font-weight: 700; letter-spacing: -.02em; font-size: 19px; margin: 8px 0 8px; }\n.dz-shortwave-desk-service .cp p { margin: 0; font-size: 13.5px; line-height: 1.6; }\n.dz-shortwave-desk-service .ep { background: var(--card); border-radius: var(--pv-radius-lg); padding: 18px; }\n.dz-shortwave-desk-service .ep ul { list-style: none; margin: 12px 0 0; padding: 0; }\n.dz-shortwave-desk-service .ep li { display: flex; gap: 18px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); }\n.dz-shortwave-desk-service .ep .rd { width: 230px; flex: none; color: var(--primary); }\n.dz-shortwave-desk-service .d { font-size: 13px; color: var(--muted-foreground); }\n.dz-shortwave-desk-service .fine { font-size: 12.5px; color: var(--muted-foreground); margin: 14px 0 0; }\n@media (prefers-reduced-motion: reduce) { .dz-shortwave-desk-service *, .dz-shortwave-desk-service *::before, .dz-shortwave-desk-service *::after { transition-duration: 1ms !important; animation-duration: 1ms !important; } }\n",
  "requiredTheme": "/api/v1/themes/shortwave-desk.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Chivo:wght@400;500;600;700&family=Rubik:wght@400;500;600;700&family=Reddit+Mono:wght@400;500;600;700&display=swap"
}