{"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-05T16:28:53","modified_gmt":"2026-05-05T16:28:53","slug":"sleeve-pack-roi-calculator","status":"publish","type":"page","link":"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/","title":{"rendered":"Sleeve Pack ROI Calculator"},"content":{"rendered":"<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-flex e-con-boxed e-con e-parent\" data-id=\"075e5a4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\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<head>\r\n  <meta charset=\"UTF-8\"\/>\r\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\"\/>\r\n\r\n  <!-- Google Fonts \u2014 remove if zamko.eu already loads DM Sans globally -->\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\r\n  <!-- ZAMKO Sleeve Pack ROI Calculator \u2014 Elementor Embed Version -->\r\n  <!-- Instructions for developer: see bottom of this file -->\r\n  <style>\r\n  \/* Scope all styles to avoid conflicts with Elementor\/theme CSS *\/\r\n  .zamko-roi-wrap { all: initial; display: block; font-family: 'DM Sans', system-ui, sans-serif; }\r\n  .zamko-roi-wrap *,\r\n  .zamko-roi-wrap *::before,\r\n  .zamko-roi-wrap *::after { box-sizing: border-box; }\r\n\r\n\/* \u2500\u2500 RESET & TOKENS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 NAV \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n\/* \u2500\u2500 PAGE HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n.page-header-outer{background:transparent;padding-bottom:0;}\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\/* WHY button - inline pill *\/\r\n\r\n\r\n\r\n\/* \u2500\u2500 INFO SLIDE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\/* \u2500\u2500 LAYOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n.layout{max-width:1200px;margin:0 auto;padding:8px 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\/* \u2500\u2500 CARDS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 SECTION HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 FIELDS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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],input[type=email],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,input[type=email]: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\/* \u2500\u2500 INLINE NOTE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 CYCLE BOX \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 \ud83e\uddee BUTTON \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 ADVANCED \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 LTL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 CO2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 KPI CARDS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 FIVE YEAR CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 COLLAPSIBILITY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 ECONOMICS WARNING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 VERDICT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 LEAD + CTA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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.lead-card h3{font-size:13px;font-weight:700;color:var(--blue);margin-bottom:3px;}\r\n.lead-card p{font-size:11px;color:var(--muted);margin-bottom:10px;}\r\n.lead-row{display:flex;gap:6px;align-items:flex-end;}\r\n.lead-row input{flex:1;}\r\n.btn-send{background:var(--blue);color:#fff;border:none;border-radius:var(--r-md);padding:0 14px;height:var(--field-h);font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s;}\r\n.btn-send:hover{background:var(--blue-2);}\r\n.send-success{display:none;background:var(--green-lt);border:0.5px solid var(--green-bdr);border-radius:var(--r-md);padding:8px 10px;font-size:12px;color:var(--green-dk);font-weight:600;margin-top:8px;}\r\n.send-success.show{display:block;}\r\n.pdf-btn{display:flex;align-items:center;justify-content:center;gap:6px;background:var(--blue-lt);border:0.5px solid var(--blue-bdr);border-radius:var(--r-md);padding:7px 12px;font-size:12px;font-weight:700;color:var(--blue);cursor:pointer;font-family:inherit;width:100%;margin-top:8px;transition:background .15s;}\r\n.pdf-btn:hover{background:var(--blue-lt2);}\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(--orange);color:var(--orange-dk);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:#ba7517;color:#fff;}\r\n.cta-sec-row{display:grid;grid-template-columns:1fr 1fr;gap:6px;}\r\n.cta-sec{background:rgba(255,255,255,.08);color:#B5D4F4;font-size:11px;font-weight:600;border:0.5px solid rgba(255,255,255,.2);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:rgba(255,255,255,.15);}\r\n.cta-disclaimer{font-size:10px;color:#85B7EB;margin-top:10px;line-height:1.5;}\r\n\/* \u2500\u2500 SUMMARY STRIP \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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\/* \u2500\u2500 FORMULA TOGGLE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\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(--white);border:0.5px solid var(--bdr);border-radius:var(--r-lg);padding:10px 14px;font-size:12px;font-weight:700;color:var(--blue);cursor:pointer;font-family:inherit;box-shadow:var(--shadow);}\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\/* \u2500\u2500 BOTTOM CTA STRIP \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n\/* \u2500\u2500 FOOTER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n.footer a{color:rgba(255,255,255,.4);text-decoration:none;}\r\n\/* \u2500\u2500 STICKY MOBILE BAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n\/* \u2500\u2500 PDF REPORT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n#pdfReport{display:none;background:white;font-family:'DM Sans',Arial,sans-serif;color:#1f2937;}\r\n@media print{body *{visibility:hidden;} #pdfReport,#pdfReport *{visibility:visible;} #pdfReport{position:fixed;inset:0;padding:32px;z-index:9999;}}\r\n.pdf-header{background:#042C53;color:white;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}\r\n.pdf-logo{font-size:20px;font-weight:800;color:#B5D4F4;letter-spacing:-.03em;}\r\n.pdf-logo span{color:#EF9F27;}\r\n.pdf-h1{font-size:18px;font-weight:700;margin:0 0 3px;}\r\n.pdf-sub{font-size:12px;opacity:.75;margin:0;}\r\n.pdf-sec{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280;margin:16px 0 6px;border-bottom:1px solid #e5e7eb;padding-bottom:3px;}\r\n.pdf-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;}\r\n.pdf-kpi{background:#E6F1FB;border:1px solid #B5D4F4;border-radius:8px;padding:10px 12px;}\r\n.pdf-kpi .lbl{font-size:10px;font-weight:700;color:#185FA5;margin-bottom:3px;}\r\n.pdf-kpi .val{font-size:20px;font-weight:700;color:#0C447C;font-family:'DM Mono',monospace;}\r\n.pdf-kpi.green{background:#EAF3DE;border-color:#C0DD97;}\r\n.pdf-kpi.green .lbl{color:#3B6D11;}\r\n.pdf-kpi.green .val{color:#27500A;}\r\n.pdf-table{width:100%;border-collapse:collapse;font-size:12px;}\r\n.pdf-table td{padding:6px 8px;border-bottom:1px solid #f3f4f6;}\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.pdf-footer{margin-top:20px;padding-top:12px;border-top:1px solid #e5e7eb;font-size:10px;color:#9ca3af;display:flex;justify-content:space-between;}\r\n.pdf-disclaimer{font-size:9px;color:#9ca3af;margin-top:10px;line-height:1.5;}\r\n\/* \u2500\u2500 RESPONSIVE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n@media(max-width:900px){.layout{grid-template-columns:1fr;} .nav-links{display:none;}  .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,.bottom-btns{grid-template-columns:1fr!important;} .page-header{flex-wrap:wrap;} .sticky-bar{display:flex;}  .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  \/* Override: transparent background to inherit WordPress page bg *\/\r\n  .zamko-roi-wrap body,\r\n  body { background: transparent !important; }\r\n  <\/style>\r\n\r\n  <!-- JSON-LD Structured Data \u2014 add via WPCode plugin to <head>, not here -->\r\n  <!-- See developer instructions at bottom of this file -->\r\n<\/head>\r\n<body>\r\n\r\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     ZAMKO SLEEVE PACK ROI CALCULATOR \u2014 EMBED VERSION FOR ELEMENTOR\r\n     Paste the content below into an Elementor HTML widget\r\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n\r\n<div class=\"zamko-roi-wrap\">\r\n\r\n<!-- PAGE HEADER -->\r\n<div class=\"page-header-outer\">\r\n  <div class=\"page-header\">\r\n    <div class=\"page-header-text\">\r\n      <h1><span class=\"ez-toc-section\" id=\"Sleeve_Pack_ROI_Calculator\"><\/span>Sleeve Pack ROI Calculator<span class=\"ez-toc-section-end\"><\/span><\/h1>\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\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- MAIN LAYOUT -->\r\n<div class=\"layout\">\r\n\r\n  <!-- \u2550\u2550 LEFT: INPUTS \u2550\u2550 -->\r\n  <div class=\"stack\">\r\n\r\n    <!-- 1. Sleeve pack + packaging -->\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\/de\/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\">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\">Gr\u00f6\u00dfe:<\/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        <\/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    <!-- 2 + 2b: Shipment volume (left) + Current packaging (right) -->\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        <!-- Left: volume -->\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:14px;font-weight:700;color:var(--blue);letter-spacing:-.01em;\" id=\"monthlyUnitsText\">128 sleeve packs\/month (2 trucks x 64)<\/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        <!-- Right: 2b current packaging -->\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    <!-- 3. Return transport -->\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\">R\u00fccktransport<\/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    <!-- 4. Cycle time -->\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\" for=\"bufferPercent\">Buffer for delays<\/label>\r\n          <select id=\"bufferPercent\">\r\n            <option value=\"15\">Lean (15%) - stable loop<\/option>\r\n            <option value=\"25\" selected>Standard (25%) - typical<\/option>\r\n            <option value=\"35\">Secure (35%) - complex flows<\/option>\r\n          <\/select>\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    <!-- ADVANCED OPTIONS -->\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      <!-- Sustainability \/ packaging waste -->\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            <!-- Input block -->\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            <!-- Stat: waste kg -->\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            <!-- Stat: units eliminated -->\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            <!-- Stat: one-way cost avoided -->\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><!-- \/left stack -->\r\n\r\n  <!-- \u2550\u2550 RIGHT: RESULTS \u2550\u2550 -->\r\n  <div class=\"stack\">\r\n\r\n    <!-- LTL header -->\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=\"What is this?\">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 id=\"ltlTripNote\" style=\"display:none;margin-top:8px;padding:7px 10px;background:rgba(255,255,255,.1);border-radius:6px;border:0.5px solid rgba(255,255,255,.2);\">\r\n              <div style=\"font-size:11px;color:rgba(255,255,255,.9);line-height:1.5;\" id=\"ltlTripNoteText\"><\/div>\r\n              <div style=\"font-size:10px;color:rgba(255,255,255,.55);margin-top:4px;font-style:italic;\">\u26a0\ufe0f Please note: this model does not take into account the extra administrative workload of these additional return trips.<\/div>\r\n            <\/div>\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>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Economics warning -->\r\n    <div class=\"econ-warn\" id=\"economicsWarning\"><\/div>\r\n\r\n    <!-- KPI grid -->\r\n    <div class=\"kpi-3row\" id=\"kpiSection\">\r\n\r\n      <!-- Row 1: FTL payback + savings -->\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>\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>\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      <!-- Row 2: LTL (hidden) -->\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      <!-- Row 3: investment + 5yr -->\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>\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\">5 x savings - investment<\/p>\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><!-- \/kpi-3row -->\r\n\r\n    <!-- Verdict -->\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;\">Schlussfolgerung<\/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      <!-- Trade-off summary: what you give up vs what you gain -->\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      <!-- Net return comparison -->\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      <!-- hidden legacy IDs for JS compatibility -->\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    <!-- Collapsibility -->\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        <!-- LEFT TRUCK: collapsed sleeve packs -->\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        <!-- 13 cols x 10 rows of thin slices filling full trailer -->\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        <!-- Left label -->\r\n        <text x=\"105\" y=\"75\" fill=\"#123a8f\" font-size=\"9\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Arial\"><tspan id=\"svgCollapsedQty\">400<\/tspan> collapsed - 1 truck<\/text>\r\n        <!-- VS -->\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        <!-- RIGHT TRUCK: rigid boxes, 16x2 rows bottom-aligned -->\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        <!-- Empty space top -->\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        <!-- Right label -->\r\n        <text x=\"322\" y=\"75\" fill=\"#8a93a0\" font-size=\"9\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Arial\"><tspan id=\"svgRigidQty\">64<\/tspan> rigid boxes - same truck<\/text>\r\n      <\/svg>\r\n\r\n      <!-- Stats row -->\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><!-- \/collapseBody -->\r\n    <\/div>\r\n\r\n    <!-- Warning box (legacy ref) -->\r\n    <div id=\"warningBox\" class=\"margin-warn\"><\/div>\r\n\r\n    <!-- Guide link -->\r\n    <a href=\"https:\/\/zamko.eu\/de\/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    <!-- Lead capture -->\r\n    <div class=\"lead-card\">\r\n      <h3><span class=\"ez-toc-section\" id=\"%F0%9F%93%A7_Receive_your_results_by_email\"><\/span>\ud83d\udce7 Receive your results by email<span class=\"ez-toc-section-end\"><\/span><\/h3>\r\n      <p>Enter your business email and we send you a personalised PDF summary - including your full ROI breakdown.<\/p>\r\n      <div class=\"lead-row\">\r\n        <div style=\"flex:1;\">\r\n          <input type=\"email\" id=\"leadEmail\" placeholder=\"you@company.com\"\/>\r\n        <\/div>\r\n        <button class=\"btn-send\" id=\"sendBtn\" onclick=\"handleSend()\">Send to me<\/button>\r\n      <\/div>\r\n      <div class=\"send-success\" id=\"sendSuccess\">\u2713 Request received! You will hear from us within one business day.<\/div>\r\n      <p style=\"font-size:10px;color:var(--muted2);margin-top:6px;line-height:1.4;\">We send a PDF with your full results. No spam - one email, no follow-up unless you want it.<\/p>\r\n      <button class=\"pdf-btn\" onclick=\"generatePDF()\">\r\n        <svg width=\"14\" height=\"14\" viewbox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\"\/><\/svg>\r\n        Download results as PDF\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <!-- CTA -->\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\/de\/kontakt\/\" 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\/de\/produkt-kategorie\/kunststoff\/armelpackung\/\" class=\"cta-sec\" id=\"ctaSleeve\">View all sleeve packs<\/a>\r\n        <a href=\"https:\/\/zamko.eu\/de\/produkt\/kunststoffhulsen-verpackung\/\" 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><!-- \/right stack -->\r\n<\/div><!-- \/layout -->\r\n\r\n<!-- SUMMARY STRIP -->\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<!-- FORMULA TOGGLE -->\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<!-- Sticky bar IDs (hidden, for JS compatibility) -->\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<!-- PDF REPORT -->\r\n<div id=\"pdfReport\">\r\n  <div class=\"pdf-header\">\r\n    <div><p class=\"pdf-h1\">Sleeve Pack ROI Calculation<\/p><p class=\"pdf-sub\" id=\"pdfDate\">-<\/p><p id=\"pdfPaybackMeta\" style=\"display:none;\"><\/p><p id=\"pdfPool\" style=\"display:none;\"><\/p><p id=\"pdfKmCost\" style=\"display:none;\"><\/p><\/div>\r\n    <div class=\"pdf-logo\">ZAM<span>KO<\/span><\/div>\r\n  <\/div>\r\n  <div style=\"padding:0 28px 28px;\">\r\n    <p class=\"pdf-sec\">Key results<\/p>\r\n    <div class=\"pdf-kpi-grid\">\r\n      <div class=\"pdf-kpi\"><div class=\"lbl\">Payback period<\/div><div class=\"val\" id=\"pdfPayback\">-<\/div><\/div>\r\n      <div class=\"pdf-kpi green\"><div class=\"lbl\">Annual savings<\/div><div class=\"val\" id=\"pdfSavings\">-<\/div><\/div>\r\n      <div class=\"pdf-kpi\"><div class=\"lbl\">Required investment<\/div><div class=\"val\" id=\"pdfInvestment\">-<\/div><\/div>\r\n      <div class=\"pdf-kpi green\"><div class=\"lbl\">5-year total savings<\/div><div class=\"val\" id=\"pdfFiveYear\">-<\/div><\/div>\r\n    <\/div>\r\n    <p class=\"pdf-sec\">Your inputs<\/p>\r\n    <table class=\"pdf-table\">\r\n      <tr><td>Sleeve pack size<\/td><td id=\"pdfSize\">-<\/td><\/tr>\r\n      <tr><td>Purchase price per unit<\/td><td id=\"pdfPrice\">-<\/td><\/tr>\r\n      <tr><td>Outgoing 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>Current packaging type<\/td><td id=\"pdfPackType\">-<\/td><\/tr>\r\n      <tr><td>One-way packaging cost \/ unit<\/td><td id=\"pdfOneWayCost\">-<\/td><\/tr>\r\n      <tr><td>Cycle time (total incl. buffer)<\/td><td id=\"pdfCycle\">-<\/td><\/tr>\r\n      <tr><td>Required packaging pool<\/td><td id=\"pdfPoolDetail\">-<\/td><\/tr>\r\n    <\/table>\r\n    <p class=\"pdf-disclaimer\">ZAMKO B.V. - Zilverwerf 14, 6641 TD Beuningen, Netherlands - +31 40 711 47 17 - sales@zamko.eu - zamko.eu<br>DISCLAIMER: This calculation is an estimate only. Assumptions should be validated with your ZAMKO contact before purchasing.<\/p>\r\n    <div class=\"pdf-footer\"><span>ZAMKO Sleeve Pack ROI Calculator<\/span><span id=\"pdfFooterDate\">-<\/span><\/div>\r\n  <\/div>\r\n<\/div>\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\r\n  \/\/ \u2500\u2500 Formatters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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 eur2(n) { return \"\u20ac \" + n.toLocaleString(\"nl-NL\", { minimumFractionDigits:2, maximumFractionDigits:2 }); }\r\n\r\n  \/\/ \u2500\u2500 Validation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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\r\n  \/\/ \u2500\u2500 Presets \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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    \/\/ Update size badge\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    \/\/ Update CO2 weight field to match packaging type\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\r\n  \/\/ \u2500\u2500 Packaging visibility \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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\r\n  \/\/ \u2500\u2500 CO2 toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  el(\"co2Toggle\").addEventListener(\"change\", () => {\r\n    const on = el(\"co2Toggle\").checked;\r\n    if (on) {\r\n      \/\/ Sync label and weight on first open\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\r\n  \/\/ \u2500\u2500 CTA URL helper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function buildCtaUrl(base, params) {\r\n    \/\/ Replace base with your actual contact\/quote page URL\r\n    \/\/ e.g. \"https:\/\/zamko.eu\/contact\"\r\n    return base + \"?\" + new URLSearchParams(params).toString();\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Lead capture \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function handleSend() {\r\n    const emailEl = el(\"leadEmail\");\r\n    const email   = emailEl.value.trim();\r\n    if (!email || !email.includes(\"@\")) {\r\n      emailEl.classList.add(\"input-error\");\r\n      setTimeout(() => emailEl.classList.remove(\"input-error\"), 2500);\r\n      return;\r\n    }\r\n    emailEl.classList.remove(\"input-error\");\r\n\r\n    \/\/ Collect live results for the email body\r\n    const size     = el(\"size\").value;\r\n    const trucks   = el(\"trucks\").value;\r\n    const distance = el(\"distance\").value;\r\n    const payback  = el(\"paybackValue\").textContent;\r\n    const savings  = el(\"savingsValue\").textContent;\r\n    const invest   = el(\"investmentValue\").textContent;\r\n    const fiveYr   = el(\"fiveYearValue\").textContent;\r\n    const cycle    = el(\"cycleBreakdown\").textContent;\r\n\r\n    const subject = encodeURIComponent(\"ROI CALCULATOR requested and received\");\r\n    const body    = encodeURIComponent([\r\n      \"New ROI calculator request\",\r\n      \"Visitor email: \" + email,\r\n      \"\",\r\n      \"=== RESULTS ===\",\r\n      \"Sleeve pack size: \" + size,\r\n      \"Volume: \" + trucks + \" trucks\/month, \" + distance + \" km return\",\r\n      \"Payback period: \" + payback,\r\n      \"Annual savings: \" + savings,\r\n      \"Required investment: \" + invest,\r\n      \"5-year total savings: \" + fiveYr,\r\n      \"Cycle time: \" + cycle,\r\n      \"\",\r\n      \"Please send the PDF results summary to: \" + email\r\n    ].join(\"\\n\"));\r\n\r\n    window.location.href = \"mailto:sales@zamko.eu?subject=\" + subject + \"&body=\" + body;\r\n\r\n    el(\"sendSuccess\").classList.add(\"show\");\r\n    el(\"sendBtn\").disabled  = true;\r\n    el(\"sendBtn\").style.opacity = \"0.6\";\r\n    setTimeout(() => {\r\n      el(\"sendSuccess\").classList.remove(\"show\");\r\n      el(\"sendBtn\").disabled = false;\r\n      el(\"sendBtn\").style.opacity = \"1\";\r\n    }, 10000);\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Main calculation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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\r\n    \/\/ \u2500\u2500 PALLET PLACE DATA (correct truck capacities) \u2500\u2500\r\n    const palletPlaces     = preset.palletPlaces;\r\n    const collapsedPerPP   = collapsedPerTruck \/ palletPlaces;  \/\/ collapsed units per pallet place\r\n\r\n    \/\/ \u2500\u2500 FTL POOL CALCULATION (corrected formula) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    \/\/ Must accumulate enough outbound trucks at customer to fill one return truck\r\n    const trucksToFillReturn  = Math.ceil(collapsedPerTruck \/ unitsPerTruck);\r\n    const accumDays           = (trucksToFillReturn \/ trucksPerMonth) * 30;\r\n    const customerWait        = accumDays + dwellDays;  \/\/ last truck still needs full dwell\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\r\n    \/\/ FTL return cost: full truck cost amortised over full load\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\r\n    \/\/ Collapsibility\r\n    const collapsibilityRatio = collapsedPerTruck \/ unitsPerTruck;\r\n    const rigidReturnPerUnit  = unitsPerTruck > 0 ? (returnTruckCost \/ unitsPerTruck) : 0;\r\n\r\n    \/\/ \u2500\u2500 LTL CALCULATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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\r\n    \/\/ If tier is selected but cost is still 0, recalculate it\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      \/\/ LTL: each return trip covers ltlUnitsRet units, so trips\/year = annualUnits \/ ltlUnitsRet\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\r\n      \/\/ Verdict logic\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\r\n    \/\/ Store for lead capture\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\r\n    \/\/ \u2500\u2500 Packaging visibility \u2500\u2500\r\n    updatePackagingVisibility();\r\n\r\n    \/\/ \u2500\u2500 Text outputs \u2500\u2500\r\n    el(\"monthlyUnitsText\").textContent = fmtInt(monthlyUnits) + \" sleeve packs\/month (\" + 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\r\n    \/\/ \u2500\u2500 Cycle explain dynamic text \u2500\u2500\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\r\n    \/\/ \u2500\u2500 Live formula fields \u2500\u2500\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\r\n    \/\/ \u2500\u2500 LTL UI UPDATES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    const ltlOn = ltlResults !== null;\r\n\r\n    \/\/ Show\/hide LTL row\r\n    el(\"kpiRowLtl\").style.display = ltlOn ? \"grid\" : \"none\";\r\n\r\n    if (ltlOn) {\r\n      const r = ltlResults;\r\n\r\n      \/\/ \u2500\u2500 LTL cards \u2500\u2500\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\r\n      \/\/ Show FTL badges on row 1 when LTL comparison is active\r\n      el(\"r1LeftBadge\").style.display  = \"flex\";\r\n      el(\"r1RightBadge\").style.display = \"flex\";\r\n\r\n      \/\/ Apply winner\/loser colours once we have both values\r\n      \/\/ Payback: LOWER is better \u2192 shorter payback = winner (blue), longer = red\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      \/\/ Annual savings: HIGHER is better \u2192 more savings = winner (blue), less = red\r\n      const ftlSavingsWins = annualSavings >= (r.savings || 0);\r\n      setCardColour(\"cardFtlSavings\", \"savingsValue\",    ftlSavingsWins);\r\n      setCardColour(\"cardLtlSavings\", \"ltlSavingsValue\", !ftlSavingsWins);\r\n\r\n      \/\/ \u2500\u2500 Insight tags \u2500\u2500\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\r\n      \/\/ \u2500\u2500 Row 3: investment winner \u2500\u2500\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\r\n      \/\/ Investment: LTL always has lower investment\r\n      el(\"investLabel\").textContent = \"Lowest investment\";\r\n      el(\"investmentValue\").textContent = eur(r.investment);  \/\/ LTL (always lower)\r\n      el(\"investmentMeta\").textContent  = \"vs FTL: \" + eur(investment) + \"  (\" + eur(r.invSaving) + \" less)\";\r\n      el(\"investInsight\").textContent   = \"LTL reduces investment by \" + invSavPct + \"% - \" + eur(r.invSaving) + \" less capital required. FTL needs \" + (packagingPool\/unitsPerTruck) + \" trucks vs LTL \" + (r.pool\/unitsPerTruck) + \" trucks.\";\r\n      const investWin = el(\"investWinnerBadge\");\r\n      investWin.className = \"kpi-winner-badge ltl show\";\r\n      investWin.textContent = \"LTL \u2713 WINNER\";\r\n\r\n      \/\/ 5-year: show the winning scenario\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      const win5val = Math.max(ftl5, ltl5);\r\n      const lose5val= Math.min(ftl5, ltl5);\r\n      el(\"fiveYearLabel\").textContent = \"Best 5-year savings\";\r\n      el(\"fiveYearValue\").textContent = eur(win5val);\r\n      el(\"fiveYearMeta\").textContent  = winner5 + \" wins - \" + loser5 + \": \" + eur(lose5val) + \" (\" + eur(diff5) + \" less)\";\r\n      el(\"fiveYearInsight\").textContent = winner5 === \"LTL\"\r\n        ? \"LTL wins 5-year by \" + eur(diff5) + \": the investment saving outweighs the extra transport cost over 5 years.\"\r\n        : \"FTL wins 5-year by \" + eur(diff5) + \": at your volume, extra transport costs outweigh the investment saving over 5 years.\";\r\n      const fiveWin = el(\"fiveYearWinnerBadge\");\r\n      fiveWin.className = \"kpi-winner-badge \" + winner5.toLowerCase() + \" show\";\r\n      fiveWin.textContent = winner5 + \" \u2713 WINNER\";\r\n\r\n      \/\/ \u2500\u2500 VERDICT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n      const vp = el(\"verdictPanel\");\r\n      \/\/ Capital + payback comparison\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      \/\/ Net return 3yr + 5yr\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\r\n      \/\/ Verdict colour: based on 5-year winner AND payback\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      \/\/ Extra intelligence: is the 5-year difference meaningful relative to the extra investment?\r\n      \/\/ If FTL wins by only a tiny margin but needs double the investment, that margin isn't worth it.\r\n      const extraInvestment = investment - r.investment;   \/\/ how much MORE FTL costs upfront\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      \/\/ investMarginPct: the extra 5yr gain as % of the extra investment required\r\n      \/\/ e.g. 3% means: you invest 100% more but only earn 3% more over 5 years - not worth it\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      \/\/ marginalFtlAdvantage = FTL technically wins 5yr but needs 80%+ more investment for <10% gain\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        \/\/ FTL wins technically but the margin is too thin to justify the extra investment\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\r\n      \/\/ Fixed facts always shown\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\r\n      \/\/ Render facts\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 '<div 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;\">' +\r\n            '<strong style=\"color:var(--blue);font-size:11px;\">Expert insight: <\/strong>' +\r\n            'Start your project with LTL to reduce upfront investment, and scale to FTL with a larger pool when volumes increase.' +\r\n            '<\/div>';\r\n        }\r\n        return '<div class=\"verdict-fact\">' + f + '<\/div>';\r\n      }).join(\"\");\r\n\r\n    } else {\r\n      \/\/ FTL only - reset row 3 and clear insights\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  = \"5 \u00d7 \" + eur(annualSavings) + \" \u2212 \" + eur(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(\"fiveYearWinnerBadge\").className = \"kpi-winner-badge\";\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\r\n    \/\/ KPI cards - base FTL values always set\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\r\n    \/\/ \u2500\u2500 Inline margin warning below return truck cost field \u2500\u2500\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 <strong>\" + eur2(retPerUnit) + \"\/unit<\/strong> - more than the carton\/pallet you're replacing (<strong>\" + eur2(oneWayUnitCost) + \"<\/strong>). Sleeve packs won't save money here. Try reducing the return truck cost, using <a href='#returnTransportSection' style='color:inherit;font-weight:700;'>LTL returns \u2191<\/a>, 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 <strong>LTL returns<\/strong> to reduce your upfront pool - or <a href='#returnTransportSection' style='color:inherit;font-weight:700;'>adjust the route cost \u2191<\/a>.\";\r\n      } else {\r\n        marginWarnEl.className = \"margin-warn\";\r\n      }\r\n    }\r\n\r\n    \/\/ Economics warning in results panel\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 = \"<strong>\u26a0\ufe0f Long-distance caution:<\/strong> Return transport costs <strong>\" + eur2(retPerUnit) + \" per unit<\/strong> - \" + 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\r\n    \/\/ FTL-only mode: row 3 shows plain investment + 5-year, no badges\r\n    const ltlPanelOn = el(\"ltlPanel\").classList.contains(\"show\");\r\n    if (!ltlPanelOn) {\r\n      \/\/ Populate investment insight for FTL-only mode\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      if (fiveYearSavings !== null && fiveYearSavings > 0) {\r\n        el(\"fiveYearValue\").textContent = eur(fiveYearSavings);\r\n        el(\"fiveYearMeta\").textContent  = \"5 \u00d7 \" + eur(annualSavings) + \" \u2212 \" + eur(investment);\r\n        el(\"fiveYearLabel\").textContent = \"5-year total savings\";\r\n        el(\"fiveYearWinnerBadge\").className = \"kpi-winner-badge\"; \/\/ hide\r\n      } else {\r\n        el(\"fiveYearValue\").textContent = \"\u20ac -\";\r\n        el(\"fiveYearMeta\").textContent  = \"5 \u00d7 savings \u2212 investment\";\r\n      }\r\n    }\r\n\r\n    \/\/ Collapsibility callout\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    \/\/ Update SVG text elements\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\r\n    \/\/ Summary table\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\r\n    \/\/ \u2500\u2500 Payback \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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      if (document.getElementById(\"stickyPayback\")) document.getElementById(\"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      if (document.getElementById(\"stickyPayback\")) document.getElementById(\"stickyPayback\").textContent = \"-\";\r\n    }\r\n\r\n    \/\/ Sticky bar\r\n    if (document.getElementById(\"stickySavings\")) el(\"stickySavings\").textContent = annualSavings > 0 ? eur(annualSavings) : \"\u20ac -\";\r\n\r\n    \/\/ CTA URLs with live calculator values passed as query params\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\r\n    \/\/ \u2500\u2500 Sustainability \/ packaging waste \u2500\u2500\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\r\n  \/\/ \u2500\u2500 Event wiring \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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    \/\/ Sync CO2 weight to packaging type\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  [\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\r\n  \/\/ \u2500\u2500 PDF Report Generator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function generatePDF() {\r\n    const today = new Date().toLocaleDateString(\"en-GB\", { day:\"numeric\", month:\"long\", year:\"numeric\" });\r\n    const size  = el(\"size\").value;\r\n    const preset = presets[size];\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\r\n    el(\"pdfDate\").textContent       = \"Generated on \" + today;\r\n    el(\"pdfFooterDate\").textContent = today;\r\n    el(\"pdfPayback\").textContent    = el(\"paybackValue\").textContent;\r\n    el(\"pdfPaybackMeta\").textContent= el(\"paybackMeta\").textContent;\r\n    el(\"pdfSavings\").textContent    = el(\"savingsValue\").textContent;\r\n    el(\"pdfInvestment\").textContent = el(\"investmentValue\").textContent;\r\n    el(\"pdfPool\").textContent       = el(\"sPool\") ? el(\"sPool\").textContent + \" units in pool\" : \"-\";\r\n    el(\"pdfFiveYear\").textContent   = el(\"fiveYearValue\").textContent;\r\n    el(\"pdfSize\").textContent       = size === \"1208\" ? \"1208 (1200\u00d7800 mm)\" : \"1210 (1200\u00d71000 mm)\";\r\n    el(\"pdfPrice\").textContent      = \"\u20ac \" + el(\"price\").value;\r\n    el(\"pdfTrucks\").textContent     = el(\"trucks\").value + \" trucks\/month\";\r\n    el(\"pdfDistance\").textContent   = el(\"distance\").value + \" km\";\r\n    el(\"pdfKmCost\").textContent     = \"\u20ac \" + el(\"costPerKm\").value + \"\/km\";\r\n    el(\"pdfReturnCost\").textContent = \"\u20ac \" + el(\"returnTruckCost\").value;\r\n    el(\"pdfPackType\").textContent   = packType === \"carton\" ? \"Carton + pallet\" : \"Plywood crate\";\r\n    el(\"pdfOneWayCost\").textContent = eur2(oneWayCost) + \"\/unit\";\r\n    el(\"pdfCycle\").textContent      = el(\"cycleBreakdown\").textContent;\r\n    el(\"pdfPoolDetail\").textContent = el(\"sPool\").textContent + \" units (\" + Math.ceil(num(el(\"sPool\").textContent.replace(\/,\/g,\"\"))\/preset.unitsPerTruck) + \" full trucks)\";\r\n\r\n    el(\"pdfReport\").classList.add(\"visible\");\r\n    setTimeout(() => {\r\n      window.print();\r\n      el(\"pdfReport\").classList.remove(\"visible\");\r\n    }, 200);\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Cycle explain toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function toggleCycleExplain() {\r\n    const el2 = document.getElementById('cycleExplain');\r\n    const isOpen = el2.style.display === 'block';\r\n    el2.style.display = isOpen ? 'none' : 'block';\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Formula section toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function toggleFormulas() {\r\n    const sec   = document.getElementById('formulaSection');\r\n    const arrow = document.getElementById('formulaArrow');\r\n    const isOpen = sec.style.display === 'block';\r\n    sec.style.display = isOpen ? 'none' : 'block';\r\n    arrow.style.transform = isOpen ? '' : 'rotate(180deg)';\r\n    arrow.style.opacity = isOpen ? '.5' : '1';\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Advanced options toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  function toggleAdvanced() {\r\n    const sec = document.getElementById('advancedSection');\r\n    const arrow = document.getElementById('advancedArrow');\r\n    const btn = document.getElementById('advancedBtn');\r\n    const isOpen = sec.style.display === 'block';\r\n    sec.style.display = isOpen ? 'none' : 'block';\r\n    arrow.style.transform = isOpen ? '' : 'rotate(180deg)';\r\n    arrow.style.opacity = isOpen ? '.5' : '1';\r\n    btn.style.background = isOpen ? '#1e4fb8' : '#123a8f';\r\n  }\r\n\r\n  \/\/ \u2500\u2500 LTL functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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    \/\/ Build full HTML string at once - avoids partial render glitches\r\n    sel.innerHTML = preset.ltlTiers.map(t =>\r\n      '<option value=\"' + t.stacks + '\" style=\"background:#1e4fb8;color:#fff;\">' + t.label + '<\/option>'\r\n    ).join(\"\");\r\n    \/\/ Restore or default to first tier\r\n    const prevIdx = preset.ltlTiers.findIndex(t => String(t.stacks) === current);\r\n    sel.selectedIndex = (prevIdx >= 0) ? prevIdx : 0;\r\n    \/\/ Defer cost update one tick to ensure DOM is settled\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\r\n    \/\/ Update trip count note\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 = \"block\";\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\r\n  \/\/ \u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  applySizePreset();\r\n  applyRegionRate();\r\n  updatePackagingVisibility();\r\n  calculate();\r\n\r\n    \/\/ \u2500\u2500 Info slide + tab logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    function toggleInfoSlide() {\r\n      const slide = document.getElementById('infoSlide');\r\n      const panel = document.getElementById('whyPanel');\r\n      const isOpen = slide.classList.toggle('open');\r\n      panel.classList.toggle('active', isOpen);\r\n      panel.setAttribute('aria-expanded', isOpen);\r\n    }\r\n\r\n    \/\/ \u2500\u2500 Modal logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    function openWhyModal() {\r\n      document.getElementById('whyModal').classList.add('open');\r\n      document.body.style.overflow = 'hidden';\r\n    }\r\n    function closeWhyModal() {\r\n      document.getElementById('whyModal').classList.remove('open');\r\n      document.body.style.overflow = '';\r\n    }\r\n    function handleOverlayClick(e) {\r\n      if (e.target === document.getElementById('whyModal')) closeWhyModal();\r\n    }\r\n    document.addEventListener('keydown', function(e) {\r\n      if (e.key === 'Escape') closeWhyModal();\r\n    });\r\n  \r\n\r\n\/\/ \u2500\u2500 UI TOGGLE HELPERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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  \/\/ Toggle .active on the button (it's always the previousElementSibling)\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<\/script>\r\n\r\n<\/div><!-- \/zamko-roi-wrap -->\t\t\t\t<\/div>\n\t\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_82_2 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\">Inhalts\u00fcbersicht<\/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;\">Umschalten auf<\/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-4' ><li class='ez-toc-heading-level-4'><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-3\" 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-4\" 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-5\" 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-6\" href=\"https:\/\/zamko.eu\/de\/sleeve-pack-roi-calculator\/#%F0%9F%93%A7_Receive_your_results_by_email\" >\ud83d\udce7 Receive your results by email<\/a><\/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>","protected":false},"excerpt":{"rendered":"<p>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. 1 Sleeve pack selection 1208 \u00b7 1200\u00d7800 mm Guide \u2192 Size 1208 &#8211; 1200&#215;800 mm1210 &#8211; 1200&#215;1000 mm Purchase price (EUR) Enter a price above 0. 2 Shipment [&hellip;]<\/p>","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":9,"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/pages\/31708\/revisions"}],"predecessor-version":[{"id":31720,"href":"https:\/\/zamko.eu\/de\/wp-json\/wp\/v2\/pages\/31708\/revisions\/31720"}],"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}]}}