Files
Stirling-PDF/engine/src/default_templates/board_minutes.html
T

307 lines
7.9 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Board Minutes</title>
<style>
/* ── Theme variables (replaced at generation time) ── */
{{THEME_CSS}}
/* ── Print / page setup ── */
@page {
size: A4;
margin: 20mm;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: var(--theme-font, 'Helvetica Neue', Arial, sans-serif);
font-size: 10pt;
color: var(--theme-text, #1a1a1a);
background: var(--theme-bg, #ffffff);
line-height: 1.4;
}
.document {
max-width: 170mm;
margin: 0 auto;
}
{{HEADER_CSS}}
/* ── Divider ── */
hr {
border: none;
border-top: 0.5pt solid var(--theme-border, #e2e8f0);
margin: 6pt 0;
}
/* ── Meta grid ── */
.meta-grid {
display: grid;
grid-template-columns: 110pt auto;
row-gap: 2pt;
margin-bottom: 8pt;
}
.meta-label {
font-weight: 600;
color: var(--theme-text-muted, #6b7280);
font-size: 8.5pt;
}
.meta-value {
font-size: 8.5pt;
color: var(--theme-text, #1a1a1a);
}
/* ── Section heading ── */
.section-heading {
font-size: 10pt;
font-weight: 700;
color: var(--theme-primary, #1e3a5f);
border-bottom: 1pt solid var(--theme-accent, #2563eb);
padding-bottom: 2pt;
margin: 10pt 0 6pt;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* ── Attendance tables ── */
.attendance-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 6pt;
font-size: 8.5pt;
}
.attendance-table thead tr {
background: var(--theme-surface, #f8fafc);
}
.attendance-table thead th {
padding: 4pt 6pt;
text-align: left;
font-weight: 700;
color: var(--theme-primary, #1e3a5f);
border-bottom: 1pt solid var(--theme-border, #e2e8f0);
font-size: 8pt;
text-transform: uppercase;
letter-spacing: 0.3px;
}
.attendance-table tbody td {
padding: 3pt 6pt;
border-bottom: 0.3pt solid var(--theme-border, #e2e8f0);
}
/* ── Agenda items ── */
.agenda-item {
margin-bottom: 10pt;
padding-left: 8pt;
border-left: 2pt solid var(--theme-accent, #2563eb);
page-break-inside: avoid;
}
.agenda-heading {
font-size: 9.5pt;
font-weight: 700;
color: var(--theme-heading, #111827);
margin-bottom: 3pt;
}
.agenda-body {
font-size: 9pt;
line-height: 1.6;
color: var(--theme-text, #1a1a1a);
white-space: pre-line;
margin-bottom: 4pt;
}
.resolution-box {
font-size: 8.5pt;
font-weight: 600;
color: var(--theme-primary, #1e3a5f);
background: var(--theme-surface, #f8fafc);
border: 0.5pt solid var(--theme-border, #e2e8f0);
padding: 4pt 6pt;
margin-top: 4pt;
}
/* ── Resolutions summary table ── */
.resolutions-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 6pt;
font-size: 8.5pt;
}
.resolutions-table thead tr {
background: var(--theme-primary, #1e3a5f);
color: #ffffff;
}
.resolutions-table thead th {
padding: 5pt 6pt;
text-align: left;
font-weight: 600;
}
.resolutions-table tbody tr:nth-child(even) {
background: var(--theme-surface, #f8fafc);
}
.resolutions-table tbody td {
padding: 4pt 6pt;
border-bottom: 0.3pt solid var(--theme-border, #e2e8f0);
vertical-align: top;
}
/* ── Sign-off ── */
.signoff-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20pt;
margin-top: 14pt;
}
.signoff-col {
font-size: 8.5pt;
}
.signoff-label {
font-size: 8pt;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--theme-accent, #2563eb);
margin-bottom: 18pt;
}
.sig-line {
border-bottom: 0.75pt solid var(--theme-text, #1a1a1a);
margin-bottom: 3pt;
height: 14pt;
}
.sig-field-label {
font-size: 7.5pt;
color: var(--theme-text-muted, #6b7280);
margin-bottom: 10pt;
}
/* ── Page-break controls ── */
thead { display: table-header-group; }
tr { break-inside: avoid; page-break-inside: avoid; }
.section-heading { break-after: avoid; page-break-after: avoid; }
.agenda-item { break-inside: avoid; page-break-inside: avoid; }
.signoff-grid { break-inside: avoid; page-break-inside: avoid; }
.resolutions-table tbody tr { break-inside: avoid; page-break-inside: avoid; }
/* ── Print overrides ── */
@media print {
body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.document { max-width: 100%; }
.agenda-item { page-break-inside: avoid; }
}
</style>
</head>
<body>
<div class="document">
<div class="top-bar"></div>
<!-- Header -->
<div class="doc-header">
{{LOGO_BLOCK}}
<div class="doc-header-text">
<div class="doc-title">{{DOC_TITLE}}</div>
<div class="doc-subtitle">{{ORG_NAME}} · Ref: {{DOC_REF}}</div>
</div>
</div>
<hr>
<!-- Meta -->
<div class="meta-grid">
<span class="meta-label">Date:</span> <span class="meta-value">{{MEETING_DATE}}</span>
<span class="meta-label">Time:</span> <span class="meta-value">{{MEETING_TIME}}</span>
<span class="meta-label">Location:</span> <span class="meta-value">{{MEETING_LOCATION}}</span>
<span class="meta-label">Chair:</span> <span class="meta-value">{{CHAIR_NAME}}</span>
<span class="meta-label">Secretary:</span> <span class="meta-value">{{SECRETARY_NAME}}</span>
</div>
<hr>
<!-- Present -->
<div class="section-heading">Attendance</div>
<table class="attendance-table">
<thead>
<tr>
<th style="width:40%">Name</th>
<th style="width:35%">Title / Role</th>
<th style="width:25%">Organisation</th>
</tr>
</thead>
<tbody>
{{PRESENT_ROWS}}
</tbody>
</table>
<!-- Apologies -->
<div class="section-heading">Apologies</div>
<table class="attendance-table">
<thead>
<tr>
<th style="width:40%">Name</th>
<th style="width:60%">Title / Role</th>
</tr>
</thead>
<tbody>
{{APOLOGIES_ROWS}}
</tbody>
</table>
<!-- Matters and Business -->
<div class="section-heading">Matters and Business of the Meeting</div>
{{AGENDA_ITEMS}}
<!-- Resolutions Summary -->
<div class="section-heading">Resolutions Summary</div>
<table class="resolutions-table">
<thead>
<tr>
<th style="width:12%">Ref</th>
<th style="width:60%">Resolution</th>
<th style="width:28%">Carried By</th>
</tr>
</thead>
<tbody>
{{RESOLUTIONS_ROWS}}
</tbody>
</table>
<!-- Approval -->
<div class="section-heading">Approval</div>
<p style="font-size:8.5pt; margin-bottom:10pt;">These minutes are a true and accurate record of the proceedings of the above meeting.</p>
<div class="meta-grid">
<span class="meta-label">Date Approved:</span> <span class="meta-value">{{APPROVAL_DATE}}</span>
</div>
<div class="signoff-grid">
<div class="signoff-col">
<div class="signoff-label">Chair</div>
<div class="sig-line"></div>
<div class="sig-field-label">{{CHAIR_SIGN_NAME}}</div>
</div>
<div class="signoff-col">
<div class="signoff-label">Secretary</div>
<div class="sig-line"></div>
<div class="sig-field-label">{{SECRETARY_SIGN_NAME}}</div>
</div>
</div>
</div>
</body>
</html>