{
  "id": "shortwave-desk-access",
  "name": "Operator Access",
  "theme": "shortwave-desk",
  "category": "Auth & Onboarding",
  "description": "A sign-in for shared hardware that shows who currently holds the receiver, because the failure mode here is two operators tuning the same radio.",
  "layout": "A centred 460px filled panel with the sign-in fields, and a status well beneath it listing which receivers are held and by whom.",
  "modules": [
    {
      "key": "form",
      "name": "Sign-in panel",
      "html": "\n<section class=\"sp\"><span class=\"brand\">Shortwave</span><h1>Operator sign-in</h1><p class=\"sub\">Signing in claims a receiver for the length of your watch. Nobody else can retune it while you hold it.</p>\n<label><span class=\"k\">Callsign or operator ID</span><input type=\"text\" value=\"GM4KZQ\"></label>\n<label><span class=\"k\">Passphrase</span><input type=\"password\" value=\"············\"></label>\n<label><span class=\"k\">Claim receiver</span><select><option>RX2 — Northern (free)</option><option>RX3 — Coastal (free)</option><option disabled>RX1 — Main (held by GM0RNW)</option></select></label>\n<label class=\"chk\"><input type=\"checkbox\" checked> Release my claim automatically at the end of the scheduled watch</label>\n<button type=\"button\" class=\"pri\">Sign in and claim RX2</button>\n<p class=\"fine\">Watches run 06:00 to 14:00, 14:00 to 22:00 and 22:00 to 06:00 UTC. A claim outside a scheduled watch needs a supervisor.</p></section>"
    },
    {
      "key": "held",
      "name": "Receiver status",
      "html": "\n<aside class=\"hw\"><span class=\"k\">Receivers</span>\n<ul>\n  <li class=\"busy\"><div><b>RX1 — Main</b><span class=\"d\">Held by GM0RNW since 06:02</span></div><span class=\"rd\">busy</span></li>\n  <li><div><b>RX2 — Northern</b><span class=\"d\">Free · last used 22:40 yesterday</span></div><span class=\"rd free\">free</span></li>\n  <li><div><b>RX3 — Coastal</b><span class=\"d\">Free · antenna C only</span></div><span class=\"rd free\">free</span></li>\n</ul></aside>"
    },
    {
      "key": "note",
      "name": "Watch note",
      "html": "\n<footer class=\"wn\"><p><span class=\"k\">This watch</span>Two peaks are already in the log this morning. The 7,205 kHz entry at 19:00 is worth listening back to before you start.</p></footer>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "shortwave-desk-access",
    "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-access.json",
  "structure": "A centred 460px filled panel with the sign-in fields, and a status well beneath it listing which receivers are held and by whom.",
  "html": "<div class=\"dz dz-shortwave-desk-access\" data-design=\"shortwave-desk-access\" data-theme=\"shortwave-desk\">\n<section class=\"dz-mod\" data-mod=\"form\" aria-label=\"Sign-in panel\">\n<section class=\"sp\"><span class=\"brand\">Shortwave</span><h1>Operator sign-in</h1><p class=\"sub\">Signing in claims a receiver for the length of your watch. Nobody else can retune it while you hold it.</p>\n<label><span class=\"k\">Callsign or operator ID</span><input type=\"text\" value=\"GM4KZQ\"></label>\n<label><span class=\"k\">Passphrase</span><input type=\"password\" value=\"············\"></label>\n<label><span class=\"k\">Claim receiver</span><select><option>RX2 — Northern (free)</option><option>RX3 — Coastal (free)</option><option disabled>RX1 — Main (held by GM0RNW)</option></select></label>\n<label class=\"chk\"><input type=\"checkbox\" checked> Release my claim automatically at the end of the scheduled watch</label>\n<button type=\"button\" class=\"pri\">Sign in and claim RX2</button>\n<p class=\"fine\">Watches run 06:00 to 14:00, 14:00 to 22:00 and 22:00 to 06:00 UTC. A claim outside a scheduled watch needs a supervisor.</p></section></section>\n<section class=\"dz-mod\" data-mod=\"held\" aria-label=\"Receiver status\">\n<aside class=\"hw\"><span class=\"k\">Receivers</span>\n<ul>\n  <li class=\"busy\"><div><b>RX1 — Main</b><span class=\"d\">Held by GM0RNW since 06:02</span></div><span class=\"rd\">busy</span></li>\n  <li><div><b>RX2 — Northern</b><span class=\"d\">Free · last used 22:40 yesterday</span></div><span class=\"rd free\">free</span></li>\n  <li><div><b>RX3 — Coastal</b><span class=\"d\">Free · antenna C only</span></div><span class=\"rd free\">free</span></li>\n</ul></aside></section>\n<section class=\"dz-mod\" data-mod=\"note\" aria-label=\"Watch note\">\n<footer class=\"wn\"><p><span class=\"k\">This watch</span>Two peaks are already in the log this morning. The 7,205 kHz entry at 19:00 is worth listening back to before you start.</p></footer></section>\n</div>",
  "css": "\n.dz-shortwave-desk-access { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 34px 26px; max-width: 460px; margin: 0 auto; display: grid; gap: 18px; }\n.dz-shortwave-desk-access .k { text-transform: uppercase; letter-spacing: .16em; font-size: 10px; font-weight: 700; color: var(--muted-foreground); display: block; }\n.dz-shortwave-desk-access .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-access .sp { background: var(--card); border-radius: var(--pv-radius-lg); padding: 18px; padding: 26px; }\n.dz-shortwave-desk-access .brand { font-family: var(--pv-display); font-weight: 700; letter-spacing: -.02em; font-size: 18px; display: block; color: var(--primary); margin-bottom: 16px; }\n.dz-shortwave-desk-access h1 { font-family: var(--pv-display); font-weight: 700; letter-spacing: -.02em; font-size: 27px; margin: 0 0 8px; }\n.dz-shortwave-desk-access .sub { margin: 0 0 22px; font-size: 13.5px; color: var(--muted-foreground); line-height: 1.55; }\n.dz-shortwave-desk-access label { display: block; margin-bottom: 16px; }\n.dz-shortwave-desk-access input, .dz-shortwave-desk-access select { display: block; width: 100%; margin-top: 6px; padding: 11px; font: inherit; font-size: 14px; background: var(--secondary); border: 0; border-radius: var(--pv-radius-sm); color: var(--foreground); }\n.dz-shortwave-desk-access .chk { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; line-height: 1.5; }\n.dz-shortwave-desk-access .pri { width: 100%; background: var(--primary); color: var(--primary-foreground); border: 0; padding: 14px; border-radius: var(--pv-radius-sm); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }\n.dz-shortwave-desk-access .fine { font-size: 12px; color: var(--muted-foreground); margin: 14px 0 0; line-height: 1.55; }\n.dz-shortwave-desk-access .hw { background: var(--card); border-radius: var(--pv-radius-lg); padding: 18px; }\n.dz-shortwave-desk-access .hw ul { list-style: none; margin: 10px 0 0; padding: 0; }\n.dz-shortwave-desk-access .hw li { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--border); }\n.dz-shortwave-desk-access .hw b { display: block; font-size: 14px; }\n.dz-shortwave-desk-access .d { font-size: 11.5px; color: var(--muted-foreground); }\n.dz-shortwave-desk-access .free { background: var(--primary); color: var(--primary-foreground); }\n.dz-shortwave-desk-access .busy { opacity: .65; }\n.dz-shortwave-desk-access .wn { background: color-mix(in oklab, var(--background) 82%, black); border-radius: var(--pv-radius-lg); padding: 18px; }\n.dz-shortwave-desk-access .wn p { margin: 0; font-size: 13px; line-height: 1.6; }\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"
}