{"id":4546,"date":"2026-08-25T11:33:03","date_gmt":"2026-08-25T10:33:03","guid":{"rendered":"https:\/\/cabinereinigen.sw-dev.nl\/?page_id=4546"},"modified":"2026-10-02T09:48:24","modified_gmt":"2026-10-02T08:48:24","slug":"subscription","status":"publish","type":"page","link":"https:\/\/cabinereinigen.nl\/en\/subscription\/","title":{"rendered":"Build your subscription"},"content":{"rendered":"\n<section style=\"max-width:760px;margin:3.5rem auto 0;padding:0 16px;box-sizing:border-box;font-family:'Inter','Hanken Grotesk',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#043B4B;\">\n  <h2 style=\"font-family:'Montserrat','Satoshi',system-ui,sans-serif;font-weight:700;letter-spacing:-.01em;font-size:clamp(24px,4.2vw,32px);line-height:1.15;margin:0 0 18px;text-align:center;color:#043B4B;\">Why a subscription?<\/h2>\n  <p style=\"font-size:16px;line-height:1.6;margin:0 0 14px;\">Because we can plan routes more efficiently for subscription customers, we fit more cleans into the same travel time. We pass that advantage straight on to you: structurally lower costs per clean.<\/p>\n  <p style=\"font-size:16px;line-height:1.6;margin:0 0 14px;\">With a fixed schedule you stay in control of a clean fleet \u2014 no ad-hoc appointments or surprises, just a reliable rhythm you can build on.<\/p>\n  <p style=\"font-size:16px;line-height:1.6;margin:0;\">Cabinereinigen.nl wants to grow, and subscription customers are at the heart of that. They help us move forward, and in return we offer priority during busy periods and a dependable, consistent service.<\/p>\n<\/section>\n<div id=\"cabwiz\">\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Archivo:wght@500;600;700;800&family=IBM+Plex+Mono:wght@500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap');\n#cabwiz{\n  --bg:#F5F8F6; --surface:#FFFFFF; --surface-2:#EDF2EF;\n  --ink:#131C18; --muted:#58665F; --line:#DCE5E0;\n  --accent:#0F9D63; --accent-ink:#0B7A4D; --accent-contrast:#FFFFFF;\n  --shadow:0 1px 2px rgba(19,28,24,.06),0 12px 34px rgba(19,28,24,.09); --radius:14px;\n  max-width:600px; margin:2.5rem auto; padding:0 16px; box-sizing:border-box;\n  font-family:\"IBM Plex Sans\",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;\n  color:var(--ink); line-height:1.5; -webkit-font-smoothing:antialiased;\n}\n@media (prefers-color-scheme:dark){#cabwiz{\n  --bg:#0D1512; --surface:#14201B; --surface-2:#1B2A23; --ink:#E9F1EC; --muted:#94A69D; --line:#26362E;\n  --accent:#2FD98A; --accent-ink:#57E6A2; --accent-contrast:#06120C; --shadow:0 1px 2px rgba(0,0,0,.3),0 14px 40px rgba(0,0,0,.45);\n}}\n[data-theme=\"dark\"] #cabwiz{\n  --bg:#0D1512; --surface:#14201B; --surface-2:#1B2A23; --ink:#E9F1EC; --muted:#94A69D; --line:#26362E;\n  --accent:#2FD98A; --accent-ink:#57E6A2; --accent-contrast:#06120C; --shadow:0 1px 2px rgba(0,0,0,.3),0 14px 40px rgba(0,0,0,.45);\n}\n#cabwiz *{box-sizing:border-box}\n#cabwiz .eyebrow{font-family:\"IBM Plex Mono\",monospace; font-weight:600; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-ink); display:flex; align-items:center; gap:8px; justify-content:center; margin:0 0 14px}\n#cabwiz .eyebrow::before,#cabwiz .eyebrow::after{content:\"\"; width:20px; height:2px; background:var(--accent); display:inline-block}\n#cabwiz .card{background:var(--surface); border:1.5px solid var(--line); border-radius:20px; box-shadow:var(--shadow); overflow:hidden}\n#cabwiz .progress{padding:20px 24px 0}\n#cabwiz .ptrack{height:6px; background:var(--surface-2); border-radius:999px; overflow:hidden}\n#cabwiz .pbar{height:100%; width:20%; background:var(--accent); border-radius:999px; transition:width .35s cubic-bezier(.4,0,.2,1)}\n#cabwiz .pmeta{display:flex; justify-content:space-between; align-items:baseline; margin-top:10px; font-family:\"IBM Plex Mono\",monospace; font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}\n#cabwiz .bodyx{padding:22px 24px 24px; min-height:360px; display:flex; flex-direction:column}\n#cabwiz .screen{display:none; flex-direction:column; flex:1}\n#cabwiz .screen.active{display:flex; animation:cwfade .28s ease both}\n@keyframes cwfade{from{opacity:0; transform:translateY(8px)} to{opacity:1; transform:none}}\n#cabwiz h2.q{font-family:\"Archivo\",sans-serif; font-weight:800; letter-spacing:-.02em; font-size:clamp(22px,4.5vw,28px); line-height:1.1; margin:6px 0 4px; text-wrap:balance; color:var(--ink)}\n#cabwiz .qsub{color:var(--muted); font-size:14px; margin:0 0 18px}\n#cabwiz .opts{display:grid; gap:10px}\n#cabwiz .opt{appearance:none; text-align:left; cursor:pointer; width:100%; background:var(--surface); color:var(--ink); border:1.5px solid var(--line); border-radius:var(--radius); padding:15px 16px; display:flex; align-items:center; gap:14px; transition:border-color .15s,box-shadow .15s,background .15s,transform .05s; font:inherit; white-space:normal}\n#cabwiz .opt .body-t{min-width:0; flex:1}\n#cabwiz .opt:hover{border-color:var(--accent)}\n#cabwiz .opt:active{transform:translateY(1px)}\n#cabwiz .opt:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent); outline-offset:2px}\n#cabwiz .opt[aria-pressed=\"true\"]{border-color:var(--accent); box-shadow:inset 0 0 0 1px var(--accent); background:color-mix(in srgb,var(--accent) 9%,var(--surface))}\n#cabwiz .opt .body-t{display:flex; flex-direction:column; gap:2px; flex:1}\n#cabwiz .opt .t{font-weight:600; display:flex; align-items:center; gap:8px; flex-wrap:wrap; color:var(--ink)}\n#cabwiz .opt .d{font-size:13px; color:var(--muted); line-height:1.4}\n#cabwiz .opt .pz{font-family:\"IBM Plex Mono\",monospace; font-weight:600; font-size:13px; color:var(--accent-ink); white-space:nowrap}\n#cabwiz .opt .mark{width:22px; height:22px; border-radius:50%; flex:none; border:2px solid var(--line); display:grid; place-items:center; transition:border-color .15s,background .15s}\n#cabwiz .opt[aria-pressed=\"true\"] .mark{border-color:var(--accent); background:var(--accent)}\n#cabwiz .opt .mark::after{content:\"\"; width:8px; height:5px; border-left:2px solid var(--accent-contrast); border-bottom:2px solid var(--accent-contrast); transform:rotate(-45deg) scale(0); transition:transform .15s}\n#cabwiz .opt[aria-pressed=\"true\"] .mark::after{transform:rotate(-45deg) scale(1)}\n#cabwiz .tag{font-family:\"IBM Plex Mono\",monospace; font-size:10px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--accent-contrast); background:var(--accent); padding:2px 7px; border-radius:999px}\n#cabwiz .note{font-size:12px; color:var(--muted); margin:10px 2px 0; font-style:italic}\n#cabwiz .nav{display:flex; align-items:center; gap:12px; margin-top:20px}\n#cabwiz .back{appearance:none; font:inherit; cursor:pointer; background:transparent; color:var(--muted); border:0; padding:10px 4px; font-weight:600; font-size:14px; display:inline-flex; align-items:center; gap:6px; border-radius:8px}\n#cabwiz .back:hover{color:var(--ink)}\n#cabwiz .back:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent); outline-offset:2px}\n#cabwiz .back[hidden]{display:none}\n#cabwiz .back .arw{font-family:\"IBM Plex Mono\",monospace}\n#cabwiz .rlabel{font-family:\"IBM Plex Mono\",monospace; font-size:11px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--muted)}\n#cabwiz .price{font-family:\"Archivo\",sans-serif; font-weight:800; letter-spacing:-.03em; font-size:clamp(40px,8vw,54px); line-height:1; margin:6px 0 2px; font-variant-numeric:tabular-nums; color:var(--ink)}\n#cabwiz .price .per{font-size:16px; font-weight:600; color:var(--muted); letter-spacing:0}\n#cabwiz .rsub{font-size:13px; color:var(--muted)}\n#cabwiz .discount{display:inline-flex; align-items:center; gap:6px; margin-top:14px; font-family:\"IBM Plex Mono\",monospace; font-weight:600; font-size:13px; color:var(--accent-ink); background:color-mix(in srgb,var(--accent) 14%,transparent); border:1px solid color-mix(in srgb,var(--accent) 35%,transparent); padding:5px 10px; border-radius:999px}\n#cabwiz .rrows{margin:18px 0 0; border-top:1px solid var(--line)}\n#cabwiz .row{display:flex; justify-content:space-between; align-items:baseline; gap:12px; padding:11px 0}\n#cabwiz .row + .row{border-top:1px dashed var(--line)}\n#cabwiz .row .k{color:var(--muted); font-size:14px}\n#cabwiz .row .v{font-family:\"IBM Plex Mono\",monospace; font-weight:600; font-variant-numeric:tabular-nums; color:var(--ink); text-align:right}\n#cabwiz .row .v .old{color:var(--muted); text-decoration:line-through; font-weight:500; margin-right:8px; font-size:13px}\n#cabwiz .extblock{margin-top:20px; padding-top:16px; border-top:2px solid var(--line)}\n#cabwiz .extblock[hidden]{display:none}\n#cabwiz .exthead{display:flex; align-items:center; justify-content:space-between; gap:10px}\n#cabwiz .exttitle{font-family:\"Archivo\",sans-serif; font-weight:700; font-size:14px; color:var(--ink)}\n#cabwiz .summary{margin-top:16px; padding:13px 15px; background:var(--surface-2); border-radius:12px; font-size:13px; color:var(--ink)}\n#cabwiz .summary b{font-weight:600}\n#cabwiz .perkhead{font-family:\"Archivo\",sans-serif; font-weight:700; font-size:13px; margin:20px 0 10px; color:var(--ink)}\n#cabwiz .perks{margin:0; padding:0; list-style:none; display:grid; gap:8px}\n#cabwiz .perks li{position:relative; padding-left:26px; font-size:13.5px; color:var(--ink)}\n#cabwiz .perks li::before{content:\"\"; position:absolute; left:2px; top:6px; width:13px; height:7px; border-left:2px solid var(--accent); border-bottom:2px solid var(--accent); transform:rotate(-45deg)}\n#cabwiz .cta{display:block; width:100%; text-align:center; margin-top:22px; background:var(--accent); color:var(--accent-contrast); font-family:\"Archivo\",sans-serif; font-weight:700; font-size:15px; border:0; border-radius:12px; padding:15px 18px; cursor:pointer; text-decoration:none; transition:filter .15s,transform .05s}\n#cabwiz .cta:hover{filter:brightness(1.05)}\n#cabwiz .cta:active{transform:translateY(1px)}\n#cabwiz .cta:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent); outline-offset:2px}\n#cabwiz .restart{display:block; margin:12px auto 0; background:transparent; border:0; cursor:pointer; font:inherit; font-size:13px; font-weight:600; color:var(--muted)}\n#cabwiz .restart:hover{color:var(--ink)}\n#cabwiz .foot{margin:16px 4px 0; font-size:11.5px; color:var(--muted); line-height:1.5; text-align:center}\n@media (prefers-reduced-motion:reduce){#cabwiz *{transition:none!important; animation:none!important}}\n<\/style>\n\n<p class=\"eyebrow\">Cabinereinigen &middot; Subscription<\/p>\n<div class=\"card\">\n  <div class=\"progress\">\n    <div class=\"ptrack\"><div class=\"pbar\" id=\"cwbar\"><\/div><\/div>\n    <div class=\"pmeta\"><span id=\"cwstep\">Step 1<\/span><span id=\"cwname\">Type<\/span><\/div>\n  <\/div>\n  <div class=\"bodyx\">\n\n    <section class=\"screen active\" data-key=\"mode\" data-group=\"mode\" aria-label=\"Subscription type\">\n      <h2 class=\"q\">Which type of subscription?<\/h2>\n      <p class=\"qsub\">Choose the fixed entry plan or build your own.<\/p>\n      <div class=\"opts\">\n        <button type=\"button\" class=\"opt\" data-val=\"kz\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Freelancer \/ Small business<\/span><span class=\"d\">Fleets up to 10 vehicles. Fixed: 4&times; per year, 10% discount, no travel costs.<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"maat\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Fleet owners<\/span><span class=\"d\">From 10 vehicles. Choose your own package, frequency and term. Up to 45% discount.<\/span><\/span><\/button>\n      <\/div>\n    <\/section>\n\n    <section class=\"screen\" data-key=\"voertuig\" data-group=\"voertuig\" aria-label=\"Vehicle\">\n      <h2 class=\"q\">What would you like cleaned?<\/h2>\n      <p class=\"qsub\">Choose the vehicle type.<\/p>\n      <div class=\"opts\">\n        <button type=\"button\" class=\"opt\" data-val=\"truck\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Truck \/ lorry<\/span><span class=\"d\">Cab of a tractor unit or rigid truck<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"bw\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Van \/ minibus<\/span><span class=\"d\">Delivery van or passenger car<\/span><\/span><\/button>\n      <\/div>\n    <\/section>\n\n    <section class=\"screen\" data-key=\"samenstelling\" data-group=\"kz\" aria-label=\"Composition\">\n      <h2 class=\"q\">Which composition?<\/h2>\n      <p class=\"qsub\">4 cleans per year at a fixed monthly price (10% discount, no travel costs).<\/p>\n      <div class=\"opts\" id=\"cwKzOpts\"><\/div>\n    <\/section>\n\n    <section class=\"screen\" data-key=\"pakket\" data-group=\"pakket\" aria-label=\"Package\">\n      <h2 class=\"q\">Which interior package?<\/h2>\n      <p class=\"qsub\">Each package builds on the previous one.<\/p>\n      <div class=\"opts\">\n        <button type=\"button\" class=\"opt\" data-val=\"eco\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Eco-Clean<\/span><span class=\"d\">Plastics, compartments &amp; windows &middot; full vacuuming &middot; air freshener<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"hygiene\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Hygiene <span class=\"tag\">Most popular<\/span><\/span><span class=\"d\">Eco-Clean + deep steam cleaning: mattress, seats &amp; mats<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"antireuk\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">Anti-odour<\/span><span class=\"d\">Hygiene + steam cleaning of headliner &amp; walls, against stubborn odours<\/span><\/span><\/button>\n      <\/div>\n    <\/section>\n\n    <section class=\"screen\" data-key=\"freq\" data-group=\"freq\" aria-label=\"Frequency\">\n      <h2 class=\"q\">How often per month?<\/h2>\n      <p class=\"qsub\">Clean more often = bigger discount.<\/p>\n      <div class=\"opts\">\n        <button type=\"button\" class=\"opt\" data-val=\"1\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">1&times; per month<\/span><span class=\"d\">Monthly<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"2\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">2&times; per month<\/span><span class=\"d\">Every 2 weeks<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"6\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">6&times; per month<\/span><span class=\"d\">About 1.5&times; per week<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"12\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">12&times; per month<\/span><span class=\"d\">About 3&times; per week<\/span><\/span><\/button>\n      <\/div>\n    <\/section>\n\n    <section class=\"screen\" data-key=\"looptijd\" data-group=\"looptijd\" aria-label=\"Term\">\n      <h2 class=\"q\">For how long?<\/h2>\n      <p class=\"qsub\">Longer term = extra benefit.<\/p>\n      <div class=\"opts\">\n        <button type=\"button\" class=\"opt\" data-val=\"1\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">1 year<\/span><span class=\"d\">Entry discount<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"3\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">3 years<\/span><span class=\"d\">More benefit<\/span><\/span><\/button>\n        <button type=\"button\" class=\"opt\" data-val=\"5\"><span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">5 years<\/span><span class=\"d\">Maximum benefit<\/span><\/span><\/button>\n      <\/div>\n    <\/section>\n\n\n\n    <section class=\"screen\" data-key=\"result\" aria-label=\"Result\" aria-live=\"polite\">\n      <div class=\"rlabel\" id=\"cwRlabel\">Interior subscription &middot; per month (SEPA)<\/div>\n      <div class=\"price\"><span id=\"cwMonth\">&euro;0<\/span> <span class=\"per\">\/ month<\/span><\/div>\n      <div class=\"rsub\">excl. VAT &middot; direct debit<\/div>\n      <div class=\"discount\" id=\"cwDisc\">&minus;0% discount<\/div>\n      <div class=\"rrows\">\n        <div class=\"row\"><span class=\"k\" id=\"cwK1\">Price per clean<\/span><span class=\"v\" id=\"cwV1\">&euro;0<\/span><\/div>\n        <div class=\"row\"><span class=\"k\" id=\"cwCountK\">Cleans per year<\/span><span class=\"v\" id=\"cwCount\">0&times;<\/span><\/div>\n        <div class=\"row\"><span class=\"k\">Total per year<\/span><span class=\"v\" id=\"cwYear\">&euro;0<\/span><\/div>\n      <\/div>\n\n      <div class=\"summary\" id=\"cwSummary\"><\/div>\n      <p class=\"perkhead\">Included with every subscription<\/p>\n      <ul class=\"perks\">\n        <li>Clean stays clean &mdash; steam cleaning degreases the cab, so dirt sticks less and the driver finds it easier to keep tidy<\/li>\n        <li>Happy drivers &mdash; working in a freshly cleaned cab is motivating<\/li>\n        <li>Fresh start &mdash; give your (new) drivers a fresh start<\/li>\n        <li>Fixed monthly price, no surprises &mdash; easy to budget<\/li>\n        <li>Clarity: one invoice per month listing all licence plates, fleet numbers, packages, cleaning dates, locations &amp; extra vehicles<\/li>\n        <li>Flexible scheduling &mdash; we come when it suits you<\/li>\n        <li>Time saved &mdash; no separate invoices per clean, everything automatically via SEPA<\/li>\n        <li>Priority when busy &mdash; subscription customers come first in peak periods<\/li>\n        <li>No travel costs (worth &euro;55 per visit)<\/li>\n      <\/ul>\n      <a class=\"cta\" href=\"https:\/\/cabinereinigen.nl\/en\/schedule-cleaning\/\" id=\"cwCta\">Request this subscription<\/a>\n      <button type=\"button\" class=\"restart\" id=\"cwRestart\">&#8635; Start over<\/button>\n    <\/section>\n\n    <div class=\"nav\"><button type=\"button\" class=\"back\" id=\"cwBack\" hidden><span class=\"arw\">&larr;<\/span> Back<\/button><\/div>\n  <\/div>\n<\/div>\n<p class=\"foot\">Amounts excl. VAT &middot; frequency = cleans per month &middot; indicative calculator based on the 2026 price list.<\/p>\n\n<script>\n(function(){\n  var root=document.getElementById('cabwiz'); if(!root) return;\n\n  \/* =====================================================================\n     CONFIG \u2014 all prices, discounts and labels live here. Only edit this\n     object when the final prices are in.\n     ===================================================================== *\/\n  var CONFIG={\n    \/\/ Destination of \"Request this subscription\" (Gravity Form, dynamic population: advies \/ totaal \/ details). Placeholder EN URL.\n    aanvraagUrl:\"\/en\/schedule-cleaning\/\",\n    tiers:{\n      kz:  {naam:\"Freelancer \/ Small business\"},   \/\/ fleets up to 10 vehicles\n      maat:{naam:\"Fleet owners\"}            \/\/ from 10 vehicles\n    },\n    prijzen:{\n      \/\/ Fleet owners: base price per clean (excl. VAT) per vehicle type and package\n      basis:{truck:{eco:199,hygiene:325,antireuk:399}, bw:{eco:125,hygiene:199,antireuk:250}},\n      \/\/ Fleet owners: discount [term in years][cleans per month]\n      korting:{\"1\":{\"1\":.10,\"2\":.15,\"6\":.20,\"12\":.25},\"3\":{\"1\":.20,\"2\":.25,\"6\":.30,\"12\":.35},\"5\":{\"1\":.30,\"2\":.35,\"6\":.40,\"12\":.45}},\n      \/\/ Freelancer \/ Small business: fixed price per month (excl. VAT), 4 cleans per year\n      kleinZakelijk:{truck:{eco:59.70,hyg:69.15,anti:74.70}, bw:{eco:37.50,hyg:43.05,anti:46.88}}\n    },\n    labels:{\n      kzLang:{eco:\"4\u00d7 Eco-Clean\",hyg:\"1\u00d7 Hygiene + 3\u00d7 Eco-Clean\",anti:\"1\u00d7 Anti-odour + 3\u00d7 Eco-Clean\"},\n      kzKort:{eco:\"4\u00d7 Eco\",hyg:\"1\u00d7 Hygiene + 3\u00d7 Eco\",anti:\"1\u00d7 Anti-odour + 3\u00d7 Eco\"},\n      pakket:{eco:\"Eco-Clean\",hygiene:\"Hygiene\",antireuk:\"Anti-odour\"},\n      voertuig:{truck:\"truck\",bw:\"van\"},\n      freq:{\"1\":\"1\u00d7 per month\",\"2\":\"2\u00d7 per month\",\"6\":\"6\u00d7 per month\",\"12\":\"12\u00d7 per month\"},\n      freqKort:{\"1\":\"1\u00d7\/month\",\"2\":\"2\u00d7\/month\",\"6\":\"6\u00d7\/month\",\"12\":\"12\u00d7\/month\"}\n    }\n  };\n  var BASE=CONFIG.prijzen.basis, DISC=CONFIG.prijzen.korting, KZ=CONFIG.prijzen.kleinZakelijk;\n  var KZLONG=CONFIG.labels.kzLang, KZSHORT=CONFIG.labels.kzKort, PKG=CONFIG.labels.pakket, VEH=CONFIG.labels.voertuig;\n  var KZORDER=[\"eco\",\"hyg\",\"anti\"];\n  var NAMES={mode:\"Type\",voertuig:\"Vehicle\",samenstelling:\"Composition\",pakket:\"Package\",freq:\"Frequency\",looptijd:\"Term\"};\n\n  var state={mode:\"kz\",voertuig:\"truck\",kz:\"hyg\",pakket:\"hygiene\",freq:\"1\",looptijd:\"1\"};\n  var chosen={mode:false,voertuig:false,kz:false,pakket:false,freq:false,looptijd:false};\n  var pos=0;\n\n  var eur0=new Intl.NumberFormat('en-GB',{style:'currency',currency:'EUR',minimumFractionDigits:0,maximumFractionDigits:0});\n  var eur2=new Intl.NumberFormat('en-GB',{style:'currency',currency:'EUR',minimumFractionDigits:2,maximumFractionDigits:2});\n  function g(id){return root.querySelector('#'+id);}\n  function scr(key){return root.querySelector('.screen[data-key=\"'+key+'\"]');}\n  function plain(s){return String(s).replace(\/<[^>]+>\/g,'').replace(\/\u00a0\/g,' ');}\n  var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion:reduce)').matches;\n\n  function flow(){\n    var f=[\"mode\",\"voertuig\"];\n    if(state.mode===\"kz\") f.push(\"samenstelling\");\n    else f.push(\"pakket\",\"freq\",\"looptijd\");\n    return f;\n  }\n\n  function syncPressed(key){\n    var s=scr(key); if(!s) return; var grp=s.getAttribute('data-group'); if(!grp) return;\n    s.querySelectorAll('.opt').forEach(function(b){ b.setAttribute('aria-pressed',(chosen[grp]&&b.getAttribute('data-val')===state[grp])?'true':'false'); });\n  }\n\n  function buildSamen(){\n    var host=g('cwKzOpts'); host.innerHTML=\"\";\n    KZORDER.forEach(function(k){\n      var b=document.createElement('button'); b.type=\"button\"; b.className=\"opt\"; b.setAttribute('data-val',k);\n      b.innerHTML='<span class=\"mark\"><\/span><span class=\"body-t\"><span class=\"t\">'+KZLONG[k]+'<\/span><\/span><span class=\"pz\">'+eur2.format(KZ[state.voertuig][k])+' \/month<\/span>';\n      host.appendChild(b);\n    });\n    syncPressed('samenstelling');\n  }\n\n  function show(i){\n    var f=flow(); if(i>f.length) i=f.length; pos=i;\n    var showResult=(i>=f.length);\n    root.querySelectorAll('.screen').forEach(function(s){ s.classList.remove('active'); });\n    if(showResult){ scr('result').classList.add('active'); renderResult(); }\n    else {\n      var key=f[i];\n      if(key===\"samenstelling\") buildSamen();\n      scr(key).classList.add('active'); syncPressed(key);\n      var fbtn=scr(key).querySelector('.opt'); if(fbtn){try{fbtn.focus({preventScroll:true});}catch(e){}}\n    }\n    var total=f.length;\n    var pct=showResult?100:((i+1)\/total*100); g('cwbar').style.width=pct+'%';\n    if(showResult){ g('cwstep').textContent=\"Done\"; g('cwname').textContent=\"Result\"; }\n    else { g('cwstep').textContent=\"Step \"+(i+1)+\" of \"+total; g('cwname').textContent=NAMES[f[i]]; }\n    g('cwBack').hidden=(i===0);\n  }\n\n  function renderResult(){\n    var summary=\"\", advies=\"\", totaal=\"\", details=\"\";\n    if(state.mode===\"kz\"){\n      var tier=CONFIG.tiers.kz.naam;\n      var m=KZ[state.voertuig][state.kz], yr=m*12;\n      totaal=plain(eur2.format(m))+\" \/ month\";\n      g('cwRlabel').textContent=tier+\" \u00b7 per month (SEPA)\";\n      g('cwMonth').textContent=eur2.format(m);\n      g('cwDisc').textContent=\"\u221210% \u00b7 no travel costs\";\n      g('cwK1').textContent=\"Composition\";\n      g('cwV1').textContent=KZSHORT[state.kz];\n      g('cwCountK').textContent=\"Cleans per year\";\n      g('cwCount').textContent=\"4\u00d7\";\n      g('cwYear').textContent=eur2.format(yr);\n      summary='<b>'+tier+'<\/b> for your <b>'+VEH[state.voertuig]+'<\/b> &middot; '+KZLONG[state.kz]+' &middot; 4\u00d7 per year.';\n      advies=\"Subscription \"+tier+\" \u2013 \"+KZLONG[state.kz]+\", 4\u00d7\/year\";\n      details=[\"Subscription type: \"+tier,\"Vehicle: \"+VEH[state.voertuig],\"Composition: \"+KZLONG[state.kz],\"Cleans per year: 4\u00d7\",\"Discount: 10% \u00b7 no travel costs\",\"Total per month: \"+totaal+\" (excl. VAT)\",\"Total per year: \"+plain(eur2.format(yr))+\" (excl. VAT)\"].join(\"\\n\");\n    } else {\n      var tier2=CONFIG.tiers.maat.naam;\n      var base=BASE[state.voertuig][state.pakket], disc=DISC[state.looptijd][state.freq], freq=parseInt(state.freq,10);\n      var perClean=base*(1-disc), perMonth=perClean*freq, perYear=perMonth*12;\n      totaal=plain(eur2.format(perMonth))+\" \/ month\";\n      g('cwRlabel').textContent=tier2+\" \u00b7 per month (SEPA)\";\n      g('cwMonth').textContent=eur2.format(perMonth);\n      g('cwDisc').textContent=\"\u2212\"+Math.round(disc*100)+\"% discount\";\n      g('cwK1').textContent=\"Price per clean\";\n      g('cwV1').innerHTML='<span class=\"old\">'+eur0.format(base)+'<\/span>'+eur2.format(perClean);\n      g('cwCountK').textContent=\"Cleans per month\";\n      g('cwCount').textContent=freq+\"\u00d7\";\n      g('cwYear').textContent=eur2.format(perYear);\n      var ft=CONFIG.labels.freq[state.freq];\n      summary='<b>'+tier2+'<\/b> &middot; <b>'+PKG[state.pakket]+'<\/b> for your <b>'+VEH[state.voertuig]+'<\/b> &middot; '+ft+' &middot; term <b>'+state.looptijd+(state.looptijd==='1'?' year':' years')+'<\/b>.';\n      advies=\"Subscription \"+tier2+\" \u2013 \"+PKG[state.pakket]+\", \"+CONFIG.labels.freqKort[state.freq]+\", \"+state.looptijd+(state.looptijd===\"1\"?\" year\":\" years\");\n      details=[\"Subscription type: \"+tier2,\"Vehicle: \"+VEH[state.voertuig],\"Package: \"+PKG[state.pakket],\"Cleans per month: \"+freq+\"\u00d7\",\"Term: \"+state.looptijd+(state.looptijd===\"1\"?\" year\":\" years\"),\"Discount: \"+Math.round(disc*100)+\"%\",\"Price per clean: \"+plain(eur2.format(perClean))+\" (excl. VAT)\",\"Total per month: \"+totaal+\" (excl. VAT)\",\"Total per year: \"+plain(eur2.format(perYear))+\" (excl. VAT)\"].join(\"\\n\");\n    }\n    g('cwSummary').innerHTML=summary;\n    var cta=g('cwCta');\n    if(cta){\n      cta.href=CONFIG.aanvraagUrl+'?advies='+encodeURIComponent(advies)+'&totaal='+encodeURIComponent(totaal)+'&details='+encodeURIComponent(details);\n    }\n  }\n\n  root.querySelectorAll('.screen[data-group]').forEach(function(s){\n    var grp=s.getAttribute('data-group');\n    s.addEventListener('click',function(e){\n      var btn=e.target.closest('.opt'); if(!btn) return;\n      var val=btn.getAttribute('data-val');\n      state[grp]=val; chosen[grp]=true;\n      s.querySelectorAll('.opt').forEach(function(b){ b.setAttribute('aria-pressed',b===btn?'true':'false'); });\n      setTimeout(function(){ show(pos+1); }, reduce?0:200);\n    });\n  });\n\n  g('cwBack').addEventListener('click',function(){ show(Math.max(pos-1,0)); });\n  g('cwRestart').addEventListener('click',function(){\n    state={mode:\"kz\",voertuig:\"truck\",kz:\"hyg\",pakket:\"hygiene\",freq:\"1\",looptijd:\"1\"};\n    chosen={mode:false,voertuig:false,kz:false,pakket:false,freq:false,looptijd:false};\n    show(0);\n  });\n\n  show(0);\n})();\n<\/script>\n<\/div>\n\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Why a subscription? Because we can plan routes more efficiently for subscription customers, we fit more cleans into the same&#8230;<\/p>\n","protected":false},"author":1,"featured_media":4319,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-4546","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/pages\/4546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/comments?post=4546"}],"version-history":[{"count":4,"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/pages\/4546\/revisions"}],"predecessor-version":[{"id":4638,"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/pages\/4546\/revisions\/4638"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/media\/4319"}],"wp:attachment":[{"href":"https:\/\/cabinereinigen.nl\/en\/wp-json\/wp\/v2\/media?parent=4546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}