{"id":1484,"date":"2026-10-08T09:11:08","date_gmt":"2026-10-08T09:11:08","guid":{"rendered":"https:\/\/circularport.eu\/?page_id=1484"},"modified":"2026-10-27T09:55:21","modified_gmt":"2026-10-27T09:55:21","slug":"circularport-3","status":"publish","type":"page","link":"https:\/\/circularport.eu\/es\/","title":{"rendered":"Circularport"},"content":{"rendered":"<div class=\"vce-row-container\"><div class=\"vce-row vce-row--col-gap-30 vce-row-equal-height vce-row-content--top\" data-vce-full-width=\"true\" data-vce-stretch-content=\"true\" id=\"el-28321467\" data-vce-do-apply=\"all el-28321467\"><div class=\"vce-content-background-container\"><\/div><div class=\"vce-row-content\" data-vce-element-content=\"true\"><div class=\"vce-col vce-col--md-auto vce-col--xs-1 vce-col--xs-last vce-col--xs-first vce-col--sm-last vce-col--sm-first vce-col--md-last vce-col--lg-last vce-col--xl-last vce-col--md-first vce-col--lg-first vce-col--xl-first\" id=\"el-129d9d12\"><div class=\"vce-col-inner\" data-vce-do-apply=\"border margin background  el-129d9d12\"><div class=\"vce-col-content\" data-vce-element-content=\"true\" data-vce-do-apply=\"padding el-129d9d12\"><div class=\"vce-raw-html\"><div class=\"vce-raw-html-wrapper\" id=\"el-d74e52b0\" data-vce-do-apply=\"all el-d74e52b0\"><link rel=\"stylesheet\" href=\"circularport_home_banner_only.css\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;700&amp;display=swap\" rel=\"stylesheet\">\n\n<div id=\"circularport-home\" lang=\"en\">\n\n  <!-- FULLSCREEN HOME HERO -->\n  <section class=\"cp-banner\" aria-labelledby=\"cp-banner-title\">\n    <div class=\"cp-banner-glow\" aria-hidden=\"true\"><\/div>\n    <div class=\"cp-banner-scenery\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 1440 360\" preserveAspectRatio=\"xMidYMax slice\" focusable=\"false\"><defs><linearGradient id=\"cpSea\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop stop-color=\"#d7eaff\" stop-opacity=\".12\"><\/stop><stop offset=\"1\" stop-color=\"#8bbfe8\" stop-opacity=\".64\"><\/stop><\/linearGradient><\/defs><path d=\"M0 212Q155 145 290 195T570 204Q710 139 860 181T1150 153Q1270 135 1440 159V360H0Z\" fill=\"#d8e8f8\" opacity=\".65\"><\/path><path d=\"M0 260Q260 205 530 256T1020 221Q1240 209 1440 244V360H0Z\" fill=\"url(#cpSea)\"><\/path><path d=\"M935 273h268l-21 43h-199z\" fill=\"#7b9cbe\" opacity=\".48\"><\/path><path d=\"M1020 271v-86m0 9h66m-45-9v86m78 0v-123m0 12h87m-57-12v123\" stroke=\"#7b9cbe\" stroke-width=\"4\" opacity=\".38\" fill=\"none\"><\/path><path d=\"M0 315H1440\" stroke=\"#8bbfe8\" stroke-width=\"2\" opacity=\".28\"><\/path><\/svg>\n    <\/div>\n    <div class=\"cp-banner-inner\">\n      <div class=\"cp-banner-content\">\n        <p class=\"cp-banner-kicker\">DIGITAL TRACEABILITY <span>\u00b7<\/span> MARPOL WASTE<\/p>\n        <h1 id=\"cp-banner-title\">Connect the data.<br>Track every <span>waste stream.<\/span><\/h1>\n        <p class=\"cp-banner-lead\">From vessel to final destination. One platform to connect port operations, verify every process and measure environmental impact.<\/p>\n        <div class=\"cp-banner-actions\">\n          <a class=\"cp-banner-btn cp-banner-btn-primary\" href=\"#cp-plataforma\">Explore the platform <span aria-hidden=\"true\">\u2192<\/span><\/a>\n          <a class=\"cp-banner-btn cp-banner-btn-secondary\" href=\"#cp-funcionamiento\">How it works<\/a>\n        <\/div>\n        <p class=\"cp-banner-trust\"><span aria-hidden=\"true\">\u2713<\/span> Developed with the Balearic Islands Port Authority<\/p>\n      <\/div>\n      <div class=\"cp-banner-visual\">\n        <svg class=\"cp-banner-route-line\" viewBox=\"0 0 630 430\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 306C110 269 105 350 228 265S388 209 435 153 529 152 616 29\" stroke=\"#5da9fa\" stroke-width=\"2\" stroke-dasharray=\"5 8\"><\/path><circle cx=\"228\" cy=\"265\" r=\"7\" fill=\"#168cf2\" stroke=\"white\" stroke-width=\"4\"><\/circle><circle cx=\"435\" cy=\"153\" r=\"7\" fill=\"#168cf2\" stroke=\"white\" stroke-width=\"4\"><\/circle><circle cx=\"616\" cy=\"29\" r=\"7\" fill=\"#2441ea\" stroke=\"white\" stroke-width=\"4\"><\/circle><\/svg>\n        <div class=\"cp-banner-panel\">\n          <div class=\"cp-banner-panel-top\"><span class=\"cp-banner-brand\">CIRCULARPORT<\/span><span class=\"cp-banner-live\"><i><\/i> Digital traceability<\/span><\/div>\n          <p class=\"cp-banner-overline\">FROM PORT TO FINAL TREATMENT<\/p>\n          <h2>One waste stream.<br>One connected record.<\/h2>\n          <div class=\"cp-banner-journey\" aria-label=\"Waste traceability stages\">\n            <div class=\"cp-banner-stage\"><span class=\"cp-banner-step\">01<\/span><span class=\"cp-banner-stage-icon\" aria-hidden=\"true\">\u2693<\/span><strong>Origin<\/strong><small>Vessel and port call<\/small><\/div>\n            <div class=\"cp-banner-stage\"><span class=\"cp-banner-step\">02<\/span><span class=\"cp-banner-stage-icon\" aria-hidden=\"true\">\u25a3<\/span><strong>Collection<\/strong><small>MARPOL service<\/small><\/div>\n            <div class=\"cp-banner-stage\"><span class=\"cp-banner-step\">03<\/span><span class=\"cp-banner-stage-icon\" aria-hidden=\"true\">\u21e2<\/span><strong>Transport<\/strong><small>Chain of custody<\/small><\/div>\n            <div class=\"cp-banner-stage\"><span class=\"cp-banner-step\">04<\/span><span class=\"cp-banner-stage-icon\" aria-hidden=\"true\">\u2667<\/span><strong>Destination<\/strong><small>Final treatment<\/small><\/div>\n          <\/div>\n          <div class=\"cp-banner-passport\"><span class=\"cp-banner-passport-symbol\" aria-hidden=\"true\">\u25a4<\/span><span><strong>Digital waste passport<\/strong><small>Traceability from port to final treatment<\/small><\/span><span class=\"cp-banner-verified\">Verifiable traceability<\/span><\/div>\n        <\/div>\n        <div class=\"cp-banner-float\"><span>\u2667 &nbsp; Environmental impact<\/span><strong>Connected data<\/strong><small>Insights across the waste lifecycle<\/small><span class=\"cp-banner-bars\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><i><\/i><i><\/i><i><\/i><\/span><\/div>\n      <\/div>\n    <\/div>\n    <div class=\"cp-banner-footer\"><span><b aria-hidden=\"true\">\u2197<\/b> Connected operations<\/span><span><b aria-hidden=\"true\">\u25a4<\/b> Digital passport<\/span><span><b aria-hidden=\"true\">\u25a5<\/b> Environmental indicators<\/span><a href=\"https:\/\/www.blueroominnovation.com\/circularport\" target=\"_blank\" rel=\"noopener\">Developed by <strong>Blue Room Innovation<\/strong><\/a><\/div>\n  <\/section>\n\n  <!-- QU\u00c9 ES -->\n  <section class=\"cp-section\" id=\"cp-que-es\">\n    <div class=\"cp-container\">\n      <div class=\"cp-heading-grid\">\n        <div>\n          <p class=\"cp-eyebrow\">WHAT IS CIRCULARPORT<\/p>\n          <h2>A connected port.<br><span>Traceable waste.<\/span><\/h2>\n        <\/div>\n\n        <div class=\"cp-heading-copy\">\n          <p class=\"cp-lead\">\n            CircularPort digitizes MARPOL waste management and connects\n            all stakeholders in a single traceable, verifiable platform.\n          <\/p>\n          <p>\n            Port authorities, vessels, agents, transport operators, port police,\n            waste managers and recyclers share information about\n            every operation. From collection to final treatment,\n            each step leaves an auditable record.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cp-benefits\">\n        <article>\n          <span class=\"cp-benefit-number\">01<\/span>\n          <h3>End-to-end traceability<\/h3>\n          <p>Know the origin, journey and final destination of every waste stream.<\/p>\n        <\/article>\n        <article>\n          <span class=\"cp-benefit-number\">02<\/span>\n          <h3>Connected data<\/h3>\n          <p>One shared operation to coordinate authorities, operators and waste managers.<\/p>\n        <\/article>\n        <article>\n          <span class=\"cp-benefit-number\">03<\/span>\n          <h3>Less administrative work<\/h3>\n          <p>Reduce duplication and manual tasks with linked documents and signatures.<\/p>\n        <\/article>\n        <article>\n          <span class=\"cp-benefit-number\">04<\/span>\n          <h3>Measurable impact<\/h3>\n          <p>Environmental metrics and reporting for data-driven decisions.<\/p>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- HOW IT WORKS -->\n  <section class=\"cp-section cp-pale\" id=\"cp-funcionamiento\">\n    <div class=\"cp-container\">\n      <div class=\"cp-section-heading\">\n        <p class=\"cp-eyebrow\">HOW IT WORKS<\/p>\n        <h2>One connected operation.<br><span>From start to finish.<\/span><\/h2>\n        <p>Stakeholders, documents and evidence linked to the same operation.<\/p>\n      <\/div>\n\n      <div class=\"cp-workflow-grid\">\n        <div class=\"cp-steps\" role=\"group\" aria-label=\"Operation stages\">\n          <button type=\"button\" class=\"cp-step cp-active\" data-step=\"0\" aria-pressed=\"true\">\n            <span class=\"cp-step-number\">01<\/span>\n            <span><small>START OF THE OPERATION<\/small><strong>Port call registration<\/strong><\/span>\n            <span class=\"cp-step-sign\">\u2212<\/span>\n          <\/button>\n\n          <button type=\"button\" class=\"cp-step\" data-step=\"1\" aria-pressed=\"false\">\n            <span class=\"cp-step-number\">02<\/span>\n            <span><small>MARPOL SERVICE<\/small><strong>Waste collection<\/strong><\/span>\n            <span class=\"cp-step-sign\">+<\/span>\n          <\/button>\n\n          <button type=\"button\" class=\"cp-step\" data-step=\"2\" aria-pressed=\"false\">\n            <span class=\"cp-step-number\">03<\/span>\n            <span><small>PORT CONTROL<\/small><strong>Entry and exit validation<\/strong><\/span>\n            <span class=\"cp-step-sign\">+<\/span>\n          <\/button>\n\n          <button type=\"button\" class=\"cp-step\" data-step=\"3\" aria-pressed=\"false\">\n            <span class=\"cp-step-number\">04<\/span>\n            <span><small>FINAL DESTINATION<\/small><strong>Treatment and recovery<\/strong><\/span>\n            <span class=\"cp-step-sign\">+<\/span>\n          <\/button>\n        <\/div>\n\n        <div class=\"cp-operation\">\n          <div class=\"cp-operation-top\">\n            <strong>\u21bb &nbsp; Port operation<\/strong>\n            <small>Illustrative example<\/small>\n          <\/div>\n\n          <p class=\"cp-operation-reference\">ES-PMI-0248 \u00b7 Ocean Star<\/p>\n\n          <div class=\"cp-progress\" aria-hidden=\"true\">\n            <span class=\"cp-current\">1<\/span><i><\/i>\n            <span>2<\/span><i><\/i>\n            <span>3<\/span><i><\/i>\n            <span>4<\/span>\n          <\/div>\n\n          <div aria-live=\"polite\">\n            <p class=\"cp-eyebrow\" id=\"cp-step-actor\">PORT AUTHORITY<\/p>\n            <h3 id=\"cp-step-title\">It all starts with the port call.<\/h3>\n            <p id=\"cp-step-description\">\n              The port authority enters the vessel, date, berth\n              and scheduled services. The operation receives a shared digital identity.\n            <\/p>\n          <\/div>\n\n          <dl class=\"cp-operation-fields\" id=\"cp-step-fields\">\n            <div><dt>Vessel<\/dt><dd>Ocean Star<\/dd><\/div>\n            <div><dt>Port<\/dt><dd>Palma<\/dd><\/div>\n            <div><dt>Port call<\/dt><dd>ES-PMI-0248<\/dd><\/div>\n            <div><dt>Status<\/dt><dd>Registered<\/dd><\/div>\n          <\/dl>\n\n          <p class=\"cp-evidence\" id=\"cp-step-evidence\">\n            \u2713 Port call data linked to the operation\n          <\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- DASHBOARD -->\n  <section class=\"cp-section\" id=\"cp-plataforma\">\n    <div class=\"cp-container\">\n      <div class=\"cp-heading-grid\">\n        <div>\n          <p class=\"cp-eyebrow\">EXPLORE THE PLATFORM<\/p>\n          <h2>From data<br><span>to decisions.<\/span><\/h2>\n        <\/div>\n        <div class=\"cp-heading-copy\">\n          <p>\n            A port-wide overview with details for every waste stream.\n            Adjust the filters, view environmental impact and open a digital passport.\n          <\/p>\n          <span class=\"cp-pill\">Interactive demo \u00b7 sample data<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"cp-app\">\n        <div class=\"cp-window-bar\">\n          <span class=\"cp-window-dots\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/span>\n          <span>app.circularport.eu<\/span>\n          <small>Demo environment<\/small>\n        <\/div>\n\n        <div class=\"cp-app-layout\">\n          <aside class=\"cp-sidebar\" aria-label=\"Demo views\">\n            <span class=\"cp-app-mark\" aria-hidden=\"true\">\u21bb<\/span>\n            <button type=\"button\" class=\"cp-sidebar-button cp-active\" data-view=\"dashboard\" aria-label=\"Dashboard\" aria-pressed=\"true\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n                <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"><\/rect>\n                <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"><\/rect>\n                <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"><\/rect>\n                <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"><\/rect>\n              <\/svg>\n            <\/button>\n            <button type=\"button\" class=\"cp-sidebar-button\" data-view=\"impact\" aria-label=\"Environmental impact\" aria-pressed=\"false\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n                <path d=\"M4 3v18h17M8 16v-5m5 5V6m5 10V9\"><\/path>\n              <\/svg>\n            <\/button>\n            <button type=\"button\" class=\"cp-sidebar-button\" data-view=\"passports\" aria-label=\"Passports\" aria-pressed=\"false\">\n              <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n                <rect x=\"5\" y=\"3\" width=\"14\" height=\"18\" rx=\"2\"><\/rect>\n                <path d=\"M9 8h6M9 12h6M9 16h4\"><\/path>\n              <\/svg>\n            <\/button>\n          <\/aside>\n\n          <div class=\"cp-app-main\">\n            <div class=\"cp-app-toolbar\">\n              <div class=\"cp-app-tabs\" role=\"group\" aria-label=\"Platform views\">\n                <button type=\"button\" class=\"cp-active\" data-view=\"dashboard\" aria-pressed=\"true\">Dashboard<\/button>\n                <button type=\"button\" data-view=\"impact\" aria-pressed=\"false\">Impact<\/button>\n                <button type=\"button\" data-view=\"passports\" aria-pressed=\"false\">Passports<\/button>\n              <\/div>\n              <span class=\"cp-avatar\" aria-label=\"Port authority\">AP<\/span>\n            <\/div>\n\n            <div class=\"cp-app-content\">\n              <div class=\"cp-app-heading\">\n                <div>\n                  <p class=\"cp-breadcrumb\">CircularPort \/ Port authority<\/p>\n                  <h3 id=\"cp-view-title\">Dashboard<\/h3>\n                <\/div>\n                <span class=\"cp-demo-label\">SAMPLE DATA<\/span>\n              <\/div>\n\n              <div class=\"cp-filters\">\n                <label>\n                  <span>Port<\/span>\n                  <select id=\"cp-port\">\n                    <option value=\"all\">All ports<\/option>\n                    <option value=\"palma\">Palma<\/option>\n                    <option value=\"ibiza\">Ibiza<\/option>\n                    <option value=\"mahon\">Ma\u00f3<\/option>\n                  <\/select>\n                <\/label>\n                <label>\n                  <span>Waste<\/span>\n                  <select id=\"cp-waste\">\n                    <option value=\"all\">All categories<\/option>\n                    <option value=\"oil\">MARPOL I \u00b7 Oily waste<\/option>\n                    <option value=\"plastic\">MARPOL V \u00b7 Plastics<\/option>\n                    <option value=\"food\">MARPOL V \u00b7 Food waste<\/option>\n                  <\/select>\n                <\/label>\n                <label class=\"cp-period\">\n                  <span>Period<\/span>\n                  <select id=\"cp-period\">\n                    <option value=\"year\">Last 12 months<\/option>\n                    <option value=\"quarter\">Last 3 months<\/option>\n                    <option value=\"month\">Last month<\/option>\n                  <\/select>\n                <\/label>\n              <\/div>\n\n              <div class=\"cp-view\" id=\"cp-dashboard-view\">\n                <div class=\"cp-overview\">\n                  <div class=\"cp-metric cp-circularity\">\n                    <div class=\"cp-donut\" id=\"cp-donut\" role=\"img\" aria-label=\"Circularity rate: 83 percent\">\n                      <div>\n                        <strong id=\"cp-circularity\">83%<\/strong>\n                        <span>Circularity rate<\/span>\n                      <\/div>\n                    <\/div>\n                    <small>Share of recovered waste<\/small>\n                  <\/div>\n\n                  <div class=\"cp-overview-totals\">\n                    <div class=\"cp-metric cp-total\">\n                      <span class=\"cp-metric-icon\">\u25a4<\/span>\n                      <div>\n                        <span>Waste collected<\/span>\n                        <strong><span id=\"cp-total\">1.250<\/span> <small>t<\/small><\/strong>\n                        <small>Total recorded weight<\/small>\n                      <\/div>\n                    <\/div>\n                    <div class=\"cp-metric cp-total\">\n                      <span class=\"cp-metric-icon\">\u21bb<\/span>\n                      <div>\n                        <span>Waste recovered<\/span>\n                        <strong><span id=\"cp-recovered\">1.043,4<\/span> <small>t<\/small><\/strong>\n                        <small>Recycling and energy recovery<\/small>\n                      <\/div>\n                    <\/div>\n                  <\/div>\n                <\/div>\n\n                <div class=\"cp-environment\">\n                  <button type=\"button\" class=\"cp-environment-card\" data-impact=\"carbon\">\n                    <span class=\"cp-environment-icon\">CO\u2082<\/span>\n                    <span>\n                      <span>Carbon footprint<\/span>\n                      <strong><span id=\"cp-carbon\">22.982<\/span> <small>kg CO\u2082e<\/small><\/strong>\n                      <small>View impact<\/small>\n                    <\/span>\n                  <\/button>\n                  <button type=\"button\" class=\"cp-environment-card\" data-impact=\"water\">\n                    <span class=\"cp-environment-icon\">H\u2082O<\/span>\n                    <span>\n                      <span>Water footprint<\/span>\n                      <strong><span id=\"cp-water\">600.000<\/span> <small>litres<\/small><\/strong>\n                      <small>View impact<\/small>\n                    <\/span>\n                  <\/button>\n                  <button type=\"button\" class=\"cp-environment-card\" data-impact=\"energy\">\n                    <span class=\"cp-environment-icon cp-lightning\">\u03df<\/span>\n                    <span>\n                      <span>Energy used<\/span>\n                      <strong><span id=\"cp-energy\">120.000<\/span> <small>kWh<\/small><\/strong>\n                      <small>View impact<\/small>\n                    <\/span>\n                  <\/button>\n                <\/div>\n\n                <div class=\"cp-impact-summary\">\n                  <article class=\"cp-metric\">\n                    <h4>Human health<\/h4>\n                    <p>Human toxicity<\/p>\n                    <p>Particulate matter<\/p>\n                    <p>Ozone layer depletion<\/p>\n                  <\/article>\n                  <article class=\"cp-metric\">\n                    <h4>Ecosystem quality<\/h4>\n                    <p>Acidification<\/p>\n                    <p>Eutrophication<\/p>\n                    <p>Land use<\/p>\n                  <\/article>\n                  <article class=\"cp-metric\">\n                    <h4>Resources<\/h4>\n                    <p>Mineral and metal resources<\/p>\n                    <p>Fossil resources<\/p>\n                    <p>Environmental assessment categories<\/p>\n                  <\/article>\n                <\/div>\n\n                <div class=\"cp-metric cp-chart-card\">\n                  <div class=\"cp-chart-heading\">\n                    <h4>MARPOL waste recovery<\/h4>\n                    <span>Tonnes<\/span>\n                  <\/div>\n                  <div class=\"cp-chart\" id=\"cp-waste-chart\"><\/div>\n                  <div class=\"cp-legend\">\n                    <span><i class=\"cp-recycling\"><\/i>Recycling<\/span>\n                    <span><i class=\"cp-energy-color\"><\/i>Energy recovery<\/span>\n                    <span><i class=\"cp-other\"><\/i>Other treatments<\/span>\n                  <\/div>\n                  <p class=\"cp-chart-detail\" id=\"cp-chart-detail\" aria-live=\"polite\">\n                    Select a bar to view the waste destination.\n                  <\/p>\n                <\/div>\n              <\/div>\n\n              <div class=\"cp-view\" id=\"cp-impact-view\" hidden=\"\">\n                <label class=\"cp-impact-selector\">\n                  <span>Environmental indicator<\/span>\n                  <select id=\"cp-impact-type\">\n                    <option value=\"carbon\">Carbon footprint<\/option>\n                    <option value=\"water\">Water footprint<\/option>\n                    <option value=\"energy\">Energy used<\/option>\n                  <\/select>\n                <\/label>\n\n                <div class=\"cp-impact-grid\">\n                  <div class=\"cp-impact-highlight\">\n                    <span id=\"cp-impact-label\">Carbon footprint<\/span>\n                    <strong id=\"cp-impact-value\">22,982 kg CO\u2082e<\/strong>\n                    <p id=\"cp-impact-description\"><\/p>\n                    <small>Illustrative metric for the selected period.<\/small>\n                  <\/div>\n\n                  <div class=\"cp-metric cp-lifecycle\">\n                    <h4>Breakdown by stage<\/h4>\n                    <div class=\"cp-lifecycle-content\">\n                      <div class=\"cp-pie\" role=\"img\" aria-label=\"Collection 35%, transport 20%, treatment 30%, recovery 15%\"><\/div>\n                      <ul>\n                        <li><span>Collection<\/span><strong>35%<\/strong><\/li>\n                        <li><span>Transport<\/span><strong>20%<\/strong><\/li>\n                        <li><span>Treatment<\/span><strong>30%<\/strong><\/li>\n                        <li><span>Recovery<\/span><strong>15%<\/strong><\/li>\n                      <\/ul>\n                    <\/div>\n                  <\/div>\n                <\/div>\n\n                <div class=\"cp-metric cp-chart-card\">\n                  <div class=\"cp-chart-heading\">\n                    <h4>Impact by life-cycle stage<\/h4>\n                    <span id=\"cp-impact-unit\">kg CO\u2082e<\/span>\n                  <\/div>\n                  <div class=\"cp-chart\" id=\"cp-impact-chart\"><\/div>\n                  <p class=\"cp-chart-detail\" id=\"cp-impact-detail\" aria-live=\"polite\">\n                    Select a stage to view its value.\n                  <\/p>\n                <\/div>\n              <\/div>\n\n              <div class=\"cp-view\" id=\"cp-passports-view\" hidden=\"\">\n                <label class=\"cp-search\">\n                  <span>Search passports<\/span>\n                  <input id=\"cp-passport-search\" type=\"search\" placeholder=\"ID, vessel or EWC code\">\n                <\/label>\n\n                <div class=\"cp-table-scroll\">\n                  <table class=\"cp-table\">\n                    <caption>Digital waste passports \u00b7 sample<\/caption>\n                    <thead>\n                      <tr>\n                        <th>Passport<\/th>\n                        <th>Vessel \/ port<\/th>\n                        <th>Waste<\/th>\n                        <th>Weight<\/th>\n                        <th>Status<\/th>\n                        <th>Details<\/th>\n                      <\/tr>\n                    <\/thead>\n                    <tbody id=\"cp-passport-rows\"><\/tbody>\n                  <\/table>\n                <\/div>\n                <p class=\"cp-chart-detail\" id=\"cp-passport-count\" aria-live=\"polite\"><\/p>\n              <\/div>\n\n              <p class=\"cp-demo-note\">\n                Platform simulation. Filters update illustrative data\n                and do not query real operations.\n              <\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- DIGITAL PASSPORT -->\n  <section class=\"cp-section cp-pale\">\n    <div class=\"cp-container cp-passport-grid\">\n      <div>\n        <p class=\"cp-eyebrow\">DIGITAL WASTE PASSPORT<\/p>\n        <h2>Every waste stream has<br><span>a verifiable history.<\/span><\/h2>\n\n        <p class=\"cp-lead\">\n          A digital identity that follows each batch from its origin\n          through final treatment.\n        <\/p>\n        <p class=\"cp-muted\">\n          PortNet uses blockchain to record traceability and connect\n          the origin, responsible parties, EWC code, quantities and\n          evidence at every stage.\n        <\/p>\n\n        <ul class=\"cp-checklist\">\n          <li>Origin and chain of custody<\/li>\n          <li>Associated documents and certificates<\/li>\n          <li>Treatment and final destination<\/li>\n          <li>Environmental impact metrics<\/li>\n        <\/ul>\n\n        <button type=\"button\" class=\"cp-button cp-outline\" data-open-passport=\"\">\n          Explore a passport\n        <\/button>\n      <\/div>\n\n      <article class=\"cp-passport\">\n        <div class=\"cp-passport-cover\">\n          <div class=\"cp-passport-cover-top\">\n            <span>CIRCULARPORT \/ PORTNET<\/span>\n            <span class=\"cp-cover-tag\">MARPOL V<\/span>\n          <\/div>\n\n          <h3>Digital waste<br>passport<\/h3>\n\n          <div class=\"cp-passport-cover-bottom\">\n            <strong>DWP-0248<\/strong>\n            <span>Illustrative example<\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"cp-passport-body\">\n          <div class=\"cp-material\">\n            <span class=\"cp-material-icon\" aria-hidden=\"true\">\u267b<\/span>\n            <div>\n              <span class=\"cp-label\">WASTE BATCH<\/span>\n              <h4>Plastics<\/h4>\n              <p>EWC 20 01 39<\/p>\n            <\/div>\n            <div class=\"cp-material-weight\">\n              <strong>2,400<\/strong>\n              <span>kg recorded<\/span>\n            <\/div>\n          <\/div>\n\n          <dl class=\"cp-passport-data\">\n            <div><dt>Source vessel<\/dt><dd>Ocean Star<\/dd><\/div>\n            <div><dt>Collection port<\/dt><dd>Palma<\/dd><\/div>\n            <div><dt>Final treatment<\/dt><dd>Mechanical recycling<\/dd><\/div>\n            <div><dt>Material destination<\/dt><dd>Material recovery<\/dd><\/div>\n          <\/dl>\n\n          <div class=\"cp-passport-journey\">\n            <p class=\"cp-label\">CHAIN OF CUSTODY<\/p>\n            <ol>\n              <li><span>\u2713<\/span><strong>Collection<\/strong><\/li>\n              <li><span>\u2713<\/span><strong>Transport<\/strong><\/li>\n              <li><span>\u2713<\/span><strong>Reception<\/strong><\/li>\n              <li><span>\u2713<\/span><strong>Recycling<\/strong><\/li>\n            <\/ol>\n          <\/div>\n\n          <div class=\"cp-passport-bottom\">\n            <span>\u2713 Traceability complete<\/span>\n            <button type=\"button\" class=\"cp-detail-button\" data-open-passport=\"\">View history<\/button>\n          <\/div>\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- OPERATIONAL EXPERIENCE -->\n  <section class=\"cp-proof\">\n    <div class=\"cp-container cp-proof-grid\">\n      <div>\n        <p class=\"cp-eyebrow\">FROM CONCEPT TO REAL-WORLD OPERATIONS<\/p>\n        <h2>A solution<br>already in action.<\/h2>\n        <p>Deployed at the Balearic Islands Port Authority, with support from Ports 4.0.<\/p>\n      <\/div>\n      <div class=\"cp-proof-stat\">\n        <strong>62,600<span>+<\/span><\/strong>\n        <p>operations managed<\/p>\n      <\/div>\n      <div class=\"cp-proof-stat\">\n        <strong>\u224840<span>%<\/span><\/strong>\n        <p>less administrative work*<\/p>\n      <\/div>\n      <small class=\"cp-proof-note\">\n        Figures from the September 2026 commercial presentation.\n        *Estimated reduction through digitization and elimination of manual processes.\n      <\/small>\n    <\/div>\n  <\/section>\n\n  <!-- PROJECT AND VIDEOS -->\n  <section class=\"cp-section\">\n    <div class=\"cp-container\">\n      <div class=\"cp-heading-grid\">\n        <div>\n          <p class=\"cp-eyebrow\">CIRCULARPORT \/ PORTNET<\/p>\n          <h2>Technology enabling<br><span>more circular ports.<\/span><\/h2>\n        <\/div>\n        <div class=\"cp-heading-copy\">\n          <p class=\"cp-lead\">\n            CircularPort connects data and stakeholders to improve environmental management in ports.\n          <\/p>\n          <p>\n            Within this ecosystem, PortNet is the technology project that\n            digitizes waste traceability through blockchain and\n            the Digital Waste Passport. A project driven by\n            Blue Room Innovation to track waste beyond the port environment.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"cp-videos\">\n        <article class=\"cp-video-card\">\n          <div class=\"cp-video-frame\">\n            <iframe src=\"https:\/\/www.youtube-nocookie.com\/embed\/QLIqDJLM9o8\" title=\"CircularPort platform demo\" loading=\"lazy\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\">\n            <\/iframe>\n          <\/div>\n          <div class=\"cp-video-caption\">\n            <div><p class=\"cp-eyebrow\">THE PLATFORM IN ACTION<\/p><h3>Watch the demo<\/h3><\/div>\n            <a href=\"https:\/\/youtu.be\/QLIqDJLM9o8\" target=\"_blank\" rel=\"noopener\">Watch on YouTube<\/a>\n          <\/div>\n        <\/article>\n\n        <article class=\"cp-video-card\">\n          <div class=\"cp-video-frame\">\n            <iframe src=\"https:\/\/www.youtube-nocookie.com\/embed\/wbODhSqNTKs\" title=\"CircularPort and PortNet project\" loading=\"lazy\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\">\n            <\/iframe>\n          <\/div>\n          <div class=\"cp-video-caption\">\n            <div><p class=\"cp-eyebrow\">THE PROJECT<\/p><h3>A shared vision<\/h3><\/div>\n            <a href=\"https:\/\/youtu.be\/wbODhSqNTKs\" target=\"_blank\" rel=\"noopener\">Watch on YouTube<\/a>\n          <\/div>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- CONTACTO -->\n  <section class=\"cp-contact\">\n    <div class=\"cp-container cp-contact-inner\">\n      <div>\n        <p class=\"cp-eyebrow\">LET\u2019S TALK ABOUT YOUR PORT<\/p>\n        <h2>Let\u2019s take the next step together.<\/h2>\n        <p>Let\u2019s assess your workflows, technical compatibility and an initial implementation phase.<\/p>\n      <\/div>\n      <a class=\"cp-button cp-white\" href=\"mailto:info@blueroominnovation.com?subject=Consulta%20CircularPort\">\n        Request a technical meeting\n      <\/a>\n    <\/div>\n  <\/section>\n\n  <!-- SUPPORT AND FUNDING -->\n  <section class=\"cp-support\">\n    <div class=\"cp-container\">\n      <p class=\"cp-eyebrow\">SUPPORTED BY<\/p>\n\n      <div class=\"cp-support-logos\">\n        <img decoding=\"async\" src=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/digicirc-e1712128870785.png\" alt=\"Digicirc\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/galatea.png\" alt=\"Galatea\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/somos-aei.jpg\" alt=\"Agrupaciones Empresariales Innovadoras, AEI\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/puertos-4.0.png\" alt=\"Ports 4.0\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/06\/ACCIO-integrat-Horitzontal-CAT-color.png\" alt=\"ACCI\u00d3, Generalitat de Catalunya\" loading=\"lazy\">\n      <\/div>\n\n      <div class=\"cp-financing\">\n        <h2>PortNet is a project funded by<\/h2>\n        <img decoding=\"async\" src=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/06\/Banner-v2.png\" alt=\"Project funded through Ports 4.0: Puertos del Estado and Ports 4.0\" loading=\"lazy\">\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- PASSPORT DETAILS -->\n  <dialog id=\"cp-passport-dialog\">\n    <div class=\"cp-dialog-top\">\n      <p class=\"cp-eyebrow\">DIGITAL PASSPORT \u00b7 SAMPLE<\/p>\n      <button type=\"button\" class=\"cp-close\" aria-label=\"Close passport\">\u00d7<\/button>\n    <\/div>\n    <h2 id=\"cp-dialog-title\">DWP-0248<\/h2>\n    <p id=\"cp-dialog-subtitle\">Ocean Star \u00b7 Port of Palma<\/p>\n    <dl class=\"cp-dialog-fields\" id=\"cp-dialog-fields\"><\/dl>\n\n    <h3>Waste history<\/h3>\n    <ol class=\"cp-dialog-timeline\">\n      <li><span>01<\/span><div><strong>Collection at port<\/strong><p>Origin, waste type and quantity recorded.<\/p><\/div><\/li>\n      <li><span>02<\/span><div><strong>Documented transport<\/strong><p>Vehicle and responsible party linked.<\/p><\/div><\/li>\n      <li><span>03<\/span><div><strong>Reception confirmed<\/strong><p>Delivery and weight recorded by the waste manager.<\/p><\/div><\/li>\n      <li><span>04<\/span><div><strong>Final treatment<\/strong><p id=\"cp-dialog-treatment\">Recycling and associated certificate.<\/p><\/div><\/li>\n    <\/ol>\n\n    <p class=\"cp-dialog-note\">\n      Illustrative display. This is not a real certificate or blockchain record.\n    <\/p>\n    <button type=\"button\" class=\"cp-button cp-dialog-done\">Close passport<\/button>\n  <\/dialog>\n<\/div>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const root = document.getElementById(\"circularport-home\");\n  if (!root || root.dataset.initialized === \"true\") return;\n  root.dataset.initialized = \"true\";\n\n  const $ = selector => root.querySelector(selector);\n  const $$ = selector => Array.from(root.querySelectorAll(selector));\n  const format = (value, decimals = 0) =>\n    new Intl.NumberFormat(\"en-GB\", {\n      maximumFractionDigits: decimals,\n      useGrouping: true\n    }).format(value);\n\n  const steps = [\n    {\n      actor: \"PORT AUTHORITY\",\n      title: \"It all starts with the port call.\",\n      description: \"The port authority enters the vessel, date, berth and scheduled services. The operation receives a shared digital identity.\",\n      fields: [[\"Vessel\", \"Ocean Star\"], [\"Port\", \"Palma\"], [\"Port call\", \"ES-PMI-0248\"], [\"Status\", \"Registered\"]],\n      evidence: \"Port call data linked to the operation\"\n    },\n    {\n      actor: \"MARPOL AGENT \/ HAULIER\",\n      title: \"The collection is recorded.\",\n      description: \"The operator records the waste type, quantity, vehicle and service start. The data accompanies the waste during transport.\",\n      fields: [[\"Waste\", \"Plastics \u00b7 MARPOL V\"], [\"Weight\", \"2.400 kg\"], [\"Vehicle\", \"2468 MRP\"], [\"Status\", \"Collection recorded\"]],\n      evidence: \"Operator declaration and signature attached\"\n    },\n    {\n      actor: \"PORT POLICE\",\n      title: \"Every movement, verified.\",\n      description: \"Port police check vehicles, levels, schedules and documentation. Entry and exit checks are linked to the operation.\",\n      fields: [[\"Vehicle\", \"2468 MRP\"], [\"Check\", \"Entry and exit\"], [\"Documentation\", \"Reviewed\"], [\"Status\", \"Exit validated\"]],\n      evidence: \"Port check and responsible party identified\"\n    },\n    {\n      actor: \"WASTE MANAGER \/ RECYCLER\",\n      title: \"The final destination closes the loop.\",\n      description: \"The waste manager confirms receipt and treatment, records the final outcome and supplies the relevant certificate. The port can review the entire journey.\",\n      fields: [[\"Reception\", \"Confirmed\"], [\"Treatment\", \"Recycling\"], [\"Destination\", \"Material recovery\"], [\"Status\", \"Traceability complete\"]],\n      evidence: \"Treatment certificate linked to the waste\"\n    }\n  ];\n\n  function fieldsMarkup(fields) {\n    return fields.map(([label, value]) =>\n      \"<div><dt>\" + label + \"<\/dt><dd>\" + value + \"<\/dd><\/div>\"\n    ).join(\"\");\n  }\n\n  $$(\".cp-step\").forEach(button => {\n    button.addEventListener(\"click\", function () {\n      const index = Number(this.dataset.step);\n      const step = steps[index];\n\n      $$(\".cp-step\").forEach((item, i) => {\n        item.classList.toggle(\"cp-active\", i === index);\n        item.setAttribute(\"aria-pressed\", String(i === index));\n        item.querySelector(\".cp-step-sign\").textContent = i === index ? \"\u2212\" : \"+\";\n      });\n\n      $(\"#cp-step-actor\").textContent = step.actor;\n      $(\"#cp-step-title\").textContent = step.title;\n      $(\"#cp-step-description\").textContent = step.description;\n      $(\"#cp-step-fields\").innerHTML = fieldsMarkup(step.fields);\n      $(\"#cp-step-evidence\").textContent = \"\u2713 \" + step.evidence;\n\n      $$(\".cp-progress span\").forEach((item, i) =>\n        item.classList.toggle(\"cp-current\", i <= index)\n      );\n    });\n  });\n\n  const categories = [\n    { key: \"oil\", name: \"Oily waste\", weight: 400, recycling: .55, energy: .15 },\n    { key: \"plastic\", name: \"Plastics\", weight: 240, recycling: .88, energy: .06 },\n    { key: \"food\", name: \"Food waste\", weight: 210, recycling: .75, energy: .12 },\n    { key: \"paper\", name: \"Paper and cardboard\", weight: 170, recycling: .85, energy: .08 },\n    { key: \"metal\", name: \"Metals\", weight: 150, recycling: .94, energy: 0 },\n    { key: \"other\", name: \"Other\", weight: 80, recycling: .65, energy: .05 }\n  ];\n\n  const passports = [\n    { id: \"DWP-0248\", ship: \"Ocean Star\", port: \"palma\", key: \"plastic\", waste: \"Plastics\", ler: \"20 01 39\", weight: 2400, treatment: \"Mechanical recycling\", status: \"Recovered\", period: \"month\" },\n    { id: \"DWP-0247\", ship: \"Blue Atlantic\", port: \"ibiza\", key: \"oil\", waste: \"Oily waste\", ler: \"13 05 07*\", weight: 8200, treatment: \"Oil recovery\", status: \"Recovered\", period: \"month\" },\n    { id: \"DWP-0246\", ship: \"Sea Horizon\", port: \"mahon\", key: \"food\", waste: \"Food waste\", ler: \"20 01 08\", weight: 1350, treatment: \"Biological treatment\", status: \"Treated\", period: \"quarter\" },\n    { id: \"DWP-0245\", ship: \"Baltic Moon\", port: \"palma\", key: \"oil\", waste: \"Oily waste\", ler: \"13 05 07*\", weight: 5600, treatment: \"Oil recovery\", status: \"Recovered\", period: \"year\" },\n    { id: \"DWP-0244\", ship: \"Mediterranean Star\", port: \"ibiza\", key: \"plastic\", waste: \"Plastics\", ler: \"20 01 39\", weight: 1800, treatment: \"Mechanical recycling\", status: \"Recovered\", period: \"quarter\" },\n    { id: \"DWP-0243\", ship: \"Island Ferry\", port: \"mahon\", key: \"food\", waste: \"Food waste\", ler: \"20 01 08\", weight: 950, treatment: \"Biological treatment\", status: \"Treated\", period: \"year\" }\n  ];\n\n  const ports = { palma: \"Palma\", ibiza: \"Ibiza\", mahon: \"Ma\u00f3\" };\n  const impactInfo = {\n    carbon: {\n      label: \"Carbon footprint\",\n      unit: \"kg CO\u2082e\",\n      description: \"Emissions associated with waste collection, transport and treatment.\"\n    },\n    water: {\n      label: \"Water footprint\",\n      unit: \"litres\",\n      description: \"Water consumption associated with treatment, cleaning and recovery processes.\"\n    },\n    energy: {\n      label: \"Energy used\",\n      unit: \"kWh\",\n      description: \"Energy use associated with collection, transport, sorting and treatment.\"\n    }\n  };\n\n  function getFilters() {\n    return {\n      port: $(\"#cp-port\").value,\n      waste: $(\"#cp-waste\").value,\n      period: $(\"#cp-period\").value\n    };\n  }\n\n  function getData() {\n    const filters = getFilters();\n    const factor =\n      { all: 1, palma: .6, ibiza: .25, mahon: .15 }[filters.port] *\n      { year: 1, quarter: .28, month: .09 }[filters.period];\n\n    const rows = categories\n      .filter(item => filters.waste === \"all\" || item.key === filters.waste)\n      .map(item => Object.assign({}, item, { weight: item.weight * factor }));\n\n    const total = rows.reduce((sum, item) => sum + item.weight, 0);\n    const recovered = rows.reduce(\n      (sum, item) => sum + item.weight * (item.recycling + item.energy), 0\n    );\n\n    return {\n      rows, total, recovered,\n      circularity: Math.round(recovered \/ total * 100),\n      carbon: 22982 * total \/ 1250,\n      water: 600000 * total \/ 1250,\n      energy: 120000 * total \/ 1250\n    };\n  }\n\n  function createBar(name, height, segments, label, onClick) {\n    const item = document.createElement(\"div\");\n    item.className = \"cp-bar-item\";\n\n    const button = document.createElement(\"button\");\n    button.type = \"button\";\n    button.className = \"cp-chart-bar\";\n    button.style.height = height + \"%\";\n    button.setAttribute(\"aria-label\", label);\n\n    segments.forEach(([fraction, className]) => {\n      const segment = document.createElement(\"span\");\n      segment.className = className;\n      segment.style.height = fraction * 100 + \"%\";\n      button.appendChild(segment);\n    });\n\n    button.addEventListener(\"click\", onClick);\n\n    const caption = document.createElement(\"span\");\n    caption.className = \"cp-bar-name\";\n    caption.textContent = name;\n\n    item.append(button, caption);\n    return item;\n  }\n\n  function renderDashboard(data) {\n    $(\"#cp-circularity\").textContent = data.circularity + \"%\";\n    $(\"#cp-donut\").style.background =\n      \"conic-gradient(#1c39dc 0 \" + data.circularity + \"%, #edf0f4 \" +\n      data.circularity + \"% 100%)\";\n    $(\"#cp-donut\").setAttribute(\n      \"aria-label\", \"Circularity rate: \" + data.circularity + \" percent\"\n    );\n\n    $(\"#cp-total\").textContent = format(data.total, 1);\n    $(\"#cp-recovered\").textContent = format(data.recovered, 1);\n    $(\"#cp-carbon\").textContent = format(data.carbon);\n    $(\"#cp-water\").textContent = format(data.water);\n    $(\"#cp-energy\").textContent = format(data.energy);\n\n    const maximum = Math.max(...data.rows.map(item => item.weight)) * 1.12;\n\n    $(\"#cp-waste-chart\").replaceChildren(...data.rows.map(item =>\n      createBar(\n        item.name,\n        item.weight \/ maximum * 100,\n        [\n          [1 - item.recycling - item.energy, \"cp-other\"],\n          [item.energy, \"cp-energy-color\"],\n          [item.recycling, \"cp-recycling\"]\n        ],\n        item.name + \": \" + format(item.weight, 1) + \" tonnes\",\n        () => {\n          $(\"#cp-chart-detail\").textContent =\n            item.name + \" \u00b7 \" + format(item.weight, 1) + \" t: recycling \" +\n            format(item.weight * item.recycling, 1) +\n            \" t \u00b7 energy recovery \" + format(item.weight * item.energy, 1) +\n            \" t \u00b7 other treatments \" +\n            format(item.weight * (1 - item.recycling - item.energy), 1) + \" t.\";\n        }\n      )\n    ));\n\n    $(\"#cp-chart-detail\").textContent =\n      \"Select a bar to view the waste destination.\";\n  }\n\n  function renderImpact(data) {\n    const type = $(\"#cp-impact-type\").value;\n    const info = impactInfo[type];\n\n    $(\"#cp-impact-label\").textContent = info.label;\n    $(\"#cp-impact-value\").textContent = format(data[type]) + \" \" + info.unit;\n    $(\"#cp-impact-description\").textContent = info.description;\n    $(\"#cp-impact-unit\").textContent = info.unit;\n\n    const stages = [\n      [\"Collection\", .35], [\"Transport\", .20],\n      [\"Treatment\", .30], [\"Recovery\", .15]\n    ];\n\n    $(\"#cp-impact-chart\").replaceChildren(...stages.map(([name, ratio]) =>\n      createBar(\n        name, ratio \/ .4 * 100, [[1, \"cp-recycling\"]],\n        name + \": \" + format(data[type] * ratio) + \" \" + info.unit,\n        () => {\n          $(\"#cp-impact-detail\").textContent =\n            name + \" \u00b7 \" + format(data[type] * ratio) + \" \" +\n            info.unit + \" (\" + format(ratio * 100) + \"% of the total).\";\n        }\n      )\n    ));\n\n    $(\"#cp-impact-detail\").textContent =\n      \"Select a stage to view its value.\";\n  }\n\n  function openPassport(passport) {\n    $(\"#cp-dialog-title\").textContent = passport.id;\n    $(\"#cp-dialog-subtitle\").textContent =\n      passport.ship + \" \u00b7 Port of \" + ports[passport.port];\n\n    $(\"#cp-dialog-fields\").innerHTML = fieldsMarkup([\n      [\"Waste\", passport.waste],\n      [\"EWC code\", passport.ler],\n      [\"Recorded weight\", format(passport.weight) + \" kg\"],\n      [\"Status\", passport.status]\n    ]);\n\n    $(\"#cp-dialog-treatment\").textContent =\n      passport.treatment + \" and associated certificate.\";\n\n    const dialog = $(\"#cp-passport-dialog\");\n    if (!dialog.open) dialog.showModal();\n  }\n\n  function renderPassports() {\n    const filters = getFilters();\n    const query = $(\"#cp-passport-search\").value.trim().toLowerCase();\n    const ranks = { month: 1, quarter: 2, year: 3 };\n\n    const rows = passports.filter(item =>\n      (filters.port === \"all\" || item.port === filters.port) &&\n      (filters.waste === \"all\" || item.key === filters.waste) &&\n      ranks[item.period] <= ranks[filters.period] &&\n      (item.id + \" \" + item.ship + \" \" + item.ler + \" \" +\n       item.waste + \" \" + ports[item.port]).toLowerCase().includes(query)\n    );\n\n    const table = $(\"#cp-passport-rows\");\n    table.replaceChildren();\n\n    rows.forEach(item => {\n      const row = document.createElement(\"tr\");\n\n      row.innerHTML =\n        \"<td><strong>\" + item.id + \"<\/strong><\/td>\" +\n        \"<td>\" + item.ship + \"<small>\" + ports[item.port] + \"<\/small><\/td>\" +\n        \"<td>\" + item.waste + \"<small>EWC \" + item.ler + \"<\/small><\/td>\" +\n        \"<td>\" + format(item.weight) + \" kg<\/td>\" +\n        '<td><span class=\"cp-status\">' + item.status + \"<\/span><\/td>\" +\n        '<td><button type=\"button\" class=\"cp-detail-button\">Ver<\/button><\/td>';\n\n      const button = row.querySelector(\"button\");\n      button.setAttribute(\"aria-label\", \"View passport \" + item.id);\n      button.addEventListener(\"click\", () => openPassport(item));\n      table.appendChild(row);\n    });\n\n    if (!rows.length) {\n      const row = document.createElement(\"tr\");\n      row.innerHTML = '<td colspan=\"6\">No passports match these filters.<\/td>';\n      table.appendChild(row);\n    }\n\n    $(\"#cp-passport-count\").textContent =\n      rows.length + \" sample passport\" + (rows.length === 1 ? \"\" : \"s\") + \".\";\n  }\n\n  function render() {\n    const data = getData();\n    renderDashboard(data);\n    renderImpact(data);\n    renderPassports();\n  }\n\n  function showView(view) {\n    $$(\".cp-view\").forEach(item => {\n      item.hidden = item.id !== \"cp-\" + view + \"-view\";\n    });\n\n    $$(\"[data-view]\").forEach(button => {\n      const selected = button.dataset.view === view;\n      button.classList.toggle(\"cp-active\", selected);\n      button.setAttribute(\"aria-pressed\", String(selected));\n    });\n\n    $(\"#cp-view-title\").textContent = {\n      dashboard: \"Dashboard\",\n      impact: \"Environmental impact\",\n      passports: \"Digital passports\"\n    }[view];\n  }\n\n  $$(\"[data-view]\").forEach(button =>\n    button.addEventListener(\"click\", () => showView(button.dataset.view))\n  );\n\n  $$(\"[data-impact]\").forEach(button =>\n    button.addEventListener(\"click\", () => {\n      $(\"#cp-impact-type\").value = button.dataset.impact;\n      renderImpact(getData());\n      showView(\"impact\");\n    })\n  );\n\n  [\"#cp-port\", \"#cp-waste\", \"#cp-period\"].forEach(selector =>\n    $(selector).addEventListener(\"change\", render)\n  );\n\n  $(\"#cp-impact-type\").addEventListener(\"change\", () => renderImpact(getData()));\n  $(\"#cp-passport-search\").addEventListener(\"input\", renderPassports);\n\n  $$(\"[data-open-passport]\").forEach(button =>\n    button.addEventListener(\"click\", () => openPassport(passports[0]))\n  );\n\n  $$(\".cp-close, .cp-dialog-done\").forEach(button =>\n    button.addEventListener(\"click\", () => $(\"#cp-passport-dialog\").close())\n  );\n\n  $(\"#cp-passport-dialog\").addEventListener(\"click\", event => {\n    const dialog = event.currentTarget;\n    if (event.target !== dialog) return;\n    const rect = dialog.getBoundingClientRect();\n    if (\n      event.clientX < rect.left || event.clientX > rect.right ||\n      event.clientY < rect.top || event.clientY > rect.bottom\n    ) dialog.close();\n  });\n\n  render();\n})();\n<\/script><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>DIGITAL TRACEABILITY \u00b7 MARPOL WASTE Connect the data.Track every waste stream. From vessel to final destination. One platform to connect port operations, verify every process and measure environmental impact. Explore the platform \u2192 How it works \u2713 Developed with the Balearic Islands Port Authority CIRCULARPORT Digital traceability FROM PORT TO FINAL TREATMENT One waste stream.One&hellip; <a class=\"more-link\" href=\"https:\/\/circularport.eu\/es\/\">Seguir leyendo <span class=\"screen-reader-text\">Circularport<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1484","page","type-page","status-publish","hentry","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Circularport | Circular Port<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/circularport.eu\/es\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Circularport | Circular Port\" \/>\n<meta property=\"og:description\" content=\"DIGITAL TRACEABILITY \u00b7 MARPOL WASTE Connect the data.Track every waste stream. From vessel to final destination. One platform to connect port operations, verify every process and measure environmental impact. Explore the platform \u2192 How it works \u2713 Developed with the Balearic Islands Port Authority CIRCULARPORT Digital traceability FROM PORT TO FINAL TREATMENT One waste stream.One&hellip; Seguir leyendo Circularport\" \/>\n<meta property=\"og:url\" content=\"https:\/\/circularport.eu\/es\/\" \/>\n<meta property=\"og:site_name\" content=\"Circular Port\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-27T09:55:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/digicirc-e1712128870785.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/circularport.eu\\\/\",\"url\":\"https:\\\/\\\/circularport.eu\\\/\",\"name\":\"Circularport | Circular Port\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/circularport.eu\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/circularport.eu\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/circularport.eu\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.circularport.eu\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/digicirc-e1712128870785.png\",\"datePublished\":\"2026-10-08T09:11:08+00:00\",\"dateModified\":\"2026-10-27T09:55:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/circularport.eu\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/circularport.eu\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/circularport.eu\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.circularport.eu\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/digicirc-e1712128870785.png\",\"contentUrl\":\"https:\\\/\\\/www.circularport.eu\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/digicirc-e1712128870785.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/circularport.eu\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/circularport.eu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Circularport\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/circularport.eu\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/circularport.eu\\\/es\\\/\",\"name\":\"Circular Port\",\"description\":\"Green &amp; Efficient Ports\",\"publisher\":{\"@id\":\"https:\\\/\\\/circularport.eu\\\/es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/circularport.eu\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/circularport.eu\\\/es\\\/#organization\",\"name\":\"Circular Port\",\"url\":\"https:\\\/\\\/circularport.eu\\\/es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/circularport.eu\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/circularport.eu\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/cropped-Main.png\",\"contentUrl\":\"https:\\\/\\\/circularport.eu\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/cropped-Main.png\",\"width\":427,\"height\":185,\"caption\":\"Circular Port\"},\"image\":{\"@id\":\"https:\\\/\\\/circularport.eu\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Circularport | Circular Port","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/circularport.eu\/es\/","og_locale":"es_ES","og_type":"article","og_title":"Circularport | Circular Port","og_description":"DIGITAL TRACEABILITY \u00b7 MARPOL WASTE Connect the data.Track every waste stream. From vessel to final destination. One platform to connect port operations, verify every process and measure environmental impact. Explore the platform \u2192 How it works \u2713 Developed with the Balearic Islands Port Authority CIRCULARPORT Digital traceability FROM PORT TO FINAL TREATMENT One waste stream.One&hellip; Seguir leyendo Circularport","og_url":"https:\/\/circularport.eu\/es\/","og_site_name":"Circular Port","article_modified_time":"2026-10-27T09:55:21+00:00","og_image":[{"url":"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/digicirc-e1712128870785.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/circularport.eu\/","url":"https:\/\/circularport.eu\/","name":"Circularport | Circular Port","isPartOf":{"@id":"https:\/\/circularport.eu\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/circularport.eu\/#primaryimage"},"image":{"@id":"https:\/\/circularport.eu\/#primaryimage"},"thumbnailUrl":"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/digicirc-e1712128870785.png","datePublished":"2026-10-08T09:11:08+00:00","dateModified":"2026-10-27T09:55:21+00:00","breadcrumb":{"@id":"https:\/\/circularport.eu\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/circularport.eu\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/circularport.eu\/#primaryimage","url":"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/digicirc-e1712128870785.png","contentUrl":"https:\/\/www.circularport.eu\/wp-content\/uploads\/2024\/04\/digicirc-e1712128870785.png"},{"@type":"BreadcrumbList","@id":"https:\/\/circularport.eu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/circularport.eu\/"},{"@type":"ListItem","position":2,"name":"Circularport"}]},{"@type":"WebSite","@id":"https:\/\/circularport.eu\/es\/#website","url":"https:\/\/circularport.eu\/es\/","name":"Circular Port","description":"Green &amp; Efficient Ports","publisher":{"@id":"https:\/\/circularport.eu\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/circularport.eu\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/circularport.eu\/es\/#organization","name":"Circular Port","url":"https:\/\/circularport.eu\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/circularport.eu\/es\/#\/schema\/logo\/image\/","url":"https:\/\/circularport.eu\/wp-content\/uploads\/2022\/09\/cropped-Main.png","contentUrl":"https:\/\/circularport.eu\/wp-content\/uploads\/2022\/09\/cropped-Main.png","width":427,"height":185,"caption":"Circular Port"},"image":{"@id":"https:\/\/circularport.eu\/es\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/pages\/1484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/comments?post=1484"}],"version-history":[{"count":9,"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/pages\/1484\/revisions"}],"predecessor-version":[{"id":1575,"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/pages\/1484\/revisions\/1575"}],"wp:attachment":[{"href":"https:\/\/circularport.eu\/es\/wp-json\/wp\/v2\/media?parent=1484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}