{"id":386,"date":"2025-10-06T13:00:50","date_gmt":"2025-10-06T13:00:50","guid":{"rendered":"https:\/\/aiportcenter.nl\/?page_id=386"},"modified":"2025-11-29T22:26:31","modified_gmt":"2025-11-29T22:26:31","slug":"port-maneuvering","status":"publish","type":"page","link":"https:\/\/aiportcenter.nl\/index.php\/port-maneuvering\/","title":{"rendered":"Port Maneuvering"},"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\">Port Maneuvering<\/span>\n\n  <\/nav>\n<\/div>\n<\/div>\n\n<!-- ======= \/END BREADCRUMB ======= -->\n\n\n\n<!-- ========= PORT CALL: PORT MANEUVERING (ROTTERDAM) \u2014 POLISHED DROP-IN (Datasets as Table) ========= -->\n<div class=\"pc-container polished\" id=\"portmaneuvering-rotterdam\">\n  <header class=\"pc-hero\" role=\"banner\" aria-label=\"Port Maneuvering 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>Port Maneuvering<\/h1>\n      <p class=\"lead\">Covers precise positioning, holding, and shifting within basins and alongside. Mooring and unmooring plans, tug allocation, and boatmen availability are coordinated to the minute. Shifts resolve quay conflicts, crane positioning needs, and depth or gear constraints without losing slot time. Inputs include the berth plan, tug schedules, boatmen teams, and metocean limits for safe line handling. The purpose is positional accuracy and time control inside a congested port. Performance is defined by zero incidents, minimal line-handling delays, and maintained crane start times.<\/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> Mooring<\/a>\n        <a href=\"#step-2\" class=\"chip\" data-step=\"2\"><span class=\"num\">2<\/span> Unmooring<\/a>\n        <a href=\"#step-3\" class=\"chip\" data-step=\"3\"><span class=\"num\">3<\/span> Berth Shifting<\/a>\n        <a href=\"#research\" class=\"chip\" data-step=\"3\"><span class=\"num\">4<\/span> Research Problems<\/a>\n        <a href=\"#exec\" class=\"chip\" data-step=\"3\"><span class=\"num\">5<\/span> Execution Party<\/a>\n        <a href=\"#plan\" class=\"chip\" data-step=\"3\"><span class=\"num\">6<\/span> Planning Party<\/a>\n        <a href=\"#data\" class=\"chip\" data-step=\"3\"><span class=\"num\">7<\/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\">Mooring<\/a><\/li>\n        <li><a href=\"#step-2\">Unmooring<\/a><\/li>\n        <li><a href=\"#step-3\">Berth Shifting<\/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=\"mooring boatmen lines tension fenders crane reach access envelopes\" 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>Mooring<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Places and tensions lines to secure the vessel against tidal and wind loads. Boatmen coordinate with the bridge and winch teams to reach a stable equilibrium. Line positions are verified against terminal clearances for cranes and access. Monitoring continues for tide and wind changes that require re-tensioning. The purpose is stability for safe operations and equipment alignment. The outcome is authorization to begin service and cargo work.<\/p>\n  <\/section>\n\n  <!-- Step 2 -->\n  <section class=\"pc-step card\" id=\"step-2\" data-keywords=\"unmooring release lines fenders traffic check tug readiness breakaway\" 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>Unmooring<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Plans and executes line release, fender clearance, and initial thrust. Traffic conditions and tug readiness are checked to ensure a conflict-free departure. Bridge and boatmen coordination ensures safe separation from the quay. ALS and ATS timestamps close the berth episode for billing and KPIs. The purpose is a safe transition from stationary to navigational control. Success is smooth departure with no damage or schedule impact.<\/p>\n  <\/section>\n\n  <!-- Step 3 -->\n  <section class=\"pc-step card\" id=\"step-3\" data-keywords=\"berth shift reposition tug slots safety checks quick turn\" 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>Berth Shifting<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Repositions the vessel to a different quay or location within the terminal or port. Used to meet crane availability, depth constraints, or cargo sequencing needs. Requires new tug and boatmen slots and fresh safety checks similar to an arrival. Minimizes lost time compared with remaining at an unsuitable berth. The purpose is optimal berth utilization and schedule feasibility. Success is minimal shift duration with immediate resumption of operations.<\/p>\n  <\/section>\n\n  <!-- Execution Party -->\n  <!-- Research Problems -->\n  <section class=\"pc-step card\" id=\"research\" data-keywords=\"research problems 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 manoeuvring operations.<\/div>\n    <\/header>\n\n    <div class=\"pc-research-note\" aria-hidden=\"false\" style=\"margin-top:8px; margin-bottom:8px; display:flex; align-items:center; gap:10px;\">\n      <style>\n        .pc-research-note .highlight-dot { display:inline-block; width:14px; height:14px; border-radius:50%; background: linear-gradient(90deg, #74c9ff, #2aa7e8); box-shadow: 0 2px 6px rgba(42,175,244,0.18); margin-right:10px; vertical-align:middle; animation: pcPulse 2.2s ease-in-out infinite; flex:0 0 auto; }\n        .pc-research-note .instruction { font-size:.95rem; color:var(--muted); margin:0; }\n        @keyframes pcPulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.15)} }\n      <\/style>\n      <span class=\"highlight-dot\" aria-hidden=\"true\"><\/span>\n      <div class=\"instruction\">Click on the card to open the webpage and data sets for the research problem.<\/div>\n    <\/div>\n\n    <div class=\"pc-grid\">\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\" aria-hidden=\"true\"><path d=\"M12 2 2 7l10 5 10-5-10-5Zm0 7L2 4v13l10 5 10-5V4l-10 5Z\"\/><\/svg><\/span>\n          <h3>Tug &#038; 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=\"towage boatmen harbour master execution real-time basin control\" 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 port maneuvering 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\"><!-- tug icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 17h18v2H3v-2Zm2-6h6v4H5v-4Zm8-6h6v10h-6V5Z\"\/><\/svg><\/span>\n          <h3>Boluda Towage Rotterdam<\/h3>\n        <\/div>\n        <ul>\n          <li>Provides harbour tugs for berthing, unberthing, and shifting; coordinates with pilots and VTS (formerly Kotug Smit Towage).<\/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\"><!-- rotortug icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M12 2 2 7l10 5 10-5-10-5Zm0 7L2 4v13l10 5 10-5V4l-10 5Z\"\/><\/svg><\/span>\n          <h3>Kotug International<\/h3>\n        <\/div>\n        <ul>\n          <li>Independent towage &amp; maritime services; operates advanced Rotortugs\u00ae in Rotterdam and worldwide.<\/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\"><!-- tanker support icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 6h16v2H4V6Zm0 5h16v2H4v-2Zm0 5h16v2H4v-2Z\"\/><\/svg><\/span>\n          <h3>Smit Lamnalco<\/h3>\n        <\/div>\n        <ul>\n          <li>Towage and terminal support, often at oil\/gas and bulk terminals; assists with specialized tanker manoeuvres in Rotterdam.<\/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\"><!-- mooring icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M12 2a5 5 0 0 1 5 5v5h2l-7 7-7-7h2V7a5 5 0 0 1 5-5Z\"\/><\/svg><\/span>\n          <h3>KRVE Rotterdam Boatmen\u2019s Association<\/h3>\n        <\/div>\n        <ul>\n          <li>Handles mooring\/unmooring (line handling) of sea-going vessels; essential for safe berthing during manoeuvring.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Planning Party -->\n  <section class=\"pc-step card\" id=\"plan\" data-keywords=\"planning harbour master ukc metocean visibility quay readiness envelopes\" 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 port maneuvering 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>Harbour Master oversees traffic control and approves manoeuvre windows; integrates pilots, tugs, boatmen, and terminal readiness.<\/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 Terminals<\/h3>\n        <\/div>\n        <ul>\n          <li>Plans quay availability and crane scheduling; ensures berth readiness during manoeuvres.<\/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 icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 7h16v10H4V7Zm2 2v6h12V9H6Z\"\/><\/svg><\/span>\n          <h3>Vopak Operations<\/h3>\n        <\/div>\n        <ul>\n          <li>Coordinates tanker berth availability; aligns loading arms, safety checks, and jetty readiness with vessel manoeuvres.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Datasets (TABLE) -->\n  <section class=\"pc-step card\" id=\"data\" data-keywords=\"maneuvering mooring unmooring shifts tug plan boatmen ukc metocean depths maps notices\" 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 port maneuvering 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=\"Port Maneuvering 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          <tr>\n            <td>\n              <a href=\"https:\/\/pin.portofrotterdam.com\" target=\"_blank\" rel=\"noopener\">Port Information Notices (PIN)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"pin-last\"><\/time><\/div>\n            <\/td>\n            <td>Operational notices from the Harbour Master (e.g., storm regulations, restrictions) that affect manoeuvre windows.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/experience.arcgis.com\/experience\/aef5cad4ef6a437499c2ba6a7606c07b\/page\/Harbour-Master-Port-Map\" target=\"_blank\" rel=\"noopener\">Harbour Master Port Map<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"harbour-map-last\"><\/time><\/div>\n            <\/td>\n            <td>Interactive ArcGIS map of berths, fairways, soundings and quay infrastructure for positions and shifts.\n              <div class=\"version\">Version: Free (ArcGIS)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/up-to-date-information\/weather-tides-and-water-depth\" target=\"_blank\" rel=\"noopener\">Weather, Tides &amp; Water Depth (overview)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"weather-last\"><\/time><\/div>\n            <\/td>\n            <td>Hub with real-time hydro\/meteo, depth references and tools for UKC and safe line handling.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/gis.portofrotterdam.com\/arcgis\/apps\/webappviewer\/index.html?id=9e1a1d2b1f274f8ea9b2f2b2a3a1d2b1\" target=\"_blank\" rel=\"noopener\">Maritime Chart Server (NAP)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"mcs-nap-last\"><\/time><\/div>\n            <\/td>\n            <td>Current depth information relative to NAP for basins\/berths.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/gis.portofrotterdam.com\/arcgis\/apps\/webappviewer\/index.html?id=3a0b0d8c7e0e4a9a8f2c1a0b0d8c7e0e\" target=\"_blank\" rel=\"noopener\">Maritime Chart Server (ALAT)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"mcs-alat-last\"><\/time><\/div>\n            <\/td>\n            <td>Depth information relative to ALAT, aligned with marine practice in port waters.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/metoceanportal.com\" target=\"_blank\" rel=\"noopener\">Long-term Tide Viewer<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"tideviewer-last\"><\/time><\/div>\n            <\/td>\n            <td>Astronomical tide windows to schedule mooring\/unmooring and shifts around expected levels.\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\/buoys-and-dolphins\" target=\"_blank\" rel=\"noopener\">Buoys &amp; Dolphins (Overview)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"buoys-overview-last\"><\/time><\/div>\n            <\/td>\n            <td>Berthing guidelines and locations for buoy\/dolphin moorings used for STS, lay-by, bunkering.\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\/buoys-and-dolphins\/locations-buoys-and-dolphins\" target=\"_blank\" rel=\"noopener\">Buoys &amp; Dolphins \u2014 Locations<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"buoys-locations-last\"><\/time><\/div>\n            <\/td>\n            <td>List and map of buoy\/dolphin berths; check availability context for planned shifts.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/contact-harbourmaster\/vts-services-and-vhf-communication-procedure\" target=\"_blank\" rel=\"noopener\">VTS Services &amp; VHF Procedure<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"vts-last\"><\/time><\/div>\n            <\/td>\n            <td>Sectors, working channels, and reporting moments to coordinate short moves with VTS\/HCC.\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\/2023-07\/procedure-VHF-communication-VTS-HCC-2023-English.pdf\" target=\"_blank\" rel=\"noopener\">VHF Procedure (PDF)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"vhf-pdf-last\"><\/time><\/div>\n            <\/td>\n            <td>Step-by-step radio protocol (channels, calls, watch) used during manoeuvring.\n              <div class=\"version\">Version: Free (PDF)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/krve.nl\/en\/mooring-management-en\/\" target=\"_blank\" rel=\"noopener\">KRVE \u2014 Mooring Management<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"krve-last\"><\/time><\/div>\n            <\/td>\n            <td>Engineering\/operational guidance (Optimoor, dynamic mooring analyses, ShoreTension) for safe mooring setups.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.rijkswaterstaat.nl\/water\/vaarwegenoverzicht\" target=\"_blank\" rel=\"noopener\">Rijkswaterstaat Waterways Overview<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"rws-last\"><\/time><\/div>\n            <\/td>\n            <td>Planned\/unplanned hindrance and operations that may constrain short shifts in\/near port.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.vaarweginformatie.nl\/\" target=\"_blank\" rel=\"noopener\">Vaarweginformatie<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"vaarweg-last\"><\/time><\/div>\n            <\/td>\n            <td>Live notices on Dutch waterways impacting manoeuvring routes to\/from basins.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/emodnet.ec.europa.eu\/en\/bathymetry\" target=\"_blank\" rel=\"noopener\">EMODnet Bathymetry<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"emodnet-last\"><\/time><\/div>\n            <\/td>\n            <td>Harmonised seabed\/bathymetric context supporting basin geometry assessments (complements local MCS soundings).\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/english.defensie.nl\/topics\/notices-to-mariners\" target=\"_blank\" rel=\"noopener\">Netherlands Notices to Mariners (NtM)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"ntm-last\"><\/time><\/div>\n            <\/td>\n            <td>Current changes to buoyage\/lights\/marks relevant to berthing areas and approaches.\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 (ArcGIS):<\/b> The content is delivered through an interactive mapping platform (ArcGIS Experience\/ArcGIS Online).<\/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    <\/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 ===== *\/\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  -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  \/* Two-column grid: TOC left (fixed 260px), content right (auto height), no overlap *\/\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\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 card clickable (data-url priority, plus mapping) *\/\n  (function(){\n    const researchLinks = [\n      { title: 'Tug & Pilot Assignment', url: 'https:\/\/aiportcenter.nl\/index.php\/tug-pilot-assignment\/' }\n    ];\n    const linksByIndex = [];\n    const section = document.getElementById('research');\n    if(!section) return;\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      if(mapping && mapping.url){\n        card.tabIndex = 0; card.setAttribute('role','link'); card.style.cursor = 'pointer';\n        card.addEventListener('click', ()=> window.open(mapping.url, '_blank'));\n        card.addEventListener('keydown', (ev)=> { if(ev.key === 'Enter' || ev.key === ' '){ ev.preventDefault(); window.open(mapping.url, '_blank'); } });\n        const anchor = document.createElement('a'); anchor.href = mapping.url; anchor.target = '_blank'; anchor.rel = 'noopener noreferrer';\n        anchor.setAttribute('aria-hidden','true'); anchor.style.position = 'absolute'; anchor.style.inset = '0'; anchor.style.zIndex = '2'; anchor.style.background = 'transparent'; anchor.style.textDecoration = 'none';\n        const pos = getComputedStyle(card).position; if(!pos || pos === 'static') card.style.position = 'relative'; card.appendChild(anchor);\n      }\n    });\n    const toc = document.querySelector('#portmaneuvering-rotterdam .pc-toc ol');\n    if(toc){ const existing = toc.querySelector('a[href=\"#research\"]'); if(!existing){ const li = document.createElement('li'); const a = document.createElement('a'); a.href = '#research'; a.textContent = 'Research Problems'; li.appendChild(a); const execItem = toc.querySelector('a[href=\"#exec\"]'); if(execItem && execItem.parentNode) toc.insertBefore(li, execItem.parentNode); else toc.appendChild(li); } else { existing.textContent = 'Research Problems'; } }\n  })();\n<\/script>\n\n<script>\n\/\/ ===== Smooth scroll + active TOC highlighting + header height detection =====\n(function(){\n  \/\/ Detect fixed\/sticky site header height and set --site-header\n  try{\n    const root = document.documentElement;\n    const detect = () => {\n      const nodes = Array.from(document.querySelectorAll(\n        'header, .site-header, #masthead, .navbar, .header, [data-fixed-header], ' +\n        '.sticky-header, .header-wrapper, .elementor-location-header, ' +\n        '.fl-page-header, .fusion-header, .kadence-header, .ast-primary-header-bar, ' +\n        '.generatepress-header, .blocksy-header'\n      ));\n      const fixedLike = nodes.filter(el => {\n        const cs = getComputedStyle(el);\n        const pos = cs.position;\n        const top = Math.round(el.getBoundingClientRect().top);\n        return (pos==='fixed' || pos==='sticky') && top <= 0 &#038;&#038; el.offsetHeight > 0;\n      });\n      const h = fixedLike.reduce((m,el)=> Math.max(m, el.offsetHeight||0), 0);\n      root.style.setProperty('--site-header', h + 'px');\n    };\n    ['load','resize','scroll'].forEach(ev=> window.addEventListener(ev, detect, { passive:true }));\n    detect();\n  }catch(e){}\n\n  const tocLinks = Array.from(document.querySelectorAll('#portmaneuvering-rotterdam .pc-toc a'));\n  const sections = tocLinks.map(a => document.querySelector(a.getAttribute('href'))).filter(Boolean);\n\n  tocLinks.forEach(a=>a.addEventListener('click', e=>{\n    e.preventDefault();\n    document.querySelector(a.getAttribute('href')).scrollIntoView({behavior:'smooth', block:'start'});\n  }));\n\n  const io = new IntersectionObserver((entries)=>{\n    entries.forEach(entry=>{\n      const id = '#' + entry.target.id;\n      const link = tocLinks.find(l=>l.getAttribute('href')===id);\n      if(link){\n        if(entry.isIntersecting){\n          tocLinks.forEach(l=>l.classList.remove('active'));\n          link.classList.add('active');\n        }\n      }\n    })\n  },{ rootMargin: 'calc(var(--sticky-offset) * -1) 0px -60% 0px', threshold: 0.01 });\n  sections.forEach(sec=> io.observe(sec));\n})();\n<\/script>\n<!-- ========= \/END PORT MANEUVERING (POLISHED) ========= -->\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Port Maneuvering Port-Call Optimization at the Port of Rotterdam Port Maneuvering Covers precise positioning, holding, and shifting within basins and alongside. Mooring and unmooring plans, tug allocation, and boatmen availability are coordinated to the minute. Shifts resolve quay conflicts, crane positioning needs, and depth or gear [&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-386","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"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 Port Maneuvering Port-Call Optimization at the Port of Rotterdam Port Maneuvering Covers precise positioning, holding, and shifting within basins and alongside. Mooring and unmooring plans, tug allocation, and boatmen availability are coordinated to the minute. Shifts resolve quay conflicts, crane positioning needs, and depth or gear&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/386","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=386"}],"version-history":[{"count":19,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/386\/revisions"}],"predecessor-version":[{"id":1653,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/386\/revisions\/1653"}],"wp:attachment":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/media?parent=386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}