{"id":382,"date":"2025-10-06T13:01:48","date_gmt":"2025-10-06T13:01:48","guid":{"rendered":"https:\/\/aiportcenter.nl\/?page_id=382"},"modified":"2025-11-29T23:36:43","modified_gmt":"2025-11-29T23:36:43","slug":"anchoring","status":"publish","type":"page","link":"https:\/\/aiportcenter.nl\/index.php\/anchoring\/","title":{"rendered":"Anchoring"},"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\">Anchoring<\/span>\n\n  <\/nav>\n<\/div>\n<\/div>\n\n<!-- ======= \/END BREADCRUMB ======= -->\n\n\n\n<!-- ========= PORT CALL: ANCHORING (ROTTERDAM) \u2014 POLISHED DROP-IN (Datasets as Table) ========= -->\n<div class=\"pc-container polished\" id=\"anchoring-rotterdam\">\n  <header class=\"pc-hero\" role=\"banner\" aria-label=\"Anchoring 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>Anchoring<\/h1>\n      <p class=\"lead\">Provides a safe buffer when berth, tide, or operations are not immediately available. Anchorage assignment, swing room, and holding times are managed to reduce congestion and risk. Limited services may occur (inspections, minor maintenance) subject to rules and weather. Inputs include the anchorage plan, traffic advisories, metocean updates, and readiness checks for rapid call-in. The purpose is to absorb uncertainty without blocking quays and keep the vessel primed for berth. Success is measured by short, predictable waits with zero anchor-drag or security incidents.<\/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> Gangway &amp; Security<\/a>\n        <a href=\"#step-2\" class=\"chip\" data-step=\"2\"><span class=\"num\">2<\/span> Workers\u2019 Assistance<\/a>\n        <a href=\"#step-3\" class=\"chip\" data-step=\"3\"><span class=\"num\">3<\/span> Cargo Support<\/a>\n        <a href=\"#step-4\" class=\"chip\" data-step=\"4\"><span class=\"num\">4<\/span> Cargo Survey<\/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\">Gangway &amp; Security<\/a><\/li>\n        <li><a href=\"#step-2\">Workers\u2019 Assistance<\/a><\/li>\n        <li><a href=\"#step-3\">Cargo Support<\/a><\/li>\n        <li><a href=\"#step-4\">Cargo Survey<\/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=\"gangway security ISPS launch transfer access control boarding windows\" 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>Gangway &amp; Security<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Controls access (if permitted) through boat transfer and temporary gangway setups. Implements ISPS measures including ID checks, visitor logs, and restricted work zones. Weather and sea state determine safe boarding windows. Agent and pilot updates ensure readiness to heave anchor on short notice. The purpose is secure and safe ship access during lay-by. Success is defined by zero unauthorized boarding and no incidents.<\/p>\n  <\/section>\n\n  <!-- Step 2 -->\n  <section class=\"pc-step card\" id=\"step-2\" data-keywords=\"inspections maintenance permits risk assessment safe work at anchor\" 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>Workers\u2019 Assistance<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Enables inspections and limited maintenance while waiting. Permits and risk assessments control allowable activities at anchor. Tasks are selected to avoid creating dependencies that could delay berthing. Records feed the ship\u2019s maintenance system and port-call reports. The purpose is productive use of idle time without introducing new risks. Success is higher operational readiness once a berth is available.<\/p>\n  <\/section>\n\n  <!-- Step 3 -->\n  <section class=\"pc-step card\" id=\"step-3\" data-keywords=\"cargo readiness IMDG segregation reefer checks documentation\" 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>Cargo Support<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Prepares cargo gear, lashings, and documentation ahead of terminal operations. Verifies that stow plans and manifests match onboard status. Checks IMDG segregation and reefer readiness where relevant. Discrepancies are escalated early to planners or brokers. The purpose is a clean start for quay operations. The benefit is reduced first-crane delays and rework.<\/p>\n  <\/section>\n\n  <!-- Step 4 -->\n  <section class=\"pc-step card\" id=\"step-4\" data-keywords=\"surveys condition quantity independent evidence weather window launch availability\" 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>Cargo Survey<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Conducts independent condition and quantity surveys as required by stakeholders. Surveys help prevent disputes and confirm readiness for sensitive cargoes. Results support insurance, charter party compliance, and terminal planning. Weather windows and launch availability determine timing at anchor. The purpose is objective evidence before cargo handling begins. The outcome is fewer claims and clearer accountability.<\/p>\n  <\/section>\n\n  <!-- Research Problems -->\n  <section class=\"pc-step card\" id=\"research\" data-keywords=\"research problems berth tug pilot optimization\" 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 anchoring 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 a card to open the webpage and data set for each research problem.<\/div>\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\" aria-hidden=\"true\"><path d=\"M3 19a1 1 0 0 0 .894.553h16.212A1 1 0 0 0 21 19v-2h-2v-5.382l-7-2.333-7 2.333V17H3v2Zm4-4h10v2H7v-2Zm6-9V4h-2v2H5v2.118l7-2.333 7 2.333V6h-6Z\"\/><\/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\/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=\"anchor watch swing circle security launch transfers pollution prevention\" 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 anchoring 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\"><!-- port icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 3h18v2H3V3Zm0 4h18v10H3V7Zm2 2v6h14V9H5Zm3 8h8v2H8v-2Z\"\/><\/svg><\/span>\n          <h3>Port of Rotterdam Authority<\/h3>\n        <\/div>\n        <ul>\n          <li>Assigns anchorage positions, monitors vessel safety and traffic at anchor, ensures compliance with local regulations.<\/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\"><!-- pilot icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 6h16l-2 6-6 6-6-6 2-6Zm6 2-1 3 3 3 3-3 1-3h-6Z\"\/><\/svg><\/span>\n          <h3>Loodswezen Rotterdam-Rijnmond<\/h3>\n        <\/div>\n        <ul>\n          <li>Guides vessels to assigned anchorage areas; advises masters on safe manoeuvring into\/out of anchorage zones.<\/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\"><!-- ship transfer icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 6h12v2H3V6Zm0 4h10v2H3v-2Zm0 4h8v2H3v-2Zm12-6 6-3v12l-6-3V8Z\"\/><\/svg><\/span>\n          <h3>Redwise Maritime Services<\/h3>\n        <\/div>\n        <ul>\n          <li>Specialised support (ship delivery, crew transfer) to\/from vessels at anchorage, including arranging temporary manning.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Planning Party -->\n  <section class=\"pc-step card\" id=\"plan\" data-keywords=\"anchorage allocation sequencing UKC metocean forecasting permitted work at anchor\" 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 pre-arrival 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>Anchorage allocation, traffic sequencing, and safety constraints based on port traffic and weather.<\/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\"><!-- lines icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 6h16v2H4V6Zm0 5h16v2H4v-2Zm0 5h10v2H4v-2Z\"\/><\/svg><\/span>\n          <h3>Maersk, MSC<\/h3>\n        <\/div>\n        <ul>\n          <li>Shipping lines\/charterers who request anchorage when berth is not yet available; provide load\/unload priorities and stability requirements.<\/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\"><!-- digital platform icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 5h18v4H3V5Zm0 6h18v8H3v-8Zm2 2v4h14v-4H5Z\"\/><\/svg><\/span>\n          <h3>Portbase (Digital Coordination Platform)<\/h3>\n        <\/div>\n        <ul>\n          <li>Coordinates anchorage status, updated ETAs, berth planning, and onward notifications via PCS entries.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Datasets (TABLE) -->\n  <section class=\"pc-step card\" id=\"data\" data-keywords=\"anchorage areas waiting times metocean warnings VTS rules Europlatform UKC\" 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 anchoring 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=\"Anchoring 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:\/\/www.portofrotterdam.com\/en\/logistics\/port-performance\" target=\"_blank\" rel=\"noopener\">Port Performance \u2014 Anchorage<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"portperf-last\"><\/time><\/div>\n            <\/td>\n            <td>Dashboard of anchorage waiting times to support just-in-time entry.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/building-port\/accessible-port\/port-signposting\" target=\"_blank\" rel=\"noopener\">Harbour Master Port Map (overview)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"harbour-map-last\"><\/time><\/div>\n            <\/td>\n            <td>Gateway to the interactive map with nautical signposting and areas, including designated anchorages.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/publications.portofrotterdam.com\/port-call-optimisation\/waiting-area\" target=\"_blank\" rel=\"noopener\">Port-Call Optimisation \u2014 Waiting Area<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"waiting-area-last\"><\/time><\/div>\n            <\/td>\n            <td>Explains anchorage\/drifting area use and capacity updates.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/kustwacht.nl\/en\/merchant-shipping\/bunkering-at-sea\/\" target=\"_blank\" rel=\"noopener\">Netherlands Coastguard \u2014 Bunkering at Sea<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"coastguard-last\"><\/time><\/div>\n            <\/td>\n            <td>Conditions for at-anchor\/OPL bunkering near Rotterdam.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/english.knmidata.nl\/open-data\" target=\"_blank\" rel=\"noopener\">KNMI Open Data \u2014 Marine &amp; Coastal<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"knmi-last\"><\/time><\/div>\n            <\/td>\n            <td>Machine-readable forecasts and warnings for coastal\/North Sea districts.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/waterinfo.rws.nl\/\" target=\"_blank\" rel=\"noopener\">Rijkswaterstaat \u2014 Waterinfo<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"rws-last\"><\/time><\/div>\n            <\/td>\n            <td>Live water levels, waves, and currents for the Dutch coast and approaches.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/offshorewind-measurements.tno.nl\/en\/measurement-locations\/europlatform-epl\/\" target=\"_blank\" rel=\"noopener\">Europlatform (EPL) Metocean Site<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"europlatform-last\"><\/time><\/div>\n            <\/td>\n            <td>Offshore wind\/wave observations near Hoek van Holland.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/noordzeeloket.nl\/en\/functions-use\/offshore-wind-energy\/shipping-safety-around-offshore-wind-farms-moswoz\/anchorage-areas\/\" target=\"_blank\" rel=\"noopener\">Noordzeeloket \u2014 Anchorage Areas &amp; Policy<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"noordzeeloket-last\"><\/time><\/div>\n            <\/td>\n            <td>National context on anchorage\/no-anchoring zones and safety studies.\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        <\/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\/card 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  <script>\n  \/* Make Research Problems cards clickable (data-url priority, plus mapping) *\/\n  (function(){\n    const researchLinks = [\n      { title: 'Berth Allocation', url: 'https:\/\/aiportcenter.nl\/index.php\/berth-allocation\/' },\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('#anchoring-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('#anchoring-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 ANCHORING (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 Anchoring Port-Call Optimization at the Port of Rotterdam Anchoring Provides a safe buffer when berth, tide, or operations are not immediately available. Anchorage assignment, swing room, and holding times are managed to reduce congestion and risk. Limited services may occur (inspections, minor maintenance) subject to rules [&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-382","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 Anchoring Port-Call Optimization at the Port of Rotterdam Anchoring Provides a safe buffer when berth, tide, or operations are not immediately available. Anchorage assignment, swing room, and holding times are managed to reduce congestion and risk. Limited services may occur (inspections, minor maintenance) subject to rules&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/382","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=382"}],"version-history":[{"count":22,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/382\/revisions"}],"predecessor-version":[{"id":1661,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/382\/revisions\/1661"}],"wp:attachment":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/media?parent=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}