| Income statement summary | 2024 | 2023 | 2022 | 2021 | 2020 | 2019 |
|---|---|---|---|---|---|---|
| Revenue (million EUR) | 539.0 | 466.3 | 409.6 | 339.4 | 315,9 | 326.8 |
| Gross profit (loss) (million EUR) | 95.9 | 65.0 | 53.7 | 46,8 | 43.7 | 34.8 |
| Gross profit margin (%) | 17.8 | 13.9 | 13.1 | 13,8 | 13.8 | 10.7 |
| Operating profit (loss) (million EUR) | 72.5 | 44.5 | 35.0 | 32,2 | 25.5 | 19.2 |
| Operating profit margin (%) | 13.4 | 9.5 | 8.6 | 9,5 | 8.1 | 5.9 |
| Profit (loss) before tax (million EUR) | 76.4 | 52.0 | 37.1 | 32.1 | 24.5 | 20.3 |
| PBT margin (%) | 14.2 | 11.1 | 9.1 | 9,5 | 7.7 | 6.2 |
| Net profit (loss) for the financial year (million EUR) | 64.6 | 45.9 | 34.1 | 29.0 | 22.5 | 16.5 |
| attributable to equity holders of the parent (million EUR) | 64.7 | 46.0 | 34.6 | 29,1 | 23.0 | 16.3 |
| attributable to non-controlling interest (million EUR) | -0.1 | -0.1 | -0.5 | -0,1 | -0.5 | 0.2 |
| Net profit margin (%) | 12.0 | 9.9 | 8.5 | 8,6 | 7.3 | 5.0 |
| Other income statement indicators attributable to equity holders of the parent | 2024 | 2023 | 2022 | 2021 | 2020 | 2019 |
| EBITDA (million EUR) | 75.7 | 48.1 | 37.9 | 34.8 | 28.2 | 21.9 |
| EBITDA margin (%) | 14.0 | 10.3 | 9.3 | 10.3 | 8.9 | 6.7 |
| General expense ratio (%) | 5.0 | 5.1 | 4.9 | 5.2 | 5.6 | 5.3 |
| Staff costs ratio (%) | 9.8 | 10.8 | 10.3 | 11.3 | 11.5 | 11.4 |
| Revenue per employee (thousand EUR) | 882 | 718 | 623 | 521 | 478 | 461 |
| Other significant indicators | 31/12/2024 | 31/12/2023 | 31/12/2022 | 31/12/2021 | 31/12/2020 | 31/12/2019 |
| ROE (%) | 28.4 | 23.4 | 20.4 | 18.8 | 16.2 | 12.9 |
| ROA (%) | 14.8 | 11.8 | 9.2 | 10.0 | 8.4 | 5.6 |
| ROIC (%) | 29.8 | 20.6 | 15.1 | 16.9 | 13.1 | 11.1 |
| Assets (million EUR) | 447.1 | 452.3 | 387.4 | 324.4 | 256.9 | 281.8 |
| Equity (million EUR) | 254.3 | 211.9 | 183.7 | 167.0 | 157.4 | 134.6 |
| Equity attributable to equity holders of the parent (million EUR) | 254.3 | 212.1 | 184.2 | 167.2 | 153.2 | 130.3 |
| Equity ratio (%) | 56.9 | 49.9 | 47.5 | 51.6 | 59.6 | 46.2 |
| Debt ratio (%) | 7.5 | 12.9 | 23.7 | 16.2 | 11.3 | 22.6 |
| Current ratio (times) | 2.1 | 2.0 | 2.0 | 2.4 | 2.7 | 2.4 |
| Quick ratio (times) | 0.9 | 0.9 | 0.6 | 0.9 | 1.0 | 0.8 |
| Accounts receivable turnover (days) | 43 | 38 | 33 | 31 | 35 | 45 |
| Accounts payable turnover (days) | 46 | 40 | 55 | 39 | 37 | 53 |
| Number of employees 31.12. (people) | 605 | 635 | 661 | 670 | 666 | 694 |
| Average number of employees (people) | 611 | 649 | 657 | 651 | 661 | 709 |
| Secured order book (million EUR) | 341 | 477 | 297 | 257 | 225 | 141 |
| New contracts signed (million EUR) | 338 | 501 | 318 | 288 | 277 | 170 |
| Share-related key figures attributable to equity holders of the parent | 2024 | 2023 | 2022 | 2021 | 2020 | 2019 |
| Earnings per share (EPS) (EUR) | 3.65 | 2.60 | 1.96 | 1.65 | 1.30 | 0.92 |
| Equity per share (EUR) | 12.88 | 11.11 | 9.57 | 8,76 | 8.01 | 7.13 |
| Dividend per share (EUR) | 1.90 | 1.30 | 1.00 | 1.00 | 1.00 | 0.00 |
| Dividend rate (%) | 52 | 50 | 51 | 61 | 77 | 0 |
| Dividend yield (%) | 9.1 | 8.5 | 7.1 | 6.6 | 10.6 | 0.0 |
| P/E ratio (times) | 5.71 | 5.88 | 7.24 | 9.24 | 7.28 | 10.20 |
| P/B ratio (times) | 1.62 | 1.38 | 1.48 | 1.74 | 1.18 | 1.32 |
| Share price trend | ||||||
| Average (EUR) | 17.00 | 15.18 | 14.50 | 14.41 | 8.80 | 9.55 |
| Highest (EUR) | 21.55 | 16.36 | 16.96 | 17.14 | 10.60 | 10.30 |
| Lowest (EUR) | 15.10 | 14.14 | 11.60 | 9.48 | 6.56 | 8.74 |
| Share price 31.12. (EUR) | 20.85 | 15.30 | 14.16 | 15.22 | 9.46 | 9.38 |
| Market value 31.12. (million EUR) | 369.0 | 270.8 | 250.6 | 269.4 | 167.4 | 166.0 |
| Share turnover trend | ||||||
| Share turnover (million EUR) | 13.57 | 12.85 | 18.16 | 29.78 | 13.97 | 21.31 |
| Transactions (pcs) | 23384 | 28455 | 40602 | 46961 | 22033 | 8558 |
| Shares traded (million pcs) | 0.79 | 0.84 | 1.22 | 2.06 | 1.62 | 2.23 |
| Ratio of shares traded (%) | 4.5 | 4.7 | 6.9 | 11.6 | 9.2 | 12.6 |
| Number of shares (million EUR) | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 |
| Number of shareholders 31.12. (pcs) | 12876 | 12876 | 11587 | 9309 | 5658 | 3924 |
| Income statement summary | Q3 2025 | Q2 2025 | Q1 2025 | Q4 2024 | Q3 2024 | Q2 2024 | Q1 2024 | Q4 2023 | Q3 2023 |
|---|---|---|---|---|---|---|---|---|---|
| Revenue (million EUR) | 73.9 | 82.6 | 85.2 | 160.4 | 175.1 | 122.4 | 81.2 | 126.5 | 122.5 |
| Gross profit (loss) (million EUR) | 18.0 | 14.2 | 14.9 | 32.8 | 39.4 | 14.8 | 8.9 | 21.8 | 17.4 |
| Gross profit margin (%) | 24.3 | 17.1 | 17.5 | 20,5 | 22.5 | 12.1 | 10.9 | 17.3 | 14.2 |
| Operating profit (loss) (million EUR) | 13.0 | 8.7 | 9.9 | 25.4 | 32.3 | 10.7 | 4.0 | 14.4 | 12.0 |
| Operating profit margin (%) | 17.6 | 10.6 | 11.6 | 15.9 | 18.5 | 8.7 | 5.0 | 11.4 | 9.8 |
| Profit (loss) before tax (million EUR) | 16.6 | 11.9 | 11.6 | 26.8 | 31.3 | 13.1 | 5.2 | 18.1 | 13.6 |
| PBT margin (%) | 22.5 | 14.4 | 13.6 | 16.7 | 17.9 | 10.7 | 6.4 | 14.3 | 11.1 |
| Net profit (loss) for the financial year (million EUR) | 15.0 | 11.2 | 10.5 | 19.9 | 27.3 | 13.1 | 4.4 | 13.9 | 12.7 |
| attributable to equity holders of the parent (million EUR) | 15.0 | 11.2 | 10.5 | 19.9 | 27.3 | 13.1 | 4.4 | 13.9 | 12.7 |
| attributable to non-controlling interest (million EUR) | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| Net profit margin (%) | 20.3 | 13.6 | 12.3 | 12.4 | 15.6 | 10.7 | 5.5 | 11.0 | 10.4 |
| Other income statement indicators attributable to equity holders of the parent | Q3 2025 | Q2 2025 | Q1 2025 | Q4 2024 | Q3 2024 | Q2 2024 | Q1 2024 | Q4 2023 | Q3 2023 |
| EBITDA (million EUR) | 13.8 | 9.5 | 10.6 | 26.3 | 33.1 | 11.4 | 4.9 | 15.7 | 12.8 |
| EBITDA margin (%) | 18.6 | 11.5 | 12.5 | 16.4 | 18.9 | 9.4 | 6.0 | 12.5 | 10.5 |
| General expense ratio (%) | 7.2 | 7.1 | 6.5 | 5.3 | 4.3 | 4.7 | 6.4 | 6.2 | 4.5 |
| Staff costs ratio (%) | 21.0 | 14.1 | 13.1 | 10.5 | 7.7 | 8.6 | 14.8 | 12.4 | 9.5 |
| Revenue per employee (thousand EUR) | 124 | 139 | 143 | 262 | 286 | 201 | 134 | 195 | 188 |
| Other significant indicators | 30/9/2025 | 30/6/2025 | 31/3/2025 | 31/12/2024 | 30/9/2024 | 30/6/2024 | 31/3/2024 | 31/12/2023 | 30/9/2023 |
| ROE (%) | 22.2 | 27.7 | 29.5 | 28.4 | 27.0 | 21.2 | 21.9 | 23.4 | 26.2 |
| ROA (%) | 13.4 | 15.8 | 16.1 | 14.8 | 13.6 | 10.6 | 11.1 | 11.8 | 13.0 |
| ROIC (%) | 24.2 | 30.0 | 31.2 | 29.8 | 27.1 | 20.4 | 20.5 | 20.6 | 20.5 |
| Assets (million EUR) | 399.6 | 403.5 | 433.7 | 447.1 | 457.8 | 418.3 | 426.1 | 425.3 | 398.9 |
| Equity (million EUR) | 257.3 | 242.3 | 264.7 | 254.3 | 234.4 | 206.4 | 216.4 | 211.9 | 198.0 |
| Equity attributable to equity holders of the parent (million EUR) | 257.3 | 242.3 | 264.7 | 254.3 | 234.6 | 206.5 | 216.6 | 212.1 | 198.4 |
| Equity ratio (%) | 64.4 | 60.1 | 61.0 | 56.9 | 51.3 | 49.4 | 50.8 | 49.9 | 49.7 |
| Debt ratio (%) | 6.6 | 6.1 | 5.8 | 7.5 | 8.5 | 8.0 | 11.5 | 12.9 | 15.0 |
| Current ratio (times) | 2.9 | 2.5 | 2.6 | 2.1 | 2.0 | 1.9 | 2.1 | 2.0 | 2.0 |
| Quick ratio (times) | 1.0 | 1.0 | 1.1 | 0.9 | 0.9 | 0.8 | 0.9 | 0.9 | 0.7 |
| Accounts receivable turnover (days) | 40 | 41 | 42 | 43 | 49 | 51 | 42 | 38 | 36 |
| Accounts payable turnover (days) | 50 | 49 | 47 | 46 | 46 | 45 | 40 | 40 | 39 |
| Number of employees at the end of quarter (people) | 614 | 605 | 604 | 605 | 616 | 632 | 621 | 635 | 663 |
| Average number of employees (people) | 597 | 593 | 594 | 611 | 613 | 610 | 608 | 649 | 652 |
| Secured order book (million EUR) | 486.2 | 443.8 | 331.9 | 340.6 | 430.9 | 437.5 | 419.0 | 477.5 | 448.6 |
| New contracts signed (million EUR) | 99.6 | 172.6 | 50.6 | 45.9 | 152.6 | 129.0 | 10.5 | 121.4 | 124.7 |
| Share-related key figures attributable to equity holders of the parent | Q3 2025 | Q2 2025 | Q1 2025 | Q4 2024 | Q3 2024 | Q2 2024 | Q1 2024 | Q4 2023 | Q3 2023 |
| Earnings per share (EPS) (EUR) | 0.85 | 0.63 | 0.59 | 1.12 | 1.54 | 0.74 | 0.25 | 0.79 | 0.72 |
| Equity per share (EUR) | 14.39 | 14.07 | 13.56 | 12.88 | 12.29 | 11.77 | 11.48 | 11.11 | 10.72 |
| P/E ratio (times) | 8.54 | 8.06 | 6.56 | 5.71 | 5.01 | 6.60 | 6.55 | 5.88 | 5.23 |
| P/B ratio (times) | 1.90 | 2.23 | 1.93 | 1.62 | 1.35 | 1.40 | 1.44 | 1.38 | 1.37 |
| Share price trend | |||||||||
| Average (EUR) | 29.86 | 29.80 | 24.16 | 18.59 | 16.51 | 17.02 | 15.90 | 15.04 | 14.94 |
| Highest (EUR) | 31.45 | 33.35 | 26.50 | 21.55 | 16.78 | 17.78 | 16.56 | 15.34 | 15.68 |
| Lowest (EUR) | 26.00 | 24.75 | 20.90 | 16.50 | 15.88 | 15.92 | 15.10 | 14.62 | 14.44 |
| Share price at the end of quarter (EUR) | 27.30 | 31.35 | 26.20 | 20.85 | 16.60 | 16.44 | 16.50 | 15.30 | 14.70 |
| Market value at the end of quarter (million EUR) | 483.2 | 554.9 | 463.7 | 369.0 | 293.8 | 291.0 | 292.1 | 270.8 | 260.2 |
| Share turnover trend | |||||||||
| Share turnover (million EUR) | 5.00 | 11.31 | 5.08 | 3.77 | 2.76 | 4.38 | 2.66 | 2.41 | 2.58 |
| Transactions (pcs) | 8054 | 11208 | 6848 | 5072 | 5008 | 7321 | 5983 | 4875 | 7069 |
| Shares traded (million pcs) | 0.17 | 0.37 | 0.21 | 0.20 | 0.17 | 0.26 | 0.17 | 0.16 | 0.17 |
| Ratio of shares traded (%) | 1.0 | 2.1 | 1.2 | 1.1 | 0.9 | 1.5 | 0.9 | 0.9 | 1.0 |
| Number of shares (million EUR) | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 | 17.7 |
| Number of shareholders at the end of quarter (pcs) | 13271 | 13180 | 12901 | 12876 | 13154 | 13186 | 13138 | 12876 | 12833 |