{"id":35993,"date":"2024-12-23T08:16:05","date_gmt":"2024-12-23T06:16:05","guid":{"rendered":"https:\/\/padelcreations.com\/gewinn-rechner\/"},"modified":"2026-06-01T20:11:24","modified_gmt":"2026-06-01T18:11:24","slug":"gewinn-rechner","status":"publish","type":"page","link":"https:\/\/www.padelcreations.com\/de\/gewinn-rechner\/","title":{"rendered":"Padel-Gewinnrechner"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"35993\" class=\"elementor elementor-35993 elementor-33973\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-03a2048 e-flex e-con-boxed e-con e-parent\" data-id=\"03a2048\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;shape_divider_bottom&quot;:&quot;triangle-asymmetrical&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-shape elementor-shape-bottom\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" d=\"M738,99l262-93V0H0v5.6L738,99z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c55323 elementor-widget elementor-widget-heading\" data-id=\"7c55323\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">PADEL CENTER GEWINNRECHNER<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-568b76f elementor-widget elementor-widget-text-editor\" data-id=\"568b76f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dieses Tool erm\u00f6glicht es Ihnen, das Umsatzpotenzial zu analysieren, indem Sie einige Schl\u00fcsselvariablen wie Auslastungsraten, Preisgestaltung und betriebliche Faktoren anpassen. Ob Sie einen einzelnen Platz oder mehrere Anlagen verwalten, der Rechner bietet Echtzeit-Einblicke, um Ihnen bei fundierten Entscheidungen zu helfen. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-00e726d e-flex e-con-boxed e-con e-parent\" data-id=\"00e726d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c9d119 elementor-widget elementor-widget-spacer\" data-id=\"4c9d119\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-871d5e7 elementor-widget elementor-widget-heading\" data-id=\"871d5e7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Erforschen &amp; Verstehen Sie die Zahlen:<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e4d109 elementor-widget elementor-widget-text-editor\" data-id=\"1e4d109\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Der Gewinnrechner ist ein <b>interaktives Tool<\/b>, das Ihnen hilft, <b>den t\u00e4glichen, monatlichen und j\u00e4hrlichen Umsatz<\/b> aus Platzvermietungen zu sch\u00e4tzen, indem Sie Schl\u00fcsselvariablen anpassen. Geben Sie einfach Details wie t\u00e4gliche Betriebsstunden, durchschnittlichen Mietpreis, Auslastungsrate und die Anzahl der verf\u00fcgbaren Pl\u00e4tze ein, um zu sehen, wie jeder Faktor die potenziellen Einnahmen beeinflusst. Sie k\u00f6nnen auch Ihre bevorzugte W\u00e4hrung f\u00fcr die Ergebnisse ausw\u00e4hlen.<br>Das Tool erm\u00f6glicht es Ihnen, verschiedene Szenarien zu modellieren, indem Sie Kostenkomponenten einbeziehen, um deren Auswirkung auf den endg\u00fcltigen <strong>Gewinn vor Steuern (EBT)<\/strong> <b>und ROI<\/b> zu sehen. Der EBT stellt den Gewinn eines Unternehmens vor Abzug der Ertragssteuern dar und bietet einen Indikator f\u00fcr die Rentabilit\u00e4t aus dem operativen Gesch\u00e4ft und anderen Aktivit\u00e4ten, ohne Ber\u00fccksichtigung der Steuerauswirkungen.<br>Ob Sie ein neuer Unternehmer sind oder bestehende Betriebe optimieren, dieses Tool bietet wertvolle Einblicke f\u00fcr fundierte finanzielle Entscheidungen.   <\/p><p>F\u00fcr weitere Informationen, die Ihnen bei Ihrem Gesch\u00e4ftsmodell helfen k\u00f6nnen, besuchen Sie bitte<br><a href=\"https:\/\/www.padelcreations.com\/business-plan-for-padel\/.\">https:\/\/www.padelcreations.com\/business-plan-for-padel\/.<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae0ae6f elementor-widget elementor-widget-html\" data-id=\"ae0ae6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Padel Center Profit Calculator<\/title>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/@tabler\/icons-webfont@latest\/tabler-icons.min.css\">\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n<style>\r\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n  body {\r\n    font-family: system-ui, -apple-system, sans-serif;\r\n    background: #f5f5f3;\r\n    color: #1a1a18;\r\n    padding: 0;\r\n    margin: 0;\r\n  }\r\n\r\n  .wrap {\r\n    width: 100%;\r\n    max-width: 1200px;\r\n  }\r\n\r\n  \/* Top metrics bar *\/\r\n  .top-metrics {\r\n    display: grid;\r\n    grid-template-columns: repeat(5, 1fr);\r\n    gap: 12px;\r\n  }\r\n\r\n  .mc {\r\n    background: #efefed;\r\n    border-radius: 8px;\r\n    padding: 14px 16px;\r\n  }\r\n\r\n  .mc-label {\r\n    font-size: 12px;\r\n    color: #777;\r\n    margin-bottom: 6px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n  }\r\n\r\n  .mc-label i { font-size: 14px; }\r\n\r\n  .mc-val {\r\n    font-size: 26px;\r\n    font-weight: 500;\r\n    color: #1a1a18;\r\n  }\r\n\r\n  .mc-val.pos { color: #1D9E75; }\r\n  .mc-val.neg { color: #D85A30; }\r\n  .mc-cur { font-size: 13px; color: #888; margin-left: 4px; }\r\n\r\n  \/* 3-column grid *\/\r\n  .cols {\r\n    display: grid;\r\n    grid-template-columns: minmax(0,1fr) minmax(0,1fr) 340px;\r\n    gap: 12px;\r\n  }\r\n\r\n  \/* Cards *\/\r\n  .card {\r\n    background: #fff;\r\n    border: 0.5px solid rgba(0,0,0,0.12);\r\n    border-radius: 12px;\r\n    padding: 1.25rem;\r\n    min-width: 0;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .sec-title {\r\n    font-size: 11px;\r\n    font-weight: 500;\r\n    text-transform: uppercase;\r\n    letter-spacing: .07em;\r\n    color: #999;\r\n    margin-bottom: 14px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 7px;\r\n  }\r\n\r\n  .sec-title i { font-size: 15px; }\r\n\r\n  \/* Field rows *\/\r\n  .fr {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    padding: 7px 0;\r\n    border-bottom: 0.5px solid rgba(0,0,0,0.08);\r\n    min-width: 0;\r\n  }\r\n\r\n  .fr:last-of-type { border-bottom: none; }\r\n\r\n  .fl {\r\n    font-size: 13px;\r\n    color: #555;\r\n    flex: 1;\r\n    min-width: 0;\r\n    padding-right: 8px;\r\n  }\r\n\r\n  .fh {\r\n    font-size: 11px;\r\n    color: #aaa;\r\n    margin-top: 2px;\r\n  }\r\n\r\n  .fi {\r\n    display: flex;\r\n    align-items: stretch;\r\n    flex-shrink: 0;\r\n    width: 120px;\r\n  }\r\n\r\n  .fi input[type=number] {\r\n    flex: 1;\r\n    min-width: 0;\r\n    text-align: right;\r\n    font-size: 13px;\r\n    padding: 5px 6px 5px 4px;\r\n    background: #f5f5f3;\r\n    border: 0.5px solid rgba(0,0,0,0.18);\r\n    border-radius: 8px 0 0 8px;\r\n    border-right: none;\r\n    color: #1a1a18;\r\n    outline: none;\r\n  }\r\n\r\n  .fi input[type=number]:focus {\r\n    border-color: rgba(0,0,0,0.35);\r\n  }\r\n\r\n  .fi input[type=number]:focus + .unit {\r\n    border-color: rgba(0,0,0,0.35);\r\n  }\r\n\r\n  .fi select {\r\n    flex-shrink: 0;\r\n    font-size: 12px;\r\n    padding: 5px 2px;\r\n    background: #ececea;\r\n    border: 0.5px solid rgba(0,0,0,0.18);\r\n    border-left: none;\r\n    border-radius: 0 8px 8px 0;\r\n    color: #aaa;\r\n    outline: none;\r\n    cursor: pointer;\r\n    width: 44px;\r\n  }\r\n\r\n  .unit {\r\n    font-size: 12px;\r\n    color: #aaa;\r\n    background: #ececea;\r\n    border: 0.5px solid rgba(0,0,0,0.18);\r\n    border-left: none;\r\n    border-radius: 0 8px 8px 0;\r\n    padding: 5px 0;\r\n    flex-shrink: 0;\r\n    white-space: nowrap;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 44px;\r\n  }\r\n\r\n  .sl-unit {\r\n    font-size: 12px;\r\n    color: #aaa;\r\n    background: #ececea;\r\n    border: 0.5px solid rgba(0,0,0,0.18);\r\n    border-left: none;\r\n    border-radius: 0 8px 8px 0;\r\n    padding: 5px 0;\r\n    flex-shrink: 0;\r\n    white-space: nowrap;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 44px;\r\n  }\r\n\r\n  \/* slider val \u2014 exactly matches .fi width *\/\r\n  .sl-val {\r\n    display: flex;\r\n    align-items: stretch;\r\n    flex-shrink: 0;\r\n    width: 120px;\r\n  }\r\n\r\n  .sl-val input[type=number] {\r\n    flex: 1;\r\n    min-width: 0;\r\n    text-align: right;\r\n    font-size: 13px;\r\n    padding: 5px 6px 5px 4px;\r\n    background: #f5f5f3;\r\n    border: 0.5px solid rgba(0,0,0,0.18);\r\n    border-right: none;\r\n    border-radius: 8px 0 0 8px;\r\n    color: #1a1a18;\r\n    outline: none;\r\n  }\r\n\r\n  .sl-val input[type=number]:focus { border-color: rgba(0,0,0,0.35); }\r\n\r\n  .sl-unit {\r\n    font-size: 12px;\r\n    color: #aaa;\r\n    background: #ececea;\r\n    border: 0.5px solid rgba(0,0,0,0.18);\r\n    border-left: none;\r\n    border-radius: 0 8px 8px 0;\r\n    padding: 5px 6px;\r\n    flex-shrink: 0;\r\n    white-space: nowrap;\r\n    display: flex;\r\n    align-items: center;\r\n  }\r\n\r\n  .inline-val {\r\n    font-size: 13px;\r\n    font-weight: 500;\r\n    color: #1a1a18;\r\n  }\r\n\r\n  \/* Slider rows *\/\r\n  .sl-row {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n    padding: 7px 0;\r\n    border-bottom: 0.5px solid rgba(0,0,0,0.08);\r\n  }\r\n\r\n  .sl-row:last-of-type { border-bottom: none; }\r\n\r\n  .sl-lbl {\r\n    font-size: 13px;\r\n    color: #555;\r\n    width: 110px;\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .sl-row input[type=range] {\r\n    flex: 1;\r\n    accent-color: #1D9E75;\r\n    cursor: pointer;\r\n    background: transparent;\r\n  }\r\n\r\n  .sl-row input[type=range]::-webkit-slider-runnable-track {\r\n    background: #ccc;\r\n    height: 4px;\r\n    border-radius: 4px;\r\n  }\r\n\r\n  .sl-row input[type=range]::-moz-range-track {\r\n    background: #ccc;\r\n    height: 4px;\r\n    border-radius: 4px;\r\n  }\r\n\r\n  .sl-row input[type=range]::-webkit-slider-thumb {\r\n    -webkit-appearance: none;\r\n    width: 18px;\r\n    height: 18px;\r\n    border-radius: 50%;\r\n    background: #1D9E75;\r\n    margin-top: -7px;\r\n    cursor: pointer;\r\n  }\r\n\r\n  .sl-row input[type=range]::-moz-range-thumb {\r\n    width: 18px;\r\n    height: 18px;\r\n    border-radius: 50%;\r\n    background: #1D9E75;\r\n    border: none;\r\n    cursor: pointer;\r\n  }\r\n\r\n  \/* ROI bar *\/\r\n  .roi-wrap {\r\n    background: #e8e8e6;\r\n    border-radius: 8px;\r\n    height: 6px;\r\n    margin-top: 10px;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .roi-bar {\r\n    height: 100%;\r\n    border-radius: 8px;\r\n    background: #1D9E75;\r\n    transition: width .4s ease;\r\n    width: 0;\r\n  }\r\n\r\n  \/* EBT lines *\/\r\n  .ebt-line {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: baseline;\r\n    padding: 7px 0;\r\n    border-bottom: 0.5px solid rgba(0,0,0,0.08);\r\n  }\r\n\r\n  .ebt-lbl { font-size: 13px; color: #555; }\r\n\r\n  .ebt-val {\r\n    font-size: 15px;\r\n    font-weight: 500;\r\n    color: #1a1a18;\r\n  }\r\n\r\n  .ebt-val.pos { color: #1D9E75; }\r\n  .ebt-val.neg { color: #D85A30; }\r\n\r\n  \/* ROI summary box *\/\r\n  .roi-box {\r\n    background: #f5f5f3;\r\n    border-radius: 8px;\r\n    padding: 12px 14px;\r\n    margin-top: 14px;\r\n  }\r\n\r\n  .roi-box-label {\r\n    font-size: 11px;\r\n    color: #999;\r\n    margin-bottom: 6px;\r\n  }\r\n\r\n  .roi-big {\r\n    font-size: 28px;\r\n    font-weight: 500;\r\n    color: #1a1a18;\r\n  }\r\n\r\n  .roi-big.pos { color: #1D9E75; }\r\n  .roi-big.neg { color: #D85A30; }\r\n\r\n  \/* Link button *\/\r\n  .link-btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n    font-size: 12px;\r\n    padding: 6px 12px;\r\n    border: 0.5px solid rgba(0,0,0,0.2);\r\n    border-radius: 8px;\r\n    background: transparent;\r\n    color: #666;\r\n    cursor: pointer;\r\n    text-decoration: none;\r\n    margin-top: 14px;\r\n    transition: background .15s;\r\n  }\r\n\r\n  .link-btn:hover { background: #f0f0ee; }\r\n\r\n  \/* \u2500\u2500 Mobile \u2500\u2500 *\/\r\n  @media (max-width: 767px) {\r\n\r\n    .wrap {\r\n      width: 100%;\r\n      padding: 12px;\r\n    }\r\n\r\n    \/* Stack columns *\/\r\n    .cols {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    \/* Metric cards: 2 per row on mobile *\/\r\n    .top-metrics {\r\n      grid-template-columns: 1fr 1fr;\r\n    }\r\n\r\n    \/* Slightly smaller metric values *\/\r\n    .mc-val {\r\n      font-size: 20px;\r\n    }\r\n\r\n    \/* Sliders: stack label above, slider+input below *\/\r\n    .sl-row {\r\n      flex-wrap: wrap;\r\n      gap: 6px;\r\n    }\r\n\r\n    .sl-lbl {\r\n      width: 100%;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .sl-row input[type=range] {\r\n      flex: 1;\r\n      min-width: 0;\r\n    }\r\n\r\n    \/* Full-width input groups on mobile *\/\r\n    .fr {\r\n      flex-wrap: wrap;\r\n      gap: 6px;\r\n    }\r\n\r\n    .fl {\r\n      width: 100%;\r\n      flex: none;\r\n      padding-right: 0;\r\n    }\r\n\r\n    .fi {\r\n      width: 100%;\r\n    }\r\n\r\n    .fi input[type=number] {\r\n      flex: 1;\r\n      font-size: 15px;\r\n      padding: 8px 8px 8px 4px;\r\n    }\r\n\r\n    .fi select {\r\n      font-size: 14px;\r\n      padding: 8px 4px;\r\n      width: 52px;\r\n    }\r\n\r\n    .unit {\r\n      font-size: 13px;\r\n      padding: 8px 0;\r\n      width: 52px;\r\n    }\r\n\r\n    .sl-val {\r\n      width: 130px;\r\n      flex-shrink: 0;\r\n    }\r\n\r\n    .sl-val input[type=number] {\r\n      font-size: 15px;\r\n      padding: 8px 6px 8px 4px;\r\n    }\r\n\r\n    .sl-unit {\r\n      font-size: 13px;\r\n      padding: 8px 0;\r\n      width: 44px;\r\n    }\r\n\r\n    \/* Profitability panel *\/\r\n    .roi-box > div:first-child {\r\n      flex-direction: column;\r\n      gap: 10px;\r\n    }\r\n\r\n    .roi-big {\r\n      font-size: 24px;\r\n    }\r\n\r\n    \/* EBT rows *\/\r\n    .ebt-line {\r\n      flex-wrap: wrap;\r\n      gap: 2px;\r\n    }\r\n\r\n    \/* Card padding tighter *\/\r\n    .card {\r\n      padding: 1rem;\r\n    }\r\n\r\n    \/* Link button full width *\/\r\n    .link-btn {\r\n      width: 100%;\r\n      justify-content: center;\r\n    }\r\n\r\n    \/* Loan installment display *\/\r\n    #mFee {\r\n      flex: 1 !important;\r\n      font-size: 15px !important;\r\n      padding: 8px 8px 8px 4px !important;\r\n    }\r\n  }\r\n\r\n  \/* \u2500\u2500 Tablet \u2500\u2500 *\/\r\n  @media (min-width: 768px) and (max-width: 1199px) {\r\n\r\n    .wrap {\r\n      width: 100%;\r\n      padding: 16px;\r\n    }\r\n\r\n    .cols {\r\n      grid-template-columns: 1fr 1fr;\r\n    }\r\n\r\n    \/* Profitability card goes full width at bottom *\/\r\n    .cols > .card:last-child {\r\n      grid-column: 1 \/ -1;\r\n    }\r\n\r\n    .top-metrics {\r\n      grid-template-columns: repeat(3, 1fr);\r\n    }\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"wrap\">\r\n\r\n  <!-- 3-column layout -->\r\n  <div class=\"cols\">\r\n\r\n    <!-- Revenue -->\r\n    <div class=\"card\">\r\n      <div class=\"sec-title\"><i class=\"ti ti-ball-tennis\"><\/i> <span data-i18n=\"revenueTitle\"><\/span><\/div>\r\n\r\n      <div class=\"fr\">\r\n        <span class=\"fl\" data-i18n=\"hours\"><\/span>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"hours\" value=\"14\" min=\"1\" max=\"24\" oninput=\"calc()\">\r\n          <span class=\"unit\" data-i18n=\"hrs\"><\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"fr\">\r\n        <span class=\"fl\" data-i18n=\"price\"><\/span>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"price\" value=\"28\" min=\"0\" oninput=\"calc()\">\r\n          <select id=\"currency\" onchange=\"calc()\">\r\n            <option>EUR<\/option>\r\n            <option>USD<\/option>\r\n            <option>GBP<\/option>\r\n            <option>CHF<\/option>\r\n            <option>AUD<\/option>\r\n            <option>CAD<\/option>\r\n          <\/select>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"fr\">\r\n        <span class=\"fl\" data-i18n=\"occupancy\"><\/span>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"occupancy\" value=\"40\" min=\"0\" max=\"100\" oninput=\"calc()\">\r\n          <span class=\"unit\">%<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"fr\">\r\n        <span class=\"fl\" data-i18n=\"courts\"><\/span>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"courts\" value=\"3\" min=\"1\" oninput=\"calc()\">\r\n          <span class=\"unit\" data-i18n=\"courtsUnit\"><\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"fr\" style=\"border-bottom:none\">\r\n        <div style=\"flex:1\">\r\n          <div class=\"fl\" data-i18n=\"addIncome\"><\/div>\r\n          <div class=\"fh\" data-i18n=\"addIncomeHint\"><\/div>\r\n        <\/div>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"addInc\" value=\"0\" min=\"0\" oninput=\"calc()\">\r\n          <span class=\"unit\" id=\"uAdd\">EUR<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Costs -->\r\n    <div class=\"card\">\r\n      <div class=\"sec-title\"><i class=\"ti ti-credit-card\"><\/i> <span data-i18n=\"costsTitle\"><\/span><\/div>\r\n\r\n      <div class=\"sl-row\">\r\n        <span class=\"sl-lbl\" data-i18n=\"financedCapital\"><\/span>\r\n        <input type=\"range\" id=\"fcS\" min=\"0\" max=\"500000\" step=\"1000\" value=\"0\" oninput=\"syncFC('s')\">\r\n        <div class=\"sl-val\">\r\n          <input type=\"number\" id=\"fcI\" value=\"0\" min=\"0\" oninput=\"syncFC('i')\">\r\n          <span class=\"sl-unit\" id=\"uFC\">EUR<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"sl-row\">\r\n        <span class=\"sl-lbl\" data-i18n=\"interestRate\"><\/span>\r\n        <input type=\"range\" id=\"irS\" min=\"0.1\" max=\"10\" step=\"0.1\" value=\"3.5\" oninput=\"syncIR('s')\">\r\n        <div class=\"sl-val\">\r\n          <input type=\"number\" id=\"irI\" value=\"3.5\" step=\"0.1\" oninput=\"syncIR('i')\">\r\n          <span class=\"sl-unit\">%<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"sl-row\">\r\n        <span class=\"sl-lbl\" data-i18n=\"creditDuration\"><\/span>\r\n        <input type=\"range\" id=\"cdS\" min=\"1\" max=\"25\" step=\"1\" value=\"5\" oninput=\"syncCD('s')\">\r\n        <div class=\"sl-val\">\r\n          <input type=\"number\" id=\"cdI\" value=\"5\" min=\"1\" max=\"25\" oninput=\"syncCD('i')\">\r\n          <span class=\"sl-unit\" data-i18n=\"yrs\"><\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"fr\" style=\"border-top:0.5px solid rgba(0,0,0,0.08);margin-top:8px\">\r\n        <span class=\"fl\" data-i18n=\"monthlyInstallment\"><\/span>\r\n        <div class=\"fi\">\r\n          <span id=\"mFee\" style=\"flex:1;text-align:right;font-size:13px;font-weight:500;background:#f5f5f3;border:0.5px solid rgba(0,0,0,0.18);border-right:none;border-radius:8px 0 0 8px;padding:5px 6px 5px 4px;color:#1a1a18;display:flex;align-items:center;justify-content:flex-end\">0<\/span>\r\n          <span class=\"unit\" id=\"uFee\">EUR<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"fr\">\r\n        <span class=\"fl\" data-i18n=\"monthlyRent\"><\/span>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"rent\" value=\"0\" min=\"0\" oninput=\"calc()\">\r\n          <span class=\"unit\" id=\"uRent\">EUR<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"fr\" style=\"border-bottom:none\">\r\n        <div style=\"flex:1\">\r\n          <div class=\"fl\" data-i18n=\"otherCosts\"><\/div>\r\n          <div class=\"fh\" data-i18n=\"otherCostsHint\"><\/div>\r\n        <\/div>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"other\" value=\"0\" min=\"0\" oninput=\"calc()\">\r\n          <span class=\"unit\" id=\"uOther\">EUR<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Profitability -->\r\n    <div class=\"card\">\r\n      <div class=\"sec-title\"><i class=\"ti ti-chart-bar\"><\/i> <span data-i18n=\"profitTitle\"><\/span><\/div>\r\n\r\n      <div class=\"ebt-line\">\r\n        <span class=\"ebt-lbl\" data-i18n=\"totalCosts\"><\/span>\r\n        <span class=\"ebt-val\" id=\"totCosts\">0 <span style=\"font-size:12px;font-weight:400;color:#aaa\" id=\"uCosts\">EUR<\/span><\/span>\r\n      <\/div>\r\n      <div class=\"ebt-line\">\r\n        <span class=\"ebt-lbl\" data-i18n=\"ebtMonth\"><\/span>\r\n        <span class=\"ebt-val\" id=\"ebtM\">0 <span style=\"font-size:12px;font-weight:400;color:#aaa\">EUR<\/span><\/span>\r\n      <\/div>\r\n      <div class=\"ebt-line\">\r\n        <span class=\"ebt-lbl\" data-i18n=\"ebtYear\"><\/span>\r\n        <span class=\"ebt-val\" id=\"ebtY\">0 <span style=\"font-size:12px;font-weight:400;color:#aaa\">EUR<\/span><\/span>\r\n      <\/div>\r\n\r\n      <div class=\"fr\" style=\"border-bottom:none;margin-top:4px\">\r\n        <span class=\"fl\" data-i18n=\"initialInv\"><\/span>\r\n        <div class=\"fi\">\r\n          <input type=\"number\" id=\"initInv\" value=\"0\" min=\"0\" autocomplete=\"off\" oninput=\"calc()\">\r\n          <span class=\"unit\" id=\"uInv\">EUR<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"roi-box\">\r\n        <div style=\"display:flex;justify-content:space-between;align-items:flex-start\">\r\n          <div>\r\n            <div class=\"roi-box-label\" data-i18n=\"roi\"><\/div>\r\n            <div style=\"display:flex;align-items:baseline;gap:6px\">\r\n              <span class=\"roi-big\" id=\"roiLarge\">0<\/span>\r\n              <span style=\"font-size:14px;color:#888\">%<\/span>\r\n            <\/div>\r\n          <\/div>\r\n          <div style=\"text-align:right\">\r\n            <div class=\"roi-box-label\" data-i18n=\"payback\"><\/div>\r\n            <div style=\"display:flex;align-items:baseline;gap:4px;justify-content:flex-end\">\r\n              <span style=\"font-size:20px;font-weight:500;color:#1a1a18\" id=\"payback\">\u2014<\/span>\r\n              <span style=\"font-size:13px;color:#888\" id=\"paybackUnit\"><\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"roi-wrap\" style=\"margin-top:12px\"><div class=\"roi-bar\" id=\"roiBar2\"><\/div><\/div>\r\n        <div style=\"display:flex;justify-content:space-between;margin-top:5px\">\r\n          <span style=\"font-size:11px;color:#bbb\">0%<\/span>\r\n          <span style=\"font-size:11px;color:#bbb\" id=\"roiBarMax\">100%<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <a class=\"link-btn\" href=\"https:\/\/www.padelcreations.com\/income-sources-in-a-padel-center\/\" target=\"_blank\">\r\n        <i class=\"ti ti-external-link\"><\/i> <span data-i18n=\"exploreLink\"><\/span>\r\n      <\/a>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n  <!-- Bottom summary metrics -->\r\n  <div class=\"top-metrics\" style=\"margin-top:14px;margin-bottom:0\">\r\n    <div class=\"mc\">\r\n      <div class=\"mc-label\"><i class=\"ti ti-calendar\"><\/i> <span data-i18n=\"dailyTurnover\"><\/span><\/div>\r\n      <div><span class=\"mc-val\" id=\"tDay\">0<\/span><span class=\"mc-cur\" id=\"uDay\">EUR<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"mc\">\r\n      <div class=\"mc-label\"><i class=\"ti ti-calendar-month\"><\/i> <span data-i18n=\"monthlyTurnover\"><\/span><\/div>\r\n      <div><span class=\"mc-val\" id=\"tMonth\">0<\/span><span class=\"mc-cur\" id=\"uMonth\">EUR<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"mc\">\r\n      <div class=\"mc-label\"><i class=\"ti ti-trending-up\"><\/i> <span data-i18n=\"ebtMonthLabel\"><\/span><\/div>\r\n      <div><span class=\"mc-val\" id=\"ebt\">0<\/span><span class=\"mc-cur\" id=\"uEbt\">EUR<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"mc\">\r\n      <div class=\"mc-label\"><i class=\"ti ti-chart-bar\"><\/i> ROI<\/div>\r\n      <div><span class=\"mc-val\" id=\"roiVal\">0<\/span><span class=\"mc-cur\">%<\/span><\/div>\r\n      <div class=\"roi-wrap\"><div class=\"roi-bar\" id=\"roiBar\"><\/div><\/div>\r\n    <\/div>\r\n    <div class=\"mc\">\r\n      <div class=\"mc-label\"><i class=\"ti ti-clock-return\"><\/i> <span data-i18n=\"paybackLabel\"><\/span><\/div>\r\n      <div><span class=\"mc-val\" id=\"paybackTop\">\u2014<\/span><span class=\"mc-cur\" id=\"paybackTopUnit\"><\/span><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- PDF Download button -->\r\n  <div style=\"margin-top:14px;text-align:right\">\r\n    <button id=\"pdf-trigger-btn\" style=\"\r\n      display:inline-flex;align-items:center;gap:8px;\r\n      background:linear-gradient(145deg,#1c3757,#16304a);\r\n      color:#fff;padding:12px 22px;border:none;border-radius:12px;\r\n      font-size:14px;font-weight:600;cursor:pointer;\r\n      box-shadow:0 4px 12px rgba(0,0,0,0.2);transition:all 0.3s ease;\r\n    \">\r\n      <i class=\"ti ti-file-download\" style=\"font-size:16px\"><\/i>\r\n      <span data-i18n=\"downloadPDF\"><\/span>\r\n    <\/button>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<!-- \u2500\u2500 PDF Code Modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<div id=\"pdf-modal\" style=\"\r\n  display:none;position:fixed;top:0;left:0;width:100%;height:100%;\r\n  background:rgba(0,0,0,0.6);backdrop-filter:blur(5px);\r\n  justify-content:center;align-items:center;z-index:9999;\r\n\">\r\n  <div style=\"\r\n    background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);\r\n    border-radius:20px;padding:40px 30px;text-align:center;color:white;\r\n    font-family:system-ui,sans-serif;max-width:400px;width:90%;\r\n    backdrop-filter:blur(10px);box-shadow:0 8px 32px rgba(0,0,0,0.3);\r\n    animation:pdfFadeIn 0.4s ease-in-out;\r\n  \">\r\n    <h2 id=\"pdf-modal-title\" style=\"margin-bottom:20px;color:#E7E7E6;font-size:20px\"><\/h2>\r\n\r\n    <!-- Hidden field stops Chrome treating this as a login form -->\r\n    <input type=\"text\" name=\"username\" autocomplete=\"username\" style=\"display:none\" aria-hidden=\"true\">\r\n\r\n    <input type=\"text\" id=\"pdf-code-input\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" role=\"textbox\" style=\"\r\n      padding:12px;border:none;border-radius:10px;font-size:16px;\r\n      width:100%;margin-bottom:12px;background:#f2f2f2;color:#1c3757;\r\n      box-sizing:border-box;-webkit-text-security:disc;\r\n    \"\/>\r\n\r\n    <div id=\"pdf-error-msg\" style=\"color:#ffbbbb;margin-bottom:12px;display:none;font-size:14px;\"><\/div>\r\n\r\n    <div style=\"font-size:13px;color:#E7E7E6;margin-bottom:20px;line-height:1.6\">\r\n      <span id=\"pdf-modal-nocode\"><\/span>\r\n      <a href=\"https:\/\/www.padelcreations.com\/contact\/\" target=\"_blank\"\r\n         style=\"color:#76a343;text-decoration:underline;\" id=\"pdf-modal-getcode\"><\/a>.\r\n      <br><span id=\"pdf-modal-sub\"><\/span>\r\n    <\/div>\r\n\r\n    <button id=\"pdf-confirm-btn\" style=\"\r\n      background-color:#76a343;border:none;padding:12px 24px;\r\n      border-radius:10px;font-weight:bold;color:white;font-size:15px;\r\n      cursor:pointer;width:100%;\r\n    \"><\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n@keyframes pdfFadeIn {\r\n  from { opacity:0; transform:scale(0.9); }\r\n  to   { opacity:1; transform:scale(1); }\r\n}\r\n\/* Mask code input on Firefox (Chrome\/Safari use -webkit-text-security above) *\/\r\n@-moz-document url-prefix() {\r\n  #pdf-code-input { font-family: \"text-security-disc\", monospace; letter-spacing: 4px; }\r\n}\r\n@font-face {\r\n  font-family: \"text-security-disc\";\r\n  src: url(\"data:font\/woff;charset=utf-8;base64,d09GRgABAAAAAAScAAsAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIGGmNtYXAAAAFoAAAAZAAAAGQADQAKZ2x5ZgAAAdQAAAFQAAABUJl3dGRoZWFkAAADJAAAADYAAAA2AiN3Q2hoZWEAAANcAAAAHgAAAB4IRgNbaG10eAAAA3wAAAAQAAAAEAgAAABsb2NhAAADjAAAAAgAAAAIAAoAAG1heHAAAAOUAAAAIAAAACABDABCbmFtZQAAA7QAAADoAAAA6Mr5SM9wb3N0AAAE\" ) format(\"woff\");\r\n}\r\n<\/style>\r\n\r\n<script>\r\n  \/* \u2500\u2500 i18n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n   * Translations are hardcoded here \u2014 no WPML involved.\r\n   * Language is detected from <html lang=\"...\"> set by WordPress automatically.\r\n   * To add a language: duplicate the 'de' block and change the key + strings.\r\n   * \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  const TRANSLATIONS = {\r\n    en: {\r\n      revenueTitle:     'Revenue inputs',\r\n      hours:            'Opening hours \/ day',\r\n      hrs:              'hrs',\r\n      price:            'Price per hour',\r\n      occupancy:        'Occupancy rate',\r\n      courts:           'Number of courts',\r\n      courtsUnit:       'courts',\r\n      addIncome:        'Additional income \/ day',\r\n      addIncomeHint:    'Memberships, equipment, food, lessons\u2026',\r\n      costsTitle:       'Cost structure',\r\n      financedCapital:  'Financed capital',\r\n      interestRate:     'Interest rate',\r\n      creditDuration:   'Credit duration',\r\n      yrs:              'yrs',\r\n      monthlyInstallment: 'Monthly loan installment',\r\n      monthlyRent:      'Monthly rent',\r\n      otherCosts:       'Other monthly costs',\r\n      otherCostsHint:   'Utilities, wages, maintenance, marketing\u2026',\r\n      profitTitle:      'Profitability',\r\n      totalCosts:       'Total monthly costs',\r\n      ebtMonth:         'EBT per month',\r\n      ebtYear:          'EBT per year',\r\n      initialInv:       'Initial investment',\r\n      roi:              'Return on investment',\r\n      payback:          'Payback period',\r\n      paybackLabel:     'Payback period',\r\n      exploreLink:      'Explore all income sources',\r\n      dailyTurnover:    'Daily turnover',\r\n      monthlyTurnover:  'Monthly turnover',\r\n      ebtMonthLabel:    'EBT \/ month',\r\n      months:           'months',\r\n      years:            'years',\r\n      downloadPDF:      'Download PDF report',\r\n      pdfTitle:         'Padel Center \u2014 Financial Report',\r\n      pdfRevenue:       'REVENUE INPUTS',\r\n      pdfRevenueDay:    'Total revenue per day (A)',\r\n      pdfRevenueMonth:  'Total revenue per month (A \u00d7 30)',\r\n      pdfCosts:         'COST STRUCTURE',\r\n      pdfTotalCosts:    'Total monthly costs',\r\n      pdfProfit:        'PROFITABILITY',\r\n      pdfEbtMonth:      'EBT per month (B)',\r\n      pdfEbtYear:       'EBT per year (B \u00d7 12)',\r\n      pdfSummary:       'SUMMARY',\r\n      pdfExploreTitle:  'Explore & Understand the numbers',\r\n      pdfExploreText:   'The profit calculator is an interactive tool that helps you estimate daily, monthly, and annual turnover from court rentals by adjusting key variables. Simply enter details like daily operating hours, average rental price, occupancy rate, and the number of available courts to see how each factor influences potential earnings. You can also select your preferred currency for results. The tool allows you to model different scenarios by incorporating cost components to see their effect on final Earnings Before Tax (EBT) and ROI. The EBT represents a company\\'s profit before income taxes are deducted, providing an indicator of profitability from operations and other activities, excluding the impact of taxes. Whether you\\'re a new business owner or optimizing existing operations, this tool offers valuable insights for making informed financial decisions.',\r\n      pdfGenerated:     'Generated on',\r\n      pdfSource:        'Generated with the Padel Center Profit Calculator \u2014 padelcreations.com\/profit-calculator',\r\n      disclaimer:       'Disclaimer',\r\n      disclaimerText:   'This tool provides general estimates based on the data you input. Results are for informational purposes only and do not constitute financial, legal, or investment advice. Actual earnings and costs may vary depending on market conditions, unexpected expenses, or changes in operational strategy. The EBT and ROI figures are simplified projections and should not be relied upon for critical decision-making without further validation. Users are encouraged to consult with financial professionals to evaluate specific business plans or investments. The creators of this tool assume no responsibility for errors, omissions, or outcomes resulting from its use.',\r\n      modalTitle:       'Enter Code',\r\n      modalPlaceholder: 'Enter code here',\r\n      modalNoCode:      'Planning a Padel Center?',\r\n      modalGetCode:     'Request a Padel Court quote',\r\n      modalGetCodeSub:  \"and we'll send the code straight to your inbox.\",\r\n      modalUnlock:      '\ud83d\udd13 Unlock & Download PDF',\r\n      modalError:       '\u274c Incorrect code, please try again!',\r\n    },\r\n    de: {\r\n      revenueTitle:     'Einnahmen',\r\n      hours:            '\u00d6ffnungszeiten \/ Tag',\r\n      hrs:              'Std.',\r\n      price:            'Preis pro Stunde',\r\n      occupancy:        'Auslastung',\r\n      courts:           'Anzahl der Pl\u00e4tze',\r\n      courtsUnit:       'Pl\u00e4tze',\r\n      addIncome:        'Zus\u00e4tzliche Einnahmen \/ Tag',\r\n      addIncomeHint:    'Mitgliedschaften, Ausr\u00fcstung, Verpflegung, Kurse\u2026',\r\n      costsTitle:       'Kostenstruktur',\r\n      financedCapital:  'Finanziertes Kapital',\r\n      interestRate:     'Zinssatz',\r\n      creditDuration:   'Kreditlaufzeit',\r\n      yrs:              'Jahre',\r\n      monthlyInstallment: 'Monatliche Kreditrate',\r\n      monthlyRent:      'Monatliche Miete',\r\n      otherCosts:       'Sonstige monatliche Kosten',\r\n      otherCostsHint:   'Nebenkosten, L\u00f6hne, Wartung, Marketing\u2026',\r\n      profitTitle:      'Rentabilit\u00e4t',\r\n      totalCosts:       'Gesamte monatliche Kosten',\r\n      ebtMonth:         'EBT pro Monat',\r\n      ebtYear:          'EBT pro Jahr',\r\n      initialInv:       'Anfangsinvestition',\r\n      roi:              'Kapitalrendite',\r\n      payback:          'Amortisationszeit',\r\n      paybackLabel:     'Amortisationszeit',\r\n      exploreLink:      'Alle Einnahmequellen erkunden',\r\n      dailyTurnover:    'Tagesumsatz',\r\n      monthlyTurnover:  'Monatsumsatz',\r\n      ebtMonthLabel:    'EBT \/ Monat',\r\n      months:           'Monate',\r\n      years:            'Jahre',\r\n      downloadPDF:      'PDF-Bericht herunterladen',\r\n      pdfTitle:         'Padel Center \u2014 Finanzbericht',\r\n      pdfRevenue:       'EINNAHMEN',\r\n      pdfRevenueDay:    'Gesamtumsatz pro Tag (A)',\r\n      pdfRevenueMonth:  'Gesamtumsatz pro Monat (A \u00d7 30)',\r\n      pdfCosts:         'KOSTENSTRUKTUR',\r\n      pdfTotalCosts:    'Gesamte monatliche Kosten',\r\n      pdfProfit:        'RENTABILIT\u00c4T',\r\n      pdfEbtMonth:      'EBT pro Monat (B)',\r\n      pdfEbtYear:       'EBT pro Jahr (B \u00d7 12)',\r\n      pdfSummary:       'ZUSAMMENFASSUNG',\r\n      pdfExploreTitle:  'Die Zahlen verstehen & erkunden',\r\n      pdfExploreText:   'Der Rentabilit\u00e4tsrechner ist ein interaktives Tool, das Ihnen hilft, den t\u00e4glichen, monatlichen und j\u00e4hrlichen Umsatz aus Court-Vermietungen durch Anpassung wichtiger Variablen zu sch\u00e4tzen. Geben Sie einfach Details wie t\u00e4gliche Betriebsstunden, durchschnittlichen Mietpreis, Auslastungsgrad und die Anzahl der verf\u00fcgbaren Courts ein, um zu sehen, wie jeder Faktor die potenziellen Einnahmen beeinflusst. Sie k\u00f6nnen auch Ihre bevorzugte W\u00e4hrung ausw\u00e4hlen. Das Tool erm\u00f6glicht es Ihnen, verschiedene Szenarien zu modellieren, indem Sie Kostenkomponenten einbeziehen, um deren Auswirkungen auf den endg\u00fcltigen EBT und ROI zu sehen. Der EBT stellt den Gewinn eines Unternehmens vor Einkommenssteuern dar und gibt einen Indikator f\u00fcr die Rentabilit\u00e4t aus dem Betrieb und anderen Aktivit\u00e4ten. Ob Sie ein neuer Gesch\u00e4ftsinhaber sind oder bestehende Abl\u00e4ufe optimieren \u2013 dieses Tool bietet wertvolle Einblicke f\u00fcr fundierte finanzielle Entscheidungen.',\r\n      pdfGenerated:     'Erstellt am',\r\n      pdfSource:        'Erstellt mit dem Padel Center Rentabilit\u00e4tsrechner \u2014 padelcreations.com\/de\/gewinn-rechner\/',\r\n      disclaimer:       'Haftungsausschluss',\r\n      disclaimerText:   'Dieses Tool liefert allgemeine Sch\u00e4tzungen auf Basis der eingegebenen Daten. Die Ergebnisse dienen ausschlie\u00dflich zu Informationszwecken und stellen keine finanzielle, rechtliche oder Anlageberatung dar. Tats\u00e4chliche Einnahmen und Kosten k\u00f6nnen je nach Marktbedingungen, unerwarteten Ausgaben oder \u00c4nderungen der Betriebsstrategie abweichen. Die EBT- und ROI-Werte sind vereinfachte Projektionen und sollten ohne weitere Pr\u00fcfung nicht f\u00fcr wichtige Entscheidungen herangezogen werden. Es wird empfohlen, Finachfachleute hinzuzuziehen. Die Ersteller \u00fcbernehmen keine Haftung f\u00fcr Fehler, Auslassungen oder Ergebnisse aus der Nutzung dieses Tools.',\r\n      modalTitle:       'Code eingeben',\r\n      modalPlaceholder: 'Code hier eingeben',\r\n      modalNoCode:      'Planen Sie ein Padel Center?',\r\n      modalGetCode:     'Fordern Sie ein Angebot f\u00fcr die Padel Courts an',\r\n      modalGetCodeSub:  '\u2013 wir senden Ihnen den Code direkt per E-Mail.',\r\n      modalUnlock:      '\ud83d\udd13 Entsperren & PDF herunterladen',\r\n      modalError:       '\u274c Falscher Code, bitte erneut versuchen!',\r\n    }\r\n  };\r\n\r\n  \/* Detect language from <html lang=\"de\">, <html lang=\"de-AT\"> etc. *\/\r\n  function detectLang() {\r\n    const raw = (document.documentElement.lang || 'en').toLowerCase();\r\n    const base = raw.split('-')[0]; \/\/ \"de-AT\" \u2192 \"de\"\r\n    return TRANSLATIONS[base] ? base : 'en';\r\n  }\r\n\r\n  const T = TRANSLATIONS[detectLang()];\r\n\r\n  \/* Apply all data-i18n attributes *\/\r\n  function applyTranslations() {\r\n    document.querySelectorAll('[data-i18n]').forEach(el => {\r\n      const key = el.getAttribute('data-i18n');\r\n      if (T[key] !== undefined) el.textContent = T[key];\r\n    });\r\n  }\r\n\r\n  \/* Robustly parse any locale number string \u2192 JS float *\/\r\n  function safeFloat(val) {\r\n    if (val === null || val === undefined || val === '') return 0;\r\n    let s = String(val).trim();\r\n\r\n    \/\/ If it's already a clean number string (from a real input[type=number])\r\n    \/\/ parseFloat handles it directly \u2014 fast path:\r\n    const direct = parseFloat(s);\r\n    if (!isNaN(direct) && !\/[,\\s]\/.test(s)) return direct;\r\n\r\n    \/\/ Slow path: handle localised strings like \"1.234,56\" or \"1,234.56\"\r\n    const hasComma  = s.includes(',');\r\n    const hasDot    = s.includes('.');\r\n    const lastComma = s.lastIndexOf(',');\r\n    const lastDot   = s.lastIndexOf('.');\r\n\r\n    if (hasComma && hasDot) {\r\n      \/\/ Whichever comes last is the decimal separator\r\n      if (lastComma > lastDot) {\r\n        \/\/ European: 1.234,56 \u2192 remove dots, replace comma\r\n        s = s.replace(\/\\.\/g, '').replace(',', '.');\r\n      } else {\r\n        \/\/ English: 1,234.56 \u2192 remove commas\r\n        s = s.replace(\/,\/g, '');\r\n      }\r\n    } else if (hasComma && !hasDot) {\r\n      \/\/ Could be decimal comma (3,5) or thousands (1,000)\r\n      const afterComma = s.substring(lastComma + 1);\r\n      if (afterComma.length === 3 && !isNaN(parseInt(afterComma))) {\r\n        \/\/ Thousands comma: 1,000 \u2192 1000\r\n        s = s.replace(\/,\/g, '');\r\n      } else {\r\n        \/\/ Decimal comma: 3,5 \u2192 3.5\r\n        s = s.replace(',', '.');\r\n      }\r\n    } else if (hasDot && !hasComma) {\r\n      \/\/ Could be decimal dot (3.5) or thousands (1.000)\r\n      const afterDot = s.substring(lastDot + 1);\r\n      if (afterDot.length === 3 && !isNaN(parseInt(afterDot)) && s.replace(\/\\.\/g, '').length > 4) {\r\n        \/\/ Thousands dot: 1.000 \u2192 1000\r\n        s = s.replace(\/\\.\/g, '');\r\n      }\r\n      \/\/ else leave as-is (decimal dot)\r\n    }\r\n\r\n    const n = parseFloat(s.replace(\/[^\\d.\\-]\/g, ''));\r\n    return isNaN(n) ? 0 : n;\r\n  }\r\n\r\n  \/* Read an input's value locale-safely.\r\n     valueAsNumber is ALWAYS a plain JS float regardless of browser locale \u2014\r\n     it bypasses any locale formatting that corrupts .value in German\/EU browsers. *\/\r\n  function fv(id) {\r\n    const el = document.getElementById(id);\r\n    if (!el) return 0;\r\n    \/\/ valueAsNumber is locale-neutral and preferred\r\n    if (typeof el.valueAsNumber === 'number' && !isNaN(el.valueAsNumber)) {\r\n      return el.valueAsNumber;\r\n    }\r\n    \/\/ Fallback: parse .value with locale-safe safeFloat\r\n    return safeFloat(el.value);\r\n  }\r\n\r\n  \/* Format for display \u2014 always dot-thousands, no decimals *\/\r\n  function fmt(n) {\r\n    const rounded = Math.round(n);\r\n    return rounded.toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, '.');\r\n  }\r\n\r\n  \/* Format with up to 2 decimal places when fractional part exists *\/\r\n  function fmtD(n) {\r\n    const rounded = Math.round(n * 100) \/ 100;\r\n    const parts = safeFix(rounded, 2).split('.');\r\n    const intPart = parts[0].replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, '.');\r\n    const decPart = parts[1];\r\n    \/\/ Only show decimals if non-zero\r\n    return decPart && parseInt(decPart) > 0 ? intPart + ',' + decPart : intPart;\r\n  }\r\n\r\n  \/* Safe toFixed that never produces comma-decimals *\/\r\n  function safeFix(n, digits) {\r\n    \/\/ Avoid exponential notation issues with large numbers\r\n    const multiplier = Math.pow(10, digits);\r\n    const rounded    = Math.round(n * multiplier) \/ multiplier;\r\n    \/\/ Force dot decimal \u2014 split on either separator and rejoin\r\n    const parts = rounded.toString().split(\/[.,]\/);\r\n    if (digits === 0) return parts[0];\r\n    const dec = (parts[1] || '').padEnd(digits, '0').slice(0, digits);\r\n    return parts[0] + '.' + dec;\r\n  }\r\n\r\n  function cu() { return document.getElementById('currency').value; }\r\n\r\n  function setSimpleUnits() {\r\n    const c = cu();\r\n    ['uDay','uMonth','uEbt','uAdd','uFC','uFee','uRent','uOther','uInv'].forEach(id => {\r\n      const el = document.getElementById(id);\r\n      if (el) el.textContent = c;\r\n    });\r\n  }\r\n\r\n  function setCurrencySpan(id, val, cls) {\r\n    const el = document.getElementById(id);\r\n    if (!el) return;\r\n    el.className = cls;\r\n    el.innerHTML = fmt(val) + ' <span style=\"font-size:12px;font-weight:400;color:#aaa\">' + cu() + '<\/span>';\r\n  }\r\n\r\n  function syncFC(s) {\r\n    if (s === 's') document.getElementById('fcI').value = document.getElementById('fcS').value;\r\n    else document.getElementById('fcS').value = document.getElementById('fcI').value;\r\n    calc();\r\n  }\r\n\r\n  function syncIR(s) {\r\n    if (s === 's') document.getElementById('irI').value = safeFix(safeFloat(document.getElementById('irS').value), 1);\r\n    else document.getElementById('irS').value = document.getElementById('irI').value;\r\n    calc();\r\n  }\r\n\r\n  function syncCD(s) {\r\n    if (s === 's') document.getElementById('cdI').value = document.getElementById('cdS').value;\r\n    else document.getElementById('cdS').value = document.getElementById('cdI').value;\r\n    calc();\r\n  }\r\n\r\n  function calc() {\r\n    setSimpleUnits();\r\n\r\n    \/* \u2500\u2500 Revenue \u2500\u2500 *\/\r\n    const h  = fv('hours');\r\n    const p  = fv('price');\r\n    const oc = fv('occupancy');\r\n    const co = fv('courts');\r\n    const ai = fv('addInc');\r\n\r\n    const tdD = (h * p * (oc \/ 100) * co) + ai;\r\n    const tdM = tdD * 30;\r\n\r\n    document.getElementById('tDay').textContent   = fmtD(tdD);\r\n    document.getElementById('tMonth').textContent = fmt(tdM);\r\n\r\n    \/* \u2500\u2500 Costs \u2500\u2500 *\/\r\n    const fc   = fv('fcI');\r\n    const ir   = fv('irI');\r\n    const cd   = fv('cdI');\r\n    const rent = fv('rent');\r\n    const oth  = fv('other');\r\n\r\n    let mf = 0;\r\n    if (fc > 0 && ir > 0 && cd > 0) {\r\n      const r = ir \/ 100 \/ 12;\r\n      const n = cd * 12;\r\n      mf = (fc * r) \/ (1 - Math.pow(1 + r, -n));\r\n    }\r\n    document.getElementById('mFee').textContent = fmt(mf);\r\n\r\n    const costs   = mf + rent + oth;\r\n    const ebt     = tdM - costs;\r\n    const ebtYear = ebt * 12;\r\n\r\n    \/* \u2500\u2500 Profitability panel \u2500\u2500 *\/\r\n    setCurrencySpan('totCosts', costs,   'ebt-val');\r\n    setCurrencySpan('ebtM',     ebt,     'ebt-val ' + (ebt >= 0 ? 'pos' : 'neg'));\r\n    setCurrencySpan('ebtY',     ebtYear, 'ebt-val ' + (ebt >= 0 ? 'pos' : 'neg'));\r\n\r\n    \/* \u2500\u2500 EBT top bar \u2500\u2500 *\/\r\n    const ebtTopEl = document.getElementById('ebt');\r\n    ebtTopEl.textContent = fmt(ebt);\r\n    ebtTopEl.className   = 'mc-val ' + (ebt >= 0 ? 'pos' : 'neg');\r\n\r\n    \/* \u2500\u2500 ROI \u2500\u2500 *\/\r\n    const inv = fv('initInv');\r\n    let roi = 0;\r\n    if (inv > 0) roi = (ebtYear \/ inv) * 100;\r\n\r\n    const roiStr = inv > 0 ? safeFix(roi, 1) : '\u2014';\r\n    document.getElementById('roiVal').textContent   = inv > 0 ? safeFix(roi, 1) : '0';\r\n    document.getElementById('roiLarge').textContent = roiStr;\r\n    document.getElementById('roiVal').className     = 'mc-val '  + (roi >= 0 ? 'pos' : 'neg');\r\n    document.getElementById('roiLarge').className   = 'roi-big ' + (roi >= 0 ? 'pos' : 'neg');\r\n\r\n    \/* \u2500\u2500 Payback period \u2500\u2500 *\/\r\n    const pbEl      = document.getElementById('payback');\r\n    const pbUnit    = document.getElementById('paybackUnit');\r\n    const pbTopEl   = document.getElementById('paybackTop');\r\n    const pbTopUnit = document.getElementById('paybackTopUnit');\r\n\r\n    if (inv > 0 && ebtYear > 0) {\r\n      const years = inv \/ ebtYear;\r\n      let pbVal, pbUnitStr;\r\n      if (years < 1) {\r\n        pbVal     = Math.round(years * 12);\r\n        pbUnitStr = T.months;\r\n      } else {\r\n        pbVal     = safeFix(years, 1);\r\n        pbUnitStr = T.years;\r\n      }\r\n      pbEl.textContent      = pbVal;\r\n      pbUnit.textContent    = pbUnitStr;\r\n      pbEl.style.color      = '#1a1a18';\r\n      pbTopEl.textContent   = pbVal;\r\n      pbTopUnit.textContent = pbUnitStr;\r\n      pbTopEl.style.color   = '#1a1a18';\r\n    } else {\r\n      pbEl.textContent      = '\u2014';\r\n      pbUnit.textContent    = '';\r\n      pbEl.style.color      = '#aaa';\r\n      pbTopEl.textContent   = '\u2014';\r\n      pbTopUnit.textContent = '';\r\n      pbTopEl.style.color   = '#aaa';\r\n    }\r\n\r\n    \/* \u2500\u2500 ROI bar \u2500\u2500 *\/\r\n    const absRoi  = Math.abs(roi);\r\n    const ceiling = inv > 0 ? (Math.ceil(Math.max(absRoi, 10) \/ 10) * 10) : 100;\r\n    const pct     = inv > 0 ? Math.min((absRoi \/ ceiling) * 100, 100) : 0;\r\n    const col     = roi >= 0 ? '#1D9E75' : '#D85A30';\r\n\r\n    document.getElementById('roiBarMax').textContent = ceiling + '%';\r\n\r\n    ['roiBar', 'roiBar2'].forEach(id => {\r\n      const el = document.getElementById(id);\r\n      if (el) { el.style.width = pct + '%'; el.style.background = col; }\r\n    });\r\n  }\r\n\r\n  applyTranslations();\r\n  calc();\r\n\r\n  \/* \u2500\u2500 PDF Code Gate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  const PDF_CODE = \"1234\"; \/\/ \u2190 replace with your secure code\r\n\r\n  const pdfTriggerBtn = document.getElementById('pdf-trigger-btn');\r\n  const pdfModal      = document.getElementById('pdf-modal');\r\n  const pdfConfirmBtn = document.getElementById('pdf-confirm-btn');\r\n  const pdfInput      = document.getElementById('pdf-code-input');\r\n  const pdfError      = document.getElementById('pdf-error-msg');\r\n\r\n  \/\/ Populate modal text from translations\r\n  document.getElementById('pdf-modal-title').textContent   = T.modalTitle;\r\n  pdfInput.placeholder                                      = T.modalPlaceholder;\r\n  document.getElementById('pdf-modal-nocode').textContent  = T.modalNoCode + ' ';\r\n  document.getElementById('pdf-modal-getcode').textContent = T.modalGetCode;\r\n  document.getElementById('pdf-modal-sub').textContent     = T.modalGetCodeSub;\r\n  pdfConfirmBtn.textContent                                 = T.modalUnlock;\r\n\r\n  pdfTriggerBtn.addEventListener('click', () => {\r\n    pdfModal.style.display = 'flex';\r\n    pdfInput.value = '';\r\n    pdfError.style.display = 'none';\r\n    pdfInput.focus();\r\n  });\r\n\r\n  pdfConfirmBtn.addEventListener('click', () => {\r\n    if (pdfInput.value.trim() === PDF_CODE) {\r\n      pdfModal.style.display = 'none';\r\n      generatePDF();\r\n    } else {\r\n      pdfError.textContent     = T.modalError;\r\n      pdfError.style.display   = 'block';\r\n      pdfInput.value           = '';\r\n      pdfInput.focus();\r\n    }\r\n  });\r\n\r\n  \/\/ Close on backdrop click\r\n  pdfModal.addEventListener('click', e => {\r\n    if (e.target === pdfModal) pdfModal.style.display = 'none';\r\n  });\r\n\r\n  \/\/ Allow Enter key to confirm\r\n  pdfInput.addEventListener('keydown', e => {\r\n    if (e.key === 'Enter') pdfConfirmBtn.click();\r\n  });\r\n\r\n  \/* \u2500\u2500 PDF Generation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  function generatePDF() {\r\n    const { jsPDF } = window.jspdf;\r\n    const doc = new jsPDF({ unit: 'mm', format: 'a4' });\r\n\r\n    const CW    = 210;\r\n    const ML    = 14;\r\n    const MR    = 14;\r\n    const TW    = CW - ML - MR;\r\n    const NAVY  = [28,  55,  87];\r\n    const GREEN = [118, 163,  67];\r\n    const RED   = [216, 90,  48];\r\n    const DARK  = [26,  26,  24];\r\n    const MID   = [80,  80,  80];\r\n    const GREY  = [150, 150, 150];\r\n    const LGREY = [220, 220, 218];\r\n    const LIGHT = [245, 245, 243];\r\n    const WHITE = [255, 255, 255];\r\n    const C     = document.getElementById('currency').value;\r\n\r\n    \/* Pre-compute all values once *\/\r\n    const hours  = fv('hours'),  price  = fv('price');\r\n    const occ    = fv('occupancy'), courts = fv('courts');\r\n    const addInc = fv('addInc');\r\n    const fc     = fv('fcI'),    ir     = fv('irI'),   cd  = fv('cdI');\r\n    const rent   = fv('rent'),   other  = fv('other'), inv = fv('initInv');\r\n\r\n    const tdDay  = (hours * price * (occ\/100) * courts) + addInc;\r\n    const tdMonth = tdDay * 30;\r\n    let   mf = 0;\r\n    if (fc>0 && ir>0 && cd>0) {\r\n      const r = ir\/100\/12, n = cd*12;\r\n      mf = (fc * r) \/ (1 - Math.pow(1+r, -n));\r\n    }\r\n    const costs   = mf + rent + other;\r\n    const ebt     = tdMonth - costs;\r\n    const ebtYear = ebt * 12;\r\n    const roi     = inv > 0 ? (ebtYear \/ inv) * 100 : null;\r\n    const pbYears = inv > 0 && ebtYear > 0 ? inv \/ ebtYear : null;\r\n    const pbStr   = pbYears === null ? '\u2014'\r\n                  : pbYears < 1 ? Math.round(pbYears*12) + ' ' + T.months\r\n                  : safeFix(pbYears, 1) + ' ' + T.years;\r\n\r\n    let y = 0;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       HEADER\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    doc.setFillColor(...NAVY);\r\n    doc.rect(0, 0, CW, 28, 'F');\r\n\r\n    \/\/ Accent bar\r\n    doc.setFillColor(...GREEN);\r\n    doc.rect(0, 28, CW, 2, 'F');\r\n\r\n    doc.setTextColor(...WHITE);\r\n    doc.setFontSize(17);\r\n    doc.setFont('helvetica', 'bold');\r\n    doc.text(T.pdfTitle, ML, 17);\r\n\r\n    doc.setFontSize(9);\r\n    doc.setFont('helvetica', 'normal');\r\n    const lang   = detectLang();\r\n    const today  = new Date().toLocaleDateString(lang === 'de' ? 'de-DE' : 'en-GB', { day:'2-digit', month:'long', year:'numeric' });\r\n    doc.text(T.pdfGenerated + ': ' + today, CW - MR, 17, { align:'right' });\r\n\r\n    \/\/ Source URL line\r\n    doc.setFillColor(240, 244, 248);\r\n    doc.rect(0, 30, CW, 8, 'F');\r\n    doc.setFontSize(8);\r\n    doc.setFont('helvetica', 'italic');\r\n    doc.setTextColor(...MID);\r\n    doc.text(T.pdfSource, CW \/ 2, 35, { align:'center' });\r\n    doc.link(ML, 30, TW, 8, { url: lang === 'de' ? 'https:\/\/www.padelcreations.com\/de\/gewinn-rechner\/' : 'https:\/\/www.padelcreations.com\/profit-calculator\/' });\r\n\r\n    y = 44;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       TWO-COLUMN LAYOUT  (Revenue | Costs)\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    const colW  = (TW - 6) \/ 2;\r\n    const col1x = ML;\r\n    const col2x = ML + colW + 6;\r\n\r\n    \/* \u2500\u2500 Section header helper \u2500\u2500 *\/\r\n    function secHead(title, x, w, yy) {\r\n      doc.setFillColor(...NAVY);\r\n      doc.roundedRect(x, yy, w, 7, 1, 1, 'F');\r\n      doc.setTextColor(...WHITE);\r\n      doc.setFontSize(7.5);\r\n      doc.setFont('helvetica', 'bold');\r\n      doc.text(title, x + 3, yy + 4.8);\r\n      return yy + 10;\r\n    }\r\n\r\n    \/* \u2500\u2500 Data row helper \u2500\u2500 *\/\r\n    function drow(label, value, x, w, yy, highlight) {\r\n      doc.setDrawColor(...LGREY);\r\n      doc.setLineWidth(0.2);\r\n      doc.line(x, yy, x + w, yy);\r\n      doc.setFontSize(9);\r\n      doc.setFont('helvetica', 'normal');\r\n      doc.setTextColor(...MID);\r\n      doc.text(label, x + 2, yy + 5);\r\n      doc.setFont('helvetica', highlight ? 'bold' : 'normal');\r\n      doc.setTextColor(...(highlight === 'pos' ? GREEN : highlight === 'neg' ? RED : DARK));\r\n      doc.text(value, x + w - 2, yy + 5, { align:'right' });\r\n      return yy + 8;\r\n    }\r\n\r\n    \/* \u2500\u2500 LEFT: Revenue \u2500\u2500 *\/\r\n    let y1 = secHead(T.pdfRevenue, col1x, colW, y);\r\n    y1 = drow(T.hours,     hours  + ' ' + T.hrs,        col1x, colW, y1);\r\n    y1 = drow(T.price,     fmt(price) + ' ' + C,        col1x, colW, y1);\r\n    y1 = drow(T.occupancy, occ + '%',                   col1x, colW, y1);\r\n    y1 = drow(T.courts,    courts + ' ' + T.courtsUnit, col1x, colW, y1);\r\n    y1 = drow(T.addIncome, addInc > 0 ? fmt(addInc) + ' ' + C : '\u2014', col1x, colW, y1);\r\n    \/\/ Totals with highlight\r\n    y1 = drow(T.pdfRevenueDay,   fmtD(tdDay)  + ' ' + C, col1x, colW, y1, 'pos');\r\n    y1 = drow(T.pdfRevenueMonth, fmt(tdMonth) + ' ' + C, col1x, colW, y1, 'pos');\r\n\r\n    \/* \u2500\u2500 RIGHT: Costs \u2500\u2500 *\/\r\n    let y2 = secHead(T.pdfCosts, col2x, colW, y);\r\n    y2 = drow(T.financedCapital,    fc > 0 ? fmt(fc) + ' ' + C : '\u2014',               col2x, colW, y2);\r\n    y2 = drow(T.interestRate,       fc > 0 ? safeFix(ir,1) + '%' : '\u2014',             col2x, colW, y2);\r\n    y2 = drow(T.creditDuration,     fc > 0 ? cd + ' ' + T.yrs : '\u2014',               col2x, colW, y2);\r\n    y2 = drow(T.monthlyInstallment, mf > 0 ? fmt(Math.round(mf)) + ' ' + C : '\u2014',  col2x, colW, y2);\r\n    y2 = drow(T.monthlyRent,        rent  > 0 ? fmt(rent)  + ' ' + C : '\u2014',        col2x, colW, y2);\r\n    y2 = drow(T.otherCosts,         other > 0 ? fmt(other) + ' ' + C : '\u2014',        col2x, colW, y2);\r\n    \/\/ Total costs highlight\r\n    y2 = drow(T.pdfTotalCosts,      fmt(Math.round(costs)) + ' ' + C,              col2x, colW, y2, costs > 0 ? 'neg' : false);\r\n\r\n    y = Math.max(y1, y2) + 6;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       PROFITABILITY  (full width)\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    y = secHead(T.pdfProfit, ML, TW, y);\r\n\r\n    y = drow(T.pdfEbtMonth, fmt(Math.round(ebt))     + ' ' + C, ML, TW, y, ebt >= 0 ? 'pos' : 'neg');\r\n    y = drow(T.pdfEbtYear,  fmt(Math.round(ebtYear)) + ' ' + C, ML, TW, y, ebt >= 0 ? 'pos' : 'neg');\r\n    y = drow(T.initialInv,  inv > 0 ? fmt(inv) + ' ' + C : '\u2014', ML, TW, y);\r\n    y = drow(T.roi,         roi !== null ? safeFix(roi,1) + '%' : '\u2014', ML, TW, y, roi !== null ? (roi >= 0 ? 'pos' : 'neg') : false);\r\n    y = drow(T.payback,     pbStr, ML, TW, y, pbYears !== null ? 'pos' : false);\r\n\r\n    y += 6;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       SUMMARY CARDS  (above disclaimer)\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    const cardW = (TW - 9) \/ 4;\r\n    const cards = [\r\n      { label: T.dailyTurnover,   value: fmtD(tdDay)   + ' ' + C, color: DARK  },\r\n      { label: T.monthlyTurnover, value: fmt(tdMonth)  + ' ' + C, color: DARK  },\r\n      { label: T.roi,             value: roi !== null ? safeFix(roi, 1) + '%' : '\u2014', color: roi !== null ? (roi >= 0 ? GREEN : RED) : GREY },\r\n      { label: T.payback,         value: pbStr,                    color: pbYears !== null ? GREEN : GREY },\r\n    ];\r\n\r\n    cards.forEach((c, i) => {\r\n      const cx = ML + i * (cardW + 3);\r\n      doc.setFillColor(...LIGHT);\r\n      doc.roundedRect(cx, y, cardW, 18, 2, 2, 'F');\r\n      doc.setFontSize(7.5);\r\n      doc.setFont('helvetica', 'normal');\r\n      doc.setTextColor(...GREY);\r\n      doc.text(c.label, cx + cardW\/2, y + 5.5, { align:'center' });\r\n      doc.setFontSize(11);\r\n      doc.setFont('helvetica', 'bold');\r\n      doc.setTextColor(...c.color);\r\n      doc.text(c.value, cx + cardW\/2, y + 13, { align:'center' });\r\n    });\r\n\r\n    y += 24;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       EXPLORE & UNDERSTAND\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    doc.setFontSize(7.5);\r\n    doc.setFont('helvetica', 'normal');\r\n    const exploreWrapped = doc.splitTextToSize(T.pdfExploreText, TW - 8);\r\n    const exploreH = exploreWrapped.length * 3.8 + 12;\r\n    doc.setFillColor(235, 245, 255);\r\n    doc.setDrawColor(180, 210, 240);\r\n    doc.setLineWidth(0.4);\r\n    doc.roundedRect(ML, y, TW, exploreH, 2, 2, 'FD');\r\n    \/\/ Title bar inside box\r\n    doc.setFillColor(180, 210, 240);\r\n    doc.roundedRect(ML, y, TW, 9, 2, 2, 'F');\r\n    doc.rect(ML, y + 5, TW, 4, 'F');\r\n    doc.setFontSize(8.5);\r\n    doc.setFont('helvetica', 'bold');\r\n    doc.setTextColor(...NAVY);\r\n    doc.text('>> ' + T.pdfExploreTitle, ML + 4, y + 6.2);\r\n    doc.setFontSize(7.5);\r\n    doc.setFont('helvetica', 'normal');\r\n    doc.setTextColor(...MID);\r\n    doc.text(exploreWrapped, ML + 4, y + 13);\r\n\r\n    y += exploreH + 4;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       DISCLAIMER\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    doc.setFontSize(7.5);\r\n    doc.setFont('helvetica', 'normal');\r\n    const wrapped = doc.splitTextToSize(T.disclaimerText, TW - 8);\r\n    const boxH = wrapped.length * 3.8 + 12;\r\n    doc.setFillColor(254, 252, 240);\r\n    doc.setDrawColor(220, 200, 120);\r\n    doc.setLineWidth(0.4);\r\n    doc.roundedRect(ML, y, TW, boxH, 2, 2, 'FD');\r\n    \/\/ Title bar\r\n    doc.setFillColor(220, 200, 120);\r\n    doc.roundedRect(ML, y, TW, 9, 2, 2, 'F');\r\n    doc.rect(ML, y + 5, TW, 4, 'F');\r\n    doc.setFontSize(8.5);\r\n    doc.setFont('helvetica', 'bold');\r\n    doc.setTextColor(100, 75, 10);\r\n    doc.text('! ' + T.disclaimer, ML + 4, y + 6.2);\r\n    doc.setFontSize(7.5);\r\n    doc.setFont('helvetica', 'normal');\r\n    doc.setTextColor(...MID);\r\n    doc.text(wrapped, ML + 4, y + 13);\r\n\r\n    y += boxH + 4;\r\n\r\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       FOOTER\r\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n    const pageH = 297;\r\n    doc.setFillColor(...NAVY);\r\n    doc.rect(0, pageH - 12, CW, 12, 'F');\r\n    doc.setTextColor(...WHITE);\r\n    doc.setFontSize(8);\r\n    doc.setFont('helvetica', 'normal');\r\n    doc.text('padelcreations.com', ML, pageH - 4.5);\r\n    doc.setFont('helvetica', 'italic');\r\n    doc.text(T.pdfTitle, CW - MR, pageH - 4.5, { align:'right' });\r\n\r\n    const now = new Date();\r\n    const pad = n => String(n).padStart(2, '0');\r\n    const timestamp = now.getFullYear() + pad(now.getMonth()+1) + pad(now.getDate()) + '_' + pad(now.getHours()) + pad(now.getMinutes());\r\n    doc.save('Padel-Financial-Report_' + timestamp + '.pdf');\r\n  }\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4498f06 elementor-widget elementor-widget-html\" data-id=\"4498f06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!--\r\n  PADEL SLOT DETAIL CALCULATOR\r\n  Paste into a WordPress Custom HTML block.\r\n  All CSS scoped to .pdc-wrap \u2014 zero leakage to the rest of the page.\r\n-->\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Lato:wght@300;400;700;900&display=swap\" rel=\"stylesheet\">\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n\r\n<style>\r\n.pdc-wrap{font-family:'Lato',-apple-system,sans-serif;font-size:14px;line-height:1.4;color:#333;background:#f0f0f0;padding:32px 28px 48px;box-sizing:border-box;-webkit-font-smoothing:antialiased}\r\n.pdc-wrap *,.pdc-wrap *::before,.pdc-wrap *::after{box-sizing:border-box}\r\n.pdc-wrap .pdc-title-row{display:flex;align-items:baseline;gap:16px;margin-bottom:24px;flex-wrap:wrap}\r\n.pdc-wrap .pdc-title{font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.12em;color:#666;margin:0}\r\n.pdc-wrap .pdc-subtitle{font-size:13px;color:#aaa;font-weight:400;margin:0}\r\n.pdc-wrap .pdc-grid{display:grid;grid-template-columns:1fr 300px;gap:20px;align-items:start;margin-bottom:20px}\r\n.pdc-wrap .pdc-card{background:#fff;border:1px solid #e4e4e4;border-radius:12px;overflow:hidden}\r\n.pdc-wrap .pdc-card-header{display:flex;align-items:center;gap:10px;padding:16px 22px 14px;border-bottom:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-card-header-icon{color:#aaa;display:flex;align-items:center;flex-shrink:0}\r\n.pdc-wrap .pdc-card-header-icon svg{width:15px;height:15px}\r\n.pdc-wrap .pdc-card-header-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.13em;color:#aaa;margin:0}\r\n.pdc-wrap .pdc-preset-row{display:flex;align-items:center;gap:8px;padding:12px 22px;border-bottom:1px solid #f2f2f2;flex-wrap:wrap}\r\n.pdc-wrap .pdc-preset-lbl{font-size:12px;color:#aaa}\r\n.pdc-wrap .pdc-pb{padding:5px 16px;border-radius:20px;border:1px solid #e4e4e4;background:#f4f4f4;color:#aaa;font-family:'Lato',sans-serif;font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;line-height:1.4}\r\n.pdc-wrap .pdc-pb:hover{border-color:#2aaa8a;color:#2aaa8a;background:#e8f7f4}\r\n.pdc-wrap .pdc-pb.pdc-pess.pdc-on{background:#fdf2f2;color:#b83232;border-color:#e9a0a0}\r\n.pdc-wrap .pdc-pb.pdc-norm.pdc-on{background:#fffbf0;color:#a06000;border-color:#e8c96a}\r\n.pdc-wrap .pdc-pb.pdc-opti.pdc-on{background:#e8f7f4;color:#1e8a6e;border-color:#2aaa8a}\r\n.pdc-wrap .pdc-table{width:100%;border-collapse:collapse;border-spacing:0}\r\n.pdc-wrap .pdc-table thead tr{background:#fafafa}\r\n.pdc-wrap .pdc-table th{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;padding:10px 10px 9px;text-align:center;border-bottom:1px solid #e4e4e4;white-space:nowrap}\r\n.pdc-wrap .pdc-table th.pdc-th-time{text-align:left;padding-left:22px;width:120px}\r\n.pdc-wrap .pdc-table th.pdc-th-tag{width:52px}\r\n.pdc-wrap .pdc-table th.pdc-th-occ{width:118px}\r\n.pdc-wrap .pdc-table th.pdc-th-price{width:118px}\r\n.pdc-wrap .pdc-table th.pdc-th-div{width:4px;padding:0;border-left:2px solid #e8e8e8}\r\n.pdc-wrap .pdc-table th.pdc-th-inc{text-align:right;padding-right:22px;width:88px}\r\n.pdc-wrap .pdc-table tbody tr{border-bottom:1px solid #f2f2f2;transition:background .1s}\r\n.pdc-wrap .pdc-table tbody tr:last-child{border-bottom:none}\r\n.pdc-wrap .pdc-table tbody tr:hover{background:#fafffe}\r\n.pdc-wrap .pdc-table tbody tr.pdc-peak{background:#fffdf5}\r\n.pdc-wrap .pdc-table tbody tr.pdc-peak:hover{background:#fff8e8}\r\n.pdc-wrap .pdc-table td{padding:6px 8px;text-align:center;vertical-align:middle}\r\n.pdc-wrap .pdc-table td.pdc-td-time{text-align:left;padding-left:22px;font-size:13px;font-weight:700;color:#666;white-space:nowrap}\r\n.pdc-wrap .pdc-table td.pdc-td-tag{text-align:center}\r\n.pdc-wrap .pdc-table td.pdc-td-div{padding:0;border-left:2px solid #e8e8e8;width:4px}\r\n.pdc-wrap .pdc-table td.pdc-td-inc{text-align:right;padding-right:22px;font-size:13px;font-weight:700;color:#2aaa8a;white-space:nowrap}\r\n.pdc-wrap .pdc-peak-tag{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;padding:3px 7px;border-radius:4px;background:#fef0c7;color:#92600a;white-space:nowrap;display:inline-block}\r\n.pdc-wrap .pdc-stepper{display:inline-flex;align-items:stretch;border:1px solid #e4e4e4;border-radius:8px;overflow:hidden;background:#f8f8f8;height:36px;transition:border-color .15s,box-shadow .15s}\r\n.pdc-wrap .pdc-stepper:focus-within{border-color:#2aaa8a;box-shadow:0 0 0 3px rgba(42,170,138,.12);background:#fff}\r\n.pdc-wrap .pdc-stepper-num{font-family:'Lato',sans-serif;font-size:14px;font-weight:700;color:#333;width:50px;text-align:center;background:transparent;border:none;outline:none;padding:0 4px;-moz-appearance:textfield}\r\n.pdc-wrap .pdc-stepper-num::-webkit-inner-spin-button,.pdc-wrap .pdc-stepper-num::-webkit-outer-spin-button{display:none}\r\n.pdc-wrap .pdc-stepper-unit{font-size:10px;font-weight:700;color:#999;background:#f4f4f4;border-left:1px solid #e4e4e4;padding:0 8px;display:flex;align-items:center}\r\n.pdc-wrap .pdc-stepper-arrows{display:flex;flex-direction:column;border-left:1px solid #e4e4e4;flex-shrink:0}\r\n.pdc-wrap .pdc-arr{flex:1;display:flex;align-items:center;justify-content:center;width:22px;background:#f4f4f4;border:none;cursor:pointer;color:#aaa;transition:background .1s,color .1s;user-select:none;line-height:1;padding:0}\r\n.pdc-wrap .pdc-arr:first-child{border-bottom:1px solid #e4e4e4}\r\n.pdc-wrap .pdc-arr:hover{background:#e6e6e6;color:#333}\r\n.pdc-wrap .pdc-arr:active{background:#e8f7f4;color:#1e8a6e}\r\n.pdc-wrap .pdc-arr svg{width:10px;height:10px;display:block}\r\n.pdc-wrap .pdc-cfg-stepper .pdc-stepper-num{width:56px;font-size:15px}\r\n.pdc-wrap .pdc-note{padding:12px 22px;background:#fafafa;border-top:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-note p{font-size:11px;color:#aaa;line-height:1.6;margin:0}\r\n.pdc-wrap .pdc-note strong{color:#666}\r\n.pdc-wrap .pdc-sidebar{display:flex;flex-direction:column;gap:16px}\r\n.pdc-wrap .pdc-out-block{padding:18px 22px;border-bottom:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-out-block:last-of-type{border-bottom:none}\r\n.pdc-wrap .pdc-out-label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}\r\n.pdc-wrap .pdc-out-lbl{font-size:13px;color:#666;font-weight:400}\r\n.pdc-wrap .pdc-badge{font-size:10px;font-weight:700;padding:3px 10px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em}\r\n.pdc-wrap .pdc-badge.pdc-pess{background:#fdf2f2;color:#b83232}\r\n.pdc-wrap .pdc-badge.pdc-norm{background:#fffbf0;color:#a06000}\r\n.pdc-wrap .pdc-badge.pdc-opti{background:#e8f7f4;color:#1e8a6e}\r\n.pdc-wrap .pdc-out-val-row{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}\r\n.pdc-wrap .pdc-out-val{font-size:38px;font-weight:900;line-height:1;letter-spacing:-.02em;color:#333}\r\n.pdc-wrap .pdc-out-val.pdc-green{color:#2aaa8a}\r\n.pdc-wrap .pdc-out-unit{font-size:12px;font-weight:700;color:#999;background:#f4f4f4;border:1px solid #e4e4e4;border-radius:6px;padding:3px 9px}\r\n.pdc-wrap .pdc-occ-bar{height:6px;border-radius:3px;background:#e4e4e4;overflow:hidden;margin-bottom:5px}\r\n.pdc-wrap .pdc-occ-fill{height:100%;border-radius:3px;background:#2aaa8a;transition:width .4s cubic-bezier(.4,0,.2,1)}\r\n.pdc-wrap .pdc-occ-scale{display:flex;justify-content:space-between;font-size:10px;color:#aaa;font-weight:700}\r\n.pdc-wrap .pdc-potential-block{padding:16px 22px;background:#f8fffe;border-top:2px solid #2aaa8a}\r\n.pdc-wrap .pdc-potential-title{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#2aaa8a;margin-bottom:12px;display:flex;align-items:center;gap:7px}\r\n.pdc-wrap .pdc-potential-title svg{width:12px;height:12px}\r\n.pdc-wrap .pdc-pot-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}\r\n.pdc-wrap .pdc-pot-row:last-child{margin-bottom:0}\r\n.pdc-wrap .pdc-pot-lbl{font-size:12px;color:#666}\r\n.pdc-wrap .pdc-pot-val{font-size:13px;font-weight:700;color:#333}\r\n.pdc-wrap .pdc-pot-val.pdc-max{color:#2aaa8a}\r\n.pdc-wrap .pdc-gap-block{padding:14px 22px 16px;border-top:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-gap-title{font-size:11px;color:#aaa;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}\r\n.pdc-wrap .pdc-gap-title strong{color:#666;font-weight:700}\r\n.pdc-wrap .pdc-gap-track{height:10px;border-radius:5px;background:#e4e4e4;overflow:hidden}\r\n.pdc-wrap .pdc-gap-actual{height:100%;border-radius:5px;background:#2aaa8a;transition:width .4s cubic-bezier(.4,0,.2,1)}\r\n.pdc-wrap .pdc-gap-labels{display:flex;justify-content:space-between;font-size:10px;color:#aaa;font-weight:700;margin-top:5px}\r\n.pdc-wrap .pdc-gap-act-lbl{color:#2aaa8a}\r\n.pdc-wrap .pdc-weekly-row{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-top:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-weekly-lbl{font-size:13px;color:#666}\r\n.pdc-wrap .pdc-weekly-val{font-size:18px;font-weight:900;color:#2aaa8a}\r\n.pdc-wrap .pdc-cfg-row{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;border-bottom:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-cfg-row:last-of-type{border-bottom:none}\r\n.pdc-wrap .pdc-cfg-lbl{font-size:13px;color:#666}\r\n.pdc-wrap .pdc-stat-max{font-size:10px;color:#aaa;margin-top:4px}\r\n.pdc-wrap .pdc-stat-max span{color:#2aaa8a;font-weight:700}\r\n.pdc-wrap .pdc-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}\r\n.pdc-wrap .pdc-stat{background:#f4f4f4;border:1px solid #f2f2f2;border-radius:12px;padding:18px 20px 15px}\r\n.pdc-wrap .pdc-stat-lbl{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#aaa;margin-bottom:8px}\r\n.pdc-wrap .pdc-stat-lbl svg{width:12px;height:12px;flex-shrink:0}\r\n.pdc-wrap .pdc-stat-val{font-size:22px;font-weight:900;color:#333;letter-spacing:-.01em;line-height:1}\r\n.pdc-wrap .pdc-stat-val .pdc-su{font-size:12px;font-weight:700;color:#aaa;margin-left:3px}\r\n.pdc-wrap .pdc-stat-val.pdc-green{color:#2aaa8a}\r\n.pdc-wrap .pdc-footer-note{margin-top:20px;font-size:11px;color:#aaa;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;border-top:1px solid #e4e4e4;padding-top:14px}\r\n.pdc-wrap .pdc-footer-note a{color:#2aaa8a;text-decoration:none;font-weight:700}\r\n\r\n.pdc-wrap .pdc-cur-row{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;border-bottom:1px solid #f2f2f2}\r\n.pdc-wrap .pdc-cur-lbl{font-size:13px;color:#666}\r\n.pdc-wrap .pdc-cur-select{font-family:'Lato',sans-serif;font-size:13px;font-weight:700;color:#333;background:#f8f8f8;border:1px solid #e4e4e4;border-radius:8px;padding:6px 10px;outline:none;cursor:pointer;transition:border-color .15s}\r\n.pdc-wrap .pdc-cur-select:focus{border-color:#2aaa8a}\r\n\r\n.pdc-wrap .pdc-dl-btn{display:flex;align-items:center;justify-content:center;gap:9px;margin:0 22px 18px;width:calc(100% - 44px);padding:12px 16px;border-radius:8px;border:none;background:#1a2e44;color:#fff;font-family:'Lato',sans-serif;font-size:13px;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:background .15s}\r\n.pdc-wrap .pdc-dl-btn:hover{background:#233a54}\r\n.pdc-wrap .pdc-dl-btn svg{width:14px;height:14px;flex-shrink:0}\r\n.pdc-modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.6);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);justify-content:center;align-items:center;z-index:99999}\r\n.pdc-modal-overlay.pdc-modal-open{display:flex}\r\n.pdc-modal-box{background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.22);border-radius:20px;padding:36px 28px;text-align:center;color:#fff;font-family:'Lato',sans-serif;max-width:380px;width:90%;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 32px rgba(0,0,0,0.35);animation:pdcFadeIn .35s ease}\r\n@keyframes pdcFadeIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}\r\n.pdc-modal-box h2{font-size:19px;font-weight:700;color:#e8e8e6;margin-bottom:18px}\r\n.pdc-modal-input{width:100%;padding:11px 14px;border:none;border-radius:10px;font-size:16px;background:#f2f2f0;color:#1c3757;margin-bottom:10px;outline:none;text-align:center;letter-spacing:4px;font-family:monospace}\r\n.pdc-modal-error{color:#ffbbbb;font-size:13px;margin-bottom:10px;display:none}\r\n.pdc-modal-hint{font-size:12px;color:rgba(255,255,255,.7);line-height:1.6;margin-bottom:18px}\r\n.pdc-modal-hint a{color:#76a343;text-decoration:underline}\r\n.pdc-modal-confirm{width:100%;padding:12px;border:none;border-radius:10px;background:#76a343;color:#fff;font-size:15px;font-weight:700;cursor:pointer;transition:background .15s}\r\n.pdc-modal-confirm:hover{background:#649236}\r\n\r\n\r\n.pdc-teaser{\r\n  font-family:'Lato',sans-serif;\r\n  font-size:14px;line-height:1.7;color:#555;\r\n  max-width:680px;margin-bottom:14px;\r\n}\r\n.pdc-teaser strong{color:#1a2e44;font-weight:700;}\r\n.pdc-toggle-btn{\r\n  display:flex;align-items:center;gap:10px;\r\n  background:#1a2e44;color:#fff;\r\n  border:none;border-radius:10px;\r\n  padding:13px 22px;\r\n  font-family:'Lato',sans-serif;font-size:14px;font-weight:700;\r\n  cursor:pointer;transition:background .2s;\r\n  margin-bottom:0;\r\n}\r\n.pdc-toggle-btn:hover{background:#233a54}\r\n.pdc-toggle-btn svg{width:16px;height:16px;flex-shrink:0;transition:transform .35s ease}\r\n.pdc-toggle-btn.pdc-open svg.pdc-chevron{transform:rotate(180deg)}\r\n.pdc-toggle-btn .pdc-toggle-badge{\r\n  margin-left:auto;\r\n  font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;\r\n  background:rgba(255,255,255,.15);border-radius:6px;padding:3px 8px;\r\n}\r\n.pdc-collapsible{\r\n  max-height:0;overflow:hidden;\r\n  transition:max-height .5s cubic-bezier(.4,0,.2,1), opacity .35s ease;\r\n  opacity:0;\r\n  margin-top:0;\r\n}\r\n.pdc-collapsible.pdc-open{\r\n  max-height:9000px;\r\n  opacity:1;\r\n  margin-top:24px;\r\n}\r\n@media(max-width:1000px){.pdc-wrap .pdc-grid{grid-template-columns:1fr}.pdc-wrap .pdc-summary{grid-template-columns:repeat(2,1fr)}}\r\n@media(max-width:600px){.pdc-wrap{padding:20px 16px 36px}.pdc-wrap .pdc-summary{grid-template-columns:1fr}}\r\n<\/style>\r\n\r\n<div class=\"pdc-wrap\">\r\n\r\n  <p class=\"pdc-teaser\" data-i18n=\"teaserText\">Want to go deeper? The slot calculator below lets you model occupancy and pricing hour by hour &mdash; giving you a precise average rate and attendance figure to feed directly into the profit calculator above.<\/p>\r\n\r\n  <button class=\"pdc-toggle-btn\" id=\"pdcToggleBtn\" onclick=\"pdcOpenModal()\" aria-expanded=\"false\">\r\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"\/><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"\/><\/svg>\r\n    <span id=\"pdcToggleLbl\" data-i18n=\"toggleShow\">Open Slot Calculator<\/span>\r\n    <svg class=\"pdc-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\r\n    <span class=\"pdc-toggle-badge\" id=\"pdcToggleBadge\" data-i18n=\"toggleBadge\">Show<\/span>\r\n  <\/button>\r\n\r\n  <div class=\"pdc-collapsible\" id=\"pdcCollapsible\">\r\n  <div class=\"pdc-title-row\">\r\n    <span class=\"pdc-title\" data-i18n=\"pageTitle\">Slot Detail Calculator<\/span>\r\n    <span class=\"pdc-subtitle\" data-i18n=\"pageSubtitle\">Determine average occupancy rate &amp; price per hour &rarr; feed into your profitability model<\/span>\r\n  <\/div>\r\n\r\n  <div class=\"pdc-grid\">\r\n\r\n    <!-- TABLE CARD -->\r\n    <div class=\"pdc-card\">\r\n      <div class=\"pdc-card-header\">\r\n        <div class=\"pdc-card-header-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"\/><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"\/><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"\/><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"\/><\/svg><\/div>\r\n        <span class=\"pdc-card-header-title\" data-i18n=\"tableCardTitle\">Occupancy &amp; Price per Time Slot<\/span>\r\n      <\/div>\r\n      <div class=\"pdc-preset-row\">\r\n        <span class=\"pdc-preset-lbl\" data-i18n=\"loadScenario\">Load scenario:<\/span>\r\n        <button class=\"pdc-pb pdc-pess\" onclick=\"pdcLoadPreset('p')\" data-i18n=\"pessimistic\">Pessimistic<\/button>\r\n        <button class=\"pdc-pb pdc-norm\" onclick=\"pdcLoadPreset('n')\" data-i18n=\"normal\">Normal<\/button>\r\n        <button class=\"pdc-pb pdc-opti pdc-on\" onclick=\"pdcLoadPreset('o')\" data-i18n=\"optimistic\">Optimistic<\/button>\r\n      <\/div>\r\n      <table class=\"pdc-table\">\r\n        <thead>\r\n          <tr>\r\n            <th class=\"pdc-th-time\" data-i18n=\"timeSlot\">Time slot<\/th>\r\n            <th class=\"pdc-th-tag\"><\/th>\r\n            <th class=\"pdc-th-occ\" style=\"border-bottom:none;padding-bottom:4px;color:#555\" data-i18n=\"monFri\">Mon &ndash; Fri<\/th>\r\n            <th class=\"pdc-th-price\" style=\"border-bottom:none;padding-bottom:4px\"><\/th>\r\n            <th class=\"pdc-th-div\" style=\"border-bottom:none\"><\/th>\r\n            <th class=\"pdc-th-occ\" style=\"border-bottom:none;padding-bottom:4px;color:#555\" data-i18n=\"satSun\">Sat &amp; Sun<\/th>\r\n            <th class=\"pdc-th-price\" style=\"border-bottom:none;padding-bottom:4px\"><\/th>\r\n            <th class=\"pdc-th-inc\" style=\"border-bottom:none;padding-bottom:4px\"><\/th>\r\n          <\/tr>\r\n          <tr>\r\n            <th class=\"pdc-th-time\" style=\"color:transparent\">-<\/th>\r\n            <th class=\"pdc-th-tag\"><\/th>\r\n            <th class=\"pdc-th-occ\" data-i18n=\"occupancyPct\">Occupancy %<\/th>\r\n            <th class=\"pdc-th-price\" data-i18n=\"pricePerHour\">&euro; \/ hour<\/th>\r\n            <th class=\"pdc-th-div\"><\/th>\r\n            <th class=\"pdc-th-occ\" data-i18n=\"occupancyPct\">Occupancy %<\/th>\r\n            <th class=\"pdc-th-price\" data-i18n=\"pricePerHour\">&euro; \/ hour<\/th>\r\n            <th class=\"pdc-th-inc\" data-i18n=\"weeklyInc\">Weekly inc.<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody id=\"pdcSlotBody\"><\/tbody>\r\n      <\/table>\r\n      <div class=\"pdc-note\">\r\n        <p data-i18n=\"formulaNote\"><strong>Weekly income<\/strong> = (occ% &times; price &times; 5 weekdays) + (occ% &times; price &times; 2 weekend days) &nbsp;&middot;&nbsp; Annual = weekly &times; 52 weeks<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- SIDEBAR -->\r\n    <div class=\"pdc-sidebar\">\r\n\r\n      <!-- CONFIG -->\r\n      <div class=\"pdc-card\">\r\n        <div class=\"pdc-card-header\">\r\n          <div class=\"pdc-card-header-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.07 4.93A10 10 0 1 0 4.93 19.07 10 10 0 0 0 19.07 4.93z\"\/><\/svg><\/div>\r\n          <span class=\"pdc-card-header-title\" data-i18n=\"configTitle\">Configuration<\/span>\r\n        <\/div>\r\n        <div class=\"pdc-cur-row\">\r\n          <span class=\"pdc-cur-lbl\" data-i18n=\"currency\">Currency<\/span>\r\n          <select class=\"pdc-cur-select\" id=\"pdcCurrency\" onchange=\"pdcChangeCurrency()\">\r\n            <option value=\"EUR\">EUR &mdash; &euro;<\/option>\r\n            <option value=\"USD\">USD &mdash; $<\/option>\r\n            <option value=\"GBP\">GBP &mdash; &pound;<\/option>\r\n            <option value=\"CHF\">CHF<\/option>\r\n            <option value=\"AUD\">AUD &mdash; A$<\/option>\r\n            <option value=\"CAD\">CAD &mdash; C$<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div class=\"pdc-cfg-row\">\r\n          <span class=\"pdc-cfg-lbl\" data-i18n=\"openingHours\">Opening hours \/ day<\/span>\r\n          <div class=\"pdc-stepper pdc-cfg-stepper\">\r\n            <input class=\"pdc-stepper-num\" type=\"number\" id=\"pdcHours\" value=\"14\" min=\"8\" max=\"20\" oninput=\"pdcChangeHours()\">\r\n            <span class=\"pdc-stepper-unit\" data-i18n=\"hrs\">hrs<\/span>\r\n            <div class=\"pdc-stepper-arrows\">\r\n              <button class=\"pdc-arr\" onclick=\"pdcStepHours(1)\"><svg viewBox=\"0 0 10 6\" fill=\"none\"><polyline points=\"1,5 5,1 9,5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\r\n              <button class=\"pdc-arr\" onclick=\"pdcStepHours(-1)\"><svg viewBox=\"0 0 10 6\" fill=\"none\"><polyline points=\"1,1 5,5 9,1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"padding:0 22px 10px\"><span id=\"pdcHoursNote\" style=\"font-size:11px;color:#aaa\"><\/span><\/div>\r\n        <div class=\"pdc-cfg-row\">\r\n          <span class=\"pdc-cfg-lbl\" data-i18n=\"numCourts\">Number of courts<\/span>\r\n          <div class=\"pdc-stepper pdc-cfg-stepper\">\r\n            <input class=\"pdc-stepper-num\" type=\"number\" id=\"pdcCourts\" value=\"1\" min=\"1\" max=\"20\" oninput=\"pdcRecalc()\">\r\n            <span class=\"pdc-stepper-unit\" data-i18n=\"cts\">cts<\/span>\r\n            <div class=\"pdc-stepper-arrows\">\r\n              <button class=\"pdc-arr\" onclick=\"pdcStep('pdcCourts',1,1,20)\"><svg viewBox=\"0 0 10 6\" fill=\"none\"><polyline points=\"1,5 5,1 9,5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\r\n              <button class=\"pdc-arr\" onclick=\"pdcStep('pdcCourts',-1,1,20)\"><svg viewBox=\"0 0 10 6\" fill=\"none\"><polyline points=\"1,1 5,5 9,1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"pdc-note\" style=\"border-top:1px solid #f2f2f2\">\r\n          <p data-i18n=\"configNote\">Avg occupancy = booked \/ available slots &nbsp;&middot;&nbsp; Avg price = weighted mean &nbsp;&middot;&nbsp; Annual = weekly x 52<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n\r\n      <!-- OUTPUTS -->\r\n      <div class=\"pdc-card\">\r\n        <div class=\"pdc-card-header\">\r\n          <div class=\"pdc-card-header-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"\/><\/svg><\/div>\r\n          <span class=\"pdc-card-header-title\" data-i18n=\"outputsTitle\">Outputs &mdash; for profitability calculator<\/span>\r\n        <\/div>\r\n        <div class=\"pdc-out-block\">\r\n          <div class=\"pdc-out-label-row\">\r\n            <span class=\"pdc-out-lbl\" data-i18n=\"occupancyRate\">Occupancy rate<\/span>\r\n            <span class=\"pdc-badge pdc-opti\" id=\"pdcOccBadge\">&mdash;<\/span>\r\n          <\/div>\r\n          <div class=\"pdc-out-val-row\">\r\n            <span class=\"pdc-out-val pdc-green\" id=\"pdcOutOcc\">0.0<\/span>\r\n            <span class=\"pdc-out-unit\">%<\/span>\r\n          <\/div>\r\n          <div class=\"pdc-occ-bar\"><div class=\"pdc-occ-fill\" id=\"pdcOccFill\" style=\"width:0%\"><\/div><\/div>\r\n          <div class=\"pdc-occ-scale\"><span>0%<\/span><span>25%<\/span><span>50%<\/span><span>75%<\/span><span>100%<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"pdc-out-block\">\r\n          <div class=\"pdc-out-label-row\"><span class=\"pdc-out-lbl\" data-i18n=\"avgPricePerHour\">Average price per hour<\/span><\/div>\r\n          <div class=\"pdc-out-val-row\">\r\n            <span class=\"pdc-out-val\" id=\"pdcOutRate\">0.00<\/span>\r\n            <span class=\"pdc-out-unit\">EUR<\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"pdc-weekly-row\">\r\n          <span class=\"pdc-weekly-lbl\" id=\"pdcLblWeekly\">Weekly income for 1 court<\/span>\r\n          <span class=\"pdc-weekly-val\" id=\"pdcOutWeekly\">&euro; 0<\/span>\r\n        <\/div>\r\n        <div class=\"pdc-potential-block\">\r\n          <div class=\"pdc-potential-title\">\r\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\r\n            <span data-i18n=\"maxRevenue100\">Max revenue at 100% occupancy<\/span>\r\n          <\/div>\r\n          <div class=\"pdc-pot-row\"><span class=\"pdc-pot-lbl\" id=\"pdcLblPotWeekly\">Max weekly for 1 court<\/span><span class=\"pdc-pot-val pdc-max\" id=\"pdcPotWeekly\">&euro; 0<\/span><\/div>\r\n          <div class=\"pdc-pot-row\"><span class=\"pdc-pot-lbl\" id=\"pdcLblPotMonthly\">Max monthly for 1 court<\/span><span class=\"pdc-pot-val\" id=\"pdcPotMonthly\">&euro; 0<\/span><\/div>\r\n          <div class=\"pdc-pot-row\"><span class=\"pdc-pot-lbl\" id=\"pdcLblPotAnnual\">Max annual for 1 court<\/span><span class=\"pdc-pot-val\" id=\"pdcPotAnnual\">&euro; 0<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"pdc-gap-block\">\r\n          <div class=\"pdc-gap-title\"><strong data-i18n=\"revenueCaptured\">Revenue captured<\/strong><span id=\"pdcGapPct\">0%<\/span><\/div>\r\n          <div class=\"pdc-gap-track\"><div class=\"pdc-gap-actual\" id=\"pdcGapBar\" style=\"width:0%\"><\/div><\/div>\r\n          <div class=\"pdc-gap-labels\">\r\n            <span class=\"pdc-gap-act-lbl\" id=\"pdcGapActLbl\">&euro; 0 actual<\/span>\r\n            <span id=\"pdcGapMaxLbl\">&euro; 0 max<\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <button class=\"pdc-dl-btn\" id=\"pdcDlBtn\" onclick=\"pdcDownloadReport()\">\r\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>\r\n          <span data-i18n=\"downloadPDF\">Download PDF report<\/span>\r\n        <\/button>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- BOTTOM STATS -->\r\n  <div class=\"pdc-summary\">\r\n    <div class=\"pdc-stat\">\r\n      <div class=\"pdc-stat-lbl\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"\/><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"\/><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"\/><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"\/><\/svg><span data-i18n=\"weeklyTurnover\">Weekly turnover<\/span><\/div>\r\n      <div class=\"pdc-stat-val pdc-green\" id=\"pdcSbWeekly\">0<span class=\"pdc-su\">EUR<\/span><\/div>\r\n      <div class=\"pdc-stat-max\"><span data-i18n=\"maxLabel\">Max:<\/span> <span id=\"pdcMxWeekly\">0<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"pdc-stat\">\r\n      <div class=\"pdc-stat-lbl\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\/><\/svg><span data-i18n=\"monthlyTurnover\">Monthly turnover<\/span><\/div>\r\n      <div class=\"pdc-stat-val\" id=\"pdcSbMonthly\">0<span class=\"pdc-su\">EUR<\/span><\/div>\r\n      <div class=\"pdc-stat-max\"><span data-i18n=\"maxLabel\">Max:<\/span> <span id=\"pdcMxMonthly\">0<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"pdc-stat\">\r\n      <div class=\"pdc-stat-lbl\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"\/><polyline points=\"17 6 23 6 23 12\"\/><\/svg><span data-i18n=\"annualRevenue\">Annual revenue<\/span><\/div>\r\n      <div class=\"pdc-stat-val pdc-green\" id=\"pdcSbAnnual\">0<span class=\"pdc-su\">EUR<\/span><\/div>\r\n      <div class=\"pdc-stat-max\"><span data-i18n=\"maxLabel\">Max:<\/span> <span id=\"pdcMxAnnual\">0<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"pdc-stat\">\r\n      <div class=\"pdc-stat-lbl\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"\/><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"\/><\/svg><span data-i18n=\"avgPrice\">Avg price \/ hour<\/span><\/div>\r\n      <div class=\"pdc-stat-val\" id=\"pdcSbRate\">0.00<span class=\"pdc-su\">EUR<\/span><\/div>\r\n    <\/div>\r\n    <div class=\"pdc-stat\">\r\n      <div class=\"pdc-stat-lbl\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 20V10\"\/><path d=\"M12 20V4\"\/><path d=\"M6 20v-6\"\/><\/svg><span data-i18n=\"occupancyRate\">Occupancy rate<\/span><\/div>\r\n      <div class=\"pdc-stat-val pdc-green\" id=\"pdcSbOcc\">0.0<span class=\"pdc-su\">%<\/span><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"pdc-footer-note\">\r\n    <span data-i18n=\"footerSuite\">Padel Business Planning Suite<\/span> &nbsp;&middot;&nbsp; <a href=\"https:\/\/www.padelcreations.com\/tag\/padelbusiness\/\" target=\"_blank\" rel=\"noopener\">padelcreations.com<\/a><\/span>\r\n    <span data-i18n=\"footerEstimates\">All figures are estimates for planning purposes only.<\/span>\r\n  <\/div>\r\n\r\n\r\n<\/div>\r\n\r\n  <\/div><!-- \/pdc-collapsible -->\r\n\r\n<div class=\"pdc-modal-overlay\" id=\"pdcModal\">\r\n  <div class=\"pdc-modal-box\">\r\n    <h2 data-i18n=\"modalTitle\">Enter Access Code<\/h2>\r\n    <input class=\"pdc-modal-input\" type=\"password\" id=\"pdcCodeInput\" placeholder=\"&#9679;&#9679;&#9679;&#9679;\" maxlength=\"20\" autocomplete=\"off\">\r\n    <div class=\"pdc-modal-error\" id=\"pdcModalError\"><\/div>\r\n    <div class=\"pdc-modal-hint\">\r\n      <span data-i18n=\"modalNoCode\">Planning a Padel Center?<\/span>\r\n      <a href=\"https:\/\/www.padelcreations.com\/contact\/\" target=\"_blank\" rel=\"noopener\" data-i18n=\"modalGetCode\">Request a Padel Court quote<\/a>\r\n      <span data-i18n=\"modalSub\">and we'll send the code straight to your inbox.<\/span>\r\n    <\/div>\r\n    <button class=\"pdc-modal-confirm\" id=\"pdcModalConfirm\" data-i18n=\"modalConfirm\">\ud83d\udd13 Unlock &amp; Download PDF<\/button>\r\n  <\/div>\r\n\r\n<\/div><!-- \/.pdc-wrap -->\r\n\r\n<script>\r\n(function(){\r\n\r\n  \/* \u2500\u2500 i18n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  var PDC_TRANSLATIONS = {\r\n    en: {\r\n      pageTitle:'Slot Detail Calculator',\r\n      pageSubtitle:'Determine average occupancy rate & price per hour \\u2192 feed into your profitability model',\r\n      tableCardTitle:'Occupancy & Price per Time Slot',\r\n      loadScenario:'Load scenario:',\r\n      pessimistic:'Pessimistic', normal:'Normal', optimistic:'Optimistic',\r\n      timeSlot:'Time slot', monFri:'Mon \\u2013 Fri', satSun:'Sat & Sun',\r\n      occupancyPct:'Occupancy %', pricePerHour:'\\u20ac \/ hour', weeklyInc:'Weekly inc.',\r\n      formulaNote:'<strong>Weekly income<\/strong> = (occ% \\u00d7 price \\u00d7 5 weekdays) + (occ% \\u00d7 price \\u00d7 2 weekend days) \\u00a0\\u00b7\\u00a0 Annual = weekly \\u00d7 52 weeks',\r\n      configTitle:'Configuration', currency:'Currency',\r\n      openingHours:'Opening hours \/ day', hrs:'hrs',\r\n      numCourts:'Number of courts', cts:'cts',\r\n      configNote:'Avg occupancy = booked \/ available slots \\u00a0\\u00b7\\u00a0 Avg price = weighted mean \\u00a0\\u00b7\\u00a0 Annual = weekly x 52',\r\n      outputsTitle:'Outputs \\u2014 for profitability calculator',\r\n      occupancyRate:'Occupancy rate', avgPricePerHour:'Average price per hour',\r\n      maxRevenue100:'Max revenue at 100% occupancy', revenueCaptured:'Revenue captured',\r\n      downloadPDF:'Download PDF report',\r\n      weeklyTurnover:'Weekly turnover', monthlyTurnover:'Monthly turnover',\r\n      annualRevenue:'Annual revenue', avgPrice:'Avg price \/ hour',\r\n      footerEstimates:'All figures are estimates for planning purposes only.',\r\n      toggleShow:'Open Slot Calculator',\r\n      toggleHide:'Close Slot Calculator',\r\n      toggleBadge:'Open',\r\n      occupancyPct:'Occupancy %',\r\n      pricePerHour:'\u20ac \/ hour',\r\n      maxLabel:'Max:',\r\n      actualLabel:'actual',\r\n      maxShort:'max',\r\n      footerSuite:'Padel Business Planning Suite',\r\n      teaserText:'Want to go deeper? The slot calculator below lets you model occupancy and pricing hour by hour \\u2014 giving you a precise average rate and attendance figure to feed directly into the profit calculator above.',\r\n      modalTitle:'Enter Access Code',\r\n      modalNoCode:'Planning a Padel Center?',\r\n      modalGetCode:'Request a Padel Court quote',\r\n      modalSub:\"and we'll send the code straight to your inbox.\",\r\n      modalConfirm:'\\uD83D\\uDD13 Unlock & Download PDF',\r\n      modalError:'Incorrect code \\u2014 please try again.',\r\n      moLabel:'mo', yrLabel:'yr', courtSingular:'court', courtPlural:'courts',\r\n      pdf:{\r\n        title:'Padel Club \\u2014 Slot Revenue Report',\r\n        generated:'Generated', site:'padelcreations.com',\r\n        source:'padelcreations.com \\u2014 Padel Business Planning Suite',\r\n        courts:'Courts', openingHours:'Opening hours', slotsDay:'Slots \/ day', currency:'Currency',\r\n        avgOcc:'Avg occupancy rate', avgPrice:'Avg price \/ hour', weeklyIncome:'Weekly income',\r\n        revCaptured:'REVENUE CAPTURED VS MAXIMUM POTENTIAL',\r\n        actualWk:'actual\/wk', maxWk:'max\/wk',\r\n        maxRev:'MAX REVENUE AT 100% OCCUPANCY',\r\n        maxWeekly:'Max weekly', maxMonthly:'Max monthly', maxAnnual:'Max annual',\r\n        slotDetail:'TIME SLOT DETAIL',\r\n        monFri:'MON \\u2013 FRI', satSun:'SAT \\u2013 SUN', weekly:'WEEKLY', occPct:'OCC%',\r\n        exploreTitle:'>> Explore & Understand the numbers',\r\n        exploreText:\"The profit calculator is an interactive tool that helps you estimate daily, monthly, and annual turnover from court rentals by adjusting key variables. Simply enter details like daily operating hours, average rental price, occupancy rate, and the number of available courts to see how each factor influences potential earnings. You can also select your preferred currency for results. The tool allows you to model different scenarios by incorporating cost components to see their effect on final Earnings Before Tax (EBT) and ROI. The EBT represents a company's profit before income taxes are deducted, providing an indicator of profitability from operations and other activities, excluding the impact of taxes. Whether you're a new business owner or optimizing existing operations, this tool offers valuable insights for making informed financial decisions.\",\r\n        disclaimer:'! Disclaimer',\r\n        disclaimerText:'This tool provides general estimates based on the data you input. Results are for informational purposes only and do not constitute financial, legal, or investment advice. Actual earnings and costs may vary depending on market conditions, unexpected expenses, or changes in operational strategy. The figures shown are simplified projections and should not be relied upon for critical decision-making without further validation. Users are encouraged to consult with financial professionals to evaluate specific business plans. The creators of this tool assume no responsibility for errors, omissions, or outcomes resulting from its use.',\r\n        footer:'Padel Club \\u2014 Slot Revenue Report'\r\n      }\r\n    },\r\n    de: {\r\n      pageTitle:'Slot-Detail-Rechner',\r\n      pageSubtitle:'Durchschnittliche Auslastung & Preis pro Stunde bestimmen \\u2192 in Ihr Rentabilit\\u00e4tsmodell einf\\u00fcgen',\r\n      tableCardTitle:'Auslastung & Preis pro Zeitslot',\r\n      loadScenario:'Szenario laden:',\r\n      pessimistic:'Pessimistisch', normal:'Normal', optimistic:'Optimistisch',\r\n      timeSlot:'Zeitslot', monFri:'Mo \\u2013 Fr', satSun:'Sa & So',\r\n      occupancyPct:'Auslastung %', pricePerHour:'\\u20ac \/ Stunde', weeklyInc:'W\\u00f6chentl.',\r\n      formulaNote:'<strong>W\\u00f6chentliche Einnahmen<\/strong> = (Auslastung% \\u00d7 Preis \\u00d7 5 Wochentage) + (Auslastung% \\u00d7 Preis \\u00d7 2 Wochenendtage) \\u00a0\\u00b7\\u00a0 J\\u00e4hrlich = w\\u00f6chentlich \\u00d7 52 Wochen',\r\n      configTitle:'Konfiguration', currency:'W\\u00e4hrung',\r\n      openingHours:'\\u00d6ffnungszeiten \/ Tag', hrs:'Std.',\r\n      numCourts:'Anzahl der Pl\\u00e4tze', cts:'Pl.',\r\n      configNote:'Auslastung = gebuchte \/ verf\\u00fcgbare Slots \\u00a0\\u00b7\\u00a0 Preis = gewichteter Durchschnitt \\u00a0\\u00b7\\u00a0 J\\u00e4hrlich = w\\u00f6chentlich x 52',\r\n      outputsTitle:'Ausgaben \\u2014 f\\u00fcr den Rentabilit\\u00e4tsrechner',\r\n      occupancyRate:'Auslastungsrate', avgPricePerHour:'Durchschnittspreis pro Stunde',\r\n      maxRevenue100:'Max. Umsatz bei 100\\u202f% Auslastung', revenueCaptured:'Erfasster Umsatz',\r\n      downloadPDF:'PDF-Bericht herunterladen',\r\n      weeklyTurnover:'W\\u00f6chentlicher Umsatz', monthlyTurnover:'Monatlicher Umsatz',\r\n      annualRevenue:'J\\u00e4hrlicher Umsatz', avgPrice:'Durchschnittspreis \/ Std.',\r\n      footerEstimates:'Alle Angaben sind Sch\\u00e4tzungen f\\u00fcr Planungszwecke.',\r\n      toggleShow:'Slot-Rechner \u00f6ffnen',\r\n      toggleHide:'Slot-Rechner schlie\u00dfen',\r\n      toggleBadge:'\u00d6ffnen',\r\n      occupancyPct:'Auslastung %',\r\n      pricePerHour:'\u20ac \/ Stunde',\r\n      maxLabel:'Max:',\r\n      actualLabel:'tats\\u00e4chlich',\r\n      maxShort:'max',\r\n      footerSuite:'Padel Business Planning Suite',\r\n      teaserText:'M\\u00f6chten Sie tiefer einsteigen? Der Slot-Rechner erm\\u00f6glicht es Ihnen, Auslastung und Preise Stunde f\\u00fcr Stunde zu modellieren \\u2014 und liefert Ihnen einen pr\\u00e4zisen Durchschnittspreis und Auslastungswert f\\u00fcr den Gewinnrechner oben.',\r\n      modalTitle:'Zugangscode eingeben',\r\n      modalNoCode:'Planen Sie ein Padel Center?',\r\n      modalGetCode:'Angebot f\\u00fcr Padel Courts anfordern',\r\n      modalSub:'und wir senden Ihnen den Code direkt per E-Mail.',\r\n      modalConfirm:'\\uD83D\\uDD13 Entsperren & PDF herunterladen',\r\n      modalError:'Falscher Code \\u2014 bitte erneut versuchen.',\r\n      moLabel:'Mo.', yrLabel:'Jahr', courtSingular:'Platz', courtPlural:'Pl\\u00e4tze',\r\n      pdf:{\r\n        title:'Padel Club \\u2014 Slot-Umsatzbericht',\r\n        generated:'Erstellt', site:'padelcreations.com',\r\n        source:'padelcreations.com \\u2014 Padel Business Planning Suite',\r\n        courts:'Pl\\u00e4tze', openingHours:'\\u00d6ffnungszeiten', slotsDay:'Slots \/ Tag', currency:'W\\u00e4hrung',\r\n        avgOcc:'Durchschn. Auslastung', avgPrice:'Durchschn. Preis \/ Std.', weeklyIncome:'W\\u00f6chentl. Einnahmen',\r\n        revCaptured:'ERFASSTER UMSATZ VS. MAXIMALPOTENZIAL',\r\n        actualWk:'tats\\u00e4chlich\/Woche', maxWk:'max\/Woche',\r\n        maxRev:'MAX. UMSATZ BEI 100\\u202f% AUSLASTUNG',\r\n        maxWeekly:'Max. w\\u00f6chentlich', maxMonthly:'Max. monatlich', maxAnnual:'Max. j\\u00e4hrlich',\r\n        slotDetail:'ZEITSLOT-DETAILS',\r\n        monFri:'MO \\u2013 FR', satSun:'SA \\u2013 SO', weekly:'W\\u00d6CHENTL.', occPct:'AUSL.%',\r\n        exploreTitle:'>> Die Zahlen verstehen & erkunden',\r\n        exploreText:'Der Rentabilit\\u00e4tsrechner ist ein interaktives Tool, das Ihnen hilft, den t\\u00e4glichen, monatlichen und j\\u00e4hrlichen Umsatz aus Court-Vermietungen durch Anpassung wichtiger Variablen zu sch\\u00e4tzen. Geben Sie einfach Details wie t\\u00e4gliche Betriebsstunden, durchschnittlichen Mietpreis, Auslastungsgrad und die Anzahl der verf\\u00fcgbaren Courts ein, um zu sehen, wie jeder Faktor die potenziellen Einnahmen beeinflusst. Sie k\\u00f6nnen auch Ihre bevorzugte W\\u00e4hrung w\\u00e4hlen. Das Tool erm\\u00f6glicht es Ihnen, verschiedene Szenarien zu modellieren, indem Sie Kostenkomponenten einbeziehen, um deren Auswirkungen auf den endg\\u00fcltigen EBT und ROI zu sehen. Der EBT stellt den Gewinn eines Unternehmens vor Einkommenssteuern dar und gibt einen Indikator f\\u00fcr die Rentabilit\\u00e4t aus dem Betrieb an. Ob Sie ein neuer Gesch\\u00e4ftsinhaber sind oder bestehende Abl\\u00e4ufe optimieren \\u2013 dieses Tool bietet wertvolle Einblicke f\\u00fcr fundierte finanzielle Entscheidungen.',\r\n        disclaimer:'! Haftungsausschluss',\r\n        disclaimerText:'Dieses Tool liefert allgemeine Sch\\u00e4tzungen auf Basis der eingegebenen Daten. Die Ergebnisse dienen ausschlie\\u00dflich zu Informationszwecken und stellen keine finanzielle, rechtliche oder Anlageberatung dar. Tats\\u00e4chliche Einnahmen und Kosten k\\u00f6nnen je nach Marktbedingungen, unerwarteten Ausgaben oder \\u00c4nderungen der Betriebsstrategie abweichen. Die gezeigten Zahlen sind vereinfachte Projektionen und sollten ohne weitere Pr\\u00fcfung nicht f\\u00fcr wichtige Entscheidungen herangezogen werden. Die Ersteller \\u00fcbernehmen keine Haftung f\\u00fcr Fehler, Auslassungen oder Ergebnisse aus der Nutzung dieses Tools.',\r\n        footer:'Padel Club \\u2014 Slot-Umsatzbericht'\r\n      }\r\n    }\r\n  };\r\n\r\n  function pdcDetectLang(){\r\n    var raw  = (document.documentElement.lang || 'en').toLowerCase();\r\n    var base = raw.split('-')[0];\r\n    return PDC_TRANSLATIONS[base] ? base : 'en';\r\n  }\r\n  var T = PDC_TRANSLATIONS[pdcDetectLang()];\r\n\r\n  function pdcApplyTranslations(){\r\n    document.querySelectorAll('[data-i18n]').forEach(function(el){\r\n      var key = el.getAttribute('data-i18n');\r\n      if(T[key] !== undefined){\r\n        if(key === 'formulaNote' || key === 'configNote') el.innerHTML = T[key];\r\n        else el.textContent = T[key];\r\n      }\r\n    });\r\n  }\r\n\r\n  \/* \u2500\u2500 Constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  var CLOSE=23, MINH=7, WD=5, WE=2;\r\n  var PWD=[28,28,28,28,28,32,32,32,32,36,36,36,36,36,36,36];\r\n  var PWE=[32,32,32,32,32,32,32,32,32,30,30,30,30,30,30,30];\r\n  var PRE={\r\n    p:{wdO:[15,15,15,15,25,25,25,25,75,75,75,75,75,75,75,75],weO:[25,25,25,25,25,25,25,25,15,15,15,15,15,15,15,15]},\r\n    n:{wdO:[25,25,25,25,25,25,25,25,25,25,25,100,100,100,100,100],weO:[50,50,50,50,50,50,50,50,50,25,25,25,25,25,25,25]},\r\n    o:{wdO:[40,40,40,40,40,40,40,40,40,40,40,100,100,100,100,100],weO:[75,75,75,75,75,75,75,75,40,40,40,40,40,40,40,40]}\r\n  };\r\n  var CUR_SYM={EUR:'\\u20ac',USD:'$',GBP:'\\u00a3',CHF:'CHF ',AUD:'A$',CAD:'C$'};\r\n\r\n  var slots=[], saved={};\r\n\r\n  function gi(id){ return document.getElementById(id); }\r\n  function gv(id){ return parseFloat(gi(id).value)||0; }\r\n  function fm(n) { return Math.round(n).toLocaleString('de-DE'); }\r\n  function pd(n) { return String(n).padStart(2,'0'); }\r\n  function gh()  { return Math.max(8,Math.min(20,parseInt(gi('pdcHours').value)||14)); }\r\n  function curSym(){ return CUR_SYM[gi('pdcCurrency').value]||'\\u20ac'; }\r\n  function curCode(){ return gi('pdcCurrency').value||'EUR'; }\r\n\r\n  function mkSlots(h){\r\n    var a=[],op=CLOSE-h;\r\n    for(var i=op;i<CLOSE;i++) a.push({s:i,e:i+1,pk:i>=CLOSE-3});\r\n    return a;\r\n  }\r\n\r\n  var SU='<svg viewBox=\"0 0 10 6\" fill=\"none\"><polyline points=\"1,5 5,1 9,5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\r\n  var SD='<svg viewBox=\"0 0 10 6\" fill=\"none\"><polyline points=\"1,1 5,5 9,1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\r\n\r\n  function mkStep(id,val,mn,mx,st,unit){\r\n    var uc=\"pdcStep('\"+id+\"',\"+st+\",\"+mn+\",\"+mx+\")\";\r\n    var dc=\"pdcStep('\"+id+\"',-\"+st+\",\"+mn+\",\"+mx+\")\";\r\n    return '<div class=\"pdc-stepper\">'\r\n      +'<input class=\"pdc-stepper-num\" type=\"number\" id=\"'+id+'\" value=\"'+val+'\" min=\"'+mn+'\" max=\"'+mx+'\" oninput=\"pdcRecalc()\">'\r\n      +'<span class=\"pdc-stepper-unit\">'+unit+'<\/span>'\r\n      +'<div class=\"pdc-stepper-arrows\">'\r\n      +'<button class=\"pdc-arr\" onclick=\"'+uc+'\">'+SU+'<\/button>'\r\n      +'<button class=\"pdc-arr\" onclick=\"'+dc+'\">'+SD+'<\/button>'\r\n      +'<\/div><\/div>';\r\n  }\r\n\r\n  function buildTable(){\r\n    var body=gi('pdcSlotBody');\r\n    body.innerHTML='';\r\n    for(var i=0;i<slots.length;i++){\r\n      var sl=slots[i],h=sl.s,idx=h-MINH;\r\n      var tr=document.createElement('tr');\r\n      if(sl.pk) tr.className='pdc-peak';\r\n      tr.innerHTML=\r\n        '<td class=\"pdc-td-time\">'+pd(h)+':00\\u2013'+pd(sl.e)+':00<\/td>'\r\n        +'<td class=\"pdc-td-tag\">'+(sl.pk?'<span class=\"pdc-peak-tag\">Peak<\/span>':'')+'<\/td>'\r\n        +'<td>'+mkStep('pdcWdO'+h,0,0,100,5,'%')+'<\/td>'\r\n        +'<td>'+mkStep('pdcWdP'+h,PWD[idx]||32,0,500,1,curSym())+'<\/td>'\r\n        +'<td class=\"pdc-td-div\"><\/td>'\r\n        +'<td>'+mkStep('pdcWeO'+h,0,0,100,5,'%')+'<\/td>'\r\n        +'<td>'+mkStep('pdcWeP'+h,PWE[idx]||30,0,500,1,curSym())+'<\/td>'\r\n        +'<td class=\"pdc-td-inc\" id=\"pdcRi'+h+'\">\\u20ac 0<\/td>';\r\n      body.appendChild(tr);\r\n    }\r\n  }\r\n\r\n  function recalc(){\r\n    var N=slots.length; if(!N) return;\r\n    var totW=0,sO=0,sRN=0,sRD=0;\r\n    for(var i=0;i<N;i++){\r\n      var h=slots[i].s;\r\n      var wO=gv('pdcWdO'+h),eO=gv('pdcWeO'+h),wP=gv('pdcWdP'+h),eP=gv('pdcWeP'+h);\r\n      var inc=(wO\/100)*wP*WD+(eO\/100)*eP*WE;\r\n      totW+=inc;\r\n      gi('pdcRi'+h).textContent=curSym()+fm(inc);\r\n      sO+=wO*WD+eO*WE; sRN+=wP*wO*WD+eP*eO*WE; sRD+=wO*WD+eO*WE;\r\n    }\r\n    var avgOcc=(sO\/(N*(WD+WE)*100))*100;\r\n    var avgRate=sRD>0?sRN\/sRD:0;\r\n    var cEl=gi('pdcCourts');\r\n    var courts=Math.max(1,parseInt(cEl?cEl.value:1)||1);\r\n    var wkAll=totW*courts, mo=wkAll*(52\/12), yr=wkAll*52;\r\n\r\n    window.pdcOcc=avgOcc.toFixed(1);\r\n    window.pdcRate=avgRate.toFixed(2);\r\n\r\n    var cL=T.courtSingular && courts===1 ? 'for 1 '+T.courtSingular : 'for '+courts+' '+T.courtPlural;\r\n    gi('pdcLblWeekly').textContent=T.weeklyTurnover+' '+cL;\r\n    gi('pdcLblPotWeekly').textContent=T.pdf.maxWeekly+' '+cL;\r\n    gi('pdcLblPotMonthly').textContent=T.pdf.maxMonthly+' '+cL;\r\n    gi('pdcLblPotAnnual').textContent=T.pdf.maxAnnual+' '+cL;\r\n\r\n    gi('pdcOutOcc').textContent=avgOcc.toFixed(1);\r\n    gi('pdcOutRate').textContent=avgRate.toFixed(2);\r\n    gi('pdcOutWeekly').textContent=curSym()+fm(wkAll);\r\n    gi('pdcOccFill').style.width=Math.min(avgOcc,100).toFixed(1)+'%';\r\n\r\n    var b=gi('pdcOccBadge');\r\n    if(avgOcc<38){b.textContent=T.pessimistic;b.className='pdc-badge pdc-pess';}\r\n    else if(avgOcc<50){b.textContent=T.normal;b.className='pdc-badge pdc-norm';}\r\n    else{b.textContent=T.optimistic;b.className='pdc-badge pdc-opti';}\r\n\r\n    gi('pdcSbWeekly').innerHTML=fm(wkAll)+'<span class=\"pdc-su\">'+curCode()+'<\/span>';\r\n    gi('pdcSbMonthly').innerHTML=fm(mo)+'<span class=\"pdc-su\">'+curCode()+'<\/span>';\r\n    gi('pdcSbAnnual').innerHTML=fm(yr)+'<span class=\"pdc-su\">'+curCode()+'<\/span>';\r\n    gi('pdcSbRate').innerHTML=avgRate.toFixed(2)+'<span class=\"pdc-su\">'+curCode()+'<\/span>';\r\n    gi('pdcSbOcc').innerHTML=avgOcc.toFixed(1)+'<span class=\"pdc-su\">%<\/span>';\r\n\r\n    var potW=0;\r\n    for(var j=0;j<N;j++){var hj=slots[j].s;potW+=gv('pdcWdP'+hj)*WD+gv('pdcWeP'+hj)*WE;}\r\n    var pWk=potW*courts,pMo=pWk*(52\/12),pYr=pWk*52;\r\n    var cap=pWk>0?Math.min(100,(wkAll\/pWk)*100):0;\r\n\r\n    gi('pdcPotWeekly').textContent=curSym()+fm(pWk);\r\n    gi('pdcPotMonthly').textContent=curSym()+fm(pMo);\r\n    gi('pdcPotAnnual').textContent=curSym()+fm(pYr);\r\n    gi('pdcGapPct').textContent=cap.toFixed(1)+'%';\r\n    gi('pdcGapBar').style.width=cap.toFixed(1)+'%';\r\n    gi('pdcGapActLbl').textContent=curSym()+fm(wkAll)+' '+(T.actualLabel||'actual');\r\n    gi('pdcGapMaxLbl').textContent=curSym()+fm(pWk)+' '+(T.maxShort||'max');\r\n    gi('pdcMxWeekly').textContent=curSym()+fm(pWk);\r\n    gi('pdcMxMonthly').textContent=curSym()+fm(pMo);\r\n    gi('pdcMxAnnual').textContent=curSym()+fm(pYr);\r\n  }\r\n\r\n  function loadPreset(key){\r\n    var p=PRE[key];\r\n    for(var i=0;i<slots.length;i++){\r\n      var h=slots[i].s,idx=h-MINH;\r\n      gi('pdcWdO'+h).value=p.wdO[idx]!==undefined?p.wdO[idx]:0;\r\n      gi('pdcWeO'+h).value=p.weO[idx]!==undefined?p.weO[idx]:0;\r\n      gi('pdcWdP'+h).value=PWD[idx]!==undefined?PWD[idx]:32;\r\n      gi('pdcWeP'+h).value=PWE[idx]!==undefined?PWE[idx]:30;\r\n    }\r\n    document.querySelectorAll('.pdc-pb').forEach(function(b){b.classList.remove('pdc-on');});\r\n    document.querySelector('.pdc-pb.pdc-'+{p:'pess',n:'norm',o:'opti'}[key]).classList.add('pdc-on');\r\n    recalc();\r\n  }\r\n\r\n  function updateNote(){\r\n    var h=gh();\r\n    gi('pdcHoursNote').textContent=pd(CLOSE-h)+':00 - '+pd(CLOSE)+':00  ('+h+' slots per day)';\r\n  }\r\n\r\n  \/* \u2500\u2500 PDF Download \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  window.pdcDownloadReport = function(){\r\n    var jsPDF = window.jspdf ? window.jspdf.jsPDF : null;\r\n    if(!jsPDF){ alert('PDF library not loaded. Please try again.'); return; }\r\n    var P=T.pdf;\r\n    var C=gi('pdcCurrency').value||'EUR';\r\n    var CS=CUR_SYM[C]||'\\u20ac';\r\n    var courts=Math.max(1,parseInt(gi('pdcCourts').value)||1);\r\n    var hours=gh(), openH=CLOSE-hours;\r\n    var cL=courts+(courts===1?' '+T.courtSingular:' '+T.courtPlural);\r\n    var today=new Date();\r\n    var p2=function(n){return String(n).padStart(2,'0');};\r\n    var ds=today.toLocaleDateString('en-GB',{day:'2-digit',month:'long',year:'numeric'});\r\n    var ts=p2(today.getHours())+':'+p2(today.getMinutes());\r\n    var stamp=today.getFullYear()+p2(today.getMonth()+1)+p2(today.getDate())+'_'+p2(today.getHours())+p2(today.getMinutes());\r\n\r\n    var occ=gi('pdcOutOcc').textContent;\r\n    var rate=gi('pdcOutRate').textContent;\r\n    var wkRaw=gi('pdcSbWeekly').textContent.replace(\/[A-Z]{3}$\/,'').trim();\r\n    var moRaw=gi('pdcSbMonthly').textContent.replace(\/[A-Z]{3}$\/,'').trim();\r\n    var yrRaw=gi('pdcSbAnnual').textContent.replace(\/[A-Z]{3}$\/,'').trim();\r\n    var potWk=gi('pdcPotWeekly').textContent;\r\n    var potMo=gi('pdcPotMonthly').textContent;\r\n    var potYr=gi('pdcPotAnnual').textContent;\r\n    var capPct=gi('pdcGapPct').textContent;\r\n    var capNum=parseFloat(capPct)||0;\r\n\r\n    var NAVY=[28,55,87],GREEN=[29,158,117],DARK=[26,26,24],MID=[80,80,80];\r\n    var GREY=[150,150,150],LGREY=[220,220,218],LIGHT=[245,245,243];\r\n    var LBLUE=[235,245,255],LYEL=[254,252,240],AMBER=[220,200,120],WHITE=[255,255,255];\r\n\r\n    var doc=new jsPDF({unit:'mm',format:'a4'});\r\n    var CW=210,ML=14,MR=14,TW=182; var y=0;\r\n\r\n    \/\/ Header\r\n    doc.setFillColor.apply(doc,NAVY); doc.rect(0,0,CW,28,'F');\r\n    doc.setFillColor.apply(doc,GREEN); doc.rect(0,28,CW,2,'F');\r\n    doc.setTextColor.apply(doc,WHITE);\r\n    doc.setFontSize(17); doc.setFont('helvetica','bold');\r\n    doc.text(P.title,ML,17);\r\n    doc.setFontSize(9); doc.setFont('helvetica','normal');\r\n    doc.text(P.generated+': '+ds+' at '+ts,CW-MR,17,{align:'right'});\r\n    doc.setFillColor(240,244,248); doc.rect(0,30,CW,8,'F');\r\n    doc.setFontSize(8); doc.setFont('helvetica','italic'); doc.setTextColor.apply(doc,MID);\r\n    doc.text(P.source,CW\/2,35,{align:'center'});\r\n    y=44;\r\n\r\n    \/\/ Meta chips\r\n    var chips=[{l:P.courts,v:cL},{l:P.openingHours,v:pd(openH)+':00\\u2013'+pd(CLOSE)+':00 ('+hours+' hrs)'},{l:P.slotsDay,v:String(slots.length)},{l:P.currency,v:C}];\r\n    var chipW=(TW-(chips.length-1)*3)\/chips.length;\r\n    chips.forEach(function(chip,idx){\r\n      var cx=ML+idx*(chipW+3);\r\n      doc.setFillColor.apply(doc,LIGHT); doc.roundedRect(cx,y,chipW,14,2,2,'F');\r\n      doc.setFontSize(7); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,GREY);\r\n      doc.text(chip.l,cx+chipW\/2,y+5,{align:'center'});\r\n      doc.setFontSize(9); doc.setFont('helvetica','bold'); doc.setTextColor.apply(doc,DARK);\r\n      doc.text(chip.v,cx+chipW\/2,y+11,{align:'center'});\r\n    });\r\n    y+=20;\r\n\r\n    function secH(title,x,w,yy){\r\n      doc.setFillColor.apply(doc,NAVY); doc.roundedRect(x,yy,w,7,1,1,'F');\r\n      doc.setTextColor.apply(doc,WHITE); doc.setFontSize(7.5); doc.setFont('helvetica','bold');\r\n      doc.text(title,x+3,yy+4.8); return yy+10;\r\n    }\r\n\r\n    \/\/ KPI cards\r\n    var kpis=[{l:P.avgOcc,v:occ+'%',col:GREEN},{l:P.avgPrice,v:CS+rate,col:DARK},{l:P.weeklyIncome+' ('+cL+')',v:CS+wkRaw,col:GREEN}];\r\n    var kW=(TW-12)\/3;\r\n    kpis.forEach(function(k,i){\r\n      var kx=ML+i*(kW+6);\r\n      doc.setFillColor(247,248,250); doc.setDrawColor(232,232,232); doc.setLineWidth(0.3);\r\n      doc.roundedRect(kx,y,kW,22,2,2,'FD');\r\n      doc.setFontSize(7); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,GREY);\r\n      doc.text(k.l.toUpperCase(),kx+kW\/2,y+6,{align:'center'});\r\n      doc.setFontSize(14); doc.setFont('helvetica','bold'); doc.setTextColor.apply(doc,k.col);\r\n      doc.text(k.v,kx+kW\/2,y+15,{align:'center'});\r\n    });\r\n    var kx3=ML+2*(kW+6);\r\n    doc.setFontSize(7); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,GREY);\r\n    doc.text(CS+moRaw+' \/ '+T.moLabel+'   \\u00b7   '+CS+yrRaw+' \/ '+T.yrLabel,kx3+kW\/2,y+20,{align:'center'});\r\n    y+=28;\r\n\r\n    \/\/ Gap bar\r\n    y=secH(P.revCaptured,ML,TW,y);\r\n    doc.setFillColor(247,248,250); doc.setDrawColor(232,232,232); doc.setLineWidth(0.3);\r\n    doc.roundedRect(ML,y,TW,20,2,2,'FD');\r\n    doc.setFontSize(13); doc.setFont('helvetica','bold'); doc.setTextColor.apply(doc,GREEN);\r\n    doc.text(capPct,CW-MR-2,y+9,{align:'right'});\r\n    var tX=ML+4,tY=y+13,tW=TW-8-20,tH=5;\r\n    doc.setFillColor(224,224,224); doc.roundedRect(tX,tY,tW,tH,2,2,'F');\r\n    doc.setFillColor.apply(doc,GREEN);\r\n    doc.roundedRect(tX,tY,Math.max(2,tW*(capNum\/100)),tH,2,2,'F');\r\n    doc.setFontSize(7.5); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,GREEN);\r\n    doc.text(CS+wkRaw+' '+P.actualWk,tX,y+21);\r\n    doc.setTextColor.apply(doc,GREY);\r\n    doc.text(potWk+' '+P.maxWk,tX+tW,y+21,{align:'right'});\r\n    y+=26;\r\n\r\n    \/\/ Max potential cards\r\n    y=secH(P.maxRev,ML,TW,y);\r\n    var pots=[{l:P.maxWeekly,v:potWk},{l:P.maxMonthly,v:potMo},{l:P.maxAnnual,v:potYr}];\r\n    var pW=(TW-12)\/3;\r\n    pots.forEach(function(p,i){\r\n      var px=ML+i*(pW+6);\r\n      doc.setFillColor(248,255,254); doc.setDrawColor(29,158,117); doc.setLineWidth(0.4);\r\n      doc.roundedRect(px,y,pW,18,2,2,'FD');\r\n      doc.setFontSize(7); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,GREEN);\r\n      doc.text(p.l.toUpperCase(),px+pW\/2,y+6,{align:'center'});\r\n      doc.setFontSize(13); doc.setFont('helvetica','bold'); doc.setTextColor.apply(doc,GREEN);\r\n      doc.text(p.v,px+pW\/2,y+14,{align:'center'});\r\n    });\r\n    y+=24;\r\n\r\n    \/\/ Slot table\r\n    y=secH(P.slotDetail,ML,TW,y);\r\n    var c1=ML,c2=ML+TW\/2+3;\r\n    doc.setFillColor(250,250,250); doc.rect(ML,y,TW,7,'F');\r\n    doc.setDrawColor.apply(doc,LGREY); doc.setLineWidth(0.2); doc.line(ML,y,ML+TW,y);\r\n    doc.setFontSize(7.5); doc.setFont('helvetica','bold'); doc.setTextColor.apply(doc,MID);\r\n    doc.text(P.timeSlot||'TIME',ML+2,y+5);\r\n    doc.text(P.monFri,c1+38,y+5,{align:'center'});\r\n    doc.text(P.satSun,c2+38,y+5,{align:'center'});\r\n    doc.text(P.weekly,ML+TW-2,y+5,{align:'right'});\r\n    y+=7;\r\n    doc.setFillColor(252,252,252); doc.rect(ML,y,TW,6,'F');\r\n    doc.setDrawColor.apply(doc,LGREY); doc.line(ML,y,ML+TW,y);\r\n    doc.setFontSize(7); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,GREY);\r\n    doc.text(P.occPct,c1+30,y+4,{align:'center'}); doc.text(CS+'\/HR',c1+52,y+4,{align:'center'});\r\n    doc.line(c2-3,y,c2-3,y+6);\r\n    doc.text(P.occPct,c2+30,y+4,{align:'center'}); doc.text(CS+'\/HR',c2+52,y+4,{align:'center'});\r\n    y+=6;\r\n    for(var i=0;i<slots.length;i++){\r\n      var sl=slots[i],h=sl.s;\r\n      var wO=gi('pdcWdO'+h)?gi('pdcWdO'+h).value:'0';\r\n      var wP=gi('pdcWdP'+h)?gi('pdcWdP'+h).value:'0';\r\n      var eO=gi('pdcWeO'+h)?gi('pdcWeO'+h).value:'0';\r\n      var eP=gi('pdcWeP'+h)?gi('pdcWeP'+h).value:'0';\r\n      var inc=gi('pdcRi'+h)?gi('pdcRi'+h).textContent:CS+'0';\r\n      doc.setFillColor.apply(doc,sl.pk?[255,253,245]:[255,255,255]);\r\n      doc.rect(ML,y,TW,7,'F');\r\n      doc.setDrawColor.apply(doc,LGREY); doc.line(ML,y,ML+TW,y);\r\n      doc.setFontSize(8.5); doc.setFont('helvetica',sl.pk?'bold':'normal'); doc.setTextColor.apply(doc,DARK);\r\n      doc.text(pd(h)+':00\\u2013'+pd(sl.e)+':00',ML+2,y+5);\r\n      if(sl.pk){\r\n        doc.setFontSize(6); doc.setFont('helvetica','bold'); doc.setTextColor(146,96,10);\r\n        doc.setFillColor(254,240,199); doc.roundedRect(ML+34,y+1.5,9,4,1,1,'F');\r\n        doc.text('PEAK',ML+38.5,y+4.8,{align:'center'});\r\n      }\r\n      doc.setFontSize(8.5); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,DARK);\r\n      doc.text(wO+'%',c1+30,y+5,{align:'center'}); doc.text(CS+wP,c1+52,y+5,{align:'center'});\r\n      doc.setDrawColor.apply(doc,LGREY); doc.setLineWidth(0.3); doc.line(c2-3,y,c2-3,y+7);\r\n      doc.text(eO+'%',c2+30,y+5,{align:'center'}); doc.text(CS+eP,c2+52,y+5,{align:'center'});\r\n      doc.setTextColor.apply(doc,GREEN); doc.setFont('helvetica','bold');\r\n      doc.text(inc,ML+TW-2,y+5,{align:'right'}); y+=7;\r\n    }\r\n    doc.setDrawColor.apply(doc,LGREY); doc.line(ML,y,ML+TW,y); y+=8;\r\n\r\n    \/\/ Page break if needed\r\n    if(y>200){ doc.addPage(); y=16; }\r\n\r\n    \/\/ Explore & Understand\r\n    var explLines=doc.splitTextToSize(P.exploreText,TW-8);\r\n    var explH=explLines.length*3.8+12;\r\n    doc.setFillColor.apply(doc,LBLUE); doc.setDrawColor(180,210,240); doc.setLineWidth(0.4);\r\n    doc.roundedRect(ML,y,TW,explH,2,2,'FD');\r\n    doc.setFillColor(180,210,240); doc.roundedRect(ML,y,TW,9,2,2,'F'); doc.rect(ML,y+5,TW,4,'F');\r\n    doc.setFontSize(8.5); doc.setFont('helvetica','bold'); doc.setTextColor.apply(doc,NAVY);\r\n    doc.text(P.exploreTitle,ML+4,y+6.2);\r\n    doc.setFontSize(7.5); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,MID);\r\n    doc.text(explLines,ML+4,y+13); y+=explH+4;\r\n\r\n    \/\/ Page break if needed\r\n    if(y>230){ doc.addPage(); y=16; }\r\n\r\n    \/\/ Disclaimer\r\n    var discLines=doc.splitTextToSize(P.disclaimerText,TW-8);\r\n    var discH=discLines.length*3.8+12;\r\n    doc.setFillColor.apply(doc,LYEL); doc.setDrawColor.apply(doc,AMBER); doc.setLineWidth(0.4);\r\n    doc.roundedRect(ML,y,TW,discH,2,2,'FD');\r\n    doc.setFillColor.apply(doc,AMBER); doc.roundedRect(ML,y,TW,9,2,2,'F'); doc.rect(ML,y+5,TW,4,'F');\r\n    doc.setFontSize(8.5); doc.setFont('helvetica','bold'); doc.setTextColor(100,75,10);\r\n    doc.text(P.disclaimer,ML+4,y+6.2);\r\n    doc.setFontSize(7.5); doc.setFont('helvetica','normal'); doc.setTextColor.apply(doc,MID);\r\n    doc.text(discLines,ML+4,y+13); y+=discH+4;\r\n\r\n    \/\/ Footer\r\n    var pH=297;\r\n    doc.setFillColor.apply(doc,NAVY); doc.rect(0,pH-12,CW,12,'F');\r\n    doc.setTextColor.apply(doc,WHITE); doc.setFontSize(8); doc.setFont('helvetica','normal');\r\n    doc.text(P.site,ML,pH-4.5);\r\n    doc.setFont('helvetica','italic');\r\n    doc.text(P.footer,CW-MR,pH-4.5,{align:'right'});\r\n\r\n    doc.save('Padel-Slot-Report_'+stamp+'.pdf');\r\n  };\r\n\r\n  \/* \u2500\u2500 Currency \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  window.pdcChangeCurrency = function(){\r\n    var sv={};\r\n    for(var i=0;i<slots.length;i++){\r\n      var h=slots[i].s;\r\n      sv[h]={wO:parseFloat(gi('pdcWdO'+h).value)||0,eO:parseFloat(gi('pdcWeO'+h).value)||0,\r\n             wP:parseFloat(gi('pdcWdP'+h).value)||0,eP:parseFloat(gi('pdcWeP'+h).value)||0};\r\n    }\r\n    buildTable();\r\n    for(var j=0;j<slots.length;j++){\r\n      var hh=slots[j].s;\r\n      if(sv[hh]){gi('pdcWdO'+hh).value=sv[hh].wO;gi('pdcWeO'+hh).value=sv[hh].eO;\r\n                 gi('pdcWdP'+hh).value=sv[hh].wP;gi('pdcWeP'+hh).value=sv[hh].eP;}\r\n    }\r\n    recalc();\r\n  };\r\n\r\n  \/* \u2500\u2500 Globals for onclick attrs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n\r\n  window.pdcToggle = function(){\r\n    var btn  = gi('pdcToggleBtn');\r\n    var box  = gi('pdcCollapsible');\r\n    var lbl  = gi('pdcToggleBadge');\r\n    var open = box.classList.toggle('pdc-open');\r\n    btn.classList.toggle('pdc-open', open);\r\n    btn.setAttribute('aria-expanded', open ? 'true' : 'false');\r\n    lbl.textContent = open ? T.toggleHide : T.toggleShow;\r\n    if(open && !window._pdcInited){\r\n      window._pdcInited = true;\r\n    }\r\n  };\r\n  window.pdcRecalc=recalc;\r\n\r\n  window.pdcStep=function(id,delta,mn,mx){\r\n    var e=gi(id);\r\n    e.value=Math.min(mx,Math.max(mn,(parseFloat(e.value)||0)+delta));\r\n    recalc();\r\n  };\r\n\r\n  window.pdcStepHours=function(delta){\r\n    var e=gi('pdcHours');\r\n    e.value=Math.min(20,Math.max(8,(parseInt(e.value)||14)+delta));\r\n    window.pdcChangeHours();\r\n  };\r\n\r\n  window.pdcChangeHours=function(){\r\n    for(var i=0;i<slots.length;i++){\r\n      var h=slots[i].s;\r\n      saved[h]={wO:gv('pdcWdO'+h),eO:gv('pdcWeO'+h),wP:gv('pdcWdP'+h),eP:gv('pdcWeP'+h)};\r\n    }\r\n    slots=mkSlots(gh());\r\n    buildTable();\r\n    for(var j=0;j<slots.length;j++){\r\n      var hh=slots[j].s;\r\n      if(saved[hh]){gi('pdcWdO'+hh).value=saved[hh].wO;gi('pdcWeO'+hh).value=saved[hh].eO;\r\n                    gi('pdcWdP'+hh).value=saved[hh].wP;gi('pdcWeP'+hh).value=saved[hh].eP;}\r\n    }\r\n    updateNote(); recalc();\r\n  };\r\n\r\n  window.pdcLoadPreset=loadPreset;\r\n\r\n  \/* \u2500\u2500 Code gate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  var PDF_CODE='1234';\r\n\r\n  window.pdcOpenModal=function(){\r\n    var m=gi('pdcModal');\r\n    m.classList.add('pdc-modal-open');\r\n    var inp=gi('pdcCodeInput');\r\n    inp.value='';\r\n    gi('pdcModalError').style.display='none';\r\n    setTimeout(function(){ inp.focus(); },100);\r\n  };\r\n\r\n  function pdcCloseModal(){ gi('pdcModal').classList.remove('pdc-modal-open'); }\r\n\r\n  \/* \u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n  function init(){\r\n    pdcApplyTranslations();\r\n    var _tb=gi('pdcToggleBadge'); if(_tb) _tb.textContent=T.toggleShow;\r\n    slots=mkSlots(gh());\r\n    buildTable();\r\n    updateNote();\r\n    loadPreset('o');\r\n    \/\/ Wire modal\r\n    gi('pdcModalConfirm').addEventListener('click',function(){\r\n      if(gi('pdcCodeInput').value.trim()===PDF_CODE){\r\n        pdcCloseModal();\r\n        window.pdcToggle();\r\n      } else {\r\n        var err=gi('pdcModalError');\r\n        err.textContent=T.modalError;\r\n        err.style.display='block';\r\n        gi('pdcCodeInput').value='';\r\n        gi('pdcCodeInput').focus();\r\n      }\r\n    });\r\n    gi('pdcCodeInput').addEventListener('keydown',function(e){\r\n      if(e.key==='Enter') gi('pdcModalConfirm').click();\r\n    });\r\n    gi('pdcModal').addEventListener('click',function(e){\r\n      if(e.target===this) pdcCloseModal();\r\n    });\r\n  }\r\n\r\n  if(document.readyState==='loading'){\r\n    document.addEventListener('DOMContentLoaded',init);\r\n  } else {\r\n    init();\r\n  }\r\n\r\n})();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-717e833 elementor-widget elementor-widget-text-editor\" data-id=\"717e833\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Haftungsausschluss:<\/strong><\/p><p>Dieses Tool wurde entwickelt, um allgemeine Sch\u00e4tzungen und Einblicke in die potenzielle Rentabilit\u00e4t auf Grundlage der von Ihnen eingegebenen Daten zu liefern. Die Durchschnittswerte, die Sie in diesen Rechner eingeben, sind das Ergebnis einer detaillierteren Berechnung und dienen als Leitfaden f\u00fcr die Szenariomodellierung. <\/p><p>Die Ergebnisse dienen ausschlie\u00dflich Informationszwecken und stellen keine Finanz-, Rechts- oder Anlageberatung dar. Die tats\u00e4chlichen Einnahmen und Kosten k\u00f6nnen aufgrund von Faktoren variieren, die in diesem Rechner nicht ber\u00fccksichtigt werden, wie beispielsweise Marktbedingungen, unerwartete Ausgaben oder \u00c4nderungen der operativen Strategie. <\/p><p>Die Zahlen f\u00fcr den Gewinn vor Steuern (EBT) und die Kapitalrendite (ROI) sind vereinfachte Projektionen und sollten nicht f\u00fcr kritische Entscheidungsfindungen herangezogen werden, ohne weitere Validierung. Den Benutzern wird empfohlen, Finanzexperten zu konsultieren, um spezifische Gesch\u00e4ftspl\u00e4ne oder Investitionen zu evaluieren. Die Ersteller dieses Tools \u00fcbernehmen keine Verantwortung f\u00fcr Fehler, Auslassungen oder Ergebnisse, die sich aus dessen Verwendung ergeben.  <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25eaed5 elementor-widget elementor-widget-spacer\" data-id=\"25eaed5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-43ee34b7 e-flex e-con-boxed e-con e-parent\" data-id=\"43ee34b7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;shape_divider_bottom&quot;:&quot;tilt&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-shape elementor-shape-bottom\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" d=\"M0,6V0h1000v100L0,6z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ecdc20f elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"4ecdc20f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><font color=\"#092546\"><b>Verwandte<\/b><\/font><br>Inhalte<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-749f3885 elementor-widget elementor-widget-spacer\" data-id=\"749f3885\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b4ef8ae elementor-grid-3 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-card-shadow-yes elementor-posts__hover-gradient elementor-widget elementor-widget-posts\" data-id=\"4b4ef8ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;cards_columns&quot;:&quot;3&quot;,&quot;cards_columns_tablet&quot;:&quot;2&quot;,&quot;cards_columns_mobile&quot;:&quot;1&quot;,&quot;cards_row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:35,&quot;sizes&quot;:[]},&quot;cards_row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;cards_row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"posts.cards\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-posts-container elementor-posts elementor-posts--skin-cards elementor-grid\" role=\"list\">\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-26024 post type-post status-publish format-standard has-post-thumbnail hentry category-finanzierung tag-marktdaten tag-most-popular-posts-de tag-padel-business\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/www.padelcreations.com\/de\/businessplan-fuer-padel\/\" tabindex=\"-1\" ><div class=\"elementor-post__thumbnail\"><img decoding=\"async\" width=\"990\" height=\"553\" src=\"https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/business-plan.jpg\" class=\"attachment-full size-full wp-image-26262\" alt=\"Gesch\u00e4ftsplan f\u00fcr Padel\" srcset=\"https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/business-plan.jpg 990w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/business-plan-600x335.jpg 600w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/business-plan-300x168.jpg 300w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/business-plan-768x429.jpg 768w\" sizes=\"(max-width: 990px) 100vw, 990px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/www.padelcreations.com\/de\/businessplan-fuer-padel\/\" >\n\t\t\t\tGesch\u00e4ftsplan f\u00fcr Padel\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/www.padelcreations.com\/de\/businessplan-fuer-padel\/\" aria-label=\"Mehr \u00fcber Gesch\u00e4ftsplan f\u00fcr Padel\" tabindex=\"-1\" >\n\t\t\tMehr lesen \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-26712 post type-post status-publish format-standard has-post-thumbnail hentry category-finanzierung tag-most-popular-posts-de tag-padel-business\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/www.padelcreations.com\/de\/einkommensquellen-in-einem-padel-center\/\" tabindex=\"-1\" ><div class=\"elementor-post__thumbnail\"><img decoding=\"async\" width=\"860\" height=\"574\" src=\"https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/multiple-income-streams-1.png\" class=\"attachment-full size-full wp-image-26161\" alt=\"Graphic representation of a person surrounded by multiple dollar signs, symbolizing various income streams.\" srcset=\"https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/multiple-income-streams-1.png 860w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/multiple-income-streams-1-600x400.png 600w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/multiple-income-streams-1-300x200.png 300w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/multiple-income-streams-1-768x513.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/www.padelcreations.com\/de\/einkommensquellen-in-einem-padel-center\/\" >\n\t\t\t\tEinkommensquellen in einem Padel-Center\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/www.padelcreations.com\/de\/einkommensquellen-in-einem-padel-center\/\" aria-label=\"Mehr \u00fcber Einkommensquellen in einem Padel-Center\" tabindex=\"-1\" >\n\t\t\tMehr lesen \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-26188 post type-post status-publish format-standard has-post-thumbnail hentry category-finanzierung tag-most-popular-posts-de tag-padel-business\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/www.padelcreations.com\/de\/mit-padel-geld-verdienen\/\" tabindex=\"-1\" ><div class=\"elementor-post__thumbnail\"><img decoding=\"async\" width=\"433\" height=\"245\" src=\"https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/making-money-padel-1.jpg\" class=\"attachment-full size-full wp-image-26173\" alt=\"A yellow tennis ball placed on a pile of coins, illustrating a unique composition.\" srcset=\"https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/making-money-padel-1.jpg 433w, https:\/\/www.padelcreations.com\/wp-content\/uploads\/2023\/03\/making-money-padel-1-300x170.jpg 300w\" sizes=\"(max-width: 433px) 100vw, 433px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/www.padelcreations.com\/de\/mit-padel-geld-verdienen\/\" >\n\t\t\t\tMit Padel Geld verdienen\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/www.padelcreations.com\/de\/mit-padel-geld-verdienen\/\" aria-label=\"Mehr \u00fcber Mit Padel Geld verdienen\" tabindex=\"-1\" >\n\t\t\tMehr lesen \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PADEL CENTER GEWINNRECHNER Dieses Tool erm\u00f6glicht es Ihnen, das Umsatzpotenzial zu analysieren, indem Sie einige Schl\u00fcsselvariablen wie Auslastungsraten, Preisgestaltung und betriebliche Faktoren anpassen. Ob Sie<\/p>\n","protected":false},"author":4,"featured_media":33969,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-35993","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/pages\/35993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/comments?post=35993"}],"version-history":[{"count":54,"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/pages\/35993\/revisions"}],"predecessor-version":[{"id":44410,"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/pages\/35993\/revisions\/44410"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/media\/33969"}],"wp:attachment":[{"href":"https:\/\/www.padelcreations.com\/de\/wp-json\/wp\/v2\/media?parent=35993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}