{"id":31708,"date":"2026-05-05T16:22:58","date_gmt":"2026-05-05T16:22:58","guid":{"rendered":"https:\/\/zamko.eu\/?page_id=31708"},"modified":"2026-05-25T13:21:15","modified_gmt":"2026-05-25T13:21:15","slug":"sleeve-pack-roi-calculator","status":"publish","type":"page","link":"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/","title":{"rendered":"Sleeve-Pack-ROI-Rechner"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"31708\" class=\"elementor elementor-31708\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-075e5a4 e-con-full e-flex e-con e-parent\" data-id=\"075e5a4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-123790a elementor-widget elementor-widget-heading\" data-id=\"123790a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Sleeve_Pack_ROI_Calculator\"><\/span>Sleeve Pack ROI Calculator<span class=\"ez-toc-section-end\"><\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-623d2b1 elementor-widget elementor-widget-html\" data-id=\"623d2b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<head>\r\n  <title>Sleeve Pack ROI Calculator | ZAMKO<\/title>\r\n  <meta name=\"description\" content=\"Free ROI calculator for ZAMKO sleeve pack pallet boxes. Enter shipment volume, distance and packaging cost to calculate payback period and annual savings versus one-way carton or plywood packaging.\"\/>\r\n  <meta name=\"robots\" content=\"index, follow\"\/>\r\n  <meta name=\"keywords\" content=\"sleeve pack ROI calculator, reusable pallet box payback, returnable packaging savings, sleeve pack vs carton, ZAMKO sleeve pack\"\/>\r\n\r\n  \r\n  <meta property=\"og:title\" content=\"Sleeve Pack ROI Calculator | ZAMKO\"\/>\r\n  <meta property=\"og:description\" content=\"Calculate your payback period and annual savings from switching to reusable sleeve pack pallet boxes. Free tool by ZAMKO.\"\/>\r\n  <meta property=\"og:image\" content=\"https:\/\/zamko.eu\/wp-content\/uploads\/2024\/05\/Zamko-Logo.png\"\/>\r\n  <meta property=\"og:url\" content=\"https:\/\/zamko.eu\/sleeve-pack-roi-calculator\"\/>\r\n  <meta property=\"og:type\" content=\"website\"\/>\r\n  <meta property=\"og:site_name\" content=\"ZAMKO B.V.\"\/>\r\n  <meta property=\"og:locale\" content=\"en_GB\"\/>\r\n\r\n  \r\n  <meta name=\"twitter:card\" content=\"summary\"\/>\r\n  <meta name=\"twitter:title\" content=\"Sleeve Pack ROI Calculator | ZAMKO\"\/>\r\n  <meta name=\"twitter:description\" content=\"Free tool: calculate payback period and annual savings from reusable sleeve pack pallet boxes.\"\/>\r\n  <meta name=\"twitter:image\" content=\"https:\/\/zamko.eu\/wp-content\/uploads\/2024\/05\/Zamko-Logo.png\"\/>\r\n\r\n  \r\n  \r\n  <link rel=\"canonical\" href=\"https:\/\/zamko.eu\/sleeve-pack-roi-calculator\"\/>\r\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700;800&family=DM+Mono:wght@400;500&display=swap\" rel=\"stylesheet\"\/>\r\n<style>\r\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}\r\n:root{\r\n  --blue:#123a8f;--blue-2:#1e4fb8;--blue-lt:#E6F1FB;--blue-lt2:#dce8fb;\r\n  --blue-bdr:#B5D4F4;--blue-dk:#0C447C;--blue-900:#042C53;\r\n  --orange:#EF9F27;--orange-dk:#854F0B;--orange-lt:#FAEEDA;\r\n  --green:#3B6D11;--green-lt:#EAF3DE;--green-bdr:#C0DD97;\r\n  --green-dk:#27500A; --red:#C0392B; --red-lt:#FDECEA; --red-bdr:#F5B7B1;\r\n  --text:#1a1a1a;--muted:#5a6070;--muted2:#8a93a0;\r\n  --bg:#f4f5f8;--white:#ffffff;--bdr:rgba(0,0,0,.1);\r\n  --r-md:8px;--r-lg:12px;--r-xl:16px;\r\n  --shadow:0 1px 3px rgba(0,0,0,.06);\r\n  --field-h:32px;\r\n}\r\nbody{font-family:'DM Sans',system-ui,sans-serif;color:var(--text);background:transparent;line-height:1.45;font-size:14px;-webkit-font-smoothing:antialiased;}\r\n.nav-logo span{color:var(--orange);}\r\n.nav-logo img{height:28px;filter:brightness(0) invert(1);}\r\n\r\n.nav-links a:hover{color:#fff;}\r\n.nav-links .nav-cta{background:var(--orange);color:var(--orange-dk)!important;padding:0 16px;margin-left:12px;border-radius:var(--r-md);height:32px;align-self:center;font-weight:700;border-bottom:none!important;}\r\n.nav-links .nav-cta:hover{background:#ba7517;color:#fff!important;}\r\n.page-header-outer{background:transparent;}\r\n.page-header{max-width:1200px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;gap:16px;}\r\n.page-header-text{flex:1;}\r\n.page-header h1{font-size:18px;font-weight:700;color:var(--blue);letter-spacing:-.02em;}\r\n.page-header p{font-size:12px;color:var(--muted);margin-top:2px;}\r\n.steps{max-width:1200px;margin:0 auto;padding:8px 20px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}\r\n.step{background:#fdfefe;border:.5px solid var(--blue-bdr);border-radius:var(--r-lg);padding:10px 12px;display:flex;gap:9px;align-items:flex-start;box-shadow:var(--shadow);}\r\n.step:nth-child(1){background:#F3F8FD}.step:nth-child(2){background:#F8FBF2}.step:nth-child(3){background:#FFF8EE;border-color:#F8D79E}\r\n.step-n{width:24px;height:24px;border-radius:7px;background:#fff;color:var(--blue);font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;font-family:'DM Mono',monospace;box-shadow:inset 0 0 0 1px rgba(18,58,143,.18);flex-shrink:0;}\r\n.step-title{font-size:12px;font-weight:800;color:var(--blue);line-height:1.2}.step-text{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.35}\r\n@media(max-width:900px){.steps{grid-template-columns:1fr;}}\r\n\r\n.layout{max-width:1200px;margin:0 auto;padding:16px 20px;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:14px;align-items:start;}\r\n.stack{display:flex;flex-direction:column;gap:10px;}\r\n.card{background:var(--white);border:0.5px solid var(--bdr);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--shadow);}\r\n.sec-head{display:flex;align-items:center;gap:8px;margin-bottom:12px;}\r\n.sec-n{width:22px;height:22px;border-radius:6px;background:var(--blue);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:'DM Mono',monospace;}\r\n.sec-n.nb{background:var(--blue-lt);color:var(--blue);border:0.5px solid var(--blue-bdr);}\r\n.sec-title{font-size:14px;font-weight:700;color:var(--blue);letter-spacing:-.01em;}\r\n.sec-badge{margin-left:auto;font-size:10px;font-weight:600;padding:2px 8px;border-radius:20px;background:var(--blue-lt);color:var(--blue-dk);border:0.5px solid var(--blue-bdr);}\r\n.field-label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;display:block;}\r\ninput[type=number],select{height:var(--field-h);border:0.5px solid rgba(0,0,0,.15);border-radius:var(--r-md);background:var(--white);font-size:13px;font-family:inherit;color:var(--text);padding:0 10px;width:100%;transition:border-color .15s,box-shadow .15s;appearance:none;}\r\ninput[type=number]:focus,select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(18,58,143,.1);}\r\nselect{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23666' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;}\r\n.field-error{font-size:11px;color:#A32D2D;margin-top:3px;display:none;}\r\n.field-error.show{display:block;}\r\n.input-error{border-color:#E24B4A!important;box-shadow:0 0 0 3px rgba(226,75,74,.1)!important;}\r\n.helper{font-size:11px;color:var(--muted2);margin-top:3px;line-height:1.4;}\r\n.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}\r\n.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}\r\n.hidden{display:none!important;}\r\n.inline-note{background:var(--blue-lt);border:0.5px solid var(--blue-bdr);border-radius:var(--r-md);padding:10px 12px;}\r\n.inline-note .lbl{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;}\r\n.inline-note .val{font-size:13px;font-weight:700;color:var(--blue);font-family:'DM Mono',monospace;}\r\n.cycle-box{background:var(--bg);border-radius:var(--r-md);padding:10px 12px;margin-top:10px;}\r\n.cycle-box-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}\r\n.cycle-box-title{font-size:12px;font-weight:700;color:var(--blue);}\r\n.cycle-val{font-size:12px;font-family:'DM Mono',monospace;color:var(--muted);}\r\n\r\n.calc-btn{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--blue);background:none;border:none;cursor:pointer;font-family:inherit;padding:0;transition:opacity .15s;}\r\n.calc-btn:hover{opacity:.7;}\r\n.reveal-box{display:none;background:var(--blue-lt);border-radius:var(--r-md);padding:9px 11px;font-size:11px;font-family:'DM Mono',monospace;color:var(--blue-dk);line-height:1.75;margin-top:6px;}\r\n.reveal-box.open{display:block;}\r\n.adv-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--blue);border:none;border-radius:var(--r-lg);padding:10px 14px;font-size:12px;font-weight:700;color:#fff;cursor:pointer;font-family:inherit;transition:background .15s;}\r\n.adv-toggle:hover{background:var(--blue-2);}\r\n.adv-section{display:none;}\r\n.adv-section.open{display:flex;flex-direction:column;gap:10px;margin-top:8px;}\r\n.ltl-box{background:#185FA5;border-radius:var(--r-lg);padding:14px 16px;}\r\n.ltl-box h4{font-size:13px;font-weight:700;color:#fff;margin-bottom:4px;}\r\n.ltl-box p{font-size:11px;color:rgba(255,255,255,.82);margin-bottom:12px;line-height:1.5;}\r\n.ltl-toggle-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;background:rgba(255,255,255,.12);border:0.5px solid rgba(255,255,255,.25);border-radius:var(--r-md);padding:8px;font-size:12px;font-weight:700;color:#fff;cursor:pointer;font-family:inherit;transition:background .15s;}\r\n.ltl-toggle-btn:hover{background:rgba(255,255,255,.2);}\r\n.ltl-toggle-btn.active{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.5);}\r\n.ltl-config{display:none;margin-top:12px;}\r\n.ltl-config.show{display:block;}\r\n.ltl-config-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}\r\n.ltl-config label{font-size:11px;font-weight:600;color:rgba(255,255,255,.7);display:block;margin-bottom:4px;text-transform:uppercase;letter-spacing:.05em;}\r\n.ltl-config select,.ltl-config input{background:rgba(255,255,255,.18);border:0.5px solid rgba(255,255,255,.35);color:#fff;font-size:13px;}\r\n.ltl-config select option{background:#1e4fb8;color:#fff;}\r\n.ltl-stepper{display:flex;border:0.5px solid rgba(255,255,255,.35);border-radius:var(--r-md);overflow:hidden;background:rgba(255,255,255,.15);}\r\n.ltl-stepper button{background:rgba(255,255,255,.2);border:none;color:#fff;font-size:18px;font-weight:700;width:36px;cursor:pointer;font-family:inherit;flex-shrink:0;}\r\n.ltl-stepper input{border:none;text-align:center;font-size:13px;font-weight:700;border-radius:0;flex:1;background:transparent;color:#fff;height:var(--field-h);font-family:'DM Mono',monospace;}\r\n.helper-white{font-size:10px;color:rgba(255,255,255,.55);margin-top:3px;}\r\n.co2-card{background:var(--green-lt);border:0.5px solid var(--green-bdr);border-radius:var(--r-lg);padding:14px 16px;}\r\n.toggle-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;}\r\n.toggle-switch{position:relative;width:40px;height:22px;flex-shrink:0;}\r\n.toggle-switch input{opacity:0;width:0;height:0;}\r\n.toggle-slider{position:absolute;inset:0;background:#c9d4e4;border-radius:22px;cursor:pointer;transition:background .2s;}\r\n.toggle-slider:before{content:'';position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s;}\r\n.toggle-switch input:checked+.toggle-slider{background:var(--green);}\r\n.toggle-switch input:checked+.toggle-slider:before{transform:translateX(18px);}\r\n.co2-result{display:none;margin-top:12px;}\r\n.co2-result.show{display:block;}\r\n.co2-stat .val{font-size:18px;font-weight:700;color:var(--green-dk);font-family:'DM Mono',monospace;}\r\n.co2-stat .lbl{font-size:11px;color:var(--muted);margin-top:2px;}\r\n.kpi-3row{display:flex;flex-direction:column;gap:8px;}\r\n.kpi-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;}\r\n.kpi-row-ltl{display:none;}\r\n.kpi-card{background:var(--white);border:0.5px solid var(--bdr);border-radius:var(--r-lg);padding:12px 14px;box-shadow:var(--shadow);position:relative;overflow:visible;}\r\n.kpi-card.acc-blue{border-left:2px solid var(--blue-2);}\r\n.kpi-card.acc-ltl{border-left:2px solid var(--orange-dk);}\r\n.kpi-card.acc-green{border-left:2px solid var(--green);}\r\n.kpi-label{font-size:13px;font-weight:700;color:var(--text);margin-bottom:6px;}\r\n.kpi-value{font-size:26px;font-weight:700;letter-spacing:-.03em;font-family:'DM Mono',monospace;margin-bottom:4px;}\r\n.kpi-value.blue{color:var(--blue-2);}\r\n.kpi-value.orange{color:var(--orange-dk);}\r\n.kpi-value.green{color:var(--green);}\r\n.kpi-meta{font-size:10px;color:var(--muted2);font-family:'DM Mono',monospace;line-height:1.4;}\r\n.kpi-mode-badge{position:absolute;top:8px;right:10px;font-size:9px;font-weight:700;padding:1px 7px;border-radius:20px;letter-spacing:.06em;text-transform:uppercase;}\r\n.kpi-mode-badge.ftl{background:var(--blue-lt);color:var(--blue-dk);}\r\n.kpi-mode-badge.ltl{background:var(--orange-lt);color:var(--orange-dk);}\r\n.kpi-winner-badge{position:absolute;top:0;right:10px;transform:translateY(-50%);display:none;align-items:center;gap:3px;background:var(--green);color:#fff;font-size:9px;font-weight:700;padding:2px 8px;border-radius:20px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.12);}\r\n.kpi-winner-badge.show{display:flex;}\r\n.kpi-winner-badge.ftl{background:var(--blue-2);}\r\n.kpi-winner-badge.ltl{background:var(--green);}\r\n.kpi-insight{font-size:11px;margin-top:6px;padding:4px 8px;border-radius:6px;line-height:1.5;display:none;}\r\n.kpi-insight.open{display:block;}.kpi-insight.blue{background:rgba(18,58,143,.07);color:var(--blue);}\r\n.kpi-insight.orange{background:rgba(239,159,39,.1);color:var(--orange-dk);}\r\n.kpi-insight.green{background:rgba(59,109,17,.06);color:var(--green-dk);}\r\n.five-yr-card{background:var(--green-lt);border:0.5px solid var(--green-bdr);border-radius:var(--r-lg);padding:14px 16px;position:relative;}\r\n.collapse-card{background:var(--blue-lt);border:0.5px solid var(--blue-bdr);border-radius:var(--r-lg);padding:12px 14px;}\r\n.collapse-card h4{font-size:12px;font-weight:700;color:var(--blue-dk);margin-bottom:8px;}\r\n.collapse-trucks{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;align-items:center;margin-bottom:8px;}\r\n.truck-box{border-radius:var(--r-md);padding:8px;text-align:center;}\r\n.truck-box.full{background:#fff;border:0.5px solid var(--blue-bdr);}\r\n.truck-box.empty{background:rgba(0,0,0,.03);border:0.5px solid var(--bdr);opacity:.75;}\r\n.truck-qty{font-size:20px;font-weight:700;font-family:'DM Mono',monospace;}\r\n.truck-qty.blue{color:var(--blue);}\r\n.truck-qty.muted{color:var(--muted);}\r\n.truck-sub{font-size:10px;color:var(--muted);margin-top:1px;}\r\n.truck-cost{font-size:12px;font-family:'DM Mono',monospace;font-weight:700;margin-top:4px;}\r\n.truck-cost.blue{color:var(--blue-dk);}\r\n.truck-cost.muted{color:var(--muted2);}\r\n.collapse-ratio{background:#fff;border:0.5px solid var(--green-bdr);border-radius:var(--r-md);padding:6px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}\r\n\r\n.ftl-warning{display:none;background:var(--orange-lt);border:0.5px solid #FAC775;border-left:3px solid var(--orange);border-radius:var(--r-md);padding:10px 12px;font-size:11px;color:var(--orange-dk);line-height:1.45;box-shadow:var(--shadow);}\r\n.ftl-warning.show{display:block;}\r\n.ftl-warning strong{color:var(--orange-dk);font-weight:800;}\r\n.ftl-warning ul{margin:5px 0 0 16px;padding:0;}\r\n.ftl-warning li{margin:1px 0;}\r\n.ltl-cost-note{display:none;margin-top:5px;font-size:9.5px;color:#6f7f96;line-height:1.25;font-family:'DM Sans',system-ui,sans-serif;font-weight:600;}\r\n.ltl-cost-note.show{display:block;}\r\n\r\n.econ-warn{display:none;background:#FAEEDA;border:0.5px solid #FAC775;border-radius:var(--r-md);padding:8px 10px;font-size:11px;color:var(--orange-dk);line-height:1.5;margin-top:6px;}\r\n.econ-warn.show{display:block;}\r\n.margin-warn{display:none;border-radius:6px;font-size:11px;padding:5px 8px;margin-top:4px;line-height:1.4;}\r\n.margin-warn.warn{display:block;background:#FAEEDA;border:0.5px solid #FAC775;color:var(--orange-dk);}\r\n.margin-warn.error{display:block;background:#FCEBEB;border:0.5px solid #F7C1C1;color:#A32D2D;}\r\n.verdict-box{display:none;border-radius:var(--r-lg);padding:14px 16px;border:0.5px solid transparent;}\r\n.verdict-box.show{display:block;}\r\n.verdict-box.green{background:var(--green-lt);border-color:var(--green-bdr);}\r\n.verdict-box.blue{background:var(--blue-lt);border-color:var(--blue-bdr);}\r\n.verdict-box.orange{background:var(--orange-lt);border-color:#FAC775;}\r\n.verdict-box.red{background:#FCEBEB;border-color:#F7C1C1;}\r\n.verdict-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 9px;border-radius:20px;margin-bottom:7px;}\r\n.verdict-box.green .verdict-badge{background:var(--green-bdr);color:var(--green-dk);}\r\n.verdict-box.blue  .verdict-badge{background:var(--blue-bdr);color:var(--blue-dk);}\r\n.verdict-box.orange .verdict-badge{background:#FAC775;color:var(--orange-dk);}\r\n.verdict-box.red   .verdict-badge{background:#F7C1C1;color:#791F1F;}\r\n.verdict-box h4{font-size:13px;font-weight:700;margin-bottom:10px;}\r\n.verdict-box.green  h4{color:var(--green-dk);}\r\n.verdict-box.blue   h4{color:var(--blue-dk);}\r\n.verdict-box.orange h4{color:var(--orange-dk);}\r\n.verdict-box.red    h4{color:#791F1F;}\r\n.verdict-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;}\r\n.vstat .vval{font-size:15px;font-weight:700;font-family:'DM Mono',monospace;}\r\n.verdict-box.green  .vstat .vval{color:var(--green);}\r\n.verdict-box.blue   .vstat .vval{color:var(--blue);}\r\n.verdict-box.orange .vstat .vval{color:var(--orange-dk);}\r\n.verdict-box.red    .vstat .vval{color:#A32D2D;}\r\n.vstat .vlbl{font-size:10px;color:var(--muted);}\r\n.verdict-text{font-size:12px;line-height:1.5;padding-top:8px;border-top:0.5px solid rgba(0,0,0,.08);}\r\n.verdict-facts{margin-top:8px;display:flex;flex-direction:column;gap:4px;}\r\n.verdict-fact{font-size:11px;padding:4px 8px;border-radius:5px;background:rgba(0,0,0,.04);}\r\n.lead-card{background:var(--white);border:0.5px solid var(--bdr);border-radius:var(--r-lg);padding:12px 14px;box-shadow:var(--shadow);}\r\n\r\n.report-card{background:#fff;border:.5px solid var(--blue-bdr);border-radius:var(--r-lg);padding:12px 14px;box-shadow:var(--shadow)}\r\n.report-title{font-size:13px;font-weight:800;color:var(--blue);margin-bottom:4px}\r\n.report-sub{font-size:10.5px;color:var(--muted);line-height:1.35;margin-bottom:9px}\r\n.report-actions{display:grid;grid-template-columns:1fr;gap:8px;margin-bottom:0}\r\n.report-btn{border:none;border-radius:var(--r-md);padding:9px 10px;font-size:12px;font-weight:800;font-family:inherit;cursor:pointer;text-align:center;text-decoration:none}\r\n.report-btn.primary{background:var(--blue);color:#fff}\r\n\r\n.cta-block{background:#0C447C;border-radius:var(--r-xl);padding:18px 16px;text-align:center;}\r\n.cta-eyebrow{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#85B7EB;margin-bottom:6px;}\r\n.cta-title{font-size:15px;font-weight:700;color:#fff;margin-bottom:4px;line-height:1.3;}\r\n.cta-sub{font-size:11px;color:#85B7EB;margin-bottom:14px;line-height:1.5;}\r\n.cta-primary{background:var(--blue-lt);color:var(--blue);border:0.5px solid var(--blue-bdr);font-size:13px;font-weight:700;border:none;border-radius:var(--r-md);padding:11px 20px;cursor:pointer;font-family:inherit;width:100%;margin-bottom:8px;transition:background .15s;}\r\n.cta-primary:hover{background:var(--blue-lt2);}\r\n.cta-sec-row{display:grid;grid-template-columns:1fr 1fr;gap:6px;}\r\n.cta-sec{background:#C0392B;color:#fff;font-size:11px;font-weight:600;border:1.5px solid #fff;border-radius:var(--r-md);padding:8px;cursor:pointer;font-family:inherit;text-align:center;text-decoration:none;display:block;transition:background .15s;}\r\n.cta-sec:hover{background:#a93226;}\r\n.cta-disclaimer{font-size:10px;color:#85B7EB;margin-top:10px;line-height:1.5;}\r\n.summary-outer{max-width:1200px;margin:0 auto;padding:12px 20px 0;}\r\n.summary-strip{background:var(--white);border:0.5px solid var(--bdr);border-radius:var(--r-lg);display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;box-shadow:var(--shadow);}\r\n.s-col{padding:12px 14px;border-right:0.5px solid var(--bdr);}\r\n.s-col:last-child{border-right:none;}\r\n.s-col-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted2);margin-bottom:8px;padding-bottom:6px;border-bottom:0.5px solid var(--bdr);}\r\n.s-item{margin-bottom:6px;}\r\n.s-item .sk{font-size:11px;color:var(--muted);margin-bottom:1px;}\r\n.s-item .sv{font-size:12px;font-weight:700;font-family:'DM Mono',monospace;color:var(--blue);}\r\n.formula-outer{max-width:1200px;margin:0 auto;padding:10px 20px 0;}\r\n.formula-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--blue-lt);border:0.5px solid var(--blue-bdr);border-radius:var(--r-lg);padding:10px 14px;font-size:12px;font-weight:700;color:var(--blue);cursor:pointer;font-family:inherit;}\r\n.formula-body{display:none;background:var(--white);border:0.5px solid var(--bdr);border-top:none;border-radius:0 0 var(--r-lg) var(--r-lg);padding:16px;}\r\n.formula-body.open{display:block;}\r\n.formula-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;}\r\n.f-box{background:var(--blue-lt);border-radius:var(--r-md);padding:10px 12px;}\r\n.f-title{font-size:11px;font-weight:700;color:var(--blue);margin-bottom:5px;}\r\n.f-text{font-size:11px;font-family:'DM Mono',monospace;color:var(--blue-dk);line-height:1.65;}\r\n.live-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}\r\n.live-box{background:var(--bg);border-radius:var(--r-md);padding:8px 10px;border:0.5px solid var(--bdr);}\r\n.live-lbl{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;}\r\n.live-val{font-size:11px;font-family:'DM Mono',monospace;color:var(--blue-dk);}\r\n.footer{background:#020c1e;padding:14px 20px;text-align:center;font-size:11px;color:rgba(255,255,255,.35);}\r\n.footer a{color:rgba(255,255,255,.4);text-decoration:none;}\r\n#pdfReport,#pdfReport *{visibility:visible;}\r\n\r\n.pdf-logo span{color:#EF9F27;}\r\n\r\n.pdf-table td:first-child{color:#6b7280;width:55%;}\r\n.pdf-table td:last-child{font-weight:600;font-family:'DM Mono',monospace;}\r\n\r\n.ltl-mini{display:none;margin-top:7px;border-top:.5px solid rgba(0,0,0,.08);padding-top:6px;}\r\n.ltl-mini.show{display:block;}\r\n.ltl-mini-title{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--muted2);margin-bottom:4px;}\r\n.ltl-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;}\r\n.ltl-mini-cell{background:#f7f8fb;border:.5px solid rgba(0,0,0,.08);border-radius:6px;padding:4px 3px;text-align:center;}\r\n.ltl-mini-cell .k{font-size:8.5px;font-weight:900;line-height:1.1;white-space:nowrap;}\r\n.ltl-mini-cell .v{font-size:10.5px;font-family:'DM Mono',monospace;font-weight:900;line-height:1.2;margin-top:1px;}\r\n.ltl-mini-cell.c0{background:#edf5ff;border-color:#b5d4f4;color:#0C447C;}\r\n.ltl-mini-cell.c1{background:#eef7e8;border-color:#c0dd97;color:#3B6D11;}\r\n.ltl-mini-cell.c2{background:#fff4e3;border-color:#fac775;color:#854F0B;}\r\n.ltl-mini-cell .sub{font-size:8px;color:var(--muted2);line-height:1.1;margin-top:1px;}\r\n\r\n.buffer-options{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}\r\n.buffer-option{position:relative;}\r\n.buffer-option input{position:absolute;opacity:0;pointer-events:none;}\r\n.buffer-option span{height:32px;border:0.5px solid rgba(0,0,0,.15);border-radius:var(--r-md);background:#fff;display:flex;align-items:center;justify-content:center;text-align:center;font-size:10.5px;font-weight:700;color:var(--muted);cursor:pointer;line-height:1.15;padding:0 4px;}\r\n.buffer-option input:checked+span{background:var(--blue-lt);border-color:var(--blue);color:var(--blue);box-shadow:0 0 0 2px rgba(18,58,143,.07);}\r\n.buffer-custom-input{display:none;margin-top:6px;}\r\n.buffer-custom-input.show{display:block;}\r\n\r\n@media(max-width:900px){.layout{grid-template-columns:1fr;}   .summary-strip{grid-template-columns:1fr 1fr;} .s-col:nth-child(3),.s-col:nth-child(4){border-top:0.5px solid var(--bdr);}}\r\n@media(max-width:640px){.grid-2,.grid-3,.kpi-row,.summary-strip,.cta-sec-row, .page-header{flex-wrap:wrap;}  body{padding-bottom:60px;} .formula-grid,.live-grid,.verdict-stats{grid-template-columns:1fr!important;}}\r\n.kpi-info-btn{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:11px;font-weight:600;color:#123a8f;background:none;border:none;cursor:pointer;font-family:inherit;padding:0;}\r\n.kpi-info-btn:hover{opacity:.7;}\r\n.kpi-info-btn .ii{width:14px;height:14px;border-radius:50%;border:1.5px solid #123a8f;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;font-style:italic;flex-shrink:0;line-height:1;color:#123a8f;}\r\n.kpi-info-btn.active .ii{background:#123a8f;color:#fff;}\r\n.kpi-card.acc-worst{border-left:2px solid var(--red) !important;background:var(--red-lt) !important;}\r\n.kpi-card.acc-worst .kpi-value{color:var(--red) !important;}\r\n.kpi-card.acc-best{border-left:2px solid var(--blue-2) !important;background:var(--blue-lt) !important;}\r\n.kpi-card.acc-best .kpi-value{color:var(--blue-2) !important;}\r\n\r\n.kpi-card .kpi-info-btn{position:absolute;right:12px;top:43px;margin:0;padding:0;font-size:0;gap:0;z-index:20;line-height:1;background:transparent;}\r\n.kpi-card .kpi-info-btn svg{width:17px;height:17px;display:block;}\r\n.kpi-card .kpi-info-btn:hover{opacity:.82;}\r\n.kpi-card .kpi-info-btn.active svg circle:first-child{fill:#0C447C;}\r\n.kpi-card .kpi-insight{margin-top:8px;}\r\n.ltl-mini-cell .v{white-space:nowrap;}\r\n\r\n@media(max-width:640px){#ltlTripNote{grid-template-columns:1fr!important;}#ltlTripNote div:last-child{border-left:none!important;border-top:0.5px solid rgba(255,255,255,.22)!important;padding-left:0!important;padding-top:6px!important;}}\r\n\r\n#pdfReport .pdf-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:6px}\r\n<\/style>\r\n  <script type=\"application\/ld+json\">\r\n  {\r\n    \"@context\": \"https:\/\/schema.org\",\r\n    \"@graph\": [\r\n      {\r\n        \"@type\": \"WebApplication\",\r\n        \"@id\": \"https:\/\/zamko.eu\/sleeve-pack-roi-calculator\",\r\n        \"name\": \"Sleeve Pack ROI Calculator\",\r\n        \"description\": \"Calculate the payback period and annual savings of switching from one-way carton or plywood packaging to reusable ZAMKO sleeve pack pallet boxes. Enter volume, distance and packaging cost for instant results.\",\r\n        \"url\": \"https:\/\/zamko.eu\/sleeve-pack-roi-calculator\",\r\n        \"applicationCategory\": \"BusinessApplication\",\r\n        \"operatingSystem\": \"Web browser\",\r\n        \"isAccessibleForFree\": true,\r\n        \"offers\": { \"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"EUR\" },\r\n        \"provider\": { \"@type\": \"Organization\", \"@id\": \"https:\/\/zamko.eu\/#organization\" },\r\n        \"featureList\": [\r\n          \"FTL vs LTL return strategy comparison\",\r\n          \"Pool size calculation\",\r\n          \"Payback period calculation\",\r\n          \"5-year total savings projection\",\r\n          \"Sustainability impact estimation\"\r\n        ]\r\n      },\r\n      {\r\n        \"@type\": \"Organization\",\r\n        \"@id\": \"https:\/\/zamko.eu\/#organization\",\r\n        \"name\": \"ZAMKO B.V.\",\r\n        \"url\": \"https:\/\/zamko.eu\",\r\n        \"logo\": \"https:\/\/zamko.eu\/wp-content\/uploads\/2024\/05\/Zamko-Logo.png\",\r\n        \"description\": \"ZAMKO B.V. is a specialist in collapsible pallet box solutions including sleeve packs, mesh wire cages, and pooling services for European industrial logistics.\",\r\n        \"address\": {\r\n          \"@type\": \"PostalAddress\",\r\n          \"streetAddress\": \"Zilverwerf 14\",\r\n          \"postalCode\": \"6641 TD\",\r\n          \"addressLocality\": \"Beuningen\",\r\n          \"addressCountry\": \"NL\"\r\n        },\r\n        \"telephone\": \"+31407114717\",\r\n        \"email\": \"sales@zamko.eu\",\r\n        \"sameAs\": [\"https:\/\/zamko.eu\"]\r\n      }\r\n    ]\r\n  }\r\n  <\/script>\r\n  <script type=\"application\/ld+json\">\r\n  {\r\n    \"@context\": \"https:\/\/schema.org\",\r\n    \"@type\": \"FAQPage\",\r\n    \"mainEntity\": [\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"How many collapsed sleeve packs fit in a return truck?\",\r\n        \"acceptedAnswer\": {\r\n          \"@type\": \"Answer\",\r\n          \"text\": \"Up to 400 collapsed 1208 sleeve packs (1200x800mm) fit in a standard return truck, versus only 64 when loaded. For the 1210 size (1200x1000mm), 320 collapsed packs fit per truck versus 52 loaded. This 6.25x fold ratio is the key driver of low return transport cost.\"\r\n        }\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"How quickly do sleeve packs pay back the investment?\",\r\n        \"acceptedAnswer\": {\r\n          \"@type\": \"Answer\",\r\n          \"text\": \"Payback is typically 15 to 30 months depending on shipment volume, return distance, and current packaging cost. At 2 trucks per month over 800km versus carton and pallet packaging, the payback period is approximately 29 months for FTL or 16 months for LTL returns.\"\r\n        }\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"What is the difference between FTL and LTL return strategy for sleeve packs?\",\r\n        \"acceptedAnswer\": {\r\n          \"@type\": \"Answer\",\r\n          \"text\": \"FTL (Full Truck Load) waits until 400 collapsed packs accumulate before sending a return truck - lowest transport cost per year but requires a larger pool investment. LTL (Less than Truck Load) returns more frequently in partial loads - smaller pool and lower upfront investment but higher annual transport cost. For low volumes (4 trucks per month or fewer) LTL often produces a better 5-year return.\"\r\n        }\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"What sizes of sleeve packs does ZAMKO offer?\",\r\n        \"acceptedAnswer\": {\r\n          \"@type\": \"Answer\",\r\n          \"text\": \"The two standard sizes are 1208 (1200x800mm, 64 units per truck) and 1210 (1200x1000mm, 52 units per truck). Custom sizes are available from 200 units. Load capacity ranges from 400 to 1700 kg.\"\r\n        }\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"What packaging weight should I enter in the CO2 sustainability calculator?\",\r\n        \"acceptedAnswer\": {\r\n          \"@type\": \"Answer\",\r\n          \"text\": \"For 1208 carton and pallet: carton (7mm BC) weighs approximately 7kg plus EPAL pallet 10kg = 17kg total. For 1210: 8.5kg plus 12kg = 20.5kg. For 6mm plywood crates: 1208 is approximately 25kg and 1210 approximately 30kg.\"\r\n        }\r\n      }\r\n    ]\r\n  }\r\n  <\/script>\r\n<\/head>\r\n\r\n<div class=\"page-header-outer\">\r\n  <div class=\"page-header\">\r\n    <div class=\"page-header-text\">\r\n      <h2><span class=\"ez-toc-section\" id=\"Sleeve_Pack_ROI_Calculator-3\"><\/span>Sleeve Pack ROI Calculator<span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n      <p>Estimate how quickly sleeve packs pay back your investment - and how much you save each year versus one-way carton or plywood packaging.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"steps\">\r\n  <div class=\"step\"><div class=\"step-n\">1<\/div><div><div class=\"step-title\">Select sleeve pack & current packaging<\/div><div class=\"step-text\">Choose the size and compare against carton\/pallet or plywood crates.<\/div><\/div><\/div>\r\n  <div class=\"step\"><div class=\"step-n\">2<\/div><div><div class=\"step-title\">Enter shipment & return loop<\/div><div class=\"step-text\">Add volume, distance, return cost and cycle-time assumptions.<\/div><\/div><\/div>\r\n  <div class=\"step\"><div class=\"step-n\">3<\/div><div><div class=\"step-title\">Compare ROI & LTL options<\/div><div class=\"step-text\">See FTL baseline results and compact LTL alternatives side by side.<\/div><\/div><\/div>\r\n<\/div>\r\n\r\n<div class=\"layout\">\r\n\r\n  \r\n  <div class=\"stack\">\r\n\r\n    \r\n    <div class=\"card\">\r\n      <div class=\"sec-head\">\r\n        <div class=\"sec-n\">1<\/div>\r\n        <span class=\"sec-title\">Sleeve pack selection<\/span>\r\n        <span class=\"sec-badge\" id=\"sizeBadge\">1208 \u00b7 1200\u00d7800 mm<\/span>\r\n        <a href=\"https:\/\/zamko.eu\/sleeve-pack-systems\/\" target=\"_blank\" style=\"margin-left:auto;font-size:10px;font-weight:500;color:var(--muted);text-decoration:none;display:flex;align-items:center;gap:3px;white-space:nowrap;flex-shrink:0;border-bottom:1px solid var(--bdr);\" title=\"Sleeve Packs: The Complete Guide\">Procurement Guide \u2192<\/a>\r\n      <\/div>\r\n      <div class=\"grid-2\" style=\"margin-bottom:10px;\">\r\n        <div>\r\n          <label class=\"field-label\" for=\"size\">Size<\/label>\r\n          <select id=\"size\">\r\n            <option value=\"1208\">1208 - 1200x800 mm<\/option>\r\n            <option value=\"1210\">1210 - 1200x1000 mm<\/option>\r\n          <\/select>\r\n          <a id=\"productLink\" href=\"https:\/\/zamko.eu\/product\/sleevepack-1200x800-p1208-900-300\/\" target=\"_blank\" rel=\"noopener\"\r\n             style=\"display:inline-block;margin-top:5px;margin-bottom:5px;padding-left:10px;font-size:11px;font-weight:500;color:var(--blue);text-decoration:underline;text-underline-offset:2px;\">View sleeve pack products &#8594;<\/a>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\" for=\"price\">Purchase price (EUR)<\/label>\r\n          <input id=\"price\" type=\"number\" min=\"1\" step=\"1\" value=\"90\"\/>\r\n          <div class=\"field-error\" id=\"priceErr\">Enter a price above 0.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"card\">\r\n      <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;\">\r\n\r\n        \r\n        <div style=\"border-right:0.5px solid var(--bdr);padding-right:16px;\">\r\n          <div class=\"sec-head\" style=\"margin-bottom:12px;\">\r\n            <div class=\"sec-n\">2<\/div>\r\n            <span class=\"sec-title\">Shipment volume<\/span>\r\n          <\/div>\r\n          <div style=\"display:flex;align-items:center;gap:10px;margin-bottom:10px;\">\r\n            <input id=\"trucks\" type=\"number\" min=\"1\" step=\"1\" value=\"2\" style=\"width:64px;text-align:center;font-size:18px;font-weight:700;\"\/>\r\n            <div>\r\n              <div style=\"font-size:13px;font-weight:600;\">trucks \/ month<\/div>\r\n              <div class=\"field-error\" id=\"trucksErr\">Enter a value above 0.<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"inline-note\">\r\n            <div class=\"lbl\">Based on your inputs<\/div>\r\n            <div style=\"font-size:12px;font-weight:500;color:var(--blue);margin-bottom:2px;\" id=\"trucksBreakdown\">(2 trucks x 64)<\/div>\r\n            <div style=\"font-size:14px;font-weight:700;color:var(--blue);letter-spacing:-.01em;\" id=\"monthlyUnitsText\">128 sleeve packs\/month<\/div>\r\n            <div style=\"font-size:11px;color:var(--muted);font-family:'DM Mono',monospace;margin-top:1px;\" id=\"annualUnitsText\">1,536 per year<\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        \r\n        <div>\r\n          <div class=\"sec-head\" style=\"margin-bottom:12px;\">\r\n            <div class=\"sec-n nb\">2b<\/div>\r\n            <span class=\"sec-title\">Current packaging<\/span>\r\n          <\/div>\r\n          <div style=\"margin-bottom:8px;\">\r\n            <label class=\"field-label\" for=\"packagingType\">Type<\/label>\r\n            <select id=\"packagingType\">\r\n              <option value=\"carton\">Carton + pallet<\/option>\r\n              <option value=\"plywood\">Plywood crate<\/option>\r\n            <\/select>\r\n          <\/div>\r\n          <span id=\"palletWrap\" style=\"display:none;\"><\/span><div id=\"cartonWrap\">\r\n            <div class=\"grid-2\" style=\"gap:6px;\">\r\n              <div>\r\n                <label class=\"field-label\" for=\"cartonCost\">Carton (EUR)<\/label>\r\n                <input id=\"cartonCost\" type=\"number\" min=\"0.01\" step=\"1\" value=\"12\"\/>\r\n                <div class=\"field-error\" id=\"cartonErr\">Enter cost above 0.<\/div>\r\n              <\/div>\r\n              <div>\r\n                <label class=\"field-label\" for=\"palletCost\">Pallet (EUR)<\/label>\r\n                <input id=\"palletCost\" type=\"number\" min=\"0\" step=\"0.5\" value=\"6\"\/>\r\n              <\/div>\r\n            <\/div>\r\n            <p class=\"helper\" style=\"margin-top:5px;\">1208 = \u20ac12 + \u20ac6  \u00b7  1210 = \u20ac14 + \u20ac8<\/p>\r\n          <\/div>\r\n          <div id=\"plywoodWrap\" class=\"hidden\">\r\n            <label class=\"field-label\" for=\"plywoodCost\">Plywood crate (EUR)<\/label>\r\n            <input id=\"plywoodCost\" type=\"number\" min=\"0.01\" step=\"1\" value=\"75\"\/>\r\n            <div class=\"field-error\" id=\"plywoodErr\">Enter cost above 0.<\/div>\r\n            <p class=\"helper\">1208 = \u20ac75  \u00b7  1210 = \u20ac90<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"card\" id=\"returnTransportSection\">\r\n      <div class=\"sec-head\">\r\n        <div class=\"sec-n\">3<\/div>\r\n        <span class=\"sec-title\">Return transport<\/span>\r\n      <\/div>\r\n      <div class=\"grid-2\">\r\n        <div>\r\n          <label class=\"field-label\" for=\"distance\">Return distance (km)<\/label>\r\n          <input id=\"distance\" type=\"number\" min=\"50\" step=\"50\" value=\"800\"\/>\r\n          <div class=\"field-error\" id=\"distanceErr\">Enter a distance above 0.<\/div>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\" for=\"region\">Transport region<\/label>\r\n          <select id=\"region\">\r\n            <option value=\"west\">Western Europe - \u20ac1.40\/km<\/option>\r\n            <option value=\"east\">Eastern Europe - \u20ac1.10\/km<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\" for=\"costPerKm\">Cost per km (EUR)<\/label>\r\n          <input id=\"costPerKm\" type=\"number\" min=\"0.01\" step=\"0.01\" value=\"1.40\"\/>\r\n          <div class=\"field-error\" id=\"kmErr\">Enter a rate above 0.<\/div>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\" for=\"returnTruckCost\">Return truck cost (EUR)<\/label>\r\n          <input id=\"returnTruckCost\" type=\"number\" min=\"1\" step=\"1\" value=\"1120\"\/>\r\n          <div class=\"margin-warn\" id=\"marginWarn\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"card\">\r\n      <div class=\"sec-head\">\r\n        <div class=\"sec-n\">4<\/div>\r\n        <span class=\"sec-title\">Cycle time<\/span>\r\n        <button class=\"calc-btn\" onclick=\"toggleReveal('cycleExplain')\" style=\"margin-left:auto;\">\ud83e\uddee how is this calculated?<\/button>\r\n      <\/div>\r\n      <div class=\"grid-2\">\r\n        <div>\r\n          <label class=\"field-label\" for=\"outboundDays\">Outbound (days)<\/label>\r\n          <input id=\"outboundDays\" type=\"number\" min=\"0\" step=\"1\" value=\"2\"\/>\r\n          <p class=\"helper\">Max 500 km\/day. 800 km = 2 days.<\/p>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\" for=\"dwellDays\">Dwell at customer (days)<\/label>\r\n          <input id=\"dwellDays\" type=\"number\" min=\"0\" step=\"1\" value=\"7\"\/>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\" for=\"inboundDays\">Return transport (days)<\/label>\r\n          <input id=\"inboundDays\" type=\"number\" min=\"0\" step=\"1\" value=\"2\"\/>\r\n        <\/div>\r\n        <div>\r\n          <label class=\"field-label\">Buffer for delays<\/label>\r\n          <div class=\"buffer-options\" role=\"radiogroup\" aria-label=\"Buffer for delays\">\r\n            <label class=\"buffer-option\"><input type=\"radio\" name=\"bufferPreset\" value=\"15\"><span>Lean<br>15%<\/span><\/label>\r\n            <label class=\"buffer-option\"><input type=\"radio\" name=\"bufferPreset\" value=\"25\" checked><span>Standard<br>25%<\/span><\/label>\r\n            <label class=\"buffer-option\"><input type=\"radio\" name=\"bufferPreset\" value=\"35\"><span>Secure<br>35%<\/span><\/label>\r\n            <label class=\"buffer-option\"><input type=\"radio\" name=\"bufferPreset\" value=\"custom\"><span>Custom<\/span><\/label>\r\n          <\/div>\r\n          <input id=\"bufferPercent\" class=\"buffer-custom-input\" type=\"number\" min=\"0\" step=\"1\" value=\"25\"\/>\r\n          <p class=\"helper\">Lean (15%) - stable loop \u00b7 Standard (25%) - typical \u00b7 Secure (35%) - complex flows<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div id=\"cycleExplain\" class=\"reveal-box\" style=\"margin-top:8px;\">\r\n        <span id=\"explainTrucksToFill\" style=\"display:none;\"><\/span><span id=\"explainAccumFormula\" style=\"display:none;\"><\/span><span id=\"explainDwell\" style=\"display:none;\"><\/span><span id=\"explainWaitFormula\" style=\"display:none;\"><\/span><span id=\"svgCollapsedQty\" style=\"display:none;\"><\/span><span id=\"svgRigidQty\" style=\"display:none;\"><\/span><strong>Why the wait is so long:<\/strong><br>\r\n        A return truck only departs when full (<span id=\"explCprt\">400<\/span> collapsed units).<br>\r\n        You send 2 trucks\/month = <span id=\"explUptm\">128<\/span> units\/month arriving at customer.<br>\r\n        Wait for full return truck: ceil(<span id=\"explCprt2\">400<\/span> \/ <span id=\"explUpt\">64<\/span>) = <span id=\"explTTF\">7<\/span> trucks<br>\r\n        Accumulation: <span id=\"explAccum\">7 \/ 2 x 30 = 105 days<\/span><br>\r\n        + last truck dwell: <span id=\"explDwell\">7 days<\/span><br>\r\n        Total customer wait: <span id=\"explWait\">112 days<\/span><br>\r\n        <span style=\"color:#185FA5;\">Tip: more trucks\/month or LTL returns shortens this significantly.<\/span>\r\n      <\/div>\r\n      <div class=\"cycle-box\">\r\n        <div style=\"font-size:14px;font-weight:700;color:var(--blue);letter-spacing:-.01em;\">Cycle time total (in days)<\/div>\r\n        <div class=\"cycle-val\" id=\"cycleBreakdown\">Outbound 2d + wait 112d (accum 105d + dwell 7d) + inbound 2d + buffer 29d = 145 days<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <button class=\"adv-toggle\" onclick=\"toggleAdvanced()\" id=\"advancedBtn\">\r\n      <span>\u2699\ufe0f Advanced option - Sustainability impact<\/span>\r\n      <span id=\"advancedArrow\" style=\"opacity:.6;transition:transform .25s;\">\u25be<\/span>\r\n    <\/button>\r\n    <div class=\"adv-section\" id=\"advancedSection\">\r\n      \r\n      <div class=\"co2-card\">\r\n        <div class=\"toggle-row\">\r\n          <label class=\"toggle-switch\">\r\n            <input type=\"checkbox\" id=\"co2Toggle\"\/>\r\n            <span class=\"toggle-slider\"><\/span>\r\n          <\/label>\r\n          <span style=\"font-size:13px;font-weight:600;color:var(--green-dk);\">\ud83c\udf31 Sustainability impact - packaging waste<\/span>\r\n        <\/div>\r\n        <p class=\"helper\" id=\"co2Hint\">Enable to see how much packaging waste you eliminate each year by switching to reusable sleeve packs.<\/p>\r\n        <div class=\"co2-result\" id=\"co2Section\">\r\n          <input type=\"hidden\" id=\"co2PerTonne\" value=\"0\"\/>\r\n          <span id=\"co2TonneSaved\" style=\"display:none;\"><\/span>\r\n          <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px;align-items:stretch;\">\r\n\r\n            \r\n            <div style=\"background:rgba(255,255,255,.6);border-radius:var(--r-md);padding:8px 10px;border:0.5px solid var(--green-bdr);display:flex;flex-direction:column;justify-content:space-between;\">\r\n              <div style=\"font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;\">Packaging weight<\/div>\r\n              <input id=\"packagingKgPerUnit\" type=\"number\" min=\"0\" step=\"0.5\" value=\"17\" style=\"height:28px;font-size:14px;font-weight:700;text-align:center;font-family:'DM Mono',monospace;border:0.5px solid var(--green-bdr);border-radius:6px;background:#fff;color:var(--green-dk);width:100%;padding:0 6px;\"\/>\r\n              <div style=\"font-size:10px;color:var(--muted);margin-top:4px;line-height:1.3;\" id=\"co2WeightHelper\">1208 Carton<\/div>\r\n            <\/div>\r\n\r\n            \r\n            <div style=\"background:rgba(255,255,255,.6);border-radius:var(--r-md);padding:8px 10px;border:0.5px solid var(--green-bdr);display:flex;flex-direction:column;justify-content:space-between;\">\r\n              <div style=\"font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;\">Waste avoided<br>per year<\/div>\r\n              <div style=\"font-size:24px;font-weight:700;color:var(--green-dk);font-family:'DM Mono',monospace;line-height:1;\" id=\"co2KgTotal\">-<\/div>\r\n              <div style=\"font-size:10px;color:var(--muted);margin-top:4px;\">kg of packaging<\/div>\r\n            <\/div>\r\n\r\n            \r\n            <div style=\"background:rgba(255,255,255,.6);border-radius:var(--r-md);padding:8px 10px;border:0.5px solid var(--green-bdr);display:flex;flex-direction:column;justify-content:space-between;\">\r\n              <div style=\"font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;\">One-way pcs. eliminated<\/div>\r\n              <div style=\"font-size:24px;font-weight:700;color:var(--green-dk);font-family:'DM Mono',monospace;line-height:1;letter-spacing:-.04em;\" id=\"co2UnitsElim\">-<\/div>\r\n              <div style=\"font-size:10px;color:var(--muted);margin-top:4px;\">pieces per year<\/div>\r\n            <\/div>\r\n\r\n            \r\n            <div style=\"background:rgba(255,255,255,.6);border-radius:var(--r-md);padding:8px 10px;border:0.5px solid var(--green-bdr);display:flex;flex-direction:column;justify-content:space-between;\">\r\n              <div style=\"font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;\">Packaging cost avoided<\/div>\r\n              <div style=\"font-size:22px;font-weight:700;color:var(--green-dk);font-family:'DM Mono',monospace;line-height:1;letter-spacing:-.04em;\" id=\"co2EurSaved\">-<\/div>\r\n              <div style=\"font-size:10px;color:var(--muted);margin-top:4px;\">per year<\/div>\r\n            <\/div>\r\n\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n  \r\n  <div class=\"stack\">\r\n\r\n    \r\n    <div class=\"ltl-box\">\r\n      <div style=\"display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:0;\">\r\n        <h4 style=\"margin:0;\"><span class=\"ez-toc-section\" id=\"Advanced_option_-_Add_partial_load_LTL_return_strategy\"><\/span>Advanced option - Add partial load (LTL) return strategy<span class=\"ez-toc-section-end\"><\/span><\/h4>\r\n        <span onclick=\"toggleLtlInfo()\" style=\"width:20px;height:20px;border-radius:50%;background:#fff;color:#185FA5;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;font-style:italic;flex-shrink:0;cursor:pointer;border:none;font-family:'DM Sans',sans-serif;line-height:1;\" title=\"Click for more info\">i<\/span>\r\n      <\/div>\r\n      <div id=\"ltlInfoText\" style=\"display:none;margin-top:8px;margin-bottom:12px;\">\r\n        <p style=\"margin:0;\">Compare full-truck returns (FTL) with partial loads (LTL). A smaller pool, lower upfront investment - but higher transport cost per year.<\/p>\r\n      <\/div>\r\n      <div style=\"margin-top:12px;\"><\/div>\r\n      <button class=\"ltl-toggle-btn\" id=\"ltlToggleBtn\" onclick=\"toggleLtl()\">\r\n        + Add partial load (LTL) comparison\r\n      <\/button>\r\n      <div class=\"ltl-config\" id=\"ltlPanel\">\r\n        <div class=\"ltl-config-grid\">\r\n          <div>\r\n            <label for=\"ltlTier\">Return load size<\/label>\r\n            <select id=\"ltlTier\"><option value=\"0\">- select tier -<\/option><\/select>\r\n            <p class=\"helper-white\" id=\"ltlTierHelper\">Full pallet stacks only.<\/p>\r\n          <\/div>\r\n          <div>\r\n            <label id=\"ltlCostLabel\">LTL truck cost (EUR)<\/label>\r\n            <div class=\"ltl-stepper\">\r\n              <button onclick=\"stepLtlCost(-50)\" type=\"button\">-<\/button>\r\n              <input type=\"number\" id=\"ltlTruckCost\" value=\"0\" step=\"50\" min=\"50\"\/>\r\n              <button onclick=\"stepLtlCost(+50)\" type=\"button\">+<\/button>\r\n            <\/div>\r\n            <p class=\"helper-white\" id=\"ltlCostHelper\">ZAMKO benchmark. Adjust freely.<\/p>\r\n          <\/div>\r\n          <div id=\"ltlTripNote\" style=\"display:none;grid-column:1\/-1;margin-top:0;padding:7px 9px;background:rgba(255,255,255,.1);border-radius:6px;border:0.5px solid rgba(255,255,255,.2);grid-template-columns:minmax(0,1.35fr) minmax(150px,.85fr);gap:10px;align-items:center;width:100%;\">\r\n            <div style=\"font-size:11px;color:rgba(255,255,255,.9);line-height:1.45;\" id=\"ltlTripNoteText\"><\/div>\r\n            <div style=\"font-size:9.5px;color:rgba(255,255,255,.62);font-style:italic;line-height:1.35;border-left:0.5px solid rgba(255,255,255,.22);padding-left:9px;\">\u26a0\ufe0f Extra administrative workload from additional return trips is not included.<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"econ-warn\" id=\"economicsWarning\"><\/div>\r\n    <div class=\"ftl-warning\" id=\"ftlVolumeWarning\"><\/div>\r\n\r\n    \r\n    <div class=\"kpi-3row\" id=\"kpiSection\">\r\n\r\n      \r\n      <div class=\"kpi-row\">\r\n        <div class=\"kpi-card acc-blue\" id=\"cardFtlPayback\">\r\n          <span class=\"kpi-mode-badge ftl\" id=\"r1LeftBadge\" style=\"display:none;\">FTL<\/span>\r\n          <p class=\"kpi-label\">Payback period<\/p>\r\n          <p class=\"kpi-value blue\" id=\"paybackValue\">-<\/p>\r\n          <p class=\"kpi-meta\" id=\"paybackMeta\">investment \/ savings x 12<\/p><div class=\"ltl-mini\" id=\"ltlMiniPayback\"><div class=\"ltl-mini-title\">LTL comparison<\/div><div class=\"ltl-mini-grid\" id=\"ltlMiniPaybackGrid\"><\/div><\/div>\r\n        <\/div>\r\n        <div class=\"kpi-card acc-blue\" id=\"cardFtlSavings\">\r\n          <span class=\"kpi-mode-badge ftl\" id=\"r1RightBadge\" style=\"display:none;\">FTL<\/span>\r\n          <p class=\"kpi-label\">Annual savings<\/p>\r\n          <p class=\"kpi-value blue\" id=\"savingsValue\">\u20ac -<\/p>\r\n          <p class=\"kpi-meta\" id=\"savingsMeta\">vs one-way packaging\/year<\/p><div class=\"ltl-mini\" id=\"ltlMiniSavings\"><div class=\"ltl-mini-title\">LTL comparison<\/div><div class=\"ltl-mini-grid\" id=\"ltlMiniSavingsGrid\"><\/div><\/div>\r\n          <button class=\"kpi-info-btn\" onclick=\"toggleKpiInsight('ftlSavingsInsight')\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"flex-shrink:0;display:block;\"><circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"#123a8f\"\/><circle cx=\"7\" cy=\"4\" r=\"1.3\" fill=\"#fff\"\/><rect x=\"5.8\" y=\"6.2\" width=\"2.4\" height=\"5.2\" rx=\"1\" fill=\"#fff\"\/><\/svg> extra info<\/button>\r\n          <p class=\"kpi-insight blue\" id=\"ftlSavingsInsight\"><\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      \r\n      <div class=\"kpi-row kpi-row-ltl\" id=\"kpiRowLtl\">\r\n        <div class=\"kpi-card acc-ltl\" id=\"cardLtlPayback\">\r\n          <span class=\"kpi-mode-badge ltl\">LTL<\/span>\r\n          <p class=\"kpi-label\">Payback period<\/p>\r\n          <p class=\"kpi-value orange\" id=\"ltlPaybackValue\">-<\/p>\r\n          <p class=\"kpi-meta\" id=\"ltlPaybackMeta\">LTL investment \/ LTL savings x 12<\/p>\r\n        <\/div>\r\n        <div class=\"kpi-card acc-ltl\" id=\"cardLtlSavings\">\r\n          <span class=\"kpi-mode-badge ltl\">LTL<\/span>\r\n          <p class=\"kpi-label\">Annual savings<\/p>\r\n          <p class=\"kpi-value orange\" id=\"ltlSavingsValue\">\u20ac -<\/p>\r\n          <p class=\"kpi-meta\" id=\"ltlSavingsMeta\">vs one-way packaging\/year<\/p>\r\n          <button class=\"kpi-info-btn\" onclick=\"toggleKpiInsight('ltlRetCostInsight')\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"flex-shrink:0;display:block;\"><circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"#123a8f\"\/><circle cx=\"7\" cy=\"4\" r=\"1.3\" fill=\"#fff\"\/><rect x=\"5.8\" y=\"6.2\" width=\"2.4\" height=\"5.2\" rx=\"1\" fill=\"#fff\"\/><\/svg> extra info<\/button>\r\n          <p class=\"kpi-insight orange\" id=\"ltlRetCostInsight\"><\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      \r\n      <div class=\"kpi-row\">\r\n        <div class=\"kpi-card\" style=\"overflow:visible;margin-top:10px;border:0.5px solid var(--red-bdr);border-left:2px solid var(--red);background:var(--red-lt);\">\r\n          <span class=\"kpi-winner-badge\" id=\"investWinnerBadge\"><\/span>\r\n          <p class=\"kpi-label\" id=\"investLabel\">Required investment<\/p>\r\n          <p class=\"kpi-value\" style=\"color:var(--red);\" id=\"investmentValue\">\u20ac -<\/p>\r\n          <p class=\"kpi-meta\" id=\"investmentMeta\">price x pool size<\/p><div class=\"ltl-mini\" id=\"ltlMiniInvestment\"><div class=\"ltl-mini-title\">LTL comparison<\/div><div class=\"ltl-mini-grid\" id=\"ltlMiniInvestmentGrid\"><\/div><\/div>\r\n          <div id=\"investExplain\" class=\"reveal-box\" style=\"font-size:10px;display:none;\"><\/div>\r\n          <button class=\"kpi-info-btn\" onclick=\"toggleKpiInsight('investInsight')\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"flex-shrink:0;display:block;\"><circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"#123a8f\"\/><circle cx=\"7\" cy=\"4\" r=\"1.3\" fill=\"#fff\"\/><rect x=\"5.8\" y=\"6.2\" width=\"2.4\" height=\"5.2\" rx=\"1\" fill=\"#fff\"\/><\/svg> extra info<\/button>\r\n          <p class=\"kpi-insight\" id=\"investInsight\" style=\"background:rgba(192,57,43,.07);color:var(--red);\"><\/p>\r\n        <\/div>\r\n        <div class=\"kpi-card acc-blue\" style=\"overflow:visible;margin-top:10px;\">\r\n          <span class=\"kpi-winner-badge\" id=\"fiveYearWinnerBadge\"><\/span>\r\n          <p class=\"kpi-label\" id=\"fiveYearLabel\">5-year total savings<\/p>\r\n          <p class=\"kpi-value blue\" id=\"fiveYearValue\">\u20ac -<\/p>\r\n          <p class=\"kpi-meta\" id=\"fiveYearMeta\">FTL baseline \u00b7 5 \u00d7 annual savings \u2212 pool investment<\/p><div class=\"ltl-mini\" id=\"ltlMiniFiveYear\"><div class=\"ltl-mini-title\">LTL comparison<\/div><div class=\"ltl-mini-grid\" id=\"ltlMiniFiveYearGrid\"><\/div><\/div><div class=\"ltl-cost-note\" id=\"ltlFiveYearCostNote\">LTL savings already include higher cost of return transport<\/div>\r\n          <button class=\"kpi-info-btn\" onclick=\"toggleKpiInsight('fiveYearInsight')\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"flex-shrink:0;display:block;\"><circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"#123a8f\"\/><circle cx=\"7\" cy=\"4\" r=\"1.3\" fill=\"#fff\"\/><rect x=\"5.8\" y=\"6.2\" width=\"2.4\" height=\"5.2\" rx=\"1\" fill=\"#fff\"\/><\/svg> extra info<\/button>\r\n          <p class=\"kpi-insight blue\" id=\"fiveYearInsight\"><\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"verdict-box\" id=\"verdictPanel\">\r\n      <div style=\"display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;\">\r\n        <div style=\"font-size:26px;font-weight:700;font-family:'DM Mono',monospace;color:inherit;letter-spacing:-.02em;\">Conclusion<\/div>\r\n        <div class=\"verdict-badge\" id=\"verdictBadge\" style=\"margin-bottom:0;\">Compare<\/div>\r\n      <\/div>\r\n      <h4 id=\"verdictTitle\" style=\"margin-bottom:10px;\"><span class=\"ez-toc-section\" id=\"Add_LTL_to_compare\"><\/span>Add LTL to compare<span class=\"ez-toc-section-end\"><\/span><\/h4>\r\n      \r\n      <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;\">\r\n        <div style=\"background:rgba(0,0,0,.04);border-radius:var(--r-md);padding:8px 10px;\">\r\n          <div style=\"font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.6;margin-bottom:4px;\">Capital required<\/div>\r\n          <div style=\"display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;\">\r\n            <span style=\"font-size:13px;font-weight:700;font-family:'DM Mono',monospace;\" id=\"verdictFtlInvest\">-<\/span>\r\n            <span style=\"font-size:10px;opacity:.6;\">FTL<\/span>\r\n          <\/div>\r\n          <div style=\"display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-top:3px;\">\r\n            <span style=\"font-size:13px;font-weight:700;font-family:'DM Mono',monospace;\" id=\"verdictLtlInvest\">-<\/span>\r\n            <span style=\"font-size:10px;opacity:.6;\">LTL \u00b7 <strong id=\"verdictInvSaving\">-<\/strong> less<\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"background:rgba(0,0,0,.04);border-radius:var(--r-md);padding:8px 10px;\">\r\n          <div style=\"font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.6;margin-bottom:4px;\">Payback period<\/div>\r\n          <div style=\"display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;\">\r\n            <span style=\"font-size:13px;font-weight:700;font-family:'DM Mono',monospace;\" id=\"verdictFtlPayback\">-<\/span>\r\n            <span style=\"font-size:10px;opacity:.6;\">FTL<\/span>\r\n          <\/div>\r\n          <div style=\"display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-top:3px;\">\r\n            <span style=\"font-size:13px;font-weight:700;font-family:'DM Mono',monospace;\" id=\"verdictLtlPayback\">-<\/span>\r\n            <span style=\"font-size:10px;opacity:.6;\">LTL \u00b7 <strong id=\"verdictPaybackDiff\">-<\/strong> faster<\/span>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      \r\n      <div style=\"background:rgba(0,0,0,.04);border-radius:var(--r-md);padding:8px 10px;margin-bottom:8px;\">\r\n        <div style=\"font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.6;margin-bottom:6px;\">Net return after costs (savings minus investment)<\/div>\r\n        <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;text-align:center;\">\r\n          <div>\r\n            <div style=\"font-size:9px;opacity:.6;margin-bottom:2px;\">After 3 years<\/div>\r\n            <div style=\"font-size:11px;font-weight:700;font-family:'DM Mono',monospace;\" id=\"verdict3yrFtl\">-<\/div>\r\n            <div style=\"font-size:9px;opacity:.5;\">FTL<\/div>\r\n            <div style=\"font-size:11px;font-weight:700;font-family:'DM Mono',monospace;margin-top:4px;\" id=\"verdict3yrLtl\">-<\/div>\r\n            <div style=\"font-size:9px;opacity:.5;\">LTL<\/div>\r\n          <\/div>\r\n          <div>\r\n            <div style=\"font-size:9px;opacity:.6;margin-bottom:2px;\">After 5 years<\/div>\r\n            <div style=\"font-size:11px;font-weight:700;font-family:'DM Mono',monospace;\" id=\"verdict5yrFtl\">-<\/div>\r\n            <div style=\"font-size:9px;opacity:.5;\">FTL<\/div>\r\n            <div style=\"font-size:11px;font-weight:700;font-family:'DM Mono',monospace;margin-top:4px;\" id=\"verdict5yrLtl\">-<\/div>\r\n            <div style=\"font-size:9px;opacity:.5;\">LTL<\/div>\r\n          <\/div>\r\n          <div>\r\n            <div style=\"font-size:9px;opacity:.6;margin-bottom:2px;\">5-yr difference<\/div>\r\n            <div style=\"font-size:13px;font-weight:800;font-family:'DM Mono',monospace;\" id=\"verdict5yrDiff\">-<\/div>\r\n            <div style=\"font-size:9px;opacity:.5;margin-top:2px;\" id=\"verdict5yrWinner\">-<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n      \r\n      <span id=\"verdictExtraCost\" style=\"display:none;\"><\/span>\r\n      <span id=\"verdictBreakEven\" style=\"display:none;\"><\/span>\r\n      <p class=\"verdict-text\" id=\"verdictConclusion\"><\/p>\r\n      <div class=\"verdict-facts\" id=\"verdictFacts\"><\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"collapse-card\">\r\n      <div style=\"display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;\" onclick=\"toggleCollapse()\" id=\"collapseToggleRow\">\r\n        <div style=\"display:flex;align-items:center;gap:4px;flex-wrap:nowrap;\">\r\n          <h4 style=\"margin:0;white-space:nowrap;\"><span class=\"ez-toc-section\" id=\"The_collapsibility_advantage\"><\/span>The collapsibility advantage<span class=\"ez-toc-section-end\"><\/span><\/h4>\r\n          <span style=\"font-size:13px;color:var(--muted2);font-weight:400;white-space:nowrap;\">- vs rigid<\/span>\r\n        <\/div>\r\n        <div style=\"display:flex;align-items:center;gap:6px;flex-shrink:0;\">\r\n          <span style=\"font-size:12px;color:var(--muted2);\" id=\"collapseArrow\">\u25be<\/span>\r\n          <span class=\"i-icon\" style=\"width:18px;height:18px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex-shrink:0;cursor:pointer;\">i<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div id=\"collapseBody\" style=\"display:none;margin-top:10px;\">\r\n        <div style=\"display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px;margin-bottom:8px;\">\r\n          <span style=\"font-size:11px;color:var(--muted2);\">Same truck. <strong style=\"color:var(--orange-dk);\" id=\"calloutRatioDisplay\">6.3\u00d7<\/strong> more units per return trip.<\/span>\r\n        <\/div>\r\n\r\n      <svg viewBox=\"0 0 420 80\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:100%;height:auto;display:block;margin-bottom:8px;\">\r\n        \r\n        <rect x=\"2\" y=\"28\" width=\"28\" height=\"36\" rx=\"3\" fill=\"#c7d9f7\"\/>\r\n        <rect x=\"5\" y=\"31\" width=\"18\" height=\"12\" rx=\"2\" fill=\"#a8c8f5\"\/>\r\n        <rect x=\"30\" y=\"20\" width=\"170\" height=\"44\" rx=\"3\" fill=\"#dce8fb\" stroke=\"#a8c8f5\" stroke-width=\"1\"\/>\r\n        <circle cx=\"14\" cy=\"67\" r=\"6\" fill=\"#c7d9f7\" stroke=\"#7baee8\" stroke-width=\"1.5\"\/>\r\n        <circle cx=\"115\" cy=\"67\" r=\"6\" fill=\"#c7d9f7\" stroke=\"#7baee8\" stroke-width=\"1.5\"\/>\r\n        <circle cx=\"138\" cy=\"67\" r=\"6\" fill=\"#c7d9f7\" stroke=\"#7baee8\" stroke-width=\"1.5\"\/>\r\n        \r\n        <rect x=\"33\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"33\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"33\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"33\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"33\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"33\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"33\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"33\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"33\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"33\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"44\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"44\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"44\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"44\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"44\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"44\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"44\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"44\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"44\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"44\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"55\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"55\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"55\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"55\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"55\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"55\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"55\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"55\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"55\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"55\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"66\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"66\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"66\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"66\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"66\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"66\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"66\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"66\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"66\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"66\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"77\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"77\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"77\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"77\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"77\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"77\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"77\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"77\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"77\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"77\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"88\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"88\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"88\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"88\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"88\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"88\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"88\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"88\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"88\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"88\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"99\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"99\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"99\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"99\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"99\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"99\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"99\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"99\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"99\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"99\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"110\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"110\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"110\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"110\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"110\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"110\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"110\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"110\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"110\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"110\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"121\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"121\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"121\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"121\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"121\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"121\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"121\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"121\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"121\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"121\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"132\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"132\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"132\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"132\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"132\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"132\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"132\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"132\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"132\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"132\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"143\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"143\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"143\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"143\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"143\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"143\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"143\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"143\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"143\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"143\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"154\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"154\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"154\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"154\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"154\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"154\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"154\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"154\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"154\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"154\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"165\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"165\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"165\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"165\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"165\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"165\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"165\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"165\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"165\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"165\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"176\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"176\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"176\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"176\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"176\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"176\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"176\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"176\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"176\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"176\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        <rect x=\"187\" y=\"22\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"187\" y=\"26\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"187\" y=\"30\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"187\" y=\"34\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"187\" y=\"38\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"187\" y=\"42\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"187\" y=\"46\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"187\" y=\"50\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/><rect x=\"187\" y=\"54\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#1e4fb8\"\/><rect x=\"187\" y=\"58\" width=\"10\" height=\"3\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n        \r\n        <text x=\"105\" y=\"75\" fill=\"#123a8f\" font-size=\"9\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Arial\"><tspan id=\"svgCollapsedQty2\">400<\/tspan> collapsed - 1 truck<\/text>\r\n        \r\n        <text x=\"213\" y=\"44\" fill=\"#8a93a0\" font-size=\"11\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Arial\">VS<\/text>\r\n        <line x1=\"213\" y1=\"20\" x2=\"213\" y2=\"64\" stroke=\"#dbe3ef\" stroke-width=\"1\" stroke-dasharray=\"3,3\"\/>\r\n        \r\n        <rect x=\"219\" y=\"28\" width=\"28\" height=\"36\" rx=\"3\" fill=\"#c7d9f7\"\/>\r\n        <rect x=\"222\" y=\"31\" width=\"18\" height=\"12\" rx=\"2\" fill=\"#a8c8f5\"\/>\r\n        <rect x=\"247\" y=\"20\" width=\"168\" height=\"44\" rx=\"3\" fill=\"#dce8fb\" stroke=\"#a8c8f5\" stroke-width=\"1\"\/>\r\n        <circle cx=\"231\" cy=\"67\" r=\"6\" fill=\"#c7d9f7\" stroke=\"#7baee8\" stroke-width=\"1.5\"\/>\r\n        <circle cx=\"332\" cy=\"67\" r=\"6\" fill=\"#c7d9f7\" stroke=\"#7baee8\" stroke-width=\"1.5\"\/>\r\n        <circle cx=\"355\" cy=\"67\" r=\"6\" fill=\"#c7d9f7\" stroke=\"#7baee8\" stroke-width=\"1.5\"\/>\r\n        \r\n        <rect x=\"247\" y=\"20\" width=\"168\" height=\"15\" fill=\"#f58220\" fill-opacity=\"0.08\"\/>\r\n        <text x=\"331\" y=\"29\" fill=\"#f58220\" font-size=\"7\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Arial\">EMPTY SPACE<\/text>\r\n        <line x1=\"252\" y1=\"20\" x2=\"412\" y2=\"35\" stroke=\"#f58220\" stroke-width=\"1\" stroke-opacity=\"0.35\"\/>\r\n        <line x1=\"412\" y1=\"20\" x2=\"252\" y2=\"35\" stroke=\"#f58220\" stroke-width=\"1\" stroke-opacity=\"0.35\"\/>\r\n          <rect x=\"249\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"249\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"249\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"259\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"259\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"259\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"269\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"269\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"269\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"279\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"279\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"279\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"289\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"289\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"289\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"299\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"299\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"299\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"309\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"309\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"309\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"319\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"319\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"319\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"329\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"329\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"329\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"339\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"339\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"339\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"349\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"349\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"349\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"359\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"359\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"359\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"369\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"369\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"369\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"379\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"379\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"379\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"389\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"389\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"389\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n          <rect x=\"399\" y=\"36\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#1e4fb8\"\/>\r\n          <rect x=\"399\" y=\"49\" width=\"9\" height=\"12\" rx=\"0.5\" fill=\"#2563c8\"\/>\r\n          <rect x=\"399\" y=\"61\" width=\"9\" height=\"2\" rx=\"0\" fill=\"#7baee8\"\/>\r\n        \r\n        <text x=\"322\" y=\"75\" fill=\"#8a93a0\" font-size=\"9\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Arial\"><tspan id=\"svgRigidQty2\">64<\/tspan> rigid boxes - same truck<\/text>\r\n      <\/svg>\r\n\r\n      \r\n      <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;margin-bottom:6px;\">\r\n        <div style=\"text-align:center;background:#fff;border-radius:var(--r-md);padding:6px;border:0.5px solid var(--blue-bdr);\">\r\n          <div style=\"font-size:10px;color:var(--muted2);margin-bottom:2px;\">Collapsed \/ truck<\/div>\r\n          <div style=\"font-weight:700;color:var(--blue);font-family:'DM Mono',monospace;\" id=\"calloutCollapsedQty\">400<\/div>\r\n        <\/div>\r\n        <div style=\"text-align:center;background:#fff;border-radius:var(--r-md);padding:6px;border:0.5px solid var(--blue-bdr);\">\r\n          <div style=\"font-size:10px;color:var(--muted2);margin-bottom:2px;\">Return cost \/ unit<\/div>\r\n          <div style=\"font-weight:700;color:var(--blue);font-family:'DM Mono',monospace;\" id=\"calloutReturnPerUnit\">-<\/div>\r\n        <\/div>\r\n        <div style=\"text-align:center;background:#fff7ed;border-radius:var(--r-md);padding:6px;border:0.5px solid #FAC775;\">\r\n          <div style=\"font-size:10px;color:var(--muted2);margin-bottom:2px;\">Rigid cost \/ unit<\/div>\r\n          <div style=\"font-weight:700;color:var(--orange-dk);font-family:'DM Mono',monospace;\" id=\"calloutRigidComparison\">-<\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div style=\"background:#fff;border:0.5px solid var(--green-bdr);border-radius:var(--r-md);padding:6px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;\">\r\n        <span style=\"font-size:12px;color:var(--blue);\">Same truck. <strong style=\"color:var(--orange-dk);\" id=\"calloutRatioDisplay2\">6.3\u00d7<\/strong> more units per return trip.<\/span>\r\n        <span style=\"font-size:13px;font-weight:700;color:var(--green);font-family:'DM Mono',monospace;\" id=\"calloutSavingPerUnit\">-<\/span>\r\n      <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div id=\"warningBox\" class=\"margin-warn\"><\/div>\r\n\r\n    \r\n    <a href=\"https:\/\/zamko.eu\/sleeve-pack-systems\/\" target=\"_blank\"\r\n       style=\"display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--white);border:0.5px solid var(--blue-bdr);border-radius:var(--r-lg);padding:12px 14px;text-decoration:none;box-shadow:var(--shadow);transition:background .15s;\">\r\n      <div>\r\n        <p style=\"font-size:12px;font-weight:700;color:var(--blue);margin-bottom:1px;\">\ud83d\udcd6 Sleeve Packs: The Complete Guide<\/p>\r\n        <p style=\"font-size:11px;color:var(--muted);\">Everything you need to know before deciding - specifications, use cases, pool management.<\/p>\r\n      <\/div>\r\n      <span style=\"font-size:18px;color:var(--blue-bdr);flex-shrink:0;\">\u2192<\/span>\r\n    <\/a>\r\n\r\n    \r\n    <div class=\"report-card\">\r\n      <div class=\"report-title\">Export your ROI estimate<\/div>\r\n      <div class=\"report-sub\">Download a clean PDF summary with the current inputs, FTL ROI result and \u2014 when opened \u2014 the LTL comparison results. No email or form needed.<\/div>\r\n      <div class=\"report-actions\">\r\n        <button class=\"report-btn primary\" type=\"button\" onclick=\"generatePDF()\">Download PDF report \u2192<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"cta-block\">\r\n      <p class=\"cta-eyebrow\">Want to move forward?<\/p>\r\n      <h3 class=\"cta-title\"><span class=\"ez-toc-section\" id=\"Talk_to_a_ZAMKO_specialist_about_your_results\"><\/span>Talk to a ZAMKO specialist about your results<span class=\"ez-toc-section-end\"><\/span><\/h3>\r\n      <p class=\"cta-sub\">We validate your calculation and arrange a no-obligation quote - typically within 24 hours.<\/p>\r\n      <a href=\"https:\/\/zamko.eu\/contact-us\/\" class=\"cta-primary\" id=\"ctaQuote\" style=\"display:block;text-decoration:none;\">Request your personalised ROI calculation \u2192<\/a>\r\n      <div class=\"cta-sec-row\">\r\n        <a href=\"https:\/\/zamko.eu\/product-category\/plastic\/sleeve-pack\/\" class=\"cta-sec\" id=\"ctaSleeve\">View all sleeve packs<\/a>\r\n        <a href=\"https:\/\/zamko.eu\/product\/plastic-sleeve-pack\/\" class=\"cta-sec\" id=\"ctaConfig\">Configurator<\/a>\r\n      <\/div>\r\n      <p class=\"cta-disclaimer\"><strong>DISCLAIMER:<\/strong> This calculation is an estimate only. Assumptions should be validated with your ZAMKO contact before purchasing.<\/p>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"summary-outer\">\r\n  <div class=\"summary-strip\">\r\n    <div class=\"s-col\"><p class=\"s-col-title\">Volume<\/p>\r\n      <div class=\"s-item\"><div class=\"sk\">Monthly shipments<\/div><div class=\"sv\" id=\"sMonthly\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">Annual shipments<\/div><div class=\"sv\" id=\"sAnnual\">-<\/div><\/div>\r\n    <\/div>\r\n    <div class=\"s-col\"><p class=\"s-col-title\">Pool &amp; cycle<\/p>\r\n      <div class=\"s-item\"><div class=\"sk\">Total cycle time<\/div><div class=\"sv\" id=\"sCycle\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">Required pool (FTL)<\/div><div class=\"sv\" id=\"sPool\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">One-time investment<\/div><div class=\"sv\" id=\"sInvestment\">-<\/div><\/div>\r\n    <\/div>\r\n    <div class=\"s-col\"><p class=\"s-col-title\">Annual costs<\/p>\r\n      <div class=\"s-item\"><div class=\"sk\">One-way cost\/year<\/div><div class=\"sv\" id=\"sOneWay\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">FTL return cost\/year<\/div><div class=\"sv\" id=\"sReturn\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">Return cost per unit<\/div><div class=\"sv\" id=\"sReturnPerUnit\">-<\/div><\/div>\r\n    <\/div>\r\n    <div class=\"s-col\"><p class=\"s-col-title\">Results<\/p>\r\n      <div class=\"s-item\"><div class=\"sk\">Annual savings (FTL)<\/div><div class=\"sv\" id=\"sSavings\" style=\"color:var(--green);\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">Payback period (FTL)<\/div><div class=\"sv\" id=\"sPayback\" style=\"color:var(--orange-dk);\">-<\/div><\/div>\r\n      <div class=\"s-item\"><div class=\"sk\">5-year total savings<\/div><div class=\"sv\" id=\"sFiveYear\" style=\"color:var(--green);font-weight:800;\">-<\/div><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"formula-outer\">\r\n  <button class=\"formula-toggle\" onclick=\"toggleFormulas()\">\r\n    <span>\ud83e\uddee How is this calculated? Show formulas<\/span>\r\n    <span id=\"formulaArrow\" style=\"opacity:.5;transition:transform .25s;\">\u25be<\/span>\r\n  <\/button>\r\n  <div class=\"formula-body\" id=\"formulaSection\">\r\n    <div class=\"formula-grid\">\r\n      <div class=\"f-box\"><p class=\"f-title\">1. Annual volume<\/p><p class=\"f-text\" id=\"fAnVol\">trucks\/month x units\/truck x 12<\/p><\/div>\r\n      <div class=\"f-box\"><p class=\"f-title\">2. Cycle time<\/p><p class=\"f-text\">outbound + wait + inbound + buffer<br><span style=\"font-size:10px;color:var(--muted);\">Wait = accum time for full return truck + dwell<\/span><\/p><\/div>\r\n      <div class=\"f-box\"><p class=\"f-title\">3. Required pool<\/p><p class=\"f-text\">(annual vol \/ 365) x cycle days<br>rounded up to full truck multiple<\/p><\/div>\r\n      <div class=\"f-box\"><p class=\"f-title\">4. Investment<\/p><p class=\"f-text\" id=\"fInvest\">pool size x unit price<\/p><\/div>\r\n      <div class=\"f-box\"><p class=\"f-title\">5. Annual savings<\/p><p class=\"f-text\">(one-way cost - return cost\/unit) x annual volume<\/p><\/div>\r\n      <div class=\"f-box\"><p class=\"f-title\">6. Payback<\/p><p class=\"f-text\">investment \/ annual savings x 12 months<\/p><\/div>\r\n    <\/div>\r\n    <div style=\"border-top:0.5px solid var(--bdr);padding-top:12px;\">\r\n      <p style=\"font-size:12px;font-weight:700;color:var(--blue);margin-bottom:10px;\">Your numbers - live<\/p>\r\n      <div class=\"live-grid\">\r\n        <div class=\"live-box\"><p class=\"live-lbl\">Annual volume<\/p><p class=\"live-val\" id=\"lfVol\">-<\/p><\/div>\r\n        <div class=\"live-box\"><p class=\"live-lbl\">Pool calculation<\/p><p class=\"live-val\" id=\"lfPool\">-<\/p><\/div>\r\n        <div class=\"live-box\"><p class=\"live-lbl\">Investment<\/p><p class=\"live-val\" id=\"lfInvest\">-<\/p><\/div>\r\n        <div class=\"live-box\"><p class=\"live-lbl\">Annual savings<\/p><p class=\"live-val\" id=\"lfSavings\">-<\/p><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<span id=\"stickyPayback\" style=\"display:none;\"><\/span>\r\n<span id=\"stickySavings\" style=\"display:none;\"><\/span>\r\n<span id=\"stickyCta\" style=\"display:none;\"><\/span>\r\n\r\n<script>\r\n\r\n    const presets = {\r\n    \"1208\": { price: 90,  unitsPerTruck: 64, collapsedPerTruck: 400, plywoodCost: 75,  palletPlaces: 32,\r\n              cartonCost: 12, palletCost: 6, cartonKg: 17, plywoodKg: 25,\r\n              ltlTiers: [\r\n                { stacks: 8,  label: \"8 stacks (~25% load, 100 units)\", costPct: 0.60 },\r\n                { stacks: 11, label: \"11 stacks (~34% load, 138 units)\", costPct: 0.70 },\r\n                { stacks: 16, label: \"16 stacks (~50% load, 200 units)\", costPct: 0.90 }\r\n              ]},\r\n    \"1210\": { price: 100, unitsPerTruck: 52, collapsedPerTruck: 320, plywoodCost: 90, palletPlaces: 26,\r\n              cartonCost: 14, palletCost: 8, cartonKg: 20.5, plywoodKg: 30,\r\n              ltlTiers: [\r\n                { stacks: 6,  label: \"6 stacks (~23% load, 74 units)\",  costPct: 0.60 },\r\n                { stacks: 9,  label: \"9 stacks (~35% load, 111 units)\", costPct: 0.70 },\r\n                { stacks: 13, label: \"13 stacks (~50% load, 160 units)\", costPct: 0.90 }\r\n              ]}\r\n  };\r\n  const regionRates = { west: 1.40, east: 1.10 };\r\n\r\n  const el = id => document.getElementById(id);\r\n  function num(v) { const n = parseFloat(v); return Number.isFinite(n) ? n : 0; }\r\n  function fmtInt(n) { return Math.round(n).toLocaleString(\"nl-NL\"); }\r\n  function fmt1(n) { return n.toLocaleString(\"nl-NL\", { minimumFractionDigits:1, maximumFractionDigits:1 }); }\r\n  function fmt2(n) { return n.toLocaleString(\"nl-NL\", { minimumFractionDigits:2, maximumFractionDigits:2 }); }\r\n  function eur(n)  { return \"\u20ac \" + Math.round(n).toLocaleString(\"nl-NL\") + \",-\"; }\r\n  function eurMini(n) { return Math.round(n).toLocaleString(\"nl-NL\") + \",-\"; }\r\n  function eur2(n) { return \"\u20ac \" + n.toLocaleString(\"nl-NL\", { minimumFractionDigits:2, maximumFractionDigits:2 }); }\r\n  function validateField(inputEl, errId, condition) {\r\n    const bad = !condition(num(inputEl.value));\r\n    inputEl.classList.toggle(\"input-error\", bad);\r\n    const errEl = el(errId);\r\n    if (errEl) errEl.classList.toggle(\"show\", bad);\r\n    return !bad;\r\n  }\r\n\r\n  function validateAll() {\r\n    let ok = true;\r\n    ok &= validateField(el(\"price\"), \"priceErr\", v => v > 0);\r\n    ok &= validateField(el(\"trucks\"), \"trucksErr\", v => v > 0);\r\n    ok &= validateField(el(\"distance\"), \"distanceErr\", v => v > 0);\r\n    ok &= validateField(el(\"costPerKm\"), \"kmErr\", v => v > 0);\r\n    if (el(\"packagingType\").value === \"carton\") {\r\n      ok &= validateField(el(\"cartonCost\"), \"cartonErr\", v => v > 0);\r\n    } else {\r\n      ok &= validateField(el(\"plywoodCost\"), \"plywoodErr\", v => v > 0);\r\n    }\r\n    return !!ok;\r\n  }\r\n  function applySizePreset() {\r\n    const size   = el(\"size\").value;\r\n    const preset = presets[size];\r\n    el(\"price\").value       = preset.price;\r\n    el(\"plywoodCost\").value = preset.plywoodCost;\r\n    el(\"cartonCost\").value  = preset.cartonCost;\r\n    el(\"palletCost\").value  = preset.palletCost;\r\n    const badge = document.getElementById(\"sizeBadge\");\r\n    if (badge) badge.textContent = size === \"1208\" ? \"1208 \u00b7 1200\u00d7800 mm\" : \"1210 \u00b7 1200\u00d71000 mm\";\r\n    const pLink = document.getElementById(\"productLink\");\r\n    if (pLink) {\r\n      pLink.href = size === \"1208\"\r\n        ? \"https:\/\/zamko.eu\/product\/sleevepack-1200x800-p1208-900-300\/\"\r\n        : \"https:\/\/zamko.eu\/product\/ecopack-sleeve-pack-1200x1000-pg1210-900\/\";\r\n      pLink.textContent = \"View sleeve pack products \u2192\";\r\n    }\r\n    const packType = el(\"packagingType\").value;\r\n    const co2Inp   = el(\"packagingKgPerUnit\");\r\n    const co2Help  = document.getElementById(\"co2WeightHelper\");\r\n    if (co2Inp) co2Inp.value = (packType === \"carton\") ? preset.cartonKg : preset.plywoodKg;\r\n    if (co2Help) {\r\n      const packType2 = el(\"packagingType\").value;\r\n      const labels = {\r\n        \"1208\": { \"carton\": \"1208 Carton\", \"plywood\": \"1208 Plywood\" },\r\n        \"1210\": { \"carton\": \"1210 Carton\", \"plywood\": \"1210 Plywood\" }\r\n      };\r\n      co2Help.textContent = labels[size][packType2] || (size + \" Carton\");\r\n    }\r\n    updateDerivedTransportDays();\r\n    if (el(\"ltlPanel\").classList.contains(\"show\")) populateLtlTiers();\r\n    calculate();\r\n  }\r\n\r\n  function applyRegionRate() {\r\n    el(\"costPerKm\").value = regionRates[el(\"region\").value].toFixed(2);\r\n    syncReturnTruckCost();\r\n    calculate();\r\n  }\r\n\r\n  function syncReturnTruckCost() {\r\n    const distance = num(el(\"distance\").value);\r\n    const rate = num(el(\"costPerKm\").value);\r\n    el(\"returnTruckCost\").value = (distance * rate).toFixed(2);\r\n  }\r\n\r\n  function updateDerivedTransportDays() {\r\n    const d = num(el(\"distance\").value);\r\n    const days = Math.ceil(d \/ 500);\r\n    el(\"outboundDays\").value = days;\r\n    el(\"inboundDays\").value = days;\r\n  }\r\n  function updatePackagingVisibility() {\r\n    const isCarton = el(\"packagingType\").value === \"carton\";\r\n    el(\"cartonWrap\").classList.toggle(\"hidden\", !isCarton);\r\n    el(\"palletWrap\").classList.toggle(\"hidden\", !isCarton);\r\n    el(\"plywoodWrap\").classList.toggle(\"hidden\", isCarton);\r\n  }\r\n  el(\"co2Toggle\").addEventListener(\"change\", () => {\r\n    const on = el(\"co2Toggle\").checked;\r\n    if (on) {\r\n      const _sz2 = el(\"size\").value;\r\n      const _pre2 = presets[_sz2];\r\n      const _pt2 = el(\"packagingType\").value;\r\n      const _co2Inp = el(\"packagingKgPerUnit\");\r\n      const _co2Help = document.getElementById(\"co2WeightHelper\");\r\n      if (_co2Inp && _pre2) _co2Inp.value = _pt2 === \"carton\" ? _pre2.cartonKg : _pre2.plywoodKg;\r\n      const _lbls = {\"1208\":{\"carton\":\"1208 Carton\",\"plywood\":\"1208 Plywood\"},\"1210\":{\"carton\":\"1210 Carton\",\"plywood\":\"1210 Plywood\"}};\r\n      if (_co2Help) _co2Help.textContent = (_lbls[_sz2] && _lbls[_sz2][_pt2]) || (_sz2 + \" Carton\");\r\n    }\r\n    el(\"co2Section\").classList.toggle(\"show\", on);\r\n    el(\"co2Hint\").style.display = on ? \"none\" : \"\";\r\n    calculate();\r\n  });\r\n  function buildCtaUrl(base, params) {\r\n    return base + \"?\" + new URLSearchParams(params).toString();\r\n  }\r\n  let currentResults = {};\r\n\r\n  function calculate() {\r\n    validateAll();\r\n\r\n    const size = el(\"size\").value;\r\n    const preset = presets[size];\r\n\r\n    const price            = num(el(\"price\").value);\r\n    const unitsPerTruck    = preset.unitsPerTruck;\r\n    const collapsedPerTruck= preset.collapsedPerTruck;\r\n    const trucksPerMonth   = num(el(\"trucks\").value);\r\n    const monthlyUnits     = trucksPerMonth * unitsPerTruck;\r\n    const annualUnits      = monthlyUnits * 12;\r\n\r\n    const returnTruckCost  = num(el(\"returnTruckCost\").value);\r\n    const packagingType    = el(\"packagingType\").value;\r\n    const cartonCost       = num(el(\"cartonCost\").value);\r\n    const palletCost       = num(el(\"palletCost\").value);\r\n    const plywoodCost      = num(el(\"plywoodCost\").value);\r\n\r\n    const outboundDays     = num(el(\"outboundDays\").value);\r\n    const dwellDays        = num(el(\"dwellDays\").value);\r\n    const inboundDays      = num(el(\"inboundDays\").value);\r\n    const bufferPercent    = num(el(\"bufferPercent\").value);\r\n    const palletPlaces     = preset.palletPlaces;\r\n    const collapsedPerPP   = collapsedPerTruck \/ palletPlaces;  \/\/ collapsed units per pallet place\r\n    const trucksToFillReturn  = Math.ceil(collapsedPerTruck \/ unitsPerTruck);\r\n    const accumDays           = (trucksToFillReturn \/ trucksPerMonth) * 30;\r\n    const customerWait        = accumDays + dwellDays;\r\n    const baseCycle           = outboundDays + customerWait + inboundDays;\r\n    const bufferDays          = baseCycle * (bufferPercent \/ 100);\r\n    const totalCycle          = baseCycle + bufferDays;\r\n\r\n    const dailyUnits          = annualUnits \/ 365;\r\n    const rawPool             = dailyUnits * totalCycle;\r\n    const poolTrucks          = Math.ceil(rawPool \/ unitsPerTruck);\r\n    const packagingPool       = poolTrucks * unitsPerTruck;\r\n    const investment          = packagingPool * price;\r\n\r\n    const oneWayUnitCost      = packagingType === \"carton\" ? (cartonCost + palletCost) : plywoodCost;\r\n    const annualOneWayCost    = annualUnits * oneWayUnitCost;\r\n    const returnCostPerUnit   = collapsedPerTruck > 0 ? (returnTruckCost \/ collapsedPerTruck) : 0;\r\n    const annualReturnCost    = annualUnits * returnCostPerUnit;\r\n    const annualSavings       = annualOneWayCost - annualReturnCost;\r\n    const paybackMonths       = (annualSavings > 0) ? (investment \/ annualSavings) * 12 : null;\r\n    const fiveYearSavings     = (annualSavings > 0) ? (annualSavings * 5) - investment : null;\r\n    const collapsibilityRatio = collapsedPerTruck \/ unitsPerTruck;\r\n    const rigidReturnPerUnit  = unitsPerTruck > 0 ? (returnTruckCost \/ unitsPerTruck) : 0;\r\n    const ltlActive    = el(\"ltlPanel\").classList.contains(\"show\");\r\n    const _ltlSel      = el(\"ltlTier\");\r\n    const ltlTierVal   = _ltlSel.selectedIndex >= 0 ? _ltlSel.options[_ltlSel.selectedIndex].value : \"0\";\r\n    const ltlTruckCost = num(el(\"ltlTruckCost\").value);\r\n    let ltlResults     = null;\r\n    if (ltlActive && ltlTierVal !== \"0\" && ltlTruckCost <= 0) {\r\n      updateLtlCostFromTier(); \/\/ will recalculate and re-trigger calculate()\r\n      return;\r\n    }\r\n    if (ltlActive && ltlTierVal !== \"0\" && ltlTruckCost > 0) {\r\n      const ltlStacks       = parseInt(ltlTierVal);\r\n      const ltlUnitsRet     = Math.round(ltlStacks * collapsedPerPP);\r\n      const ltlFillPct      = Math.round(ltlUnitsRet \/ collapsedPerTruck * 100);\r\n      const ltlTrucksNeeded = Math.ceil(ltlUnitsRet \/ unitsPerTruck);\r\n      const ltlAccumDays    = (ltlTrucksNeeded \/ trucksPerMonth) * 30;\r\n      const ltlCustWait     = ltlAccumDays + dwellDays;\r\n      const ltlBaseCycle    = outboundDays + ltlCustWait + inboundDays;\r\n      const ltlBuffer       = ltlBaseCycle * (bufferPercent \/ 100);\r\n      const ltlTotalCycle   = ltlBaseCycle + ltlBuffer;\r\n      const ltlRawPool      = dailyUnits * ltlTotalCycle;\r\n      const ltlPoolTrucks   = Math.ceil(ltlRawPool \/ unitsPerTruck);\r\n      const ltlPool         = ltlPoolTrucks * unitsPerTruck;\r\n      const ltlInvestment   = ltlPool * price;\r\n      const ltlTripsPerYear    = annualUnits \/ ltlUnitsRet;\r\n      const ltlReturnCostYear  = ltlTripsPerYear * ltlTruckCost;\r\n      const ltlReturnPerUnit   = ltlReturnCostYear \/ annualUnits;\r\n      const ltlSavings         = annualOneWayCost - ltlReturnCostYear;\r\n      const ltlPayback         = (ltlSavings > 0) ? (ltlInvestment \/ ltlSavings) * 12 : null;\r\n      const ltlFiveYear        = (ltlSavings > 0) ? (ltlSavings * 5) - ltlInvestment : null;\r\n      const invSaving       = investment - ltlInvestment;   \/\/ how much less you invest with LTL\r\n      const extraCostYear   = ltlReturnCostYear - annualReturnCost; \/\/ extra transport cost\/yr\r\n      const breakEvenMonths = extraCostYear > 0 ? (invSaving \/ extraCostYear) * 12 : null;\r\n      const paybackDiff     = (ltlPayback !== null && paybackMonths !== null) ? ltlPayback - paybackMonths : null;\r\n\r\n      ltlResults = {\r\n        pool: ltlPool, investment: ltlInvestment, savings: ltlSavings,\r\n        payback: ltlPayback, fiveYear: ltlFiveYear,\r\n        returnCostYear: ltlReturnCostYear, returnPerUnit: ltlReturnPerUnit,\r\n        tripsPerYear: ltlTripsPerYear, stacks: ltlStacks, fillPct: ltlFillPct,\r\n        accumDays: ltlAccumDays, totalCycle: ltlTotalCycle,\r\n        invSaving, extraCostYear, breakEvenMonths, paybackDiff\r\n      };\r\n    }\r\n    const ltlMiniResults = [];\r\n    if (ltlActive) {\r\n      const selectedStacksForMini = parseInt(el(\"ltlTier\").value);\r\n      const selectedTierForMini = preset.ltlTiers.find(t => t.stacks === selectedStacksForMini);\r\n      const selectedManualLtlCost = num(el(\"ltlTruckCost\").value);\r\n      const selectedDefaultLtlCost = selectedTierForMini ? returnTruckCost * (selectedTierForMini.costPct || 0.70) : 0;\r\n      const ltlCostScale = (selectedDefaultLtlCost > 0 && selectedManualLtlCost > 0) ? (selectedManualLtlCost \/ selectedDefaultLtlCost) : 1;\r\n\r\n      preset.ltlTiers.forEach(tier => {\r\n        const miniStacks = tier.stacks;\r\n        const miniUnitsRet = Math.round(miniStacks * collapsedPerPP);\r\n        const miniTrucksNeeded = Math.ceil(miniUnitsRet \/ unitsPerTruck);\r\n        const miniAccumDays = (miniTrucksNeeded \/ trucksPerMonth) * 30;\r\n        const miniCustWait = miniAccumDays + dwellDays;\r\n        const miniBaseCycle = outboundDays + miniCustWait + inboundDays;\r\n        const miniBuffer = miniBaseCycle * (bufferPercent \/ 100);\r\n        const miniTotalCycle = miniBaseCycle + miniBuffer;\r\n        const miniRawPool = dailyUnits * miniTotalCycle;\r\n        const miniPoolTrucks = Math.ceil(miniRawPool \/ unitsPerTruck);\r\n        const miniPool = miniPoolTrucks * unitsPerTruck;\r\n        const miniInvestment = miniPool * price;\r\n        const miniTruckCost = returnTruckCost * (tier.costPct || 0.70) * ltlCostScale;\r\n        const miniTripsPerYear = annualUnits \/ miniUnitsRet;\r\n        const miniReturnCostYear = miniTripsPerYear * miniTruckCost;\r\n        const miniSavings = annualOneWayCost - miniReturnCostYear;\r\n        const miniPayback = miniSavings > 0 ? (miniInvestment \/ miniSavings) * 12 : null;\r\n        const miniFiveYear = miniSavings > 0 ? (miniSavings * 5) - miniInvestment : null;\r\n        ltlMiniResults.push({\r\n          stacks: miniStacks,\r\n          units: miniUnitsRet,\r\n          investment: miniInvestment,\r\n          savings: miniSavings,\r\n          payback: miniPayback,\r\n          fiveYear: miniFiveYear,\r\n          returnCostYear: miniReturnCostYear\r\n        });\r\n      });\r\n    }\r\n    currentResults = {\r\n      size, monthly_units: Math.round(monthlyUnits), annual_units: Math.round(annualUnits),\r\n      pool: packagingPool, investment: Math.round(investment),\r\n      annual_savings: Math.round(annualSavings),\r\n      payback_months: paybackMonths !== null ? fmt1(paybackMonths) : \"N\/A\",\r\n      five_year_savings: fiveYearSavings !== null ? Math.round(fiveYearSavings) : \"N\/A\"\r\n    };\r\n    updatePackagingVisibility();\r\n    el(\"monthlyUnitsText\").textContent = fmtInt(monthlyUnits) + \" sleeve packs\/month\";\r\n    const tbEl = document.getElementById(\"trucksBreakdown\");\r\n    if (tbEl) tbEl.textContent = \"(\" + trucksPerMonth + \" trucks x \" + unitsPerTruck + \")\";\r\n    el(\"annualUnitsText\").textContent  = fmtInt(annualUnits) + \" per year\";\r\n\r\n    el(\"cycleBreakdown\").textContent =\r\n      \" Outbound \" + Math.round(outboundDays) + \"d\" +\r\n      \" + wait \" + Math.round(customerWait) + \"d (accum \" + Math.round(accumDays) + \"d + dwell \" + dwellDays + \"d)\" +\r\n      \" + inbound \" + Math.round(inboundDays) + \"d\" +\r\n      \" + buffer \" + Math.round(bufferDays) + \"d = \" + Math.round(totalCycle) + \" days\";\r\n    const explTTF = document.getElementById(\"explainTrucksToFill\");\r\n    const explAcc = document.getElementById(\"explainAccumFormula\");\r\n    const explDw  = document.getElementById(\"explainDwell\");\r\n    const explWF  = document.getElementById(\"explainWaitFormula\");\r\n    if (explTTF) explTTF.textContent = trucksToFillReturn;\r\n    if (explAcc) explAcc.textContent = \"ceil(\" + collapsedPerTruck + \" \u00f7 \" + unitsPerTruck + \") = \" + trucksToFillReturn + \" trucks needed \u2192 \" + trucksToFillReturn + \" \u00f7 \" + trucksPerMonth + \"\/month \u00d7 30 = \" + Math.round(accumDays) + \" days\";\r\n    if (explDw)  explDw.textContent  = dwellDays;\r\n    if (explWF)  explWF.textContent  = Math.round(accumDays) + \" + \" + dwellDays + \" = \" + Math.round(customerWait) + \" days total customer wait\";\r\n    const lfVol    = document.getElementById(\"lfVol\");\r\n    const lfPool   = document.getElementById(\"lfPool\");\r\n    const lfInvest = document.getElementById(\"lfInvest\");\r\n    const lfSavings= document.getElementById(\"lfSavings\");\r\n    if (lfVol)     lfVol.textContent     = trucksPerMonth + \" trucks\/month \u00d7 \" + unitsPerTruck + \" units \u00d7 12 = \" + fmtInt(annualUnits) + \" units\/year\";\r\n    if (lfPool)    lfPool.textContent    = \"(\" + fmtInt(annualUnits) + \" \u00f7 365) \u00d7 \" + fmt1(totalCycle) + \" days = \" + fmt1(rawPool) + \" \u2192 rounded up to \" + fmtInt(packagingPool) + \" (\" + poolTrucks + \" trucks)\";\r\n    if (lfInvest)  lfInvest.textContent  = eur2(price) + \" \u00d7 \" + fmtInt(packagingPool) + \" units = \" + eur(investment);\r\n    if (lfSavings) lfSavings.textContent = \"(\" + eur2(oneWayUnitCost) + \" \u2212 \" + eur2(returnCostPerUnit) + \") \u00d7 \" + fmtInt(annualUnits) + \" = \" + eur(annualSavings) + \"\/year\";\r\n    const ltlOn = ltlResults !== null;\r\n\r\n    const miniVisible = ltlActive && ltlMiniResults.length > 0;\r\n    function renderMiniGrid(gridId, valueFn, subFn) {\r\n      const grid = document.getElementById(gridId);\r\n      if (!grid) return;\r\n      grid.innerHTML = ltlMiniResults.map((x, i) =>\r\n        '<div class=\"ltl-mini-cell c' + i + '\"><div class=\"k\">LTL ' + x.stacks + '<\/div><div class=\"v\">' + valueFn(x) + '<\/div>' + (subFn ? '<div class=\"sub\">' + subFn(x) + '<\/div>' : '') + '<\/div>'\r\n      ).join('');\r\n    }\r\n    renderMiniGrid('ltlMiniPaybackGrid', x => x.payback !== null ? fmt1(x.payback) + ' m' : 'No');\r\n    renderMiniGrid('ltlMiniSavingsGrid', x => x.savings > 0 ? eurMini(x.savings) : '0,-');\r\n    renderMiniGrid('ltlMiniInvestmentGrid', x => eurMini(x.investment), x => fmtInt(x.units) + ' units\/ld.');\r\n    renderMiniGrid('ltlMiniFiveYearGrid', x => x.fiveYear !== null && x.fiveYear > 0 ? eurMini(x.fiveYear) : '0,-');\r\n    ['ltlMiniPayback','ltlMiniSavings','ltlMiniInvestment','ltlMiniFiveYear'].forEach(id => {\r\n      const box = document.getElementById(id);\r\n      if (box) box.classList.toggle('show', miniVisible);\r\n    });\r\n    const ltlFiveYearCostNote = document.getElementById('ltlFiveYearCostNote');\r\n    if (ltlFiveYearCostNote) ltlFiveYearCostNote.classList.toggle('show', miniVisible);\r\n    el(\"kpiRowLtl\").style.display = \"none\";\r\n\r\n    if (ltlOn) {\r\n      const r = ltlResults;\r\n      el(\"ltlSavingsValue\").textContent  = r.savings > 0 ? eur(r.savings) : \"EUR 0\";\r\n      el(\"ltlSavingsMeta\").textContent   = eur(r.returnCostYear) + \"\/yr return transport\";\r\n      const ltlPText = r.payback !== null ? fmt1(r.payback) + \" months\" : \"No payback\";\r\n      el(\"ltlPaybackValue\").textContent  = ltlPText;\r\n      el(\"ltlPaybackMeta\").textContent   = r.payback !== null ? eur(r.investment) + \" \u00f7 \" + eur(r.savings) + \" \u00d7 12\" : \"\";\r\n      el(\"r1LeftBadge\").style.display  = \"flex\";\r\n      el(\"r1RightBadge\").style.display = \"flex\";\r\n      const ftlPaybackNum = paybackMonths !== null ? paybackMonths : Infinity;\r\n      const ltlPaybackNum = r.payback   !== null ? r.payback   : Infinity;\r\n      const ftlPaybackWins = ftlPaybackNum <= ltlPaybackNum;\r\n      setCardColour(\"cardFtlPayback\", \"paybackValue\",  ftlPaybackWins);\r\n      setCardColour(\"cardLtlPayback\", \"ltlPaybackValue\", !ftlPaybackWins);\r\n\r\n      const ftlSavingsWins = annualSavings >= (r.savings || 0);\r\n      setCardColour(\"cardFtlSavings\", \"savingsValue\",    ftlSavingsWins);\r\n      setCardColour(\"cardLtlSavings\", \"ltlSavingsValue\", !ftlSavingsWins);\r\n      const savDiff = annualSavings - r.savings;\r\n      el(\"ftlSavingsInsight\").textContent = \"FTL saves \" + eur(savDiff) + \" more per year - return trips cost less per unit.\";\r\n      const ftlCostPerUnit = num(el(\"returnTruckCost\").value) \/ collapsedPerTruck;\r\n      const ltlCostPerUnit = r.returnCostYear \/ annualUnits;\r\n      const premium = ((ltlCostPerUnit \/ ftlCostPerUnit) - 1) * 100;\r\n      el(\"ltlRetCostInsight\").textContent = \"LTL: \" + fmt1(premium) + \"% more per unit returned - but \" + Math.round((packagingPool - r.pool) \/ unitsPerTruck) + \" fewer trucks in pool.\";\r\n      const invSavPct = Math.round(r.invSaving \/ investment * 100);\r\n      const ftl5 = fiveYearSavings !== null && fiveYearSavings > 0 ? fiveYearSavings : 0;\r\n      const ltl5 = r.fiveYear !== null && r.fiveYear > 0 ? r.fiveYear : 0;\r\n      el(\"investLabel\").textContent = \"Required investment\";\r\n      el(\"investmentValue\").textContent = eur(investment);\r\n      el(\"investmentMeta\").textContent  = \"FTL baseline \u00b7 \" + eur2(price) + \" \u00d7 \" + fmtInt(packagingPool) + \" units\";\r\n      el(\"investInsight\").textContent   = \"FTL baseline investment is \" + eur(investment) + \". The three LTL alternatives below show lower pool investments, but normally with higher annual return transport cost.\";\r\n      const investWin = el(\"investWinnerBadge\");\r\n      investWin.className = \"kpi-mode-badge ftl\";\r\n      investWin.style.display = \"flex\";\r\n      investWin.textContent = \"FTL\";\r\n      const winner5 = ltl5 >= ftl5 ? \"LTL\" : \"FTL\";\r\n      const loser5  = winner5 === \"LTL\" ? \"FTL\" : \"LTL\";\r\n      const diff5   = Math.abs(ltl5 - ftl5);\r\n      el(\"fiveYearLabel\").textContent = \"5-year total savings\";\r\n      el(\"fiveYearValue\").textContent = fiveYearSavings !== null && fiveYearSavings > 0 ? eur(fiveYearSavings) : \"\u20ac 0\";\r\n      el(\"fiveYearMeta\").textContent  = \"FTL baseline \u00b7 5 \u00d7 annual savings \u2212 pool investment\";\r\n      el(\"fiveYearInsight\").textContent = winner5 === \"LTL\"\r\n        ? \"The LTL alternatives below may improve the 5-year result by reducing upfront investment, but compare this against extra return transport cost.\"\r\n        : \"FTL remains stronger in this scenario because lower return transport cost outweighs the LTL investment saving.\";\r\n      const fiveWin = el(\"fiveYearWinnerBadge\");\r\n      fiveWin.className = \"kpi-mode-badge ftl\";\r\n      fiveWin.style.display = \"flex\";\r\n      fiveWin.textContent = \"FTL\";\r\n      const vp = el(\"verdictPanel\");\r\n      const _elFI = document.getElementById(\"verdictFtlInvest\"); if (_elFI) _elFI.textContent = eur(investment);\r\n      const _elLI = document.getElementById(\"verdictLtlInvest\"); if (_elLI) _elLI.textContent = eur(r.investment);\r\n      el(\"verdictInvSaving\").textContent  = eur(r.invSaving);\r\n      const _elFP = document.getElementById(\"verdictFtlPayback\"); if (_elFP) _elFP.textContent = paybackMonths !== null ? fmt1(paybackMonths) + \" months\" : \"-\";\r\n      const _elLP = document.getElementById(\"verdictLtlPayback\"); if (_elLP) _elLP.textContent = r.payback !== null ? fmt1(r.payback) + \" months\" : \"-\";\r\n      el(\"verdictPaybackDiff\").textContent = r.paybackDiff !== null ? fmt1(Math.abs(r.paybackDiff)) + \" months\" : \"-\";\r\n      const _ftl3 = annualSavings * 3 - investment;\r\n      const _ltl3 = r.savings * 3 - r.investment;\r\n      const _ftl5 = fiveYearSavings !== null ? fiveYearSavings : 0;\r\n      const _ltl5 = r.fiveYear !== null ? r.fiveYear : 0;\r\n      const _el3FF = document.getElementById(\"verdict3yrFtl\"); if (_el3FF) _el3FF.textContent = eur(_ftl3 > 0 ? _ftl3 : 0);\r\n      const _el3FL = document.getElementById(\"verdict3yrLtl\"); if (_el3FL) _el3FL.textContent = eur(_ltl3 > 0 ? _ltl3 : 0);\r\n      const _el5FF = document.getElementById(\"verdict5yrFtl\"); if (_el5FF) _el5FF.textContent = eur(_ftl5);\r\n      const _el5FL = document.getElementById(\"verdict5yrLtl\"); if (_el5FL) _el5FL.textContent = eur(_ltl5);\r\n      const _diff5 = Math.abs(_ltl5 - _ftl5);\r\n      const _el5D = document.getElementById(\"verdict5yrDiff\"); if (_el5D) _el5D.textContent = eur(_diff5);\r\n      const _el5W = document.getElementById(\"verdict5yrWinner\"); if (_el5W) _el5W.textContent = _ltl5 >= _ftl5 ? \"LTL wins\" : \"FTL wins\";\r\n      el(\"verdictExtraCost\").textContent = \"\";\r\n      el(\"verdictBreakEven\").textContent = \"\";\r\n      let verdictColor, verdictIcon, verdictTitleText, verdictText, verdictFacts;\r\n      const pd = r.paybackDiff, extra = r.extraCostYear, invSav = r.invSaving;\r\n      const ltlWins5yr = ltl5 > ftl5;\r\n      const ltlPaybackShorter = r.payback !== null && paybackMonths !== null && r.payback < paybackMonths;\r\n\r\n      const extraInvestment = investment - r.investment;\r\n      const extraFtl5yr = ftl5 - ltl5;                    \/\/ how much MORE FTL earns over 5 years\r\n      const investMarginPct = extraInvestment > 0 ? (extraFtl5yr \/ extraInvestment) * 100 : 0;\r\n      const ftlInvestRatio = r.investment > 0 ? Math.round((investment \/ r.investment - 1) * 100) : 0;\r\n      const marginalFtlAdvantage = !ltlWins5yr && investMarginPct < 10 && ftlInvestRatio > 80;\r\n\r\n      if (ltlWins5yr && ltlPaybackShorter) {\r\n        verdictColor = \"green\"; verdictIcon = \"\u2705\";\r\n        verdictTitleText = \"LTL wins on both payback and 5-year total\";\r\n        verdictText = \"LTL needs \" + invSavPct + \"% less capital, pays back faster, and delivers \" + eur(diff5) + \" more over 5 years. The investment saving more than compensates for the higher transport cost per trip.\";\r\n      } else if (ltlWins5yr && !ltlPaybackShorter) {\r\n        verdictColor = \"blue\"; verdictIcon = \"\u2139\ufe0f\";\r\n        verdictTitleText = \"LTL wins on 5-year total - payback is \" + fmt1(Math.abs(pd)) + \" months longer\";\r\n        verdictText = \"LTL needs \" + invSavPct + \"% less capital and earns \" + eur(diff5) + \" more over 5 years. The \" + fmt1(Math.abs(pd)) + \"-month longer payback is a small price for the capital saving and better long-term return.\";\r\n      } else if (marginalFtlAdvantage) {\r\n        verdictColor = \"blue\"; verdictIcon = \"\u2139\ufe0f\";\r\n        verdictTitleText = \"FTL earns more - but the extra investment rarely justifies it\";\r\n        verdictText = \"FTL earns \" + eur(Math.abs(diff5)) + \" more over 5 years, but to achieve that you must invest \" + eur(extraInvestment) + \" extra upfront (\" + ftlInvestRatio + \"% more capital in boxes). That is a \" + fmt1(investMarginPct) + \"% return on the extra capital over 5 years - well below what most companies expect. LTL frees up \" + eur(extraInvestment) + \" for working capital, pays back \" + fmt1(Math.abs(pd)) + \" months faster, and the \" + eur(Math.abs(diff5)) + \" you forgo over 5 years is unlikely to be the deciding factor in your operation.\";\r\n      } else if (!ltlWins5yr && ltlPaybackShorter) {\r\n        verdictColor = \"orange\"; verdictIcon = \"\u26a0\ufe0f\";\r\n        verdictTitleText = \"LTL pays back faster - FTL earns more over 5 years\";\r\n        verdictText = \"LTL recovers your investment \" + fmt1(Math.abs(pd)) + \" months sooner with \" + invSavPct + \"% less capital tied up. FTL earns \" + eur(diff5) + \" more over 5 years but needs \" + ftlInvestRatio + \"% more upfront. If capital availability matters, LTL is the better fit. If you are optimising for total 5-year return, choose FTL.\";\r\n      } else {\r\n        verdictColor = \"red\"; verdictIcon = \"\u274c\";\r\n        verdictTitleText = \"FTL is the better choice at your volume and distance\";\r\n        verdictText = \"At your shipment frequency, the pool size advantage of LTL is limited while the higher transport cost per trip remains. FTL delivers better payback and higher 5-year savings.\";\r\n      }\r\n      const ftlInvestExtra = Math.round((investment \/ r.investment - 1) * 100);\r\n      verdictFacts = [\r\n        \"\u2022 LTL always costs more per unit returned - you send fewer units per return trip, and the transport rate never fully compensates for the lower load.\",\r\n        \"\u2022 LTL always means a smaller pool: \" + invSavPct + \"% less capital tied up upfront. FTL requires \" + ftlInvestExtra + \"% more capital for the same goods flow.\",\r\n        \"\u2022 Note for procurement: LTL requires more planning - additional trips, more carrier coordination, and closer monitoring of return schedules.\",\r\n        \"__EXPERT__\"\r\n      ];\r\n      if (marginalFtlAdvantage) {\r\n        const pctDiff = ltl5 > 0 ? fmt1(Math.abs(diff5) \/ ltl5 * 100) : \"?\";\r\n        verdictFacts.push(\"\u2022 At your volume and distance, the 5-year earnings difference between FTL and LTL is only \" + pctDiff + \"% - a gap that operational factors (admin burden, capital flexibility) will likely outweigh in your decision.\");\r\n      }\r\n\r\n      vp.className = \"verdict-box show \" + verdictColor;\r\n      el(\"verdictBadge\").textContent     = verdictIcon + \" \" + (verdictColor === \"green\" ? \"LTL recommended\" : verdictColor === \"blue\" ? \"LTL wins 5-year\" : verdictColor === \"orange\" ? \"Mixed - depends on priority\" : \"FTL recommended\");\r\n      el(\"verdictTitle\").textContent     = verdictTitleText;\r\n      el(\"verdictConclusion\").textContent = verdictText;\r\n      let factsEl = document.getElementById(\"verdictFacts\");\r\n      if (!factsEl) {\r\n        factsEl = document.createElement(\"div\");\r\n        factsEl.id = \"verdictFacts\";\r\n        factsEl.className = \"verdict-facts\";\r\n        el(\"verdictConclusion\").after(factsEl);\r\n      }\r\n      factsEl.innerHTML = verdictFacts.map(f => {\r\n        if (f === \"__EXPERT__\") {\r\n          return '\\u003cdiv class=\"verdict-fact\" style=\"background:rgba(18,58,143,.08);border:0.5px solid rgba(18,58,143,.2);color:var(--blue-dk);font-style:normal;\"\\u003e' +\r\n            '\\u003cstrong style=\"color:var(--blue);font-size:11px;\"\\u003eExpert insight: \\u003c\/strong\\u003e' +\r\n            'Start your project with LTL to reduce upfront investment, and scale to FTL with a larger pool when volumes increase.' +\r\n            '\\u003c\/div\\u003e';\r\n        }\r\n        return '\\u003cdiv class=\"verdict-fact\"\\u003e' + f + '\\u003c\/div\\u003e';\r\n      }).join(\"\");\r\n\r\n    } else {\r\n      el(\"investmentValue\").textContent      = eur(investment);\r\n      el(\"investmentMeta\").textContent       = eur2(price) + \" \u00d7 \" + fmtInt(packagingPool) + \" units in pool\";\r\n      if (fiveYearSavings !== null && fiveYearSavings > 0) {\r\n        el(\"fiveYearValue\").textContent = eur(fiveYearSavings);\r\n        el(\"fiveYearMeta\").textContent  = \"FTL baseline \u00b7 5 \u00d7 annual savings \u2212 pool investment\";\r\n      }\r\n      el(\"ftlSavingsInsight\").textContent = \"\";\r\n      el(\"ltlRetCostInsight\").textContent = \"\";\r\n      el(\"investInsight\").textContent     = \"\";\r\n      el(\"fiveYearInsight\").textContent   = \"\";\r\n      el(\"r1LeftBadge\").style.display     = \"none\";\r\n      el(\"r1RightBadge\").style.display    = \"none\";\r\n      resetCardColour(\"cardFtlPayback\", \"acc-blue\");\r\n      resetCardColour(\"cardFtlSavings\", \"acc-blue\");\r\n      el(\"investWinnerBadge\").className   = \"kpi-winner-badge\";\r\n      el(\"investWinnerBadge\").style.display = \"none\";\r\n      el(\"fiveYearWinnerBadge\").className = \"kpi-winner-badge\";\r\n      el(\"fiveYearWinnerBadge\").style.display = \"none\";\r\n      el(\"investLabel\").textContent       = \"Required investment\";\r\n      el(\"fiveYearLabel\").textContent     = \"5-year total savings\";\r\n      el(\"verdictPanel\").className = \"verdict-box\";\r\n      const factsEl = document.getElementById(\"verdictFacts\");\r\n      if (factsEl) factsEl.innerHTML = \"\";\r\n    }\r\n    el(\"savingsValue\").textContent = annualSavings > 0 ? eur(annualSavings) : \"EUR 0\";\r\n    el(\"savingsMeta\").textContent  = eur(annualReturnCost) + \"\/yr return cost\";\r\n    el(\"ftlSavingsInsight\").textContent = \"You eliminate \" + eur(annualOneWayCost) + \"\/yr in one-way packaging cost and pay \" + eur(annualReturnCost) + \"\/yr in return transport. Net saving: \" + eur(annualSavings) + \"\/yr. Return cost is only \" + eur2(returnCostPerUnit) + \"\/unit vs \" + eur2(oneWayUnitCost) + \" one-way - because \" + fmtInt(collapsedPerTruck) + \" collapsed packs share one return truck.\";\r\n    const retPerUnit      = returnTruckCost \/ collapsedPerTruck;\r\n    const marginWarnEl    = el(\"marginWarn\");\r\n    if (marginWarnEl) {\r\n      if (retPerUnit >= oneWayUnitCost) {\r\n        marginWarnEl.className = \"margin-warn error\";\r\n        marginWarnEl.innerHTML = \"\u26d4 At this distance, return transport costs \\u003cstrong\\u003e\" + eur2(retPerUnit) + \"\/unit\\u003c\/strong\\u003e - more than the carton\/pallet you're replacing (\\u003cstrong\\u003e\" + eur2(oneWayUnitCost) + \"\\u003c\/strong\\u003e). Sleeve packs won't save money here. Try reducing the return truck cost, using \\u003ca href='#returnTransportSection' style='color:inherit;font-weight:700;'\\u003eLTL returns \u2191\\u003c\/a\\u003e, or check a shorter route.\";\r\n      } else if (retPerUnit >= oneWayUnitCost * 0.70) {\r\n        marginWarnEl.className = \"margin-warn warn\";\r\n        marginWarnEl.innerHTML = \"\u26a0\ufe0f Long distance alert: return transport is already \" + Math.round(retPerUnit \/ oneWayUnitCost * 100) + \"% of your packaging cost. Savings exist but payback will be long. Consider \\u003cstrong\\u003eLTL returns\\u003c\/strong\\u003e to reduce your upfront pool - or \\u003ca href='#returnTransportSection' style='color:inherit;font-weight:700;'\\u003eadjust the route cost \u2191\\u003c\/a\\u003e.\";\r\n      } else {\r\n        marginWarnEl.className = \"margin-warn\";\r\n      }\r\n    }\r\n    const returnCostPct = annualReturnCost \/ annualOneWayCost;\r\n    const warnEl = el(\"economicsWarning\");\r\n    if (returnCostPct > 0.60) {\r\n      warnEl.classList.add(\"show\");\r\n      warnEl.innerHTML = \"\\u003cstrong\\u003e\u26a0\ufe0f Long-distance caution:\\u003c\/strong\\u003e Return transport costs \\u003cstrong\\u003e\" + eur2(retPerUnit) + \" per unit\\u003c\/strong\\u003e - \" + Math.round(returnCostPct * 100) + \"% of your one-way packaging cost. Savings margin is thin.\";\r\n    } else {\r\n      warnEl.classList.remove(\"show\");\r\n      warnEl.innerHTML = \"\";\r\n    }\r\n    const ftlWarnEl = document.getElementById(\"ftlVolumeWarning\");\r\n    if (ftlWarnEl) {\r\n      const weakFiveYear = (fiveYearSavings !== null && investment > 0) ? (fiveYearSavings < investment * 0.10) : false;\r\n      const longPayback = paybackMonths !== null ? paybackMonths > 48 : false;\r\n      if (longPayback || weakFiveYear) {\r\n        ftlWarnEl.classList.add(\"show\");\r\n        ftlWarnEl.innerHTML = \"<strong>Low shipment frequency detected<\/strong><br>At this shipment frequency, waiting for a full return truck requires a relatively large packaging pool before returns can start.<ul><li>Consider partial-load (LTL) returns<\/li><li>Combine return flows where possible<\/li><li>Validate this route before investing<\/li><\/ul>\";\r\n      } else {\r\n        ftlWarnEl.classList.remove(\"show\");\r\n        ftlWarnEl.innerHTML = \"\";\r\n      }\r\n    }\r\n    const ltlPanelOn = el(\"ltlPanel\").classList.contains(\"show\");\r\n    if (!ltlPanelOn) {\r\n      el(\"investInsight\").textContent = \"Pool of \" + fmtInt(packagingPool) + \" units (\" + poolTrucks + \" full trucks) x \" + eur2(price) + \" = \" + eur(investment) + \". Pool size is driven by cycle time: \" + Math.round(totalCycle) + \" days means each unit is away for \" + Math.round(totalCycle) + \" days before returning.\";\r\n      el(\"fiveYearInsight\").textContent = \"5 x \" + eur(annualSavings) + \" annual savings minus \" + eur(investment) + \" investment = \" + eur(fiveYearSavings > 0 ? fiveYearSavings : 0) + \". After \" + (paybackMonths !== null ? fmt1(paybackMonths) : \"?\") + \" months the investment is recovered and every subsequent year returns \" + eur(annualSavings) + \" net.\";\r\n      el(\"r1LeftBadge\").style.display  = \"none\";\r\n      el(\"r1RightBadge\").style.display = \"none\";\r\n      el(\"investmentValue\").textContent = eur(investment);\r\n      el(\"investmentMeta\").textContent  = eur2(price) + \" \u00d7 \" + fmtInt(packagingPool) + \" units (\" + poolTrucks + \" trucks)\";\r\n      el(\"investLabel\").textContent     = \"Required investment\";\r\n      el(\"investWinnerBadge\").className = \"kpi-winner-badge\"; \/\/ hide\r\n      el(\"investWinnerBadge\").style.display = \"none\";\r\n      if (fiveYearSavings !== null && fiveYearSavings > 0) {\r\n        el(\"fiveYearValue\").textContent = eur(fiveYearSavings);\r\n        el(\"fiveYearMeta\").textContent  = \"FTL baseline \u00b7 5 \u00d7 annual savings \u2212 pool investment\";\r\n        el(\"fiveYearLabel\").textContent = \"5-year total savings\";\r\n        el(\"fiveYearWinnerBadge\").className = \"kpi-winner-badge\"; \/\/ hide\r\n        el(\"fiveYearWinnerBadge\").style.display = \"none\";\r\n      } else {\r\n        el(\"fiveYearValue\").textContent = \"\u20ac -\";\r\n        el(\"fiveYearMeta\").textContent  = \"FTL baseline \u00b7 5 \u00d7 annual savings \u2212 pool investment\";\r\n      }\r\n    }\r\n    el(\"calloutReturnPerUnit\").textContent    = eur2(returnCostPerUnit);\r\n    el(\"calloutRigidComparison\").textContent  = eur2(rigidReturnPerUnit);\r\n    el(\"calloutRatioDisplay\").textContent     = fmt1(collapsibilityRatio) + \"\u00d7\";\r\n    const rd2 = document.getElementById(\"calloutRatioDisplay2\");\r\n    if (rd2) rd2.textContent = fmt1(collapsibilityRatio) + \"\u00d7\";\r\n    el(\"calloutCollapsedQty\").textContent     = fmtInt(collapsedPerTruck);\r\n    const svgC = document.getElementById(\"svgCollapsedQty\");\r\n    const svgR = document.getElementById(\"svgRigidQty\");\r\n    if (svgC) svgC.textContent = fmtInt(collapsedPerTruck);\r\n    if (svgR) svgR.textContent = fmtInt(unitsPerTruck);\r\n    const savingPerUnit = rigidReturnPerUnit - returnCostPerUnit;\r\n    el(\"calloutSavingPerUnit\").textContent    = eur2(savingPerUnit) + \" cheaper\";\r\n    el(\"sMonthly\").textContent      = fmtInt(monthlyUnits);\r\n    el(\"sAnnual\").textContent       = fmtInt(annualUnits);\r\n    el(\"sCycle\").textContent        = fmt1(totalCycle) + \" days\";\r\n    el(\"sPool\").textContent         = fmtInt(packagingPool);\r\n    el(\"sInvestment\").textContent   = eur(investment);\r\n    el(\"sOneWay\").textContent       = eur(annualOneWayCost);\r\n    el(\"sReturn\").textContent       = eur(annualReturnCost);\r\n    el(\"sReturnPerUnit\").textContent= eur2(returnCostPerUnit);\r\n    el(\"sSavings\").textContent      = eur(annualSavings);\r\n    el(\"sFiveYear\").textContent     = (fiveYearSavings !== null && fiveYearSavings > 0) ? eur(fiveYearSavings) : \"\u20ac -\";\r\n    if (annualSavings > 0 && paybackMonths !== null && Number.isFinite(paybackMonths)) {\r\n      const paybackText = fmt1(paybackMonths) + \" months\";\r\n      el(\"paybackValue\").textContent  = paybackText;\r\n      el(\"paybackMeta\").textContent   = eur(investment) + \" \u00f7 \" + eur(annualSavings) + \" \u00d7 12\";\r\n      el(\"sPayback\").textContent      = paybackText;\r\n      el(\"stickyPayback\").textContent = fmt1(paybackMonths) + \" mo\";\r\n    } else {\r\n      el(\"paybackValue\").textContent  = \"No payback\";\r\n      el(\"paybackMeta\").textContent   = \"Check packaging cost and transport assumptions\";\r\n      el(\"sPayback\").textContent      = \"No payback\";\r\n      el(\"stickyPayback\").textContent = \"-\";\r\n    }\r\n    if (document.getElementById(\"stickySavings\")) el(\"stickySavings\").textContent = annualSavings > 0 ? eur(annualSavings) : \"\u20ac -\";\r\n    const ctaParams = {\r\n      payback: paybackMonths !== null ? fmt1(paybackMonths) + \" months\" : \"N\/A\",\r\n      annual_savings: Math.round(annualSavings),\r\n      investment: Math.round(investment),\r\n      pool: packagingPool,\r\n      size: size\r\n    };\r\n    const quoteUrl = buildCtaUrl(\"https:\/\/zamko.eu\/contact-us\/\", ctaParams);\r\n    el(\"ctaQuote\").href  = quoteUrl;\r\n    if (document.getElementById(\"stickyCta\")) el(\"stickyCta\").href = quoteUrl;\r\n    el(\"ctaSleeve\").href = \"https:\/\/zamko.eu\/product-category\/plastic\/sleeve-pack\/\";\r\n    if (el(\"co2Toggle\").checked) {\r\n      const kgPerUnit = num(el(\"packagingKgPerUnit\").value);\r\n      const totalKg   = annualUnits * kgPerUnit;\r\n      const tonnes    = totalKg \/ 1000;\r\n      el(\"co2KgTotal\").textContent    = fmtInt(totalKg) + \" kg\";\r\n      el(\"co2UnitsElim\").textContent  = fmtInt(annualUnits) + \" pcs.\";\r\n      el(\"co2TonneSaved\").textContent = tonnes.toLocaleString(\"nl-NL\", { maximumFractionDigits:1 }) + \" t\";\r\n      el(\"co2EurSaved\").textContent   = \"\u20ac\u202f\" + Math.round(annualOneWayCost).toLocaleString(\"nl-NL\") + \",-\";\r\n    }\r\n  }\r\n  el(\"size\").addEventListener(\"change\", applySizePreset);\r\n  el(\"region\").addEventListener(\"change\", applyRegionRate);\r\n  el(\"packagingType\").addEventListener(\"change\", () => {\r\n    updatePackagingVisibility();\r\n    const sz  = el(\"size\").value;\r\n    const pre = presets[sz];\r\n    const co2Inp2 = el(\"packagingKgPerUnit\");\r\n    const packTyp2 = el(\"packagingType\").value;\r\n    if (co2Inp2 && pre) co2Inp2.value = packTyp2 === \"carton\" ? pre.cartonKg : pre.plywoodKg;\r\n    const co2Help2 = document.getElementById(\"co2WeightHelper\");\r\n    if (co2Help2) {\r\n      const lbl2 = { \"1208\": { \"carton\": \"1208 Carton\", \"plywood\": \"1208 Plywood\" }, \"1210\": { \"carton\": \"1210 Carton\", \"plywood\": \"1210 Plywood\" } };\r\n      co2Help2.textContent = (lbl2[sz] && lbl2[sz][packTyp2]) || (sz + \" Carton\");\r\n    }\r\n    calculate();\r\n  });\r\n\r\n  el(\"distance\").addEventListener(\"input\", () => {\r\n    updateDerivedTransportDays();\r\n    syncReturnTruckCost();\r\n    calculate();\r\n  });\r\n\r\n  el(\"costPerKm\").addEventListener(\"input\", () => {\r\n    syncReturnTruckCost();\r\n    syncLtlCostToReturn();\r\n    calculate();\r\n  });\r\n\r\n  el(\"returnTruckCost\").addEventListener(\"input\", () => {\r\n    syncLtlCostToReturn();\r\n    calculate();\r\n  });\r\n\r\n  el(\"returnTruckCost\").addEventListener(\"change\", () => {\r\n    syncLtlCostToReturn();\r\n    calculate();\r\n  });\r\n\r\n  function syncLtlCostToReturn() {\r\n    if (!el(\"ltlPanel\").classList.contains(\"show\")) return;\r\n    const stacks = parseInt(el(\"ltlTier\").value);\r\n    if (isNaN(stacks) || stacks <= 0) return;\r\n    const preset = presets[el(\"size\").value];\r\n    const tier = preset.ltlTiers.find(t => t.stacks === stacks);\r\n    if (!tier) return;\r\n    const returnCost = num(el(\"returnTruckCost\").value);\r\n    const suggested = Math.round(returnCost * tier.costPct \/ 50) * 50;\r\n    el(\"ltlTruckCost\").value = suggested;\r\n  }\r\n\r\n  [el(\"co2PerTonne\"), el(\"packagingKgPerUnit\")].forEach(n => n.addEventListener(\"input\", calculate));\r\n\r\n  function syncBufferPreset(){\r\n    const checked = document.querySelector('input[name=\"bufferPreset\"]:checked');\r\n    if (!checked) return;\r\n    const custom = el(\"bufferPercent\");\r\n    if (checked.value === \"custom\") {\r\n      custom.classList.add(\"show\");\r\n      if (!custom.value) custom.value = 25;\r\n    } else {\r\n      custom.classList.remove(\"show\");\r\n      custom.value = checked.value;\r\n    }\r\n  }\r\n\r\n  document.querySelectorAll('input[name=\"bufferPreset\"]').forEach(r => {\r\n    r.addEventListener(\"change\", () => {\r\n      syncBufferPreset();\r\n      calculate();\r\n    });\r\n  });\r\n\r\n  [\r\n    el(\"price\"), el(\"trucks\"),\r\n    el(\"cartonCost\"), el(\"palletCost\"), el(\"plywoodCost\"),\r\n    el(\"outboundDays\"), el(\"dwellDays\"), el(\"inboundDays\"), el(\"bufferPercent\")\r\n  ].forEach(n => {\r\n    n.addEventListener(\"input\", calculate);\r\n    n.addEventListener(\"change\", calculate);\r\n  });\r\n  function toggleLtl() {\r\n    const panel = el(\"ltlPanel\");\r\n    const btn   = el(\"ltlToggleBtn\");\r\n    const on    = panel.classList.toggle(\"show\");\r\n    btn.classList.toggle(\"active\", on);\r\n    btn.textContent = on\r\n      ? \"\u2212 Remove LTL comparison\"\r\n      : \"+ Add LTL comparison - see what partial return loads cost\";\r\n    if (on) populateLtlTiers();\r\n    calculate();\r\n  }\r\n\r\n  function populateLtlTiers() {\r\n    const size    = el(\"size\").value;\r\n    const preset  = presets[size];\r\n    const sel     = el(\"ltlTier\");\r\n    const current = sel.value;\r\n    sel.innerHTML = preset.ltlTiers.map(t =>\r\n      '\\u003coption value=\"' + t.stacks + '\" style=\"background:#1e4fb8;color:#fff;\"\\u003e' + t.label + '\\u003c\/option\\u003e'\r\n    ).join(\"\");\r\n    const prevIdx = preset.ltlTiers.findIndex(t => String(t.stacks) === current);\r\n    sel.selectedIndex = (prevIdx >= 0) ? prevIdx : 0;\r\n    setTimeout(updateLtlCostFromTier, 0);\r\n  }\r\n\r\n  function updateLtlCostFromTier() {\r\n    const size   = el(\"size\").value;\r\n    const preset = presets[size];\r\n    const sel    = el(\"ltlTier\");\r\n    const stacks = sel.selectedIndex >= 0 ? parseInt(sel.options[sel.selectedIndex].value) : 0;\r\n    const returnTruckCost = num(el(\"returnTruckCost\").value);\r\n    const noteEl = document.getElementById(\"ltlTripNote\");\r\n    const noteTxt = document.getElementById(\"ltlTripNoteText\");\r\n    if (noteEl && noteTxt && stacks > 0) {\r\n      const annualUnitsNow = num(el(\"trucks\").value) * preset.unitsPerTruck * 12;\r\n      const collapsedPP    = preset.collapsedPerTruck \/ preset.palletPlaces;\r\n      const ltlUnits       = Math.round(stacks * collapsedPP);\r\n      const ltlTripsYr     = Math.round(annualUnitsNow \/ ltlUnits * 10) \/ 10;\r\n      const ftlTripsYr     = Math.round(annualUnitsNow \/ preset.collapsedPerTruck * 10) \/ 10;\r\n      noteTxt.textContent  = \"With \" + stacks + \" stacks chosen: approx. \" + ltlTripsYr + \" return trips\/year (LTL) vs \" + ftlTripsYr + \" return trips\/year (FTL). That is \" + Math.round(ltlTripsYr - ftlTripsYr) + \" extra trips per year.\";\r\n      noteEl.style.display = \"grid\";\r\n    } else if (noteEl) {\r\n      noteEl.style.display = \"none\";\r\n    }\r\n\r\n    if (!isNaN(stacks) && stacks > 0) {\r\n      const tier = preset.ltlTiers.find(t => t.stacks === stacks);\r\n      if (tier) {\r\n        const suggested = Math.round(returnTruckCost * tier.costPct \/ 50) * 50;\r\n        el(\"ltlTruckCost\").value = suggested;\r\n        el(\"ltlCostHelper\").textContent =\r\n          \"Based on \" + Math.round(tier.costPct * 100) + \"% of full truck cost (ZAMKO benchmark). Adjust to your actual rate.\";\r\n      }\r\n    }\r\n    calculate();\r\n  }\r\n\r\n  function stepLtlCost(delta) {\r\n    const inp = el(\"ltlTruckCost\");\r\n    const cur = num(inp.value);\r\n    inp.value = Math.max(50, cur + delta);\r\n    calculate();\r\n  }\r\n\r\n  el(\"ltlTier\").addEventListener(\"change\", updateLtlCostFromTier);\r\n  el(\"ltlTruckCost\").addEventListener(\"input\", calculate);\r\n  el(\"ltlTruckCost\").addEventListener(\"change\", calculate);\r\n  applySizePreset();\r\n  applyRegionRate();\r\n  updatePackagingVisibility();\r\n  calculate();\r\nfunction toggleReveal(id) {\r\n  var el2 = document.getElementById(id);\r\n  if (el2) el2.classList.toggle('open');\r\n}\r\nfunction toggleFormulas() {\r\n  var b = document.getElementById('formulaSection');\r\n  var a = document.getElementById('formulaArrow');\r\n  var open = b.classList.toggle('open');\r\n  a.style.transform = open ? 'rotate(180deg)' : '';\r\n  a.style.opacity = open ? '1' : '.5';\r\n}\r\nfunction toggleAdvanced() {\r\n  var s = document.getElementById('advancedSection');\r\n  var a = document.getElementById('advancedArrow');\r\n  var open = s.classList.toggle('open');\r\n  a.style.transform = open ? 'rotate(180deg)' : '';\r\n  a.style.opacity = open ? '.6' : '.6';\r\n}\r\nfunction toggleCycleExplain() { toggleReveal('cycleExplain'); }\r\nfunction toggleKpiInsight(id) {\r\n  var el2 = document.getElementById(id);\r\n  if (!el2) return;\r\n  var isOpen = el2.classList.contains('open');\r\n  el2.classList.toggle('open', !isOpen);\r\n  var btn = el2.previousElementSibling;\r\n  if (btn && btn.classList.contains('kpi-info-btn')) {\r\n    btn.classList.toggle('active', !isOpen);\r\n  }\r\n}\r\nfunction setCardColour(cardId, valueId, isWinner) {\r\n  var card = document.getElementById(cardId);\r\n  if (!card) return;\r\n  card.classList.remove(\"acc-worst\",\"acc-best\",\"acc-ltl\",\"acc-blue\");\r\n  card.classList.add(isWinner ? \"acc-best\" : \"acc-worst\");\r\n}\r\nfunction resetCardColour(cardId, defaultClass) {\r\n  var card = document.getElementById(cardId);\r\n  if (!card) return;\r\n  card.classList.remove(\"acc-worst\",\"acc-best\");\r\n  card.classList.add(defaultClass);\r\n}\r\nfunction toggleLtlInfo() {\r\n  var el2 = document.getElementById('ltlInfoText');\r\n  el2.style.display = el2.style.display === 'block' ? 'none' : 'block';\r\n}\r\nfunction toggleCollapse() {\r\n  var body  = document.getElementById('collapseBody');\r\n  var arrow = document.getElementById('collapseArrow');\r\n  var open  = body.style.display === 'block';\r\n  body.style.display  = open ? 'none' : 'block';\r\n  arrow.textContent   = open ? '\u25be' : '\u25b4';\r\n  arrow.style.opacity = open ? '1' : '1';\r\n}\r\n  function generatePDF() {\r\n    const today    = new Date().toLocaleDateString(\"nl-NL\", {day:\"numeric\",month:\"long\",year:\"numeric\"});\r\n    const size     = el(\"size\").value;\r\n    const packType = el(\"packagingType\").value;\r\n    const oneWayCost = packType === \"carton\"\r\n      ? num(el(\"cartonCost\").value) + num(el(\"palletCost\").value)\r\n      : num(el(\"plywoodCost\").value);\r\n    const ltlOn  = document.getElementById(\"ltlPanel\") &&\r\n                   document.getElementById(\"ltlPanel\").classList.contains(\"show\");\r\n    const set = (id, val) => { const e = document.getElementById(id); if (e) e.textContent = val; };\r\n\r\n    set(\"pdfDate\",       \"Report date: \" + today);\r\n    set(\"pdfFooterDate\", today);\r\n    set(\"pdfPayback\",    el(\"paybackValue\").textContent);\r\n    set(\"pdfSavings\",    el(\"savingsValue\").textContent);\r\n    set(\"pdfInvestment\", el(\"investmentValue\").textContent);\r\n    set(\"pdfFiveYear\",   el(\"fiveYearValue\").textContent);\r\n    set(\"pdfSize\",       size === \"1208\" ? \"1208  (1200x800 mm)\" : \"1210  (1200x1000 mm)\");\r\n    set(\"pdfTrucks\",     el(\"trucks\").value + \" trucks\/month\");\r\n    set(\"pdfDistance\",   el(\"distance\").value + \" km\");\r\n    set(\"pdfReturnCost\", \"\u20ac \" + el(\"returnTruckCost\").value + \",-\");\r\n    set(\"pdfPackType\",   packType === \"carton\" ? \"Carton + pallet\" : \"Plywood crate\");\r\n    set(\"pdfOneWayCost\", eur2(oneWayCost) + \" \/ unit\");\r\n    set(\"pdfCycle\",      el(\"cycleBreakdown\").textContent);\r\n    set(\"pdfPool\",       el(\"sPool\") ? el(\"sPool\").textContent + \" units\" : \"-\");\r\n\r\n    function copyMiniToPdf(sourceId, targetId) {\r\n      const src = document.getElementById(sourceId);\r\n      const dst = document.getElementById(targetId);\r\n      if (!dst) return;\r\n      if (ltlOn && src && src.innerHTML.trim()) {\r\n        dst.innerHTML = '<div class=\"pdf-mini-title\">LTL comparison<\/div><div class=\"pdf-mini-grid\">' + src.innerHTML + '<\/div>';\r\n        dst.style.display = 'block';\r\n      } else {\r\n        dst.innerHTML = '';\r\n        dst.style.display = 'none';\r\n      }\r\n    }\r\n    copyMiniToPdf('ltlMiniPaybackGrid', 'pdfMiniPayback');\r\n    copyMiniToPdf('ltlMiniSavingsGrid', 'pdfMiniSavings');\r\n    copyMiniToPdf('ltlMiniInvestmentGrid', 'pdfMiniInvestment');\r\n    copyMiniToPdf('ltlMiniFiveYearGrid', 'pdfMiniFiveYear');\r\n    const pdfMiniNote = document.getElementById('pdfMiniFiveYearNote');\r\n    if (pdfMiniNote) pdfMiniNote.style.display = ltlOn ? 'block' : 'none';\r\n\r\n    const ltlSec = document.getElementById(\"pdfLtlSection\");\r\n    if (ltlSec) {\r\n      \/* Legacy selected-LTL block hidden: all LTL options are shown as compact mini results inside the main KPI cards. *\/\r\n      ltlSec.style.display = \"none\";\r\n    }\r\n\r\n    const rep = document.getElementById(\"pdfReport\");\r\n    if (rep) {\r\n      rep.style.display = \"block\";\r\n      setTimeout(() => { window.print(); rep.style.display = \"none\"; }, 400);\r\n    }\r\n  }\r\n\r\n<\/script>\r\n\r\n<div id=\"pdfReport\">\r\n\r\n  <div class=\"pdf-pg\">\r\n    <div class=\"pdf-hdr\">\r\n      <div>\r\n        <div class=\"pdf-hdr-title\">Sleeve Pack ROI Calculation<\/div>\r\n        <div id=\"pdfDate\" class=\"pdf-hdr-sub\">-<\/div>\r\n      <\/div>\r\n      <div class=\"pdf-brand-card\">\r\n        <img decoding=\"async\" src=\"data:image\/jpeg;base64,\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7\/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7\/wAARCACCAKwDASIAAhEBAxEB\/8QAHQABAAICAwEBAAAAAAAAAAAAAAYHBQgDBAkCAf\/EAFAQAAEDAwIDBAUGBw0FCQAAAAECAwQABREGBxIhMQgTQVEUImFxgQkVIzJCkTdSc4KhsbMWGCQlMzVDYnJ1otHSNlNUk5QXdJKywcLh4vD\/xAAbAQEAAQUBAAAAAAAAAAAAAAAAAwIEBQYHAf\/EADgRAAEDAgMEBwUHBQAAAAAAAAEAAgMEEQUSMSFBUWEGEyJxgbHhFDJCwfAHIzVykaHxMzSi0eL\/2gAMAwEAAhEDEQA\/ANy6UpREpSlESlKURKUpREpSqu3h3Mb0+25ZLG6hy7KGHXRzTFB\/Wv2eHj5VPTU0lTII4xtVtVVcVLGZJDYeaz2qtw7TY9QxrGhJmS1nikhtQ+gRjPPzUfxf\/ipZAlx50RuXEdS6y4MpUmtRdKuOPakQ884txxzjUtazkqJBySfE1a+j9SyrBL+07DcP0rOf8SfI\/rrXOk2MMwHGI6SXbG5gJO8OLnC\/dsGzx77XCKx9dC6Vwt2iAOVgrqpXXts2LcYbcuG6l1lwZCh+o+RrsVmmPbI0OabgrJpSlKqRKUpREpSlESlKURKUpREpSlESlKURKUqo95Nz02oPaf06+FXA5TJkpORH80p\/r\/q9\/S4paWSpkDIx6K1rKyKkiMkh2efcubePc1FkS7YbA8ld0UOF99PMRh5DzX+r31r44tbjinHFqWtZKlKUclRPUk+dfilKUorUoqUo5JJySfOvyt6oqKOkjys13niuc4hiEtdJnfpuHBZfR\/8AP7P9lf8A5TU8rI7TbWSJUM3y+Lehl1oiGwBhQyP5RYPh5Jr5vtpmWaeqHMRhQ5oWPqrT5iuA\/azC+XEmVTBdgYGk8wXG37rd+jkEkNHaQWub+Fgu5pLUUuwTeNGXYrh+mZJ5H2jyNXHa58W5wW5kN0ONLHI+IPkR4GqBrM6U1BLsE7vWcuR1kd8yTyUPMeR9tav0Z6Tvw1wgnN4j\/jzHLiPEc865t1d9K6tpuEa6W5mfDXxsPDKT8cEfAgiu1XYmPa9oc03BVBBBsUpSlVLxKUpREpSlESlKURKUpREpSo3uZB1LctFXGJpGdHh3hbf0C3weFfmjIOUlQ5cXhVTGhzgCbKlxIaSBdQHeXdAQe+09pt8GXzRKloPJnzQg\/jeZ8Pf0oYkkkkkknJJ8arW+a31VZLvKtN3skaFPiuFt9h5CwpCh5+t8c+PWun\/2mXn\/AIGB9y\/9Vb7RQQ0sYbH+vFaNX0eIVsueQDkL6K1qvDZra\/g7nUWpo\/r8lxITg+r5LWPPyT8TWtuy+71otWvYUrW1nYdtmeEPMhR9FcyMOlBJ4wPLqOozjFb7W+ZEuMFifAktSoshsOMvNKCkLSRkEEdRWMxqvljAijFgd\/yCvsHwMMd1tRtI0HzK56xuobNDvcBUWWjmObbg+s2rzH+VZKladPBHPGY5Bdp1BW2qiNQWaZZLgqJLR7W3B9VxPmP8qh2pb13IVDiL+lPJxY+z7B7asnffW0BmOrTcBDUifkF57r6L7Afxz+gVRZ5nJ5muS1WAU9HWuDHZmjQcDwPG38ro\/RPox12Wsq29nVrTv5nlwG\/XTXaPZj8GVl\/JL\/aKqYVD9l\/wZWX8mv8AaKqYV1Wi\/to\/yjyWk4x+IT\/nd5lKUpV0sclKUoiUpSiJSlKIlKUoiUpSiKoO0Zspa9z7QZ8ENQdTxW8RZZGEvpH9E7jqnyPVPuyK0D1DZrpp+9SrLeoTsG4RHC2+w6MKSf8A1B6gjkRzFerdVP2htmLRujZfSGO6g6kitkQ5vDyWOvdO46oPn1SeY8QczhuJmA9XJ7vl6K3mhzbRqvO6rr7Nm+lw23nosl7U9N0q+v12x6y4SiebjfmnxKPHqOfWpdT2K76Zvsux32C7BuERfA8y4OY8iD0KSOYI5EVjq2SWKOojyu2gq0a4tNwvV6zXO33m1RrrapjMyDKbDjD7KuJC0noQar3eLcVGn2V2SzOpVdnE4ccHMRkn\/wB58B4dfKtWezVrXXOlbXcY8CUkWKUhQaakJKu7eP8ASNeXt8CccsipG+66+8t95xbrriipa1nKlE9ST51yfpHiAopXUsDrneRu5d\/l36dP6IdGfbA2tq29j4Qfi5nl592vy4tbjinHFqWtRKlKUckk9STX5Srm2W237ws6l1BH9TkuFFcHXycWPLyHx8q1CjpJKuURs8TwXSMVxSDC6czTHuG8ngPrYrD2jiyYW3Nnjy2VsvBkkoWMEArURke4ipVSldGhjEUbWDcAP0XA6qoNTO+YixcSf1N0pSlSK3SlKURKUpREpSlESlKURKUpREpSlEVXdoHZ2zbpWLP0cHUEVB9Bn8Px7tzHNSCfiDzHiDpdZdptTManl27Ulnmw0W93gfSG1EPK6gIUORSRg8Q8D93pFSrn26pZTuhiflvodSO762KWl6iOobLMzOBuva\/fsOzzWmLFrlMMoZZtshttCQlKUsKASB4DlXJ6BP8A+Bl\/8lX+VblUrTj0aBNzL+3quhD7QnNFhTi35v8AlUTs1tsqc41qHUMZSYqDxRYricF0j7agfs+Q8fd1vYchgUpWcoqKOjjyM8TxWm4xi8+K1Bml03DcB9anelKUq8WKSlKURKUpREpSlEUV3R17YtudMjUOoUyzCMhEf+DNBxfGoEjkSOXqmqu\/fZbV\/wC71D\/0Cf8AXVl7ubfWncvSY05eZU2LFElEnjiqSF8SAQB6wIx6x8Kpi79lLbC0WuTdLnqm\/wASFFbLr77shlKW0jqSe7rI0raMs++vm5KJ\/WX7Oizn77Lav\/d6h\/6BP+updtTvfovcq\/v2TTiLqJTEYyV+lRg2ngCkp5EKPPKhXn1rIabTqOWjSZuCrMhXDGcnqSXnQPtkJACQeoGMgdedbedi7aS8aVZf13qDvIcq5xO4iQFJwpDJUlXeOeIUeEYT4DrzOBf1tBSwQF+0HddRRyvc6y2WquN2d6NF7Z3WHa9RruC5UtgvoREYDnCgK4QVZIxkg49xqxyQBknArzY301O\/uJvTdrhDJfaelpgW5I8W0Hu0Y\/tHKvzqsMNo21MhD\/dAUs0hYNi3S2z380DuBqlvTdjVc2p7rS3WxLjBtKwgZIBCjzxk48gatWvMOzyrrtduyxIfTw3DTt04X0pPJYQrhWkexScj3GvTS2TY1ytsa4w3Q7GlMoeZWOikKAKT9xFVYlRsp3NMfuleQyF976qL7r7jae20sUa86jTNMaRJEZHorIcVxlKlcwSOWEmq0\/fZbVeLeoQPMwBy\/wAdY3t\/fgqsv99I\/Yu1peLZIVYF3gDMZMsRFnyWpBWPvCVfdV5h+HQTwB773uqJZXNdYL1XZlMPQkTG3UmOtsOpXnkUkZB+6qLc7WG1aHFI4b+rhURxJgjBx4j1+ldKz7iFHYnVqIvgzo1oVas55h4H0dPxwUqrSlFskfMC7xjEZEpMQHzWUKX+gD9Iqihwxkhf1u42SSYi2VelO025enNzbTMuem0zksQ5Aju+lMhtXFwhXIAnIwRXS3c3d0ntg9bmtTJuKlXBLimPRI4c5IKc5yoY+sKqj5Pr\/YDUn97J\/YoqNfKG\/wA56N\/Iy\/1tVA2jjNd1Hw+l1UZD1eber82j3e0nufIuLGmk3JKreltT\/pccNjCyoDGFHP1TTdneDRW2T0ONqSVJXLlgrbjRGg64ED7ahkYTnkD4nOOhrUjsv7k2nbGw63vlw4X5jrEVq3wwrCpLuXeXsSOqj4D2kCqxuk7VO5WvVSX++ut\/vEgIQ2jxUeSUJHRKUjp4ACrxuEMM7r7GD\/So685RxW7umO0roDU1\/iWKx27U024S3AhlpEBOT5knj5ADmSeQAq6aqbs6bNWza+w+kSg1M1LMbHpssDIbHXum\/JI8T9o8z4AdLtfa+m6H2rU3aJCo90vD\/oTDyDhTSOEqcWk+B4RgHwKgfCsZJFFLOIqfTS5UwcWtu5ZDcbtA7a6IuDtsm3R65XFklLsa3Nd8W1eSlZCAfZnI8qh0DtdbcPyA3KtWo4jZOO9VHbWB7wlwn7ga1U2U27uO5+umtOw5IiNBtUiZLUnj7loEAnHiolQAGepq890eydEsujZt50nqCfNnQGFPuRZiEYfSkZUEFIHCrAOAc56Vk30VDA4RSOOYqESSOFwNi2g0NrLTOt7P866XvEe5RQeFZbJC21firScKSfYRWfrzQ2H15P2+3Htl5jPrTBeeQxcWQfVeYUoBWR5pzxA+BHvr0vBBAIOQehrHYhReyPABuDopYpM4XBPmRbfBfnTpDUaLHbLjzzqglCEgZJJPQAVoX2nd8JW41zXYrE67H0pEcygc0qmrH9Isfij7KT7zz6Wl8oFqO7QbbpvTsaeuPbbj37sxlJx3xbLfAFHxSOInHTOPIVqXp+7fM16iXVqPBluRXA6hmW33jKlDpxJyOIA88HlyrKYTQtDBUO2ncoZ5DfKto+yZsJ3xia\/1xC+jGHbVbnk\/W8UvupPh4pSfefCtuq0HHau3VAwJFgA\/7j\/9qszs0b8673A3Uj6bv71qXBciPvKEeLwL4kAEc+I+dW9fRVchdNJaw56BVRSMHZCuLtM6x\/cVs3eriy73c6W36DDIPPvXcpyPalPEr82tGNhJemrZuxYbrq24Ig2i3PGU44ptS8rQkltOEgn6\/CenhVu9vfWaLhrO1aLjvpLNpZ9JlJCv6d0eqD7kAH8+o3sD2fXt0tISdRvajNnYRLVGYSIffd7wpBUrPGnAyrHwNXdEyOnoi6U2zfPRUSEvksNywHaivGkdR7rydR6Nujdwh3GO05IKGlt8D6RwKGFgHmEpOfaa2k7FGsP3R7QN2eQ7xzbA8YagTzLJ9Zo\/cSn8yqK3s7Nb23egJWrI2qFXdMR1sPsGD3XC2tXDx8XGehKeWPGsV2LtZo01vExan5CUwr+0YSwVcg8PWaPvzlP59VVDI6mhtEb5dPD0XjSWSdrerw7f34KrL\/fSP2LtUBtxp\/5+7N+5DqEcT1qnQLg3gc8IDgX\/AIFL+6r++UAIG1VlyQP46R1\/Iu1FOwjbo970PuFZ5HCpid3MZzx9VbTqT+uoKaTqsPD+BHmFU8Xlstf2dbSW9m5G344+6dvaLlxeHAGikp\/8QSfhUt1np82XsuaJmOI4XrxfJU5XLnw933aP8KAfjVWybXLj392wKT\/Dm5ZhFvx70L4MffW1PbatDGnNotv7Ezwpat7voyccs8DATn44zWSmc1ksbG\/ESf2UTQS0k7lnfk+v9gNSf3sn9iio18ob\/OejfyMv9bVST5Pgg7f6kwQf42T0\/IoqNfKHKSm56NyoD6GX1PtarFx\/ip8fJTH+itYLHarjfLxFtFphuzJ8twNMMtJypaj\/APuZ8Bzrv3GJf9Ca2ciPd5br5ZZg9ZCslt1BBCgfEdCD0IPtrYX5PeFBkam1VcHI7LsuLFjoYeKQVNJWpziCT4Z4Rn3Vke3nt8ELg7kW5nAPDCunCP8AlOH9KCf7FZF1cBV+zuGz5qIR9jOFsFslr+FuRt7A1FH4G5RHczmEn+RkJA40+48lD2EVR3yhjDytP6QkgEsomSEKPgFKQgp\/QlVU52Ut0U7e7hIi3GUEWC8lMebxK9VlecNvfAnB\/qk+QrdDfLQEbczbmZp1TyGZRKZECQeaW3054ScfZIJSfYo1h3xCgrWuPu\/Xkpw7rYyN61i+T+kxmtyb\/FcUlL79pBaBPNQS6niA+8H4VuPqWSxC05c5kpSUx2IjrjpV0CUoJOfgK80pUTXO02t2nn2Z2n73BcJadKfVWOhKVfVcQR7wQakevN\/dydZ6ecsF3vMZqA+AmQiJHS0p8eSlDJwfEDANXtZhr6qcSscMpso45gxuUqsWELedbaaBK3FBKAOuScCvWKA2tqDHac+uhpKVe8AVo32VNlb1qbVtv1dqC3PQtO251Mlr0hBSZrqTlASk8ygEAlXQ4wM5ON6qtcbnY97WNN7Xv4qunaQCSsdd27E86yi7t21xzmGkyggnn14eL4dK43LFp1sAuWa1I4lBI4ozYyT0HTrUQ1xo6dqbXDi8Q2YC7J6KuRJt6JPrKdVlKOJQ4FAHOcEdPKuPcTS9\/vSLVYLIGkRbVDMhqXOWo5lpHBHUCnmVowpZzyyU1i2sbsGb0UxPJTRVh06lSUqstqBUcJBit5Pjy5VyxbXZ4MhDsW3QIz6spSpthCFHlzAIGelRXUEq5unRd\/fsNxU5HfW9Oix2w47HK4jqCCAeYC1AZFdjWL8oz9JXxi0XKSzGluOvssscTzSVxXUDiRn8ZQB8s15kcbC+t\/mvbhZy6W\/TqVql3OFagpw4LshpvKjj8ZQ5nArnjO2iDbkORnIMWCT6im1IQ0ST4EcutQzdSHLvEXTE2PbprjTM5T76Bb0SXGUqjOpHE0vlniUkHyzWWFsZuO2zlvdtnekxHUtx5MFDJ7zCgD3Q9VJz0x50LBlBJS+1SIKgXOItIVGmxleqsApcQfYeoroOW7TEGSz3kCzxnyoFriZbQokHkU8s5z5V86Ftjdo0haoKILUJxuGyHmm2wjDnAkKyByzkczUA3m0\/cLtqNDke3zJDLllfipWxbWpX0qnEkJPeEd3y+0CPeMUjYHPy5rBCdl1Z12ZtjsQruzUNcZo8ZMpKShB6Z9bkOtfMCPaYMZT8BiFGYcAUVsoShCh4HI5HrUS1Lbp7kTScy42Zdwi2\/wBa425nD5S4WeFKwlR+l4FZ8z63EMkV8WG3OxNE6iS\/pp1yFPlPuwrGQkK7laUp7sjPCgLWFrIz6oXzwQRTIMuqX2qWfNFjVMU78125UkKDilejo4wSchROM5yDz9lct3YtTsXvbuzCXHZ9bilJSUI8M5VyFRPaay3ewRZ9uv6FSrl3iHF3XjKxMbKcIRk8wWgODB6gBfVZrt7p29VxscRKYU6SGJqHiqG226tnCVALLLgKXU5IBT158Q5pFeZfvMubxS+y6kdujW6JG4rdHiMMOevlhCUpVy+ty5Hl41wrYst7aQ+pm33JtBKULKUPBJ8QDzxUIas15k7Qrths7bD\/AKT3hgtIEf0qMJQcWgo4iltTrYUCji4QV45DkMlouETq+43e32N6x2l2CzHLDrCWC++lSyXO7HThSUp4jgnpzCQa9LAATfRLqU22BbIiS5bocNgOAZVHaSniHhzSOdckhMKZHDEhMeQy90QsBSXMc+h5Hpn4VFdpXpUfSdvsc20XKBJgRkodVIY4W1KBIwlWSFVgtG2+7plaRtEiyzYp08qSZcl1KQysFtxtHdqB9fi4wrl0AOcHlQx7XXOnql1MjA0f6T6KYVi7\/i4O67prj4vLGM59lZtstglpsoBQAClP2R4cvCok5puKrdRq9\/MsQtC1rBldwjPf98kg5xniwDzrlhW25DVWrZDaVRhNjxkRJB6FaW1gkf2SRXhaCNdyBZqY1ZbyHrfLat9xDRw7HdSh3gP9ZJzj41jYej9DwX1SYml9Oxnm1AFxqAyhSFcsDITyPMfeKiOkLK+1cNJsxdLSLPMtDa03eattCUvgsqQpAWDl7jdKXOLn9XJwrlWP1RpTUaLvqK62iC6+i63yImXGKwA6wgRSmSjJxxIUhxJH2k58UpqRsdnZQ+38\/RXl9l7K2pMuJFLSZMlhguq4Gw4sJ41eQz1Psrmqs93bNJnXRqVGs0ya783uR2imI1MjulSsllxtRCm84SQ6lSfHJ5CrFtoeFujCS0lp8NI7xtKyoIVgZAJ6gHxqFzAGh19VUDtXPSlKjXqUpSiJSlKIlKUoiUpSiJSlKIlKUoiUpSiJSlKIlKUoiUpSiL\/\/2Q==\" alt=\"ZAMKO Pallet Box Solutions\" class=\"pdf-brand-logo\" title=\"\">\r\n        <div class=\"pdf-brand-info\">\r\n          <div><span>www.<\/span> zamko.eu<\/div>\r\n          <div><span>email<\/span> sales@zamko.eu<\/div>\r\n          <div><span>phone<\/span> +31 40 711 47 17<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pdf-lbl\">Key results &mdash; FTL (full truck return)<\/div>\r\n    <div class=\"pdf-kgrid\">\r\n      <div class=\"pdf-k pk-blue\"><div class=\"pk-l\">Payback period<\/div><div id=\"pdfPayback\" class=\"pk-v\">-<\/div><div class=\"pdf-mini\" id=\"pdfMiniPayback\"><\/div><\/div>\r\n      <div class=\"pdf-k pk-green\"><div class=\"pk-l\">Annual savings<\/div><div id=\"pdfSavings\" class=\"pk-v\">-<\/div><div class=\"pdf-mini\" id=\"pdfMiniSavings\"><\/div><\/div>\r\n      <div class=\"pdf-k pk-red\"><div class=\"pk-l\">Required investment<\/div><div id=\"pdfInvestment\" class=\"pk-v\">-<\/div><div class=\"pdf-mini\" id=\"pdfMiniInvestment\"><\/div><\/div>\r\n      <div class=\"pdf-k pk-green\"><div class=\"pk-l\">5-year total savings<\/div><div id=\"pdfFiveYear\" class=\"pk-v\">-<\/div><div class=\"pdf-mini\" id=\"pdfMiniFiveYear\"><\/div><div class=\"pdf-mini-note\" id=\"pdfMiniFiveYearNote\">LTL savings already include higher cost of return transport.<\/div><\/div>\r\n    <\/div>\r\n\r\n    <div id=\"pdfLtlSection\">\r\n      <div class=\"pdf-lbl\">LTL comparison &mdash; partial load return<\/div>\r\n      <div class=\"pdf-kgrid\">\r\n        <div class=\"pdf-k pk-blue\"><div class=\"pk-l\">LTL payback<\/div><div id=\"pdfLtlPayback\" class=\"pk-v\">-<\/div><\/div>\r\n        <div class=\"pdf-k pk-green\"><div class=\"pk-l\">LTL annual savings<\/div><div id=\"pdfLtlSavings\" class=\"pk-v\">-<\/div><\/div>\r\n        <div class=\"pdf-k pk-red\"><div class=\"pk-l\">LTL investment<\/div><div id=\"pdfLtlInvest\" class=\"pk-v\">-<\/div><\/div>\r\n        <div class=\"pdf-k pk-green\"><div class=\"pk-l\">LTL 5-year savings<\/div><div id=\"pdfLtlFiveYear\" class=\"pk-v\">-<\/div><\/div>\r\n      <\/div>\r\n      <table class=\"pdf-tbl\" style=\"margin-top:6px;\">\r\n        <tr><td>LTL load tier<\/td><td id=\"pdfLtlTier\">-<\/td><\/tr>\r\n        <tr><td>LTL truck cost<\/td><td id=\"pdfLtlCost\">-<\/td><\/tr>\r\n      <\/table>\r\n      <div class=\"pdf-verdict\">\r\n        <div id=\"pdfVerdictTitle\" class=\"pv-title\">-<\/div>\r\n        <div id=\"pdfVerdictText\" class=\"pv-text\">-<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pdf-lbl\">Your inputs<\/div>\r\n    <table class=\"pdf-tbl\">\r\n      <tr><td>Sleeve pack size<\/td><td id=\"pdfSize\">-<\/td><\/tr>\r\n      <tr><td>Trucks \/ month<\/td><td id=\"pdfTrucks\">-<\/td><\/tr>\r\n      <tr><td>Return distance<\/td><td id=\"pdfDistance\">-<\/td><\/tr>\r\n      <tr><td>Return truck cost (FTL)<\/td><td id=\"pdfReturnCost\">-<\/td><\/tr>\r\n      <tr><td>Packaging type<\/td><td id=\"pdfPackType\">-<\/td><\/tr>\r\n      <tr><td>One-way cost \/ unit<\/td><td id=\"pdfOneWayCost\">-<\/td><\/tr>\r\n      <tr><td>Total cycle time<\/td><td id=\"pdfCycle\">-<\/td><\/tr>\r\n      <tr><td>Required pool (FTL)<\/td><td id=\"pdfPool\">-<\/td><\/tr>\r\n    <\/table>\r\n\r\n    <div class=\"pdf-ft\">\r\n      <div class=\"pdf-ft-co\">ZAMKO B.V. &nbsp;&bull;&nbsp; www. zamko.eu &nbsp;&bull;&nbsp; email: sales@zamko.eu &nbsp;&bull;&nbsp; phone: +31 40 711 47 17<\/div>\r\n      <div class=\"pdf-ft-disc\">DISCLAIMER: This calculation is an estimate only. Validate all assumptions with your ZAMKO contact before purchasing. &nbsp;&nbsp;<span id=\"pdfFooterDate\"><\/span><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<style>\r\n@media screen{#pdfReport{display:none!important;}}\r\n@media print{html,body{margin:0;padding:0;}body>*:not(#pdfReport){display:none!important;}#pdfReport{display:block!important;}}\r\n#pdfReport{font-family:'DM Sans',Arial,sans-serif;font-size:12px;color:#1f2937;}\r\n.pdf-pg{width:210mm;min-height:297mm;margin:0 auto;background:#fff;display:flex;flex-direction:column;}\r\n.pdf-hdr{background:#042C53;color:#fff;padding:16px 28px;display:flex;align-items:center;justify-content:space-between;gap:18px;}\r\n.pdf-hdr-title{font-size:17px;font-weight:700;margin-bottom:3px;}\r\n.pdf-hdr-sub{font-size:11px;opacity:.65;}\r\n.pdf-brand-card{background:#fff;border-radius:8px;padding:7px 9px;display:flex;align-items:center;gap:10px;color:#042C53;min-width:255px;box-shadow:0 1px 3px rgba(0,0,0,.16);}\r\n.pdf-brand-logo{width:76px;height:auto;display:block;object-fit:contain;}\r\n.pdf-brand-info{font-size:8.5px;line-height:1.35;font-weight:700;white-space:nowrap;}\r\n.pdf-brand-info span{display:inline-block;width:28px;color:#6b7280;font-weight:700;}\r\n.pdf-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#6b7280;border-bottom:1px solid #e5e7eb;padding:14px 28px 4px;margin-bottom:8px;}\r\n.pdf-kgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 28px;margin-bottom:4px;}\r\n.pdf-k{border-radius:8px;padding:10px 12px;}\r\n.pk-l{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;}\r\n.pk-v{font-size:19px;font-weight:700;font-family:'DM Mono',monospace;line-height:1;}\r\n.pk-blue{background:#E6F1FB;border:1px solid #B5D4F4;}.pk-blue .pk-l{color:#185FA5;}.pk-blue .pk-v{color:#0C447C;}\r\n.pk-green{background:#EAF3DE;border:1px solid #C0DD97;}.pk-green .pk-l{color:#3B6D11;}.pk-green .pk-v{color:#27500A;}\r\n.pk-red{background:#FDECEA;border:1px solid #F5B7B1;}.pk-red .pk-l{color:#922B21;}.pk-red .pk-v{color:#C0392B;}\r\n\r\n.pdf-mini{display:none;margin-top:7px;border-top:1px solid rgba(0,0,0,.08);padding-top:6px;}\r\n.pdf-mini-title{font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;margin-bottom:4px;}\r\n.pdf-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;}\r\n.pdf-mini-grid .ltl-mini-cell{border-radius:6px;padding:4px 3px;text-align:center;border:1px solid #e5e7eb;}\r\n.pdf-mini-grid .ltl-mini-cell .k{font-size:7.5px;font-weight:800;line-height:1.05;white-space:nowrap;}\r\n.pdf-mini-grid .ltl-mini-cell .v{font-size:9.5px;font-family:'DM Mono',monospace;font-weight:800;line-height:1.15;margin-top:1px;white-space:nowrap;}\r\n.pdf-mini-grid .ltl-mini-cell .sub{font-size:7px;color:#6b7280;line-height:1.05;margin-top:1px;}\r\n.pdf-mini-grid .ltl-mini-cell.c0{background:#edf5ff;border-color:#b5d4f4;color:#0C447C;}\r\n.pdf-mini-grid .ltl-mini-cell.c1{background:#eef7e8;border-color:#c0dd97;color:#3B6D11;}\r\n.pdf-mini-grid .ltl-mini-cell.c2{background:#fff4e3;border-color:#fac775;color:#854F0B;}\r\n.pdf-mini-note{display:none;margin-top:5px;font-size:8px;color:#6b7280;line-height:1.25;}\r\n.pdf-tbl{width:calc(100% - 56px);margin:0 28px;border-collapse:collapse;font-size:11px;}\r\n.pdf-tbl td{padding:5px 8px;border-bottom:1px solid #f3f4f6;}\r\n.pdf-tbl td:first-child{color:#6b7280;width:52%;}\r\n.pdf-tbl td:last-child{font-weight:600;font-family:'DM Mono',monospace;}\r\n.pdf-verdict{margin:8px 28px;background:#E6F1FB;border:1px solid #B5D4F4;border-radius:8px;padding:10px 14px;}\r\n.pv-title{font-size:11px;font-weight:700;color:#0C447C;margin-bottom:3px;}\r\n.pv-text{font-size:10px;color:#1f2937;line-height:1.5;}\r\n.pdf-ft{margin-top:auto;border-top:2px solid #042C53;background:#f9fafb;padding:10px 28px 14px;}\r\n.pdf-ft-co{font-size:10px;font-weight:600;color:#042C53;margin-bottom:3px;}\r\n.pdf-ft-disc{font-size:9px;color:#9ca3af;display:flex;justify-content:space-between;gap:20px;line-height:1.4;}\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #001a63;color:#001a63\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #001a63;color:#001a63\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#Sleeve_Pack_ROI_Calculator\" >Sleeve Pack ROI Calculator<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#Sleeve_Pack_ROI_Calculator-2\" >Sleeve Pack ROI Calculator<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#Sleeve_Pack_ROI_Calculator-3\" >Sleeve Pack ROI Calculator<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#Advanced_option_-_Add_partial_load_LTL_return_strategy\" >Advanced option - Add partial load (LTL) return strategy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#Add_LTL_to_compare\" >Add LTL to compare<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#The_collapsibility_advantage\" >The collapsibility advantage<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#Talk_to_a_ZAMKO_specialist_about_your_results\" >Talk to a ZAMKO specialist about your results<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Sleeve Pack ROI Calculator Sleeve Pack ROI Calculator | ZAMKO Sleeve Pack ROI Calculator Estimate how quickly sleeve packs pay back your investment &#8211; and how much you save each year versus one-way carton or plywood packaging. 1Select sleeve pack &#038; current packagingChoose the size and compare against carton\/pallet or plywood crates. 2Enter shipment &#038; [&hellip;]<\/p>\n","protected":false},"author":32,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-31708","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/pages\/31708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/comments?post=31708"}],"version-history":[{"count":0,"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/pages\/31708\/revisions"}],"wp:attachment":[{"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/media?parent=31708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}