{"id":378,"date":"2025-10-06T13:01:35","date_gmt":"2025-10-06T13:01:35","guid":{"rendered":"https:\/\/aiportcenter.nl\/?page_id=378"},"modified":"2025-11-29T22:49:38","modified_gmt":"2025-11-29T22:49:38","slug":"berth-visit","status":"publish","type":"page","link":"https:\/\/aiportcenter.nl\/index.php\/berth-visit\/","title":{"rendered":"Berth Visit"},"content":{"rendered":"\n<!-- ======= BREADCRUMB (FULL WIDTH MATCH + ADMIN LINK + WP SPACING REMOVED) ======= -->\n\n<style>\n\/* Remove WordPress default spacing ONLY for this breadcrumb block *\/\n.breadcrumb-wrapper.wp-block-html {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n\/* Wrapper that matches .pc-container.polished width *\/\n.breadcrumb-container {\n  max-width: 1200px;\n  margin: -110px auto 0 auto;   \/* negative top only *\/\n  padding: 0 20px;\n  box-sizing: border-box;\n  position: relative;\n  z-index: 10;\n}\n\n\/* Styled breadcrumb bar *\/\n.breadcrumb {\n  font-family: Inter, system-ui, sans-serif;\n  font-size: 0.92rem;\n  color: var(--muted, #5b6570);\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 6px;\n\n  margin-top: 8px;\n  margin-bottom: 12px;\n\n  padding: 10px 14px;\n  border-radius: 10px;\n  background: linear-gradient(180deg, rgba(10,106,176,0.06), rgba(10,106,176,0.02));\n  box-shadow: 0 2px 6px rgba(10,29,56,0.08);\n  border: 1px solid rgba(10,106,176,0.12);\n}\n\n.breadcrumb a {\n  color: var(--accent, #0a5c94);\n  text-decoration: none;\n  font-weight: 500;\n}\n\n.breadcrumb a:hover {\n  text-decoration: underline;\n}\n\n.breadcrumb .current {\n  color: var(--muted, #5b6570);\n  font-weight: 500;\n}\n<\/style>\n\n<div class=\"breadcrumb-wrapper wp-block-html\">\n<div class=\"breadcrumb-container\">\n  <nav class=\"breadcrumb\">\n\n    <a href=\"https:\/\/aiportcenter.nl\/\">Home<\/a>\n    <span>\u203a<\/span>\n\n    <a href=\"https:\/\/aiportcenter.nl\/index.php\/port-call\/\">Port-Call Data Hub<\/a>\n    <span>\u203a<\/span>\n\n    <a href=\"https:\/\/aiportcenter.nl\/index.php\/port-call\/\">Processes Timeline<\/a>\n    <span>\u203a<\/span>\n\n    <span class=\"current\">Berth-Visit<\/span>\n\n  <\/nav>\n<\/div>\n<\/div>\n\n<!-- ======= \/END BREADCRUMB ======= -->\n\n\n\n<!-- ========= PORT CALL: BERTH VISIT (ROTTERDAM) \u2014 POLISHED DROP-IN (Datasets as Table) ========= -->\n<div class=\"pc-container polished\" id=\"berthvisit-rotterdam\">\n  <header class=\"pc-hero\" role=\"banner\" aria-label=\"Berth Visit overview\">\n    <div class=\"pc-hero-bg\" aria-hidden=\"true\"><\/div>\n    <div class=\"pc-hero-inner\">\n      <div class=\"pc-hero-eyebrow\">Port-Call Optimization at the Port of Rotterdam<\/div>\n      <h1>Berth Visit<\/h1>\n      <p class=\"lead\">Delivers ship services such as agency, bunkers, lubricants, provisions, and waste handling in parallel with cargo operations where permitted. The agent coordinates formalities, vendors, keys, permits, and change management. Service sequencing avoids conflicts with hot work, crane zones, and terminal safety limits. Inputs include vendor bookings, MARPOL certificates, permits to work, and terminal go or no-go rules. The purpose is to maximize productive port time without compromising safety or regulatory status. The outcome is departure of a seaworthy, compliant, and fully supplied vessel for the next leg.<\/p>\n      <nav class=\"pc-steps-nav\" aria-label=\"Steps\">\n        <a href=\"#step-1\" class=\"chip\" data-step=\"1\"><span class=\"num\">1<\/span> Agent Attendance<\/a>\n        <a href=\"#step-2\" class=\"chip\" data-step=\"2\"><span class=\"num\">2<\/span> Bunkering &amp; Lub Oil<\/a>\n        <a href=\"#step-3\" class=\"chip\" data-step=\"3\"><span class=\"num\">3<\/span> Provisions<\/a>\n        <a href=\"#step-4\" class=\"chip\" data-step=\"4\"><span class=\"num\">4<\/span> Waste Disposal<\/a>\n        <a href=\"#research\" class=\"chip\" data-step=\"4\"><span class=\"num\">5<\/span> Research Problems<\/a>\n        <a href=\"#exec\" class=\"chip\" data-step=\"4\"><span class=\"num\">6<\/span> Execution Party<\/a>\n        <a href=\"#plan\" class=\"chip\" data-step=\"4\"><span class=\"num\">7<\/span> Planning Party<\/a>\n        <a href=\"#data\" class=\"chip\" data-step=\"4\"><span class=\"num\">8<\/span> Available Data<\/a>\n      <\/nav>\n    <\/div>\n  <\/header>\n\n  <aside class=\"pc-toc\" aria-label=\"On-page navigation\">\n    <div class=\"pc-toc-inner\">\n      <div class=\"pc-toc-title\">On this page<\/div>\n      <ol>\n        <li><a href=\"#step-1\">Agent Attendance<\/a><\/li>\n        <li><a href=\"#step-2\">Bunkering &amp; Lub Oil<\/a><\/li>\n        <li><a href=\"#step-3\">Provisions<\/a><\/li>\n        <li><a href=\"#step-4\">Waste Disposal<\/a><\/li>\n        <li><a href=\"#research\">Research Problems<\/a><\/li>\n        <li><a href=\"#exec\">Execution Party<\/a><\/li>\n        <li><a href=\"#plan\">Planning Party<\/a><\/li>\n        <li><a href=\"#data\">Available Data<\/a><\/li>\n      <\/ol>\n    <\/div>\n  <\/aside>\n\n  <main class=\"pc-main\">\n  <!-- Step 1 -->\n  <section class=\"pc-step card\" id=\"step-1\" data-keywords=\"agent attendance permits DoS immigration security waste notifications\" aria-labelledby=\"title-step-1\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-1\"><span class=\"badge\">Step 1<\/span>Agent Attendance<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Acts as the vessel\u2019s coordinator for formalities, services, permits, and communications. Consolidates interfaces with the port authority, terminal, customs, and vendors. Tracks deadlines for free pratique, waste notifications, immigration, and security. Escalates issues and rebooks services when plans change. The purpose is a single accountable owner for administrative flow. Effective agency work prevents paperwork delays from impacting the critical path.<\/p>\n  <\/section>\n\n  <!-- Step 2 -->\n  <section class=\"pc-step card\" id=\"step-2\" data-keywords=\"bunkering lube oil SOPEP scuppers sampling checklists permits\" aria-labelledby=\"title-step-2\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-2\"><span class=\"badge\">Step 2<\/span>Bunkering &amp; Lub Oil<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Delivers fuel and lubricants under strict safety and pollution controls. Operations are scheduled alongside or at dedicated locations to avoid conflicts with cargo. Scuppers, SOPEP readiness, hot-work restrictions, and terminal permits are coordinated. Sampling and documentation provide quality and compliance assurance. The purpose is fuel readiness for onward legs without delaying cargo work. Performance is measured by safe completion, zero spills, and on-time finish.<\/p>\n  <\/section>\n\n  <!-- Step 3 -->\n  <section class=\"pc-step card\" id=\"step-3\" data-keywords=\"provisions stores freshwater spares customs access ISPS timing\" aria-labelledby=\"title-step-3\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-3\"><span class=\"badge\">Step 3<\/span>Provisions<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Supplies food, water, spares, and consumables to support the vessel and crew. Access routes comply with terminal safety rules and crane exclusion zones, and timing avoids peak movements. Quality checks and customs declarations apply where required. The agent synchronizes deliveries with security and gangway control. The purpose is crew welfare and technical readiness without disrupting cargo operations. Completion is recorded in the ship\u2019s service checklist.<\/p>\n  <\/section>\n\n  <!-- Step 4 -->\n  <section class=\"pc-step card\" id=\"step-4\" data-keywords=\"waste sludge residues MARPOL PRF pre-notification segregated collection\" aria-labelledby=\"title-step-4\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-4\"><span class=\"badge\">Step 4<\/span>Waste Disposal<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Removes ship-generated waste, sludge, and residues in accordance with MARPOL and port regulations. Pre-notification, correct segregation, and use of licensed contractors are required. Waste handling is kept separate from cargo and food operations for hygiene and safety. Documentation certifies lawful disposal and quantities removed. The purpose is environmental compliance and quay hygiene. Performance is defined by zero spills and full traceability.<\/p>\n  <\/section>\n\n  <!-- Research Problems -->\n  <section class=\"pc-step card\" id=\"research\" data-keywords=\"research problems berth quay crane scheduling tug pilot assignment\" aria-labelledby=\"title-research\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-research\">Related Research Problems<\/h2>\n      <div class=\"sub\">Key port-call optimization problems relevant to berth visit operations.<\/div>\n    <\/header>\n\n    <div class=\"pc-research-note\" aria-hidden=\"false\" style=\"margin-top:10px; margin-bottom:6px; display:flex; align-items:center; gap:10px;\">\n      <span class=\"highlight-dot\" aria-hidden=\"true\" style=\"display:inline-block;width:12px;height:12px;border-radius:50%;background:linear-gradient(90deg,#74c9ff,#2aa7e8);box-shadow:0 4px 12px rgba(42,167,232,0.18);animation:pcPulse 2s infinite;\"><\/span>\n      <div class=\"instruction\" style=\"color:var(--muted);font-size:0.95rem;\">Click on a card to open the webpage and data sets for each research problem.<\/div>\n      <style>\n        @keyframes pcPulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.18)} }\n      <\/style>\n    <\/div>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/berth-allocation\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 7h18v10H3V7Zm2 2v6h14V9H5Z\"\/><\/svg><\/span>\n          <h3>Berth Allocation<\/h3>\n        <\/div>\n        <ul>\n          <li>Assign vessels to berths while balancing utilization, priorities and time windows.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/quay-crane\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 20h18v2H3v-2Zm2-2h2V8h6v10h2V6h2V4H7V2H5v16Z\"\/><\/svg><\/span>\n          <h3>Quay-Crane Scheduling<\/h3>\n        <\/div>\n        <ul>\n          <li>Schedule quay cranes to meet handling targets while respecting vessel windows and yard constraints.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/tug-pilot-assignment\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 7h16v10H4V7Zm2 2v6h12V9H6Z\"\/><\/svg><\/span>\n          <h3>Tug &amp; Pilot Assignment<\/h3>\n        <\/div>\n        <ul>\n          <li>Assign tugs and pilots to vessels while minimising idle steaming and conflicts.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Execution Party -->\n  <section class=\"pc-step card\" id=\"exec\" data-keywords=\"stevedores terminal teams service boats waste reception bunkering boats\" aria-labelledby=\"title-exec\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-exec\">Execution Party<\/h2>\n      <div class=\"sub\">Below, the main companies involved in the execution of berth visit operations are listed.<\/div>\n    <\/header>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- container icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 7h18v10H3V7Zm2 2v6h14V9H5Z\"\/><\/svg><\/span>\n          <h3>Hutchison Ports ECT Rotterdam (ECT Delta, Euromax)<\/h3>\n        <\/div>\n        <ul>\n          <li>One of Europe\u2019s largest container terminals. Executes vessel loading\/unloading, yard\/stack management, and gate operations.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- agv\/crane icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 20h18v2H3v-2Zm2-2h2V8h6v10h2V6h2V4H7V2H5v16Z\"\/><\/svg><\/span>\n          <h3>APM Terminals Maasvlakte II<\/h3>\n        <\/div>\n        <ul>\n          <li>Fully automated container terminal; handles container discharge\/load, AGVs, cranes, and yard operations.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- tank\/pipe icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 7h16v10H4V7Zm2 2v6h12V9H6Z\"\/><\/svg><\/span>\n          <h3>Vopak Vlaardingen \/ Botlek<\/h3>\n        <\/div>\n        <ul>\n          <li>Liquid bulk terminals (oils, chemicals, biofuels). Execute berthing, product transfer, storage, and safety monitoring.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- roro icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M2 16h20v2H2v-2Zm2-6h8v4H4v-4Zm10-6h6v10h-6V4Z\"\/><\/svg><\/span>\n          <h3>Antwerp Euroterminal (AET) \u2013 Rotterdam branch<\/h3>\n        <\/div>\n        <ul>\n          <li>Vehicle &amp; multipurpose terminal handling cars, RoRo, breakbulk, and containers. Executes stevedoring and yard management.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Planning Party -->\n  <section class=\"pc-step card\" id=\"plan\" data-keywords=\"planning slots permits hot work ISPS MARPOL sequencing vendor windows\" aria-labelledby=\"title-plan\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-plan\">Planning Party<\/h2>\n      <div class=\"sub\">Below, the main companies involved in planning berth visit operations are listed.<\/div>\n    <\/header>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- layout icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 3h18v18H3V3Zm2 2v14h14V5H5Zm2 2h10v4H7V7Zm0 6h6v4H7v-4Z\"\/><\/svg><\/span>\n          <h3>Port of Rotterdam Authority<\/h3>\n        <\/div>\n        <ul>\n          <li>Oversees berth allocation, nautical safety, and traffic planning during the vessel stay.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- crane icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 20h18v2H3v-2Zm2-2h2v-6h6v6h2V8h2V6H7V4H5v14Z\"\/><\/svg><\/span>\n          <h3>ECT Planning<\/h3>\n        <\/div>\n        <ul>\n          <li>Allocates quay cranes, yard slots, and truck\/rail interfaces for ECT terminals.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- clipboard icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M9 3h6v2h4v16H5V5h4V3Zm2 4H7v10h10V7h-4V6h-2v1Z\"\/><\/svg><\/span>\n          <h3>Maersk Terminal Planning<\/h3>\n        <\/div>\n        <ul>\n          <li>Plans quay allocation, crane sequences, and delivery schedules for APM Terminals Maasvlakte II.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Datasets (TABLE) -->\n  <section class=\"pc-step card\" id=\"data\" data-keywords=\"berth visit bunkering waste marpol shore power freshwater terminal safety isps checklists\" aria-labelledby=\"title-data\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-data\">Available Data<\/h2>\n      <div class=\"sub\">Free, real-time data sources and official guidance used in berth visit operations in Rotterdam.<\/div>\n    <\/header>\n\n    <div class=\"pc-table-wrap\">\n      <table class=\"pc-table pc-anim-table\" role=\"table\" aria-label=\"Berth Visit datasets\">\n        <thead>\n          <tr>\n            <th scope=\"col\">Data Source<\/th>\n            <th scope=\"col\">Description<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <!-- BUNKERING \/ LUBES -->\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/sea-shipping\/bunkering-in-rotterdam\" target=\"_blank\" rel=\"noopener\">Port of Rotterdam \u2014 Bunkering in Rotterdam<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"bunkering-last\"><\/time><\/div>\n            <\/td>\n            <td>Overview of operations, licensing, supervision, and process notes for safe, efficient fueling.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/sea-shipping\/forms-and-checklists\" target=\"_blank\" rel=\"noopener\">Forms &amp; Checklists (Sea Shipping)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"forms-last\"><\/time><\/div>\n            <\/td>\n            <td>Official checklists for bunkering and ship\u2013shore transfer (ISGOTT 6), plus de-bunkering request\/checklist.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/sites\/default\/files\/2021-06\/de-bunkering-check-list-port-of-rotterdam.pdf\" target=\"_blank\" rel=\"noopener\">De-bunkering Safety Checklist (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"debunking-pdf-last\"><\/time><\/div>\n            <\/td>\n            <td>Step-by-step controls for safely off-loading fuel at berth.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n\n          <!-- WASTE \/ MARPOL -->\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/legislation-and-regulations\/ships-waste\" target=\"_blank\" rel=\"noopener\">Ships\u2019 Waste (Port Reception Facilities)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"waste-last\"><\/time><\/div>\n            <\/td>\n            <td>How to dispose of ship-generated waste under MARPOL at designated facilities.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/sites\/default\/files\/2024-02\/port-waste-reception-and-handling-plan_0.pdf\" target=\"_blank\" rel=\"noopener\">Port Waste Reception &amp; Handling Plan 2023\u20132028 (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"waste-plan-last\"><\/time><\/div>\n            <\/td>\n            <td>Plan, categories, and approved contractors for ship waste management.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n\n          <!-- SHORE POWER \/ ENERGY -->\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/port-future\/energy-transition\/ongoing-projects\/shore-power-rotterdam\" target=\"_blank\" rel=\"noopener\">Shore Power in Rotterdam (Overview)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"shorepower-last\"><\/time><\/div>\n            <\/td>\n            <td>Current on-shore power (OPS) availability and rollout updates.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/sites\/default\/files\/2025-01\/information-ship-owners-shore-power-parkkade.pdf\" target=\"_blank\" rel=\"noopener\">Shore Power \u2014 Parkkade Instructions (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"parkkade-pdf-last\"><\/time><\/div>\n            <\/td>\n            <td>Connection, activation, and billing info for OPS at Parkkade.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n\n          <!-- PROVISIONS \/ FRESH WATER -->\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.evides.nl\/zakelijk\/grootzakelijk\/scheepvaart\" target=\"_blank\" rel=\"noopener\">Evides \u2014 Drinking Water for Shipping<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"evides-last\"><\/time><\/div>\n            <\/td>\n            <td>Official water-boat service supplying potable water across the port area.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n\n          <!-- TERMINAL ACCESS & SAFETY (ISPS \/ PERMITS) -->\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.ect.nl\/sites\/www.ect.nl\/files\/2024-12\/ECT_Veilig_En_Beveiligd_ET_1b_nov24_EN.pdf\" target=\"_blank\" rel=\"noopener\">ECT Euromax \u2014 Safety &amp; Security Rules (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"ect-safety-last\"><\/time><\/div>\n            <\/td>\n            <td>Visitor registration, PPE, driving and hot-work\/permit expectations.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.apmterminals.com\/en\/maasvlakte\/practical-information\/safety\" target=\"_blank\" rel=\"noopener\">APM Terminals MVII \u2014 Safety Information<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"apm-safety-last\"><\/time><\/div>\n            <\/td>\n            <td>Mandatory induction for visitors\/contractors and site safety requirements.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.rwg.nl\/sites\/default\/files\/usercontent\/document\/2024-08\/isps-folder_engels.pdf\" target=\"_blank\" rel=\"noopener\">Rotterdam World Gateway \u2014 ISPS &amp; Safety (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"rwg-isps-last\"><\/time><\/div>\n            <\/td>\n            <td>Terminal security, permits, and restricted-area guidance for ship services.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n\n          <!-- ALT FUELS CONTEXT -->\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/logistics\/cargo\/lng\" target=\"_blank\" rel=\"noopener\">LNG in Rotterdam<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"lng-last\"><\/time><\/div>\n            <\/td>\n            <td>LNG availability and bunkering context for alternative-fuel calls alongside.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n      \n        <!-- Title placed below the table and left-aligned, just before the legend -->\n        <div class=\"pc-desc-title\">Description of Versions<\/div>\n\n      <\/div>\n        <div class=\"pc-table-legend\" aria-hidden=\"false\">\n          <p><b>Free (public):<\/b> The content is publicly accessible on the website without login or payment.<\/p>\n          <p><b>Free (PDF):<\/b> The resource is a downloadable PDF (static document) that is free to download and read.<\/p>\n        <\/div>\n    <\/section>\n  <\/main>\n<\/div>\n\n<style>\n\/* Hide WordPress default page\/post title if present *\/\nh1.entry-title, .entry-title, .page-title { display: none !important; }\n\n\/* ===== Dynamic sticky top: WP admin bar + theme header + extra offset ===== *\/\n:root{\n  --wp-adminbar: 0px;\n  --site-header: 0px;\n  --extra-offset: 160px;\n  --sticky-offset: calc(var(--wp-adminbar) + var(--site-header) + var(--extra-offset) + 12px);\n  scroll-padding-top: calc(var(--sticky-offset) + 8px);\n}\nbody.admin-bar{ --wp-adminbar: 32px; }\n@media (max-width: 782px){ body.admin-bar{ --wp-adminbar: 46px; } }\n\n\/* ===== Scoping: only style within .pc-container.polished ===== *\/\n.pc-container.polished {\n  --ink: #0b1220;\n  --muted: #5b6570;\n  --bg: #f6f8fb;\n  --card: #ffffff;\n  --accent: #0a5c94;\n  --accent-2: #7ccdf0;\n  --radius: 14px;\n  --shadow: 0 8px 28px rgba(10, 29, 56, 0.09);\n  --gap: 18px;\n  --ring: 0 0 0 3px rgba(43,176,237,.25);\n  position: relative;\n  isolation: isolate;\n  width: 100%;\n  max-width: 1200px;\n  margin: -15px;\n  padding: 20px;\n  box-sizing: border-box;\n  font-family: Inter, system-ui, Segoe UI, Roboto, Arial, sans-serif;\n  color: var(--ink);\n}\n\n\/******** Hero ********\/\n.pc-container.polished .pc-hero {\n  position: relative;\n  overflow: hidden;\n  border-radius: calc(var(--radius) + 4px);\n  padding: 28px 28px 20px;\n  box-shadow: var(--shadow);\n  background: linear-gradient(180deg, rgba(10,106,176,.03), rgba(10,106,176,.005));\n}\n.pc-container.polished .pc-hero-bg::before,\n.pc-container.polished .pc-hero-bg::after{\n  content:\"\"; position:absolute; inset:auto -10% -40% -10%; height:180px;\n  background: radial-gradient(60% 80% at 50% 0%, rgba(43,176,237,.08), transparent 70%);\n  filter: blur(40px); pointer-events:none;\n}\n.pc-container.polished .pc-hero-inner{ position: relative; z-index: 1; }\n.pc-container.polished .pc-hero-eyebrow{\n  font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent);\n  margin-bottom:6px; font-weight:600;\n}\n.pc-container.polished .pc-hero h1{ margin:.1rem 0 .4rem; font-size: clamp(1.4rem, 2.2vw, 2rem); letter-spacing:-.2px; }\n.pc-container.polished .lead{ margin:0; color: var(--muted); font-size: .98rem; }\n\n.pc-container.polished .pc-steps-nav{ display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }\n.pc-container.polished .chip{\n  display:inline-flex; align-items:center; gap:.5rem; padding:.48rem .72rem; border-radius:999px;\n  background: #fff; color: var(--ink); box-shadow: var(--shadow); text-decoration:none; transition: transform .2s ease, box-shadow .2s ease;\n}\n.pc-container.polished .chip .num{\n  display:inline-grid; place-items:center; width:24px; height:24px; border-radius:50%; font-size:.9rem; font-weight:700; color:#fff; background: linear-gradient(135deg, var(--accent), var(--accent-2));\n}\n.pc-container.polished .chip:hover{ transform: translateY(-2px); box-shadow: 0 10px 24px rgba(0,0,0,.10); }\n\n\/******** Sticky TOC ********\/\n.pc-container.polished .pc-toc{ position: sticky; top: var(--sticky-offset); margin: 18px 0; z-index: 3; }\n.pc-container.polished .pc-toc-inner{\n  border-radius: var(--radius); background: #ffffff; box-shadow: var(--shadow); padding: 14px 16px; border: 1px solid rgba(10,106,176,.10);\n}\n.pc-container.polished .pc-toc-title{ font-size:.9rem; font-weight:700; margin-bottom:6px; color: var(--accent); }\n.pc-container.polished .pc-toc ol{ list-style:none; padding:0; margin:0; display:grid; gap:6px; }\n.pc-container.polished .pc-toc a{ color: var(--ink); text-decoration:none; padding:6px 8px; border-radius:8px; display:block; }\n.pc-container.polished .pc-toc a:is(:hover,:focus){ background: rgba(43,176,237,.08); box-shadow: var(--ring); outline: none; }\n.pc-container.polished .pc-toc a.active{ background: linear-gradient(180deg, rgba(43,176,237,.12), rgba(43,176,237,.06)); }\n\n\/******** Cards ********\/\n.pc-container.polished .card{\n  position: relative; background: var(--card); border-radius: var(--radius); padding: 18px; margin: 16px 0; box-shadow: var(--shadow);\n}\n.pc-container.polished .card-head h2{ font-size: 1.2rem; margin: 0 0 6px; display:flex; align-items:center; gap:10px; }\n.pc-container.polished .card-head .sub{ color: var(--muted); font-size:.95rem; }\n.pc-container.polished .badge{ display:inline-flex; align-items:center; justify-content:center; height:24px; padding:0 8px; font-size:.75rem; border-radius:6px; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color:#fff; box-shadow: inset 0 -1px 0 rgba(255,255,255,.25); }\n.pc-container.polished .pc-desc{ color: var(--muted); margin: 0 0 10px; }\n\/* Ensure anchor scrolling accounts for sticky bars *\/\n.pc-container.polished .pc-step{ scroll-margin-top: calc(var(--sticky-offset) + 16px); }\n.pc-container.polished .card-accent{\n  position:absolute; inset:0; border-radius: inherit; padding:1px; background: linear-gradient(135deg, rgba(10,106,176,.28), rgba(43,176,237,.28)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none; opacity:.7;\n}\n\n\/******** Grid for org cards ********\/\n.pc-container.polished .pc-grid{ display:grid; grid-template-columns: repeat(12, 1fr); gap: 14px; margin-top: 10px; }\n.pc-container.polished .pc-grid.onecol{ grid-template-columns: repeat(12, 1fr); }\n.pc-container.polished .pc-card{ grid-column: span 6; background:#fff; border:1px solid rgba(10,106,176,.10); border-radius: 12px; padding: 14px; transition: transform .2s ease, box-shadow .2s ease; }\n.pc-container.polished .pc-card:hover{ transform: translateY(-4px); box-shadow: 0 14px 28px rgba(10, 29, 56, .12); }\n.pc-container.polished .pc-card.list{ grid-column: 1 \/ -1; }\n.pc-container.polished .pc-card-head{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }\n.pc-container.polished .pc-card h3{ margin:0; font-size:1.05rem; font-weight:700; }\n.pc-container.polished .pc-card ul{ margin:0; padding-left: 1.15rem; color: var(--muted); }\n.pc-container.polished .pc-icon{ display:inline-grid; place-items:center; width:28px; height:28px; border-radius:8px; background: linear-gradient(135deg, rgba(10,106,176,.15), rgba(43,176,237,.15)); color: var(--accent); flex-shrink:0; }\n.pc-container.polished .pc-icon svg{ display:block; }\n\n\/******** Links ********\/\n.pc-container.polished a{ color: var(--accent); text-decoration: none; }\n.pc-container.polished a:hover{ text-decoration: underline; }\n\n\/******** Layout ********\/\n@media (min-width: 900px){\n  .pc-container.polished{ display:grid; grid-template-columns: 260px 1fr; gap:20px; align-items:start; }\n  .pc-container.polished .pc-hero{ grid-column: 1 \/ -1; }\n  .pc-container.polished .pc-toc{ grid-column: 1; align-self:start; }\n  .pc-container.polished .pc-main{ grid-column: 2; min-width:0; }\n}\n@media (max-width: 899.98px){\n  .pc-container.polished .pc-grid{ grid-template-columns: repeat(6, 1fr); }\n  .pc-container.polished .pc-card{ grid-column: 1 \/ -1; }\n}\n\n\/******** Accessible focus ********\/\n.pc-container.polished :is(a,button,[tabindex]){ outline: none; }\n.pc-container.polished :is(a,button,[tabindex]):focus{ box-shadow: var(--ring); border-radius: 8px; }\n\n\/* ===== Datasets table (sharp corners, full grid, table-only hover) ===== *\/\n.pc-table-wrap{ margin-top: 10px; }\n\n.pc-table{\n  width: 100%;\n  border-collapse: collapse;\n  background: #fff;\n  border: 1px solid rgba(10,106,176,.25);   \/* single outer border *\/\n  border-radius: 0;                          \/* sharp corners *\/\n  table-layout: fixed;\n}\n\n.pc-table th,\n.pc-table td{\n  border: 1px solid rgba(10,106,176,.2);     \/* full grid *\/\n  padding: 10px 12px;\n  vertical-align: top;\n  word-wrap: break-word;\n}\n\n\/* Header: centered black text, light transparent blue background *\/\n.pc-table thead th{\n  background: rgba(215,236,251,0.55);\n  color: #000;\n  font-weight: 700;\n  text-align: center;\n}\n\n\/* Body base *\/\n.pc-table tbody td{ text-align: left; }\n\n\/* Column colors: Data (blue), Description (muted grey) *\/\n.pc-table tbody td:first-child{\n  color: #084EAE;\n}\n.pc-table tbody td:first-child a{\n  color: #084EAE;\n  text-decoration: none;\n}\n.pc-table tbody td:first-child a:hover{\n  text-decoration: underline;\n}\n.pc-table tbody td:nth-child(2){\n  color: var(--muted);\n}\n\n\/* Gentle hover lift on the table (no container movement) *\/\n.pc-anim-table{\n  transition: transform .16s ease, box-shadow .16s ease;\n  will-change: transform;\n}\n.pc-anim-table:hover,\n.pc-anim-table:focus-within{\n  transform: translateY(-3px);\n  box-shadow: 0 10px 24px rgba(10, 29, 56, 0.12);\n}\n\n@media (prefers-reduced-motion: reduce){\n  .pc-anim-table{ transition: none; }\n  .pc-anim-table:hover,\n  .pc-anim-table:focus-within{ transform: none; box-shadow: none; }\n}\n<\/style>\n\n<style>\n\/* Small title when placed below the table *\/\n.pc-desc-title{ color: #000; font-weight:700; font-size: .95rem; text-align: left; margin: 10px 0 6px; }\n\n\/* Legend headings match link blue but render normal weight *\/\n.pc-table-legend{ margin-top: 12px; font-size: .95rem; color: var(--muted); }\n.pc-table-legend b{ color: #084EAE; font-weight: 400; }\n\n\/* Left-column small 'last-updated' text only *\/\n.pc-table tbody td:first-child .last-updated{\n  color: #666;\n  display: block;\n  font-size: .9rem;\n  margin-top: 6px;\n  font-style: italic;\n}\n\n\/* Version text for right-column descriptions *\/\n.pc-table tbody td:nth-child(2) .version{\n  color: var(--muted);\n  display: block;\n  font-size: .92rem;\n  margin-top: 8px;\n  font-style: italic;\n}\n<\/style>\n\n<script>\n  (function () {\n    const rows = Array.from(document.querySelectorAll('.pc-table tbody td:first-child'));\n    if (!rows.length) return;\n\n    function formatDateOnly(d) {\n      try {\n        const day = String(d.getDate()).padStart(2, '0');\n        const month = String(d.getMonth() + 1).padStart(2, '0');\n        const year = d.getFullYear();\n        return `${day}\/${month}\/${year}`;\n      } catch (e) { return d.toISOString().slice(0,10); }\n    }\n\n    async function fetchLastModified(url) {\n      try {\n        let resp;\n        try { resp = await fetch(url, { method: 'HEAD', mode: 'cors', cache: 'no-cache' }); } catch (e) { resp = null; }\n        let last = resp && resp.ok ? resp.headers.get('last-modified') : null;\n\n        if (!last) {\n          try { resp = await fetch(url, { method: 'GET', mode: 'cors', cache: 'no-cache' }); } catch (e) { resp = null; }\n          if (resp && resp.ok) {\n            last = resp.headers.get('last-modified');\n            if (!last) {\n              try {\n                const txt = await resp.text();\n                const m = txt.match(\/(?:Last updated|Last update|Updated on|Updated:)\\s*([A-Za-z0-9,\\-:\\.\\s]+)\/i);\n                if (m && m[1]) last = m[1].trim();\n              } catch (e) { \/* ignore *\/ }\n            }\n          }\n        }\n\n        return last || null;\n      } catch (err) { return null; }\n    }\n\n    rows.forEach(async (td) => {\n      const a = td.querySelector('a[href]');\n      const timeEl = td.querySelector('time');\n      if (!a || !timeEl) return;\n      const url = a.href;\n\n      const last = await fetchLastModified(url);\n      if (!last) {\n        const dLocal = new Date(document.lastModified);\n        timeEl.dateTime = dLocal.toISOString();\n        timeEl.textContent = formatDateOnly(dLocal);\n        return;\n      }\n\n      const d = new Date(last);\n      if (!isNaN(d)) {\n        timeEl.dateTime = d.toISOString();\n        timeEl.textContent = formatDateOnly(d);\n      } else {\n        timeEl.textContent = last.split('\\n')[0].trim();\n      }\n    });\n  })();\n<\/script>\n\n<script>\n  \/* Make Research Problems cards clickable \u2014 working script adapted for Berth Visit\n     Paste links into `researchLinks` array as { title: 'Exact H3 text', url: 'https:\/\/...' }\n  *\/\n  (function(){\n    const researchLinks = [\n      { title: 'Berth Allocation', url: 'https:\/\/aiportcenter.nl\/index.php\/berth-allocation\/' },\n      { title: 'Quay-Crane Scheduling', url: 'https:\/\/aiportcenter.nl\/index.php\/quay-crane\/' },\n      { title: 'Tug & Pilot Assignment', url: 'https:\/\/aiportcenter.nl\/index.php\/tug-pilot-assignment\/' }\n    ];\n\n    const linksByIndex = [];\n\n    const section = document.getElementById('research');\n    if(!section) return;\n\n    const cards = Array.from(section.querySelectorAll('.pc-card'));\n    cards.forEach((card, idx) => {\n      const h3 = card.querySelector('h3');\n      const title = h3 ? h3.textContent.trim() : null;\n      const dataUrl = card.dataset && (card.dataset.url || card.dataset.href || card.dataset.link);\n      let mapping = null;\n      if(dataUrl) mapping = { url: dataUrl };\n      if(!mapping) mapping = researchLinks.find(r => r.title === title && r.url);\n      if(!mapping && linksByIndex[idx]) mapping = { url: linksByIndex[idx] };\n\n      if(mapping && mapping.url){\n        \/\/ Make keyboard accessible\n        card.tabIndex = 0;\n        card.setAttribute('role','link');\n        card.style.cursor = 'pointer';\n\n        \/\/ Click \/ keyboard handlers\n        card.addEventListener('click', (e) => { window.open(mapping.url, '_blank'); });\n        card.addEventListener('keydown', (ev) => { if(ev.key === 'Enter' || ev.key === ' '){ ev.preventDefault(); window.open(mapping.url, '_blank'); } });\n\n        \/\/ Add an invisible anchor overlay to preserve pointer semantics\n        const anchor = document.createElement('a');\n        anchor.href = mapping.url;\n        anchor.target = '_blank';\n        anchor.rel = 'noopener noreferrer';\n        anchor.setAttribute('aria-hidden','true');\n        anchor.style.position = 'absolute';\n        anchor.style.inset = '0';\n        anchor.style.zIndex = '2';\n        anchor.style.background = 'transparent';\n        anchor.style.textDecoration = 'none';\n        const pos = getComputedStyle(card).position;\n        if(!pos || pos === 'static') card.style.position = 'relative';\n        card.appendChild(anchor);\n      }\n    });\n\n    \/\/ Ensure the TOC entry exists and uses the desired label for this page\n    const toc = document.querySelector('#berthvisit-rotterdam .pc-toc ol');\n    if(toc){\n      const existing = toc.querySelector('a[href=\"#research\"]');\n      if(!existing){\n        const li = document.createElement('li');\n        const a = document.createElement('a'); a.href = '#research'; a.textContent = 'Research Problems';\n        li.appendChild(a);\n        const execItem = toc.querySelector('a[href=\"#exec\"]');\n        if(execItem && execItem.parentNode) toc.insertBefore(li, execItem.parentNode);\n        else toc.appendChild(li);\n      } else {\n        existing.textContent = 'Research Problems';\n      }\n    }\n  })();\n<\/script>\n\n<\/script>\n<!-- ========= \/END BERTH VISIT (POLISHED) ========= -->\n","protected":false},"excerpt":{"rendered":"<p>Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Berth-Visit Port-Call Optimization at the Port of Rotterdam Berth Visit Delivers ship services such as agency, bunkers, lubricants, provisions, and waste handling in parallel with cargo operations where permitted. The agent coordinates formalities, vendors, keys, permits, and change management. Service sequencing avoids conflicts with hot work, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-378","page","type-page","status-publish","hentry"],"blocksy_meta":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"peterwenzel","author_link":"https:\/\/aiportcenter.nl\/index.php\/author\/peterwenzel\/"},"uagb_comment_info":0,"uagb_excerpt":"Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Berth-Visit Port-Call Optimization at the Port of Rotterdam Berth Visit Delivers ship services such as agency, bunkers, lubricants, provisions, and waste handling in parallel with cargo operations where permitted. The agent coordinates formalities, vendors, keys, permits, and change management. Service sequencing avoids conflicts with hot work,&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/comments?post=378"}],"version-history":[{"count":33,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/378\/revisions"}],"predecessor-version":[{"id":1662,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/378\/revisions\/1662"}],"wp:attachment":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/media?parent=378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}