{
  "id": "curtain-call-boxoffice",
  "name": "Box Office",
  "theme": "curtain-call",
  "category": "Dashboard",
  "description": "A house-management view built around the one number a box office actually watches, which is how full tonight is compared with the same point in the run last time.",
  "layout": "A four-across figure band over a two-column split of a per-performance sales table and a live door log, with all figures in the typewriter mono.",
  "modules": [
    {
      "key": "figs",
      "name": "Figure band",
      "html": "\n<section class=\"fb\">\n  <div><span class=\"l\">Tonight, sold</span><b>412</b><span class=\"d\">of 480 · 86%</span></div>\n  <div><span class=\"l\">Same point, last run</span><b>377</b><span class=\"d up\">+35</span></div>\n  <div><span class=\"l\">Held, unclaimed</span><b>18</b><span class=\"d\">releases at 19:15</span></div>\n  <div><span class=\"l\">Income, week</span><b>£61,240</b><span class=\"d\">against £58,000 target</span></div>\n</section>"
    },
    {
      "key": "perf",
      "name": "Performance table",
      "html": "\n<section class=\"pt\"><h2>This week</h2>\n<table><thead><tr><th>Performance</th><th>Sold</th><th>Held</th><th>Income</th><th>Capacity</th></tr></thead>\n<tbody>\n  <tr><td><time>Tue 09, 19:30</time></td><td class=\"n\">412</td><td class=\"n\">18</td><td class=\"n\">£17,214</td><td><span class=\"bar\"><i style=\"--w:86%\"></i></span>86%</td></tr>\n  <tr><td><time>Wed 10, 19:30</time></td><td class=\"n\">388</td><td class=\"n\">22</td><td class=\"n\">£16,102</td><td><span class=\"bar\"><i style=\"--w:81%\"></i></span>81%</td></tr>\n  <tr class=\"hi\"><td><time>Thu 11, 14:00</time></td><td class=\"n\">201</td><td class=\"n\">6</td><td class=\"n\">£6,442</td><td><span class=\"bar\"><i style=\"--w:42%\"></i></span>42%</td></tr>\n  <tr><td><time>Fri 12, 19:30</time></td><td class=\"n\">467</td><td class=\"n\">4</td><td class=\"n\">£19,880</td><td><span class=\"bar\"><i style=\"--w:97%\"></i></span>97%</td></tr>\n  <tr><td><time>Sat 13, 14:00</time></td><td class=\"n\">440</td><td class=\"n\">11</td><td class=\"n\">£17,006</td><td><span class=\"bar\"><i style=\"--w:92%\"></i></span>92%</td></tr>\n</tbody></table>\n<p class=\"fn\">Thursday matinee is the only performance behind the last run. Schools booking closed on Friday with 40 unsold.</p></section>"
    },
    {
      "key": "door",
      "name": "Door log",
      "html": "\n<aside class=\"dl\"><h2>Door</h2>\n<ol>\n  <li><time>19:06</time><b>Row K held seats released</b><span>6 seats back to general</span></li>\n  <li><time>19:02</time><b>Access seat exchanged</b><span>D12 to A2, no fee</span></li>\n  <li class=\"warn\"><time>18:54</time><b>Card terminal 2 offline</b><span>Reverted to terminal 1</span></li>\n  <li><time>18:40</time><b>House opened</b><span>On time</span></li>\n</ol></aside>"
    }
  ],
  "moduleCount": 3,
  "reorderable": false,
  "meta": {
    "id": "curtain-call-boxoffice",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T23:32:27+09:00",
    "updatedAt": "2026-09-01T23:32:27+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/curtain-call-boxoffice.json",
  "structure": "A four-across figure band over a two-column split of a per-performance sales table and a live door log, with all figures in the typewriter mono.",
  "html": "<div class=\"dz dz-curtain-call-boxoffice\" data-design=\"curtain-call-boxoffice\" data-theme=\"curtain-call\">\n<section class=\"dz-mod\" data-mod=\"figs\" aria-label=\"Figure band\">\n<section class=\"fb\">\n  <div><span class=\"l\">Tonight, sold</span><b>412</b><span class=\"d\">of 480 · 86%</span></div>\n  <div><span class=\"l\">Same point, last run</span><b>377</b><span class=\"d up\">+35</span></div>\n  <div><span class=\"l\">Held, unclaimed</span><b>18</b><span class=\"d\">releases at 19:15</span></div>\n  <div><span class=\"l\">Income, week</span><b>£61,240</b><span class=\"d\">against £58,000 target</span></div>\n</section></section><div class=\"split\"><section class=\"dz-mod\" data-mod=\"perf\" aria-label=\"Performance table\">\n<section class=\"pt\"><h2>This week</h2>\n<table><thead><tr><th>Performance</th><th>Sold</th><th>Held</th><th>Income</th><th>Capacity</th></tr></thead>\n<tbody>\n  <tr><td><time>Tue 09, 19:30</time></td><td class=\"n\">412</td><td class=\"n\">18</td><td class=\"n\">£17,214</td><td><span class=\"bar\"><i style=\"--w:86%\"></i></span>86%</td></tr>\n  <tr><td><time>Wed 10, 19:30</time></td><td class=\"n\">388</td><td class=\"n\">22</td><td class=\"n\">£16,102</td><td><span class=\"bar\"><i style=\"--w:81%\"></i></span>81%</td></tr>\n  <tr class=\"hi\"><td><time>Thu 11, 14:00</time></td><td class=\"n\">201</td><td class=\"n\">6</td><td class=\"n\">£6,442</td><td><span class=\"bar\"><i style=\"--w:42%\"></i></span>42%</td></tr>\n  <tr><td><time>Fri 12, 19:30</time></td><td class=\"n\">467</td><td class=\"n\">4</td><td class=\"n\">£19,880</td><td><span class=\"bar\"><i style=\"--w:97%\"></i></span>97%</td></tr>\n  <tr><td><time>Sat 13, 14:00</time></td><td class=\"n\">440</td><td class=\"n\">11</td><td class=\"n\">£17,006</td><td><span class=\"bar\"><i style=\"--w:92%\"></i></span>92%</td></tr>\n</tbody></table>\n<p class=\"fn\">Thursday matinee is the only performance behind the last run. Schools booking closed on Friday with 40 unsold.</p></section></section><section class=\"dz-mod\" data-mod=\"door\" aria-label=\"Door log\">\n<aside class=\"dl\"><h2>Door</h2>\n<ol>\n  <li><time>19:06</time><b>Row K held seats released</b><span>6 seats back to general</span></li>\n  <li><time>19:02</time><b>Access seat exchanged</b><span>D12 to A2, no fee</span></li>\n  <li class=\"warn\"><time>18:54</time><b>Card terminal 2 offline</b><span>Reverted to terminal 1</span></li>\n  <li><time>18:40</time><b>House opened</b><span>On time</span></li>\n</ol></aside></section></div>\n</div>",
  "css": "\n.dz-curtain-call-boxoffice { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 26px 30px 30px; }\n.dz-curtain-call-boxoffice .fb { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-bottom: 26px; }\n.dz-curtain-call-boxoffice .fb div { background: var(--card); border-radius: var(--pv-radius); padding: 18px; }\n.dz-curtain-call-boxoffice .l { font-family: var(--pv-mono); font-size: 13px; letter-spacing: .01em; color: var(--muted-foreground); display: block; }\n.dz-curtain-call-boxoffice .fb b { font-family: var(--pv-mono); font-size: 40px; font-weight: 400; display: block; margin: 8px 0 4px; letter-spacing: -.02em; }\n.dz-curtain-call-boxoffice .d { font-size: 12px; color: var(--muted-foreground); }\n.dz-curtain-call-boxoffice .d.up { color: var(--accent); }\n.dz-curtain-call-boxoffice .split { display: grid; grid-template-columns: 2fr 1fr; gap: 26px; align-items: start; }\n.dz-curtain-call-boxoffice h2 { font-family: var(--pv-display); font-weight: 400; letter-spacing: -.015em; font-size: 23px; margin: 0 0 16px; }\n.dz-curtain-call-boxoffice .pt { background: var(--card); border-radius: var(--pv-radius); padding: 22px; }\n.dz-curtain-call-boxoffice table { width: 100%; border-collapse: collapse; }\n.dz-curtain-call-boxoffice th { text-align: left; font-family: var(--pv-mono); font-size: 13px; letter-spacing: .01em; color: var(--muted-foreground); font-weight: 400; padding: 0 0 10px; border-bottom: 1px solid var(--border); }\n.dz-curtain-call-boxoffice td { padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 14px; }\n.dz-curtain-call-boxoffice td time { font-family: var(--pv-mono); font-size: 13px; letter-spacing: .01em; }\n.dz-curtain-call-boxoffice .n { font-family: var(--pv-mono); font-size: 13px; }\n.dz-curtain-call-boxoffice tr.hi td { background: color-mix(in oklab, var(--accent) 12%, transparent); }\n.dz-curtain-call-boxoffice .bar { display: inline-block; width: 76px; height: 6px; background: var(--muted); border-radius: 3px; margin-right: 9px; vertical-align: middle; }\n.dz-curtain-call-boxoffice .bar i { display: block; width: var(--w); height: 100%; background: var(--primary); border-radius: 3px; }\n.dz-curtain-call-boxoffice .fn { font-size: 13px; color: var(--muted-foreground); margin: 16px 0 0; }\n.dz-curtain-call-boxoffice .dl { background: color-mix(in oklab, var(--background) 84%, black); border-radius: var(--pv-radius); padding: 22px; }\n.dz-curtain-call-boxoffice .dl ol { list-style: none; margin: 0; padding: 0; }\n.dz-curtain-call-boxoffice .dl li { display: grid; grid-template-columns: 58px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border); }\n.dz-curtain-call-boxoffice .dl time { font-family: var(--pv-mono); font-size: 13px; letter-spacing: .01em; color: var(--muted-foreground); grid-row: span 2; }\n.dz-curtain-call-boxoffice .dl b { font-size: 14px; font-weight: 600; }\n.dz-curtain-call-boxoffice .dl span { font-size: 12px; color: var(--muted-foreground); grid-column: 2; }\n.dz-curtain-call-boxoffice .dl li.warn b { color: var(--accent); }\n",
  "requiredTheme": "/api/v1/themes/curtain-call.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Gloock:wght@400;500;600;700&family=Cabin:wght@400;500;600;700&family=Cutive+Mono:wght@400;500;600;700&display=swap"
}