{
  "id": "ticket-stub-flow",
  "name": "Entry Flow",
  "theme": "ticket-stub",
  "category": "Dashboard",
  "description": "An operations view for a venue entrance where the question is not how many tickets sold but how fast the queue is moving through each lane right now.",
  "layout": "A four-across rate band over a lane throughput strip and a rejection breakdown, with all figures in the wide-tracked mono.",
  "modules": [
    {
      "key": "rates",
      "name": "Rate band",
      "html": "\n<section class=\"rb\">\n  <div><span class=\"lb\">Admitted</span><b class=\"n\">1,204</b><span class=\"d\">of 1,480 expected</span></div>\n  <div><span class=\"lb\">Rate, last 5 min</span><b class=\"n\">38<i>/min</i></b><span class=\"d\">peak 51 at 18:52</span></div>\n  <div><span class=\"lb\">Queue, estimated</span><b class=\"n\">142</b><span class=\"d\">about 4 minutes</span></div>\n  <div class=\"warn\"><span class=\"lb\">Rejected</span><b class=\"n\">11</b><span class=\"d\">9 already used, 2 wrong date</span></div>\n</section>"
    },
    {
      "key": "lanes",
      "name": "Lane throughput",
      "html": "\n<section class=\"lt\"><h2>Lanes</h2>\n<ol>\n  <li><span class=\"ln\">Lane 1</span><span class=\"bar\"><i style=\"--w:88%\"></i></span><span class=\"n\">14/min</span><span class=\"st ok\">Open</span></li>\n  <li><span class=\"ln\">Lane 2</span><span class=\"bar\"><i style=\"--w:74%\"></i></span><span class=\"n\">12/min</span><span class=\"st ok\">Open</span></li>\n  <li class=\"off\"><span class=\"ln\">Lane 3</span><span class=\"bar\"><i style=\"--w:0%\"></i></span><span class=\"n\">0/min</span><span class=\"st cl\">Closed</span></li>\n  <li><span class=\"ln\">Lane 4</span><span class=\"bar\"><i style=\"--w:76%\"></i></span><span class=\"n\">12/min</span><span class=\"st ok\">Open</span></li>\n</ol>\n<p class=\"fn\">Lane 3 has been closed since 18:20 for a terminal replacement. Reopening it would take about 90 seconds off the estimated queue.</p></section>"
    },
    {
      "key": "rej",
      "name": "Rejection breakdown",
      "html": "\n<aside class=\"rj\"><h2>Rejections</h2>\n<ol>\n  <li><span>Already used</span><span class=\"bar sm2\"><i style=\"--w:82%\"></i></span><span class=\"n\">9</span></li>\n  <li><span>Wrong date</span><span class=\"bar sm2\"><i style=\"--w:18%\"></i></span><span class=\"n\">2</span></li>\n  <li><span>Unreadable</span><span class=\"bar sm2\"><i style=\"--w:0%\"></i></span><span class=\"n\">0</span></li>\n  <li><span>Wrong venue</span><span class=\"bar sm2\"><i style=\"--w:0%\"></i></span><span class=\"n\">0</span></li>\n</ol>\n<p class=\"fn\">Eight of the nine \"already used\" scans were the second seat on a two-seat reference being scanned separately, which is an operator training issue rather than fraud.</p></aside>"
    }
  ],
  "moduleCount": 3,
  "reorderable": false,
  "meta": {
    "id": "ticket-stub-flow",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T23:46:02+09:00",
    "updatedAt": "2026-09-01T23:46:02+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/ticket-stub-flow.json",
  "structure": "A four-across rate band over a lane throughput strip and a rejection breakdown, with all figures in the wide-tracked mono.",
  "html": "<div class=\"dz dz-ticket-stub-flow\" data-design=\"ticket-stub-flow\" data-theme=\"ticket-stub\">\n<section class=\"dz-mod\" data-mod=\"rates\" aria-label=\"Rate band\">\n<section class=\"rb\">\n  <div><span class=\"lb\">Admitted</span><b class=\"n\">1,204</b><span class=\"d\">of 1,480 expected</span></div>\n  <div><span class=\"lb\">Rate, last 5 min</span><b class=\"n\">38<i>/min</i></b><span class=\"d\">peak 51 at 18:52</span></div>\n  <div><span class=\"lb\">Queue, estimated</span><b class=\"n\">142</b><span class=\"d\">about 4 minutes</span></div>\n  <div class=\"warn\"><span class=\"lb\">Rejected</span><b class=\"n\">11</b><span class=\"d\">9 already used, 2 wrong date</span></div>\n</section></section><div class=\"split\"><section class=\"dz-mod\" data-mod=\"lanes\" aria-label=\"Lane throughput\">\n<section class=\"lt\"><h2>Lanes</h2>\n<ol>\n  <li><span class=\"ln\">Lane 1</span><span class=\"bar\"><i style=\"--w:88%\"></i></span><span class=\"n\">14/min</span><span class=\"st ok\">Open</span></li>\n  <li><span class=\"ln\">Lane 2</span><span class=\"bar\"><i style=\"--w:74%\"></i></span><span class=\"n\">12/min</span><span class=\"st ok\">Open</span></li>\n  <li class=\"off\"><span class=\"ln\">Lane 3</span><span class=\"bar\"><i style=\"--w:0%\"></i></span><span class=\"n\">0/min</span><span class=\"st cl\">Closed</span></li>\n  <li><span class=\"ln\">Lane 4</span><span class=\"bar\"><i style=\"--w:76%\"></i></span><span class=\"n\">12/min</span><span class=\"st ok\">Open</span></li>\n</ol>\n<p class=\"fn\">Lane 3 has been closed since 18:20 for a terminal replacement. Reopening it would take about 90 seconds off the estimated queue.</p></section></section><section class=\"dz-mod\" data-mod=\"rej\" aria-label=\"Rejection breakdown\">\n<aside class=\"rj\"><h2>Rejections</h2>\n<ol>\n  <li><span>Already used</span><span class=\"bar sm2\"><i style=\"--w:82%\"></i></span><span class=\"n\">9</span></li>\n  <li><span>Wrong date</span><span class=\"bar sm2\"><i style=\"--w:18%\"></i></span><span class=\"n\">2</span></li>\n  <li><span>Unreadable</span><span class=\"bar sm2\"><i style=\"--w:0%\"></i></span><span class=\"n\">0</span></li>\n  <li><span>Wrong venue</span><span class=\"bar sm2\"><i style=\"--w:0%\"></i></span><span class=\"n\">0</span></li>\n</ol>\n<p class=\"fn\">Eight of the nine \"already used\" scans were the second seat on a two-seat reference being scanned separately, which is an operator training issue rather than fraud.</p></aside></section></div>\n</div>",
  "css": "\n.dz-ticket-stub-flow { background: var(--background); color: var(--foreground); font-family: var(--pv-body); padding: 26px 28px; }\n.dz-ticket-stub-flow .lb { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 700; color: var(--muted-foreground); display: block; }\n.dz-ticket-stub-flow .rb { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 24px; }\n.dz-ticket-stub-flow .rb div { border: 1px solid var(--border); border-radius: var(--pv-radius); padding: 16px; }\n.dz-ticket-stub-flow .rb .warn { border-color: var(--destructive); }\n.dz-ticket-stub-flow .n { font-family: var(--pv-mono); letter-spacing: .02em; }\n.dz-ticket-stub-flow .rb b { display: block; font-size: 34px; font-weight: 700; margin: 7px 0 3px; }\n.dz-ticket-stub-flow .rb b i { font-style: normal; font-size: 15px; color: var(--muted-foreground); }\n.dz-ticket-stub-flow .d { font-size: 12px; color: var(--muted-foreground); }\n.dz-ticket-stub-flow .split { display: grid; grid-template-columns: 1.4fr 1fr; gap: 28px; }\n.dz-ticket-stub-flow h2 { font-family: var(--pv-display); font-weight: 600; font-size: 21px; margin: 0 0 14px; }\n.dz-ticket-stub-flow .lt ol, .dz-ticket-stub-flow .rj ol { list-style: none; margin: 0; padding: 0; }\n.dz-ticket-stub-flow .lt li { display: grid; grid-template-columns: 80px 1fr 70px 70px; gap: 14px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--border); }\n.dz-ticket-stub-flow .ln { font-size: 14px; font-weight: 600; }\n.dz-ticket-stub-flow .bar { height: 10px; background: var(--secondary); border-radius: var(--pv-radius-sm); display: block; }\n.dz-ticket-stub-flow .bar i { display: block; height: 100%; width: var(--w); background: var(--primary); border-radius: var(--pv-radius-sm); }\n.dz-ticket-stub-flow .st { text-transform: uppercase; letter-spacing: .2em; font-size: 10px; font-weight: 700; color: var(--muted-foreground); text-align: right; }\n.dz-ticket-stub-flow .st.ok { color: var(--primary); }\n.dz-ticket-stub-flow .off { opacity: .6; }\n.dz-ticket-stub-flow .rj li { display: grid; grid-template-columns: 1fr 90px 34px; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 13.5px; }\n.dz-ticket-stub-flow .rj .n { text-align: right; }\n.dz-ticket-stub-flow .sm2 i { background: var(--destructive); }\n.dz-ticket-stub-flow .fn { font-size: 12.5px; color: var(--muted-foreground); margin: 14px 0 0; line-height: 1.55; max-width: 58ch; }\n",
  "requiredTheme": "/api/v1/themes/ticket-stub.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Khand:wght@400;500;600;700&family=Asap:wght@400;500;600;700&family=Overpass+Mono:wght@400;500;600;700&display=swap"
}