> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formepdf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Annual Report

> The annual report excerpt: a full-bleed accent cover with the monogram knocked out in outline, a dot-leader contents page, and a financial-highlights page whose income statement reconciles top to bottom.

<Frame caption="Page 1 of 3">
  <img src="https://mintcdn.com/dataferry/I-nCXjDKaxTBieX4/images/templates/report-annual/page-1.webp?fit=max&auto=format&n=I-nCXjDKaxTBieX4&q=85&s=77f68d674b2698496366eae645025e82" alt="Annual Report, page 1" width="1100" height="1424" data-path="images/templates/report-annual/page-1.webp" />
</Frame>

<Frame caption="Page 2 of 3">
  <img src="https://mintcdn.com/dataferry/I-nCXjDKaxTBieX4/images/templates/report-annual/page-2.webp?fit=max&auto=format&n=I-nCXjDKaxTBieX4&q=85&s=a7023d55196b52046f901e5295a52705" alt="Annual Report, page 2" width="1100" height="1424" data-path="images/templates/report-annual/page-2.webp" />
</Frame>

<Frame caption="Page 3 of 3">
  <img src="https://mintcdn.com/dataferry/I-nCXjDKaxTBieX4/images/templates/report-annual/page-3.webp?fit=max&auto=format&n=I-nCXjDKaxTBieX4&q=85&s=835586f0a8a4581d68ab24848c4912f9" alt="Annual Report, page 3" width="1100" height="1424" data-path="images/templates/report-annual/page-3.webp" />
</Frame>

The annual report excerpt: a full-bleed accent cover with the monogram knocked out in outline, a dot-leader contents page, and a financial-highlights page whose income statement reconciles top to bottom. Change the year, the KPI values and the income statement in `data.json` first; the cover strap should restate the headline numbers. The folios are editorial ("Page 2", feet 02/03) because these are excerpt pages of a 78-page report, so a "Page n of m" counter would mislead — the cover carries no counter, following the design.

**Engine features exercised:** named pages (cover / contents / highlights) with per-page margin-box overrides and suppression, full-bleed via absolute margin strips, CSS grid KPI rows, dotted-leader flex rows, `break-before: page`.

Render it:

```bash theme={null}
npx @formepdf/html templates/report-annual/index.html -o report-annual.pdf
```

<CodeGroup>
  ```html index.html theme={null}
  <!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="utf-8">
  <title>Annual Report and Accounts 2026 — Northmoor Industrial Group, Inc.</title>
  <link rel="stylesheet" href="../northmoor-shared.css">
  <link rel="stylesheet" href="style.css">
  </head>
  <body>

  <div class="cover">
    <header class="coverhead">
      <div class="coverbleed-top"></div><div class="coverbleed-bottom"></div><div class="coverbleed-left"></div><div class="coverbleed-right"></div>
      <div class="coverfield">
        <div class="cover-toprow">
          <div class="mast-left" style="gap: 12.75pt">
            <div class="cover-mark">N</div>
            <div class="cover-id">
              <div class="wm" style="font-size: 11.25pt">Northmoor</div>
              <div class="cover-sub">Industrial Group, Inc. · Rochester, New York</div>
            </div>
          </div>
          <div class="cover-right">Fabrication · Piping<br>Controls · Service</div>
        </div>
        <h1 class="cover-title">Annual Report<br>and Accounts</h1>
        <div class="cover-yearrow">
          <div class="cover-year">2026</div>
          <div class="cover-strap">Revenue of 128.4 million dollars, an operating margin of 8.8 per cent, and sixty-two days at the year end without a recordable injury.</div>
        </div>
      </div>
    </header>

    <div class="cover-lower">
      <div class="cover-meta">
        <div><div class="lbl" style="margin-bottom: 4.5pt">Financial year ended</div>30 June 2026</div>
        <div><div class="lbl" style="margin-bottom: 4.5pt">Incorporated</div>New York, 1978</div>
        <div><div class="lbl" style="margin-bottom: 4.5pt">Registered no.</div>NY 214-88-0031</div>
        <div><div class="lbl" style="margin-bottom: 4.5pt">Report published</div>07 September 2026</div>
      </div>
      <div class="hair" style="margin-top: 19.5pt"></div>
      <div class="cover-note">This report covers Northmoor Industrial Group, Inc. and its wholly owned subsidiary Northmoor Service Company. The statutory financial statements, on which the auditor has reported, appear on pages 50 to 75.</div>
      <div class="cover-foot">
        <div class="cover-addr">418 Ellingham Road, Suite 300, Rochester, New York 14604<br>(585) 274-0180 · northmoorgroup.com</div>
        <div class="lbl">Copy 1 of 400 · not for distribution before 07 Sep</div>
      </div>
    </div>
  </div>

  <div class="pg-contents">
    <h2 class="sectitle">Contents</h2>
    <div class="lbl toc-group">Strategic report</div>
    <div class="toc"><span>Chairman's statement</span><span class="dots"></span><span class="folio">04</span></div>
    <div class="toc"><span>Chief executive's review of the year</span><span class="dots"></span><span class="folio">06</span></div>
    <div class="toc"><span>Our markets and where we compete</span><span class="dots"></span><span class="folio">10</span></div>
    <div class="toc"><span>Operating review — fabrication and piping</span><span class="dots"></span><span class="folio">14</span></div>
    <div class="toc"><span>Operating review — controls and service</span><span class="dots"></span><span class="folio">18</span></div>
    <div class="toc"><span>Safety, people and community</span><span class="dots"></span><span class="folio">22</span></div>
    <div class="toc"><span>Principal risks and how we manage them</span><span class="dots"></span><span class="folio">26</span></div>
    <div class="lbl toc-group-next">Governance</div>
    <div class="toc"><span>Board of directors</span><span class="dots"></span><span class="folio">32</span></div>
    <div class="toc"><span>Directors' report</span><span class="dots"></span><span class="folio">34</span></div>
    <div class="toc"><span>Audit committee report</span><span class="dots"></span><span class="folio">38</span></div>
    <div class="toc"><span>Directors' remuneration</span><span class="dots"></span><span class="folio">41</span></div>
    <div class="lbl toc-group-next">Financial statements</div>
    <div class="toc"><span>Independent auditor's report</span><span class="dots"></span><span class="folio">46</span></div>
    <div class="toc"><span>Statements of income and comprehensive income</span><span class="dots"></span><span class="folio">50</span></div>
    <div class="toc"><span>Balance sheets</span><span class="dots"></span><span class="folio">51</span></div>
    <div class="toc"><span>Statements of cash flows</span><span class="dots"></span><span class="folio">52</span></div>
    <div class="toc"><span>Notes to the financial statements</span><span class="dots"></span><span class="folio">54</span></div>
    <div class="lbl toc-group-next">Other information</div>
    <div class="toc"><span>Five-year summary</span><span class="dots"></span><span class="folio">76</span></div>
    <div class="toc"><span>Shareholder information and advisers</span><span class="dots"></span><span class="folio">78</span></div>
    <footer class="foot foot-annual">
      <div style="flex-grow: 1">This report covers Northmoor Industrial Group, Inc. and its wholly owned subsidiary Northmoor Service Company. Figures are in thousands of US dollars unless stated.</div>
      <div>02</div>
    </footer>
  </div>

  <div class="pg-highlights">
    <h2 class="sectitle">Financial highlights</h2>
    <div class="kpirow">
      <div class="kpi"><div class="lbl">Revenue</div><div class="v">128.4</div><div class="d">$ million, up 7.1% on 2025 (119.9)</div></div>
      <div class="kpi"><div class="lbl">Operating income</div><div class="v">11.3</div><div class="d">$ million, margin 8.8% (2025: 8.1%)</div></div>
      <div class="kpi"><div class="lbl">Net income</div><div class="v">7.9</div><div class="d">$ million, up 13.6% on 2025 (7.0)</div></div>
      <div class="kpi"><div class="lbl">Order backlog</div><div class="v">41.2</div><div class="d">$ million at 30 June, 4.9 months' cover</div></div>
    </div>

    <h3 class="sh">Summary income statement</h3>
    <table class="t">
      <thead><tr><th scope="col">Thousands of US dollars</th><th scope="col" class="num" style="width: 75pt">2026</th><th scope="col" class="num" style="width: 75pt">2025</th><th scope="col" class="num" style="width: 67.5pt">Change</th></tr></thead>
      <tbody>
        <tr><td>Revenue</td><td class="num">128,412</td><td class="num">119,904</td><td class="num">+7.1%</td></tr>
        <tr><td>Cost of sales</td><td class="num">(96,670)</td><td class="num">(91,032)</td><td class="num">+6.2%</td></tr>
        <tr class="gsub"><td>Gross profit</td><td class="num">31,742</td><td class="num">28,872</td><td class="num">+9.9%</td></tr>
        <tr><td>Selling, general and administrative</td><td class="num">(20,456)</td><td class="num">(19,178)</td><td class="num">+6.7%</td></tr>
        <tr class="gsub"><td>Operating income</td><td class="num">11,286</td><td class="num">9,694</td><td class="num">+16.4%</td></tr>
        <tr><td>Interest expense, net</td><td class="num">(1,204)</td><td class="num">(1,318)</td><td class="num">−8.6%</td></tr>
        <tr><td>Income tax</td><td class="num">(2,164)</td><td class="num">(1,405)</td><td class="num">+54.0%</td></tr>
        <tr class="gsub"><td>Net income</td><td class="num">7,918</td><td class="num">6,971</td><td class="num">+13.6%</td></tr>
      </tbody>
    </table>

    <div class="threecol">
      <div class="c-wide">
        <div class="lbl" style="margin-bottom: 7.5pt">Revenue by segment</div>
        <table class="t small-t">
          <tbody>
            <tr><td>Fabrication</td><td class="num">54,208</td><td class="num">42.2%</td></tr>
            <tr><td>Piping and fittings</td><td class="num">33,714</td><td class="num">26.3%</td></tr>
            <tr><td>Controls</td><td class="num">21,896</td><td class="num">17.0%</td></tr>
            <tr><td>Service and maintenance</td><td class="num">18,594</td><td class="num">14.5%</td></tr>
            <tr class="gsub"><td>Total</td><td class="num">128,412</td><td class="num">100.0%</td></tr>
          </tbody>
        </table>
      </div>
      <div class="c-wide">
        <div class="lbl" style="margin-bottom: 7.5pt">Five-year revenue and margin</div>
        <table class="t small-t">
          <thead><tr><th scope="col">Year</th><th scope="col" class="num">Revenue</th><th scope="col" class="num">Op. margin</th></tr></thead>
          <tbody>
            <tr><td>2022</td><td class="num">94,180</td><td class="num">6.4%</td></tr>
            <tr><td>2023</td><td class="num">103,662</td><td class="num">7.0%</td></tr>
            <tr><td>2024</td><td class="num">112,418</td><td class="num">7.6%</td></tr>
            <tr><td>2025</td><td class="num">119,904</td><td class="num">8.1%</td></tr>
            <tr><td>2026</td><td class="num">128,412</td><td class="num">8.8%</td></tr>
          </tbody>
        </table>
      </div>
      <div class="c-narrow">
        <div class="lbl" style="margin-bottom: 7.5pt">Non-financial measures</div>
        <table class="t small-t">
          <tbody>
            <tr><td>Employees at year end</td><td class="num">412</td></tr>
            <tr><td>Recordable injury rate</td><td class="num">1.12</td></tr>
            <tr><td>On-time delivery</td><td class="num">94.2%</td></tr>
            <tr><td>Scrap and rework</td><td class="num">1.8%</td></tr>
            <tr><td>Customers billed in year</td><td class="num">318</td></tr>
          </tbody>
        </table>
      </div>
    </div>

    <div class="prose" style="margin-top: 16.5pt; max-width: 323pt"><p>Revenue growth came principally from the controls segment, where two hospital programmes moved into installation, and from a full year of the Kestrel service agreement. Gross margin improved seventy basis points, three quarters of which is attributable to the changeover work at the finishing line rather than to price.</p></div>

    <footer class="foot foot-annual">
      <div style="flex-grow: 1">The summary above is not the statutory financial statements. Those appear on pages 50 to 75 and are the only figures on which the auditor has reported.</div>
      <div>03</div>
    </footer>
  </div>

  </body>
  </html>
  ```

  ```css style.css theme={null}
  /* report-annual — cover, contents, financial highlights.
   * Accent policy (annual report): full-bleed accent field on the cover
   * with the monogram knocked out in outline; contents folio numbers;
   * KPI keylines. Cover text colours are the design's white-alpha values
   * flattened over the accent (no alpha in the subset, and flat colours
   * survive grayscale identically).
   * The design's folios are editorial ("Page 2", "Page 3", feet 02/03) —
   * this is a three-page excerpt of a 78-page report, so "of m" would
   * mislead; noted in the README. */
  @page {
    size: Letter;
    margin: 52.5pt 57pt 40.5pt;
    @top-left {
      content: "Northmoor · Annual report 2026";
      color: #7B2233;
      font-family: Helvetica, Arial, sans-serif;
      font-weight: 700;
      font-size: 5.625pt;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      border-bottom: 0.75pt solid #111111;
      padding-bottom: 6pt;
    }
    @top-center {
      content: "Contents";
      color: #5F5A53;
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      border-bottom: 0.75pt solid #111111;
      padding-bottom: 6pt;
    }
    @top-right {
      content: "Financial year ended 30 June 2026";
      color: #5F5A53;
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      border-bottom: 0.75pt solid #111111;
      padding-bottom: 6pt;
    }
    @bottom-right {
      content: "Page " counter(page);
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: #8A857E;
    }
  }
  @page cover {
    margin: 43.5pt 57pt 39pt; /* the cover field's own 58/76/52px paddings */
    @top-left { content: none }
    @top-center { content: none }
    @top-right { content: none }
    @bottom-right { content: none }
  }
  @page contents {
    @bottom-left {
      content: "Annual report 2026 · Contents";
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: #8A857E;
    }
  }
  @page highlights {
    @top-center {
      content: "Financial highlights";
      color: #5F5A53;
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      border-bottom: 0.75pt solid #111111;
      padding-bottom: 6pt;
    }
    @top-right {
      content: "Strategic report";
      color: #5F5A53;
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.15em;
      text-transform: uppercase;
      border-bottom: 0.75pt solid #111111;
      padding-bottom: 6pt;
    }
    @bottom-left {
      content: "Annual report 2026 · Financial highlights";
      font-family: Helvetica, Arial, sans-serif;
      font-size: 5.625pt;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: #8A857E;
    }
  }
  .cover { page: cover }
  .pg-contents { page: contents; break-before: page }
  .pg-highlights { page: highlights; break-before: page }

  /* Cover field: full-bleed accent behind, in-flow content on top. The
   * field runs from the page top to 367.5pt (490px), the design's cover
   * block. */
  .coverhead { position: relative; }
  /* The bleed is four margin strips around the in-flow field (absolute
   * children paint over in-flow siblings, so a single full rect would
   * cover the cover text). */
  .coverbleed-top { position: absolute; top: -43.5pt; left: -57pt; right: -57pt; height: 43.5pt; background-color: #7B2233; }
  .coverbleed-bottom { position: absolute; top: 285pt; left: -57pt; right: -57pt; height: 39pt; background-color: #7B2233; }
  .coverbleed-left { position: absolute; top: 0; left: -57pt; width: 57pt; height: 285pt; background-color: #7B2233; }
  .coverbleed-right { position: absolute; top: 0; right: -57pt; width: 57pt; height: 285pt; background-color: #7B2233; }
  .coverfield { height: 285pt; color: #FDFCFA; background-color: #7B2233; } /* 367.5 − 43.5 top − 39 bottom */
  .cover-toprow { display: flex; justify-content: space-between; align-items: flex-start; }
  .cover-mark {
    width: 39pt;
    height: 39pt;
    border: 1.125pt solid #E9DBDC;
    color: #FDFCFA;
    font-family: Georgia, 'Times New Roman', serif;
    font-weight: 700;
    font-size: 17.25pt;
    line-height: 36.75pt;
    text-align: center;
  }
  .cover-id { padding-top: 6.75pt; }
  .cover-sub { font-family: Helvetica, Arial, sans-serif; font-weight: 700; font-size: 5.25pt; line-height: 1.5; letter-spacing: 0.17em; text-transform: uppercase; color: #DBC3C6; margin-top: 5.25pt; }
  .cover-right { font-family: Helvetica, Arial, sans-serif; font-weight: 700; font-size: 5.25pt; line-height: 1.7; letter-spacing: 0.17em; text-transform: uppercase; color: #DBC3C6; text-align: right; }
  .cover-title { font-family: Georgia, 'Times New Roman', serif; font-weight: 400; font-size: 43.5pt; line-height: 1.02; letter-spacing: -0.026em; margin-top: 51pt; }
  .cover-yearrow { display: flex; align-items: flex-end; justify-content: space-between; gap: 30pt; margin-top: 21pt; border-top: 0.75pt solid #B27E87; padding-top: 15pt; }
  .cover-year { font-family: Georgia, 'Times New Roman', serif; font-weight: 400; font-size: 66pt; line-height: 0.8; letter-spacing: -0.035em; }
  .cover-strap { font-family: Georgia, 'Times New Roman', serif; font-size: 7.875pt; line-height: 1.72; max-width: 141.75pt; text-align: right; color: #F5EEEE; }
  .cover-lower { padding-top: 70.5pt; display: flex; flex-direction: column; height: 354pt; } /* clears the 39pt accent strip + the design's 42px gap; 709.5 − 285 − 70.5 */
  .cover-meta { display: grid; grid-template-columns: repeat(4, 1fr); gap: 21pt; font-size: 7.125pt; line-height: 1.65; }
  .cover-note { margin-top: 19.5pt; font-family: Georgia, 'Times New Roman', serif; font-size: 9pt; line-height: 1.8; max-width: 279pt; }
  .cover-foot { margin-top: auto; display: flex; justify-content: space-between; align-items: flex-end; }
  .cover-addr { font-size: 6.375pt; line-height: 1.7; color: #5F5A53; }

  /* Contents + highlights */
  .sectitle { font-family: Helvetica, Arial, sans-serif; font-weight: 400; font-size: 18pt; line-height: 1.1; letter-spacing: 0.01em; }
  .toc .dots { position: relative; top: -2.25pt; }
  .toc-group { margin: 19.5pt 0 3pt; }
  .toc-group-next { margin: 19.5pt 0 3pt; }
  .kpirow { display: grid; grid-template-columns: repeat(4, 1fr); gap: 19.5pt; margin-top: 19.5pt; }
  .threecol { display: flex; gap: 25.5pt; margin-top: 19.5pt; }
  .threecol .c-wide { width: 34%; }
  .threecol .c-narrow { width: 30%; }
  .small-t { font-size: 6.75pt; }
  .foot-annual { margin-top: 15pt; }
  ```
</CodeGroup>

Both files assume [`northmoor-shared.css`](https://github.com/formepdf/forme/blob/main/templates/northmoor-shared.css) alongside them — the set's shared spine (type scale, tables, signature blocks, the accent).

<Accordion title="Sample data (data.json)">
  ```json data.json theme={null}
  {
    "documentTitle": "Annual Report and Accounts",
    "year": 2026,
    "issuer": "Northmoor Industrial Group, Inc.",
    "coverStrap": "Revenue of 128.4 million dollars, an operating margin of 8.8 per cent, and sixty-two days at the year end without a recordable injury.",
    "meta": {
      "financialYearEnded": "30 June 2026",
      "incorporated": "New York, 1978",
      "registeredNo": "NY 214-88-0031",
      "published": "07 September 2026"
    },
    "kpis": [
      {
        "label": "Revenue",
        "value": 128.4,
        "note": "$ million, up 7.1% on 2025 (119.9)"
      },
      {
        "label": "Operating income",
        "value": 11.3,
        "note": "$ million, margin 8.8% (2025: 8.1%)"
      },
      {
        "label": "Net income",
        "value": 7.9,
        "note": "$ million, up 13.6% on 2025 (7.0)"
      },
      {
        "label": "Order backlog",
        "value": 41.2,
        "note": "$ million at 30 June, 4.9 months' cover"
      }
    ],
    "incomeStatement": {
      "revenue": 128412,
      "costOfSales": -96670,
      "grossProfit": 31742,
      "sga": -20456,
      "operatingIncome": 11286,
      "interest": -1204,
      "tax": -2164,
      "netIncome": 7918,
      "prior": {
        "revenue": 119904,
        "costOfSales": -91032,
        "grossProfit": 28872,
        "sga": -19178,
        "operatingIncome": 9694,
        "interest": -1318,
        "tax": -1405,
        "netIncome": 6971
      }
    },
    "revenueBySegment": [
      [
        "Fabrication",
        54208,
        "42.2%"
      ],
      [
        "Piping and fittings",
        33714,
        "26.3%"
      ],
      [
        "Controls",
        21896,
        "17.0%"
      ],
      [
        "Service and maintenance",
        18594,
        "14.5%"
      ]
    ],
    "fiveYear": [
      [
        2022,
        94180,
        "6.4%"
      ],
      [
        2023,
        103662,
        "7.0%"
      ],
      [
        2024,
        112418,
        "7.6%"
      ],
      [
        2025,
        119904,
        "8.1%"
      ],
      [
        2026,
        128412,
        "8.8%"
      ]
    ],
    "nonFinancial": {
      "employees": 412,
      "recordableInjuryRate": 1.12,
      "onTimeDelivery": "94.2%",
      "scrapAndRework": "1.8%",
      "customersBilled": 318
    }
  }
  ```
</Accordion>

***

MIT-licensed, free to copy — [source on GitHub](https://github.com/formepdf/forme/tree/main/templates/report-annual). Passes PDF/UA-1 validation (veraPDF) in CI; validation is a floor, not a certification.
