{
  "id": "ferro-brut-tender",
  "name": "Tender Sheet",
  "theme": "ferro-brut",
  "category": "Data & Reports",
  "description": "A priced bill of quantities with the arithmetic shown, because the number at the bottom is the whole argument and it has to be checkable.",
  "layout": "A full-bleed table with a 3px rule under every section subtotal and a sticky total bar welded to the bottom edge, plus a variance column that is the only place the accent appears.",
  "modules": [
    {
      "key": "head",
      "name": "Sheet header",
      "html": "\n<header class=\"hd\"><div><h1>Bill of quantities</h1><span class=\"m\">Hollin Bank flood wall · rev C · issued 12 Aug 2026</span></div>\n<dl><div><dt>Tender total</dt><dd class=\"big\">£2,861,400</dd></div><div><dt>Against budget</dt><dd class=\"ok\">−1.4%</dd></div></dl></header>"
    },
    {
      "key": "table",
      "name": "Priced items",
      "html": "\n<table>\n  <thead><tr><th>Item</th><th>Description</th><th class=\"r\">Qty</th><th>Unit</th><th class=\"r\">Rate</th><th class=\"r\">Amount</th><th class=\"r\">Var</th></tr></thead>\n  <tbody>\n    <tr class=\"sec\"><td colspan=\"7\">A · Groundworks</td></tr>\n    <tr><td>A.01</td><td>Site clearance and strip</td><td class=\"r\">4,820</td><td>m²</td><td class=\"r\">6.40</td><td class=\"r\">30,848</td><td class=\"r ok\">−2%</td></tr>\n    <tr><td>A.02</td><td>Bulk excavation to reduce level</td><td class=\"r\">11,400</td><td>m³</td><td class=\"r\">14.20</td><td class=\"r\">161,880</td><td class=\"r\">0%</td></tr>\n    <tr><td>A.03</td><td>Disposal off site, non-hazardous</td><td class=\"r\">9,120</td><td>m³</td><td class=\"r\">28.90</td><td class=\"r\">263,568</td><td class=\"r bad\">+9%</td></tr>\n    <tr class=\"sub\"><td colspan=\"5\">Subtotal A</td><td class=\"r\">456,296</td><td class=\"r ok\">−1%</td></tr>\n    <tr class=\"sec\"><td colspan=\"7\">B · Structural concrete</td></tr>\n    <tr><td>B.01</td><td>Blinding, 50mm GEN1</td><td class=\"r\">2,410</td><td>m²</td><td class=\"r\">11.80</td><td class=\"r\">28,438</td><td class=\"r\">0%</td></tr>\n    <tr><td>B.02</td><td>Reinforced wall, C40/50</td><td class=\"r\">1,860</td><td>m³</td><td class=\"r\">318.00</td><td class=\"r\">591,480</td><td class=\"r ok\">−3%</td></tr>\n    <tr><td>B.03</td><td>Reinforcement, high yield</td><td class=\"r\">214</td><td>t</td><td class=\"r\">1,940.00</td><td class=\"r\">415,160</td><td class=\"r bad\">+4%</td></tr>\n    <tr class=\"sub\"><td colspan=\"5\">Subtotal B</td><td class=\"r\">1,035,078</td><td class=\"r\">0%</td></tr>\n  </tbody>\n</table>"
    },
    {
      "key": "total",
      "name": "Total bar",
      "html": "\n<footer class=\"tt\"><span class=\"lb\">Tender total, excluding VAT</span><b>£2,861,400</b><span class=\"m\">Prepared by A. Kowalczyk · checked by R. Idowu</span><button type=\"button\" class=\"pr\">Issue</button></footer>"
    }
  ],
  "moduleCount": 3,
  "reorderable": true,
  "meta": {
    "id": "ferro-brut-tender",
    "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-tender.json",
  "structure": "A full-bleed table with a 3px rule under every section subtotal and a sticky total bar welded to the bottom edge, plus a variance column that is the only place the accent appears.",
  "html": "<div class=\"dz dz-ferro-brut-tender\" data-design=\"ferro-brut-tender\" data-theme=\"ferro-brut\">\n<section class=\"dz-mod\" data-mod=\"head\" aria-label=\"Sheet header\">\n<header class=\"hd\"><div><h1>Bill of quantities</h1><span class=\"m\">Hollin Bank flood wall · rev C · issued 12 Aug 2026</span></div>\n<dl><div><dt>Tender total</dt><dd class=\"big\">£2,861,400</dd></div><div><dt>Against budget</dt><dd class=\"ok\">−1.4%</dd></div></dl></header></section>\n<section class=\"dz-mod\" data-mod=\"table\" aria-label=\"Priced items\">\n<table>\n  <thead><tr><th>Item</th><th>Description</th><th class=\"r\">Qty</th><th>Unit</th><th class=\"r\">Rate</th><th class=\"r\">Amount</th><th class=\"r\">Var</th></tr></thead>\n  <tbody>\n    <tr class=\"sec\"><td colspan=\"7\">A · Groundworks</td></tr>\n    <tr><td>A.01</td><td>Site clearance and strip</td><td class=\"r\">4,820</td><td>m²</td><td class=\"r\">6.40</td><td class=\"r\">30,848</td><td class=\"r ok\">−2%</td></tr>\n    <tr><td>A.02</td><td>Bulk excavation to reduce level</td><td class=\"r\">11,400</td><td>m³</td><td class=\"r\">14.20</td><td class=\"r\">161,880</td><td class=\"r\">0%</td></tr>\n    <tr><td>A.03</td><td>Disposal off site, non-hazardous</td><td class=\"r\">9,120</td><td>m³</td><td class=\"r\">28.90</td><td class=\"r\">263,568</td><td class=\"r bad\">+9%</td></tr>\n    <tr class=\"sub\"><td colspan=\"5\">Subtotal A</td><td class=\"r\">456,296</td><td class=\"r ok\">−1%</td></tr>\n    <tr class=\"sec\"><td colspan=\"7\">B · Structural concrete</td></tr>\n    <tr><td>B.01</td><td>Blinding, 50mm GEN1</td><td class=\"r\">2,410</td><td>m²</td><td class=\"r\">11.80</td><td class=\"r\">28,438</td><td class=\"r\">0%</td></tr>\n    <tr><td>B.02</td><td>Reinforced wall, C40/50</td><td class=\"r\">1,860</td><td>m³</td><td class=\"r\">318.00</td><td class=\"r\">591,480</td><td class=\"r ok\">−3%</td></tr>\n    <tr><td>B.03</td><td>Reinforcement, high yield</td><td class=\"r\">214</td><td>t</td><td class=\"r\">1,940.00</td><td class=\"r\">415,160</td><td class=\"r bad\">+4%</td></tr>\n    <tr class=\"sub\"><td colspan=\"5\">Subtotal B</td><td class=\"r\">1,035,078</td><td class=\"r\">0%</td></tr>\n  </tbody>\n</table></section>\n<section class=\"dz-mod\" data-mod=\"total\" aria-label=\"Total bar\">\n<footer class=\"tt\"><span class=\"lb\">Tender total, excluding VAT</span><b>£2,861,400</b><span class=\"m\">Prepared by A. Kowalczyk · checked by R. Idowu</span><button type=\"button\" class=\"pr\">Issue</button></footer></section>\n</div>",
  "css": "\n.dz-ferro-brut-tender { background: var(--background); color: var(--foreground); font-family: var(--pv-body); }\n.dz-ferro-brut-tender .hd { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; padding: 18px 22px; border-bottom: 3px solid var(--foreground); }\n.dz-ferro-brut-tender .hd h1 { font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 36px; margin: 0 0 4px; }\n.dz-ferro-brut-tender .m { font-size: 12.5px; text-transform: uppercase; letter-spacing: .08em; color: var(--muted-foreground); }\n.dz-ferro-brut-tender .hd dl { display: flex; gap: 30px; margin: 0; }\n.dz-ferro-brut-tender .hd dt { font-size: 12px; text-transform: uppercase; letter-spacing: .1em; margin-bottom: 4px; }\n.dz-ferro-brut-tender .hd dd { margin: 0; font-family: var(--pv-mono); font-size: 15px; }\n.dz-ferro-brut-tender .big { font-size: 28px !important; font-weight: 700; }\n.dz-ferro-brut-tender .ok { color: var(--accent); } .dz-ferro-brut-tender .bad { color: var(--destructive); font-weight: 700; }\n.dz-ferro-brut-tender table { width: 100%; border-collapse: collapse; }\n.dz-ferro-brut-tender th { font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 14px; text-align: left; padding: 9px 12px; border-bottom: 3px solid var(--foreground); }\n.dz-ferro-brut-tender td { padding: 8px 12px; font-size: 13.5px; border-bottom: var(--pv-bw) solid var(--border); }\n.dz-ferro-brut-tender .r { text-align: right; font-family: var(--pv-mono); font-feature-settings: \"tnum\" 1; }\n.dz-ferro-brut-tender .sec td { font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 17px; background: var(--secondary); padding-top: 12px; padding-bottom: 10px; border-top: 3px solid var(--foreground); border-bottom: 3px solid var(--foreground); }\n.dz-ferro-brut-tender .sub td { font-weight: 700; border-top: 3px solid var(--foreground); border-bottom: 3px solid var(--foreground); text-transform: uppercase; letter-spacing: .08em; font-size: 13px; }\n.dz-ferro-brut-tender tbody tr:not(.sec):not(.sub):hover { background: var(--card); }\n.dz-ferro-brut-tender .tt { display: flex; align-items: center; gap: 20px; padding: 14px 22px; border-top: 3px solid var(--foreground); background: var(--card); }\n.dz-ferro-brut-tender .lb { font-size: 13px; text-transform: uppercase; letter-spacing: .1em; }\n.dz-ferro-brut-tender .tt b { font-family: var(--pv-mono); font-size: 32px; font-weight: 700; }\n.dz-ferro-brut-tender .pr { margin-left: auto; background: var(--primary); color: var(--primary-foreground); border: 3px solid var(--foreground); border-radius: 0; font-family: var(--pv-display); text-transform: uppercase; letter-spacing: .01em; font-weight: 400; font-size: 17px; padding: 9px 22px; cursor: pointer; }\n@media (prefers-reduced-motion: reduce) { .dz-ferro-brut-tender *, .dz-ferro-brut-tender *::before, .dz-ferro-brut-tender *::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"
}