{
  "id": "ultra-civic-console",
  "name": "Case Console",
  "theme": "ultra-civic",
  "category": "App Shell",
  "description": "A caseworker shell where the queue, the case and the actions are three outlined boxes of equal border weight, so nothing looks more important than it is.",
  "layout": "Three vertical panes at 280px, fluid and 300px, divided by 2px rules with no gutter, and a status strip across the bottom that inverts when a case is overdue.",
  "modules": [
    {
      "key": "queue",
      "name": "Case queue",
      "html": "\n<nav class=\"qu\"><span class=\"k\">Queue · 41 open</span>\n<ul>\n  <li class=\"on\"><b>NF-2026-4412</b><span class=\"m\">Housing support · new</span><span class=\"dy ov\">4 days</span></li>\n  <li><b>NF-2026-4409</b><span class=\"m\">Change of circumstance</span><span class=\"dy\">2 days</span></li>\n  <li><b>NF-2026-4401</b><span class=\"m\">Appeal · band review</span><span class=\"dy\">2 days</span></li>\n  <li><b>NF-2026-4388</b><span class=\"m\">Housing support · new</span><span class=\"dy\">1 day</span></li>\n  <li><b>NF-2026-4380</b><span class=\"m\">Discount · single person</span><span class=\"dy\">1 day</span></li>\n  <li><b>NF-2026-4377</b><span class=\"m\">Housing support · resubmitted</span><span class=\"dy\">today</span></li>\n</ul></nav>"
    },
    {
      "key": "case",
      "name": "Case pane",
      "html": "\n<section class=\"cs\"><header><span class=\"k\">NF-2026-4412 · received 31 Aug</span><h1>Priya Ashworth-Blake</h1></header>\n<dl>\n  <div><dt>Address</dt><dd>Flat 2, 4 Marsh Lane, NF4 2QH</dd></div>\n  <div><dt>Household</dt><dd>2 adults, 1 child</dd></div>\n  <div><dt>Tenure</dt><dd>Rent from a private landlord</dd></div>\n  <div><dt>Declared income</dt><dd>Not provided</dd></div>\n  <div><dt>Disability benefit</dt><dd>Yes — not yet evidenced</dd></div>\n</dl>\n<div class=\"fg\"><span class=\"k\">Flags</span><span class=\"tag\">Income missing</span><span class=\"tag\">Evidence outstanding</span></div></section>"
    },
    {
      "key": "actions",
      "name": "Actions pane",
      "html": "\n<aside class=\"ac\"><span class=\"k\">Decide</span>\n<button type=\"button\" class=\"pri\">Award</button>\n<button type=\"button\">Request evidence</button>\n<button type=\"button\">Refuse</button>\n<button type=\"button\">Refer to a senior officer</button>\n<span class=\"k\">Note</span>\n<textarea rows=\"5\">Income field left blank on the submitted form. Requesting bank statements for the last two months before assessing.</textarea>\n<button type=\"button\" class=\"sv\">Save note</button></aside>"
    },
    {
      "key": "status",
      "name": "Status strip",
      "html": "\n<footer class=\"st ov2\"><span>This case is 4 days old. The service standard is 3 working days.</span><span class=\"m\">Officer: R. Idowu · Team: Housing 2</span></footer>"
    }
  ],
  "moduleCount": 4,
  "reorderable": false,
  "meta": {
    "id": "ultra-civic-console",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T20:01:13+09:00",
    "updatedAt": "2026-09-01T20:01:13+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/ultra-civic-console.json",
  "structure": "Three vertical panes at 280px, fluid and 300px, divided by 2px rules with no gutter, and a status strip across the bottom that inverts when a case is overdue.",
  "html": "<div class=\"dz dz-ultra-civic-console\" data-design=\"ultra-civic-console\" data-theme=\"ultra-civic\">\n<section class=\"dz-mod\" data-mod=\"queue\" aria-label=\"Case queue\">\n<nav class=\"qu\"><span class=\"k\">Queue · 41 open</span>\n<ul>\n  <li class=\"on\"><b>NF-2026-4412</b><span class=\"m\">Housing support · new</span><span class=\"dy ov\">4 days</span></li>\n  <li><b>NF-2026-4409</b><span class=\"m\">Change of circumstance</span><span class=\"dy\">2 days</span></li>\n  <li><b>NF-2026-4401</b><span class=\"m\">Appeal · band review</span><span class=\"dy\">2 days</span></li>\n  <li><b>NF-2026-4388</b><span class=\"m\">Housing support · new</span><span class=\"dy\">1 day</span></li>\n  <li><b>NF-2026-4380</b><span class=\"m\">Discount · single person</span><span class=\"dy\">1 day</span></li>\n  <li><b>NF-2026-4377</b><span class=\"m\">Housing support · resubmitted</span><span class=\"dy\">today</span></li>\n</ul></nav></section><section class=\"dz-mod\" data-mod=\"case\" aria-label=\"Case pane\">\n<section class=\"cs\"><header><span class=\"k\">NF-2026-4412 · received 31 Aug</span><h1>Priya Ashworth-Blake</h1></header>\n<dl>\n  <div><dt>Address</dt><dd>Flat 2, 4 Marsh Lane, NF4 2QH</dd></div>\n  <div><dt>Household</dt><dd>2 adults, 1 child</dd></div>\n  <div><dt>Tenure</dt><dd>Rent from a private landlord</dd></div>\n  <div><dt>Declared income</dt><dd>Not provided</dd></div>\n  <div><dt>Disability benefit</dt><dd>Yes — not yet evidenced</dd></div>\n</dl>\n<div class=\"fg\"><span class=\"k\">Flags</span><span class=\"tag\">Income missing</span><span class=\"tag\">Evidence outstanding</span></div></section></section><section class=\"dz-mod\" data-mod=\"actions\" aria-label=\"Actions pane\">\n<aside class=\"ac\"><span class=\"k\">Decide</span>\n<button type=\"button\" class=\"pri\">Award</button>\n<button type=\"button\">Request evidence</button>\n<button type=\"button\">Refuse</button>\n<button type=\"button\">Refer to a senior officer</button>\n<span class=\"k\">Note</span>\n<textarea rows=\"5\">Income field left blank on the submitted form. Requesting bank statements for the last two months before assessing.</textarea>\n<button type=\"button\" class=\"sv\">Save note</button></aside></section><section class=\"dz-mod\" data-mod=\"status\" aria-label=\"Status strip\">\n<footer class=\"st ov2\"><span>This case is 4 days old. The service standard is 3 working days.</span><span class=\"m\">Officer: R. Idowu · Team: Housing 2</span></footer></section>\n</div>",
  "css": "\n.dz-ultra-civic-console { background: var(--background); color: var(--foreground); font-family: var(--pv-body); display: grid; grid-template-columns: 280px minmax(0, 1fr) 300px; grid-template-rows: minmax(0, 1fr) auto; min-height: 540px; }\n.dz-ultra-civic-console .k { font-size: 12.5px; display: block; }\n.dz-ultra-civic-console .qu { border-right: 2px solid var(--foreground); padding: 16px; overflow: auto; }\n.dz-ultra-civic-console .qu ul { list-style: none; margin: 12px 0 0; padding: 0; }\n.dz-ultra-civic-console .qu li { border: 2px solid var(--foreground); border-radius: 0; border-width: 0 0 2px; padding: 11px 8px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 10px; cursor: pointer; transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }\n.dz-ultra-civic-console .qu li:hover { background: var(--accent); color: var(--accent-foreground); }\n.dz-ultra-civic-console .qu .on { background: var(--primary); color: var(--primary-foreground); }\n.dz-ultra-civic-console .qu b { font-family: var(--pv-mono); font-size: 12.5px; }\n.dz-ultra-civic-console .m { font-size: 12.5px; }\n.dz-ultra-civic-console .qu .m { grid-column: 1 / -1; }\n.dz-ultra-civic-console .dy { font-family: var(--pv-mono); font-size: 11.5px; }\n.dz-ultra-civic-console .ov { font-weight: 700; }\n.dz-ultra-civic-console .cs { padding: 20px 24px; overflow: auto; }\n.dz-ultra-civic-console .cs h1 { font-family: var(--pv-display); text-transform: uppercase; font-weight: 700; letter-spacing: -.02em; font-size: 34px; margin: 6px 0 20px; }\n.dz-ultra-civic-console .cs dl { margin: 0; border-top: 2px solid var(--foreground); }\n.dz-ultra-civic-console .cs dl div { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 20px; padding: 12px 0; border-bottom: 2px solid var(--foreground); }\n.dz-ultra-civic-console .cs dt { font-size: 14px; }\n.dz-ultra-civic-console .cs dd { margin: 0; font-size: 16px; font-weight: 500; }\n.dz-ultra-civic-console .fg { padding-top: 20px; }\n.dz-ultra-civic-console .tag { display: inline-block; background: var(--accent); color: var(--accent-foreground); border: 2px solid var(--foreground); border-radius: 0; border-color: var(--accent); font-size: 13px; padding: 5px 12px; margin: 8px 8px 0 0; }\n.dz-ultra-civic-console .ac { border-left: 2px solid var(--foreground); padding: 16px; display: flex; flex-direction: column; gap: 10px; }\n.dz-ultra-civic-console .ac button { font: inherit; font-family: var(--pv-display); text-transform: uppercase; font-weight: 700; letter-spacing: -.02em; font-size: 15px; background: transparent; color: var(--foreground); border: 2px solid var(--foreground); border-radius: 0; padding: 11px; cursor: pointer; transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); }\n.dz-ultra-civic-console .ac button:hover { background: var(--foreground); color: var(--background); }\n.dz-ultra-civic-console .pri { background: var(--primary) !important; color: var(--primary-foreground) !important; border-color: var(--primary) !important; }\n.dz-ultra-civic-console .pri:hover { background: var(--background) !important; color: var(--primary) !important; }\n.dz-ultra-civic-console textarea { font: inherit; font-size: 14px; border: 2px solid var(--foreground); border-radius: 0; background: var(--card); color: var(--foreground); padding: 10px; resize: vertical; }\n.dz-ultra-civic-console textarea:focus-visible { outline: 4px solid var(--ring); outline-offset: 2px; }\n.dz-ultra-civic-console .sv { font-size: 13px !important; }\n.dz-ultra-civic-console .st { grid-column: 1 / -1; display: flex; align-items: center; gap: 20px; padding: 12px 24px; border-top: 2px solid var(--foreground); font-size: 14px; }\n.dz-ultra-civic-console .ov2 { background: var(--primary); color: var(--primary-foreground); }\n.dz-ultra-civic-console .st .m { margin-left: auto; }\n@media (prefers-reduced-motion: reduce) { .dz-ultra-civic-console *, .dz-ultra-civic-console *::before, .dz-ultra-civic-console *::after { transition-duration: 1ms !important; animation-duration: 1ms !important; } }",
  "requiredTheme": "/api/v1/themes/ultra-civic.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Azeret+Mono:wght@400;500;600;700&display=swap"
}