<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ANNUAL REPORT ON THE EASTERN HIGH SEAS POCKET SPECIAL MANAGEMENT AREA (EHSP-SMA)</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700;90…" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js">
</script>
<style>
body {
background-color: #eef2f5;
font-family: 'Roboto', Arial, sans-serif;
color: #333333;
margin: 0;
padding: 40px;
display: flex;
justify-content: center;
}
.infographic-canvas {
background-color: #ffffff;
width: 100%;
max-width: 1250px;
box-shadow: 0 15px 35px rgba(11, 69, 114, 0.15);
position: relative;
overflow: hidden;
}
.header-banner {
background-color: #0b4572;
padding: 50px 40px 80px 40px;
text-align: center;
position: relative;
}
.wave-divider {
position: absolute;
bottom: -1px;
left: 0;
width: 100%;
overflow: hidden;
line-height: 0;
}
.wave-divider svg {
display: block;
width: calc(100% + 1.3px);
height: 50px;
}
.header-banner h1 {
color: #ffffff;
margin: 0 0 8px 0;
font-size: 32px;
font-weight: 900;
letter-spacing: 1px;
text-transform: uppercase;
}
.content-wrapper {
padding: 20px 50px 50px 50px;
}
.section-title {
color: #0b4572;
font-size: 24px;
font-weight: 900;
text-transform: uppercase;
letter-spacing: 0.5px;
margin: 40px 0 20px 0;
padding-bottom: 10px;
border-bottom: 3px solid #277fc3;
display: inline-block;
width: 100%;
}
.grid-2-col {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 30px;
margin-bottom: 30px;
}
.grid-3-col {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
margin-bottom: 30px;
}
.grid-1-col {
display: grid;
grid-template-columns: 1fr;
gap: 30px;
margin-bottom: 30px;
}
.panel {
background-color: #ffffff;
border-radius: 12px;
padding: 25px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
border: 1px solid #e1e8ed;
border-top: 5px solid #0b4572;
}
.panel.accent-blue {
border-top-color: #277fc3;
}
.panel.accent-red {
border-top-color: #d32f2f;
}
.panel.accent-green {
border-top-color: #2e8b57;
}
.panel.accent-orange {
border-top-color: #e6a817;
}
.panel.accent-purple {
border-top-color: #8e24aa;
}
h3 {
font-size: 16px;
color: #0b4572;
margin-top: 0;
margin-bottom: 20px;
font-weight: 700;
text-transform: uppercase;
}
p,
li {
font-size: 14px;
line-height: 1.6;
color: #445566;
}
.kpi-card {
background: #f8fafc;
padding: 25px;
border-radius: 12px;
border-left: 6px solid #277fc3;
display: flex;
align-items: center;
gap: 22px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.06);
height: 100%;
}
.kpi-text {
flex-grow: 1;
}
.kpi-val {
font-size: 42px;
font-weight: 900;
color: #0b4572;
line-height: 1;
}
.kpi-label {
font-size: 15px;
font-weight: 700;
color: #0b4572;
text-transform: uppercase;
letter-spacing: 0.6px;
}
.kpi-sub {
font-size: 13px;
color: #6c8ea8;
margin-top: 6px;
line-height: 1.4;
}
.pie-chart {
border-radius: 50%;
box-shadow: inset 0 0 0 14px rgba(255, 255, 255, 0.5), 0 10px 25px rgba(0, 0, 0, 0.1);
flex-shrink: 0;
width: 110px;
height: 110px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
font-size: 13px;
}
.data-table th {
background-color: #f0f4f8;
color: #0b4572;
font-size: 12px;
text-transform: uppercase;
padding: 10px;
text-align: right;
font-weight: 700;
border-bottom: 2px solid #b9d2e5;
}
.data-table th:first-child,
.data-table th:nth-child(2),
.data-table th:nth-child(3) {
text-align: left;
}
.data-table td {
padding: 8px 10px;
border-bottom: 1px solid #e1e8ed;
color: #445566;
text-align: right;
font-weight: 500;
}
.data-table td:first-child,
.data-table td:nth-child(2),
.data-table td:nth-child(3) {
text-align: left;
font-weight: 700;
color: #0b4572;
}
.table-container {
overflow-x: visible;
}
.trend-chart-container {
padding: 12px;
background: #f8fafc;
border-radius: 8px;
}
canvas {
max-height: 300px;
}
/* screen-only page break marker (hidden on print) */
.print-only-page-break {
display: none;
}
@media screen {
.print-only-page-break {
display: none;
}
}
/* ===== PRINT STYLES – A4 SEAMLESS PAGINATION ===== */
@media print {
@page {
size: A4 portrait;
margin: 1.2cm 1.2cm 1.2cm 1.2cm;
}
body {
background-color: #ffffff !important;
padding: 0 !important;
display: block !important;
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
.infographic-canvas {
box-shadow: none !important;
max-width: 100% !important;
width: 100% !important;
margin: 0 !important;
overflow: visible !important;
}
/* ----- HEADER (compact for print) ----- */
.header-banner {
padding: 16px 20px 28px 20px !important;
background-color: #0b4572 !important;
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
.header-banner h1 {
font-size: 20px !important;
margin: 0 !important;
letter-spacing: 0.6px !important;
}
.wave-divider svg {
height: 28px !important;
}
/* ----- CONTENT WRAPPER (tighter spacing) ----- */
.content-wrapper {
padding: 12px 16px 20px 16px !important;
}
/* ----- SECTION TITLES – no automatic page break; controlled by .print-only-page-break ----- */
.section-title {
font-size: 17px !important;
margin: 14px 0 10px 0 !important;
padding-bottom: 5px !important;
border-bottom-width: 2px !important;
page-break-before: avoid !important;
page-break-after: avoid !important;
display: block !important;
width: 100% !important;
}
.section-title.section-spaced {
margin-top: 30px !important;
}
.section-title:first-of-type {
margin-top: 2px !important;
}
/* ----- PAGE BREAK TRIGGERS (hidden on screen, visible in print) ----- */
.print-only-page-break {
display: block !important;
page-break-before: always !important;
break-before: page !important;
visibility: visible !important;
height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
line-height: 0 !important;
}
/* ----- GRID LAYOUTS – flex-based for reliable print ----- */
.grid-3-col {
display: flex !important;
flex-wrap: wrap !important;
gap: 10px !important;
margin-bottom: 10px !important;
}
.grid-3-col>div {
width: calc(33.33% - 7px) !important;
flex: 0 0 calc(33.33% - 7px) !important;
box-sizing: border-box !important;
}
.grid-2-col {
display: flex !important;
flex-wrap: wrap !important;
gap: 12px !important;
margin-bottom: 10px !important;
}
.grid-2-col>div {
width: calc(50% - 6px) !important;
flex: 0 0 calc(50% - 6px) !important;
box-sizing: border-box !important;
}
.grid-1-col {
display: block !important;
width: 100% !important;
margin-bottom: 10px !important;
}
/* ----- PANELS & CARDS – avoid breaks inside ----- */
.panel {
padding: 12px 14px !important;
margin-bottom: 10px !important;
break-inside: avoid !important;
page-break-inside: avoid !important;
border-radius: 6px !important;
border-top-width: 4px !important;
}
.kpi-card {
padding: 12px 14px !important;
gap: 12px !important;
border-left-width: 4px !important;
break-inside: avoid !important;
page-break-inside: avoid !important;
border-radius: 6px !important;
}
/* ----- TYPOGRAPHY (smaller for print) ----- */
h3 {
font-size: 12px !important;
margin-top: 0 !important;
margin-bottom: 8px !important;
}
p,
li {
font-size: 10.5px !important;
line-height: 1.4 !important;
}
.kpi-val {
font-size: 26px !important;
}
.kpi-label {
font-size: 11px !important;
letter-spacing: 0.3px !important;
}
.kpi-sub {
font-size: 10px !important;
margin-top: 2px !important;
}
/* ----- PIE CHARTS in KPI cards (CSS gradients) ----- */
.pie-chart {
width: 64px !important;
height: 64px !important;
box-shadow: inset 0 0 0 7px rgba(255, 255, 255, 0.4), 0 4px 12px rgba(0, 0, 0, 0.08) !important;
flex-shrink: 0 !important;
}
/* ----- CHART CONTAINERS (fixed height, no overflow) ----- */
.trend-chart-container {
padding: 4px 6px !important;
background: #f8fafc !important;
border-radius: 4px !important;
height: 160px !important;
max-height: 160px !important;
overflow: hidden !important;
}
.trend-chart-container canvas {
max-height: 160px !important;
max-width: 100% !important;
height: auto !important;
width: auto !important;
}
.grid-2-col .trend-chart-container {
height: 150px !important;
max-height: 150px !important;
}
.grid-2-col .trend-chart-container canvas {
max-height: 150px !important;
}
/* ----- DATA TABLE ----- */
.data-table {
font-size: 9.5px !important;
}
.data-table th {
font-size: 9px !important;
padding: 4px 5px !important;
}
.data-table td {
padding: 3px 5px !important;
font-size: 9.5px !important;
}
.table-container {
overflow-x: visible !important;
}
/* ----- color-adjust safety ----- */
.panel,
.kpi-card,
.grid-3-col>div,
.grid-2-col>div {
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
.panel .trend-chart-container {
break-inside: avoid !important;
page-break-inside: avoid !important;
}
/* ----- Header stays on first page ----- */
.header-banner {
break-after: avoid !important;
page-break-after: avoid !important;
}
/* ----- Remove any stray empty pages ----- */
.content-wrapper>*:last-child {
margin-bottom: 0 !important;
}
}
</style>
</head>
<body>
<div class="infographic-canvas">
<!-- ===== HEADER ===== -->
<div class="header-banner">
<h1>ANNUAL REPORT ON THE EHSP-SMA</h1>
<div class="wave-divider">
<svg viewBox="0 0 1200 120" preserveAspectRatio="none">
<path d="M321.39,56.44c58-10.79,114.16-30.13,172-41.86,82.39-16.72,168.19-17.73,250.45-.39C823.78,31,906.67,72,985.66,92.83c70.05,18.48,146.53,26.09,214.34,3V120H0V95.8C59.71,118.08,130.83,121.32,194.2,109.8,237.4,101.9,280.4,81.1,321.39,56.44Z" fill="#ffffff"></path>
</svg>
</div>
</div>
<div class="content-wrapper">
<!-- ============================================================ -->
<!-- SECTION 1 – KEY MESSAGES & VITAL STATISTICS -->
<!-- (Stays on page 1) -->
<!-- ============================================================ -->
<div class="section-title">Key Messages & Vital Statistics</div>
<div class="grid-3-col">
<div class="kpi-card">
<div class="pie-chart" style="background: conic-gradient(#e6a817 0% 100%, #e1e8ed 100% 100%);"></div>
<div class="kpi-text">
<div class="kpi-val">134</div>
<div class="kpi-label">Monthly VMS Records (2025)</div>
<div class="kpi-sub">Total monthly vessel records for 2025, representing an 18% decline from 164 in 2024.</div>
</div>
</div>
<div class="kpi-card" style="border-left-color: #2e8b57;">
<div class="pie-chart" style="background: conic-gradient(#2e8b57 0% 96%, #e1e8ed 96% 100%);"></div>
<div class="kpi-text">
<div class="kpi-val">96%</div>
<div class="kpi-label">Longliners</div>
<div class="kpi-sub">Longliners continue to form the largest segment, making up 96% of the 134 monthly VMS vessel records.</div>
</div>
</div>
<div class="kpi-card" style="border-left-color: #277fc3;">
<div class="pie-chart" style="background: conic-gradient(#e1e8ed 0% 100%);"></div>
<div class="kpi-text">
<div class="kpi-val">0</div>
<div class="kpi-label">Reported Infringements</div>
<div class="kpi-sub">No vessel sighting reports, transhipment reports, or alleged infringements were recorded in the EHSP-SMA during 2025.</div>
</div>
</div>
</div>
<!-- ============================================================ -->
<!-- SECTION 2 – PARTICIPATION & GEOGRAPHIC SPREAD -->
<!-- (Stays on page 1 – with 50px top margin for spacing) -->
<!-- ============================================================ -->
<div class="section-title section-spaced" style="margin-top: 50px;">Participation & Geographic Spread</div>
<div class="grid-1-col">
<div class="panel accent-purple">
<h3>Monthly VMS Vessel Presence (2021-2025)</h3>
<p>Tracks the total number of unique vessels by month operating within the Eastern High Seas Pocket Special Management Area (EHSP-SMA).</p>
<div class="trend-chart-container" style="height: 300px;">
<canvas id="monthlyPresenceChart"></canvas>
</div>
</div>
</div>
<div class="grid-2-col">
<div class="panel accent-blue">
<h3>2025 Unique Vessels by Flag CCM</h3>
<p>Proportion of the 72 unique active vessels tracked via VMS by their flag CCMs.</p>
<div class="trend-chart-container" style="height: 300px;">
<canvas id="flagCcmPieChart"></canvas>
</div>
</div>
<div class="panel accent-orange">
<h3>2025 Unique Vessels by Gear Type</h3>
<p>Distribution of vessel categories operating within the EHSP-SMA boundaries.</p>
<div class="trend-chart-container" style="height: 300px;">
<canvas id="gearTypePieChart"></canvas>
</div>
</div>
</div>
<!-- ============================================================ -->
<!-- PAGE BREAK – before Section 3 -->
<!-- ============================================================ -->
<div class="print-only-page-break"></div>
<!-- ============================================================ -->
<!-- SECTION 3 – COMPLIANCE & REPORTING OUTCOMES -->
<!-- ============================================================ -->
<div class="section-title">Compliance & Reporting Outcomes</div>
<div class="grid-2-col">
<div class="panel accent-green">
<h3>VMS Entry and Exit Alerts (2025)</h3>
<p>Reported entry and exit alerts generated through the Commission VMS by flag CCM for vessels operating or transiting.</p>
<div class="trend-chart-container" style="height: 250px;">
<canvas id="vmsAlertsChart"></canvas>
</div>
</div>
<div class="panel accent-red">
<h3>Historical Compliance Case Outcomes</h3>
<p>Outcomes of historic compliance cases evaluated under CMM 2010-02. Note: No cases have been reported under the replacement CMM 2016-02 from 2017 onwards.</p>
<div class="trend-chart-container" style="height: 250px;">
<canvas id="historicalComplianceChart"></canvas>
</div>
</div>
</div>
<div class="grid-1-col">
<div class="panel">
<h3>Table 3: Number of vessels by Flag CCM and vessel type (2025)</h3>
<div class="table-container">
<table class="data-table">
<thead>
<tr>
<th>CCM</th>
<th>Vessel Type</th>
<th>Number of vessels on VMS</th>
<th>Reported entry alerts</th>
<th>Reported exit alerts</th>
</tr>
</thead>
<tbody>
<tr><td>China</td><td>Fish carrier</td><td>3</td><td>3</td><td>3</td></tr>
<tr><td>China</td><td>Longliner</td><td>32</td><td>42</td><td>42</td></tr>
<tr><td>Fiji</td><td>Longliner</td><td>2</td><td>2</td><td>2</td></tr>
<tr><td>Panama</td><td>Bunker</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>El Salvador</td><td>Purse seiner</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>Chinese Taipei</td><td>Longliner</td><td>33</td><td>58</td><td>58</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- end .content-wrapper -->
</div>
<!-- end .infographic-canvas -->
<script>
Chart.defaults.font.family = "'Roboto', Arial, sans-serif";
Chart.defaults.color = '#445566';
// Monthly VMS Vessel Presence (Line Chart)
new Chart(document.getElementById('monthlyPresenceChart').getContext('2d'), {
type: 'line',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
datasets: [
{ label: '2021', data: [8, 16, 15, 10, 18, 18, 11, 6, 11, 5, 2, 2], borderColor: '#9e9e9e',
backgroundColor: 'transparent', tension: 0.3 },
{ label: '2022', data: [2, 6, 10, 8, 12, 11, 16, 23, 14, 2, 3, 2], borderColor: '#e6a817',
backgroundColor: 'transparent', tension: 0.3 },
{ label: '2023', data: [2, 4, 31, 30, 46, 47, 42, 37, 22, 15, 7, 8], borderColor: '#8e24aa',
backgroundColor: 'transparent', tension: 0.3 },
{ label: '2024', data: [13, 16, 17, 25, 18, 9, 12, 4, 4, 10, 16, 20], borderColor: '#d32f2f',
backgroundColor: 'transparent', tension: 0.3 },
{ label: '2025', data: [14, 17, 11, 9, 3, 8, 14, 6, 7, 12, 18, 15], borderColor: '#277fc3',
backgroundColor: 'transparent', tension: 0.3, borderWidth: 3 }
]
},
options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'top',
labels: { boxWidth: 10, font: { size: 11 } } } },
scales: { y: { beginAtZero: true, title: { display: true, text: 'Total Vessels' } },
x: { grid: { display: false } } } }
});
// 2025 Unique Vessels by Flag CCM (Doughnut Chart)
new Chart(document.getElementById('flagCcmPieChart').getContext('2d'), {
type: 'doughnut',
data: {
labels: ['China (35)', 'Chinese Taipei (33)', 'Fiji (2)', 'Panama (1)', 'El Salvador (1)'],
datasets: [{
data: [35, 33, 2, 1, 1],
backgroundColor: ['#e6a817', '#d32f2f', '#277fc3', '#2e8b57', '#8e24aa'],
borderWidth: 2,
borderColor: '#ffffff'
}]
},
options: { responsive: true, maintainAspectRatio: false, cutout: '55%',
plugins: { legend: { position: 'right', labels: { boxWidth: 12, font: { size: 11 } } } } }
});
// 2025 Unique Vessels by Gear Type (Doughnut Chart)
new Chart(document.getElementById('gearTypePieChart').getContext('2d'), {
type: 'doughnut',
data: {
labels: ['Longliner (67)', 'Fish carrier (3)', 'Bunker (1)', 'Purse seiner (1)'],
datasets: [{
data: [67, 3, 1, 1],
backgroundColor: ['#2e8b57', '#277fc3', '#e6a817', '#8e24aa'],
borderWidth: 2,
borderColor: '#ffffff'
}]
},
options: { responsive: true, maintainAspectRatio: false, cutout: '55%',
plugins: { legend: { position: 'right', labels: { boxWidth: 12, font: { size: 11 } } } } }
});
// VMS Entry and Exit Alerts (Bar Chart)
new Chart(document.getElementById('vmsAlertsChart').getContext('2d'), {
type: 'bar',
data: {
labels: ['Chinese Taipei', 'China', 'Fiji', 'Panama', 'El Salvador'],
datasets: [{
label: 'Total Entry/Exit Alerts',
data: [58, 45, 2, 1, 1],
backgroundColor: ['#d32f2f', '#e6a817', '#277fc3', '#2e8b57', '#8e24aa']
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: { legend: { display: false } },
scales: {
y: { beginAtZero: true },
x: { grid: { display: false } }
}
}
});
// Historical Compliance Case Outcomes (Stacked Bar)
new Chart(document.getElementById('historicalComplianceChart').getContext('2d'), {
type: 'bar',
data: {
labels: ['2015', '2016', '2017-2025'],
datasets: [
{ label: 'Infraction - Sanction', data: [1, 0, 0], backgroundColor: '#d32f2f' },
{ label: 'No Infraction', data: [0, 1, 0], backgroundColor: '#9e9e9e' }
]
},
options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'top',
labels: { boxWidth: 10, font: { size: 10 } } } },
scales: { x: { stacked: true, grid: { display: false } }, y: { stacked: true, beginAtZero: true,
max: 3, title: { display: true, text: 'Number of Cases' } } } }
});
</script>
</body>
</html>