{"id":118305,"date":"2026-09-30T08:06:39","date_gmt":"2026-09-30T08:06:39","guid":{"rendered":"https:\/\/ohmycad.com\/?page_id=118305"},"modified":"2026-09-30T08:06:39","modified_gmt":"2026-09-30T08:06:39","slug":"ohmycare-cancellation","status":"publish","type":"page","link":"https:\/\/ohmycad.com\/en-ca\/resiliation-ohmycare\/","title":{"rendered":"Ohmycare Cancellation"},"content":{"rendered":"<main id='bde-main'><section class=\"bde-section-118305-990001 bde-section omc-fullbleed\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><div class=\"bde-code-block-118305-990002 bde-code-block\">\n\n  <!-- OHMYCAD \/resiliation-ohmycare\/ : flow de r\u00e9siliation Ohmycare (v3 du 16\/09, port\u00e9 de hub.ohmycad.com le 30\/09\/2026). Scope .rz, CSS inject\u00e9e par le script, dictionnaire I18N FR\/EN\/ES\/NL\/DE (PT \u2192 EN), envoi HubSpot Forms API. -->\n<div class=\"rz\" data-no-translation data-no-dynamic-translation>\n<div class=\"rz-wrap\">\n  <div class=\"rz-inner\">\n    <div class=\"rz-card\">\n\n      <div class=\"rz-rail\">\n        <div class=\"rz-rail-tex\"><\/div>\n        <svg class=\"rz-logo\" viewBox=\"0 0 526.91 120.57\" fill=\"#ffffff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Ohmycad\">\n          <path d=\"M224.93,79.03c0,6.47-2.28,11.99-6.85,16.56-4.56,4.56-10.08,6.84-16.56,6.84s-11.99-2.28-16.56-6.84c-4.56-4.56-6.84-10.08-6.84-16.56s2.28-11.99,6.84-16.56c4.56-4.56,10.08-6.84,16.56-6.84s11.99,2.28,16.56,6.84c4.56,4.56,6.85,10.08,6.85,16.56ZM212.64,79.03c0-3.08-1.08-5.7-3.25-7.87-2.16-2.16-4.79-3.25-7.87-3.25s-5.7,1.08-7.87,3.25c-2.16,2.16-3.25,4.79-3.25,7.87s1.08,5.7,3.25,7.87c2.16,2.16,4.79,3.25,7.87,3.25s5.7-1.08,7.87-3.25c2.16-2.16,3.25-4.79,3.25-7.87Z\"\/>\n          <path d=\"M269.56,101.26h-12.29v-25.62c0-2.14-.76-3.97-2.28-5.47-1.52-1.5-3.35-2.25-5.5-2.25s-3.97.75-5.47,2.25c-1.5,1.5-2.25,3.33-2.25,5.47v25.62h-12.29v-59.09h12.29v16.97c2.54-2.34,5.69-3.51,9.48-3.51,5.19,0,9.54,1.94,13.05,5.82,3.51,3.88,5.27,8.61,5.27,14.19v25.62Z\"\/>\n          <path d=\"M343.16,101.26h-12.29v-25.62c0-2.14-.76-3.97-2.28-5.47-1.52-1.5-3.35-2.25-5.5-2.25-1.99,0-3.8.94-5.44,2.81-1.52,1.72-2.28,3.35-2.28,4.91v25.62h-12.29v-25.62c0-2.14-.76-3.97-2.28-5.47-1.52-1.5-3.35-2.25-5.5-2.25s-3.97.75-5.47,2.25c-1.5,1.5-2.25,3.33-2.25,5.47v25.62h-12.29v-44.46h12.29v2.34c2.54-2.34,5.69-3.51,9.48-3.51,4.91,0,9.09,1.75,12.52,5.27,3.82-3.51,8.33-5.27,13.51-5.27,5.54,0,10.27,1.95,14.19,5.85,3.92,3.9,5.88,8.62,5.88,14.16v25.62Z\"\/>\n          <path d=\"M389.66,56.8l-24.51,62.01h-13.34l7.49-18.95-17.03-43.07h13.27l10.45,26.28,10.39-26.28h13.27Z\"\/>\n          <path d=\"M427.86,62.71l-8.77,8.72c-2.26-2.34-4.95-3.51-8.07-3.51s-5.7,1.08-7.87,3.25c-2.16,2.16-3.25,4.79-3.25,7.87s1.08,5.7,3.25,7.87c2.16,2.16,4.79,3.25,7.87,3.25s5.81-1.19,8.07-3.57l8.72,8.77c-4.72,4.72-10.32,7.08-16.79,7.08s-11.99-2.28-16.56-6.84c-4.56-4.56-6.84-10.08-6.84-16.56s2.28-11.99,6.84-16.56c4.56-4.56,10.08-6.84,16.56-6.84s12.05,2.36,16.85,7.08Z\"\/>\n          <path d=\"M474.37,101.26h-12.29v-3.04c-2.46,2.81-6.55,4.21-12.28,4.21-6.4,0-11.7-2.26-15.91-6.79-4.21-4.52-6.32-10.06-6.32-16.61s2.14-12.04,6.44-16.59c4.29-4.54,9.55-6.82,15.8-6.82,5.65,0,9.75,1.42,12.28,4.27v-3.1h12.29v44.46ZM462.09,79.03c0-3.08-1.08-5.7-3.25-7.87-2.16-2.16-4.79-3.25-7.87-3.25s-5.7,1.08-7.87,3.25-3.25,4.79-3.25,7.87,1.08,5.7,3.25,7.87c2.16,2.16,4.79,3.25,7.87,3.25s5.7-1.08,7.87-3.25c2.16-2.16,3.25-4.79,3.25-7.87Z\"\/>\n          <path d=\"M526.91,101.26h-12.29v-3.04c-2.46,2.81-6.55,4.21-12.29,4.21-6.4,0-11.7-2.26-15.91-6.79-4.21-4.52-6.32-10.06-6.32-16.61s2.14-12.04,6.44-16.59c4.29-4.54,9.56-6.82,15.8-6.82,5.65,0,9.75,1.42,12.29,4.27v-17.73h12.29v59.09ZM514.62,79.03c0-3.08-1.08-5.7-3.25-7.87-2.16-2.16-4.79-3.25-7.87-3.25s-5.7,1.08-7.87,3.25c-2.16,2.16-3.25,4.79-3.25,7.87s1.08,5.7,3.25,7.87c2.16,2.16,4.79,3.25,7.87,3.25s5.7-1.08,7.87-3.25c2.16-2.16,3.25-4.79,3.25-7.87Z\"\/>\n          <polygon points=\"74.38 53.38 91.18 43.67 91.18 63.43 74.38 53.38\"\/>\n          <polygon points=\"96.3 45.66 115.6 57.21 115.6 78.05 96.3 66.5 96.3 45.66\"\/>\n          <polygon points=\"135.32 42.24 117.84 52.57 97.18 40.2 114.85 29.99 135.32 42.24\"\/>\n          <polygon points=\"120.72 60.28 138.83 71.12 138.83 91.96 120.72 81.12 120.72 60.28\"\/>\n          <polygon points=\"158.9 56.34 141.41 66.68 122.85 55.57 140.33 45.24 158.9 56.34\"\/>\n          <polygon points=\"159.34 62.03 143.96 71.12 143.96 91.69 159.34 82.59 159.34 62.03\"\/>\n          <polygon points=\"159.34 88.55 143.96 97.64 143.96 120.57 159.34 111.32 159.34 88.55\"\/>\n          <path d=\"M73.44,93.24l17,9.72H29.43c-16.23,0-29.43-13.2-29.43-29.43,0-14.58,10.46-26.75,24.65-29.05.8-8.87,3.96-17.04,8.83-23.89,1.47,3.07,3.91,5.58,6.94,7.12-3.96,6.13-6.26,13.42-6.26,21.24v4.84l-4.84.02c-10.81.04-19.62,8.9-19.62,19.72s8.84,19.71,19.72,19.71h44.01Z\"\/>\n          <path d=\"M112.87,19.94l-8.49,4.9c-7.51-9.62-18.78-15.14-30.97-15.14-3.8,0-7.47.54-10.95,1.56-.61-3.41-2.36-6.43-4.84-8.66,4.96-1.69,10.28-2.6,15.79-2.6,15.27,0,29.39,6.93,38.74,19.02l.71.92Z\"\/>\n          <path d=\"M56.44,14.01c0,5.02-4.07,9.07-9.09,9.07-1.05,0-2.05-.18-2.98-.5-3.3-1.15-5.75-4.16-6.06-7.77-.02-.27-.03-.53-.03-.8,0-5.02,4.06-9.07,9.07-9.07,1.19,0,2.31.22,3.35.63,3.24,1.28,5.56,4.36,5.73,8.01.01.14.01.29.01.43Z\"\/>\n          <polygon points=\"138.83 97.93 138.83 119.77 71.48 81.33 71.48 57.62 138.83 97.93\"\/>\n          <polygon points=\"115.97 57.43 95.88 45.02 95.88 91.82 115.97 91.82 115.97 57.43\"\/>\n        <\/svg>\n        <div class=\"rz-rail-bottom\">\n          <div class=\"rz-kicker-row\"><span class=\"rz-kicker-bar\"><\/span><span class=\"rz-kicker\" id=\"railKicker\">R\u00e9siliation Ohmycare<\/span><\/div>\n          <div class=\"rz-stepnum\" id=\"railNum\">01<small> \/ 03<\/small><\/div>\n          <div class=\"rz-stepname\" id=\"railName\"><\/div>\n          <div class=\"rz-segs\"><span id=\"seg1\"><\/span><span id=\"seg2\"><\/span><span id=\"seg3\"><\/span><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"rz-content\">\n        <div id=\"stepHost\"><\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n<\/div>\n<script nowprocket>\n(function () {\n  'use strict';\n\n  \/* CSS du flow, inject\u00e9e ici (et pas en <style> statique) pour rester hors du \u00ab Used CSS \u00bb de WP Rocket *\/\n  var RZ_CSS = \".bde-section-118305-990001>.section-container{max-width:none!important;padding:0!important}\\n  .bde-code-block-118305-990002{width:100%!important;max-width:none!important;padding:0!important;margin:0!important}\\n  .rz{width:100%;flex:1 1 100%;box-sizing:border-box}\\n  .rz .rz-card{scroll-margin-top:96px}\\n.rz a{color:#008CDF;text-decoration:none}.rz a:hover{color:#0070C0;text-decoration:underline}\\n  .rz input::placeholder,.rz textarea::placeholder{color:#8A8F98}\\n  @keyframes rzStepA{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\\n  @keyframes rzStepB{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\\n  .rz .rz-wrap{min-height:calc(100vh - 90px);display:flex;flex-direction:column;align-items:center;padding:clamp(16px,4vw,44px) 0 56px;box-sizing:border-box;background:#F3F4F6;font-family:Inter,'Segoe UI',Arial,sans-serif;color:#5C5C5C;-webkit-font-smoothing:antialiased;line-height:1.5}\\n  .rz .rz-inner{width:100%;max-width:900px;padding:0 clamp(0px,3vw,16px);box-sizing:border-box}\\n  .rz .rz-card{display:flex;flex-wrap:wrap;background:#FFFFFF;border:1px solid #E3E6EB;border-radius:10px;overflow:hidden;box-shadow:0 8px 24px rgba(6,40,61,.08)}\\n  .rz .rz-rail{position:relative;flex:1 1 230px;background:#06283D;overflow:hidden;display:flex;flex-direction:column;gap:22px;padding:clamp(22px,4vw,30px);box-sizing:border-box}\\n  .rz .rz-rail-tex,.rz .rz-offer-tex{position:absolute;inset:0;overflow:hidden;pointer-events:none}.rz .rz-rail-tex{opacity:.12}\\n  .rz .rz-logo{position:relative;height:20px;width:auto;display:block;align-self:flex-start}\\n  .rz .rz-rail-bottom{position:relative;margin-top:auto}\\n  .rz .rz-kicker-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}\\n  .rz .rz-kicker-bar{width:26px;height:2px;background:#7fd0ff}\\n  .rz .rz-kicker{font-family:Archivo,Inter,sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7fd0ff}\\n  .rz .rz-stepnum{font-family:Archivo,Inter,sans-serif;font-size:clamp(38px,6vw,52px);font-weight:800;line-height:1;color:#FFFFFF}\\n  .rz .rz-stepnum small{font-size:16px;font-weight:700;color:rgba(255,255,255,.45)}\\n  .rz .rz-stepname{font-size:15px;font-weight:600;color:#FFFFFF;margin-top:8px}\\n  .rz .rz-segs{display:flex;gap:4px;margin-top:16px}\\n  .rz .rz-segs span{height:3px;flex:1;background:rgba(255,255,255,.18)}\\n  .rz .rz-content{flex:999 1 340px;padding:clamp(24px,5vw,40px);box-sizing:border-box;min-width:0}\\n  .rz .rz-step h1,.rz .rz-done h1{text-transform:none;font-family:inherit;padding:0}\\n  .rz .rz-step h1{font-size:clamp(24px,4.5vw,30px);font-weight:800;color:#06283D;margin:0 0 10px;line-height:1.2;letter-spacing:-.01em}\\n  .rz .rz-lead{font-size:15.5px;line-height:1.6;margin:0 0 28px}\\n  .rz .rz-qlabel{display:block;font-family:Archivo,Inter,sans-serif;font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#06283D;margin-bottom:12px}\\n  .rz .rz-qlabel .req{color:#DA291C}\\n  .rz .rz-qlabel .opt{font-weight:400;letter-spacing:0;text-transform:none;color:#8A8F98;font-family:Inter,sans-serif;font-size:12.5px}\\n  .rz .rz-opts{display:flex;flex-direction:column;gap:8px}\\n  .rz .rz-opt{display:flex;gap:12px;align-items:center;padding:13px 15px;border:1.5px solid #E3E6EB;background:#FFFFFF;border-radius:10px;cursor:pointer;min-height:48px;box-sizing:border-box;transition:border-color .15s,box-shadow .15s,background .15s}\\n  .rz .rz-opt:hover{border-color:#008CDF;box-shadow:0 8px 24px rgba(6,40,61,.10)}\\n  .rz .rz-opt:focus-visible{border-color:#008CDF;box-shadow:0 0 0 3px rgba(0,140,223,.16);outline:none}\\n  .rz .rz-opt.sel{border-color:#008CDF;background:rgba(0,140,223,.08)}\\n  .rz .rz-opt-main{flex:1;min-width:0}\\n  .rz .rz-opt-label{font-size:15px;font-weight:600;color:#06283D;line-height:1.4}\\n  .rz .rz-opt-tag{display:inline-flex;vertical-align:2px;margin-left:6px;font-family:Archivo,Inter,sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#008CDF;border:1px solid #008CDF;border-radius:4px;padding:2px 8px;white-space:nowrap}\\n  .rz .rz-check{flex:none;width:20px;height:20px;border-radius:4px;border:1.5px solid #C7D0D8;background:transparent;display:flex;align-items:center;justify-content:center;box-sizing:border-box}\\n  .rz .rz-check svg{opacity:0}\\n  .rz .rz-opt.sel .rz .rz-check{border-color:#008CDF;background:#008CDF}\\n  .rz .rz-opt.sel .rz .rz-check svg{opacity:1}\\n  .rz .rz-input,.rz .rz-textarea{width:100%;box-sizing:border-box;border:1.5px solid #E3E6EB;border-radius:9px;font-size:15px;font-family:inherit;color:#06283D}\\n  .rz .rz-input{height:48px;padding:0 14px}\\n  .rz .rz-input,.rz .rz-textarea{background:#FFFFFF;margin:0;box-shadow:none;outline:none}\\n  .rz .rz-textarea{padding:12px 14px;line-height:1.5;resize:vertical}\\n  .rz .rz-input:focus,.rz .rz-textarea:focus{border-color:#008CDF;box-shadow:0 0 0 3px rgba(0,140,223,.16);outline:none}\\n  .rz .rz-btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 22px;border:none;border-radius:9px;background:#008CDF;color:#FFFFFF;font-family:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s;box-sizing:border-box}\\n  .rz .rz-btn{text-transform:none;letter-spacing:0;line-height:1;text-decoration:none;margin:0;box-shadow:none}\\n  .rz .rz-btn:hover{background:#0070C0;color:#FFFFFF;text-decoration:none}\\n  .rz .rz-btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(0,140,223,.16)}\\n  .rz .rz-btn:disabled{opacity:.45;cursor:not-allowed;background:#008CDF}\\n  .rz .rz-btn.ghost{background:transparent;border:1.5px solid #E3E6EB;color:#06283D}\\n  .rz .rz-btn.ghost:hover{background:#F3F4F6;border-color:#C7D0D8}\\n  .rz .rz-loss-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}\\n  .rz .rz-loss-bar{width:26px;height:2px;background:#008CDF}\\n  .rz .rz-loss-kicker{font-family:Archivo,Inter,sans-serif;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#06283D}\\n  .rz .rz-loss-row{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-bottom:1px solid #E3E6EB}\\n  .rz .rz-loss-x{flex:none;color:#DA291C;font-size:13px;line-height:1.6;font-weight:600}\\n  .rz .rz-loss-t{font-size:14.5px;line-height:1.5}\\n  .rz .rz-offer{position:relative;background:#06283D;border-radius:10px;padding:22px;margin-bottom:26px;overflow:hidden}\\n  .rz .rz-offer-tex{opacity:.10}\\n  .rz .rz-offer-in{position:relative;display:flex;gap:16px;align-items:flex-start}\\n  .rz .rz-offer-ico{flex:none;width:40px;height:40px;border-radius:9px;background:rgba(127,208,255,.16);display:flex;align-items:center;justify-content:center}\\n  .rz .rz-offer-kicker{display:block;font-family:Archivo,Inter,sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7fd0ff;margin-bottom:6px}\\n  .rz .rz-offer-title{display:block;font-size:17px;font-weight:700;color:#FFFFFF;margin-bottom:6px}\\n  .rz .rz-offer-text{display:block;font-size:14.5px;line-height:1.55;color:#DCE7EF}\\n  .rz .rz-nav{display:flex;gap:10px}\\n  .rz .rz-nav .rz .rz-btn.primary{flex:1}\\n  .rz .rz-reassure{border-top:1px solid #E3E6EB;padding-top:14px;margin-bottom:24px;font-size:13px;line-height:1.55;color:#8A8F98}\\n  .rz .rz-done{text-align:center;padding:26px 0 10px}\\n  .rz .rz-done-badge{display:inline-flex;width:56px;height:56px;border-radius:50%;border:1.5px solid #12B67A;background:rgba(18,182,122,.08);align-items:center;justify-content:center;margin-bottom:18px}\\n  .rz .rz-done h1{font-size:clamp(24px,4.5vw,30px);font-weight:800;color:#06283D;margin:0 0 10px;line-height:1.2;letter-spacing:-.01em}\\n  .rz .rz-done p{font-size:15.5px;line-height:1.6;margin:0 auto 22px;max-width:44ch}\\n  .rz .rz-done-foot{border-top:1px solid #E3E6EB;padding-top:16px;font-size:13.5px;color:#8A8F98;line-height:1.5}\\n  .rz .rz-err{color:#DA291C;font-size:13px;margin:-18px 0 20px;display:none}\\n\";\n  var rzStyle = document.createElement('style'); rzStyle.id = 'rz-css'; rzStyle.textContent = RZ_CSS; document.head.appendChild(rzStyle);\n\n  \/* ================= CONFIG ================= *\/\n  var PORTAL_ID = '8764694';\n  var FORM_GUID = '2c577889-7001-49fa-8c01-e7e36b8e9242';\n  var SHOW_PAUSE = true;         \/\/ option pause (\u00e0 valider par Victor) : false la retire sans casser l'\u00e9cran 2\n  var GENERIC_OFFER = false;     \/\/ true = variante g\u00e9n\u00e9rique \u00ab autre \u00bb pour tout le monde\n  \/* ========================================== *\/\n\n  \/* ============ LANGUE DE LA PAGE ============\n     Sur ohmycad.com, TranslatePress pose <html lang=\"fr-FR\" | \"en-US\" | \"pt-PT\" | \"es-ES\" | \"nl-NL\" | \"de-DE\">.\n     ?lang= reste prioritaire (test). Langue absente du dictionnaire (pt) \u2192 anglais. *\/\n  var htmlLang = (document.documentElement.getAttribute('lang') || '').toLowerCase();\n  var qLang = '';\n  try { qLang = new URLSearchParams(location.search).get('lang') || ''; } catch (e) {}\n  var PAGE_LANG = ((qLang || htmlLang).split('-')[0] || 'fr').toLowerCase();\n\n  var I18N = {\n    fr: {\n      title: 'R\u00e9siliation Ohmycare',\n      kicker: 'R\u00e9siliation Ohmycare',\n      stepNames: { 1: 'La raison de votre d\u00e9part', 2: 'Avant de confirmer', 3: 'Envoi de votre demande', 4: 'Demande envoy\u00e9e' },\n      h1Step1: 'Vous souhaitez r\u00e9silier Ohmycare',\n      qReason: 'Qu\u2019est-ce qui motive votre d\u00e9part ?',\n      reasons: { prix: 'Le prix ne se justifie plus', usage: \"On ne l'utilise pas assez\", qualite: \"Le service n'a pas r\u00e9pondu \u00e0 nos attentes\", activite: 'Notre activit\u00e9 change', concurrent: 'On passe chez un autre prestataire', autre: 'Autre raison' },\n      emailLabel: 'Votre email professionnel', emailPh: 'prenom@entreprise.fr',\n      btnContinue: 'Continuer', btnBack: 'Retour',\n      h1Step2: 'Avant de confirmer',\n      lossKicker: 'Ce qui s\u2019arr\u00eate avec la r\u00e9siliation',\n      losses: [\n        'Votre ing\u00e9nieur d\u00e9di\u00e9, qui conna\u00eet vos pi\u00e8ces, vos assemblages et vos m\u00e9thodes',\n        \"Le support Premium 5 j\/7, jamais bloqu\u00e9 : en cas d'incident, on contourne pour que votre pi\u00e8ce parte en production\",\n        'Le catalogue de 250+ sessions de productivit\u00e9 et le suivi des nouveaut\u00e9s & IA'\n      ],\n      offerKicker: 'Notre proposition',\n      offers: {\n        prix:       { icon: 'phone', intro: \"Vous trouvez que le service co\u00fbte plus qu'il ne rapporte. C'est exactement le sujet de votre commercial d\u00e9di\u00e9.\", title: \"Un point d'ad\u00e9quation de 15 minutes\", text: \"Notre r\u00e8gle : vous vendre ce que vous utilisez, rien de plus. On regarde ensemble vos licences, vos utilisateurs et votre usage r\u00e9el, \u00e0 la baisse si c'est ce que les chiffres disent.\", rdv: \"D'accord pour un point de 15 minutes avant de d\u00e9cider\" },\n        usage:      { icon: 'play', intro: \"Un service pas utilis\u00e9, c'est d'abord notre probl\u00e8me : venir vers vous fait partie de la m\u00e9thode.\", title: 'Testez une vraie session avant de couper', text: \"On planifie cette semaine une session de productivit\u00e9 avec votre ing\u00e9nieur d\u00e9di\u00e9 : gros assemblages, mises en plan, ce que vous voulez. Chaque session vise 2 \u00e0 5 % de temps gagn\u00e9. Vous d\u00e9ciderez apr\u00e8s.\", rdv: \"D'accord pour planifier une session avant de d\u00e9cider\" },\n        qualite:    { icon: 'phone', intro: \"Quelque chose n'a pas \u00e9t\u00e9 au niveau. On veut savoir quoi, pr\u00e9cis\u00e9ment.\", title: 'Un responsable vous rappelle sous 24 h', text: \"Pas un questionnaire de plus : un appel pour comprendre ce qui a manqu\u00e9, et vous dire concr\u00e8tement ce qu'on change.\", rdv: \"D'accord pour cet appel avant de d\u00e9cider\" },\n        activite:   { icon: 'pause', intro: \"Votre activit\u00e9 \u00e9volue, l'abonnement doit suivre, pas l'inverse.\", title: \"Une pause plut\u00f4t qu'une coupure\", text: \"Mettre l'abonnement en pause le temps de la transition : la facturation s'arr\u00eate, votre ing\u00e9nieur et votre historique vous attendent. \u00c7a se r\u00e8gle en un \u00e9change.\", rdv: \"D'accord pour un point de 15 minutes avant de d\u00e9cider\" },\n        concurrent: { icon: 'msg', intro: \"Vous avez choisi un autre prestataire. Avant de fermer le dossier, une chose nous int\u00e9resse.\", title: \"Qu'est-ce qui a fait la diff\u00e9rence ?\", text: \"Prix, p\u00e9rim\u00e8tre, relation : dites-le nous \u00e0 l'\u00e9tape suivante. Et si un point de 15 minutes peut rebattre les cartes, on est preneurs.\", rdv: \"D'accord pour un point de 15 minutes avant de d\u00e9cider\" },\n        autre:      { icon: 'msg', intro: \"Dites-nous en plus, et voyez si une des options ci-dessous vous convient mieux qu'une r\u00e9siliation s\u00e8che.\", title: 'On peut souvent faire autrement', text: \"Un point rapide avec votre commercial d\u00e9di\u00e9 permet d'ajuster l'abonnement (rythme, pause) au lieu de le couper.\", rdv: \"D'accord pour un point de 15 minutes avant de d\u00e9cider\" }\n      },\n      qSave: 'Que pr\u00e9f\u00e9rez-vous ?',\n      pauseLabel: 'Mettre l\u2019abonnement en pause', pauseTag: 'jusqu\u2019\u00e0 3 mois',\n      confirmLabel: 'Je confirme la r\u00e9siliation',\n      h1Step3: 'Votre demande de r\u00e9siliation',\n      h1Step3Alt: 'Encore un mot',\n      leadStep3Alt: 'Bien not\u00e9, rien n\u2019est r\u00e9sili\u00e9. Envoyez votre demande et on organise la suite.',\n      verbatimLabel: 'Qu\u2019aurait-il fallu pour que vous restiez ?', optionalNote: '(facultatif)',\n      verbatimPh: 'Votre r\u00e9ponse nous sert vraiment : elle remonte telle quelle \u00e0 la direction.',\n      reassure: 'Aucune coupure imm\u00e9diate : vous gardez le service jusqu\u2019\u00e0 la fin de la p\u00e9riode d\u00e9j\u00e0 factur\u00e9e. La r\u00e9siliation prend effet \u00e0 la prochaine \u00e9ch\u00e9ance, et notre \u00e9quipe vous confirme la date exacte par email sous 24 h ouvr\u00e9es.',\n      errMsg: 'L\u2019envoi n\u2019a pas abouti. R\u00e9essayez, ou \u00e9crivez-nous en r\u00e9pondant \u00e0 l\u2019email qui vous a amen\u00e9 ici.',\n      btnSendConfirm: 'Envoyer ma demande', btnSend: 'Envoyer', sending: 'Envoi\u2026',\n      confirms: {\n        confirme: { title: \"C'est transmis\", text: \"Vous recevrez la confirmation avec la date de fin de votre abonnement sous 24 h ouvr\u00e9es. D'ici l\u00e0, le service continue normalement.\" },\n        rdv:      { title: 'On vous recontacte', text: \"On vous appelle sous 24 h ouvr\u00e9es pour le rendez-vous convenu. Rien n'est r\u00e9sili\u00e9 d'ici l\u00e0.\" },\n        pause:    { title: 'Pause enregistr\u00e9e', text: \"On vous confirme sous 24 h ouvr\u00e9es la date de mise en pause et la date de reprise. Votre ing\u00e9nieur et votre historique vous attendent.\" }\n      },\n      doneFoot: 'Merci pour le temps pass\u00e9 avec nous. La porte reste ouverte.'\n    },\n\n    en: {\n      title: 'Ohmycare cancellation',\n      kicker: 'Ohmycare cancellation',\n      stepNames: { 1: 'Why you are leaving', 2: 'Before you confirm', 3: 'Send your request', 4: 'Request sent' },\n      h1Step1: 'You want to cancel Ohmycare',\n      qReason: 'What is behind your decision?',\n      reasons: { prix: 'The price is no longer worth it', usage: \"We don't use it enough\", qualite: \"The service didn't meet our expectations\", activite: 'Our business is changing', concurrent: \"We're moving to another provider\", autre: 'Another reason' },\n      emailLabel: 'Your work email', emailPh: 'name@company.com',\n      btnContinue: 'Continue', btnBack: 'Back',\n      h1Step2: 'Before you confirm',\n      lossKicker: 'What stops when you cancel',\n      losses: [\n        'Your dedicated engineer, who knows your parts, assemblies and methods',\n        'Premium support 5 days a week, never stuck: when something breaks, we find a way around it so your part still goes to production',\n        'The catalogue of 250+ productivity sessions, plus the follow-up on new releases & AI'\n      ],\n      offerKicker: 'Our proposal',\n      offers: {\n        prix:       { icon: 'phone', intro: 'You feel the service costs more than it brings in. That is exactly what your dedicated sales contact is for.', title: 'A 15-minute fit review', text: 'Our rule: sell you what you use, nothing more. We look at your licences, users and actual usage together, and adjust downwards if that is what the numbers say.', rdv: 'OK for a 15-minute call before deciding' },\n        usage:      { icon: 'play', intro: 'A service you never use is our problem first: coming to you is part of the method.', title: 'Try a real session before you cut', text: 'This week we schedule a productivity session with your dedicated engineer: large assemblies, drawings, whatever you pick. Each session aims at 2 to 5% time saved. You decide afterwards.', rdv: 'OK to schedule a session before deciding' },\n        qualite:    { icon: 'phone', intro: 'Something was not up to standard. We want to know what, precisely.', title: 'A manager calls you back within 24 hours', text: 'Not another questionnaire: a call to understand what was missing, and tell you concretely what we change.', rdv: 'OK for that call before deciding' },\n        activite:   { icon: 'pause', intro: 'Your business is changing; the subscription should follow, not the other way round.', title: 'A pause rather than a cut', text: 'Pause the subscription during the transition: billing stops, your engineer and your history stay put. One conversation settles it.', rdv: 'OK for a 15-minute call before deciding' },\n        concurrent: { icon: 'msg', intro: 'You have chosen another provider. Before we close the file, one thing interests us.', title: 'What made the difference?', text: 'Price, scope, relationship: tell us on the next step. And if a 15-minute call can still change the outcome, we will take it.', rdv: 'OK for a 15-minute call before deciding' },\n        autre:      { icon: 'msg', intro: 'Tell us more, and see whether one of the options below suits you better than a hard stop.', title: 'There is often another way', text: 'A quick call with your dedicated sales contact can adjust the subscription (pace, pause) instead of cutting it.', rdv: 'OK for a 15-minute call before deciding' }\n      },\n      qSave: 'What would you prefer?',\n      pauseLabel: 'Put the subscription on pause', pauseTag: 'up to 3 months',\n      confirmLabel: 'I confirm the cancellation',\n      h1Step3: 'Your cancellation request',\n      h1Step3Alt: 'One more thing',\n      leadStep3Alt: 'Noted, nothing is cancelled. Send your request and we will organise what comes next.',\n      verbatimLabel: 'What would it have taken for you to stay?', optionalNote: '(optional)',\n      verbatimPh: 'Your answer really matters: it goes to management word for word.',\n      reassure: 'No immediate cut-off: you keep the service until the end of the period already billed. The cancellation takes effect at the next renewal date, and our team confirms the exact date by email within 24 business hours.',\n      errMsg: 'The request did not go through. Try again, or reply to the email that brought you here.',\n      btnSendConfirm: 'Send my request', btnSend: 'Send', sending: 'Sending\u2026',\n      confirms: {\n        confirme: { title: 'Request sent', text: 'You will receive the confirmation with your subscription end date within 24 business hours. Until then, the service continues as normal.' },\n        rdv:      { title: 'We will call you back', text: 'We will call you within 24 business hours for the agreed call. Nothing is cancelled until then.' },\n        pause:    { title: 'Pause recorded', text: 'We will confirm the pause start and restart dates within 24 business hours. Your engineer and your history will be waiting.' }\n      },\n      doneFoot: 'Thank you for the time spent with us. The door stays open.'\n    },\n\n    es: {\n      title: 'Cancelaci\u00f3n Ohmycare',\n      kicker: 'Cancelaci\u00f3n Ohmycare',\n      stepNames: { 1: 'El motivo de su salida', 2: 'Antes de confirmar', 3: 'Env\u00edo de su solicitud', 4: 'Solicitud enviada' },\n      h1Step1: 'Quiere cancelar Ohmycare',\n      qReason: '\u00bfQu\u00e9 motiva su salida?',\n      reasons: { prix: 'El precio ya no se justifica', usage: 'No lo usamos lo suficiente', qualite: 'El servicio no respondi\u00f3 a nuestras expectativas', activite: 'Nuestra actividad est\u00e1 cambiando', concurrent: 'Nos vamos con otro proveedor', autre: 'Otro motivo' },\n      emailLabel: 'Su email profesional', emailPh: 'nombre@empresa.es',\n      btnContinue: 'Continuar', btnBack: 'Volver',\n      h1Step2: 'Antes de confirmar',\n      lossKicker: 'Lo que se detiene con la cancelaci\u00f3n',\n      losses: [\n        'Su ingeniero dedicado, que conoce sus piezas, sus ensamblajes y sus m\u00e9todos',\n        'El soporte Premium 5 d\u00edas\/7, nunca bloqueado: ante un incidente, buscamos la v\u00eda para que su pieza salga igualmente a producci\u00f3n',\n        'El cat\u00e1logo de 250+ sesiones de productividad y el seguimiento de novedades e IA'\n      ],\n      offerKicker: 'Nuestra propuesta',\n      offers: {\n        prix:       { icon: 'phone', intro: 'Considera que el servicio cuesta m\u00e1s de lo que aporta. Ese es exactamente el tema de su comercial dedicado.', title: 'Una revisi\u00f3n de adecuaci\u00f3n de 15 minutos', text: 'Nuestra regla: venderle lo que usa, nada m\u00e1s. Revisamos juntos sus licencias, sus usuarios y su uso real, a la baja si es lo que dicen los n\u00fameros.', rdv: 'De acuerdo con una llamada de 15 minutos antes de decidir' },\n        usage:      { icon: 'play', intro: 'Un servicio sin usar es primero problema nuestro: ir hacia usted forma parte del m\u00e9todo.', title: 'Pruebe una sesi\u00f3n real antes de cortar', text: 'Esta semana planificamos una sesi\u00f3n de productividad con su ingeniero dedicado: grandes ensamblajes, planos, lo que quiera. Cada sesi\u00f3n busca ganar entre un 2 y un 5 % de tiempo. Despu\u00e9s decide usted.', rdv: 'De acuerdo con planificar una sesi\u00f3n antes de decidir' },\n        qualite:    { icon: 'phone', intro: 'Algo no estuvo a la altura. Queremos saber qu\u00e9, con precisi\u00f3n.', title: 'Un responsable le llama en 24 h', text: 'No es otro cuestionario: una llamada para entender qu\u00e9 falt\u00f3 y decirle en concreto qu\u00e9 cambiamos.', rdv: 'De acuerdo con esa llamada antes de decidir' },\n        activite:   { icon: 'pause', intro: 'Su actividad evoluciona; la suscripci\u00f3n debe seguirla, no al rev\u00e9s.', title: 'Una pausa en lugar de un corte', text: 'Poner la suscripci\u00f3n en pausa durante la transici\u00f3n: la facturaci\u00f3n se detiene, su ingeniero y su historial le esperan. Se arregla en una conversaci\u00f3n.', rdv: 'De acuerdo con una llamada de 15 minutos antes de decidir' },\n        concurrent: { icon: 'msg', intro: 'Ha elegido otro proveedor. Antes de cerrar el expediente, nos interesa una cosa.', title: '\u00bfQu\u00e9 marc\u00f3 la diferencia?', text: 'Precio, alcance, relaci\u00f3n: cu\u00e9ntenoslo en el siguiente paso. Y si una llamada de 15 minutos puede cambiar el resultado, la tomamos.', rdv: 'De acuerdo con una llamada de 15 minutos antes de decidir' },\n        autre:      { icon: 'msg', intro: 'Cu\u00e9ntenos m\u00e1s y vea si una de las opciones siguientes le conviene m\u00e1s que una cancelaci\u00f3n en seco.', title: 'Muchas veces hay otra manera', text: 'Una llamada r\u00e1pida con su comercial dedicado permite ajustar la suscripci\u00f3n (ritmo, pausa) en lugar de cortarla.', rdv: 'De acuerdo con una llamada de 15 minutos antes de decidir' }\n      },\n      qSave: '\u00bfQu\u00e9 prefiere?',\n      pauseLabel: 'Poner la suscripci\u00f3n en pausa', pauseTag: 'hasta 3 meses',\n      confirmLabel: 'Confirmo la cancelaci\u00f3n',\n      h1Step3: 'Su solicitud de cancelaci\u00f3n',\n      h1Step3Alt: 'Una \u00faltima cosa',\n      leadStep3Alt: 'Anotado, nada queda cancelado. Env\u00ede su solicitud y organizamos lo siguiente.',\n      verbatimLabel: '\u00bfQu\u00e9 habr\u00eda hecho falta para que se quedara?', optionalNote: '(opcional)',\n      verbatimPh: 'Su respuesta nos sirve de verdad: llega tal cual a la direcci\u00f3n.',\n      reassure: 'Sin corte inmediato: mantiene el servicio hasta el final del periodo ya facturado. La cancelaci\u00f3n surte efecto en el pr\u00f3ximo vencimiento y nuestro equipo le confirma la fecha exacta por email en 24 h laborables.',\n      errMsg: 'El env\u00edo no se complet\u00f3. Int\u00e9ntelo de nuevo o resp\u00f3ndanos al email que le trajo aqu\u00ed.',\n      btnSendConfirm: 'Enviar mi solicitud', btnSend: 'Enviar', sending: 'Enviando\u2026',\n      confirms: {\n        confirme: { title: 'Solicitud enviada', text: 'Recibir\u00e1 la confirmaci\u00f3n con la fecha de fin de su suscripci\u00f3n en 24 h laborables. Hasta entonces, el servicio contin\u00faa con normalidad.' },\n        rdv:      { title: 'Le llamaremos', text: 'Le llamamos en 24 h laborables para la llamada acordada. Nada queda cancelado hasta entonces.' },\n        pause:    { title: 'Pausa registrada', text: 'Le confirmamos en 24 h laborables la fecha de inicio de la pausa y la de reanudaci\u00f3n. Su ingeniero y su historial le esperan.' }\n      },\n      doneFoot: 'Gracias por el tiempo pasado con nosotros. La puerta queda abierta.'\n    },\n\n    nl: {\n      title: 'Opzegging Ohmycare',\n      kicker: 'Opzegging Ohmycare',\n      stepNames: { 1: 'De reden van uw vertrek', 2: 'Voor u bevestigt', 3: 'Uw aanvraag versturen', 4: 'Aanvraag verzonden' },\n      h1Step1: 'U wilt Ohmycare opzeggen',\n      qReason: 'Wat is de reden van uw vertrek?',\n      reasons: { prix: 'De prijs is het niet meer waard', usage: 'We gebruiken het te weinig', qualite: 'De service voldeed niet aan onze verwachtingen', activite: 'Onze activiteit verandert', concurrent: 'We stappen over naar een andere leverancier', autre: 'Andere reden' },\n      emailLabel: 'Uw zakelijke e-mail', emailPh: 'naam@bedrijf.nl',\n      btnContinue: 'Doorgaan', btnBack: 'Terug',\n      h1Step2: 'Voor u bevestigt',\n      lossKicker: 'Wat stopt bij opzegging',\n      losses: [\n        'Uw vaste engineer, die uw onderdelen, samenstellingen en werkwijzen kent',\n        'Premium support 5 d\/7, nooit geblokkeerd: bij een incident zoeken we een omweg zodat uw onderdeel toch de productie in gaat',\n        'De catalogus met 250+ productiviteitssessies en de opvolging van nieuwe versies & AI'\n      ],\n      offerKicker: 'Ons voorstel',\n      offers: {\n        prix:       { icon: 'phone', intro: 'U vindt dat de service meer kost dan hij oplevert. Dat is precies het onderwerp van uw vaste commercieel contact.', title: 'Een afstemmingsgesprek van 15 minuten', text: 'Onze regel: u verkopen wat u gebruikt, niets meer. We bekijken samen uw licenties, uw gebruikers en het werkelijke gebruik, naar beneden als de cijfers dat zeggen.', rdv: 'Akkoord met een gesprek van 15 minuten voor ik beslis' },\n        usage:      { icon: 'play', intro: 'Een service die niet wordt gebruikt is eerst ons probleem: naar u toe komen hoort bij de methode.', title: 'Probeer een echte sessie voor u stopt', text: 'We plannen deze week een productiviteitssessie met uw vaste engineer: grote samenstellingen, tekeningen, wat u wilt. Elke sessie mikt op 2 tot 5% tijdwinst. Daarna beslist u.', rdv: 'Akkoord met het plannen van een sessie voor ik beslis' },\n        qualite:    { icon: 'phone', intro: 'Er was iets niet op niveau. We willen precies weten wat.', title: 'Een verantwoordelijke belt u binnen 24 uur terug', text: 'Geen zoveelste vragenlijst: een gesprek om te begrijpen wat ontbrak, en u concreet te zeggen wat we veranderen.', rdv: 'Akkoord met dat gesprek voor ik beslis' },\n        activite:   { icon: 'pause', intro: 'Uw activiteit verandert; het abonnement moet volgen, niet omgekeerd.', title: 'Een pauze in plaats van een stop', text: 'Zet het abonnement op pauze tijdens de overgang: de facturatie stopt, uw engineer en uw historiek blijven staan. E\u00e9n gesprek regelt het.', rdv: 'Akkoord met een gesprek van 15 minuten voor ik beslis' },\n        concurrent: { icon: 'msg', intro: 'U hebt een andere leverancier gekozen. Voor we het dossier sluiten, interesseert ons \u00e9\u00e9n ding.', title: 'Wat maakte het verschil?', text: 'Prijs, omvang, relatie: vertel het ons in de volgende stap. En als een gesprek van 15 minuten de uitkomst nog kan veranderen, gaan we ervoor.', rdv: 'Akkoord met een gesprek van 15 minuten voor ik beslis' },\n        autre:      { icon: 'msg', intro: 'Vertel ons meer, en kijk of een van de opties hieronder u beter past dan een harde stop.', title: 'Het kan vaak anders', text: 'Een kort gesprek met uw vaste commercieel contact kan het abonnement bijstellen (ritme, pauze) in plaats van het te stoppen.', rdv: 'Akkoord met een gesprek van 15 minuten voor ik beslis' }\n      },\n      qSave: 'Wat heeft uw voorkeur?',\n      pauseLabel: 'Het abonnement pauzeren', pauseTag: 'tot 3 maanden',\n      confirmLabel: 'Ik bevestig de opzegging',\n      h1Step3: 'Uw opzeggingsaanvraag',\n      h1Step3Alt: 'Nog \u00e9\u00e9n ding',\n      leadStep3Alt: 'Genoteerd, er is niets opgezegd. Verstuur uw aanvraag en we regelen het vervolg.',\n      verbatimLabel: 'Wat had er nodig geweest om u te laten blijven?', optionalNote: '(optioneel)',\n      verbatimPh: 'Uw antwoord telt echt: het gaat woordelijk naar de directie.',\n      reassure: 'Geen onmiddellijke afsluiting: u behoudt de service tot het einde van de al gefactureerde periode. De opzegging gaat in op de volgende vervaldag en ons team bevestigt de exacte datum per e-mail binnen 24 werkuren.',\n      errMsg: 'Het versturen is niet gelukt. Probeer opnieuw, of antwoord op de e-mail die u hierheen bracht.',\n      btnSendConfirm: 'Mijn aanvraag versturen', btnSend: 'Versturen', sending: 'Versturen\u2026',\n      confirms: {\n        confirme: { title: 'Doorgestuurd', text: 'U ontvangt binnen 24 werkuren de bevestiging met de einddatum van uw abonnement. Tot dan loopt de service gewoon door.' },\n        rdv:      { title: 'We bellen u terug', text: 'We bellen u binnen 24 werkuren voor het afgesproken gesprek. Tot dan is er niets opgezegd.' },\n        pause:    { title: 'Pauze geregistreerd', text: 'We bevestigen binnen 24 werkuren de start- en herstartdatum van de pauze. Uw engineer en uw historiek wachten op u.' }\n      },\n      doneFoot: 'Bedankt voor de tijd samen. De deur blijft open.'\n    },\n\n    de: {\n      title: 'K\u00fcndigung Ohmycare',\n      kicker: 'K\u00fcndigung Ohmycare',\n      stepNames: { 1: 'Der Grund Ihrer K\u00fcndigung', 2: 'Bevor Sie best\u00e4tigen', 3: 'Ihre Anfrage senden', 4: 'Anfrage gesendet' },\n      h1Step1: 'Sie m\u00f6chten Ohmycare k\u00fcndigen',\n      qReason: 'Was ist der Grund f\u00fcr Ihre K\u00fcndigung?',\n      reasons: { prix: 'Der Preis rechtfertigt sich nicht mehr', usage: 'Wir nutzen es zu wenig', qualite: 'Der Service hat unsere Erwartungen nicht erf\u00fcllt', activite: 'Unsere T\u00e4tigkeit ver\u00e4ndert sich', concurrent: 'Wir wechseln zu einem anderen Anbieter', autre: 'Anderer Grund' },\n      emailLabel: 'Ihre berufliche E-Mail', emailPh: 'name@firma.de',\n      btnContinue: 'Weiter', btnBack: 'Zur\u00fcck',\n      h1Step2: 'Bevor Sie best\u00e4tigen',\n      lossKicker: 'Was mit der K\u00fcndigung endet',\n      losses: [\n        'Ihr fester Ingenieur, der Ihre Teile, Baugruppen und Methoden kennt',\n        'Premium-Support 5 Tage\/Woche, nie blockiert: bei einem Zwischenfall finden wir einen Weg, damit Ihr Teil trotzdem in die Produktion geht',\n        'Der Katalog mit 250+ Produktivit\u00e4tssessions und die Begleitung zu Neuheiten & KI'\n      ],\n      offerKicker: 'Unser Vorschlag',\n      offers: {\n        prix:       { icon: 'phone', intro: 'Sie finden, der Service kostet mehr, als er bringt. Genau daf\u00fcr ist Ihr fester Vertriebsansprechpartner da.', title: 'Ein 15-min\u00fctiger Abgleich', text: 'Unsere Regel: Ihnen verkaufen, was Sie nutzen, nicht mehr. Wir sehen uns gemeinsam Ihre Lizenzen, Ihre Nutzer und die tats\u00e4chliche Nutzung an, nach unten, wenn die Zahlen das sagen.', rdv: 'Einverstanden mit einem 15-Minuten-Gespr\u00e4ch vor der Entscheidung' },\n        usage:      { icon: 'play', intro: 'Ein ungenutzter Service ist zuerst unser Problem: auf Sie zuzugehen geh\u00f6rt zur Methode.', title: 'Testen Sie eine echte Session, bevor Sie k\u00fcndigen', text: 'Wir planen diese Woche eine Produktivit\u00e4tssession mit Ihrem festen Ingenieur: gro\u00dfe Baugruppen, Zeichnungen, was Sie wollen. Jede Session zielt auf 2 bis 5 % Zeitgewinn. Danach entscheiden Sie.', rdv: 'Einverstanden, vor der Entscheidung eine Session zu planen' },\n        qualite:    { icon: 'phone', intro: 'Etwas war nicht auf dem erwarteten Niveau. Wir wollen genau wissen, was.', title: 'Ein Verantwortlicher ruft Sie innerhalb von 24 h zur\u00fcck', text: 'Kein weiterer Fragebogen: ein Anruf, um zu verstehen, was gefehlt hat, und Ihnen konkret zu sagen, was wir \u00e4ndern.', rdv: 'Einverstanden mit diesem Anruf vor der Entscheidung' },\n        activite:   { icon: 'pause', intro: 'Ihre T\u00e4tigkeit ver\u00e4ndert sich; das Abo soll folgen, nicht umgekehrt.', title: 'Eine Pause statt eines Schnitts', text: 'Das Abo w\u00e4hrend des \u00dcbergangs pausieren: die Abrechnung stoppt, Ihr Ingenieur und Ihre Historie bleiben erhalten. Ein Gespr\u00e4ch gen\u00fcgt.', rdv: 'Einverstanden mit einem 15-Minuten-Gespr\u00e4ch vor der Entscheidung' },\n        concurrent: { icon: 'msg', intro: 'Sie haben einen anderen Anbieter gew\u00e4hlt. Bevor wir die Akte schlie\u00dfen, interessiert uns eine Sache.', title: 'Was hat den Unterschied gemacht?', text: 'Preis, Umfang, Beziehung: sagen Sie es uns im n\u00e4chsten Schritt. Und wenn ein 15-Minuten-Gespr\u00e4ch das Ergebnis noch \u00e4ndern kann, nehmen wir es an.', rdv: 'Einverstanden mit einem 15-Minuten-Gespr\u00e4ch vor der Entscheidung' },\n        autre:      { icon: 'msg', intro: 'Erz\u00e4hlen Sie uns mehr, und pr\u00fcfen Sie, ob eine der Optionen unten besser passt als ein harter Schnitt.', title: 'Es geht oft auch anders', text: 'Ein kurzes Gespr\u00e4ch mit Ihrem festen Vertriebsansprechpartner kann das Abo anpassen (Rhythmus, Pause), statt es zu beenden.', rdv: 'Einverstanden mit einem 15-Minuten-Gespr\u00e4ch vor der Entscheidung' }\n      },\n      qSave: 'Was ist Ihnen lieber?',\n      pauseLabel: 'Das Abo pausieren', pauseTag: 'bis zu 3 Monate',\n      confirmLabel: 'Ich best\u00e4tige die K\u00fcndigung',\n      h1Step3: 'Ihre K\u00fcndigungsanfrage',\n      h1Step3Alt: 'Noch ein Wort',\n      leadStep3Alt: 'Notiert, nichts ist gek\u00fcndigt. Senden Sie Ihre Anfrage, und wir organisieren die n\u00e4chsten Schritte.',\n      verbatimLabel: 'Was h\u00e4tte es gebraucht, damit Sie bleiben?', optionalNote: '(optional)',\n      verbatimPh: 'Ihre Antwort z\u00e4hlt wirklich: sie geht wortw\u00f6rtlich an die Gesch\u00e4ftsleitung.',\n      reassure: 'Keine sofortige Abschaltung: Sie behalten den Service bis zum Ende des bereits abgerechneten Zeitraums. Die K\u00fcndigung wird zum n\u00e4chsten Stichtag wirksam, und unser Team best\u00e4tigt Ihnen das genaue Datum per E-Mail innerhalb von 24 Arbeitsstunden.',\n      errMsg: 'Das Senden hat nicht geklappt. Versuchen Sie es erneut oder antworten Sie auf die E-Mail, die Sie hierher gef\u00fchrt hat.',\n      btnSendConfirm: 'Anfrage senden', btnSend: 'Senden', sending: 'Wird gesendet\u2026',\n      confirms: {\n        confirme: { title: '\u00dcbermittelt', text: 'Sie erhalten die Best\u00e4tigung mit dem Enddatum Ihres Abos innerhalb von 24 Arbeitsstunden. Bis dahin l\u00e4uft der Service normal weiter.' },\n        rdv:      { title: 'Wir melden uns', text: 'Wir rufen Sie innerhalb von 24 Arbeitsstunden f\u00fcr das vereinbarte Gespr\u00e4ch an. Bis dahin ist nichts gek\u00fcndigt.' },\n        pause:    { title: 'Pause vermerkt', text: 'Wir best\u00e4tigen Ihnen innerhalb von 24 Arbeitsstunden das Start- und das Wiederaufnahmedatum der Pause. Ihr Ingenieur und Ihre Historie warten auf Sie.' }\n      },\n      doneFoot: 'Danke f\u00fcr die gemeinsame Zeit. Die T\u00fcr bleibt offen.'\n    }\n  };\n\n  if (!I18N[PAGE_LANG]) PAGE_LANG = 'en';\n  var T = I18N[PAGE_LANG];\n  document.title = T.title + ' | Ohmycad';\n\n  var S = { step: 1, reason: null, email: '', save: null, verbatim: '', flip: false, sending: false };\n\n  \/\/ Pr\u00e9remplissage email via ?email= (le lien arrive par email, HubSpot peut injecter le token contact)\n  try {\n    var qEmail = new URLSearchParams(location.search).get('email');\n    if (qEmail) S.email = qEmail;\n  } catch (e) {}\n\n  var REASON_IDS = ['prix', 'usage', 'qualite', 'activite', 'concurrent', 'autre'];\n\n  var ICONS = {\n    phone: 'M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z',\n    play:  'm6 3 14 9-14 9V3z',\n    pause: 'M14 4v16M8 4v16',\n    msg:   'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'\n  };\n\n  var host = document.getElementById('stepHost');\n  document.getElementById('railKicker').textContent = T.kicker;\n\n  \/\/ Texture d\u00e9corative (formes g\u00e9om\u00e9triques CAO, blanc sur fond ink, opacit\u00e9 g\u00e9r\u00e9e par le conteneur)\n  var TEX_SVG = '<svg viewBox=\"0 0 900 1300\" preserveAspectRatio=\"xMidYMid slice\" style=\"width:100%;height:100%;display:block\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\">' +\n    '<g fill=\"#FFFFFF\">' +\n    '<polygon points=\"300,472 450,560 300,648 150,560\" opacity=\".9\"\/><polygon points=\"150,560 300,648 300,798 150,710\" opacity=\".45\"\/><polygon points=\"450,560 300,648 300,798 450,710\" opacity=\".65\"\/>' +\n    '<polygon points=\"700,140 770,180 700,220 630,180\" opacity=\".85\"\/><polygon points=\"630,180 700,220 700,290 630,250\" opacity=\".4\"\/><polygon points=\"770,180 700,220 700,290 770,250\" opacity=\".6\"\/>' +\n    '<polygon points=\"120,948 175,980 120,1012 65,980\" opacity=\".85\"\/><polygon points=\"65,980 120,1012 120,1067 65,1035\" opacity=\".4\"\/><polygon points=\"175,980 120,1012 120,1067 175,1035\" opacity=\".6\"\/>' +\n    '<polygon points=\"780,60 890,140 760,170\" opacity=\".5\"\/>' +\n    '<polygon points=\"640,750 700,830 640,910 580,830\" opacity=\".55\"\/>' +\n    '<circle cx=\"815\" cy=\"340\" r=\"14\" opacity=\".6\"\/><circle cx=\"90\" cy=\"210\" r=\"9\" opacity=\".5\"\/>' +\n    '<\/g><\/svg>';\n  var railTex = document.querySelector('.rz-rail-tex');\n  if (railTex) railTex.innerHTML = TEX_SVG;\n\n  function esc(s) { return String(s).replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;').replace(\/\"\/g, '&quot;'); }\n\n  function emailOk() { return \/^[^@\\s]+@[^@\\s]+\\.[^@\\s]{2,}$\/.test(S.email.trim()); }\n\n  function checkSvg() {\n    return '<span class=\"rz-check\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"><\/path><\/svg><\/span>';\n  }\n\n  function optHtml(group, o) {\n    var tag = o.tag ? '<span class=\"rz-opt-tag\">' + esc(o.tag) + '<\/span>' : '';\n    return '<div class=\"rz-opt\" role=\"radio\" aria-checked=\"false\" tabindex=\"0\" data-group=\"' + group + '\" data-id=\"' + o.id + '\">' +\n      '<span class=\"rz-opt-main\"><span class=\"rz-opt-label\">' + esc(o.label) + '<\/span>' + tag + '<\/span>' + checkSvg() + '<\/div>';\n  }\n\n  function bindOptions(cb) {\n    host.querySelectorAll('.rz-opt').forEach(function (el) {\n      function pick() {\n        var g = el.getAttribute('data-group');\n        S[g] = el.getAttribute('data-id');\n        host.querySelectorAll('.rz-opt[data-group=\"' + g + '\"]').forEach(function (x) {\n          var on = x === el;\n          x.classList.toggle('sel', on);\n          x.setAttribute('aria-checked', on ? 'true' : 'false');\n        });\n        if (cb) cb();\n      }\n      el.addEventListener('click', pick);\n      el.addEventListener('keydown', function (ev) { if (ev.key === 'Enter' || ev.key === ' ') { ev.preventDefault(); pick(); } });\n    });\n  }\n\n  function renderRail() {\n    var num = document.getElementById('railNum');\n    var name = document.getElementById('railName');\n    if (S.step < 4) {\n      num.innerHTML = '0' + S.step + '<small> \/ 03<\/small>';\n      num.style.color = '#FFFFFF';\n    } else {\n      num.innerHTML = '\u2713';\n      num.style.color = '#12B67A';\n    }\n    name.textContent = T.stepNames[S.step];\n    for (var i = 1; i <= 3; i++) {\n      var seg = document.getElementById('seg' + i);\n      seg.style.background = (S.step === 4) ? '#12B67A' : (S.step >= i ? '#008CDF' : 'rgba(255,255,255,.18)');\n    }\n  }\n\n  function go(step) {\n    S.step = step;\n    S.flip = !S.flip;\n    render();\n    try { host.closest('.rz-card').scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}\n  }\n\n  function render() {\n    renderRail();\n    var html = '<div class=\"rz-step\" style=\"animation:' + (S.flip ? 'rzStepA' : 'rzStepB') + ' .25s ease both\">';\n\n    if (S.step === 1) {\n      html += '<h1 style=\"margin-bottom:24px\">' + esc(T.h1Step1) + '<\/h1>' +\n        '<div class=\"rz-qlabel\" id=\"qReason\">' + esc(T.qReason) + ' <span class=\"req\">*<\/span><\/div>' +\n        '<div class=\"rz-opts\" role=\"radiogroup\" aria-labelledby=\"qReason\" style=\"margin-bottom:26px\">' +\n        REASON_IDS.map(function (id) { return optHtml('reason', { id: id, label: T.reasons[id] }); }).join('') + '<\/div>' +\n        '<label class=\"rz-qlabel\" for=\"omcEmail\">' + esc(T.emailLabel) + ' <span class=\"req\">*<\/span><\/label>' +\n        '<input class=\"rz-input\" id=\"omcEmail\" type=\"email\" placeholder=\"' + esc(T.emailPh) + '\" value=\"' + esc(S.email) + '\" style=\"margin-bottom:28px\">' +\n        '<button class=\"rz-btn primary\" id=\"cta1\" style=\"width:100%\" disabled>' + esc(T.btnContinue) + '<\/button>';\n    }\n\n    if (S.step === 2) {\n      var offer = T.offers[GENERIC_OFFER ? 'autre' : (S.reason || 'autre')];\n      var saves = [{ id: 'rdv', label: offer.rdv }];\n      if (SHOW_PAUSE) saves.push({ id: 'pause', label: T.pauseLabel, tag: T.pauseTag });\n      saves.push({ id: 'confirme', label: T.confirmLabel });\n\n      html += '<h1>' + esc(T.h1Step2) + '<\/h1>' +\n        '<p class=\"rz-lead\" style=\"margin-bottom:24px\">' + esc(offer.intro) + '<\/p>' +\n        '<div style=\"margin-bottom:22px\">' +\n          '<div class=\"rz-loss-head\"><span class=\"rz-loss-bar\"><\/span><span class=\"rz-loss-kicker\">' + esc(T.lossKicker) + '<\/span><\/div>' +\n          T.losses.map(function (l) { return '<div class=\"rz-loss-row\"><span class=\"rz-loss-x\">\u2715<\/span><span class=\"rz-loss-t\">' + esc(l) + '<\/span><\/div>'; }).join('') +\n        '<\/div>' +\n        '<div class=\"rz-offer\">' +\n          '<div class=\"rz-offer-tex\">' + TEX_SVG + '<\/div>' +\n          '<div class=\"rz-offer-in\">' +\n            '<span class=\"rz-offer-ico\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#7CC4F0\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"' + ICONS[offer.icon] + '\"><\/path><\/svg><\/span>' +\n            '<span style=\"min-width:0\"><span class=\"rz-offer-kicker\">' + esc(T.offerKicker) + '<\/span><span class=\"rz-offer-title\">' + esc(offer.title) + '<\/span><span class=\"rz-offer-text\">' + esc(offer.text) + '<\/span><\/span>' +\n          '<\/div>' +\n        '<\/div>' +\n        '<div class=\"rz-qlabel\" id=\"qSave\">' + esc(T.qSave) + ' <span class=\"req\">*<\/span><\/div>' +\n        '<div class=\"rz-opts\" role=\"radiogroup\" aria-labelledby=\"qSave\" style=\"margin-bottom:28px\">' +\n        saves.map(function (s) { return optHtml('save', s); }).join('') + '<\/div>' +\n        '<div class=\"rz-nav\">' +\n          '<button class=\"rz-btn ghost\" id=\"btnBack\" style=\"min-width:110px\">' + esc(T.btnBack) + '<\/button>' +\n          '<button class=\"rz-btn primary\" id=\"cta2\" disabled>' + esc(T.btnContinue) + '<\/button>' +\n        '<\/div>';\n    }\n\n    if (S.step === 3 && S.save === 'confirme') {\n      html += '<h1 style=\"margin-bottom:24px\">' + esc(T.h1Step3) + '<\/h1>' +\n        verbatimHtml() +\n        '<div class=\"rz-reassure\">' + esc(T.reassure) + '<\/div>' +\n        '<div class=\"rz-err\" id=\"sendErr\">' + esc(T.errMsg) + '<\/div>' +\n        '<div class=\"rz-nav\">' +\n          '<button class=\"rz-btn ghost\" id=\"btnBack\" style=\"min-width:110px\">' + esc(T.btnBack) + '<\/button>' +\n          '<button class=\"rz-btn primary\" id=\"cta3\">' + esc(T.btnSendConfirm) + '<\/button>' +\n        '<\/div>';\n    }\n\n    if (S.step === 3 && S.save !== 'confirme') {\n      html += '<h1>' + esc(T.h1Step3Alt) + '<\/h1>' +\n        '<p class=\"rz-lead\" style=\"margin-bottom:24px\">' + esc(T.leadStep3Alt) + '<\/p>' +\n        verbatimHtml() +\n        '<div class=\"rz-err\" id=\"sendErr\">' + esc(T.errMsg) + '<\/div>' +\n        '<div class=\"rz-nav\">' +\n          '<button class=\"rz-btn ghost\" id=\"btnBack\" style=\"min-width:110px\">' + esc(T.btnBack) + '<\/button>' +\n          '<button class=\"rz-btn primary\" id=\"cta3\">' + esc(T.btnSend) + '<\/button>' +\n        '<\/div>';\n    }\n\n    if (S.step === 4) {\n      var c = T.confirms[S.save || 'confirme'];\n      html += '<div class=\"rz-done\">' +\n        '<span class=\"rz-done-badge\"><svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#12B67A\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\"><\/path><\/svg><\/span>' +\n        '<h1>' + esc(c.title) + '<\/h1>' +\n        '<p>' + esc(c.text) + '<\/p>' +\n        '<div class=\"rz-done-foot\">' + esc(T.doneFoot) + '<\/div>' +\n      '<\/div>';\n    }\n\n    html += '<\/div>';\n    host.innerHTML = html;\n    bind();\n  }\n\n  function verbatimHtml() {\n    return '<label class=\"rz-qlabel\" for=\"omcVerbatim\">' + esc(T.verbatimLabel) + ' <span class=\"opt\">' + esc(T.optionalNote) + '<\/span><\/label>' +\n      '<textarea class=\"rz-textarea\" id=\"omcVerbatim\" rows=\"3\" placeholder=\"' + esc(T.verbatimPh) + '\" style=\"margin-bottom:' + (S.save === 'confirme' ? '20px' : '24px') + '\">' + esc(S.verbatim) + '<\/textarea>';\n  }\n\n  function bind() {\n    \/\/ Restaure les s\u00e9lections quand on revient en arri\u00e8re\n    host.querySelectorAll('.rz-opt').forEach(function (el) {\n      var g = el.getAttribute('data-group');\n      if (S[g] === el.getAttribute('data-id')) { el.classList.add('sel'); el.setAttribute('aria-checked', 'true'); }\n    });\n\n    if (S.step === 1) {\n      var email = document.getElementById('omcEmail');\n      var cta1 = document.getElementById('cta1');\n      function refresh1() { cta1.disabled = !(S.reason && emailOk()); }\n      email.addEventListener('input', function () { S.email = email.value; refresh1(); });\n      bindOptions(refresh1);\n      refresh1();\n      cta1.addEventListener('click', function () { if (!cta1.disabled) go(2); });\n    }\n\n    if (S.step === 2) {\n      var cta2 = document.getElementById('cta2');\n      function refresh2() { cta2.disabled = !S.save; }\n      bindOptions(refresh2);\n      refresh2();\n      cta2.addEventListener('click', function () { if (!cta2.disabled) go(3); });\n      document.getElementById('btnBack').addEventListener('click', function () { go(1); });\n    }\n\n    if (S.step === 3) {\n      var cta3 = document.getElementById('cta3');\n      var verb = document.getElementById('omcVerbatim');\n      verb.addEventListener('input', function () { S.verbatim = verb.value; });\n      bindOptions();\n      cta3.addEventListener('click', function () {\n        if (cta3.disabled || S.sending) return;\n        submit(cta3);\n      });\n      document.getElementById('btnBack').addEventListener('click', function () { go(2); });\n    }\n  }\n\n  function getCookie(name) {\n    var m = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n    return m ? decodeURIComponent(m[1]) : null;\n  }\n\n  function submit(btn) {\n    if (!FORM_GUID) {\n      console.warn('[Ohmycare] FORM_GUID non renseign\u00e9 : envoi HubSpot d\u00e9sactiv\u00e9 (mode d\u00e9mo).');\n      go(4);\n      return;\n    }\n    S.sending = true;\n    var prevLabel = btn.textContent;\n    btn.disabled = true;\n    btn.textContent = T.sending;\n    var errBox = document.getElementById('sendErr');\n    if (errBox) errBox.style.display = 'none';\n\n    var fields = [\n      { objectTypeId: '0-1', name: 'email', value: S.email.trim() },\n      { objectTypeId: '0-1', name: 'ohmycare_churn_reason', value: S.reason || '' },\n      { objectTypeId: '0-1', name: 'ohmycare_churn_save_attempt', value: S.save || '' }\n    ];\n    if (S.verbatim.trim()) fields.push({ objectTypeId: '0-1', name: 'ohmycare_churn_verbatim', value: S.verbatim.trim() });\n\n    var body = {\n      submittedAt: Date.now(),\n      fields: fields,\n      context: {\n        pageUri: location.href,\n        pageName: document.title\n      }\n    };\n    var hutk = getCookie('hubspotutk');\n    if (hutk) body.context.hutk = hutk;\n\n    fetch('https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/' + PORTAL_ID + '\/' + FORM_GUID, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/json' },\n      body: JSON.stringify(body)\n    }).then(function (r) {\n      if (!r.ok) throw new Error('HTTP ' + r.status);\n      S.sending = false;\n      go(4);\n    }).catch(function (err) {\n      console.error('[Ohmycare] \u00c9chec envoi formulaire', err);\n      S.sending = false;\n      btn.disabled = false;\n      btn.textContent = prevLabel;\n      if (errBox) errBox.style.display = 'block';\n    });\n  }\n\n  render();\n})();\n<\/script>\n\n\n\n<\/div><\/div>\n<\/section><\/main>","protected":false},"excerpt":{"rendered":"<p>Ohmycare Cancellation 01\/03<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_breakdance_hide_in_design_set":null,"_breakdance_tags":"","footnotes":""},"class_list":["post-118305","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/pages\/118305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/comments?post=118305"}],"version-history":[{"count":1,"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/pages\/118305\/revisions"}],"predecessor-version":[{"id":118306,"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/pages\/118305\/revisions\/118306"}],"wp:attachment":[{"href":"https:\/\/ohmycad.com\/en-ca\/wp-json\/wp\/v2\/media?parent=118305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}