{"id":1196,"date":"2025-07-06T15:42:32","date_gmt":"2025-07-06T13:42:32","guid":{"rendered":"https:\/\/fragrans.pl\/?page_id=1196"},"modified":"2026-01-16T13:07:06","modified_gmt":"2026-01-16T12:07:06","slug":"kalkulator","status":"publish","type":"page","link":"https:\/\/fragrans.pl\/fr\/kalkulator\/","title":{"rendered":"Calculatrice"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;Baner&#8221; module_class=&#8221;counters&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_enable_image=&#8221;off&#8221; min_height_last_edited=&#8221;off|desktop&#8221; custom_padding=&#8221;||16px|||&#8221; custom_css_free_form=&#8221;selector {||display: flex;||flex-direction: column;||justify-content: center;||}&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row custom_padding_last_edited=&#8221;off|desktop&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||||false|false&#8221; custom_margin_tablet=&#8221;100px||100px||false|false&#8221; custom_margin_phone=&#8221;0px||0px||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;||||false|false&#8221; custom_padding_tablet=&#8221;100px||100px||false|false&#8221; custom_padding_phone=&#8221;||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_heading title=&#8221;Kalkulator&#8221; module_class=&#8221;main-title&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; title_text_align=&#8221;left&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_heading][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; animation_direction=&#8221;left&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p>Kalkulacja dla 1 projektu w ramach zam\u00f3wienia. Je\u015bli potrzebujesz zam\u00f3wi\u0107 wi\u0119cej projekt\u00f3w, zg\u0142o\u015b si\u0119 po indywidualn\u0105 wycen\u0119. Na ko\u0144cu kalkulacji znajdziesz dodatkowe pytania, kt\u00f3re pomog\u0105 uwzgl\u0119dni\u0107 wszystkie dost\u0119pne mo\u017cliwo\u015bci. Skonfiguruj zapytanie, wygeneruj maila z podsumowaniem, dodaj projekt i swoje dodatkowe pytania, a zweryfikujemy kalkulacj\u0119 i podamy szacowany termin realizacji, na obecn\u0105 chwil\u0119.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;24px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;-44px|auto||auto||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<!DOCTYPE html><!-- [et_pb_line_break_holder] --><html lang=\"pl\"><!-- [et_pb_line_break_holder] --><head><!-- [et_pb_line_break_holder] -->    <meta charset=\"UTF-8\"><!-- [et_pb_line_break_holder] -->    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><!-- [et_pb_line_break_holder] -->    <title>Kalkulator Zawieszek Zapachowych &#8211; FRAGRANS<\/title><!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    <!-- Skrypt Tailwind z konfiguracj\u0105 izolacji --><!-- [et_pb_line_break_holder] -->    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script><!-- [et_pb_line_break_holder] -->    <script><!-- [et_pb_line_break_holder] -->        tailwind.config = {<!-- [et_pb_line_break_holder] -->            important: '#fragrans-calc-wrapper', \/\/ Style dzia\u0142aj\u0105 tylko wewn\u0105trz tego ID z wysokim priorytetem<!-- [et_pb_line_break_holder] -->            corePlugins: {<!-- [et_pb_line_break_holder] -->                preflight: false, \/\/ Wy\u0142\u0105cza globalny reset styl\u00f3w, aby nie psu\u0107 strony WordPress<!-- [et_pb_line_break_holder] -->            },<!-- [et_pb_line_break_holder] -->            theme: {<!-- [et_pb_line_break_holder] -->                extend: {<!-- [et_pb_line_break_holder] -->                    fontFamily: {<!-- [et_pb_line_break_holder] -->                        sans: ['Montserrat', 'sans-serif'],<!-- [et_pb_line_break_holder] -->                    }<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    <\/script><!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2pdf.js\/0.10.1\/html2pdf.bundle.min.js\"><\/script><!-- [et_pb_line_break_holder] -->    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    <\/p>\n<style><!-- [et_pb_line_break_holder] -->        \/* IZOLACJA STYL\u00d3W - Styles Scoped to Wrapper *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper {<!-- [et_pb_line_break_holder] -->            \/* Reset podstawowy dla kontenera *\/<!-- [et_pb_line_break_holder] -->            font-family: 'Montserrat', sans-serif;<!-- [et_pb_line_break_holder] -->            background-color: #f5f7fa;<!-- [et_pb_line_break_holder] -->            color: #1f2937; \/* gray-800 *\/<!-- [et_pb_line_break_holder] -->            line-height: 1.5;<!-- [et_pb_line_break_holder] -->            font-size: 16px;<!-- [et_pb_line_break_holder] -->            box-sizing: border-box;<!-- [et_pb_line_break_holder] -->            width: 100%;<!-- [et_pb_line_break_holder] -->            padding: 20px 0; \/* Dodatkowy odst\u0119p od reszty strony *\/<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Reset dla wszystkich element\u00f3w wewn\u0105trz kalkulatora *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper *, <!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper *::before, <!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper *::after {<!-- [et_pb_line_break_holder] -->            box-sizing: border-box;<!-- [et_pb_line_break_holder] -->            border-width: 0;<!-- [et_pb_line_break_holder] -->            border-style: solid;<!-- [et_pb_line_break_holder] -->            border-color: #e5e7eb; \/* gray-200 *\/<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Przywr\u00f3cenie domy\u015blnych styl\u00f3w dla element\u00f3w formularza, kt\u00f3re preflight normalnie obs\u0142uguje *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper input,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper select,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper textarea,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper button {<!-- [et_pb_line_break_holder] -->            font-family: inherit;<!-- [et_pb_line_break_holder] -->            font-size: 100%;<!-- [et_pb_line_break_holder] -->            line-height: inherit;<!-- [et_pb_line_break_holder] -->            margin: 0;<!-- [et_pb_line_break_holder] -->            padding: 0;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper button {<!-- [et_pb_line_break_holder] -->            cursor: pointer;<!-- [et_pb_line_break_holder] -->            background-color: transparent;<!-- [et_pb_line_break_holder] -->            background-image: none;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* Style specyficzne dla kalkulatora *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .gradient-bg {<!-- [et_pb_line_break_holder] -->            background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .card-shadow {<!-- [et_pb_line_break_holder] -->            box-shadow: 0 10px 25px -5px rgba(59, 130, 246, 0.1), 0 10px 10px -5px rgba(59, 130, 246, 0.04);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .input-focus:focus {<!-- [et_pb_line_break_holder] -->            border-color: #3b82f6;<!-- [et_pb_line_break_holder] -->            box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);<!-- [et_pb_line_break_holder] -->            outline: 2px solid transparent;<!-- [et_pb_line_break_holder] -->            outline-offset: 2px;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .option-button.active {<!-- [et_pb_line_break_holder] -->            background-color: #3b82f6;<!-- [et_pb_line_break_holder] -->            color: white;<!-- [et_pb_line_break_holder] -->            border-color: #3b82f6;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        \/* POPRAWKA KOLOR\u00d3W DLA AKTYWNYCH PRZYCISK\u00d3W (WYMUSZENIE BIELI) *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .option-button.active h4,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .option-button.active p,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .option-button.active span,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .option-button.active div {<!-- [et_pb_line_break_holder] -->            color: #ffffff !important;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/* POPRAWKA KOLOR\u00d3W DLA PODSUMOWANIA (WYMUSZENIE BIELI) *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-to-print h3,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-content,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-content div,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-content span,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-content h4,<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-content p {<!-- [et_pb_line_break_holder] -->            color: #ffffff !important;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .fragrance-card.selected {<!-- [et_pb_line_break_holder] -->            background-color: #e0f2fe;<!-- [et_pb_line_break_holder] -->            border-color: #3b82f6;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .fragrance-card.disabled, <!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .shipping-option.disabled {<!-- [et_pb_line_break_holder] -->            opacity: 0.6;<!-- [et_pb_line_break_holder] -->            pointer-events: none;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .highlight-section {<!-- [et_pb_line_break_holder] -->            animation: highlight 2s ease-out;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        @keyframes highlight {<!-- [et_pb_line_break_holder] -->            0% { background-color: transparent; }<!-- [et_pb_line_break_holder] -->            25% { background-color: #dbeafe; }<!-- [et_pb_line_break_holder] -->            100% { background-color: transparent; }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .shipping-option input:checked + label {<!-- [et_pb_line_break_holder] -->            border-color: #3b82f6;<!-- [et_pb_line_break_holder] -->            background-color: #eff6ff;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper #summary-container.sticky-pinned {<!-- [et_pb_line_break_holder] -->            position: absolute;<!-- [et_pb_line_break_holder] -->            top: auto;<!-- [et_pb_line_break_holder] -->            bottom: 0;<!-- [et_pb_line_break_holder] -->            width: 100%;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .small-text {<!-- [et_pb_line_break_holder] -->            font-size: 0.75rem; \/* 12px *\/<!-- [et_pb_line_break_holder] -->            line-height: 1rem; \/* 16px *\/<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .text-gray-600.small-text {<!-- [et_pb_line_break_holder] -->             color: #4b5563; \/* Tailwind gray-600 *\/<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper input[type=\"checkbox\"], <!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper input[type=\"radio\"] {<!-- [et_pb_line_break_holder] -->            width: 1.15rem;<!-- [et_pb_line_break_holder] -->            height: 1.15rem;<!-- [et_pb_line_break_holder] -->            display: inline-block;<!-- [et_pb_line_break_holder] -->            vertical-align: middle;<!-- [et_pb_line_break_holder] -->            background-origin: border-box;<!-- [et_pb_line_break_holder] -->            user-select: none;<!-- [et_pb_line_break_holder] -->            flex-shrink: 0;<!-- [et_pb_line_break_holder] -->            border-width: 1px; \/* Restore border for checkbox *\/<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        \/* Restore border for specific elements *\/<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .border {<!-- [et_pb_line_break_holder] -->            border-width: 1px;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .border-2 {<!-- [et_pb_line_break_holder] -->            border-width: 2px;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .border-t {<!-- [et_pb_line_break_holder] -->            border-top-width: 1px;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .border-l-4 {<!-- [et_pb_line_break_holder] -->            border-left-width: 4px;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        #fragrans-calc-wrapper .border-l-2 {<!-- [et_pb_line_break_holder] -->            border-left-width: 2px;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->    <\/style>\n<p><!-- [et_pb_line_break_holder] --><\/head><!-- [et_pb_line_break_holder] --><body> <!-- Body tag on WP is already present, this is just for structure here --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- WRAPPER START: Wszystko zamkni\u0119te w tym ID dla izolacji --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div id=\"fragrans-calc-wrapper\" class=\"fragrans-iso\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"container mx-auto px-4 py-8 max-w-7xl\"><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"text-center mb-10\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<h1 class=\"text-3xl md:text-4xl font-bold text-gray-800 mb-2 leading-tight\">Kalkulator Personalizowanych Zawieszek<\/h1>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"flex items-center justify-center\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h2 class=\"text-xl md:text-2xl font-medium text-blue-600\">FRAGRANS<\/h2>\n<p><!-- [et_pb_line_break_holder] -->                    <span class=\"mx-2 text-gray-400\">|<\/span><!-- [et_pb_line_break_holder] -->                    <pee class=\"text-gray-600\">Polski producent zawieszek zapachowych od 1998 roku<\/pee><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                 <pee class=\"text-sm text-gray-500 mt-2 leading-relaxed\">Kalkulacja dla 1 projektu w ramach zam\u00f3wienia. Je\u015bli potrzebujesz zam\u00f3wi\u0107 wi\u0119cej projekt\u00f3w, zg\u0142o\u015b si\u0119 po indywidualn\u0105 wycen\u0119. Na ko\u0144cu kalkulacji znajdziesz dodatkowe pytania, kt\u00f3re pomog\u0105 uwzgl\u0119dni\u0107 wszystki dost\u0119pne mo\u017cliwo\u015bci. Skonfiguruj zapytanie, wygneruj maila z podsumowaniem, dodaj projekt i swoje dodatkowe pytania, a zweryfikujemy kalkulacj\u0119 i podamy szacowany termin realizacji, na obecn\u0105 chwil\u0119.<\/pee><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"bg-white rounded-2xl card-shadow p-6 md:p-8 text-left\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"grid grid-cols-1 lg:grid-cols-5 lg:gap-12\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"lg:col-span-3\" id=\"calculator-form\"><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div class=\"mb-8\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4 flex items-center\"><!-- [et_pb_line_break_holder] -->                                <span class=\"gradient-bg text-white rounded-full w-6 h-6 inline-flex items-center justify-center mr-2 text-sm font-bold\">1<\/span><!-- [et_pb_line_break_holder] -->                                Wybierz rodzaj i nak\u0142ad<!-- [et_pb_line_break_holder] -->                            <\/h3>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"grid grid-cols-1 md:grid-cols-3 gap-4 mb-6\"><!-- [et_pb_line_break_holder] -->                                <button id=\"type-standard\" class=\"option-button type-button border border-gray-300 rounded-lg p-4 text-center hover:border-blue-500 transition-colors\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<h4 class=\"font-semibold text-lg mb-1\">Standard<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                                    <pee class=\"text-gray-600 text-sm\">Nas\u0105czenie: 1-3 ml<\/pee><!-- [et_pb_line_break_holder] -->                                <\/button><!-- [et_pb_line_break_holder] -->                                <!-- [et_pb_line_break_holder] -->                                <button id=\"type-premium\" class=\"option-button type-button border border-gray-300 rounded-lg p-4 text-center hover:border-blue-500 transition-colors relative\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div class=\"absolute -top-2 -right-2 bg-yellow-500 text-white text-xs px-2 py-1 rounded-full font-bold\">BEST SELLER<\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<h4 class=\"font-semibold text-lg mb-1\">Premium<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                                    <pee class=\"text-gray-600 text-sm\">Nas\u0105czenie: 2-4 ml<\/pee><!-- [et_pb_line_break_holder] -->                                <\/button><!-- [et_pb_line_break_holder] -->                                <!-- [et_pb_line_break_holder] -->                                <button id=\"type-exclusive\" class=\"option-button type-button border border-gray-300 rounded-lg p-4 text-center hover:border-blue-500 transition-colors\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<h4 class=\"font-semibold text-lg mb-1\">Exclusive<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                                    <pee class=\"text-gray-600 text-sm\">Nas\u0105czenie: 2-5 ml<\/pee><!-- [et_pb_line_break_holder] -->                                <\/button><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"mb-6\"><!-- [et_pb_line_break_holder] -->                                <label for=\"quantity\" class=\"block text-gray-700 mb-2 font-medium\">Wybierz nak\u0142ad<\/label><!-- [et_pb_line_break_holder] -->                                <select id=\"quantity\" class=\"w-full p-3 border border-gray-300 rounded-lg bg-white input-focus focus:outline-none\"><!-- [et_pb_line_break_holder] --><option value=\"100\">100 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"200\">200 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"300\">300 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"400\">400 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"500\">500 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"600\">600 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"700\">700 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"800\">800 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"900\">900 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"1000\">1000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"2000\">2000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"3000\">3000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"4000\">4000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"5000\">5000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"6000\">6000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"7000\">7000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"8000\">8000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"9000\">9000 sztuk<\/option><!-- [et_pb_line_break_holder] --><option value=\"10000\">10 000 sztuk<\/option><!-- [et_pb_line_break_holder] -->                                <\/select><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"fragranceCountInfo\" class=\"mt-2 text-sm text-gray-600\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"extraFragranceInfo\" class=\"mt-1 text-sm text-blue-600 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4 mb-2\"><!-- [et_pb_line_break_holder] -->                                <button id=\"shape-standard\" class=\"option-button shape-button border border-gray-300 rounded-lg p-4 text-center hover:border-blue-500 transition-colors\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<h4 class=\"font-semibold mb-1\">Kszta\u0142t z naszej bazy<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                                    <pee class=\"text-gray-600 text-sm\">W cenie zawieszki<\/pee><!-- [et_pb_line_break_holder] -->                                <\/button><!-- [et_pb_line_break_holder] -->                                <!-- [et_pb_line_break_holder] -->                                <button id=\"shape-custom\" class=\"option-button shape-button border border-gray-300 rounded-lg p-4 text-center hover:border-blue-500 transition-colors\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<h4 class=\"font-semibold mb-1\">W\u0142asny kszta\u0142t<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                                    <pee class=\"text-gray-600 text-sm\">+ 350 z\u0142 netto za nowy wykrojnik<\/pee><!-- [et_pb_line_break_holder] -->                                <\/button><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                             <\/p>\n<div id=\"shape-base-warning\" class=\"small-text mt-2 text-yellow-800 bg-yellow-50 border border-yellow-200 p-3 rounded-lg hidden\"><!-- [et_pb_line_break_holder] -->                                <strong>Uwaga:<\/strong> Je\u015bli wybierasz kszta\u0142t z bazy, kt\u00f3ry ma znak BIG SIZE \u2013 w zale\u017cno\u015bci od wielko\u015bci b\u0119dzie obejmowa\u0142o dop\u0142at\u0119, kt\u00f3rej nie uwzgl\u0119dnia ta wycena. Wysy\u0142aj\u0105c maila z zapytaniem podaj numer wykrojnika, a otrzymasz zaktualizowan\u0105 ofert\u0119. Dop\u0142ata Big Size jest uzale\u017cniona od ilo\u015bci u\u017cytk\u00f3w wykrojnika.<!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"shape-custom-warning\" class=\"small-text mt-2 text-yellow-800 bg-yellow-50 border border-yellow-200 p-3 rounded-lg hidden\"><!-- [et_pb_line_break_holder] -->                               <strong>Uwaga:<\/strong> Je\u015bli nowy wykrojnik b\u0119dzie mia\u0142 rozmiar wi\u0119kszy ni\u017c 94&#215;69 mm &#8211; podaj rozmiary planowane, aby oszacowa\u0107 dop\u0142at\u0119 do realizacji BIG SIZE.<!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <!-- [et_pb_line_break_holder] -->                        <\/p>\n<div id=\"fragrance-section\" class=\"mb-8\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4 flex items-center\"><!-- [et_pb_line_break_holder] -->                                <span class=\"gradient-bg text-white rounded-full w-6 h-6 inline-flex items-center justify-center mr-2 text-sm font-bold\">2<\/span><!-- [et_pb_line_break_holder] -->                                Wybierz zapachy<!-- [et_pb_line_break_holder] -->                            <\/h3>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"mb-4 bg-gray-50 p-3 rounded-lg border border-gray-200\"><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div class=\"flex items-center\"><!-- [et_pb_line_break_holder] -->                                    <input type=\"checkbox\" id=\"whiteBackground\" class=\"text-blue-600 rounded focus:ring-blue-500 mr-2\"><!-- [et_pb_line_break_holder] -->                                    <label for=\"whiteBackground\" class=\"text-gray-700 font-medium\">Czy planujesz zawieszk\u0119 na bia\u0142ym tle?<\/label><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                             <\/p>\n<div id=\"white-background-warning\" class=\"mt-2 mb-4 small-text text-yellow-800 bg-yellow-50 border border-yellow-200 p-3 rounded-lg hidden\"><!-- [et_pb_line_break_holder] -->                               <pee><strong>Uwaga:<\/strong> Sugerujemy zapachy z poni\u017cszej kategorii, zapachy spoza kategorii BEZBARWNE mog\u0105 zmieni\u0107 kolor t\u0142a.<\/pee><!-- [et_pb_line_break_holder] -->                               <pee id=\"white-background-extra-warning\" class=\"text-red-600 font-semibold hidden mt-2\">Wyb\u00f3r zapachu, kt\u00f3rego kompozycja nie jest bezbarwna, nie podlega p\u00f3\u017aniejszym reklamacjom.<\/pee><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"flex flex-col gap-2 mb-4\"><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div class=\"grid grid-cols-4 gap-2\"><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"A\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Grupa A<\/button><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"B\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Grupa B<\/button><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"C\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Grupa C<\/button><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"D\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Grupa D<\/button><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                 <\/p>\n<div class=\"grid grid-cols-4 gap-2\"><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"all\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Wszystkie<\/button><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"colorless\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Bezbarwne<\/button><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"strong\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Silne<\/button><!-- [et_pb_line_break_holder] -->                                    <button data-filter=\"delicate\" class=\"filter-btn px-3 py-2 rounded-lg text-sm bg-gray-200 text-gray-700 transition-colors hover:bg-gray-300\">Delikatne<\/button><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"fragranceContainer\" class=\"grid grid-cols-1 md:grid-cols-3 gap-4\"><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div id=\"selected-fragrances-section\" class=\"mb-8\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4 flex items-center\"><!-- [et_pb_line_break_holder] -->                                <span class=\"gradient-bg text-white rounded-full w-6 h-6 inline-flex items-center justify-center mr-2 text-sm font-bold\">3<\/span><!-- [et_pb_line_break_holder] -->                                Dopasuj wybrane zapachy<!-- [et_pb_line_break_holder] -->                            <\/h3>\n<p><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"selectedFragrancesList\" class=\"space-y-4\"><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"quantityWarning\" class=\"mt-4 p-3 rounded-lg hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"noFragranceWarning\" class=\"mt-4 bg-yellow-50 border-l-4 border-yellow-400 p-4 text-yellow-800 hidden\"><!-- [et_pb_line_break_holder] -->                                <pee><strong>Uwaga!<\/strong> Nie wybrano \u017cadnego zapachu &#8211; poni\u017csza wycena obejmuje suche zawieszki. Dodaj zapach, aby przygotowa\u0107 pe\u0142n\u0105 kalkulacj\u0119.<\/pee><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div class=\"mb-8\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4 flex items-center\"><!-- [et_pb_line_break_holder] -->                                <span class=\"gradient-bg text-white rounded-full w-6 h-6 inline-flex items-center justify-center mr-2 text-sm font-bold\">4<\/span><!-- [et_pb_line_break_holder] -->                                Opcje dodatkowe<!-- [et_pb_line_break_holder] -->                            <\/h3>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6\"><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div class=\"flex items-center mb-3\"><!-- [et_pb_line_break_holder] -->                                        <input type=\"checkbox\" id=\"blister\" class=\"text-blue-600 rounded focus:ring-blue-500 mr-2\"><!-- [et_pb_line_break_holder] -->                                        <label for=\"blister\" class=\"text-gray-700 font-medium\">Blister<\/label><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <pee id=\"blister-info-text\" class=\"small-text text-gray-600 ml-7\">Zwi\u0119ksza powierzchni\u0119 reklamow\u0105 zawieszki. Je\u015bli b\u0119dzie potrzebny nowy kszta\u0142t blistra, dojdzie dodatkowy koszt &#8211; wycena indywidualna uzale\u017cniona od wymiaru i nak\u0142adu zam\u00f3wienia. Blistry do wyboru znajdziesz w bazie wykrojnik\u00f3w &#8211; link po prawo, pkt.1. Kalkulacja ta obejmuje 1 wz\u00f3r blistra dla ca\u0142ego zam\u00f3wienia, wi\u0119ksza ilo\u015b\u0107 projekt\u00f3w podlega indywidualnej wycenie.<\/pee><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                    <label for=\"mainRubberColor\" class=\"block text-gray-700 mb-2 font-medium\">Kolor gumki<\/label><!-- [et_pb_line_break_holder] -->                                    <select id=\"mainRubberColor\" class=\"w-full p-3 border border-gray-300 rounded-lg bg-white input-focus focus:outline-none\"><\/select><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div id=\"multiColorRubberContainer\" class=\"mt-3 hidden\"><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div class=\"flex items-center\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"checkbox\" id=\"multiColorRubber\" class=\"text-blue-600 rounded focus:ring-blue-500 mr-2\"><!-- [et_pb_line_break_holder] -->                                            <label for=\"multiColorRubber\" class=\"text-gray-700 font-medium\">Przypisz r\u00f3\u017cne kolory gumek do zapach\u00f3w<\/label><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <pee id=\"multiColorRubber-message\" class=\"text-sm text-blue-600 mt-2 hidden\"><\/pee><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"bg-gray-900 text-white rounded-lg p-4\"><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div class=\"flex items-center\"><!-- [et_pb_line_break_holder] -->                                    <input type=\"checkbox\" id=\"blackBackground\" class=\"text-blue-400 rounded focus:ring-blue-500 bg-gray-700 border-gray-600 mr-3\"><!-- [et_pb_line_break_holder] -->                                    <label for=\"blackBackground\" class=\"text-gray-200 font-medium\">Czy t\u0142o Twojej zawieszki jest czarne?<\/label><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"blackDeLuxContainer\" class=\"mt-4 pt-4 border-t border-gray-700 hidden\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div class=\"bg-gray-100 text-gray-900 p-4 rounded-lg border-2 border-black\"><!-- [et_pb_line_break_holder] -->                                         <pee class=\"text-sm text-gray-700 mb-3\"><strong>Wa\u017cne:<\/strong> Kolor czarny bez uszlachetnienia mo\u017ce po nas\u0105czeniu wpada\u0107 w odcienie granatu. Aby zagwarantowa\u0107 g\u0142\u0119bok\u0105 czer\u0144, zalecamy opcj\u0119 BLACK DE LUX. Projekt w tej opcji musi by\u0107 edytowalny: czarne t\u0142o nie mo\u017ce by\u0107 bitmap\u0105, musi by\u0107 przygotowane w CMYK, a czcionki zamienione na krzywe. Za\u0142\u0105cz projekt wysy\u0142aj\u0105c kalkulacj\u0119 do weryfikacji, a sprawdzimy, czy ta opcja jest mo\u017cliwa dla tego projektu.<\/pee><!-- [et_pb_line_break_holder] -->                                        <pee class=\"mb-2 font-medium\">Czy chcesz skorzysta\u0107 z opcji BLACK DE LUX?<\/pee><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div class=\"flex gap-4 mb-4\"><!-- [et_pb_line_break_holder] -->                                            <label class=\"flex items-center\"><input type=\"radio\" name=\"blackDeLuxChoice\" value=\"yes\" class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Tak<\/span><\/label><!-- [et_pb_line_break_holder] -->                                            <label class=\"flex items-center\"><input type=\"radio\" name=\"blackDeLuxChoice\" value=\"no\" checked class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Nie<\/span><\/label><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div id=\"blackDeLuxSidesContainer\" class=\"hidden\"><!-- [et_pb_line_break_holder] -->                                            <pee class=\"mb-2 font-medium\">Na ilu stronach jest czarne t\u0142o?<\/pee><!-- [et_pb_line_break_holder] -->                                            <\/p>\n<div class=\"flex gap-4\"><!-- [et_pb_line_break_holder] -->                                                <label class=\"flex items-center\"><input type=\"radio\" name=\"blackDeLuxSides\" value=\"1\" checked class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>1 strona<\/span><\/label><!-- [et_pb_line_break_holder] -->                                                <label class=\"flex items-center\"><input type=\"radio\" name=\"blackDeLuxSides\" value=\"2\" class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>2 strony<\/span><\/label><!-- [et_pb_line_break_holder] -->                                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div class=\"mb-8\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4 flex items-center\"><!-- [et_pb_line_break_holder] -->                                <span class=\"gradient-bg text-white rounded-full w-6 h-6 inline-flex items-center justify-center mr-2 text-sm font-bold\">5<\/span><!-- [et_pb_line_break_holder] -->                                Wybierz opcj\u0119 dostawy<!-- [et_pb_line_break_holder] -->                            <\/h3>\n<p><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"shipping-info\" class=\"mb-3 text-sm text-gray-600\">Wybierz nak\u0142ad, aby zobaczy\u0107 opcje dostawy.<\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"shipping-options\" class=\"grid grid-cols-1 md:grid-cols-2 gap-4\"><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                         <!-- Pytania dodatkowe Section --><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div id=\"additional-questions-section\" class=\"mb-8\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4 flex items-center\"><!-- [et_pb_line_break_holder] -->                                <span class=\"gradient-bg text-white rounded-full w-6 h-6 inline-flex items-center justify-center mr-2 text-sm font-bold\">6<\/span><!-- [et_pb_line_break_holder] -->                                Pytania dodatkowe<!-- [et_pb_line_break_holder] -->                            <\/h3>\n<p><!-- [et_pb_line_break_holder] -->                            <pee class=\"small-text text-gray-600 mb-6\">Zaznacz wszystko co dotyczy tej kalkulacji, a uwzgl\u0119dnimy to w odpowiedzi na zapytanie.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"space-y-6\"><!-- [et_pb_line_break_holder] -->                                <!-- Project Count --><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                    <label class=\"block text-gray-700 mb-2 font-medium\">Liczba projekt\u00f3w zawieszki<\/label><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div class=\"flex gap-4\"><!-- [et_pb_line_break_holder] -->                                        <label class=\"flex items-center\"><input type=\"radio\" name=\"projectCount\" value=\"1\" checked class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>1 projekt<\/span><\/label><!-- [et_pb_line_break_holder] -->                                        <label class=\"flex items-center\"><input type=\"radio\" name=\"projectCount\" value=\"2\" class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>2 projekty<\/span><\/label><!-- [et_pb_line_break_holder] -->                                        <label class=\"flex items-center\"><input type=\"radio\" name=\"projectCount\" value=\"more\" class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Wi\u0119cej projekt\u00f3w<\/span><\/label><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div id=\"project-count-info\" class=\"small-text text-gray-600 mt-2\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div id=\"project-count-more-warning\" class=\"small-text text-red-600 mt-2 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <!-- [et_pb_line_break_holder] -->                                <!-- Additional questions for multi-project --><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"multi-project-questions\" class=\"hidden space-y-6 pl-4 border-l-2 border-gray-200\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <label class=\"block text-gray-700 mb-2 font-medium\">Czy projekty maj\u0105 ten sam kszta\u0142t?<\/label><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div class=\"flex gap-4\"><!-- [et_pb_line_break_holder] -->                                            <label class=\"flex items-center\"><input type=\"radio\" name=\"sameShape\" value=\"yes\" checked class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Tak<\/span><\/label><!-- [et_pb_line_break_holder] -->                                            <label class=\"flex items-center\"><input type=\"radio\" name=\"sameShape\" value=\"no\" class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Nie<\/span><\/label><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <pee id=\"same-shape-info\" class=\"small-text text-gray-600 mt-2\"><\/pee><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div id=\"same-shape-no-warning\" class=\"small-text text-red-600 mt-2 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div id=\"shapes-from-base-question\" class=\"hidden\"><!-- [et_pb_line_break_holder] -->                                        <label class=\"block text-gray-700 mb-2 font-medium\">Czy wszystkie kszta\u0142ty s\u0105 z bazy?<\/label><!-- [et_pb_line_break_holder] -->                                         <\/p>\n<div class=\"flex gap-4\"><!-- [et_pb_line_break_holder] -->                                            <label class=\"flex items-center\"><input type=\"radio\" name=\"allShapesFromBase\" value=\"yes\" checked class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Tak<\/span><\/label><!-- [et_pb_line_break_holder] -->                                            <label class=\"flex items-center\"><input type=\"radio\" name=\"allShapesFromBase\" value=\"no\" class=\"text-blue-600 focus:ring-blue-500 mr-2\"> <span>Nie<\/span><\/label><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <pee id=\"all-shapes-from-base-info\" class=\"small-text text-gray-600 mt-2\"><\/pee><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div id=\"all-shapes-from-base-no-warning\" class=\"small-text text-red-600 mt-2 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                                <!-- Always visible checkboxes --><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"always-visible-questions\" class=\"space-y-4\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div id=\"big-size-question\" class=\"hidden\"><!-- [et_pb_line_break_holder] -->                                         <\/p>\n<div class=\"flex items-start\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"checkbox\" id=\"bigSize\" class=\"mt-1 text-blue-600 rounded focus:ring-blue-500 mr-3\"><!-- [et_pb_line_break_holder] -->                                            <\/p>\n<div class=\"\"><!-- [et_pb_line_break_holder] -->                                                <label for=\"bigSize\" class=\"text-gray-700 font-medium\">Big size<\/label><!-- [et_pb_line_break_holder] -->                                                <pee class=\"small-text text-gray-600\">Zaznacz, je\u015bli wybrany kszta\u0142t z bazy ma znak BIG SIZE, w mailu pami\u0119taj o podaniu numeru wykrojnika &#8211; poniewa\u017c w zale\u017cno\u015bci od wielko\u015bci s\u0105 r\u00f3\u017cne dop\u0142aty do zawieszki, zale\u017cne tak\u017ce od rodzaju zawieszki.<\/pee><!-- [et_pb_line_break_holder] -->                                                <\/p>\n<div id=\"big-size-warning\" class=\"small-text text-red-600 mt-1 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div class=\"flex items-start\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"checkbox\" id=\"specificDeadline\" class=\"mt-1 text-blue-600 rounded focus:ring-blue-500 mr-3\"><!-- [et_pb_line_break_holder] -->                                            <\/p>\n<div class=\"\"><!-- [et_pb_line_break_holder] -->                                                <label for=\"specificDeadline\" class=\"font-medium text-gray-700\">Specyficzny termin realizacji<\/label><!-- [et_pb_line_break_holder] -->                                                <pee class=\"small-text text-gray-600\">Zaznacz, je\u015bli zawieszki s\u0105 potrzebne na konkretny termin np. targ\u00f3w lub innego wydarzenia &#8211; w tre\u015bci maila dopisz kiedy zawieszki musz\u0105 by\u0107 u Ciebie, standardowo podajemy pierwszy wolny termin na produkcji, je\u015bli zam\u00f3wienie zostanie zrealizowane przed czasem, poinformujemy o tym przed wysy\u0142k\u0105. Po zatwierdzeniu zam\u00f3wienia nie ma mo\u017cliwo\u015bci przyspieszenia na \u017cyczenie klienta.<\/pee><!-- [et_pb_line_break_holder] -->                                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                         <\/p>\n<div class=\"flex items-start\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"checkbox\" id=\"fragranceSampler\" class=\"mt-1 text-blue-600 rounded focus:ring-blue-500 mr-3\"><!-- [et_pb_line_break_holder] -->                                            <\/p>\n<div class=\"\"><!-- [et_pb_line_break_holder] -->                                                <label for=\"fragranceSampler\" class=\"font-medium text-gray-700\">Pr\u00f3bnik zapach\u00f3w<\/label><!-- [et_pb_line_break_holder] -->                                                <pee class=\"small-text text-gray-600\">Zaznacz, je\u015bli chcesz zam\u00f3wi\u0107 pr\u00f3bnik zapach\u00f3w i przyk\u0142adowe realizacje do przetestowania przed ostatecznym z\u0142o\u017ceniem zam\u00f3wienia. Koszt pr\u00f3bnika wynosi 35 z\u0142 netto, podaj w tre\u015bci maila dane do faktury z NIP-em, dane do wysy\u0142ki i telefon dla kuriera, a zwrotnie z potwierdzeniem kalkulacji wy\u015blemy proform\u0119 do op\u0142acenia za wysy\u0142k\u0119 pr\u00f3bnik\u00f3w.<\/pee><!-- [et_pb_line_break_holder] -->                                                <\/p>\n<div id=\"fragrance-sampler-warning\" class=\"small-text text-red-600 mt-1 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                                <!-- Separator Line --><!-- [et_pb_line_break_holder] -->                                <\/p>\n<hr class=\"my-6 border-gray-200\"><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                                <!-- Blister options (MOVED HERE) --><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"blister-options-container\" class=\"hidden space-y-4\"><!-- [et_pb_line_break_holder] -->                                    <label class=\"block text-gray-700 mb-2 font-medium\">Opcje blistra<\/label><!-- [et_pb_line_break_holder] -->                                     <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <label class=\"flex items-center\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"radio\" name=\"blisterType\" value=\"single\" checked class=\"text-blue-600 focus:ring-blue-500 mr-2\"><!-- [et_pb_line_break_holder] -->                                            <span class=\"ml-2\">Jeden wz\u00f3r blistra<\/span><!-- [et_pb_line_break_holder] -->                                        <\/label><!-- [et_pb_line_break_holder] -->                                        <pee class=\"small-text text-gray-600 ml-6\">Bez wzgl\u0119du na ilo\u015b\u0107 projekt\u00f3w zawieszki czy wybrany zapach b\u0119dzie 1 projekt blistra. Nie wymaga dop\u0142aty.<\/pee><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div class=\"flex items-start\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"radio\" name=\"blisterType\" value=\"multiple\" class=\"mt-1 text-blue-600 focus:ring-blue-500 mr-3\"><!-- [et_pb_line_break_holder] -->                                            <\/p>\n<div class=\"\"><!-- [et_pb_line_break_holder] -->                                                <label for=\"blisterType_multiple\" class=\"font-medium text-gray-700\">Wi\u0119ksza ilo\u015b\u0107 wzor\u00f3w blistra<\/label><!-- [et_pb_line_break_holder] -->                                                <pee class=\"small-text text-gray-600\">Je\u015bli potrzebujesz wi\u0119kszej ilo\u015bci projekt\u00f3w blistra, koszt blistr\u00f3w b\u0119dzie zmieniony &#8211; podaj ilo\u015b\u0107 wzor\u00f3w blistra w mailu i nak\u0142ady dla poszczeg\u00f3lnych wzor\u00f3w, a zaktualizujemy wycen\u0119. Szacunkowo mo\u017cna zweryfikowa\u0107 w podsumowaniu cen\u0119 jednostkow\u0105 blistra wybieraj\u0105c nak\u0142ad ca\u0142kowity r\u00f3wny poszczeg\u00f3lnym nak\u0142adom projekt\u00f3w blistra.<\/pee><!-- [et_pb_line_break_holder] -->                                                <\/p>\n<div id=\"blister-type-multiple-warning\" class=\"small-text text-red-600 mt-1 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                         <\/p>\n<div class=\"flex items-start\"><!-- [et_pb_line_break_holder] -->                                            <input type=\"checkbox\" id=\"newBlisterShape\" class=\"mt-1 text-blue-600 rounded focus:ring-blue-500 mr-3\"><!-- [et_pb_line_break_holder] -->                                            <\/p>\n<div class=\"\"><!-- [et_pb_line_break_holder] -->                                                <label for=\"newBlisterShape\" class=\"font-medium text-gray-700\">Nowy kszta\u0142t blistra<\/label><!-- [et_pb_line_break_holder] -->                                                <pee class=\"small-text text-gray-600\">Zaznacz, je\u015bli potrzebujesz niestandardowy wymiar blistra, kt\u00f3rego nie ma w naszej bazie, podaj w mailu wymiar ca\u0142kowity roz\u0142o\u017conego blistra.<\/pee><!-- [et_pb_line_break_holder] -->                                                <\/p>\n<div id=\"new-blister-shape-warning\" class=\"small-text text-red-600 mt-1 hidden\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"lg:col-span-2 relative\"><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div id=\"summary-container\" class=\"sticky top-8 space-y-6\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div class=\"gradient-bg rounded-xl p-6 text-white\" id=\"summary-to-print\"><!-- [et_pb_line_break_holder] -->                                <\/p>\n<h3 class=\"text-xl font-semibold mb-4\">Podsumowanie<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"summary-content\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div class=\"bg-white bg-opacity-10 rounded-lg p-4 mb-4\"><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<h4 class=\"font-medium mb-3\">Specyfikacja zam\u00f3wienia<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                                        <\/p>\n<div id=\"order-specification\" class=\"space-y-2 text-sm\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div id=\"cost-summary\" class=\"space-y-3\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div id=\"summary-error\" class=\"hidden text-center font-bold p-4 bg-red-100 text-red-700 rounded-lg\"><!-- [et_pb_line_break_holder] -->                                    Popraw b\u0142\u0119dy w formularzu, aby zobaczy\u0107 podsumowanie.<!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <!-- [et_pb_line_break_holder] -->                            <\/p>\n<div id=\"how-to-order-section\" class=\"bg-gray-50 border border-gray-200 rounded-xl p-6\"><!-- [et_pb_line_break_holder] -->                                <\/p>\n<h3 class=\"text-lg font-semibold text-gray-800 mb-4\">Jak zam\u00f3wi\u0107?<\/h3>\n<p><!-- [et_pb_line_break_holder] -->                                <\/p>\n<div class=\"space-y-4 text-sm text-gray-700\"><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <pee class=\"font-medium\">1. Wybierz wykrojnik z bazy<\/pee><!-- [et_pb_line_break_holder] -->                                        <a href=\"https:\/\/drive.google.com\/drive\/folders\/1xJGxC6GGkmTj_OaRZOadZlSWgIVEwCE_?usp=drive_link\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 hover:underline\">Dost\u0119pny TUTAJ \u00bb<\/a><!-- [et_pb_line_break_holder] -->                                        <pee class=\"small-text text-gray-600 mt-1\">Wybierz kszta\u0142t, pobierz odpowiedni\u0105 paczk\u0119 wykrojnik\u00f3w, zaimportuj j\u0105 do programu graficznego i wklej sw\u00f3j projekt do gotowego szablonu &#8211; nie zmieniaj nic w uk\u0142adzie szablonu, poniewa\u017c plik nie przejdzie automatycznej weryfikacji. Je\u015bli masz z tym problem &#8211; napisz do nas, a wy\u015blemy indywidualny wykrojnik lub przygotujemy wycen\u0119 prostego projektu z przes\u0142anych materia\u0142\u00f3w.<\/pee><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <pee class=\"font-medium\">2. Przygotuj projekt<\/pee><!-- [et_pb_line_break_holder] -->                                        <a href=\"https:\/\/drive.google.com\/drive\/folders\/16-LTm6RyR6ML6JbUvQrOUWDnr5xptXfS?usp=drive_link\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 hover:underline\">Pobierz wytyczne przygotowania projektu \u00bb<\/a><!-- [et_pb_line_break_holder] -->                                        <pee class=\"small-text text-gray-600 mt-1\">Tutaj mo\u017cesz pobra\u0107 regulamin wsp\u00f3\u0142pracy, aktualny katalog firmy, kolory gumek oraz graficzny przewodnik przygotowania projektu, kt\u00f3ry pomo\u017ce unikn\u0105\u0107 najcz\u0119stszych b\u0142\u0119d\u00f3w.<\/pee><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                     <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <pee class=\"font-medium\">3. Gotowe projekty<\/pee><!-- [et_pb_line_break_holder] -->                                        <a href=\"https:\/\/fragrans.pl\/gotowe-projekty\/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-blue-600 hover:underline\">Zobacz gotowe projekty na naszej stronie \u00bb<\/a><!-- [et_pb_line_break_holder] -->                                        <pee class=\"small-text text-gray-600 mt-1\">Je\u015bli nie masz grafika, mo\u017cesz wybra\u0107 jeden z tych projekt\u00f3w, a my bezp\u0142atnie podmienimy w nich logo i tekst (bez dodatkowych zmian graficznych).<\/pee><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                        <pee class=\"font-medium\">4. Wy\u015blij zapytanie<\/pee><!-- [et_pb_line_break_holder] -->                                        <pee class=\"small-text text-gray-600\">Sprawd\u017a parametry konfiguracji i kliknij przycisk poni\u017cej, aby przes\u0142a\u0107 kalkulacj\u0119 do weryfikacji. Mo\u017cesz za\u0142\u0105czy\u0107 do maila projekt zawieszki i dodatkowe pytania.<\/pee><!-- [et_pb_line_break_holder] -->                                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->               <!-- Call to Action --><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"mt-8 flex justify-end\"><!-- [et_pb_line_break_holder] -->                                   <a href=\"mailto:zawieszki@fragrans.pl\" id=\"contactButton\" class=\"gradient-bg text-white font-medium py-3 px-8 rounded-lg hover:opacity-90 transition-opacity\"><!-- [et_pb_line_break_holder] -->                        Wy\u015blij zapytanie<!-- [et_pb_line_break_holder] -->                    <\/a><!-- [et_pb_line_break_holder] -->                    <!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p> <!-- WRAPPER END --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->document.addEventListener('DOMContentLoaded', function() {<!-- [et_pb_line_break_holder] -->    \/\/ --- DATA ---<!-- [et_pb_line_break_holder] -->    const fragrances = [<!-- [et_pb_line_break_holder] -->        { id: 'piernik', name: 'Piernik', group: 'A', price: 0.12, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'roza', name: 'R\u00f3\u017ca', group: 'A', price: 0.12, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'wisnia', name: 'Wi\u015bnia', group: 'A', price: 0.12, tags: { isStrong: false, isDelicate: true, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'ocean', name: 'Ocean', group: 'A', price: 0.12, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'new_car', name: 'New Car', group: 'A', price: 0.12, tags: { isStrong: true, isDelicate: false, isColorless: true, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'guma_balonowa', name: 'Guma Balonowa', group: 'B', price: 0.15, tags: { isStrong: true, isDelicate: false, isColorless: true, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'jablko', name: 'Jab\u0142ko', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'exclusive_car', name: 'Exclusive Car', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'v8_black', name: 'V8\/Black', group: 'B', price: 0.15, tags: { isStrong: true, isDelicate: false, isColorless: true, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'czekolada_pomarancza', name: 'Czekolada z Pomara\u0144cz\u0105', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'mieta', name: 'Mi\u0119ta', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'truskawka', name: 'Truskawka', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'zielona_herbata', name: 'Zielona Herbata', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'pomarancza', name: 'Pomara\u0144cza', group: 'B', price: 0.15, tags: { isStrong: true, isDelicate: false, isColorless: false, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'owoce_lesne', name: 'Owoce Le\u015bne', group: 'B', price: 0.15, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'jablko_cynamon', name: 'Jab\u0142ko Cynamon', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'mango', name: 'Mango', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'kwiatowy', name: 'Kwiatowy', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'ck_1', name: 'CK-1', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'wanilia', name: 'Wanilia', group: 'C', price: 0.18, tags: { isStrong: true, isDelicate: false, isColorless: false, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'lawenda', name: 'Lawenda', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'bergamotka', name: 'Bergamotka', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: true, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'cytryna', name: 'Cytryna', group: 'C', price: 0.18, tags: { isStrong: true, isDelicate: false, isColorless: true, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'oriental', name: 'Oriental', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'lesny', name: 'Le\u015bny', group: 'C', price: 0.18, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'blue', name: 'Blue (damski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'ecstasy', name: 'Ecstasy (damski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'je_taime', name: 'Je T\\'aime (damski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'amour', name: 'Amour (damski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'mome', name: 'Mome (damski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: true, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: '1_dollar', name: '1 Dollar (m\u0119ski)', group: 'D', price: 0.25, tags: { isStrong: true, isDelicate: false, isColorless: false, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'class', name: 'Class (m\u0119ski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->        { id: 'denizo', name: 'Denizo (m\u0119ski)', group: 'D', price: 0.25, tags: { isStrong: true, isDelicate: false, isColorless: false, specialNote: '[silny zapach]' } },<!-- [et_pb_line_break_holder] -->        { id: 'feel_the_night', name: 'Feel The Night (m\u0119ski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: '[\u017c\u00f3\u0142ty kolor]' } },<!-- [et_pb_line_break_holder] -->        { id: 'moi', name: 'Moi (m\u0119ski)', group: 'D', price: 0.25, tags: { isStrong: false, isDelicate: false, isColorless: false, specialNote: null } },<!-- [et_pb_line_break_holder] -->    ];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const pricing = {<!-- [et_pb_line_break_holder] -->        standard: { 100: 5.21, 200: 4.90, 300: 3.93, 400: 3.37, 500: 2.88, 600: 2.85, 700: 2.72, 800: 2.46, 900: 2.26, 1000: 2.08, 2000: 1.98, 3000: 1.80, 4000: 1.67, 5000: 1.62, 6000: 1.59, 7000: 1.55, 8000: 1.51, 9000: 1.48, 10000: 1.41 },<!-- [et_pb_line_break_holder] -->        premium: { 100: 5.29, 200: 4.98, 300: 3.99, 400: 3.43, 500: 2.93, 600: 2.90, 700: 2.77, 800: 2.50, 900: 2.30, 1000: 2.11, 2000: 2.01, 3000: 1.83, 4000: 1.70, 5000: 1.65, 6000: 1.61, 7000: 1.57, 8000: 1.54, 9000: 1.50, 10000: 1.43 },<!-- [et_pb_line_break_holder] -->        exclusive: { 100: 5.55, 200: 5.22, 300: 4.19, 400: 3.60, 500: 3.07, 600: 3.04, 700: 2.90, 800: 2.63, 900: 2.42, 1000: 2.24, 2000: 2.13, 3000: 1.95, 4000: 1.83, 5000: 1.77, 6000: 1.74, 7000: 1.70, 8000: 1.66, 9000: 1.63, 10000: 1.55 },<!-- [et_pb_line_break_holder] -->        blister: { 100: 0.90, 200: 0.90, 300: 0.90, 400: 0.90, 500: 0.90, 600: 0.87, 700: 0.87, 800: 0.87, 900: 0.87, 1000: 0.87, 2000: 0.83, 3000: 0.71, 4000: 0.67, 5000: 0.63, 6000: 0.60, 7000: 0.58, 8000: 0.56, 9000: 0.52, 10000: 0.50 }<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    const rubberColors = ['bia\u0142y', 'czarny', 'niebieski', 'granat', 'zielony', 'seledyn', '\u017c\u00f3\u0142ty jasny', '\u017c\u00f3\u0142ty ciemny', 'pomara\u0144cz', 'be\u017c', 'ceg\u0142a', 'r\u00f3\u017c jasny', 'r\u00f3\u017c ciemny', 'fiolet jasny', 'czerwony', 'szary'];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const shippingRates = {<!-- [et_pb_line_break_holder] -->        ups: [<!-- [et_pb_line_break_holder] -->            { maxWeight: 10, price: 23.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 20, price: 26.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 30, price: 30.00 }<!-- [et_pb_line_break_holder] -->        ],<!-- [et_pb_line_break_holder] -->        dhl: [<!-- [et_pb_line_break_holder] -->            { maxWeight: 10, price: 22.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 20, price: 25.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 30, price: 30.00 }<!-- [et_pb_line_break_holder] -->        ],<!-- [et_pb_line_break_holder] -->        gls: [<!-- [et_pb_line_break_holder] -->            { maxWeight: 10, price: 22.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 20, price: 25.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 30, price: 27.00 }<!-- [et_pb_line_break_holder] -->        ],<!-- [et_pb_line_break_holder] -->        dpd: [<!-- [et_pb_line_break_holder] -->            { maxWeight: 10, price: 20.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 20, price: 25.00 },<!-- [et_pb_line_break_holder] -->            { maxWeight: 30, price: 30.00 }<!-- [et_pb_line_break_holder] -->        ]<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    const MAX_WEIGHT_PER_BOX = 30; <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const saturationOptions = {<!-- [et_pb_line_break_holder] -->        standard: [1, 2, 3],<!-- [et_pb_line_break_holder] -->        premium: [2, 3, 4],<!-- [et_pb_line_break_holder] -->        exclusive: [2, 3, 4, 5]<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ --- DOM ELEMENTS ---<!-- [et_pb_line_break_holder] -->    \/\/ Musimy szuka\u0107 wewn\u0105trz naszego wrappera, aby unikn\u0105\u0107 konflikt\u00f3w je\u015bli na stronie s\u0105 inne elementy o tych samych ID (cho\u0107 ID powinny by\u0107 unikalne)<!-- [et_pb_line_break_holder] -->    const wrapper = document.getElementById('fragrans-calc-wrapper');<!-- [et_pb_line_break_holder] -->    const dom = {<!-- [et_pb_line_break_holder] -->        form: wrapper.querySelector('#calculator-form'),<!-- [et_pb_line_break_holder] -->        typeButtons: wrapper.querySelectorAll('.type-button'),<!-- [et_pb_line_break_holder] -->        quantitySelect: wrapper.querySelector('#quantity'),<!-- [et_pb_line_break_holder] -->        shapeButtons: wrapper.querySelectorAll('.shape-button'),<!-- [et_pb_line_break_holder] -->        shapeBaseWarning: wrapper.querySelector('#shape-base-warning'),<!-- [et_pb_line_break_holder] -->        shapeCustomWarning: wrapper.querySelector('#shape-custom-warning'),<!-- [et_pb_line_break_holder] -->        fragranceContainer: wrapper.querySelector('#fragranceContainer'),<!-- [et_pb_line_break_holder] -->        filterButtons: wrapper.querySelectorAll('.filter-btn'),<!-- [et_pb_line_break_holder] -->        whiteBackgroundCheckbox: wrapper.querySelector('#whiteBackground'),<!-- [et_pb_line_break_holder] -->        whiteBackgroundWarning: wrapper.querySelector('#white-background-warning'),<!-- [et_pb_line_break_holder] -->        whiteBackgroundExtraWarning: wrapper.querySelector('#white-background-extra-warning'),<!-- [et_pb_line_break_holder] -->        selectedFragrancesSection: wrapper.querySelector('#selected-fragrances-section'),<!-- [et_pb_line_break_holder] -->        selectedFragrancesList: wrapper.querySelector('#selectedFragrancesList'),<!-- [et_pb_line_break_holder] -->        quantityWarning: wrapper.querySelector('#quantityWarning'),<!-- [et_pb_line_break_holder] -->        noFragranceWarning: wrapper.querySelector('#noFragranceWarning'),<!-- [et_pb_line_break_holder] -->        fragranceCountInfo: wrapper.querySelector('#fragranceCountInfo'),<!-- [et_pb_line_break_holder] -->        extraFragranceInfo: wrapper.querySelector('#extraFragranceInfo'),<!-- [et_pb_line_break_holder] -->        mainRubberColorSelect: wrapper.querySelector('#mainRubberColor'),<!-- [et_pb_line_break_holder] -->        multiColorRubberContainer: wrapper.querySelector('#multiColorRubberContainer'),<!-- [et_pb_line_break_holder] -->        multiColorRubberCheckbox: wrapper.querySelector('#multiColorRubber'),<!-- [et_pb_line_break_holder] -->        multiColorRubberMessage: wrapper.querySelector('#multiColorRubber-message'),<!-- [et_pb_line_break_holder] -->        blisterCheckbox: wrapper.querySelector('#blister'),<!-- [et_pb_line_break_holder] -->        blisterInfoText: wrapper.querySelector('#blister-info-text'),<!-- [et_pb_line_break_holder] -->        blackBackgroundCheckbox: wrapper.querySelector('#blackBackground'),<!-- [et_pb_line_break_holder] -->        blackDeLuxContainer: wrapper.querySelector('#blackDeLuxContainer'),<!-- [et_pb_line_break_holder] -->        blackDeLuxSidesContainer: wrapper.querySelector('#blackDeLuxSidesContainer'),<!-- [et_pb_line_break_holder] -->        shippingInfo: wrapper.querySelector('#shipping-info'),<!-- [et_pb_line_break_holder] -->        shippingOptionsContainer: wrapper.querySelector('#shipping-options'),<!-- [et_pb_line_break_holder] -->        summaryContainer: wrapper.querySelector('#summary-container'),<!-- [et_pb_line_break_holder] -->        summaryContent: wrapper.querySelector('#summary-content'),<!-- [et_pb_line_break_holder] -->        summaryError: wrapper.querySelector('#summary-error'),<!-- [et_pb_line_break_holder] -->        contactButton: wrapper.querySelector('#contactButton'),<!-- [et_pb_line_break_holder] -->        orderSpecification: wrapper.querySelector('#order-specification'),<!-- [et_pb_line_break_holder] -->        costSummary: wrapper.querySelector('#cost-summary'),<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Additional questions elements<!-- [et_pb_line_break_holder] -->        projectCountInfo: wrapper.querySelector('#project-count-info'),<!-- [et_pb_line_break_holder] -->        projectCountMoreWarning: wrapper.querySelector('#project-count-more-warning'),<!-- [et_pb_line_break_holder] -->        multiProjectQuestions: wrapper.querySelector('#multi-project-questions'),<!-- [et_pb_line_break_holder] -->        sameShapeInfo: wrapper.querySelector('#same-shape-info'),<!-- [et_pb_line_break_holder] -->        sameShapeNoWarning: wrapper.querySelector('#same-shape-no-warning'),<!-- [et_pb_line_break_holder] -->        shapesFromBaseQuestion: wrapper.querySelector('#shapes-from-base-question'),<!-- [et_pb_line_break_holder] -->        allShapesFromBaseInfo: wrapper.querySelector('#all-shapes-from-base-info'),<!-- [et_pb_line_break_holder] -->        allShapesFromBaseNoWarning: wrapper.querySelector('#all-shapes-from-base-no-warning'),<!-- [et_pb_line_break_holder] -->        blisterOptionsContainer: wrapper.querySelector('#blister-options-container'),<!-- [et_pb_line_break_holder] -->        bigSizeQuestion: wrapper.querySelector('#big-size-question'),<!-- [et_pb_line_break_holder] -->        bigSizeWarning: wrapper.querySelector('#big-size-warning'),<!-- [et_pb_line_break_holder] -->        fragranceSamplerWarning: wrapper.querySelector('#fragrance-sampler-warning'),<!-- [et_pb_line_break_holder] -->        blisterTypeMultipleWarning: wrapper.querySelector('#blister-type-multiple-warning'),<!-- [et_pb_line_break_holder] -->        newBlisterShapeWarning: wrapper.querySelector('#new-blister-shape-warning'),<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ --- STATE ---<!-- [et_pb_line_break_holder] -->    let state = {<!-- [et_pb_line_break_holder] -->        type: 'standard',<!-- [et_pb_line_break_holder] -->        quantity: 100,<!-- [et_pb_line_break_holder] -->        shape: 'standard',<!-- [et_pb_line_break_holder] -->        blister: false,<!-- [et_pb_line_break_holder] -->        mainRubberColor: 'bia\u0142y',<!-- [et_pb_line_break_holder] -->        multiColorRubber: false,<!-- [et_pb_line_break_holder] -->        selectedFragrances: [],<!-- [et_pb_line_break_holder] -->        maxFragrances: 1,<!-- [et_pb_line_break_holder] -->        currentFilter: 'all',<!-- [et_pb_line_break_holder] -->        whiteBackground: false,<!-- [et_pb_line_break_holder] -->        blackBackground: false,<!-- [et_pb_line_break_holder] -->        blackDeLux: {<!-- [et_pb_line_break_holder] -->            active: false,<!-- [et_pb_line_break_holder] -->            sides: 1<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->        shipping: {<!-- [et_pb_line_break_holder] -->            courier: null,<!-- [et_pb_line_break_holder] -->            cost: 0,<!-- [et_pb_line_break_holder] -->            boxCount: 0<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->        additional: {<!-- [et_pb_line_break_holder] -->            projectCount: '1',<!-- [et_pb_line_break_holder] -->            sameShape: 'yes',<!-- [et_pb_line_break_holder] -->            allShapesFromBase: 'yes',<!-- [et_pb_line_break_holder] -->            blisterType: 'single',<!-- [et_pb_line_break_holder] -->            newBlisterShape: false,<!-- [et_pb_line_break_holder] -->            bigSize: false,<!-- [et_pb_line_break_holder] -->            specificDeadline: false,<!-- [et_pb_line_break_holder] -->            fragranceSampler: false,<!-- [et_pb_line_break_holder] -->        },<!-- [et_pb_line_break_holder] -->        errors: {<!-- [et_pb_line_break_holder] -->            quantityMismatch: false<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    \/\/ --- INITIALIZATION ---<!-- [et_pb_line_break_holder] -->    function initialize() {<!-- [et_pb_line_break_holder] -->        wrapper.querySelector('#type-standard').classList.add('active');<!-- [et_pb_line_break_holder] -->        wrapper.querySelector('#shape-standard').classList.add('active');<!-- [et_pb_line_break_holder] -->        wrapper.querySelector('.filter-btn[data-filter=\"all\"]').classList.add('bg-blue-600', 'text-white');<!-- [et_pb_line_break_holder] -->        wrapper.querySelector('.filter-btn[data-filter=\"all\"]').classList.remove('bg-gray-200', 'text-gray-700');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        rubberColors.forEach(color => {<!-- [et_pb_line_break_holder] -->            const option = new Option(color.charAt(0).toUpperCase() + color.slice(1), color);<!-- [et_pb_line_break_holder] -->            dom.mainRubberColorSelect.add(option);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        renderFragranceCards();<!-- [et_pb_line_break_holder] -->        renderAndCalculate();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ --- EVENT LISTENERS ---<!-- [et_pb_line_break_holder] -->        dom.form.addEventListener('change', (e) => {<!-- [et_pb_line_break_holder] -->            const target = e.target;<!-- [et_pb_line_break_holder] -->            const targetId = target.id;<!-- [et_pb_line_break_holder] -->            const targetName = target.name;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (targetId === 'quantity') {<!-- [et_pb_line_break_holder] -->                state.quantity = parseInt(target.value);<!-- [et_pb_line_break_holder] -->                state.selectedFragrances = [];<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if (targetId === 'blister') state.blister = target.checked;<!-- [et_pb_line_break_holder] -->            else if (targetId === 'mainRubberColor') state.mainRubberColor = target.value;<!-- [et_pb_line_break_holder] -->            else if (targetId === 'multiColorRubber') {<!-- [et_pb_line_break_holder] -->                state.multiColorRubber = target.checked;<!-- [et_pb_line_break_holder] -->                if(state.multiColorRubber) {<!-- [et_pb_line_break_holder] -->                    dom.multiColorRubberMessage.textContent = 'Dobrze, teraz przypisz kolory do ka\u017cdego zapachu powy\u017cej.';<!-- [et_pb_line_break_holder] -->                    dom.multiColorRubberMessage.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->                    setTimeout(() => {<!-- [et_pb_line_break_holder] -->                        dom.selectedFragrancesSection.scrollIntoView({ behavior: 'smooth', block: 'center' });<!-- [et_pb_line_break_holder] -->                        dom.selectedFragrancesSection.classList.add('highlight-section');<!-- [et_pb_line_break_holder] -->                    }, 100);<!-- [et_pb_line_break_holder] -->                     dom.selectedFragrancesSection.addEventListener('animationend', () => {<!-- [et_pb_line_break_holder] -->                        dom.selectedFragrancesSection.classList.remove('highlight-section');<!-- [et_pb_line_break_holder] -->                    }, { once: true });<!-- [et_pb_line_break_holder] -->                } else {<!-- [et_pb_line_break_holder] -->                     dom.multiColorRubberMessage.classList.add('hidden');<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if (targetId === 'blackBackground') state.blackBackground = target.checked;<!-- [et_pb_line_break_holder] -->            else if (targetName === 'blackDeLuxChoice') {<!-- [et_pb_line_break_holder] -->                state.blackDeLux.active = target.value === 'yes';<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if (targetName === 'blackDeLuxSides') {<!-- [et_pb_line_break_holder] -->                state.blackDeLux.sides = parseInt(target.value);<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if (targetId === 'whiteBackground') {<!-- [et_pb_line_break_holder] -->                state.whiteBackground = target.checked;<!-- [et_pb_line_break_holder] -->                if (target.checked) {<!-- [et_pb_line_break_holder] -->                    state.currentFilter = 'colorless';<!-- [et_pb_line_break_holder] -->                } else {<!-- [et_pb_line_break_holder] -->                    state.currentFilter = 'all';<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->                updateFilterButtons();<!-- [et_pb_line_break_holder] -->                filterFragranceCards();<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->                return; \/\/ Prevent double calculation<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if(targetName === 'shipping-option') {<!-- [et_pb_line_break_holder] -->                state.shipping.courier = target.value;<!-- [et_pb_line_break_holder] -->                if(target.value !== 'personal_pickup') {<!-- [et_pb_line_break_holder] -->                    state.shipping.cost = parseFloat(target.dataset.cost);<!-- [et_pb_line_break_holder] -->                    state.shipping.boxCount = parseInt(target.dataset.boxes);<!-- [et_pb_line_break_holder] -->                } else {<!-- [et_pb_line_break_holder] -->                    state.shipping.cost = 0;<!-- [et_pb_line_break_holder] -->                    state.shipping.boxCount = 0;<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            } <!-- [et_pb_line_break_holder] -->            else if (targetName === 'projectCount') state.additional.projectCount = target.value;<!-- [et_pb_line_break_holder] -->            else if (targetName === 'sameShape') state.additional.sameShape = target.value;<!-- [et_pb_line_break_holder] -->            else if (targetName === 'allShapesFromBase') state.additional.allShapesFromBase = target.value;<!-- [et_pb_line_break_holder] -->            else if (targetName === 'blisterType') state.additional.blisterType = target.value;<!-- [et_pb_line_break_holder] -->            else if (targetId === 'newBlisterShape') state.additional.newBlisterShape = target.checked;<!-- [et_pb_line_break_holder] -->            else if (targetId === 'bigSize') state.additional.bigSize = target.checked;<!-- [et_pb_line_break_holder] -->            else if (targetId === 'specificDeadline') state.additional.specificDeadline = target.checked;<!-- [et_pb_line_break_holder] -->            else if (targetId === 'fragranceSampler') state.additional.fragranceSampler = target.checked;<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            renderAndCalculate();<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Event listener na wrapper zamiast body, \u017ceby \u0142apa\u0107 klikni\u0119cia tylko wewn\u0105trz<!-- [et_pb_line_break_holder] -->        wrapper.addEventListener('click', (e) => {<!-- [et_pb_line_break_holder] -->            const target = e.target.closest('button');<!-- [et_pb_line_break_holder] -->            if (!target) return;<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            \/\/ Sprawd\u017a czy przycisk nale\u017cy do naszego kalkulatora<!-- [et_pb_line_break_holder] -->            if (!wrapper.contains(target)) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const path = e.composedPath();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (path.some(el => el.classList && el.classList.contains('type-button'))) {<!-- [et_pb_line_break_holder] -->                const oldType = state.type; <!-- [et_pb_line_break_holder] -->                const button = path.find(el => el.classList && el.classList.contains('type-button'));<!-- [et_pb_line_break_holder] -->                state.type = button.id.replace('type-', '');<!-- [et_pb_line_break_holder] -->                dom.typeButtons.forEach(btn => btn.classList.remove('active'));<!-- [et_pb_line_break_holder] -->                button.classList.add('active');<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                adjustFragranceSaturations(oldType, state.type);<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if (path.some(el => el.classList && el.classList.contains('shape-button'))) {<!-- [et_pb_line_break_holder] -->                const button = path.find(el => el.classList && el.classList.contains('shape-button'));<!-- [et_pb_line_break_holder] -->                state.shape = button.id.replace('shape-', '');<!-- [et_pb_line_break_holder] -->                dom.shapeButtons.forEach(btn => btn.classList.remove('active'));<!-- [et_pb_line_break_holder] -->                button.classList.add('active');<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            else if (target.dataset.filter) {<!-- [et_pb_line_break_holder] -->                state.currentFilter = target.dataset.filter;<!-- [et_pb_line_break_holder] -->                updateFilterButtons();<!-- [et_pb_line_break_holder] -->                filterFragranceCards();<!-- [et_pb_line_break_holder] -->            } <!-- [et_pb_line_break_holder] -->            else if (target.dataset.action === 'select-fragrance') {<!-- [et_pb_line_break_holder] -->                toggleFragranceSelection(target.dataset.id);<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        window.addEventListener('scroll', handleStickySummary);<!-- [et_pb_line_break_holder] -->        dom.contactButton.addEventListener('click', handleContactButtonClick);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function renderAndCalculate() {<!-- [et_pb_line_break_holder] -->        updateFragranceCountInfo();<!-- [et_pb_line_break_holder] -->        updateUI();<!-- [et_pb_line_break_holder] -->        updateWhiteBackgroundWarning();<!-- [et_pb_line_break_holder] -->        updateAdditionalQuestionsUI();<!-- [et_pb_line_break_holder] -->        renderAdditionalWarnings(); \/\/ New function for red warnings<!-- [et_pb_line_break_holder] -->        renderSelectedFragrances();<!-- [et_pb_line_break_holder] -->        updateMultiColorRubberUI();<!-- [et_pb_line_break_holder] -->        renderShippingOptions();<!-- [et_pb_line_break_holder] -->        validateForm();<!-- [et_pb_line_break_holder] -->        renderSummary();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function updateUI() {<!-- [et_pb_line_break_holder] -->        dom.shapeBaseWarning.classList.toggle('hidden', state.shape !== 'standard');<!-- [et_pb_line_break_holder] -->        dom.shapeCustomWarning.classList.toggle('hidden', state.shape !== 'custom');<!-- [et_pb_line_break_holder] -->        dom.bigSizeQuestion.classList.toggle('hidden', state.shape !== 'standard');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        dom.blackDeLuxContainer.classList.toggle('hidden', !state.blackBackground);<!-- [et_pb_line_break_holder] -->        dom.blackDeLuxSidesContainer.classList.toggle('hidden', !state.blackDeLux.active);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    function updateWhiteBackgroundWarning() {<!-- [et_pb_line_break_holder] -->        const showWarning = state.whiteBackground;<!-- [et_pb_line_break_holder] -->        dom.whiteBackgroundWarning.classList.toggle('hidden', !showWarning);<!-- [et_pb_line_break_holder] -->        if (showWarning) {<!-- [et_pb_line_break_holder] -->            const hasNonColorless = state.selectedFragrances.some(sf => {<!-- [et_pb_line_break_holder] -->                const fragrance = fragrances.find(f => f.id === sf.id);<!-- [et_pb_line_break_holder] -->                return !fragrance.tags.isColorless;<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->            dom.whiteBackgroundExtraWarning.classList.toggle('hidden', !hasNonColorless);<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->            dom.whiteBackgroundExtraWarning.classList.add('hidden');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    \/\/ --- New function for all red warnings in section 6 ---<!-- [et_pb_line_break_holder] -->    function renderAdditionalWarnings() {<!-- [et_pb_line_break_holder] -->        const q = state.additional;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Project Count 'More'<!-- [et_pb_line_break_holder] -->        const showProjectCountMoreWarning = q.projectCount === 'more';<!-- [et_pb_line_break_holder] -->        dom.projectCountMoreWarning.textContent = showProjectCountMoreWarning ? \"Wi\u0119ksza ilo\u015b\u0107 projekt\u00f3w jest wyceniana indywidualnie, zaznaczaj\u0105c to pole przed wys\u0142aniem zapytania \u2013 zwrotnie prze\u015blemy zaktualizowan\u0105 wycen\u0119, pami\u0119taj, \u017ceby poda\u0107 ilo\u015b\u0107 projekt\u00f3w i nak\u0142ady dla ka\u017cdego z nich.\" : \"\";<!-- [et_pb_line_break_holder] -->        dom.projectCountMoreWarning.classList.toggle('hidden', !showProjectCountMoreWarning);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Same Shape 'No'<!-- [et_pb_line_break_holder] -->        let sameShapeWarningText = \"\";<!-- [et_pb_line_break_holder] -->        if (q.sameShape === 'no') {<!-- [et_pb_line_break_holder] -->            if (q.projectCount === '2') {<!-- [et_pb_line_break_holder] -->                sameShapeWarningText = \"Kalkulacja ta nie uwzgl\u0119dnia dop\u0142aty za przestawienie maszyn, b\u0119dzie doliczona w odpowiedzi z weryfikacj\u0105 wyceny.\";<!-- [et_pb_line_break_holder] -->            } else if (q.projectCount === 'more') {<!-- [et_pb_line_break_holder] -->                sameShapeWarningText = \"Kalkulacja ta nie uwzgl\u0119dnia dop\u0142aty za przestawienie maszyn, b\u0119dzie doliczona w odpowiedzi z weryfikacj\u0105 wyceny \u2013 pami\u0119taj, aby w mailu z zapytaniem uwzgl\u0119dni\u0107 ilo\u015b\u0107 projekt\u00f3w dla tego zam\u00f3wienia.\";<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        dom.sameShapeNoWarning.textContent = sameShapeWarningText;<!-- [et_pb_line_break_holder] -->        dom.sameShapeNoWarning.classList.toggle('hidden', sameShapeWarningText === \"\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ All Shapes from Base 'No'<!-- [et_pb_line_break_holder] -->        let allShapesWarningText = \"\";<!-- [et_pb_line_break_holder] -->        if (q.sameShape === 'no' && q.allShapesFromBase === 'no') {<!-- [et_pb_line_break_holder] -->             if (q.projectCount === '2') {<!-- [et_pb_line_break_holder] -->                allShapesWarningText = \"Kalkulator pozwala na wybranie szczeg\u00f3\u0142\u00f3w dla 1 projektu, je\u015bli jeden kszta\u0142t b\u0119dzie nowy \u2013 zaznacz powy\u017cej \u201eW\u0142asny kszta\u0142t\u201d, je\u015bli oba b\u0119d\u0105 nowe \u2013 nie zostanie to wliczone do poni\u017cszego podsumowania, ale zwrotnie mailem podamy zaktualizowan\u0105 wycen\u0119.\";<!-- [et_pb_line_break_holder] -->            } else if (q.projectCount === 'more') {<!-- [et_pb_line_break_holder] -->                allShapesWarningText = \"Kalkulator pozwala na wybranie szczeg\u00f3\u0142\u00f3w dla 1 projektu, je\u015bli jeden kszta\u0142t b\u0119dzie nowy \u2013 zaznacz powy\u017cej \u201eW\u0142asny kszta\u0142t\u201d, je\u015bli nowych kszta\u0142t\u00f3w b\u0119dzie wi\u0119cej \u2013 nie zostanie to wliczone do poni\u017cszego podsumowania, ale zwrotnie mailem podamy zaktualizowan\u0105 wycen\u0119.\";<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        dom.allShapesFromBaseNoWarning.textContent = allShapesWarningText;<!-- [et_pb_line_break_holder] -->        dom.allShapesFromBaseNoWarning.classList.toggle('hidden', allShapesWarningText === \"\");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Big Size<!-- [et_pb_line_break_holder] -->        const showBigSizeWarning = q.bigSize;<!-- [et_pb_line_break_holder] -->        dom.bigSizeWarning.textContent = showBigSizeWarning ? \"Dop\u0142ata Big size nie zosta\u0142a uwzgl\u0119dniona w niniejszym podsumowaniu, podaj numer\/y wykrojnik\u00f3w, a sprawdzimy i uwzgl\u0119dnimy w odpowiedzi na maila.\" : \"\";<!-- [et_pb_line_break_holder] -->        dom.bigSizeWarning.classList.toggle('hidden', !showBigSizeWarning);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Fragrance Sampler<!-- [et_pb_line_break_holder] -->        const showSamplerWarning = q.fragranceSampler;<!-- [et_pb_line_break_holder] -->        dom.fragranceSamplerWarning.textContent = showSamplerWarning ? \"Koszt pr\u00f3bnika nie zosta\u0142 wliczony do kalkulacji, je\u015bli chcesz zam\u00f3wi\u0107 pr\u00f3bnik \u2013 podaj mailem dane do faktury.\" : \"\";<!-- [et_pb_line_break_holder] -->        dom.fragranceSamplerWarning.classList.toggle('hidden', !showSamplerWarning);<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        \/\/ Blister: More than one design<!-- [et_pb_line_break_holder] -->        const showBlisterCountWarning = state.blister && q.blisterType === 'multiple';<!-- [et_pb_line_break_holder] -->        dom.blisterTypeMultipleWarning.textContent = showBlisterCountWarning ? \"Cena w kalkulacji obejmuje jeden wz\u00f3r blistra, aktualizacj\u0119 wyceny otrzymasz drog\u0105 mailow\u0105, pami\u0119taj, \u017ceby poda\u0107 ilo\u015b\u0107 wzor\u00f3w blistr\u00f3w dla tego zapytania.\" : \"\";<!-- [et_pb_line_break_holder] -->        dom.blisterTypeMultipleWarning.classList.toggle('hidden', !showBlisterCountWarning);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Blister: New shape<!-- [et_pb_line_break_holder] -->        const showBlisterShapeWarning = state.blister && q.newBlisterShape;<!-- [et_pb_line_break_holder] -->        dom.newBlisterShapeWarning.textContent = showBlisterShapeWarning ? \"Tego kosztu nie obejmuje ta kalkulacja, wysy\u0142aj\u0105c wymiary \u2013 podamy koszt takiego wykrojnika.\" : \"\";<!-- [et_pb_line_break_holder] -->        dom.newBlisterShapeWarning.classList.toggle('hidden', !showBlisterShapeWarning);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function updateAdditionalQuestionsUI() {<!-- [et_pb_line_break_holder] -->        const isMultiProject = state.additional.projectCount === '2' || state.additional.projectCount === 'more';<!-- [et_pb_line_break_holder] -->        dom.multiProjectQuestions.classList.toggle('hidden', !isMultiProject);<!-- [et_pb_line_break_holder] -->        dom.blisterOptionsContainer.classList.toggle('hidden', !state.blister);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (isMultiProject) {<!-- [et_pb_line_break_holder] -->            dom.shapesFromBaseQuestion.classList.toggle('hidden', state.additional.sameShape === 'yes');<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->             dom.shapesFromBaseQuestion.classList.add('hidden');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        let projectInfoText = '';<!-- [et_pb_line_break_holder] -->        if(state.additional.projectCount === '2') {<!-- [et_pb_line_break_holder] -->            projectInfoText = 'Je\u015bli w zam\u00f3wieniu s\u0105 2 projekty dla 1 klienta na tym samym kszta\u0142cie, nie wi\u0105\u017ce si\u0119 to z \u017cadn\u0105 dop\u0142at\u0105. Zaznacz to informacyjnie, aby nic nam nie umkn\u0119\u0142o.';<!-- [et_pb_line_break_holder] -->        } else if (state.additional.projectCount === 'more') {<!-- [et_pb_line_break_holder] -->            projectInfoText = 'Je\u015bli klient w ramach 1 zam\u00f3wienia chce wykona\u0107 3 lub wi\u0119cej projekt\u00f3w - dopisz w tre\u015bci maila ile projekt\u00f3w, po ile sztuk ka\u017cdy, a w powy\u017cszej kalkulacji wybierz ilo\u015b\u0107 zapach\u00f3w r\u00f3wn\u0105 ilo\u015bci projekt\u00f3w. Je\u015bli b\u0119d\u0105 3 projekty, a zapach\u00f3w 6 - dop\u0142ata zostanie dodana jak dla 6 projekt\u00f3w.';<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        dom.projectCountInfo.textContent = projectInfoText;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        dom.sameShapeInfo.textContent = state.additional.sameShape === 'yes'<!-- [et_pb_line_break_holder] -->            ? 'Nie ma \u017cadnej dodatkowej dop\u0142aty za przestawienie maszyn.'<!-- [et_pb_line_break_holder] -->            : 'Ka\u017cdy kolejny kszta\u0142t wykrojnika w ramach jednego zam\u00f3wienia to koszt 60 z\u0142 netto \/ przestawienie maszyn, podaj w tre\u015bci maila ile b\u0119dzie r\u00f3\u017cnych wykrojnik\u00f3w';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if(state.additional.sameShape === 'no'){<!-- [et_pb_line_break_holder] -->             dom.allShapesFromBaseInfo.textContent = state.additional.allShapesFromBase === 'yes'<!-- [et_pb_line_break_holder] -->                ? 'Brak dodatkowych koszt\u00f3w.'<!-- [et_pb_line_break_holder] -->                : 'Je\u015bli cho\u0107 1 kszta\u0142t b\u0119dzie nowy - zaznacz powy\u017cej nowy wykrojnik, je\u015bli b\u0119dzie ich wi\u0119cej, trzeba ten koszt policzy\u0107 wielokrotnie, a ta kalkulacja tego nie uwzgl\u0119dnia, dopisz w mailu ile b\u0119dzie indywidualnych kszta\u0142t\u00f3w, a zwrotnie zaktualizujemy wszystkie dane. Je\u015bli nowy wykrojnik b\u0119dzie mia\u0142 rozmiar wi\u0119kszy ni\u017c 94x69 mm - podaj rozmiary planowane, aby oszacowa\u0107 dop\u0142at\u0119 do realizacji BIG SIZE.';<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function renderFragranceCards() {<!-- [et_pb_line_break_holder] -->        dom.fragranceContainer.innerHTML = '';<!-- [et_pb_line_break_holder] -->        fragrances.forEach(f => {<!-- [et_pb_line_break_holder] -->            let badges = '';<!-- [et_pb_line_break_holder] -->            if (f.tags.isColorless) badges += `<span class=\"bg-blue-100 text-blue-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded\">Bezbarwna<\/span>`;<!-- [et_pb_line_break_holder] -->            if (f.tags.specialNote) badges += `<span class=\"bg-yellow-100 text-yellow-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded\">${f.tags.specialNote}<\/span>`;<!-- [et_pb_line_break_holder] -->            if (f.tags.isDelicate) badges += `<span class=\"bg-green-100 text-green-800 text-xs font-medium mr-2 px-2.5 py-0.5 rounded\">[zapach delikatny]<\/span>`;<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            const card = document.createElement('div');<!-- [et_pb_line_break_holder] -->            card.className = 'fragrance-card flex flex-col justify-between bg-white border border-gray-200 rounded-lg p-4 hover:border-blue-500 transition-all cursor-pointer';<!-- [et_pb_line_break_holder] -->            card.dataset.id = f.id;<!-- [et_pb_line_break_holder] -->            card.innerHTML = `<!-- [et_pb_line_break_holder] -->                <\/p>\n<div><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h4 class=\"font-medium text-gray-800\">${f.name}<\/h4>\n<p><!-- [et_pb_line_break_holder] -->                    <pee class=\"text-sm text-gray-500 mb-2\">Grupa ${f.group} - ${f.price.toFixed(2)} z\u0142\/ml<\/pee><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"mb-3 min-h-[22px]\">${badges}<\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <button data-action=\"select-fragrance\" data-id=\"${f.id}\" class=\"w-full mt-2 px-3 py-2 bg-blue-600 text-white text-sm rounded hover:bg-blue-700 transition-colors pointer-events-none\"><!-- [et_pb_line_break_holder] -->                    Wybierz<!-- [et_pb_line_break_holder] -->                <\/button><!-- [et_pb_line_break_holder] -->            `;<!-- [et_pb_line_break_holder] -->            card.addEventListener('click', () => {<!-- [et_pb_line_break_holder] -->                toggleFragranceSelection(card.dataset.id);<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->            dom.fragranceContainer.appendChild(card);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        filterFragranceCards();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function renderSelectedFragrances() {<!-- [et_pb_line_break_holder] -->        dom.selectedFragrancesList.innerHTML = '';<!-- [et_pb_line_break_holder] -->        if (state.selectedFragrances.length === 0) {<!-- [et_pb_line_break_holder] -->            dom.noFragranceWarning.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->            dom.selectedFragrancesList.innerHTML = '<pee class=\"text-gray-500 text-center\">Nie wybrano jeszcze \u017cadnych zapach\u00f3w.<\/pee>';<!-- [et_pb_line_break_holder] -->            return;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        dom.noFragranceWarning.classList.add('hidden');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        state.selectedFragrances.forEach((sf) => {<!-- [et_pb_line_break_holder] -->            const fragrance = fragrances.find(f => f.id === sf.id);<!-- [et_pb_line_break_holder] -->            const isDelicate = fragrance.tags.isDelicate;<!-- [et_pb_line_break_holder] -->            let currentSaturationOptions = [...saturationOptions[state.type]];<!-- [et_pb_line_break_holder] -->            if (isDelicate && state.type === 'standard') {<!-- [et_pb_line_break_holder] -->                currentSaturationOptions = [2, 3];<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const isQtyEditable = !(state.selectedFragrances.length === 1 || state.selectedFragrances.length === state.maxFragrances);<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            const item = document.createElement('div');<!-- [et_pb_line_break_holder] -->            item.className = 'bg-gray-50 p-4 rounded-lg border border-gray-200';<!-- [et_pb_line_break_holder] -->            item.innerHTML = `<!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"flex justify-between items-center mb-3\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<h5 class=\"font-medium\">${fragrance.name}<\/h5>\n<p><!-- [et_pb_line_break_holder] -->                    <button data-action=\"remove-fragrance\" data-id=\"${sf.id}\" class=\"text-red-500 hover:text-red-700 font-bold text-xl\">\u00d7<\/button><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"frag-qty-${sf.id}\" class=\"block text-sm text-gray-600 mb-1\">Ilo\u015b\u0107 (szt.)<\/label><!-- [et_pb_line_break_holder] -->                        <input type=\"number\" id=\"frag-qty-${sf.id}\" value=\"${sf.quantity}\" min=\"100\" step=\"100\" ${isQtyEditable ? '' : 'disabled'} class=\"quantity-input w-full p-2 border border-gray-300 rounded ${!isQtyEditable ? 'bg-gray-200' : ''}\"><!-- [et_pb_line_break_holder] -->                        ${!isQtyEditable ? `<pee class=\"text-xs text-gray-500 mt-1\">Ilo\u015b\u0107 ustalona automatycznie.<\/pee>` : ''}<!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div><!-- [et_pb_line_break_holder] -->                        <label for=\"frag-sat-${sf.id}\" class=\"block text-sm text-gray-600 mb-1\">Nas\u0105czenie (ml)<\/label><!-- [et_pb_line_break_holder] -->                        <select id=\"frag-sat-${sf.id}\" class=\"saturation-input w-full p-2 border border-gray-300 rounded\"><!-- [et_pb_line_break_holder] -->                            ${currentSaturationOptions.map(o => `<option value=\"${o}\" ${o === sf.saturation ? 'selected' : ''}>${o} ml<\/option>`).join('')}<!-- [et_pb_line_break_holder] -->                        <\/select><!-- [et_pb_line_break_holder] -->                         ${isDelicate ? `<pee class=\"text-xs text-green-700 mt-1\">Zapach delikatny. Zwi\u0119ksz nas\u0105czenie.<\/pee>` : ''}<!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div id=\"rubber-color-container-${sf.id}\" class=\"mt-4 hidden\"><!-- [et_pb_line_break_holder] -->                    <label for=\"frag-rubber-${sf.id}\" class=\"block text-sm text-gray-600 mb-1\">Kolor gumki<\/label><!-- [et_pb_line_break_holder] -->                    <select id=\"frag-rubber-${sf.id}\" class=\"rubber-color-input w-full p-2 border border-gray-300 rounded\"><!-- [et_pb_line_break_holder] -->                        ${rubberColors.map(c => `<option value=\"${c}\" ${c === sf.rubberColor ? 'selected' : ''}>${c.charAt(0).toUpperCase() + c.slice(1)}<\/option>`).join('')}<!-- [et_pb_line_break_holder] -->                    <\/select><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            `;<!-- [et_pb_line_break_holder] -->            dom.selectedFragrancesList.appendChild(item);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        dom.selectedFragrancesList.querySelectorAll('.quantity-input').forEach(input => {<!-- [et_pb_line_break_holder] -->            input.addEventListener('change', e => {<!-- [et_pb_line_break_holder] -->                const id = e.target.id.replace('frag-qty-', '');<!-- [et_pb_line_break_holder] -->                const sf = state.selectedFragrances.find(f => f.id === id);<!-- [et_pb_line_break_holder] -->                sf.quantity = Math.max(100, Math.round(parseInt(e.target.value) \/ 100) * 100);<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        dom.selectedFragrancesList.querySelectorAll('.saturation-input').forEach(input => {<!-- [et_pb_line_break_holder] -->            input.addEventListener('change', e => {<!-- [et_pb_line_break_holder] -->                const id = e.target.id.replace('frag-sat-', '');<!-- [et_pb_line_break_holder] -->                const sf = state.selectedFragrances.find(f => f.id === id);<!-- [et_pb_line_break_holder] -->                sf.saturation = parseInt(e.target.value);<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->         dom.selectedFragrancesList.querySelectorAll('.rubber-color-input').forEach(input => {<!-- [et_pb_line_break_holder] -->            input.addEventListener('change', e => {<!-- [et_pb_line_break_holder] -->                const id = e.target.id.replace('frag-rubber-', '');<!-- [et_pb_line_break_holder] -->                const sf = state.selectedFragrances.find(f => f.id === id);<!-- [et_pb_line_break_holder] -->                sf.rubberColor = e.target.value;<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        dom.selectedFragrancesList.querySelectorAll('button[data-action=\"remove-fragrance\"]').forEach(button => {<!-- [et_pb_line_break_holder] -->            button.addEventListener('click', e => {<!-- [et_pb_line_break_holder] -->                toggleFragranceSelection(e.target.dataset.id);<!-- [et_pb_line_break_holder] -->                renderAndCalculate();<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function renderShippingOptions() {<!-- [et_pb_line_break_holder] -->        const weight = calculateWeight();<!-- [et_pb_line_break_holder] -->        const boxCount = Math.max(1, Math.ceil(weight \/ MAX_WEIGHT_PER_BOX));<!-- [et_pb_line_break_holder] -->        const weightPerBox = weight \/ boxCount;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        dom.shippingInfo.textContent = `Szacowana waga przesy\u0142ki: ${weight.toFixed(2)} kg.`;<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        let optionsHTML = '';<!-- [et_pb_line_break_holder] -->        let firstCourier = true;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        for (const courier in shippingRates) {<!-- [et_pb_line_break_holder] -->            const tiers = shippingRates[courier];<!-- [et_pb_line_break_holder] -->            const pricePerBox = getPriceForWeight(tiers, weightPerBox);<!-- [et_pb_line_break_holder] -->            const totalCost = pricePerBox * boxCount;<!-- [et_pb_line_break_holder] -->            let isChecked = state.shipping.courier === courier;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (firstCourier && !state.shipping.courier) {<!-- [et_pb_line_break_holder] -->                isChecked = true;<!-- [et_pb_line_break_holder] -->                state.shipping.courier = courier;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            if (isChecked) {<!-- [et_pb_line_break_holder] -->                state.shipping.cost = totalCost;<!-- [et_pb_line_break_holder] -->                state.shipping.boxCount = boxCount;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            optionsHTML += `<!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"shipping-option\"><!-- [et_pb_line_break_holder] -->                    <input type=\"radio\" name=\"shipping-option\" id=\"ship-${courier}\" value=\"${courier}\" data-cost=\"${totalCost}\" data-boxes=\"${boxCount}\" ${isChecked ? 'checked' : ''} class=\"sr-only\"><!-- [et_pb_line_break_holder] -->                    <label for=\"ship-${courier}\" class=\"block border-2 border-gray-200 rounded-lg p-4 cursor-pointer hover:border-blue-400\"><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div class=\"flex justify-between items-center\"><!-- [et_pb_line_break_holder] -->                            <\/p>\n<div><!-- [et_pb_line_break_holder] -->                                <span class=\"font-semibold uppercase\">${courier}<\/span><!-- [et_pb_line_break_holder] -->                                <span class=\"block text-xs text-gray-500\">${boxCount} ${getPolishPlural(boxCount, 'karton', 'kartony', 'karton\u00f3w')}<\/span><!-- [et_pb_line_break_holder] -->                            <\/div>\n<p><!-- [et_pb_line_break_holder] -->                            <span class=\"font-bold text-lg text-blue-600\">${totalCost.toFixed(2)} z\u0142<\/span><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                    <\/label><!-- [et_pb_line_break_holder] -->                <\/div>\n<p><!-- [et_pb_line_break_holder] -->            `;<!-- [et_pb_line_break_holder] -->            firstCourier = false;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const isPersonalPickup = state.shipping.courier === 'personal_pickup';<!-- [et_pb_line_break_holder] -->        optionsHTML += `<!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"shipping-option\"><!-- [et_pb_line_break_holder] -->                <input type=\"radio\" name=\"shipping-option\" id=\"ship-personal\" value=\"personal_pickup\" data-cost=\"0\" data-boxes=\"0\" ${isPersonalPickup ? 'checked' : ''} class=\"sr-only\"><!-- [et_pb_line_break_holder] -->                <label for=\"ship-personal\" class=\"block border-2 border-gray-200 rounded-lg p-4 cursor-pointer hover:border-blue-400\"><!-- [et_pb_line_break_holder] -->                    <\/p>\n<div class=\"flex justify-between items-center\"><!-- [et_pb_line_break_holder] -->                        <\/p>\n<div><!-- [et_pb_line_break_holder] -->                            <span class=\"font-semibold\">Odbi\u00f3r osobisty<\/span><!-- [et_pb_line_break_holder] -->                             <span class=\"block text-xs text-gray-500\">Brak dodatkowych koszt\u00f3w<\/span><!-- [et_pb_line_break_holder] -->                        <\/div>\n<p><!-- [et_pb_line_break_holder] -->                        <span class=\"font-bold text-lg text-blue-600\">0.00 z\u0142<\/span><!-- [et_pb_line_break_holder] -->                    <\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/label><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        `;<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        dom.shippingOptionsContainer.innerHTML = optionsHTML || '<pee class=\"text-gray-500\">Brak dost\u0119pnych opcji wysy\u0142ki dla tej wagi.<\/pee>';<!-- [et_pb_line_break_holder] -->        if (!state.shipping.courier && dom.shippingOptionsContainer.querySelector('input')) {<!-- [et_pb_line_break_holder] -->            dom.shippingOptionsContainer.querySelector('input').click();<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    function renderSummary() {<!-- [et_pb_line_break_holder] -->        if(state.errors.quantityMismatch) {<!-- [et_pb_line_break_holder] -->            dom.summaryContent.classList.add('hidden');<!-- [et_pb_line_break_holder] -->            dom.summaryError.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->            return;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        dom.summaryContent.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->        dom.summaryError.classList.add('hidden');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const costs = calculateCosts();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        let specHTML = `<!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Rodzaj zawieszki:<\/span><span class=\"font-medium text-right\">${state.type.charAt(0).toUpperCase() + state.type.slice(1)}<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Nak\u0142ad:<\/span><span class=\"font-medium text-right\">${state.quantity} szt.<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Kszta\u0142t:<\/span><span class=\"font-medium text-right\">${state.shape === 'standard' ? 'Z bazy' : 'W\u0142asny'}<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Blister:<\/span><span class=\"font-medium text-right\">${state.blister ? 'Tak' : 'Nie'}<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Opcja Black De Lux:<\/span><span class=\"font-medium text-right\">${state.blackDeLux.active ? `Tak (${state.blackDeLux.sides} str.)` : 'Nie'}<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<hr class=\"border-t border-white\/20 my-2\"><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Liczba zapach\u00f3w:<\/span><span class=\"font-medium text-right\">${state.selectedFragrances.length}<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->        `;<!-- [et_pb_line_break_holder] -->        if (state.multiColorRubber) {<!-- [et_pb_line_break_holder] -->            specHTML += `<\/p>\n<div class=\"flex justify-between\"><span>Kolor gumek:<\/span><span class=\"font-medium text-right\">R\u00f3\u017cne dla zapach\u00f3w<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->            specHTML += `<\/p>\n<div class=\"flex justify-between\"><span>Kolor gumki:<\/span><span class=\"font-medium text-right\">${state.mainRubberColor.charAt(0).toUpperCase() + state.mainRubberColor.slice(1)}<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        if (state.selectedFragrances.length > 0) {<!-- [et_pb_line_break_holder] -->            specHTML += '<\/p>\n<div class=\"pt-2 text-xs\">';<!-- [et_pb_line_break_holder] -->            state.selectedFragrances.forEach(sf => {<!-- [et_pb_line_break_holder] -->                const fragrance = fragrances.find(f => f.id === sf.id);<!-- [et_pb_line_break_holder] -->                const colorInfo = state.multiColorRubber ? `, Gumka: ${sf.rubberColor}` : '';<!-- [et_pb_line_break_holder] -->                specHTML += `<\/p>\n<div class=\"ml-4\">- ${fragrance.name}: ${sf.quantity} szt., ${sf.saturation} ml ${colorInfo}<\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->            });<!-- [et_pb_line_break_holder] -->            specHTML += '<\/div>\n<p>';<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        const additionalQuestionsSummary = getAdditionalQuestionsSummary();<!-- [et_pb_line_break_holder] -->        if(additionalQuestionsSummary.length > 0) {<!-- [et_pb_line_break_holder] -->            specHTML += `<\/p>\n<hr class=\"border-t border-white\/20 my-2\">`;<!-- [et_pb_line_break_holder] -->            specHTML += additionalQuestionsSummary;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        dom.orderSpecification.innerHTML = specHTML;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        let costHTML = `<!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Cena jednostkowa suchej zawieszki:<\/span><span>${costs.unitPrice.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            ${costs.blackDeLuxUnitPrice > 0 ? `<\/p>\n<div class=\"flex justify-between\"><span>Dop\u0142ata jednostkowa Black de Lux:<\/span><span>${costs.blackDeLuxUnitPrice.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            ${state.blister ? `<\/p>\n<div class=\"flex justify-between\"><span>Cena jednostkowa blistra:<\/span><span>${costs.blisterUnitPrice.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Koszt zawieszek bazowy:<\/span><span>${costs.basePrice.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Koszt zapach\u00f3w:<\/span><span>${costs.fragranceCost.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            ${costs.blisterCost > 0 ? `<\/p>\n<div class=\"flex justify-between\"><span>Koszt blistr\u00f3w:<\/span><span>${costs.blisterCost.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            ${costs.customShapeCost > 0 ? `<\/p>\n<div class=\"flex justify-between\"><span>Koszt wykrojnika:<\/span><span>${costs.customShapeCost.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            ${costs.blackDeLuxPerPieceCost > 0 ? `<\/p>\n<div class=\"flex justify-between\"><span>Dop\u0142ata Black De Lux (ca\u0142o\u015b\u0107):<\/span><span>${costs.blackDeLuxPerPieceCost.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Przygotowalnia:<\/span><span>${costs.preparationCost.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            ${costs.blackDeLuxProofCost > 0 ? `<\/p>\n<div class=\"flex justify-between\"><span>Wydruk pr\u00f3bny Black De Lux:<\/span><span>${costs.blackDeLuxProofCost.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            ${costs.extraFragranceCost > 0 ? `<\/p>\n<div class=\"flex justify-between\"><span>Dop\u0142ata za dodatk. zapachy:<\/span><span>${costs.extraFragranceCost.toFixed(2)} z\u0142<\/span><\/div>\n<p>` : ''}<!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"flex justify-between\"><span>Transport (${state.shipping.courier !== 'personal_pickup' ? state.shipping.courier.toUpperCase() : 'Odbi\u00f3r osobisty'}, ${state.shipping.boxCount > 0 ? `${state.shipping.boxCount} ${getPolishPlural(state.shipping.boxCount, 'karton', 'kartony', 'karton\u00f3w')}` : ''}):<\/span><span>${state.shipping.cost.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"border-t border-blue-400 pt-3 mt-3\"><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"flex justify-between font-bold\"><span>Razem netto:<\/span><span>${costs.totalNet.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"flex justify-between text-sm mt-1\"><span>VAT (23%):<\/span><span>${costs.vat.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->                <\/p>\n<div class=\"flex justify-between font-bold text-xl mt-2\"><span>Razem brutto:<\/span><span>${costs.totalGross.toFixed(2)} z\u0142<\/span><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <\/div>\n<p><!-- [et_pb_line_break_holder] -->        `;<!-- [et_pb_line_break_holder] -->        dom.costSummary.innerHTML = costHTML;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function getAdditionalQuestionsSummary() {<!-- [et_pb_line_break_holder] -->        let summary = '';<!-- [et_pb_line_break_holder] -->        const { additional } = state;<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        if (additional.bigSize && state.shape === 'standard') {<!-- [et_pb_line_break_holder] -->             summary += `<\/p>\n<div class=\"flex justify-between\"><span>Big size:<\/span><span class=\"font-medium text-right\">Tak<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        if (additional.specificDeadline) {<!-- [et_pb_line_break_holder] -->             summary += `<\/p>\n<div class=\"flex justify-between\"><span>Specyficzny termin realizacji:<\/span><span class=\"font-medium text-right\">Tak<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        if (additional.fragranceSampler) {<!-- [et_pb_line_break_holder] -->             summary += `<\/p>\n<div class=\"flex justify-between\"><span>Pr\u00f3bnik zapach\u00f3w:<\/span><span class=\"font-medium text-right\">Tak<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if(additional.projectCount === '2' || additional.projectCount === 'more'){<!-- [et_pb_line_break_holder] -->             summary += `<\/p>\n<div class=\"flex justify-between\"><span>Liczba projekt\u00f3w zawieszki:<\/span><span class=\"font-medium text-right\">${additional.projectCount === '2' ? '2' : 'Wi\u0119cej'}<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->             summary += `<\/p>\n<div class=\"flex justify-between\"><span>Ten sam kszta\u0142t:<\/span><span class=\"font-medium text-right\">${additional.sameShape === 'yes' ? 'Tak' : 'Nie'}<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->             if(additional.sameShape === 'no'){<!-- [et_pb_line_break_holder] -->                summary += `<\/p>\n<div class=\"flex justify-between\"><span>Wszystkie kszta\u0142ty z bazy:<\/span><span class=\"font-medium text-right\">${additional.allShapesFromBase === 'yes' ? 'Tak' : 'Nie'}<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->             }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        if(state.blister) {<!-- [et_pb_line_break_holder] -->            if (additional.blisterType === 'multiple') {<!-- [et_pb_line_break_holder] -->                 summary += `<\/p>\n<div class=\"flex justify-between\"><span>Wz\u00f3r blistra:<\/span><span class=\"font-medium text-right\">Wi\u0119cej ni\u017c 1<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->             if(additional.newBlisterShape){<!-- [et_pb_line_break_holder] -->                 summary += `<\/p>\n<div class=\"flex justify-between\"><span>Nowy kszta\u0142t blistra:<\/span><span class=\"font-medium text-right\">Tak<\/span><\/div>\n<p>`;<!-- [et_pb_line_break_holder] -->             }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        return summary;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ --- LOGIC & HELPERS ---<!-- [et_pb_line_break_holder] -->    function updateFragranceCountInfo() {<!-- [et_pb_line_break_holder] -->        const quantity = state.quantity;<!-- [et_pb_line_break_holder] -->        state.maxFragrances = Math.min(Math.floor(quantity \/ 100), 35);<!-- [et_pb_line_break_holder] -->        dom.fragranceCountInfo.textContent = `Dla tego nak\u0142adu mo\u017cesz wybra\u0107 maksymalnie ${state.maxFragrances} ${getPolishPlural(state.maxFragrances, 'zapach', 'zapachy', 'zapach\u00f3w')}. W cenie s\u0105 2 zapachy (od 200 szt.), ka\u017cdorazowa zmiana nak\u0142adu w kalkulatorze wymaga ponownego wybrania zapach\u00f3w do kalkulacji ceny.`;<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        dom.extraFragranceInfo.classList.toggle('hidden', quantity < 200 || state.maxFragrances <= 2);<!-- [et_pb_line_break_holder] -->        dom.extraFragranceInfo.textContent = 'Powy\u017cej 2 zapach\u00f3w, za ka\u017cdy kolejny dop\u0142ata 60 z\u0142 netto.';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if(state.selectedFragrances.length > state.maxFragrances) {<!-- [et_pb_line_break_holder] -->            state.selectedFragrances.splice(state.maxFragrances);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        updateFragranceCardStates();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    function validateForm() {<!-- [et_pb_line_break_holder] -->        const totalFragranceQty = state.selectedFragrances.reduce((sum, f) => sum + f.quantity, 0);<!-- [et_pb_line_break_holder] -->        if (state.selectedFragrances.length > 0 && totalFragranceQty !== state.quantity) {<!-- [et_pb_line_break_holder] -->            state.errors.quantityMismatch = true;<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.classList.remove('hidden');<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.classList.add('bg-red-50', 'border-l-4', 'border-red-400', 'p-4', 'text-red-800');<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.innerHTML = `<pee><strong>B\u0142\u0105d:<\/strong> Suma ilo\u015bci zapach\u00f3w (${totalFragranceQty}) nie jest r\u00f3wna nak\u0142adowi zam\u00f3wienia (${state.quantity}). Dostosuj ilo\u015bci.<\/pee>`;<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->            state.errors.quantityMismatch = false;<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.classList.add('hidden');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function calculateWeight() {<!-- [et_pb_line_break_holder] -->        const itemsPerKg = state.blister ? 60 : 100;<!-- [et_pb_line_break_holder] -->        return state.quantity \/ itemsPerKg;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function getPriceForWeight(tiers, weight) {<!-- [et_pb_line_break_holder] -->        for (const tier of tiers) {<!-- [et_pb_line_break_holder] -->            if (weight <= tier.maxWeight) {<!-- [et_pb_line_break_holder] -->                return tier.price;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        return tiers[tiers.length - 1].price;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function calculateCosts() {<!-- [et_pb_line_break_holder] -->        const { quantity, type, selectedFragrances, blister, shape, blackDeLux, shipping } = state;<!-- [et_pb_line_break_holder] -->        let costs = {};<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const blackDeLuxSurcharge = blackDeLux.active ? (blackDeLux.sides === 1 ? 0.15 : 0.30) : 0;<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        costs.unitPrice = pricing[type][quantity];<!-- [et_pb_line_break_holder] -->        costs.blisterUnitPrice = blister ? pricing.blister[quantity] : 0;<!-- [et_pb_line_break_holder] -->        costs.blackDeLuxUnitPrice = blackDeLuxSurcharge;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        costs.basePrice = costs.unitPrice * quantity;<!-- [et_pb_line_break_holder] -->        costs.fragranceCost = selectedFragrances.reduce((sum, sf) => sum + (fragrances.find(f => f.id === sf.id).price * sf.saturation * sf.quantity), 0);<!-- [et_pb_line_break_holder] -->        costs.blisterCost = costs.blisterUnitPrice * quantity;<!-- [et_pb_line_break_holder] -->        costs.customShapeCost = shape === 'custom' ? 350 : 0;<!-- [et_pb_line_break_holder] -->        costs.blackDeLuxPerPieceCost = blackDeLuxSurcharge * quantity;<!-- [et_pb_line_break_holder] -->        costs.preparationCost = 50;<!-- [et_pb_line_break_holder] -->        costs.blackDeLuxProofCost = blackDeLux.active ? 50 : 0;<!-- [et_pb_line_break_holder] -->        costs.extraFragranceCost = (quantity >= 200 && selectedFragrances.length > 2) ? (selectedFragrances.length - 2) * 60 : 0;<!-- [et_pb_line_break_holder] -->        costs.shippingCost = shipping.cost;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        costs.totalNet = costs.basePrice + costs.fragranceCost + costs.blisterCost + costs.customShapeCost + costs.blackDeLuxPerPieceCost + costs.preparationCost + costs.blackDeLuxProofCost + costs.extraFragranceCost + costs.shippingCost;<!-- [et_pb_line_break_holder] -->        costs.vat = costs.totalNet * 0.23;<!-- [et_pb_line_break_holder] -->        costs.totalGross = costs.totalNet + costs.vat;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        return costs;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function toggleFragranceSelection(id) {<!-- [et_pb_line_break_holder] -->        const index = state.selectedFragrances.findIndex(f => f.id === id);<!-- [et_pb_line_break_holder] -->        if (index > -1) {<!-- [et_pb_line_break_holder] -->            state.selectedFragrances.splice(index, 1);<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->            if (state.selectedFragrances.length < state.maxFragrances) {<!-- [et_pb_line_break_holder] -->                const fragrance = fragrances.find(f => f.id === id);<!-- [et_pb_line_break_holder] -->                let defaultSaturation = saturationOptions[state.type][0];<!-- [et_pb_line_break_holder] -->                if(fragrance.tags.isDelicate && state.type === 'standard') {<!-- [et_pb_line_break_holder] -->                    defaultSaturation = 2;<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->                <!-- [et_pb_line_break_holder] -->                state.selectedFragrances.push({<!-- [et_pb_line_break_holder] -->                    id: fragrance.id,<!-- [et_pb_line_break_holder] -->                    name: fragrance.name,<!-- [et_pb_line_break_holder] -->                    quantity: 100,<!-- [et_pb_line_break_holder] -->                    saturation: defaultSaturation,<!-- [et_pb_line_break_holder] -->                    rubberColor: 'bia\u0142y'<!-- [et_pb_line_break_holder] -->                });<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        autoDistributeQuantity();<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    function autoDistributeQuantity() {<!-- [et_pb_line_break_holder] -->        const numFragrances = state.selectedFragrances.length;<!-- [et_pb_line_break_holder] -->        if (numFragrances === 0) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (numFragrances === 1) {<!-- [et_pb_line_break_holder] -->            state.selectedFragrances[0].quantity = state.quantity;<!-- [et_pb_line_break_holder] -->        } else {<!-- [et_pb_line_break_holder] -->             const baseQty = Math.floor(state.quantity \/ numFragrances \/ 100) * 100;<!-- [et_pb_line_break_holder] -->             let totalAllocated = baseQty * numFragrances;<!-- [et_pb_line_break_holder] -->             let remainder = state.quantity - totalAllocated;<!-- [et_pb_line_break_holder] -->             <!-- [et_pb_line_break_holder] -->             state.selectedFragrances.forEach((sf, index) => {<!-- [et_pb_line_break_holder] -->                 sf.quantity = baseQty;<!-- [et_pb_line_break_holder] -->                 if(index === 0) {<!-- [et_pb_line_break_holder] -->                     sf.quantity += remainder;<!-- [et_pb_line_break_holder] -->                 }<!-- [et_pb_line_break_holder] -->             });<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    function updateFragranceCardStates() {<!-- [et_pb_line_break_holder] -->        const cards = dom.fragranceContainer.querySelectorAll('.fragrance-card');<!-- [et_pb_line_break_holder] -->        const canSelectMore = state.selectedFragrances.length < state.maxFragrances;<!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        cards.forEach(card => {<!-- [et_pb_line_break_holder] -->            const id = card.dataset.id;<!-- [et_pb_line_break_holder] -->            const isSelected = state.selectedFragrances.some(f => f.id === id);<!-- [et_pb_line_break_holder] -->            card.classList.toggle('selected', isSelected);<!-- [et_pb_line_break_holder] -->            card.classList.toggle('disabled', !isSelected && !canSelectMore);<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            const button = card.querySelector('button');<!-- [et_pb_line_break_holder] -->            button.textContent = isSelected ? 'Usu\u0144' : 'Wybierz';<!-- [et_pb_line_break_holder] -->            button.classList.toggle('bg-red-500', isSelected);<!-- [et_pb_line_break_holder] -->            button.classList.toggle('hover:bg-red-600', isSelected);<!-- [et_pb_line_break_holder] -->            button.classList.toggle('bg-blue-600', !isSelected);<!-- [et_pb_line_break_holder] -->            button.classList.toggle('hover:bg-blue-700', !isSelected);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function updateFilterButtons() {<!-- [et_pb_line_break_holder] -->        dom.filterButtons.forEach(btn => {<!-- [et_pb_line_break_holder] -->            if (btn.dataset.filter === state.currentFilter) {<!-- [et_pb_line_break_holder] -->                btn.classList.add('bg-blue-600', 'text-white');<!-- [et_pb_line_break_holder] -->                btn.classList.remove('bg-gray-200', 'text-gray-700');<!-- [et_pb_line_break_holder] -->            } else {<!-- [et_pb_line_break_holder] -->                btn.classList.remove('bg-blue-600', 'text-white');<!-- [et_pb_line_break_holder] -->                btn.classList.add('bg-gray-200', 'text-gray-700');<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function filterFragranceCards() {<!-- [et_pb_line_break_holder] -->        const cards = dom.fragranceContainer.querySelectorAll('.fragrance-card');<!-- [et_pb_line_break_holder] -->        cards.forEach(card => {<!-- [et_pb_line_break_holder] -->            const fragrance = fragrances.find(f => f.id === card.dataset.id);<!-- [et_pb_line_break_holder] -->            let show = false;<!-- [et_pb_line_break_holder] -->            switch(state.currentFilter) {<!-- [et_pb_line_break_holder] -->                case 'all': show = true; break;<!-- [et_pb_line_break_holder] -->                case 'A':<!-- [et_pb_line_break_holder] -->                case 'B':<!-- [et_pb_line_break_holder] -->                case 'C':<!-- [et_pb_line_break_holder] -->                case 'D': show = fragrance.group === state.currentFilter; break;<!-- [et_pb_line_break_holder] -->                case 'strong': show = fragrance.tags.isStrong; break;<!-- [et_pb_line_break_holder] -->                case 'delicate': show = fragrance.tags.isDelicate; break;<!-- [et_pb_line_break_holder] -->                case 'colorless': show = fragrance.tags.isColorless; break;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->            card.style.display = show ? 'flex' : 'none';<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    function updateMultiColorRubberUI() {<!-- [et_pb_line_break_holder] -->        const showMulti = state.selectedFragrances.length > 1;<!-- [et_pb_line_break_holder] -->        dom.multiColorRubberContainer.classList.toggle('hidden', !showMulti);<!-- [et_pb_line_break_holder] -->        dom.mainRubberColorSelect.disabled = state.multiColorRubber && showMulti;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        dom.selectedFragrancesList.querySelectorAll('[id^=\"rubber-color-container-\"]').forEach(container => {<!-- [et_pb_line_break_holder] -->            container.classList.toggle('hidden', !state.multiColorRubber);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function handleStickySummary() {<!-- [et_pb_line_break_holder] -->        if (window.innerWidth < 1024) { <!-- [et_pb_line_break_holder] -->             dom.summaryContainer.classList.remove('sticky-pinned');<!-- [et_pb_line_break_holder] -->             dom.summaryContainer.style.position = '';<!-- [et_pb_line_break_holder] -->             dom.summaryContainer.style.top = '';<!-- [et_pb_line_break_holder] -->             return;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const summaryHeight = dom.summaryContainer.offsetHeight;<!-- [et_pb_line_break_holder] -->        \/\/ U\u017cywamy wrappera jako odniesienia<!-- [et_pb_line_break_holder] -->        const container = dom.summaryContainer.closest('.relative');<!-- [et_pb_line_break_holder] -->        if (!container) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const containerHeight = container.offsetHeight;<!-- [et_pb_line_break_holder] -->        const containerTop = container.offsetTop;<!-- [et_pb_line_break_holder] -->        const scrollTop = window.scrollY;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        \/\/ Logika sticky mo\u017ce wymaga\u0107 dostosowania w zale\u017cno\u015bci od kontenera nadrz\u0119dnego w WP<!-- [et_pb_line_break_holder] -->        \/\/ Na razie zostawiamy standardow\u0105, ale w WP mo\u017ce to dzia\u0142a\u0107 r\u00f3\u017cnie zale\u017cnie od overflow<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function getFormattedSpecificationText() {<!-- [et_pb_line_break_holder] -->        let lines = [];<!-- [et_pb_line_break_holder] -->        const specDiv = wrapper.querySelector('#order-specification');<!-- [et_pb_line_break_holder] -->        if (!specDiv) return '';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        let hrCount = 0;<!-- [et_pb_line_break_holder] -->        specDiv.querySelectorAll('div, hr').forEach(child => {<!-- [et_pb_line_break_holder] -->            if (child.tagName === 'HR') {<!-- [et_pb_line_break_holder] -->                if(hrCount === 0) lines.push('---');<!-- [et_pb_line_break_holder] -->                if(hrCount === 1) lines.push('--- Pytania Dodatkowe ---');<!-- [et_pb_line_break_holder] -->                hrCount++;<!-- [et_pb_line_break_holder] -->            } else if (child.classList.contains('flex') && child.children.length >= 2) {<!-- [et_pb_line_break_holder] -->                const label = child.children[0].innerText.trim();<!-- [et_pb_line_break_holder] -->                const value = child.children[1].innerText.trim();<!-- [et_pb_line_break_holder] -->                lines.push(`${label} ${value}`);<!-- [et_pb_line_break_holder] -->            } else if (child.classList.contains('pt-2') && child.classList.contains('text-xs')) {<!-- [et_pb_line_break_holder] -->                lines.push('Wybrane zapachy:');<!-- [et_pb_line_break_holder] -->                Array.from(child.children).forEach(fragranceItem => {<!-- [et_pb_line_break_holder] -->                    lines.push(fragranceItem.innerText.trim());<!-- [et_pb_line_break_holder] -->                });<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        return lines.join('\\n');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function getFormattedCostSummaryText() {<!-- [et_pb_line_break_holder] -->        let lines = [];<!-- [et_pb_line_break_holder] -->        const costDiv = wrapper.querySelector('#cost-summary');<!-- [et_pb_line_break_holder] -->        if (!costDiv) return '';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        Array.from(costDiv.children).forEach(child => {<!-- [et_pb_line_break_holder] -->            if (child.tagName === 'DIV' && child.classList.contains('flex') && child.children.length >= 2) {<!-- [et_pb_line_break_holder] -->                const label = child.children[0].innerText.trim();<!-- [et_pb_line_break_holder] -->                const value = child.children[1].innerText.trim();<!-- [et_pb_line_break_holder] -->                lines.push(`${label} ${value}`);<!-- [et_pb_line_break_holder] -->            } else if (child.classList.contains('border-t')) {<!-- [et_pb_line_break_holder] -->                lines.push('-------------------------'); <!-- [et_pb_line_break_holder] -->                Array.from(child.children).forEach(totalItem => {<!-- [et_pb_line_break_holder] -->                    if (totalItem.classList.contains('flex') && totalItem.children.length >= 2) {<!-- [et_pb_line_break_holder] -->                        const label = totalItem.children[0].innerText.trim();<!-- [et_pb_line_break_holder] -->                        const value = totalItem.children[1].innerText.trim();<!-- [et_pb_line_break_holder] -->                        lines.push(`${label} ${value}`);<!-- [et_pb_line_break_holder] -->                    }<!-- [et_pb_line_break_holder] -->                });<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        return lines.join('\\n');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function handleContactButtonClick(e) {<!-- [et_pb_line_break_holder] -->        e.preventDefault(); <!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        renderAndCalculate(); <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        if (state.errors.quantityMismatch) {<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.scrollIntoView({ behavior: 'smooth', block: 'center' });<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.style.transition = 'background-color 0.5s';<!-- [et_pb_line_break_holder] -->            dom.quantityWarning.style.backgroundColor = '#fef2f2';<!-- [et_pb_line_break_holder] -->            setTimeout(() => {<!-- [et_pb_line_break_holder] -->                dom.quantityWarning.style.backgroundColor = '';<!-- [et_pb_line_break_holder] -->            }, 2000);<!-- [et_pb_line_break_holder] -->            return;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const specSummary = getFormattedSpecificationText();<!-- [et_pb_line_break_holder] -->        const costSummaryText = getFormattedCostSummaryText();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const emailBody = `Dzie\u0144 dobry,\\n\\nPoni\u017cej przedstawiam podsumowanie kalkulacji z kalkulatora zawieszek zapachowych:\\n\\n--- Specyfikacja Zam\u00f3wienia ---\\n${specSummary}\\n\\n--- Podsumowanie Koszt\u00f3w ---\\n${costSummaryText}\\n\\n[Tutaj dodaj sw\u00f3j projekt i dodatkowe pytania]\\n\\nZ wyrazami szacunku,\\n[Twoje imi\u0119\/nazwa firmy]`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const encodedBody = encodeURIComponent(emailBody);<!-- [et_pb_line_break_holder] -->        const mailtoLink = `mailto:zawieszki@fragrans.pl?subject=${encodeURIComponent('Zapytanie o wycen\u0119 - Kalkulator Zawieszek Zapachowych')}&body=${encodedBody}`;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        window.location.href = mailtoLink;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function adjustFragranceSaturations(oldType, newType) {<!-- [et_pb_line_break_holder] -->        state.selectedFragrances.forEach(sf => {<!-- [et_pb_line_break_holder] -->            const fragrance = fragrances.find(f => f.id === sf.id);<!-- [et_pb_line_break_holder] -->            const isDelicate = fragrance.tags.isDelicate;<!-- [et_pb_line_break_holder] -->            let currentSaturation = sf.saturation;<!-- [et_pb_line_break_holder] -->            let newSaturation = currentSaturation;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            let newTypeSaturationOptions = saturationOptions[newType];<!-- [et_pb_line_break_holder] -->            if (isDelicate && newType === 'standard') {<!-- [et_pb_line_break_holder] -->                newTypeSaturationOptions = [2, 3];<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const minNew = Math.min(...newTypeSaturationOptions);<!-- [et_pb_line_break_holder] -->            const maxNew = Math.max(...newTypeSaturationOptions);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (newType === 'standard') {<!-- [et_pb_line_break_holder] -->                if (currentSaturation === 4 || currentSaturation === 5) {<!-- [et_pb_line_break_holder] -->                    newSaturation = 3;<!-- [et_pb_line_break_holder] -->                } else if (currentSaturation === 1 && isDelicate) {<!-- [et_pb_line_break_holder] -->                    newSaturation = 2; <!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            } else if (newType === 'premium') {<!-- [et_pb_line_break_holder] -->                if (currentSaturation === 1) {<!-- [et_pb_line_break_holder] -->                    newSaturation = 2;<!-- [et_pb_line_break_holder] -->                } else if (currentSaturation === 5) {<!-- [et_pb_line_break_holder] -->                    newSaturation = 4;<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            } else if (newType === 'exclusive') {<!-- [et_pb_line_break_holder] -->                if (currentSaturation === 1) {<!-- [et_pb_line_break_holder] -->                    newSaturation = 2;<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            newSaturation = Math.max(minNew, Math.min(newSaturation, maxNew));<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            sf.saturation = newSaturation;<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    function getPolishPlural(num, single, plural, pluralGenitive) {<!-- [et_pb_line_break_holder] -->        num = Math.abs(num);<!-- [et_pb_line_break_holder] -->        if (num === 1) return single;<!-- [et_pb_line_break_holder] -->        const lastDigit = num % 10;<!-- [et_pb_line_break_holder] -->        const lastTwoDigits = num % 100;<!-- [et_pb_line_break_holder] -->        if (lastDigit >= 2 && lastDigit <= 4 &#038;&#038; (lastTwoDigits < 12 || lastTwoDigits > 14)) {<!-- [et_pb_line_break_holder] -->            return plural;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        return pluralGenitive;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ --- START ---<!-- [et_pb_line_break_holder] -->    initialize();<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><\/body><!-- [et_pb_line_break_holder] --><\/html>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kalkulacja dla 1 projektu w ramach zam\u00f3wienia. Je\u015bli potrzebujesz zam\u00f3wi\u0107 wi\u0119cej projekt\u00f3w, zg\u0142o\u015b si\u0119 po indywidualn\u0105 wycen\u0119. Na ko\u0144cu kalkulacji znajdziesz dodatkowe pytania, kt\u00f3re pomog\u0105 uwzgl\u0119dni\u0107 wszystkie dost\u0119pne mo\u017cliwo\u015bci. Skonfiguruj zapytanie, wygeneruj maila z podsumowaniem, dodaj projekt i swoje dodatkowe pytania, a zweryfikujemy kalkulacj\u0119 i podamy szacowany termin realizacji, na obecn\u0105 chwil\u0119.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"<!-- wp:divi\/placeholder \/-->","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"class_list":["post-1196","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kalkulator Wycen Zawieszek Zapachowych FRAGRANS - Personalizowane Zawieszki<\/title>\n<meta name=\"description\" content=\"Skorzystaj z kalkulatora wyceny zawieszek zapachowych FRAGRANS. Wybierz zapach, kszta\u0142t, nak\u0142ad i otrzymaj dok\u0142adn\u0105 wycen\u0119 online. Sprawd\u017a, jak \u0142atwo zam\u00f3wi\u0107 personalizowane zawieszki.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fragrans.pl\/fr\/kalkulator\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kalkulator Wycen Zawieszek Zapachowych FRAGRANS - Personalizowane Zawieszki\" \/>\n<meta property=\"og:description\" content=\"Skorzystaj z kalkulatora wyceny zawieszek zapachowych FRAGRANS. Wybierz zapach, kszta\u0142t, nak\u0142ad i otrzymaj dok\u0142adn\u0105 wycen\u0119 online. Sprawd\u017a, jak \u0142atwo zam\u00f3wi\u0107 personalizowane zawieszki.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fragrans.pl\/fr\/kalkulator\/\" \/>\n<meta property=\"og:site_name\" content=\"Fragrans\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-16T12:07:06+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fragrans.pl\\\/kalkulator\\\/\",\"url\":\"https:\\\/\\\/fragrans.pl\\\/kalkulator\\\/\",\"name\":\"Kalkulator Wycen Zawieszek Zapachowych FRAGRANS - Personalizowane Zawieszki\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fragrans.pl\\\/#website\"},\"datePublished\":\"2025-07-06T13:42:32+00:00\",\"dateModified\":\"2026-01-16T12:07:06+00:00\",\"description\":\"Skorzystaj z kalkulatora wyceny zawieszek zapachowych FRAGRANS. Wybierz zapach, kszta\u0142t, nak\u0142ad i otrzymaj dok\u0142adn\u0105 wycen\u0119 online. Sprawd\u017a, jak \u0142atwo zam\u00f3wi\u0107 personalizowane zawieszki.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fragrans.pl\\\/kalkulator\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fragrans.pl\\\/kalkulator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fragrans.pl\\\/kalkulator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/fragrans.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kalkulator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fragrans.pl\\\/#website\",\"url\":\"https:\\\/\\\/fragrans.pl\\\/\",\"name\":\"Fragrans\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fragrans.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kalkulator Wycen Zawieszek Zapachowych FRAGRANS - Personalizowane Zawieszki","description":"Skorzystaj z kalkulatora wyceny zawieszek zapachowych FRAGRANS. Wybierz zapach, kszta\u0142t, nak\u0142ad i otrzymaj dok\u0142adn\u0105 wycen\u0119 online. Sprawd\u017a, jak \u0142atwo zam\u00f3wi\u0107 personalizowane zawieszki.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fragrans.pl\/fr\/kalkulator\/","og_locale":"fr_FR","og_type":"article","og_title":"Kalkulator Wycen Zawieszek Zapachowych FRAGRANS - Personalizowane Zawieszki","og_description":"Skorzystaj z kalkulatora wyceny zawieszek zapachowych FRAGRANS. Wybierz zapach, kszta\u0142t, nak\u0142ad i otrzymaj dok\u0142adn\u0105 wycen\u0119 online. Sprawd\u017a, jak \u0142atwo zam\u00f3wi\u0107 personalizowane zawieszki.","og_url":"https:\/\/fragrans.pl\/fr\/kalkulator\/","og_site_name":"Fragrans","article_modified_time":"2026-01-16T12:07:06+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fragrans.pl\/kalkulator\/","url":"https:\/\/fragrans.pl\/kalkulator\/","name":"Kalkulator Wycen Zawieszek Zapachowych FRAGRANS - Personalizowane Zawieszki","isPartOf":{"@id":"https:\/\/fragrans.pl\/#website"},"datePublished":"2025-07-06T13:42:32+00:00","dateModified":"2026-01-16T12:07:06+00:00","description":"Skorzystaj z kalkulatora wyceny zawieszek zapachowych FRAGRANS. Wybierz zapach, kszta\u0142t, nak\u0142ad i otrzymaj dok\u0142adn\u0105 wycen\u0119 online. Sprawd\u017a, jak \u0142atwo zam\u00f3wi\u0107 personalizowane zawieszki.","breadcrumb":{"@id":"https:\/\/fragrans.pl\/kalkulator\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fragrans.pl\/kalkulator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fragrans.pl\/kalkulator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/fragrans.pl\/"},{"@type":"ListItem","position":2,"name":"Kalkulator"}]},{"@type":"WebSite","@id":"https:\/\/fragrans.pl\/#website","url":"https:\/\/fragrans.pl\/","name":"Fragrans","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fragrans.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"_links":{"self":[{"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/pages\/1196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/comments?post=1196"}],"version-history":[{"count":27,"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/pages\/1196\/revisions"}],"predecessor-version":[{"id":2091,"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/pages\/1196\/revisions\/2091"}],"wp:attachment":[{"href":"https:\/\/fragrans.pl\/fr\/wp-json\/wp\/v2\/media?parent=1196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}