{
  "id": "ferro-brut-plant",
  "name": "Plant Status",
  "theme": "ferro-brut",
  "category": "Dashboard",
  "description": "Machines as a wall of blocks: each one a plain rectangle whose fill says whether it is running, idle or down, readable across a site office.",
  "layout": "A six-across grid of equal square blocks with zero gutter, separated only by their own 3px borders, under a single-row status bar that spans the full width.",
  "modules": [
    {
      "key": "bar",
      "name": "Status bar",
      "html": "\n<header class=\"sb\"><h1>Plant · Beckton Yard</h1><div class=\"ct\"><span><b>18</b>running</span><span><b>4</b>idle</span><span class=\"dn\"><b>2</b>down</span></div><span class=\"ts\">06:41</span></header>"
    },
    {
      "key": "grid",
      "name": "Plant grid",
      "html": "\n<section class=\"gr\">\n  <article class=\"run\"><span class=\"id\">EX-01</span><b>Excavator 22t</b><span class=\"m\">Running · 4h 12m</span></article>\n  <article class=\"run\"><span class=\"id\">EX-02</span><b>Excavator 14t</b><span class=\"m\">Running · 2h 58m</span></article>\n  <article class=\"dwn\"><span class=\"id\">DZ-01</span><b>Dozer D6</b><span class=\"m\">Down · hydraulics</span></article>\n  <article class=\"run\"><span class=\"id\">TC-01</span><b>Tower crane</b><span class=\"m\">Running · 5h 04m</span></article>\n  <article class=\"idl\"><span class=\"id\">TC-02</span><b>Tower crane</b><span class=\"m\">Idle · no lift booked</span></article>\n  <article class=\"run\"><span class=\"id\">CP-01</span><b>Concrete pump</b><span class=\"m\">Running · pour 3</span></article>\n  <article class=\"run\"><span class=\"id\">TL-01</span><b>Telehandler</b><span class=\"m\">Running · 6h 40m</span></article>\n  <article class=\"idl\"><span class=\"id\">TL-02</span><b>Telehandler</b><span class=\"m\">Idle · operator break</span></article>\n  <article class=\"dwn\"><span class=\"id\">GN-01</span><b>Generator 60kVA</b><span class=\"m\">Down · service due</span></article>\n  <article class=\"run\"><span class=\"id\">RL-01</span><b>Roller</b><span class=\"m\">Running · 1h 22m</span></article>\n  <article class=\"run\"><span class=\"id\">DP-01</span><b>Dumper 9t</b><span class=\"m\">Running · 3h 11m</span></article>\n  <article class=\"idl\"><span class=\"id\">DP-02</span><b>Dumper 9t</b><span class=\"m\">Idle · awaiting muck</span></article>\n</section>"
    },
    {
      "key": "log",
      "name": "Movement log",
      "html": "\n<section class=\"lg\"><h2 class=\"sh\">Movements</h2>\n<ol>\n  <li><span class=\"t\">06:38</span><b>CP-01</b> arrived at gate 2 · pour 3 scheduled 07:00</li>\n  <li><span class=\"t\">06:12</span><b>DZ-01</b> reported down · hydraulic hose, fitter called</li>\n  <li><span class=\"t\">05:55</span><b>EX-02</b> started · operator J. Oyelaran</li>\n  <li><span class=\"t\">05:40</span><b>GN-01</b> locked out · 500h service overdue by 40h</li>\n</ol></section>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "ferro-brut-plant",
    "model": "Claude Opus 5",
    "author": "Claude Code",
    "createdAt": "2026-09-01T19:43:16+09:00",
    "updatedAt": "2026-09-01T19:43:16+09:00",
    "version": "1.0.0",
    "isNew": false
  },
  "link": "/api/v1/designs/ferro-brut-plant.json",
  "structure": "A six-across grid of equal square blocks with zero gutter, separated only by their own 3px borders, under a single-row status bar that spans the full width.",
  "html": "<div class=\"dz dz-ferro-brut-plant\" data-design=\"ferro-brut-plant\" data-theme=\"ferro-brut\">\n<section class=\"dz-mod\" data-mod=\"bar\" aria-label=\"Status bar\">\n<header class=\"sb\"><h1>Plant · Beckton Yard</h1><div class=\"ct\"><span><b>18</b>running</span><span><b>4</b>idle</span><span class=\"dn\"><b>2</b>down</span></div><span class=\"ts\">06:41</span></header></section>\n<section class=\"dz-mod\" data-mod=\"grid\" aria-label=\"Plant grid\">\n<section class=\"gr\">\n  <article class=\"run\"><span class=\"id\">EX-01</span><b>Excavator 22t</b><span class=\"m\">Running · 4h 12m</span></article>\n  <article class=\"run\"><span class=\"id\">EX-02</span><b>Excavator 14t</b><span class=\"m\">Running · 2h 58m</span></article>\n  <article class=\"dwn\"><span class=\"id\">DZ-01</span><b>Dozer D6</b><span class=\"m\">Down · hydraulics</span></article>\n  <article class=\"run\"><span class=\"id\">TC-01</span><b>Tower crane</b><span class=\"m\">Running · 5h 04m</span></article>\n  <article class=\"idl\"><span class=\"id\">TC-02</span><b>Tower crane</b><span class=\"m\">Idle · no lift booked</span></article>\n  <article class=\"run\"><span class=\"id\">CP-01</span><b>Concrete pump</b><span class=\"m\">Running · pour 3</span></article>\n  <article class=\"run\"><span class=\"id\">TL-01</span><b>Telehandler</b><span class=\"m\">Running · 6h 40m</span></article>\n  <article class=\"idl\"><span class=\"id\">TL-02</span><b>Telehandler</b><span class=\"m\">Idle · operator break</span></article>\n  <article class=\"dwn\"><span class=\"id\">GN-01</span><b>Generator 60kVA</b><span class=\"m\">Down · service due</span></article>\n  <article class=\"run\"><span class=\"id\">RL-01</span><b>Roller</b><span class=\"m\">Running · 1h 22m</span></article>\n  <article class=\"run\"><span class=\"id\">DP-01</span><b>Dumper 9t</b><span class=\"m\">Running · 3h 11m</span></article>\n  <article class=\"idl\"><span class=\"id\">DP-02</span><b>Dumper 9t</b><span class=\"m\">Idle · awaiting muck</span></article>\n</section></section>\n<section class=\"dz-mod\" data-mod=\"log\" aria-label=\"Movement log\">\n<section class=\"lg\"><h2 class=\"sh\">Movements</h2>\n<ol>\n  <li><span class=\"t\">06:38</span><b>CP-01</b> arrived at gate 2 · pour 3 scheduled 07:00</li>\n  <li><span class=\"t\">06:12</span><b>DZ-01</b> reported down · hydraulic hose, fitter called</li>\n  <li><span class=\"t\">05:55</span><b>EX-02</b> started · operator J. Oyelaran</li>\n  <li><span class=\"t\">05:40</span><b>GN-01</b> locked out · 500h service overdue by 40h</li>\n</ol></section></section>\n</div>",
  "css": "\n.dz-ferro-brut-plant { background: var(--background); color: var(--foreground); font-family: var(--pv-body); }\n.dz-ferro-brut-plant .sb { display: flex; align-items: center; gap: 26px; padding: 14px 22px; border-bottom: 3px solid var(--foreground); }\n.dz-ferro-brut-plant .sb h1 { font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 30px; margin: 0; }\n.dz-ferro-brut-plant .ct { display: flex; gap: 20px; margin-left: auto; }\n.dz-ferro-brut-plant .ct span { font-size: 13px; text-transform: uppercase; letter-spacing: .1em; display: inline-flex; align-items: baseline; gap: 7px; }\n.dz-ferro-brut-plant .ct b { font-family: var(--pv-mono); font-size: 24px; font-weight: 700; }\n.dz-ferro-brut-plant .dn b { color: var(--destructive); }\n.dz-ferro-brut-plant .ts { font-family: var(--pv-mono); font-size: 24px; font-weight: 700; background: var(--primary); color: var(--primary-foreground); border: 3px solid var(--foreground); border-radius: 0; padding: 2px 10px; }\n.dz-ferro-brut-plant .gr { display: grid; grid-template-columns: repeat(6, 1fr); }\n.dz-ferro-brut-plant .gr article { padding: 16px 14px 14px; border-right: 3px solid var(--foreground); border-bottom: 3px solid var(--foreground); display: flex; flex-direction: column; gap: 5px; min-height: 116px; position: relative; }\n.dz-ferro-brut-plant .gr article:nth-child(6n) { border-right: 0; }\n.dz-ferro-brut-plant .id { font-family: var(--pv-mono); font-size: 12px; font-weight: 700; }\n.dz-ferro-brut-plant .gr b { font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 19px; line-height: 1.05; }\n.dz-ferro-brut-plant .m { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; }\n.dz-ferro-brut-plant .run { background: var(--card); }\n.dz-ferro-brut-plant .idl { background: var(--secondary); }\n.dz-ferro-brut-plant .idl .m { color: var(--muted-foreground); }\n.dz-ferro-brut-plant .dwn { background: var(--primary); color: var(--primary-foreground); }\n.dz-ferro-brut-plant .dwn .m { font-weight: 700; }\n.dz-ferro-brut-plant .dwn::after { content: \"\"; position: absolute; inset: 0; border: 3px solid var(--foreground); pointer-events: none; }\n.dz-ferro-brut-plant .lg { padding: 20px 22px 26px; }\n.dz-ferro-brut-plant .sh { font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 24px; margin: 0 0 12px; }\n.dz-ferro-brut-plant .lg ol { list-style: none; margin: 0; padding: 0; }\n.dz-ferro-brut-plant .lg li { font-size: 14px; padding: 10px 0; border-bottom: var(--pv-bw) solid var(--border); }\n.dz-ferro-brut-plant .lg b { font-family: var(--pv-mono); font-weight: 700; }\n.dz-ferro-brut-plant .t { font-family: var(--pv-mono); font-size: 12px; margin-right: 14px; color: var(--accent); }\n@media (prefers-reduced-motion: reduce) { .dz-ferro-brut-plant *, .dz-ferro-brut-plant *::before, .dz-ferro-brut-plant *::after { transition-duration: 1ms !important; animation-duration: 1ms !important; } }",
  "requiredTheme": "/api/v1/themes/ferro-brut.json",
  "googleFontsHref": "https://fonts.googleapis.com/css2?family=Bebas+Neue:wght@400;500;600;700&family=Roboto+Condensed:wght@400;500;600;700&family=Roboto+Mono:wght@400;500;600;700&display=swap"
}