{"id":7692,"date":"2025-12-21T00:22:30","date_gmt":"2025-12-20T23:22:30","guid":{"rendered":"https:\/\/www.spectar.pl\/?page_id=7692"},"modified":"2025-12-21T02:35:40","modified_gmt":"2025-12-21T01:35:40","slug":"ankieta-abonament","status":"publish","type":"page","link":"https:\/\/www.spectar.pl\/en\/ankieta-abonament\/","title":{"rendered":"Oferta 2026"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"7692\" class=\"elementor elementor-7692\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d0978ea elementor-section-full_width elementor-section-content-top elementor-section-height-default elementor-section-height-default\" data-id=\"d0978ea\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e38e492\" data-id=\"e38e492\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-b76a2e8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b76a2e8\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-7673323\" data-id=\"7673323\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fe479ba elementor-widget elementor-widget-heading\" data-id=\"fe479ba\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.17.0 - 01-11-2023 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">SPECTAR<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-3297173\" data-id=\"3297173\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-067a0ad elementor-widget__width-initial elementor-hidden-desktop elementor-hidden-tablet elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"067a0ad\" data-element_type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"#elementor-action:action=popup:open&settings=eyJpZCI6IjIyOTUiLCJ0b2dnbGUiOmZhbHNlfQ==\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"23\" height=\"18\" viewbox=\"0 0 23 18\"><g id=\"Group_1\" data-name=\"Group 1\" transform=\"translate(-108.5 -358.5)\"><rect id=\"Rectangle_2\" data-name=\"Rectangle 2\" width=\"18\" height=\"3\" transform=\"translate(108.5 376.5) rotate(-90)\"><\/rect><rect id=\"Rectangle_18\" data-name=\"Rectangle 18\" width=\"18\" height=\"3\" transform=\"translate(118.5 376.5) rotate(-90)\"><\/rect><rect id=\"Rectangle_19\" data-name=\"Rectangle 19\" width=\"18\" height=\"3\" transform=\"translate(128.5 376.5) rotate(-90)\"><\/rect><\/g><\/svg>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-4a3cbdd elementor-hidden-tablet elementor-hidden-phone\" data-id=\"4a3cbdd\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1a59a93 elementor-section-full_width elementor-section-height-default elementor-section-height-default elementor-invisible\" data-id=\"1a59a93\" data-element_type=\"section\" data-settings=\"{&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a6c339e\" data-id=\"a6c339e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7ffc15c elementor-widget elementor-widget-shortcode\" data-id=\"7ffc15c\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\">    <style>\n        .hosting-ankieta { max-width: 100%; margin: 40px auto; font-family: Arial, sans-serif; background: #fff; border: 1px solid #ccc; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }\n        .ankieta-header { background: #000; color: #fff; padding: 30px; text-align: center; }\n        .ankieta-header h2 { margin: 0; font-size: 28px; }\n        .progress-container { background: #f5f5f5; padding: 20px; border-bottom: 1px solid #ccc; }\n        .progress-bar { height: 6px; background: #eee; overflow: hidden; }\n        .progress-fill { height: 100%; background: #000; width: 0%; transition: width 0.4s ease; }\n        .progress-text { text-align: center; margin-top: 10px; font-weight: bold; color: #333; }\n        .step { display: none; padding: 40px; background: #fff; }\n        .step.active { display: block; }\n        .domain-card { background: #fff; border: 1px solid #ccc; padding: 30px; margin-bottom: 20px; }\n        .domain-card h3 { margin-top: 0; color: #000; font-size: 24px; border-bottom: 2px solid #000; padding-bottom: 10px; }\n        .packet-option { background: #fff; padding: 20px; margin: 15px 0; border: 1px solid #ccc; cursor: pointer; position: relative; }\n        .packet-option.selected { border: 2px solid #000; background: #f9f9f9; }\n        .packet-price { font-size: 18px; font-weight: bold; color: #000; float: right; text-align: right; }\n        .discount-label { color: green; font-size: 14px; display: block; font-weight: bold; }\n        .packet-details ul { list-style: disc; padding-left: 20px; margin: 10px 0; font-size: 14px; }\n        .buttons { text-align: center; margin-top: 40px; }\n        .hosting-ankieta button { padding: 12px 28px; font-size: 18px; border: 2px solid #000; cursor: pointer; transition: 0.3s; background: #fff; color: #000; margin: 0 10px; }\n        .hosting-ankieta button:hover { background: #000; color: #fff; }\n        .btn-next, .btn-submit { background: #000 !important; color: #fff !important; }\n        input[type=\"email\"] { width: 100%; padding: 15px; font-size: 18px; border: 1px solid #aaa; }\n        .summary-box { background: #f9f9f9; border: 1px solid #ccc; padding: 30px; }\n        .savings-alert { color: #27ae60; font-weight: bold; border: 2px dashed #27ae60; padding: 15px; margin: 20px 0; text-align: center; }\n        .reject-reason { width: 100%; padding: 10px; margin-top: 10px; border: 1px solid #ccc; font-family: inherit; display: none; }\n        .packet-option.selected .reject-reason { display: block; }\n    <\/style>\n\n    <div class=\"hosting-ankieta\" id=\"ankieta-top\">\n        <div class=\"ankieta-header\">\n            <h2>Aktualizacja Abonamentu \u2013 Spectar<\/h2>\n        <\/div>\n        <div class=\"progress-container\">\n            <div class=\"progress-bar\"><div class=\"progress-fill\" id=\"progress_fill\"><\/div><\/div>\n            <div class=\"progress-text\" id=\"progress_text\">Krok 1<\/div>\n        <\/div>\n\n        <div class=\"step active\" id=\"step-email\">\n            <h3 style=\"text-align:center;\">Weryfikacja konta<\/h3>\n            <p style=\"text-align:center;\">Podaj e-mail, na kt\u00f3ry otrzyma\u0142e\u015b wiadomo\u015b\u0107 z linkiem do tej strony:<\/p>\n            <input type=\"email\" id=\"client_email\" list=\"email_suggestions\" placeholder=\"wpisz e-mail...\" autocomplete=\"off\">\n            <datalist id=\"email_suggestions\"><\/datalist>\n            <p id=\"email_error\" style=\"color:#c00; text-align:center; display:none;\">Nie znaleziono aktywnego abonamentu dla tego adresu.<\/p>\n            <div class=\"buttons\">\n                <button class=\"btn-next\" onclick=\"processEmail()\">Dalej<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"step\" id=\"step-intro\">\n            <div style=\"background:#f5f5f5; padding:25px; border:1px solid #ddd; line-height:1.6;\">\n                <strong>Dzi\u0119kujemy, \u017ce jeste\u015bcie z nami!<\/strong><br><br>\n                Od lat wsp\u00f3lnie dbamy o rozw\u00f3j Pa\u0144stwa stron WWW. Aby utrzyma\u0107 najwy\u017csz\u0105 jako\u015b\u0107 wsparcia IT oraz bezpiecze\u0144stwo infrastruktury, od 1 lutego 2026 r. wprowadzamy aktualizacj\u0119 cennika us\u0142ug abonamentowych. Zmiany s\u0105 niewielkie lub w wielu wypadkach \u017cadne. Prosimy jednak zapozna\u0107 si\u0119 z aktualizacj\u0105 cennika us\u0142ug oraz rozwa\u017cy\u0107 rozszerzenie zakresu wsp\u00f3\u0142pracy z Spectar.<br>\n            <\/div>\n            <div class=\"buttons\">\n                <button class=\"btn-next\" onclick=\"showStep('step-domain-0')\">Przejd\u017a do konfiguracji<\/button>\n            <\/div>\n        <\/div>\n\n        <div id=\"domain_steps\"><\/div>\n\n        <div class=\"step\" id=\"step-summary\">\n            <h3 style=\"text-align:center;\">Podsumowanie zmian<\/h3>\n            <div id=\"summary-card\" class=\"summary-box\"><\/div>\n            <div class=\"buttons\">\n                <button id=\"back_from_summary\" onclick=\"\">Wstecz<\/button>\n                <button class=\"btn-submit\" id=\"submit-btn\" onclick=\"submitForm()\">Zatwierdzam zmiany<\/button>\n            <\/div>\n            <p id=\"thank_you\" style=\"display:none; text-align:center; font-size:24px; padding:40px;\">Dzi\u0119kujemy! Twoja decyzja zosta\u0142a zapisana. Skontaktujemy si\u0119 w celu potwierdzenia zmian.<\/p>\n        <\/div>\n    <\/div>\n\n    <script>\n        const clients = {\"koczynski.jaroslaw@howsmart.pl\":{\"domains\":[\"howsmart.pl\"],\"discount\":5,\"curr_price\":250,\"new_base\":399,\"new_full\":699,\"server_fee\":100},\"artur.chmielewski2000@gmail.com\":{\"domains\":[\"ebaroinstall.pl\",\"ebarohouse.pl\"],\"discount\":3,\"curr_price\":150,\"new_base\":189,\"new_full\":399},\"grubaniciaszyte@hotmail.com\":{\"domains\":[\"grubaniciaszyte.pl\"],\"discount\":0,\"curr_price\":250,\"new_base\":399,\"new_full\":599},\"biuro@femiclinic.pl\":{\"domains\":[\"femiclinic.pl\"],\"discount\":0,\"curr_price\":250,\"new_base\":299,\"new_full\":699},\"michal.murdzek@artest.com.pl\":{\"domains\":[\"artest.com.pl\"],\"discount\":0,\"curr_price\":750,\"new_base\":750,\"new_full\":1099,\"server_fee\":0},\"k.maksymowicz@omnifitness.pl\":{\"domains\":[\"omnifitness.pl\",\"thelab.com.pl\"],\"discount\":0,\"curr_price\":250,\"new_base\":250,\"new_full\":399},\"biuro@stolgen.pl\":{\"domains\":[\"stolgen.pl\"],\"discount\":0,\"curr_price\":150,\"new_base\":179,\"new_full\":699,\"server_fee\":39}};\n        const allEmails = [\"koczynski.jaroslaw@howsmart.pl\",\"artur.chmielewski2000@gmail.com\",\"grubaniciaszyte@hotmail.com\",\"biuro@femiclinic.pl\",\"michal.murdzek@artest.com.pl\",\"k.maksymowicz@omnifitness.pl\",\"biuro@stolgen.pl\"];\n        let selectedEmail = '';\n        let choices = {};\n        let domainList = [];\n\n        function scrollToTop() {\n            const el = document.getElementById('ankieta-top');\n            if(el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n        }\n\n        document.getElementById('client_email').addEventListener('input', function() {\n            const val = this.value.toLowerCase();\n            const datalist = document.getElementById('email_suggestions');\n            datalist.innerHTML = '';\n            if (val.length >= 3) {\n                allEmails.forEach(e => {\n                    if (e.includes(val)) {\n                        const opt = document.createElement('option');\n                        opt.value = e;\n                        datalist.appendChild(opt);\n                    }\n                });\n            }\n        });\n\n        function processEmail() {\n            selectedEmail = document.getElementById('client_email').value.trim().toLowerCase();\n            if (!clients[selectedEmail]) {\n                document.getElementById('email_error').style.display = 'block';\n                return;\n            }\n            const client = clients[selectedEmail];\n            domainList = client.domains;\n            const container = document.getElementById('domain_steps');\n            container.innerHTML = '';\n\n            const getPriceHTML = (base, isBaseOption = false) => {\n                let disc = base * (1 - (client.discount \/ 100));\n                let html = '';\n\n                if (client.discount > 0) {\n                    html += `<s>${base} z\u0142<\/s> <span class=\"discount-label\">Twoja cena: ${disc.toFixed(2)} z\u0142 netto\/mc<\/span>`;\n                } else {\n                    html += `<span>${base} z\u0142 netto\/mc<\/span>`;\n                }\n\n                if (isBaseOption && base === client.curr_price) {\n                    html += `<div style=\"color: #27ae60; font-size: 13px; margin-top: 5px; font-weight: bold;\">Cena pozostaje bez zmian<\/div>`;\n                }\n\n                return html;\n            };\n\n            domainList.forEach((domain, idx) => {\n                choices[domain] = { type: 'base', reason: '' };\n                const isLast = idx === domainList.length - 1;\n                \n                container.innerHTML += `\n                    <div class=\"step\" id=\"step-domain-${idx}\">\n                        <div class=\"domain-card\">\n                            <h3>Konfiguracja dla: ${domain}<\/h3>\n                            <p>Obecnie p\u0142acisz za t\u0119 stron\u0119: <strong style=\"text-decoration: underline;\">${client.curr_price} z\u0142 netto\/mc<\/strong><\/p>\n                            \n                            <div class=\"packet-option selected\" id=\"p-base-${idx}\" onclick=\"setChoice('${domain}', 'base', ${idx})\">\n                                <div class=\"packet-price\">${getPriceHTML(client.new_base, true)}<\/div>\n                                <strong>Pakiet Podstawowy (Aktualizacja)<\/strong>\n                                <div class=\"packet-details\">\n                                    <ul>\n                                        <li>Przypomnienie o op\u0142acie za domen\u0119 i certyfikat SSL<\/li>\n                                        <li>Prace IT na stronie do 4h\/ miesi\u0119cznie<\/li>\n                                        <li>Zlecenia graficzne dla strony: 2h\/ miesi\u0119cznie<\/li>\n                                        <li>Regularne aktualizacje plugin\u00f3w WordPress<\/li>\n                                        <li>Backup ca\u0142ej strony na dysku zewn\u0119trznym 1x miesi\u0119cznie<\/li>\n                                        <li>Wsparcie techniczne: 2h\/ miesi\u0119cznie w dni robocze<\/li>\n                                        <li>Licencja edytora Elementor w wersji PRO dla strony<\/li>\n                                        <li><i><b>Dodatkowe<\/b> wsparcie IT w cenie: 79 z\u0142\/h netto<\/i><\/li>\n                                        <li><i><b>Dodatkowe<\/b> zlecenia graficzne dla strony: 119 z\u0142\/h netto<\/i><\/li>\n                                    <\/ul>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"packet-option\" id=\"p-full-${idx}\" onclick=\"setChoice('${domain}', 'full', ${idx})\">\n                                <div class=\"packet-price\">${getPriceHTML(client.new_full)}<\/div>\n                                <strong>Pakiet Pe\u0142na Obs\u0142uga (Premium)<\/strong>\n                                <div class=\"packet-details\">\n                                    <ul>\n                                        <li>Zapewniamy ci\u0105g\u0142o\u015b\u0107 Twojej domeny i certyfikat SSL (op\u0142aty w cenie pakietu)<\/li>\n                                        <li>Prace IT na stronie do 4h\/ miesi\u0119cznie<\/li>\n                                        <li>Zlecenia graficzne dla strony: 2h\/ miesi\u0119cznie<\/li>\n                                        <li>Regularne aktualizacje plugin\u00f3w WordPress<\/li>\n                                        <li>Backup ca\u0142ej strony na dysku zewn\u0119trznym 3x miesi\u0119cznie<\/li>\n                                        <li>Wsparcie priorytetowe 1x\/ miesi\u0119cznie 7 dni w tygodniu<\/li>\n                                        <li>Wsparcie techniczne: 2h\/ miesi\u0119cznie w dni robocze<\/li>\n                                        <li>Licencja edytora Elementor w wersji PRO dla strony<\/li>\n                                        <li><i><b>Dodatkowe<\/b> wsparcie IT w cenie: 59 z\u0142\/h netto<\/i><\/li>\n                                        <li><i><b>Dodatkowe<\/b> zlecenia graficzne dla strony: 79 z\u0142\/h netto<\/i><\/li>\n                                    <\/ul>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"packet-option\" id=\"p-reject-${idx}\" onclick=\"setChoice('${domain}', 'reject', ${idx})\">\n                                <strong>Nie akceptuj\u0119 zmian<\/strong>\n                                <div class=\"packet-details\">\n                                    <p>Wybieraj\u0105c t\u0119 opcj\u0119, rezygnujesz z dotychczasowego abonamentu wsparcia IT dla tej strony.<\/p>\n                                    <textarea class=\"reject-reason\" id=\"reason-${idx}\" placeholder=\"Prosimy o podanie powodu rezygnacji...\" oninput=\"updateReason('${domain}', ${idx})\"><\/textarea>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <div class=\"buttons\">\n                            <button onclick=\"${idx === 0 ? \"showStep('step-intro')\" : \"showStep('step-domain-\" + (idx-1) + \"')\" }\">Wstecz<\/button>\n                            <button class=\"btn-next\" onclick=\"${isLast ? \"showSummary()\" : \"showStep('step-domain-\" + (idx+1) + \"')\" }\">Dalej<\/button>\n                        <\/div>\n                    <\/div>`;\n            });\n\n            document.getElementById('back_from_summary').onclick = function() { showStep('step-domain-' + (domainList.length - 1)); };\n            showStep('step-intro');\n        }\n\n        function setChoice(domain, type, idx) {\n            choices[domain].type = type;\n            document.getElementById(`p-base-${idx}`).classList.toggle('selected', type === 'base');\n            document.getElementById(`p-full-${idx}`).classList.toggle('selected', type === 'full');\n            document.getElementById(`p-reject-${idx}`).classList.toggle('selected', type === 'reject');\n        }\n\n        function updateReason(domain, idx) {\n            choices[domain].reason = document.getElementById(`reason-${idx}`).value;\n        }\n\n        function showSummary() {\n            const client = clients[selectedEmail];\n            let html = '<h4>Zestawienie wybranych opcji:<\/h4><ul>';\n            let totalNew = 0;\n            let totalBaseSum = 0;\n            let allRejected = true;\n\n            for (let dom in choices) {\n                let entry = choices[dom];\n                if (entry.type === 'reject') {\n                    html += `<li><strong>${dom}<\/strong>: <span style=\"color:red;\">Brak akceptacji zmian<\/span> ${entry.reason ? '(Pow\u00f3d: ' + entry.reason + ')' : ''}<\/li>`;\n                    continue;\n                }\n                \n                allRejected = false;\n                let basePrice = (entry.type === 'base') ? client.new_base : client.new_full;\n                let discountedPrice = basePrice * (1 - (client.discount \/ 100));\n                \n                totalNew += discountedPrice;\n                totalBaseSum += basePrice;\n\n                html += `<li><strong>${dom}<\/strong>: Pakiet ${entry.type === 'base' ? 'Podstawowy' : 'Pe\u0142ny'} - ${discountedPrice.toFixed(2)} z\u0142 netto<\/li>`;\n            }\n\n            if (!allRejected && client.hasOwnProperty('server_fee')) {\n                totalNew += client.server_fee;\n                html += `<li><strong>Op\u0142ata za serwer<\/strong>: ${client.server_fee} z\u0142 netto<\/li>`;\n            }\n\n            html += '<\/ul>';\n\n            if (!allRejected) {\n                let totalSavings = totalBaseSum - (totalNew - (client.server_fee || 0));\n                if (totalSavings > 0) {\n                    html += `<div class=\"savings-alert\">Dzi\u0119ki Twoim rabatom indywidualnym oszcz\u0119dzasz \u0142\u0105cznie: ${totalSavings.toFixed(2)} z\u0142 netto miesi\u0119cznie!<\/div>`;\n                }\n                html += `<p style=\"font-size:22px; border-top:2px solid #000; padding-top:10px; color:green;\"><strong>Razem miesi\u0119cznie: ${totalNew.toFixed(2)} z\u0142 netto<\/strong><\/p>`;\n            }\n            \n            document.getElementById('summary-card').innerHTML = html;\n            showStep('step-summary');\n        }\n\n        function showStep(id) {\n            document.querySelectorAll('.step').forEach(s => s.classList.remove('active'));\n            const step = document.getElementById(id);\n            if(step) step.classList.add('active');\n            \n            let currentIdx = id.startsWith('step-domain-') ? parseInt(id.replace('step-domain-', '')) + 2 : (id === 'step-intro' ? 2 : (id === 'step-summary' ? domainList.length + 3 : 1));\n            let totalSteps = domainList.length + 3;\n            document.getElementById('progress_fill').style.width = (currentIdx \/ totalSteps * 100) + '%';\n            document.getElementById('progress_text').innerText = 'Krok ' + currentIdx + ' z ' + totalSteps;\n            \n            scrollToTop();\n        }\n\n        function submitForm() {\n            const btn = document.getElementById('submit-btn');\n            btn.disabled = true; btn.innerText = 'Zatwierdzanie...';\n            \n            const client = clients[selectedEmail];\n            let finalChoices = {};\n            \n            for (let d in choices) {\n                let entry = choices[d];\n                if (entry.type === 'reject') {\n                    finalChoices[d] = { option: 'reject', packet: 'none', price_final: \"0.00\", reason: entry.reason, is_subscription: true };\n                } else {\n                    let basePrice = (entry.type === 'base') ? client.new_base : client.new_full;\n                    let disc = client.discount || 0;\n                    let finalP = basePrice * (1 - (disc \/ 100));\n                    finalChoices[d] = {\n                        option: 'remain', packet: entry.type, price_base: basePrice, price_final: finalP.toFixed(2),\n                        discount_applied: disc + '%', savings: (basePrice - finalP).toFixed(2),\n                        server_fee: client.hasOwnProperty('server_fee') ? client.server_fee : null, is_subscription: true\n                    };\n                }\n            }\n\n            const fd = new URLSearchParams();\n            fd.append('action', 'submit_ankieta_subscription');\n            fd.append('email', selectedEmail);\n            fd.append('choices', JSON.stringify(finalChoices));\n\n            fetch('https:\/\/www.spectar.pl\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                body: fd.toString()\n            }).then(r => r.json()).then(res => {\n                if(res.success) {\n                    document.getElementById('summary-card').style.display = 'none';\n                    document.querySelector('#step-summary .buttons').style.display = 'none';\n                    document.getElementById('thank_you').style.display = 'block';\n                    scrollToTop();\n                } else {\n                    alert('B\u0142\u0105d zapisu.');\n                    btn.disabled = false;\n                    btn.innerText = 'Zatwierdzam zmiany';\n                }\n            });\n        }\n    <\/script>\n    <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>SPECTAR<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"acf":[],"_links":{"self":[{"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/pages\/7692"}],"collection":[{"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/comments?post=7692"}],"version-history":[{"count":10,"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/pages\/7692\/revisions"}],"predecessor-version":[{"id":7749,"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/pages\/7692\/revisions\/7749"}],"wp:attachment":[{"href":"https:\/\/www.spectar.pl\/en\/wp-json\/wp\/v2\/media?parent=7692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}