The Roemer Capital Valuation Calculator for your company

The Roemer Capital Valuation Calculator for your company

Get a transparent, data-driven estimate of your company value in just a few minutes — free of charge.

Written by:

Lucas Roemer
Lucas Roemer
CEO of Roemer Capital
Navigate to author

Download now!

I acknowledge the terms of the privacy policy. I understand that I can withdraw my consent at any time.
Thank you! You can download it here now:
Oops! Something went wrong while submitting the form.

<!-- Roemer Capital Valuation Calculator — embed -->
<div class="cal_class-container" id="roemer-calculator">
 <style>
   .cal_class-container { font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial; max-width: 900px; margin: 0 auto; border: 1px solid #e5e7eb; border-radius: 14px; padding: 20px; background: #ffffff; box-shadow: 0 6px 24px rgba(0,0,0,.06); }
   .cal_class-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
   .cal_class-title { font-size: 22px; font-weight: 700; letter-spacing: .2px; }
   .cal_class-step { margin-top: 18px; padding: 16px; border: 1px solid #eef2f7; border-radius: 12px; background: #fafbfc; }
   .cal_class-step h3 { margin: 0 0 8px 0; font-size: 16px; }
   .cal_class-field { display: grid; gap: 8px; margin: 12px 0; }
   .cal_class-field.inline { grid-template-columns: 1fr 1fr; gap: 10px; }
   .cal_class-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
   .cal_class-label { font-size: 13px; color: #334155; }
   .cal_class-input, .cal_class-select, .cal_class-number { width: 100%; padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 10px; background: #fff; font-size: 14px; }
   .cal_class-input:focus, .cal_class-select:focus, .cal_class-number:focus, .cal_class-textarea:focus { outline: none; border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99,102,241,.15); }
   .cal_class-multi { display: flex; flex-wrap: wrap; gap: 8px; }
   .cal_class-chip { border: 1px solid #e5e7eb; padding: 6px 10px; border-radius: 999px; background: #fff; cursor: pointer; font-size: 13px; }
   .cal_class-chip.active { background: #eef2ff; border-color: #6366f1; color: #3730a3; }
   .cal_class-actions { display: flex; gap: 10px; margin-top: 14px; }
   .cal_class-btn { padding: 10px 14px; border: 1px solid #c7cfe3; border-radius: 10px; cursor: pointer; background: #111827; color: #fff; font-size: 14px; }
   .cal_class-btn.secondary { background: #fff; color: #111827; }
   .cal_class-btn:disabled { opacity: .5; cursor: not-allowed; }
   .cal_class-hint { font-size: 12px; color: #64748b; }
   .cal_class-divider { height: 1px; background: #eef2f7; margin: 16px 0; border-radius: 999px; }
   .cal_class-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
   .cal_class-note { font-size: 12px; color: #475569; background: #f8fafc; border: 1px dashed #e2e8f0; padding: 10px; border-radius: 10px; }
   .cal_class-output { background: #0b1020; color: #e5e7eb; border-radius: 14px; padding: 18px; }
   .cal_class-output h3 { color: #ffffff; }
   .cal_class-badge { display: inline-block; background: #e0e7ff; color: #312e81; padding: 4px 8px; border-radius: 999px; font-size: 12px; margin-right: 8px; }
   .cal_class-progress { white-space: nowrap; margin-right: 0; }
   .cal_class-progressbar { height: 4px; background: #e5e7eb; border-radius: 999px; overflow: hidden; margin: 0 0 6px; }
   .cal_class-progressbar-fill { height: 100%; width: 17%; background: #6366f1; border-radius: 999px; transition: width .25s ease; }
   .cal_class-list { margin: 8px 0 0 16px; }
   .cal_class-cta { margin-top: 12px; display: inline-block; background: #22c55e; color: #052e16; padding: 10px 14px; border-radius: 10px; text-decoration: none; font-weight: 600; }
   .cal_class-error { color: #b91c1c; font-size: 13px; margin-top: 6px; }
   .cal_class-hidden { display: none; }
   .cal_class-flex { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
   .cal_class-small { font-size: 12px; color: #6b7280; }
   @media (max-width: 720px) {
     .cal_class-row, .cal_class-field.inline, .cal_class-grid-3 { grid-template-columns: 1fr; }
     .cal_class-actions { flex-direction: column; }
   }
 </style>

 <div class="cal_class-header">
   <div class="cal_class-title" data-i18n="title">Roemer Capital Valuation Calculator</div>
   <div class="cal_class-badge cal_class-progress" id="rcProgressText">Step 1 of 6 · 17%</div>
 </div>
 <div class="cal_class-progressbar" aria-hidden="true"><div class="cal_class-progressbar-fill" id="rcProgressFill"></div></div>

 <div class="cal_class-step" data-step="1">
   <h3 data-i18n="step1h">Step 1. Your contact details</h3>
   <div class="cal_class-row">
     <div class="cal_class-field">
       <label class="cal_class-label" for="leadFirst" data-i18n="leadFirst">First name</label>
       <input class="cal_class-input" id="leadFirst" type="text" autocomplete="given-name" data-i18n-ph="phLeadFirst" placeholder="e.g. Anna" required>
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label" for="leadLast" data-i18n="leadLast">Last name</label>
       <input class="cal_class-input" id="leadLast" type="text" autocomplete="family-name" data-i18n-ph="phLeadLast" placeholder="e.g. Müller" required>
     </div>
   </div>
   <div class="cal_class-row">
     <div class="cal_class-field">
       <label class="cal_class-label" for="leadPosition" data-i18n="leadPosition">Role</label>
       <input class="cal_class-input" id="leadPosition" type="text" autocomplete="organization-title" data-i18n-ph="phLeadPosition" placeholder="e.g. Managing Director" required>
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label" for="leadCompany" data-i18n="leadCompany">Company</label>
       <input class="cal_class-input" id="leadCompany" type="text" autocomplete="organization" data-i18n-ph="phLeadCompany" placeholder="e.g. Acme GmbH" required>
     </div>
   </div>
   <div class="cal_class-row">
     <div class="cal_class-field">
       <label class="cal_class-label" for="leadEmail" data-i18n="leadEmail">Email</label>
       <input class="cal_class-input" id="leadEmail" type="email" autocomplete="email" data-i18n-ph="phLeadEmail" placeholder="e.g. anna@acme.com" required>
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label" for="leadPhone" data-i18n="leadPhone">Phone</label>
       <input class="cal_class-input" id="leadPhone" type="tel" autocomplete="tel" data-i18n-ph="phLeadPhone" placeholder="e.g. +49 170 1234567" required>
     </div>
   </div>
   <div class="cal_class-small" data-i18n="leadLegal">By continuing, you agree to your details being processed so we can get in touch. See the privacy policy for details.</div>
   <div class="cal_class-error cal_class-hidden" id="lead-error" data-i18n="leadError">Please fill in all fields with a valid email to continue.</div>
   <div class="cal_class-actions">
     <button class="cal_class-btn" data-next data-i18n="next">Next</button>
   </div>
 </div>

 <div class="cal_class-step cal_class-hidden" data-step="2">
   <h3 data-i18n="step2h">Step 2. What is this valuation for?</h3>
   <div class="cal_class-multi" id="purpose">
     <button class="cal_class-chip" data-value="Sale" data-i18n="purposeSale">Sale of the company</button>
     <button class="cal_class-chip" data-value="Capital" data-i18n="purposeCapital">Capital raise</button>
     <button class="cal_class-chip" data-value="Curiosity" data-i18n="purposeCuriosity">Just curious</button>
   </div>
   <div class="cal_class-hint" data-i18n="purposeHint">For context only. It does not change the calculation.</div>
   <div class="cal_class-actions">
     <button class="cal_class-btn" data-next data-i18n="next">Next</button>
   </div>
 </div>

 <div class="cal_class-step cal_class-hidden" data-step="3">
   <h3 data-i18n="step3h">Step 3. Select your company's sector</h3>
   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="sector">Sector</label>
     <select class="cal_class-select" id="sector"></select>
     <div class="cal_class-small" id="sector-info"></div>
   </div>
   <details class="cal_class-note">
     <summary data-i18n="howUsed">How this is used</summary>
     <span data-i18n="howUsedBody">The sector sets a starting revenue multiple that is adjusted by growth and quality factors. The range in the result uses the sector minimum and maximum multiples.</span>
   </details>
   <div class="cal_class-actions">
     <button class="cal_class-btn secondary" data-prev data-i18n="back">Back</button>
     <button class="cal_class-btn" data-next data-i18n="next">Next</button>
   </div>
 </div>

 <div class="cal_class-step cal_class-hidden" data-step="4">
   <h3 data-i18n="step4h">Step 4. Company details</h3>
   <div class="cal_class-row">
     <div class="cal_class-field">
       <label class="cal_class-label" data-i18n="founded">Year founded</label>
       <input class="cal_class-number" id="founded" type="number" min="1900" max="2026" data-i18n-ph="phFounded" placeholder="e.g. 2019">
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label" data-i18n="employees">Number of employees</label>
       <input class="cal_class-number" id="employees" type="number" min="0" data-i18n-ph="phEmployees" placeholder="e.g. 24">
     </div>
   </div>
   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="obstacles">What could slow growth?</label>
     <div class="cal_class-multi" id="obstacles">
       <button class="cal_class-chip" data-value="Distribution" data-i18n="obsDist">Distribution</button>
       <button class="cal_class-chip" data-value="Product" data-i18n="obsProd">Product</button>
       <button class="cal_class-chip" data-value="Competition" data-i18n="obsComp">Competition</button>
       <button class="cal_class-chip" data-value="Technology" data-i18n="obsTech">Technology</button>
       <button class="cal_class-chip" data-value="Other" data-i18n="obsOther">Other</button>
     </div>
     <div class="cal_class-hint" data-i18n="obsHint">More than two selections apply a 10 percent discount.</div>
   </div>
   <div class="cal_class-actions">
     <button class="cal_class-btn secondary" data-prev data-i18n="back">Back</button>
     <button class="cal_class-btn" data-next data-i18n="next">Next</button>
   </div>
 </div>

 <div class="cal_class-step cal_class-hidden" data-step="5">
   <h3 data-i18n="step5h">Step 5. Revenue and profitability</h3>
   <div class="cal_class-note" data-i18n="revNote">Enter actual revenue for the last three years and an estimate for the current year. Use the same currency throughout.</div>
   <div class="cal_class-grid-3">
     <div class="cal_class-field">
       <label class="cal_class-label" data-i18n="rev3">Revenue 3 years ago</label>
       <input class="cal_class-number" id="rev2022" type="number" min="0" step="0.01" data-i18n-ph="phRev3" placeholder="e.g. € 500000">
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label" data-i18n="rev2">Revenue 2 years ago</label>
       <input class="cal_class-number" id="rev2023" type="number" min="0" step="0.01" data-i18n-ph="phRev2" placeholder="e.g. € 850000">
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label" data-i18n="rev1">Revenue last year</label>
       <input class="cal_class-number" id="rev2024" type="number" min="0" step="0.01" data-i18n-ph="phRev1" placeholder="e.g. € 1200000">
     </div>
   </div>
   <div class="cal_class-field" style="margin-top:8px;">
     <label class="cal_class-label" data-i18n="rev0">Estimated revenue this year</label>
     <input class="cal_class-number" id="rev2025" type="number" min="0" step="0.01" data-i18n-ph="phRev0" placeholder="e.g. € 1800000">
   </div>

   <div class="cal_class-divider"></div>

   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="profitMetric">Profitability metric</label>
     <select class="cal_class-select" id="profitMetric">
       <option value="EBITDA" selected>EBITDA</option>
       <option value="EBIT">EBIT</option>
       <option value="Net" data-i18n="netProfit">Net profit</option>
     </select>
     <div class="cal_class-small" data-i18n="profitHint">Optional. If you leave profits empty, the Rule of 40 is skipped.</div>
   </div>

   <div class="cal_class-grid-3">
     <div class="cal_class-field">
       <label class="cal_class-label"><span id="pm2023">EBITDA</span><span data-i18n="sfx2"> 2 years ago</span></label>
       <input class="cal_class-number" id="p2023" type="number" step="0.01" data-i18n-ph="phP3" placeholder="e.g. € 40000">
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label"><span id="pm2024">EBITDA</span><span data-i18n="sfx1"> last year</span></label>
       <input class="cal_class-number" id="p2024" type="number" step="0.01" data-i18n-ph="phP4" placeholder="e.g. € 120000">
     </div>
     <div class="cal_class-field">
       <label class="cal_class-label"><span id="pm2025">EBITDA</span><span data-i18n="sfx0"> this year</span></label>
       <input class="cal_class-number" id="p2025" type="number" step="0.01" data-i18n-ph="phP5" placeholder="e.g. € 250000">
     </div>
   </div>

   <div class="cal_class-field">
     <label class="cal_class-label" id="ownerCostsLabel" data-i18n="owner">Owner costs to add back (this year)</label>
     <input class="cal_class-number" id="ownerCosts" type="number" step="0.01" data-i18n-ph="phOwner" placeholder="e.g. € 60000">
     <div class="cal_class-small" data-i18n="ownerHint">Added to this year's profit for the margin, because they can usually be removed after a transaction.</div>
   </div>

   <div class="cal_class-divider"></div>

   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="revHow">How do you generate revenue?</label>
     <div class="cal_class-multi" id="revModel">
       <button class="cal_class-chip" data-value="Subscription" data-i18n="rmSub">Subscription</button>
       <button class="cal_class-chip" data-value="Project" data-i18n="rmProj">Project</button>
       <button class="cal_class-chip" data-value="Other" data-i18n="rmOther">Other</button>
     </div>
   </div>

   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="custShare">Share of the top three customers in total revenue</label>
     <select class="cal_class-select" id="custConc">
       <option value="<30" data-i18n="ccLt30">under 30 percent</option>
       <option value="30-50" data-i18n="cc3050">30 to 50 percent</option>
       <option value=">50" data-i18n="ccGt50">over 50 percent</option>
     </select>
   </div>

   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="capex">Investment need in the next 12 months</label>
     <input class="cal_class-number" id="capexNeed" type="number" step="0.01" data-i18n-ph="phCapex" placeholder="optional">
   </div>

   <div class="cal_class-actions">
     <button class="cal_class-btn secondary" data-prev data-i18n="back">Back</button>
     <button class="cal_class-btn" data-next data-i18n="next">Next</button>
   </div>
   <div class="cal_class-error cal_class-hidden" id="rev-error" data-i18n="revError">Please enter last year's revenue and this year's estimate to continue.</div>
 </div>

 <div class="cal_class-step cal_class-hidden" data-step="6">
   <h3 data-i18n="step6h">Step 6. Market position and resilience</h3>
   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="posLabel">Market position. Select all that apply.</label>
     <div class="cal_class-multi" id="position">
       <button class="cal_class-chip" data-value="Quality" data-i18n="posQual">Quality leader</button>
       <button class="cal_class-chip" data-value="Price" data-i18n="posPrice">Price leader</button>
       <button class="cal_class-chip" data-value="Technology" data-i18n="posTech">Technology leader</button>
       <button class="cal_class-chip" data-value="Innovation" data-i18n="posInno">Innovation leader</button>
       <button class="cal_class-chip" data-value="Other" data-i18n="posOther">Other</button>
     </div>
   </div>
   <div class="cal_class-field">
     <label class="cal_class-label" data-i18n="recLabel">How exposed are you to a recession?</label>
     <select class="cal_class-select" id="recession">
       <option value="Low" data-i18n="recLow">Low impact</option>
       <option value="Medium" data-i18n="recMed">Medium</option>
       <option value="Large" data-i18n="recHigh">High</option>
     </select>
   </div>
   <div class="cal_class-actions">
     <button class="cal_class-btn secondary" data-prev data-i18n="back">Back</button>
     <button class="cal_class-btn" id="calcBtn" data-i18n="calc">Calculate valuation</button>
   </div>
 </div>

 <div class="cal_class-step cal_class-hidden" data-step="7" id="resultStep">
   <h3 data-i18n="resultH">Result</h3>
   <div class="cal_class-output" id="resultBox"></div>
 </div>

 <script>
   ;(function(){
     var box = document.getElementById('roemer-calculator')
     if (!box) return
     var currentYear = new Date().getFullYear()
     var QSTEPS = 6
     var de = false
     var T
     var euroCompact
     var currentStepIdx = 0
     var booted = false
     var leadSent = false
     var N8N_WEBHOOK = 'https://n8n.srv1441852.hstgr.cloud/webhook/rc-funnel'

     var I18N = {
       en: {
         title: 'Roemer Capital Valuation Calculator',
         progress: 'Step {x} of {y} · {z}%',
         step1h: 'Step 1. Your contact details',
         leadFirst: 'First name', leadLast: 'Last name', leadPosition: 'Role', leadCompany: 'Company',
         leadEmail: 'Email', leadPhone: 'Phone',
         phLeadFirst: 'e.g. Anna', phLeadLast: 'e.g. Müller', phLeadPosition: 'e.g. Managing Director',
         phLeadCompany: 'e.g. Acme GmbH', phLeadEmail: 'e.g. anna@acme.com', phLeadPhone: 'e.g. +49 170 1234567',
         leadError: 'Please fill in all fields with a valid email to continue.',
         leadLegal: 'By continuing, you agree to your details being processed so we can get in touch. See the privacy policy for details.',
         step2h: 'Step 2. What is this valuation for?',
         purposeSale: 'Sale of the company', purposeCapital: 'Capital raise', purposeCuriosity: 'Just curious',
         purposeHint: 'For context only. It does not change the calculation.',
         next: 'Next', back: 'Back', calc: 'Calculate valuation',
         step3h: "Step 3. Select your company's sector",
         sector: 'Sector', ogDefault: 'Default', ogMore: 'More',
         howUsed: 'How this is used',
         howUsedBody: 'The sector sets a starting revenue multiple that is adjusted by growth and quality factors. The range in the result uses the sector minimum and maximum multiples.',
         sectorInfo: 'Start multiple {b}x, range {min}x to {max}x, benchmark growth {g} percent.',
         step4h: 'Step 4. Company details',
         founded: 'Year founded', employees: 'Number of employees',
         obstacles: 'What could slow growth?',
         obsDist: 'Distribution', obsProd: 'Product', obsComp: 'Competition', obsTech: 'Technology', obsOther: 'Other',
         obsHint: 'More than two selections apply a 10 percent discount.',
         phFounded: 'e.g. 2019', phEmployees: 'e.g. 24',
         step5h: 'Step 5. Revenue and profitability',
         revNote: 'Enter actual revenue for the last three years and an estimate for the current year. Use the same currency throughout.',
         rev3: 'Revenue 3 years ago', rev2: 'Revenue 2 years ago', rev1: 'Revenue last year', rev0: 'Estimated revenue this year',
         profitMetric: 'Profitability metric',
         profitHint: 'Optional. If you leave profits empty, the Rule of 40 is skipped.',
         netProfit: 'Net profit',
         sfx2: ' 2 years ago', sfx1: ' last year', sfx0: ' this year',
         owner: 'Owner costs to add back (this year)',
         ownerHint: "Added to this year's profit for the margin, because they can usually be removed after a transaction.",
         revHow: 'How do you generate revenue?',
         rmSub: 'Subscription', rmProj: 'Project', rmOther: 'Other',
         custShare: 'Share of the top three customers in total revenue',
         ccLt30: 'under 30 percent', cc3050: '30 to 50 percent', ccGt50: 'over 50 percent',
         capex: 'Investment need in the next 12 months', phCapex: 'optional',
         revError: "Please enter last year's revenue and this year's estimate to continue.",
         phRev3: 'e.g. € 500000', phRev2: 'e.g. € 850000', phRev1: 'e.g. € 1200000', phRev0: 'e.g. € 1800000',
         phP3: 'e.g. € 40000', phP4: 'e.g. € 120000', phP5: 'e.g. € 250000', phOwner: 'e.g. € 60000',
         step6h: 'Step 6. Market position and resilience',
         posLabel: 'Market position. Select all that apply.',
         posQual: 'Quality leader', posPrice: 'Price leader', posTech: 'Technology leader', posInno: 'Innovation leader', posOther: 'Other',
         recLabel: 'How exposed are you to a recession?',
         recLow: 'Low impact', recMed: 'Medium', recHigh: 'High',
         resultH: 'Result',
         resTitle: 'Roemer Capital Valuation',
         resSector: 'Sector {s}', resEmployees: 'Employees {n}', resFounded: 'Founded {n}',
         na: 'n.a.', companyValue: 'Company value', centralEst: 'Central estimate', range: 'Range', rangeJoin: ' to ',
         rangeHint: 'Based on sector minimum and maximum multiples with the same percentage adjustments',
         adjustments: 'Adjustments applied',
         cta: "Let's discuss your result. Book a free meeting", ctaHref: '/contact-us',
         disclaimer: 'This is a high-level estimate for orientation only.',
         baseLine: "Last year's revenue multiplied by sector multiple equals {m} × {x}x",
         growthLine: 'Growth versus benchmark CAGR {c} percent versus {b} percent factor adjustment {a}',
         growthSkip: 'Growth versus benchmark skipped because history is missing',
         adjSub: 'Subscription model plus 15 percent', adjProj: 'Project model minus 10 percent',
         adjCust3050: 'Customer concentration 30 to 50 percent minus 10 percent',
         adjCust50: 'Customer concentration over 50 percent minus 20 percent',
         adjObst: 'More than two growth obstacles minus 10 percent',
         adjQual: 'Quality leader plus 10 percent', adjTech: 'Technology leader plus 15 percent',
         adjInno: 'Innovation leader plus 15 percent', adjPrice: 'Price leader minus 10 percent',
         adjRecLow: 'Low recession impact plus 5 percent', adjRecMed: 'Medium recession impact minus 5 percent',
         adjRecHigh: 'Large recession impact minus 15 percent',
         ruleLow: 'Rule of 40 under 30 minus 20 percent growth {g} percent margin {m} percent',
         ruleMid: 'Rule of 40 30 to 40 neutral growth {g} percent margin {m} percent',
         ruleGood: 'Rule of 40 40 to 60 plus 20 percent growth {g} percent margin {m} percent',
         ruleHigh: 'Rule of 40 over 60 plus 40 percent growth {g} percent margin {m} percent'
       },
       de: {
         title: 'Bewertungsrechner',
         progress: 'Schritt {x} von {y} · {z}%',
         step1h: 'Schritt 1. Deine Kontaktdaten',
         leadFirst: 'Vorname', leadLast: 'Nachname', leadPosition: 'Position', leadCompany: 'Unternehmen',
         leadEmail: 'E-Mail', leadPhone: 'Telefon',
         phLeadFirst: 'z. B. Anna', phLeadLast: 'z. B. Müller', phLeadPosition: 'z. B. Geschäftsführer',
         phLeadCompany: 'z. B. Acme GmbH', phLeadEmail: 'z. B. anna@acme.com', phLeadPhone: 'z. B. +49 170 1234567',
         leadError: 'Bitte alle Felder mit gültiger E-Mail ausfüllen, um weiterzumachen.',
         leadLegal: 'Mit dem Weitergehen stimmst du der Verarbeitung deiner Angaben zur Kontaktaufnahme zu. Details in der Datenschutzerklärung.',
         step2h: 'Schritt 2. Wozu brauchst du die Bewertung?',
         purposeSale: 'Verkauf des Unternehmens', purposeCapital: 'Kapitalerhöhung', purposeCuriosity: 'Nur aus Interesse',
         purposeHint: 'Nur zur Einordnung. Fließt nicht in die Berechnung ein.',
         next: 'Weiter', back: 'Zurück', calc: 'Bewertung berechnen',
         step3h: 'Schritt 3. Branche wählen',
         sector: 'Branche', ogDefault: 'Standard', ogMore: 'Weitere',
         howUsed: 'So wird das verwendet',
         howUsedBody: 'Die Branche setzt den Start-Umsatzmultiplikator. Wachstum und Qualität passen ihn an. Die Bandbreite nutzt Min- und Max-Multiple der Branche.',
         sectorInfo: 'Startmultiple {b}x, Spanne {min}x bis {max}x, Benchmark-Wachstum {g} Prozent.',
         step4h: 'Schritt 4. Unternehmensdaten',
         founded: 'Gründungsjahr', employees: 'Mitarbeiterzahl',
         obstacles: 'Was könnte das Wachstum bremsen?',
         obsDist: 'Vertrieb', obsProd: 'Produkt', obsComp: 'Wettbewerb', obsTech: 'Technologie', obsOther: 'Sonstiges',
         obsHint: 'Mehr als zwei Angaben: 10 Prozent Abschlag.',
         phFounded: 'z. B. 2019', phEmployees: 'z. B. 24',
         step5h: 'Schritt 5. Umsatz und Profitabilität',
         revNote: 'Bitte die tatsächlichen Umsätze der letzten drei Jahre und eine Schätzung fürs laufende Jahr. Überall dieselbe Währung.',
         rev3: 'Umsatz vor 3 Jahren', rev2: 'Umsatz vor 2 Jahren', rev1: 'Umsatz letztes Jahr', rev0: 'Schätzung Umsatz laufendes Jahr',
         profitMetric: 'Profitabilitätskennzahl',
         profitHint: 'Freiwillig. Ohne Gewinnangaben wird die Rule of 40 übersprungen.',
         netProfit: 'Jahresüberschuss',
         sfx2: ' vor 2 Jahren', sfx1: ' letztes Jahr', sfx0: ' laufendes Jahr',
         owner: 'Gesellschafterkosten zum Hinzurechnen (laufendes Jahr)',
         ownerHint: 'Fließen in die Marge ein, weil sie nach einer Transaktion oft entfallen.',
         revHow: 'Wie entsteht der Umsatz?',
         rmSub: 'Abo', rmProj: 'Projekt', rmOther: 'Sonstiges',
         custShare: 'Anteil der Top-3-Kunden am Umsatz',
         ccLt30: 'unter 30 Prozent', cc3050: '30 bis 50 Prozent', ccGt50: 'über 50 Prozent',
         capex: 'Kapitalbedarf nächste 12 Monate', phCapex: 'falls vorhanden',
         revError: 'Bitte Umsatz fürs letzte und das laufende Jahr angeben.',
         phRev3: 'z. B. 500000 €', phRev2: 'z. B. 850000 €', phRev1: 'z. B. 1200000 €', phRev0: 'z. B. 1800000 €',
         phP3: 'z. B. 40000 €', phP4: 'z. B. 120000 €', phP5: 'z. B. 250000 €', phOwner: 'z. B. 60000 €',
         step6h: 'Schritt 6. Marktposition und Widerstandsfähigkeit',
         posLabel: 'Marktposition. Alles Zutreffende auswählen.',
         posQual: 'Qualitätsführer', posPrice: 'Preisführer', posTech: 'Technologieführer', posInno: 'Innovationsführer', posOther: 'Sonstiges',
         recLabel: 'Wie stark trifft euch eine Rezession?',
         recLow: 'Gering', recMed: 'Mittel', recHigh: 'Stark',
         resultH: 'Ergebnis',
         resTitle: 'Roemer Capital Bewertung',
         resSector: 'Branche {s}', resEmployees: 'Mitarbeiter {n}', resFounded: 'Gegründet {n}',
         na: 'k. A.', companyValue: 'Unternehmenswert', centralEst: 'Mittlere Schätzung', range: 'Bandbreite', rangeJoin: ' bis ',
         rangeHint: 'Auf Basis der Branchen-Min- und Max-Multiples, gleiche Anpassungen.',
         adjustments: 'Anpassungen',
         cta: 'Lass uns das Ergebnis durchgehen. Kostenloses Gespräch buchen', ctaHref: '/de/contact-us',
         disclaimer: 'Das ist eine grobe Schätzung zu Orientierungszwecken.',
         baseLine: 'Umsatz letztes Jahr mal Branchenmultiple ergibt {m} × {x}x',
         growthLine: 'Wachstum vs. Benchmark CAGR {c} Prozent vs. {b} Prozent Faktor {a}',
         growthSkip: 'Wachstumsvergleich übersprungen, Historie fehlt',
         adjSub: 'Abo-Modell plus 15 Prozent', adjProj: 'Projektmodell minus 10 Prozent',
         adjCust3050: 'Kundenkonzentration 30 bis 50 Prozent minus 10 Prozent',
         adjCust50: 'Kundenkonzentration über 50 Prozent minus 20 Prozent',
         adjObst: 'Mehr als zwei Wachstumshemmer minus 10 Prozent',
         adjQual: 'Qualitätsführer plus 10 Prozent', adjTech: 'Technologieführer plus 15 Prozent',
         adjInno: 'Innovationsführer plus 15 Prozent', adjPrice: 'Preisführer minus 10 Prozent',
         adjRecLow: 'Geringe Rezessionslast plus 5 Prozent', adjRecMed: 'Mittlere Rezessionslast minus 5 Prozent',
         adjRecHigh: 'Starke Rezessionslast minus 15 Prozent',
         ruleLow: 'Rule of 40 unter 30 minus 20 Prozent Wachstum {g} Prozent Marge {m} Prozent',
         ruleMid: 'Rule of 40 von 30 bis 40 neutral Wachstum {g} Prozent Marge {m} Prozent',
         ruleGood: 'Rule of 40 von 40 bis 60 plus 20 Prozent Wachstum {g} Prozent Marge {m} Prozent',
         ruleHigh: 'Rule of 40 über 60 plus 40 Prozent Wachstum {g} Prozent Marge {m} Prozent'
       }
     }

     function fill(s, map){
       return String(s).replace(/\{(\w+)\}/g, function(_, k){ return map[k] != null ? map[k] : '' })
     }
     function detectDe(){
       var html = document.documentElement
       var lang = ((html.getAttribute('lang') || html.lang || '') + '').toLowerCase()
       if (lang.indexOf('de') === 0) return true
       var wfLoc = ((html.getAttribute('data-wf-locale') || '') + '').toLowerCase()
       var wfCol = ((html.getAttribute('data-wf-collection') || '') + '').toLowerCase()
       if (wfLoc.indexOf('de') !== -1 || wfCol.indexOf('de') !== -1) return true
       var path = ((location && location.pathname) || '').toLowerCase()
       if (path.indexOf('/de/') !== -1 || path === '/de' || path.indexOf('/de-') === 0) return true
       var n = box.parentElement
       while (n && n !== document.documentElement && n !== document.body) {
         var l = ((n.getAttribute && n.getAttribute('lang')) || '').toLowerCase()
         if (l.indexOf('de') === 0) return true
         var dl = (
           ((n.getAttribute && n.getAttribute('data-wf-locale')) || '') + ' ' +
           ((n.getAttribute && n.getAttribute('data-locale')) || '') + ' ' +
           ((n.getAttribute && n.getAttribute('data-wf-collection')) || '') + ' ' +
           (n.className || '')
         ).toLowerCase()
         if (dl.indexOf('de') !== -1 && (l || dl.indexOf('locale') !== -1 || dl.indexOf('lang') !== -1 || (n.getAttribute && n.getAttribute('data-wf-locale')))) return true
         n = n.parentElement
       }
       return false
     }

     var SECTORS = {
       "SaaS": { base: 6, min: 4, max: 10, bench: 0.30 },
       "FinTech": { base: 6, min: 5, max: 12, bench: 0.25 },
       "Marketplace": { base: 5, min: 3, max: 7, bench: 0.20 },
       "E-Commerce": { base: 2, min: 1, max: 3, bench: 0.15 },
       "Digital Services": { base: 1.5, min: 1, max: 2.5, bench: 0.10 },
       "AI / Machine Learning": { base: 7, min: 5, max: 15, bench: 0.35 },
       "Healthcare / MedTech": { base: 4, min: 2, max: 8, bench: 0.20 },
       "FoodTech / AgriTech": { base: 3, min: 2, max: 6, bench: 0.20 },
       "Hardware / DeepTech": { base: 3, min: 2, max: 5, bench: 0.25 },
       "Biotechnology": { base: 5, min: 3, max: 9, bench: 0.20 },
       "Blockchain / Web3": { base: 6, min: 3, max: 12, bench: 0.30 },
       "Logistics": { base: 2.5, min: 1.5, max: 4, bench: 0.12 },
       "Energy & Environment": { base: 4, min: 2, max: 7, bench: 0.18 },
       "Consumer & Retail": { base: 2, min: 1, max: 3, bench: 0.10 },
       "Travel & Entertainment": { base: 2, min: 1, max: 3.5, bench: 0.12 },
       "Media & Advertising": { base: 2.5, min: 1.5, max: 4, bench: 0.12 },
       "Education / EdTech": { base: 3, min: 2, max: 5, bench: 0.18 },
       "Automotive & Mobility": { base: 2.5, min: 1.5, max: 4, bench: 0.12 },
       "Chemicals & Polymers": { base: 2, min: 1.5, max: 3.5, bench: 0.08 },
       "Industrial / Manufacturing": { base: 2, min: 1.5, max: 3, bench: 0.08 },
       "Building & Infrastructure": { base: 1.5, min: 1, max: 2.5, bench: 0.08 },
       "Food & Beverage (classic)": { base: 2, min: 1.5, max: 3.5, bench: 0.10 }
     }

     var sectorSelect = document.getElementById('sector')
     var steps = Array.from(box.querySelectorAll('.cal_class-step'))
     var pm = document.getElementById('profitMetric')

     function fillSectors(){
       if (sectorSelect.options.length) return
       var main = ["SaaS","FinTech","Marketplace","E-Commerce","Digital Services","AI / Machine Learning","Healthcare / MedTech","FoodTech / AgriTech"]
       var more = ["Hardware / DeepTech","Biotechnology","Blockchain / Web3","Logistics","Energy & Environment","Consumer & Retail","Travel & Entertainment","Media & Advertising","Education / EdTech","Automotive & Mobility","Chemicals & Polymers","Industrial / Manufacturing","Building & Infrastructure","Food & Beverage (classic)"]
       var optMain = document.createElement('optgroup'); optMain.label = 'Default'
       var optMore = document.createElement('optgroup'); optMore.label = 'More'
       main.forEach(function(k){ var o=document.createElement('option'); o.value=k; o.textContent=k; optMain.appendChild(o) })
       more.forEach(function(k){ var o=document.createElement('option'); o.value=k; o.textContent=k; optMore.appendChild(o) })
       sectorSelect.appendChild(optMain); sectorSelect.appendChild(optMore)
       sectorSelect.value = 'SaaS'
     }

     function updateSectorInfo(){
       var s = SECTORS[sectorSelect.value]
       if (!s || !T) return
       document.getElementById('sector-info').textContent = fill(T.sectorInfo, {
         b: s.base.toFixed(1), min: s.min, max: s.max, g: (s.bench*100).toFixed(0)
       })
     }

     function metricLabel(){
       var v = pm.value
       if (v === 'Net') return T.netProfit
       if (v === 'EBIT') return 'EBIT'
       return 'EBITDA'
     }
     function updatePmLabels(){
       var lab = metricLabel()
       ;['pm2023','pm2024','pm2025'].forEach(function(id){
         var el = document.getElementById(id)
         if (el) el.textContent = lab
       })
     }

     function updateProgress(){
       if (!T) return
       var isResult = currentStepIdx >= QSTEPS
       var x = isResult ? QSTEPS : currentStepIdx + 1
       var y = QSTEPS
       var z = isResult ? 100 : Math.round((x / y) * 100)
       var el = document.getElementById('rcProgressText')
       if (el) el.textContent = fill(T.progress, { x: x, y: y, z: z })
       var fillEl = document.getElementById('rcProgressFill')
       if (fillEl) fillEl.style.width = z + '%'
     }

     function applyI18n(){
       de = detectDe()
       T = I18N[de ? 'de' : 'en']
       euroCompact = new Intl.NumberFormat(de ? 'de-DE' : 'en-GB', { style: 'currency', currency: 'EUR', notation: 'compact', maximumFractionDigits: 2 })
       box.querySelectorAll('[data-i18n]').forEach(function(el){
         var k = el.getAttribute('data-i18n')
         if (T[k] != null) el.textContent = T[k]
       })
       box.querySelectorAll('[data-i18n-ph]').forEach(function(el){
         var k = el.getAttribute('data-i18n-ph')
         if (T[k] != null) el.placeholder = T[k]
       })
       var groups = sectorSelect.querySelectorAll('optgroup')
       if (groups[0]) groups[0].label = T.ogDefault
       if (groups[1]) groups[1].label = T.ogMore
       var fd = document.getElementById('founded')
       if (fd) fd.max = String(currentYear)
       updatePmLabels()
       updateSectorInfo()
       updateProgress()
     }

     function showStep(idx){
       steps.forEach(function(el, i){ el.classList.toggle('cal_class-hidden', i !== idx) })
       currentStepIdx = idx
       updateProgress()
       try { window.scrollTo({ top: box.offsetTop - 12, behavior: 'smooth' }) } catch(e) {}
     }

     function toggleChip(containerId, single){
       var cont = document.getElementById(containerId)
       cont.addEventListener('click', function(e){
         var b = e.target.closest('.cal_class-chip'); if (!b) return
         if (single) {
           cont.querySelectorAll('.cal_class-chip').forEach(function(c){ c.classList.remove('active') })
           b.classList.add('active')
         } else {
           b.classList.toggle('active')
         }
       })
     }

     function getChipValues(containerId){
       return Array.from(document.getElementById(containerId).querySelectorAll('.cal_class-chip.active')).map(function(b){ return b.dataset.value })
     }
     function num(v){ var n = parseFloat(v); return isNaN(n) ? null : n }

     function validateRevenues(){
       var r24 = num(document.getElementById('rev2024').value)
       var r25 = num(document.getElementById('rev2025').value)
       return r24 !== null && r24 >= 0 && r25 !== null && r25 >= 0
     }

     function validateLead(){
       var first = (document.getElementById('leadFirst').value || '').trim()
       var last = (document.getElementById('leadLast').value || '').trim()
       var position = (document.getElementById('leadPosition').value || '').trim()
       var company = (document.getElementById('leadCompany').value || '').trim()
       var email = (document.getElementById('leadEmail').value || '').trim()
       var phone = (document.getElementById('leadPhone').value || '').trim()
       var emailOk = /.+@.+\..+/.test(email)
       return !!(first && last && position && company && phone && emailOk)
     }

     function submitLeadOnce(){
       if (leadSent) return
       leadSent = true
       var vorname = (document.getElementById('leadFirst').value || '').trim()
       var nachname = (document.getElementById('leadLast').value || '').trim()
       var payload = {
         name: (vorname + ' ' + nachname).trim(),
         email: (document.getElementById('leadEmail').value || '').trim(),
         firma: (document.getElementById('leadCompany').value || '').trim(),
         telefon: (document.getElementById('leadPhone').value || '').trim(),
         position: (document.getElementById('leadPosition').value || '').trim(),
         vorname: vorname,
         nachname: nachname,
         quelle: 'bewertungsrechner',
         locale: de ? 'de' : 'en',
         page: (location && location.pathname) || '',
         ts: new Date().toISOString()
       }
       try {
         fetch(N8N_WEBHOOK, {
           method: 'POST',
           headers: { 'Content-Type': 'application/json' },
           body: JSON.stringify(payload),
           keepalive: true
         }).catch(function(){})
       } catch (e) {}
       try {
         var form = document.getElementById('rcValCapture') || document.getElementById('rcCapture');
         if (form) {
           var map = {
             Name: payload.name,
             'E-Mail': payload.email,
             Firma: payload.firma,
             Telefon: payload.telefon || '',
             Position: payload.position || '',
             Vorname: payload.vorname || '',
             Nachname: payload.nachname || '',
             Quelle: payload.quelle || 'bewertungsrechner',
             Seite: payload.page || '',
             Locale: payload.locale || ''
           };
           Object.keys(map).forEach(function(k){
             var el = form.querySelector('[data-name="'+k+'"]');
             if (el) el.value = map[k];
           });
           var $ = window.jQuery || window.$;
           if ($) $(form).trigger('submit');
           else if (form.requestSubmit) form.requestSubmit();
           else form.dispatchEvent(new Event('submit', {bubbles:true, cancelable:true}));
         }
       } catch (e) {}
     }

     function calcCAGR(r22, r23, r24, r25){
       if (r22 && r22 > 0) return Math.pow((r25||0)/(r22||1), 1/3) - 1
       if (r23 && r23 > 0) return Math.pow((r25||0)/(r23||1), 1/2) - 1
       if (r24 && r24 > 0) return (r25 - r24) / r24
       return null
     }

     function fmtMoney(n){
       if (n === null || isNaN(n)) return T.na
       return euroCompact.format(n)
     }

     function hideRecentYears(){
       var y = parseInt(document.getElementById('founded').value, 10)
       var Y = currentYear
       function vis(id, hide){
         var el = document.getElementById(id)
         if (!el) return
         var f = el.closest('.cal_class-field')
         if (f) f.style.display = hide ? 'none' : ''
       }
       vis('rev2022', !isNaN(y) && y > Y - 3)
       vis('rev2023', !isNaN(y) && y > Y - 2)
       vis('p2023', !isNaN(y) && y > Y - 2)
     }

     function bindOnce(){
       if (booted) return
       booted = true
       fillSectors()
       sectorSelect.addEventListener('change', updateSectorInfo)
       box.querySelectorAll('[data-next]').forEach(function(btn){
         btn.addEventListener('click', function(){
           if (currentStepIdx === 0) {
             var leadOk = validateLead()
             document.getElementById('lead-error').classList.toggle('cal_class-hidden', leadOk)
             if (!leadOk) return
             submitLeadOnce()
           }
           if (currentStepIdx === 4) {
             var ok = validateRevenues()
             document.getElementById('rev-error').classList.toggle('cal_class-hidden', ok)
             if (!ok) return
           }
           showStep(Math.min(currentStepIdx + 1, steps.length - 1))
         })
       })
       box.querySelectorAll('[data-prev]').forEach(function(btn){
         btn.addEventListener('click', function(){ showStep(Math.max(currentStepIdx - 1, 0)) })
       })
       toggleChip('purpose', true)
       toggleChip('obstacles', false)
       toggleChip('revModel', true)
       toggleChip('position', false)
       pm.addEventListener('change', updatePmLabels)
       document.getElementById('founded').addEventListener('input', hideRecentYears)
       document.getElementById('calcBtn').addEventListener('click', runCalc)
       showStep(0)
     }

     function runCalc(){
       if (!validateRevenues()) {
         document.getElementById('rev-error').classList.remove('cal_class-hidden')
         showStep(4)
         return
       }
       var sector = sectorSelect.value
       var s = SECTORS[sector]
       var founded = parseInt(document.getElementById('founded').value, 10)
       var employees = parseInt(document.getElementById('employees').value, 10)
       var obstacles = getChipValues('obstacles')
       var revModel = getChipValues('revModel')[0] || 'Other'
       var position = getChipValues('position')
       var recession = document.getElementById('recession').value
       var custConc = document.getElementById('custConc').value
       var r22 = num(document.getElementById('rev2022').value)
       var r23 = num(document.getElementById('rev2023').value)
       var r24 = num(document.getElementById('rev2024').value) || 0
       var r25 = num(document.getElementById('rev2025').value) || 0
       var profitMetric = pm.value
       var p23 = num(document.getElementById('p2023').value)
       var p24 = num(document.getElementById('p2024').value)
       var p25raw = num(document.getElementById('p2025').value)
       var ownerAddback = num(document.getElementById('ownerCosts').value) || 0
       var p25 = (p25raw || 0) + ownerAddback

       var factor = s.base
       var cagr = calcCAGR(r22, r23, r24, r25)
       var growthAdj = 0
       if (cagr !== null) {
         growthAdj = 0.1 * ((cagr - s.bench) / 0.10)
         factor = factor + growthAdj
         if (factor < 0.1) factor = 0.1
       }

       var percAdj = 0
       var applied = []
       if (revModel === 'Subscription') { percAdj += 0.15; applied.push(T.adjSub) }
       if (revModel === 'Project') { percAdj -= 0.10; applied.push(T.adjProj) }
       if (custConc === '30-50') { percAdj -= 0.10; applied.push(T.adjCust3050) }
       if (custConc === '>50') { percAdj -= 0.20; applied.push(T.adjCust50) }
       if ((obstacles||[]).length > 2) { percAdj -= 0.10; applied.push(T.adjObst) }
       if (position.indexOf('Quality') !== -1) { percAdj += 0.10; applied.push(T.adjQual) }
       if (position.indexOf('Technology') !== -1) { percAdj += 0.15; applied.push(T.adjTech) }
       if (position.indexOf('Innovation') !== -1) { percAdj += 0.15; applied.push(T.adjInno) }
       if (position.indexOf('Price') !== -1) { percAdj -= 0.10; applied.push(T.adjPrice) }
       if (recession === 'Low') { percAdj += 0.05; applied.push(T.adjRecLow) }
       if (recession === 'Medium') { percAdj -= 0.05; applied.push(T.adjRecMed) }
       if (recession === 'Large') { percAdj -= 0.15; applied.push(T.adjRecHigh) }

       var rule40Adj = 0
       if (p25raw !== null && r25 > 0) {
         var growth25 = r24 > 0 ? (r25 - r24) / r24 : (cagr !== null ? cagr : 0)
         var margin25 = p25 / r25
         var rule40 = (growth25 + margin25) * 100
         var gm = { g: (growth25*100).toFixed(1), m: (margin25*100).toFixed(1) }
         if (rule40 < 30) { rule40Adj = -0.20; applied.push(fill(T.ruleLow, gm)) }
         else if (rule40 < 40) { rule40Adj = 0; applied.push(fill(T.ruleMid, gm)) }
         else if (rule40 <= 60) { rule40Adj = 0.20; applied.push(fill(T.ruleGood, gm)) }
         else { rule40Adj = 0.40; applied.push(fill(T.ruleHigh, gm)) }
       }

       var percentTotal = percAdj + rule40Adj
       var centralValue = Math.max(0, r24 * factor) * (1 + percentTotal)
       var minValue = Math.max(0, r24 * s.min) * (1 + percentTotal)
       var maxValue = Math.max(0, r24 * s.max) * (1 + percentTotal)

       var lines = []
       lines.push(fill(T.baseLine, { m: fmtMoney(r24), x: s.base.toFixed(1) }))
       if (cagr !== null) {
         lines.push(fill(T.growthLine, {
           c: (cagr*100).toFixed(1), b: (s.bench*100).toFixed(0),
           a: (growthAdj>=0?'+':'') + growthAdj.toFixed(2)
         }))
       } else {
         lines.push(T.growthSkip)
       }
       if (applied.length) lines = lines.concat(applied)

       var empStr = isNaN(employees) ? T.na : String(employees)
       var foundStr = isNaN(founded) ? T.na : String(founded)
       document.getElementById('resultBox').innerHTML =
         '<h3>' + T.resTitle + '</h3>' +
         '<div class="cal_class-flex">' +
           '<span class="cal_class-badge">' + fill(T.resSector, { s: sector }) + '</span>' +
           '<span class="cal_class-badge">' + fill(T.resEmployees, { n: empStr }) + '</span>' +
           '<span class="cal_class-badge">' + fill(T.resFounded, { n: foundStr }) + '</span>' +
         '</div>' +
         '<div class="cal_class-divider"></div>' +
         '<div class="cal_class-row"><div>' +
           '<div class="cal_class-label">' + T.companyValue + '</div>' +
           '<div style="font-size:28px; font-weight:800; color:#ffffff;">' + fmtMoney(centralValue) + '</div>' +
           '<div class="cal_class-small">' + T.centralEst + '</div>' +
         '</div><div>' +
           '<div class="cal_class-label">' + T.range + '</div>' +
           '<div style="font-size:18px; font-weight:700; color:#bfdbfe;">' + fmtMoney(minValue) + T.rangeJoin + fmtMoney(maxValue) + '</div>' +
           '<div class="cal_class-small">' + T.rangeHint + '</div>' +
         '</div></div>' +
         '<div class="cal_class-divider"></div>' +
         '<div class="cal_class-label">' + T.adjustments + '</div>' +
         '<ul class="cal_class-list">' + lines.map(function(l){ return '<li>' + l + '</li>' }).join('') + '</ul>' +
         '<div class="cal_class-divider"></div>' +
         '<a class="cal_class-cta" href="' + T.ctaHref + '">' + T.cta + '</a>' +
         '<div class="cal_class-small" style="margin-top:8px;">' + T.disclaimer + '</div>'
       showStep(6)
     }

     function start(){
       bindOnce()
       applyI18n()
       hideRecentYears()
     }
     if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start)
     else start()
     setTimeout(start, 50)
     setTimeout(start, 400)
     setTimeout(start, 600)
   })()
 </script>
</div>

<!-- End embed -->