{"id":927,"date":"2026-09-13T16:56:52","date_gmt":"2026-09-13T16:56:52","guid":{"rendered":"https:\/\/czechpeptide.com\/?page_id=927"},"modified":"2026-09-18T16:52:42","modified_gmt":"2026-09-18T16:52:42","slug":"bpc157tb500","status":"publish","type":"page","link":"https:\/\/czechpeptide.com\/cz\/bpc157tb500\/","title":{"rendered":"Bpc157tb500 working"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>BPC-157 \/ TB500 &#8211; Product Page<\/title>\n\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n\n    <script>\n        tailwind.config = {\n            theme: {\n                extend: {\n                    fontFamily: {\n                        sans: ['Inter', 'sans-serif'],\n                    },\n                    colors: {\n                        brand: {\n                            DEFAULT: '#b142f5',\n                            hover: '#9a2ad9',\n                            light: '#f7ebff',\n                            border: '#d794f9'\n                        }\n                    }\n                }\n            }\n        }\n    <\/script>\n\n    <style>\n        body { background-color: #fcfcfd; color: #1f2937; }\n        .product-image-bg { background: radial-gradient(circle at center, #f7ebff 0%, #f3f4f6 70%); }\n        input[type=\"number\"]::-webkit-inner-spin-button,\n        input[type=\"number\"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\n        input[type=\"number\"] { -moz-appearance: textfield; }\n        .tab-content { display: none; animation: fadeIn 0.2s ease-in-out; }\n        .tab-content.active { display: block; }\n        @keyframes fadeIn { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }\n        @keyframes scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }\n        .logo-slider { display: flex; width: max-content; animation: scroll 35s linear infinite; }\n        .logo-slider:hover { animation-play-state: paused; }\n    <\/style>\n<\/head>\n<body class=\"antialiased min-h-screen pb-12\">\n\n    <main class=\"max-w-6xl mx-auto px-2 sm:px-6 py-4 sm:py-8\">\n\n        <div class=\"flex flex-row gap-2 sm:gap-6 lg:gap-8 items-start\">\n\n            <!-- LEFT COLUMN -->\n            <div class=\"w-[45%] lg:w-1\/2 flex flex-col gap-2 sm:gap-4\">\n\n                <!-- Product Image -->\n                <div class=\"product-image-bg rounded-xl sm:rounded-2xl flex items-center justify-center h-[180px] sm:h-[400px] lg:h-[500px] border border-purple-200 shadow-sm relative overflow-hidden p-2\">\n                    <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/bpc157.jpeg\" alt=\"BPC-157 \/ TB500 Vial\" class=\"max-w-[95%] max-h-[95%] object-contain mix-blend-multiply drop-shadow-xl hover:scale-105 transition-transform duration-500 cursor-zoom-in\" onclick=\"openImageModal(this.src)\">\n                <\/div>\n\n                <!-- Info Cards (PC Only) -->\n                <div class=\"hidden sm:grid grid-cols-1 sm:grid-cols-2 gap-2 sm:gap-3\">\n                    <div class=\"bg-white border border-purple-200 rounded-lg sm:rounded-xl p-2 sm:p-3 flex items-start gap-1.5 sm:gap-3 shadow-sm\">\n                        <div class=\"bg-brand-light text-brand p-1 sm:p-1.5 rounded-md hidden sm:block\">\n                            <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z\"><\/path><\/svg>\n                        <\/div>\n                        <div>\n                            <p class=\"font-bold text-[9px] sm:text-xs text-gray-900 leading-tight\">Peptide appearance<\/p>\n                            <p class=\"text-[8px] sm:text-[11px] text-gray-500 mt-0.5\">Lyophilized form<\/p>\n                        <\/div>\n                    <\/div>\n                    <div class=\"bg-white border border-purple-200 rounded-lg sm:rounded-xl p-2 sm:p-3 flex items-start gap-1.5 sm:gap-3 shadow-sm\">\n                        <div class=\"bg-brand-light text-brand p-1 sm:p-1.5 rounded-md hidden sm:block\">\n                            <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z\"><\/path><\/svg>\n                        <\/div>\n                        <div>\n                            <p class=\"font-bold text-[9px] sm:text-xs text-gray-900 leading-tight\">Solution not bundled<\/p>\n                            <a href=\"#\" class=\"text-[8px] sm:text-[11px] text-brand font-medium mt-0.5 hover:underline block\">Bacteriostatic water<\/a>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Frequently Bought Together (Mobile Only) -->\n                <div class=\"border border-purple-200 rounded-lg p-2 bg-brand-light\/30 shadow-inner mt-1 block sm:hidden\">\n                    <span class=\"text-[9px] font-bold text-brand uppercase block mb-1.5 text-center\">Frequently Bought Together<\/span>\n                    <div class=\"flex flex-col gap-2 bg-white p-2 rounded-md border border-purple-100 shadow-sm transition-all hover:border-brand-light\">\n                        <div class=\"flex items-center gap-1.5\">\n                            <div class=\"h-8 w-8 bg-brand-light rounded-md flex items-center justify-center flex-shrink-0 border border-purple-100 p-0.5\">\n                                <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/08\/bacteriostatic-scaled.png\" alt=\"Bacteriostatic Water\" class=\"max-h-full object-contain mix-blend-multiply\">\n                            <\/div>\n                            <div class=\"flex-1\">\n                                <p class=\"font-bold text-[9px] text-gray-900 leading-tight\">Bacteriostatic Water (3ml)<\/p>\n                                <p class=\"text-brand font-bold text-[9px] mt-0.5\">+ 99 K\u010d<\/p>\n                            <\/div>\n                        <\/div>\n                        <div class=\"flex items-center justify-end gap-1.5 w-full border-t border-purple-50 pt-1.5\">\n                            <span class=\"text-[10px] font-bold text-gray-700 uppercase tracking-wide\">Add<\/span>\n                            <label class=\"relative inline-flex items-center cursor-pointer\">\n                                <input type=\"checkbox\" class=\"sr-only peer bac-checkbox\" onchange=\"toggleSuggestedProduct(event)\">\n                                <div class=\"w-7 h-4 bg-gray-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-3 after:w-3 after:transition-all peer-checked:bg-brand shadow-inner\"><\/div>\n                            <\/label>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Accordion -->\n                <div class=\"bg-white border border-purple-200 rounded-lg sm:rounded-xl shadow-sm overflow-hidden mt-1 sm:mt-0\">\n\n                    <!-- Primary Benefits Accordion (Translated & Enhanced) -->\n                    <div class=\"border-b border-purple-100\">\n                        <button onclick=\"toggleAccordion('acc-1')\" class=\"w-full px-2 sm:px-4 py-2 sm:py-3 text-left flex justify-between items-center focus:outline-none hover:bg-brand-light\/50 transition-colors\">\n                            <span class=\"font-bold text-[10px] sm:text-sm text-gray-900 pr-1\">Primary Benefits<\/span>\n                            <svg id=\"icon-acc-1\" class=\"w-3 h-3 sm:w-4 sm:h-4 text-brand transition-transform duration-200 flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 4v16m8-8H4\"><\/path><\/svg>\n                        <\/button>\n                        <div id=\"content-acc-1\" class=\"hidden px-2 sm:px-4 pb-2 sm:pb-4 text-[9px] sm:text-xs text-gray-600 leading-relaxed\">\n                            <ul class=\"list-disc pl-3 sm:pl-4 space-y-1.5\">\n                                <li><strong>Accelerated Recovery:<\/strong> Dramatically speeds up cellular repair and tissue regeneration, cutting down downtime.<\/li>\n                                <li><strong>Potent Anti-Inflammatory:<\/strong> Actively reduces systemic and localized inflammation to promote an optimal healing environment.<\/li>\n                                <li><strong>Enhanced Angiogenesis:<\/strong> Stimulates the formation of new blood vessels, delivering vital nutrients directly to injured areas.<\/li>\n                                <li><strong>Ultimate Joint &#038; Tendon Support:<\/strong> Synergistically fortifies and protects connective tissues, ligaments, and joints for long-term resilience.<\/li>\n                            <\/ul>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Dosing Instructions Accordion -->\n                    <div class=\"border-b border-purple-100\">\n                        <button onclick=\"toggleAccordion('acc-2')\" class=\"w-full px-2 sm:px-4 py-2 sm:py-3 text-left flex justify-between items-center focus:outline-none hover:bg-brand-light\/50 transition-colors\">\n                            <span class=\"font-bold text-[10px] sm:text-sm text-gray-900 pr-1\">Usage and Dosing<\/span>\n                            <svg id=\"icon-acc-2\" class=\"w-3 h-3 sm:w-4 sm:h-4 text-brand transition-transform duration-200 flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 4v16m8-8H4\"><\/path><\/svg>\n                        <\/button>\n                        <div id=\"content-acc-2\" class=\"hidden px-2 sm:px-4 pb-3 sm:pb-4 text-[9px] sm:text-xs text-gray-600 leading-relaxed space-y-3\">\n                           <div>\n    <h4 class=\"text-[10px] sm:text-sm font-bold text-gray-900 mb-1\">Educational guide for reconstitution and daily dosing<\/h4>\n    <p class=\"text-[9px] sm:text-xs\"><strong>Standard \/ Gradual Approach<\/strong> (3 mL = ~3.33 mg\/mL)<\/p>\n<\/div>\n\n                            <p>\n                                <strong>Route:<\/strong> Subcutaneous injection, once daily<sup>[5][6]<\/sup>. This blend contains equal amounts of BPC-157 and TB-500 (5 mg each); every dose drawn provides a 1:1 ratio of both peptides.\n                            <\/p>\n\n                            <!-- Phase Table -->\n                            <div class=\"overflow-x-auto border border-purple-100 rounded-lg\">\n    <table class=\"w-full min-w-[280px] text-left bg-white\">\n                                    <thead class=\"bg-brand-light text-brand\">\n                                        <tr>\n                                            <th class=\"p-1.5 sm:p-2 border-b border-purple-100 font-bold text-[8px] sm:text-[10px] uppercase\">Phase \/ Week<\/th>\n                                            <th class=\"p-1.5 sm:p-2 border-b border-purple-100 font-bold text-[8px] sm:text-[10px] uppercase\">Daily Dose (Total)<\/th>\n                                            <th class=\"p-1.5 sm:p-2 border-b border-purple-100 font-bold text-[8px] sm:text-[10px] uppercase hidden sm:table-cell\">Each Peptide (mcg)<\/th>\n                                            <th class=\"p-1.5 sm:p-2 border-b border-purple-100 font-bold text-[8px] sm:text-[10px] uppercase text-right\">Units (mL)<\/th>\n                                        <\/tr>\n                                    <\/thead>\n                                    <tbody class=\"text-[9px] sm:text-xs\">\n                                        <tr>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 font-medium text-gray-900\">Weeks 1\u20132 (Initial)<\/td>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 text-gray-700\">600 mcg<\/td>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 text-gray-500 hidden sm:table-cell\">300 mcg BPC + 300 mcg TB-500<\/td>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 text-brand font-medium text-right\">18 units (0.18 mL)<\/td>\n                                        <\/tr>\n                                        <tr class=\"bg-gray-50\/50\">\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 font-medium text-gray-900\">Weeks 3\u20134 (Loading)<\/td>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 text-gray-700\">800 mcg<\/td>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 text-gray-500 hidden sm:table-cell\">400 mcg BPC + 400 mcg TB-500<\/td>\n                                            <td class=\"p-1.5 sm:p-2 border-b border-purple-50 text-brand font-medium text-right\">24 units (0.24 mL)<\/td>\n                                        <\/tr>\n                                        <tr>\n                                            <td class=\"p-1.5 sm:p-2 font-medium text-gray-900\">Weeks 5\u20138 (Maintenance)<\/td>\n                                            <td class=\"p-1.5 sm:p-2 text-gray-700\">600 mcg<\/td>\n                                            <td class=\"p-1.5 sm:p-2 text-gray-500 hidden sm:table-cell\">300 mcg BPC + 300 mcg TB-500<\/td>\n                                            <td class=\"p-1.5 sm:p-2 text-brand font-medium text-right\">18 units (0.18 mL)<\/td>\n                                        <\/tr>\n                                    <\/tbody>\n                                <\/table>\n                            <\/div>\n                            <p class=\"text-[8px] sm:hidden text-gray-400 italic mt-0.5\">*Each dose provides half BPC \/ half TB-500<\/p>\n\n                            <p>\n                                <strong>Frequency:<\/strong> Inject once daily subcutaneously. This schedule uses 3.0 mL dilution to keep per-injection volumes \u226518 units for accurate measurement. Rotate injection sites systematically.\n                            <\/p>\n                        <\/div>\n                    <\/div>\n\n                    <!-- Side Effects Accordion (Translated direct) -->\n                    <div>\n                        <button onclick=\"toggleAccordion('acc-3')\" class=\"w-full px-2 sm:px-4 py-2 sm:py-3 text-left flex justify-between items-center focus:outline-none hover:bg-brand-light\/50 transition-colors\">\n                            <span class=\"font-bold text-[10px] sm:text-sm text-gray-900 pr-1\">Side Effects<\/span>\n                            <svg id=\"icon-acc-3\" class=\"w-3 h-3 sm:w-4 sm:h-4 text-brand transition-transform duration-200 flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 4v16m8-8H4\"><\/path><\/svg>\n                        <\/button>\n                        <div id=\"content-acc-3\" class=\"hidden px-2 sm:px-4 pb-2 sm:pb-4 text-[9px] sm:text-xs text-gray-600 leading-relaxed\">\n                            <ul class=\"list-disc pl-3 sm:pl-4 space-y-1\">\n                                <li>Mild redness at the injection site.<\/li>\n                                <li>Headache or fatigue.<\/li>\n                                <li>Sleep changes (temporary).<\/li>\n                            <\/ul>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Calculator Button -->\n                <a href=\"https:\/\/czechpeptide.com\/calculator\" target=\"_blank\" class=\"w-full mt-1 sm:mt-2 flex justify-center items-center gap-1.5 text-brand hover:text-white font-bold py-2 sm:py-3 px-4 bg-brand-light hover:bg-brand rounded-lg sm:rounded-xl transition-all border border-brand text-[10px] sm:text-sm shadow-sm group\">\n                    <svg class=\"w-4 h-4 sm:w-5 sm:h-5 group-hover:scale-110 transition-transform\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z\"><\/path><\/svg>\n                    Calculate your dose\n                <\/a>\n\n            <\/div>\n\n            <!-- RIGHT COLUMN -->\n            <div class=\"w-[55%] lg:w-1\/2 flex flex-col gap-2 sm:gap-5\">\n\n                <div>\n                    <span class=\"text-[9px] sm:text-[11px] font-bold tracking-wider text-brand uppercase\">Peptide Blend<\/span>\n                    <h1 class=\"text-lg sm:text-3xl lg:text-4xl font-extrabold text-gray-900 sm:mt-1 tracking-tight leading-none sm:leading-tight\">BPC-157 \/ TB500<\/h1>\n\n                    <div class=\"flex items-center gap-1 sm:gap-1.5 mt-1 sm:mt-2.5\">\n                        <span id=\"stock-dot\" class=\"w-1.5 h-1.5 sm:w-2 sm:h-2 rounded-full bg-green-500\"><\/span>\n                        <span class=\"text-[10px] sm:text-xs font-bold text-green-600\" id=\"stock-status\">In stock<\/span>\n                    <\/div>\n                <\/div>\n\n                <p class=\"text-gray-600 leading-snug sm:leading-relaxed text-[9px] sm:text-sm hidden sm:block\">\n                    A two-component BPC-157 and TB-500 research blend with declared component amounts.\n                    <a href=\"#overview-tab\" onclick=\"document.getElementById('tab-overview').click()\" class=\"text-brand font-semibold hover:underline\">More &rarr;<\/a>\n                <\/p>\n\n                <hr class=\"border-purple-100 sm:border-purple-200 my-1 sm:my-0\">\n\n                <!-- Mass & Quantity -->\n                <div class=\"flex flex-col gap-3 sm:gap-4 w-full\">\n                    <div class=\"flex flex-col sm:flex-row sm:items-center gap-1.5 sm:gap-3 w-full\">\n                        <span class=\"text-[10px] sm:text-[11px] font-bold text-gray-500 sm:w-16\">MASS<\/span>\n                        <div class=\"flex gap-1.5 sm:gap-2 flex-wrap\">\n                            <button id=\"mass-5mg\" onclick=\"selectMass(5)\" class=\"bg-brand text-white px-3 sm:px-3 py-1.5 sm:py-1.5 rounded-full text-[10px] sm:text-xs font-bold shadow-sm transition-transform active:scale-95\">5mg + 5mg<\/button>\n                            <button id=\"mass-10mg\" onclick=\"selectMass(10)\" class=\"bg-white border border-purple-200 text-brand hover:bg-brand-light px-3 sm:px-3 py-1.5 sm:py-1.5 rounded-full text-[10px] sm:text-xs font-bold shadow-sm transition-all active:scale-95\">10mg + 10mg<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"flex flex-col sm:flex-row sm:items-center gap-1.5 sm:gap-3 w-full\">\n                        <span class=\"text-[10px] sm:text-[11px] font-bold text-gray-500 sm:w-16\">QUANTITY<\/span>\n                        <div class=\"flex items-center border border-purple-200 rounded-full bg-white shadow-sm overflow-hidden h-8 sm:h-8 w-max max-w-full\">\n                            <button onclick=\"handleQtyChange(-1)\" class=\"px-3 sm:px-3 text-brand hover:bg-brand-light\/50 h-full transition-colors text-sm sm:text-base font-bold\">&minus;<\/button>\n                            <input type=\"number\" id=\"qty-input\" value=\"1\" min=\"1\" onchange=\"handleQtyInput()\" class=\"w-8 sm:w-10 text-center font-bold text-[11px] sm:text-sm text-gray-900 bg-transparent border-none focus:outline-none focus:ring-0 p-0\">\n                            <button onclick=\"handleQtyChange(1)\" class=\"px-3 sm:px-3 text-brand hover:bg-brand-light\/50 h-full transition-colors text-sm sm:text-base font-bold\">&plus;<\/button>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Bundle & Save -->\n                <div class=\"flex flex-col gap-1 sm:gap-2 sm:mt-1\">\n                    <span class=\"text-[9px] sm:text-[11px] font-bold text-gray-900 uppercase\">Bundle &#038; Save<\/span>\n                    <div class=\"grid grid-cols-3 gap-1 sm:gap-2\">\n\n                        <div id=\"bundle-1\" onclick=\"selectBundle(1)\" class=\"bundle-card border-2 border-brand rounded-md sm:rounded-xl p-1 sm:p-2.5 cursor-pointer relative transition-all hover:shadow-md bg-brand-light\">\n                            <div class=\"flex flex-col items-center text-center gap-1 sm:gap-1.5\">\n                                <img decoding=\"async\" src=\"https:\/\/placehold.co\/30x60\/transparent\/b142f5?text=1\" alt=\"1 Vial\" class=\"h-5 sm:h-8 object-contain\">\n                                <div>\n                                    <p class=\"font-extrabold text-[8px] sm:text-xs text-brand leading-tight\">1 VIAL<\/p>\n                                    <p class=\"text-[7px] sm:text-[9px] text-gray-500 font-medium leading-none mt-0.5\">Normal<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div id=\"bundle-2\" onclick=\"selectBundle(2)\" class=\"bundle-card border border-purple-200 rounded-md sm:rounded-xl p-1 sm:p-2.5 cursor-pointer relative transition-all hover:border-brand hover:shadow-md bg-white\">\n                            <div class=\"absolute -top-2 sm:-top-2.5 left-1\/2 -translate-x-1\/2 bg-green-500 text-white text-[6px] sm:text-[9px] font-bold px-1 sm:px-2 py-0.5 rounded-full uppercase whitespace-nowrap shadow-sm\">\n                                Save 10%\n                            <\/div>\n                            <div class=\"flex flex-col items-center text-center gap-1 sm:gap-1.5 mt-1 sm:mt-0\">\n                                <img decoding=\"async\" src=\"https:\/\/placehold.co\/40x60\/transparent\/b142f5?text=2\" alt=\"2 Vials\" class=\"h-5 sm:h-8 object-contain\">\n                                <div>\n                                    <p class=\"font-extrabold text-[8px] sm:text-xs text-gray-900 leading-tight\">2 VIALS<\/p>\n                                    <p class=\"text-[7px] sm:text-[9px] text-green-600 font-bold leading-none mt-0.5\">10% off<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                        <div id=\"bundle-3\" onclick=\"selectBundle(3)\" class=\"bundle-card border border-purple-200 rounded-md sm:rounded-xl p-1 sm:p-2.5 cursor-pointer relative transition-all hover:border-brand hover:shadow-md bg-white\">\n                            <div class=\"absolute -top-2 sm:-top-2.5 left-1\/2 -translate-x-1\/2 bg-brand text-white text-[6px] sm:text-[9px] font-bold px-1 sm:px-2 py-0.5 rounded-full uppercase whitespace-nowrap shadow-sm\">\n                                Best Value\n                            <\/div>\n                            <div class=\"flex flex-col items-center text-center gap-1 sm:gap-1.5 mt-1 sm:mt-0\">\n                                <img decoding=\"async\" src=\"https:\/\/placehold.co\/50x60\/transparent\/b142f5?text=3%2B\" alt=\"3+ Vials\" class=\"h-5 sm:h-8 object-contain\">\n                                <div>\n                                    <p class=\"font-extrabold text-[8px] sm:text-xs text-gray-900 leading-tight\">3+ VIALS<\/p>\n                                    <p class=\"text-[7px] sm:text-[9px] text-brand font-bold leading-none mt-0.5\">15% off<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n\n                    <\/div>\n                <\/div>\n\n                <!-- Add to Cart -->\n                <div class=\"flex gap-2 sm:gap-3 mt-1 sm:mt-1\">\n                    <button onclick=\"document.getElementById('tab-tests').click(); document.getElementById('overview-tab').scrollIntoView({behavior:'smooth'});\" class=\"border border-purple-200 text-brand hover:bg-brand-light font-bold px-4 py-2 sm:py-2.5 rounded-full transition-colors shadow-sm hidden sm:block text-xs sm:text-sm\">\n                        Tests\n                    <\/button>\n                    <button id=\"add-to-cart-btn\" onclick=\"addToCart()\" class=\"flex-1 bg-brand hover:bg-brand-hover text-white font-bold py-2.5 sm:py-2.5 rounded-full shadow-lg transition-transform active:scale-[0.98] flex items-center justify-center gap-1 sm:gap-1.5 text-[11px] sm:text-base disabled:opacity-50 disabled:cursor-not-allowed\">\n                        <span id=\"btn-text\">Add to cart &#8211; <span id=\"btn-total-price\">2 032<\/span> K\u010d<\/span>\n                    <\/button>\n                <\/div>\n\n                <!-- Badges -->\n                <div class=\"flex flex-col sm:grid sm:grid-cols-3 gap-1 sm:gap-3 border border-purple-200 rounded-lg sm:rounded-xl p-2 sm:p-3 bg-white shadow-sm text-[8px] sm:text-[10px] lg:text-xs font-semibold text-gray-700\">\n                    <div class=\"flex items-center gap-1 sm:gap-1.5 justify-start\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/Zasilkovna_Claim.png\" alt=\"Z\u00e1silkovna\" class=\"h-3 sm:h-4 object-contain flex-shrink-0\">\n                        <span>Z-Box \/ Adress<\/span>\n                    <\/div>\n                    <div class=\"flex items-center gap-1 sm:gap-1.5\">\n                        <svg class=\"w-3 h-3 sm:w-4 sm:h-4 text-gray-500 flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z\"><\/path><\/svg>\n                        <span>Discreet packaging<\/span>\n                    <\/div>\n                    <div class=\"flex items-center gap-1 sm:gap-1.5\">\n                        <svg class=\"w-3 h-3 sm:w-4 sm:h-4 text-brand flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4\"><\/path><\/svg>\n                        <span>Free shipping > 3000CZK<\/span>\n                    <\/div>\n                <\/div>\n\n                <!-- Frequently Bought Together (PC Only) -->\n                <div class=\"border border-purple-200 rounded-lg sm:rounded-xl p-2 sm:p-3 bg-brand-light\/30 shadow-inner mt-0.5 sm:mt-1 hidden sm:block\">\n                    <span class=\"text-[9px] sm:text-[10px] font-bold text-brand uppercase block mb-1.5 sm:mb-2\">Frequently Bought Together<\/span>\n                    <div class=\"flex items-center gap-2 sm:gap-3 bg-white p-1.5 sm:p-2.5 rounded-md sm:rounded-lg border border-purple-100 shadow-sm transition-all hover:border-brand-light hover:shadow-md\">\n                        <div class=\"h-8 w-8 sm:h-12 sm:w-12 bg-brand-light rounded-md flex items-center justify-center flex-shrink-0 border border-purple-100 overflow-hidden p-0.5 sm:p-1\">\n                            <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/08\/bacteriostatic-scaled.png\" alt=\"Bacteriostatic Water\" class=\"max-h-full object-contain mix-blend-multiply\">\n                        <\/div>\n                        <div class=\"flex-1\">\n                            <p class=\"font-bold text-[9px] sm:text-xs text-gray-900 leading-tight\">Bacteriostatic Water (3ml)<\/p>\n                            <p class=\"text-[8px] sm:text-[10px] text-gray-500 mt-0.5 hidden sm:block\">Essential for reconstitution<\/p>\n                            <p class=\"text-brand font-bold text-[9px] sm:text-xs mt-0.5\">+ 99 K\u010d<\/p>\n                        <\/div>\n                        <div class=\"flex-shrink-0 flex items-center gap-2 pl-1\">\n                            <span class=\"text-[11px] font-bold text-gray-700 uppercase tracking-wide\">Add<\/span>\n                            <label class=\"relative inline-flex items-center cursor-pointer\">\n                                <input type=\"checkbox\" class=\"sr-only peer bac-checkbox\" onchange=\"toggleSuggestedProduct(event)\">\n                                <div class=\"w-9 h-5 bg-gray-200 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-brand shadow-inner\"><\/div>\n                            <\/label>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Payment Methods -->\n                <div class=\"flex items-center justify-between px-1 transition-all duration-300\">\n                    <span class=\"text-[7px] sm:text-[9px] uppercase font-bold text-gray-400\">We accept<\/span>\n                    <div class=\"flex gap-2 sm:gap-3 items-center\">\n                        <span class=\"font-bold text-green-600 text-[9px] sm:text-xs flex items-center gap-0.5 sm:gap-1\">\n                            <svg class=\"w-2.5 h-2.5 sm:w-3.5 sm:h-3.5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 9V7a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2m2 4h10a2 2 0 002-2v-6a2 2 0 00-2-2H9a2 2 0 00-2 2v6a2 2 0 002 2zm7-5a2 2 0 11-4 0 2 2 0 014 0z\"><\/path><\/svg>\n                            Hotovost\n                        <\/span>\n                        <span class=\"font-bold italic text-blue-900 text-[10px] sm:text-sm\">VISA<\/span>\n                        <span class=\"font-bold text-red-500 text-[10px] sm:text-sm relative flex items-center\">\n                            <span class=\"absolute -left-2 rounded-full w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 bg-red-500 opacity-80 mix-blend-multiply\"><\/span>\n                            <span class=\"absolute -left-0.5 rounded-full w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 bg-yellow-500 opacity-80 mix-blend-multiply\"><\/span>\n                            <span class=\"ml-2.5 sm:ml-3 text-[9px] sm:text-xs font-bold text-transparent\">MC<\/span>\n                        <\/span>\n                        <span class=\"font-bold text-black text-[9px] sm:text-xs flex items-center gap-0.5 sm:gap-1\"><svg class=\"w-2.5 h-2.5 sm:w-3.5 sm:h-3.5\" viewBox=\"0 0 384 512\" fill=\"currentColor\"><path d=\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.3 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.3zM344 38.6c-27.1 27.6-67.4 29.8-67.4 29.8-1.5-27.4 12.5-61.5 31.8-82 25.4-26.5 64-28.7 64-28.7-2.1 27-14 62-28.4 80.9z\"\/><\/svg> Pay<\/span>\n                    <\/div>\n                <\/div>\n\n            <\/div>\n        <\/div>\n\n        <!-- EXPANDABLE TABS SECTION -->\n        <div class=\"mt-8 sm:mt-12 border border-purple-200 rounded-2xl bg-white shadow-sm overflow-hidden\" id=\"overview-tab\">\n            <div class=\"flex border-b border-purple-100 overflow-x-auto hide-scrollbar\">\n                <button id=\"tab-tests\" onclick=\"switchTab('tests')\" class=\"tab-btn flex-1 min-w-[100px] py-3 px-4 text-xs sm:text-sm font-bold text-center border-b-2 border-brand text-brand transition-colors\">Tests<\/button>\n                <button id=\"tab-overview\" onclick=\"switchTab('overview')\" class=\"tab-btn flex-1 min-w-[100px] py-3 px-4 text-xs sm:text-sm font-bold text-center border-b-2 border-transparent text-gray-500 hover:text-brand transition-colors\">Overview<\/button>\n                <button id=\"tab-specs\" onclick=\"switchTab('specs')\" class=\"tab-btn flex-1 min-w-[100px] py-3 px-4 text-xs sm:text-sm font-bold text-center border-b-2 border-transparent text-gray-500 hover:text-brand transition-colors\">Specifications<\/button>\n                <button id=\"tab-handling\" onclick=\"switchTab('handling')\" class=\"tab-btn flex-1 min-w-[100px] py-3 px-4 text-xs sm:text-sm font-bold text-center border-b-2 border-transparent text-gray-500 hover:text-brand transition-colors\">Handling<\/button>\n                <button id=\"tab-references\" onclick=\"switchTab('references')\" class=\"tab-btn flex-1 min-w-[100px] py-3 px-4 text-xs sm:text-sm font-bold text-center border-b-2 border-transparent text-gray-500 hover:text-brand transition-colors\">References<\/button>\n            <\/div>\n\n            <div class=\"p-4 sm:p-8\">\n\n                <!-- Tab Content: Tests -->\n                <div id=\"content-tests\" class=\"tab-content active\">\n                    <div class=\"flex flex-col sm:flex-row sm:items-end justify-between gap-4 mb-6\">\n                        <div>\n                            <span class=\"text-[10px] font-bold tracking-wider text-brand uppercase\">Analytical Documentation<\/span>\n                            <h3 class=\"text-xl sm:text-3xl font-extrabold text-gray-900 mt-1\">Latest test results<\/h3>\n                        <\/div>\n                        <div class=\"flex gap-2\">\n                            <button id=\"test-mass-5mg\" onclick=\"selectMass(5)\" class=\"bg-brand-light text-brand border border-brand px-3 sm:px-4 py-1.5 rounded-lg sm:rounded-xl text-[10px] sm:text-xs font-bold transition-colors\">5mg + 5mg<\/button>\n                            <button id=\"test-mass-10mg\" onclick=\"selectMass(10)\" class=\"bg-white border border-purple-200 text-gray-600 px-3 sm:px-4 py-1.5 rounded-lg sm:rounded-xl text-[10px] sm:text-xs font-bold transition-colors\">10mg + 10mg<\/button>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n                        <!-- Third-Party Analytical Testing -->\n                        <div class=\"bg-white border border-purple-200 rounded-2xl p-5 sm:p-6 shadow-sm flex flex-col justify-between\">\n                            <div>\n                                <div class=\"flex items-center justify-between mb-3\">\n                                    <span class=\"bg-green-100 text-green-700 text-[10px] font-bold px-3 py-1 rounded-full uppercase tracking-wider flex items-center gap-1\">\n                                        <span class=\"w-1.5 h-1.5 rounded-full bg-green-500\"><\/span> Verified Batch\n                                    <\/span>\n                                    <span class=\"text-gray-400 text-xs font-medium\">HPLC \/ FTIR<\/span>\n                                <\/div>\n                                <h4 class=\"text-base sm:text-lg font-extrabold text-gray-900 mb-1\">Third-Party Lab Results<\/h4>\n                                <p class=\"text-xs text-gray-600 mb-4 leading-relaxed\">\n                                    Every batch is independently tested by accredited analytical laboratories to certify identity, sequence, and purity standards (>98%).\n                                <\/p>\n                            <\/div>\n\n                            <div class=\"flex flex-col sm:flex-row gap-2 pt-2 border-t border-purple-50\">\n                                <a href=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/bpc157tb500.png\" target=\"_blank\" class=\"flex-1 inline-flex items-center justify-center gap-2 bg-brand hover:bg-brand-hover text-white text-xs font-bold py-2.5 px-4 rounded-xl transition-all shadow-sm\">\n                                    <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z\"><\/path><\/svg>\n                                    Lab Report (PDF)\n                                <\/a>\n                                <button onclick=\"openImageModal('https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/bpc157finnrickk.png')\" class=\"flex-1 inline-flex items-center justify-center gap-2 bg-brand-light hover:bg-brand text-brand hover:text-white border border-brand text-xs font-bold py-2.5 px-4 rounded-xl transition-all\">\n                                    <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"><\/path><\/svg>\n                                    View Certificate\n                                <\/button>\n                            <\/div>\n                        <\/div>\n\n                        <!-- Safety Data Sheet (SDS) -->\n                        <div class=\"bg-white border border-purple-200 rounded-2xl p-5 sm:p-6 shadow-sm flex flex-col justify-between\">\n                            <div>\n                                <div class=\"flex items-center justify-between mb-3\">\n                                    <span class=\"bg-purple-100 text-brand text-[10px] font-bold px-3 py-1 rounded-full uppercase tracking-wider\">\n                                        Safety Compliance\n                                    <\/span>\n                                    <span class=\"text-gray-400 text-xs font-medium\">GHS \/ REACH<\/span>\n                                <\/div>\n                                <h4 class=\"text-base sm:text-lg font-extrabold text-gray-900 mb-1\">Safety Data Sheet (SDS)<\/h4>\n                                <p class=\"text-xs text-gray-600 mb-4 leading-relaxed\">\n                                    Complete hazard analysis, physical-chemical properties, handling guidelines, and laboratory toxicological profile.\n                                <\/p>\n                            <\/div>\n\n                            <div class=\"pt-2 border-t border-purple-50\">\n                                <a href=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/bpc157EnglishCompleted.pdf\" target=\"_blank\" class=\"w-full inline-flex items-center justify-center gap-2 bg-brand-light hover:bg-brand text-brand hover:text-white border border-brand text-xs font-bold py-2.5 px-4 rounded-xl transition-all shadow-sm\">\n                                    <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"><\/path><\/svg>\n                                    Open Safety Data Sheet (SDS)\n                                <\/a>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Tab Content: Overview -->\n                <div id=\"content-overview\" class=\"tab-content text-gray-700 leading-relaxed text-[11px] sm:text-sm space-y-3\">\n                    <p>BPC-157 \/ TB500 combines two separately described peptide research materials in one vial. The blend should be interpreted component by component for identity, sequence, and analytical documentation rather than as a new single compound.<\/p>\n                    <p>The listed sources are a research starting point rather than a substitute for product evidence: the supplied material&#8217;s exact form, lot, and measured characteristics must be established through its signed analytical record.<\/p>\n                <\/div>\n\n                <!-- Tab Content: Specifications -->\n                <div id=\"content-specs\" class=\"tab-content text-gray-700 leading-relaxed\">\n                    <h3 class=\"text-base sm:text-lg font-extrabold text-brand mb-4 border-b border-purple-100 pb-2\">Specifications<\/h3>\n                    <div class=\"space-y-4\">\n                        <div>\n                            <h4 class=\"font-bold text-gray-900 uppercase text-[10px] sm:text-xs tracking-wider mb-1\">Molecular profile Sequence<\/h4>\n                            <p class=\"bg-brand-light p-2.5 sm:p-3 rounded-lg font-mono text-[10px] sm:text-xs break-all border border-purple-100\">\n                                <strong class=\"text-brand\">BPC-157:<\/strong> Gly-Glu-Pro-Pro-Pro-Gly-Lys-Pro-Ala-Asp-Asp-Ala-Gly-Leu-Val<br><br>\n                                <strong class=\"text-brand\">TB-500:<\/strong> Ac-Ser-Asp-Lys-Pro-Asp-Met-Ala-Glu-Ile-Glu-Lys-Phe-Asp-Lys-Ser-Lys-Leu-Lys-Lys-Thr-Glu-Thr-Gln-Glu-Lys-Asn-Pro-Leu-Pro-Ser-Lys-Glu-Thr-Ile-Glu-Gln-Glu-Lys-Gln-Ala-Gly-Glu-Ser-OH\n                            <\/p>\n                        <\/div>\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n                            <div>\n                                <h4 class=\"font-bold text-gray-900 uppercase text-[10px] sm:text-xs tracking-wider mb-1\">Molecular mass<\/h4>\n                                <ul class=\"list-disc list-inside text-[11px] sm:text-xs pl-1\">\n                                    <li><strong>BPC-157:<\/strong> 1419.54 g\/mol<\/li>\n                                    <li><strong>TB-500:<\/strong> 4963.49 g\/mol<\/li>\n                                <\/ul>\n                            <\/div>\n                            <div>\n                                <h4 class=\"font-bold text-gray-900 uppercase text-[10px] sm:text-xs tracking-wider mb-1\">CAS number<\/h4>\n                                <ul class=\"list-disc list-inside text-[11px] sm:text-xs pl-1\">\n                                    <li><strong>BPC-157:<\/strong> 137525-51-0<\/li>\n                                    <li><strong>TB-500:<\/strong> 77591-33-4<\/li>\n                                <\/ul>\n                            <\/div>\n                        <\/div>\n                        <div class=\"pt-3 border-t border-purple-100\">\n                            <h4 class=\"font-extrabold text-gray-900 text-sm mb-3\">Material record<\/h4>\n                            <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n                                <div class=\"bg-brand-light border border-purple-100 p-3 rounded-lg\">\n                                    <h5 class=\"font-bold text-brand text-xs mb-0.5\">Physical appearance<\/h5>\n                                    <p class=\"text-[11px] sm:text-xs\">White to off-white lyophilized powder<\/p>\n                                <\/div>\n                                <div class=\"bg-brand-light border border-purple-100 p-3 rounded-lg\">\n                                    <h5 class=\"font-bold text-brand text-xs mb-0.5\">Solubility<\/h5>\n                                    <p class=\"text-[11px] sm:text-xs\">Soluble in bacteriostatic water and aqueous solvents.<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Tab Content: Handling -->\n                <div id=\"content-handling\" class=\"tab-content\">\n                    <div class=\"space-y-6 text-xs sm:text-sm text-gray-700\">\n                        <div>\n                            <h3 class=\"font-extrabold text-brand mb-2 text-sm sm:text-base\">Peptides in transport<\/h3>\n                            <p class=\"leading-relaxed\">Peptides in lyophilized form are supplied in glass vials by standard shipping methods and do not require refrigeration. Short-term temperature fluctuations during transport will not reduce their quality and efficacy. Even at high summer temperatures, the peptides in lyophilized form are stable for several weeks.<\/p>\n                        <\/div>\n                        <div>\n                            <h3 class=\"font-extrabold text-brand mb-2 text-sm sm:text-base\">Storage of lyophilized peptides<\/h3>\n                            <p class=\"leading-relaxed mb-2\">Lyophilized peptides should be stored in a dry place, protected from light and moisture. The following storage conditions are generally recommended:<\/p>\n                            <ul class=\"list-disc list-inside space-y-1 ml-2\">\n                                <li><strong>Room temperature (15\u201325 \u00b0C):<\/strong> Up to 3 months<\/li>\n                                <li><strong>Refrigerated (2\u20138 \u00b0C):<\/strong> Up to 6 months<\/li>\n                                <li><strong>Frozen (-20 \u00b0C or below):<\/strong> 3\u20135 years (recommended for long-term storage)<\/li>\n                            <\/ul>\n                            <p class=\"mt-2 text-gray-500 italic text-[11px] sm:text-xs\">Allow the vial to reach room temperature after taking it out of the refrigerator or freezer.<\/p>\n                        <\/div>\n                        <div>\n                            <h3 class=\"font-extrabold text-brand mb-2 text-sm sm:text-base\">Storage of reconstituted peptides<\/h3>\n                            <p class=\"leading-relaxed mb-2\">Once reconstituted, peptide solutions are generally less stable than their lyophilized form and should be stored under refrigerated conditions whenever possible. The following storage conditions are generally recommended:<\/p>\n                            <ul class=\"list-disc list-inside space-y-1 ml-2\">\n                                <li><strong>Room temperature (15\u201325 \u00b0C):<\/strong> Avoid prolonged storage<\/li>\n                                <li><strong>Refrigerated (2\u20138 \u00b0C):<\/strong> Typically 4\u20138 weeks<\/li>\n                                <li><strong>Frozen (-20 \u00b0C or below):<\/strong> Up to 3\u20134 months<\/li>\n                            <\/ul>\n                            <p class=\"mt-2 text-gray-500 italic text-[11px] sm:text-xs\">To preserve peptide integrity, avoid repeated freeze\u2013thaw cycles, as these may accelerate peptide degradation.<\/p>\n                        <\/div>\n                        <div class=\"bg-brand-light\/50 border-l-4 border-brand p-4 rounded-r-lg mt-4\">\n                            <h4 class=\"font-bold text-gray-900 mb-1\">Important:<\/h4>\n                            <p class=\"text-[11px] sm:text-xs leading-relaxed text-gray-700\">Most manufacturers recommend discarding reconstituted peptides within 4 weeks when stored at 2\u20138 \u00b0C. This recommendation is intentionally conservative and may not reflect the actual chemical stability of every peptide. In our own stability studies, many peptides reconstituted in bacteriostatic water showed no detectable degradation after 12 weeks of refrigerated storage. As peptide stability is highly sequence- and formulation-dependent, this result should not be extrapolated to all peptides without supporting stability data.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- Tab Content: References -->\n                <div id=\"content-references\" class=\"tab-content text-gray-700 text-xs sm:text-sm\"><p class=\"text-center py-6 italic text-gray-400\">Scientific references and citations will be displayed here.<\/p><\/div>\n            <\/div>\n        <\/div>\n\n        <!-- LOGO SLIDESHOW SECTION -->\n        <div class=\"mt-8 sm:mt-12 py-6 sm:py-8 bg-white border border-purple-200 rounded-2xl shadow-sm overflow-hidden relative\">\n            <p class=\"text-center text-gray-900 font-bold mb-4 sm:mb-6 text-xs sm:text-base\">Each new formulation begins with data from reliable scientific sources:<\/p>\n\n            <div class=\"w-full overflow-hidden\">\n                <div class=\"logo-slider gap-4 sm:gap-10 items-center px-4\">\n                    <!-- SET 1 -->\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/pubchem.png\" alt=\"PubChem\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/chemickelisty.png\" alt=\"Chemicke Listy\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/logo-4.webp\" alt=\"Logo 4\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/janoshik-1.png\" alt=\"Janoshik\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/liquilabs-scaled.png\" alt=\"LiquiLabs\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/2020-06-01_14-33-25.jpeg\" alt=\"Science Resource\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <!-- SET 2 -->\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/pubchem.png\" alt=\"PubChem\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/chemickelisty.png\" alt=\"Chemicke Listy\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/logo-4.webp\" alt=\"Logo 4\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/janoshik-1.png\" alt=\"Janoshik\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/04\/liquilabs-scaled.png\" alt=\"LiquiLabs\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                    <div class=\"bg-white border border-purple-100 p-2 sm:p-3 rounded-lg shadow-sm min-w-[100px] sm:min-w-[140px] h-12 sm:h-16 flex items-center justify-center\">\n                        <img decoding=\"async\" src=\"https:\/\/czechpeptide.com\/wp-content\/uploads\/2026\/09\/2020-06-01_14-33-25.jpeg\" alt=\"Science Resource\" class=\"max-h-full max-w-full object-contain\">\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"absolute top-0 bottom-0 left-0 w-8 sm:w-24 bg-gradient-to-r from-white to-transparent z-10 pointer-events-none\"><\/div>\n            <div class=\"absolute top-0 bottom-0 right-0 w-8 sm:w-24 bg-gradient-to-l from-white to-transparent z-10 pointer-events-none\"><\/div>\n        <\/div>\n    <\/main>\n\n    <!-- Fullscreen Image Zoom Modal -->\n    <div id=\"image-zoom-modal\" class=\"fixed inset-0 z-[100] hidden bg-black\/90 backdrop-blur-sm flex items-center justify-center p-4 transition-opacity\" onclick=\"closeImageModal()\">\n        <button onclick=\"closeImageModal()\" class=\"absolute top-4 right-4 text-white hover:text-brand bg-black\/50 rounded-full p-2 z-50\">\n            <svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"><\/path><\/svg>\n        <\/button>\n        <img decoding=\"async\" id=\"zoomed-image\" src=\"\" class=\"max-w-full max-h-full object-contain transform scale-95 transition-transform duration-300\" alt=\"Zoomed Product\">\n    <\/div>\n\n    <!-- Cart Modal -->\n    <div id=\"cart-modal\" class=\"fixed inset-0 z-50 hidden bg-gray-900 bg-opacity-50 backdrop-blur-sm flex items-center justify-center p-4 transition-opacity\">\n        <div class=\"bg-white rounded-2xl border-2 border-brand p-6 max-w-sm w-full shadow-2xl transform scale-95 transition-transform\" id=\"cart-modal-content\">\n            <div class=\"flex items-center justify-center w-12 h-12 bg-green-100 rounded-full mb-4 mx-auto\">\n                <svg class=\"w-6 h-6 text-green-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"><\/path><\/svg>\n            <\/div>\n            <h2 class=\"text-xl font-extrabold text-center text-gray-900 mb-1\">Added to Cart!<\/h2>\n            <p class=\"text-center text-sm text-gray-500 mb-6\">\n                <span id=\"modal-qty-text\" class=\"font-bold text-brand\">1x<\/span> BPC-157 \/ TB500 added.\n            <\/p>\n            <div class=\"flex flex-col gap-2.5\">\n                <button onclick=\"goToCart()\" class=\"w-full bg-brand hover:bg-brand-hover text-white font-bold py-3 rounded-full shadow-md transition-transform active:scale-95 text-sm\">Go to Cart<\/button>\n                <button onclick=\"closeModal()\" class=\"w-full bg-white border-2 border-brand text-brand hover:bg-brand-light font-bold py-2.5 rounded-full transition-colors text-sm\">Continue Shopping<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Script -->\n    <script>\n        let currentQuantity = 1;\n        let basePrice = 2032; \/\/ fallback only, used if the live price lookup below fails\n        let currentMass = 5;\n\n        const suggestedProductPrice = 99;\n\n        let mainProductId = 100;\n        const bacWaterId = 542;\n\n        \/*\n         * FIX SUMMARY (WordPress \/ WooCommerce Store API caching bug)\n         * -------------------------------------------------------------\n         * Symptom: a brand-new \/ incognito visitor's first add-to-cart on THIS\n         * page reports success but the cart ends up empty; adding a product on\n         * a different product page first, then coming back here, works fine.\n         *\n         * Root cause: GET \/wp-json\/wc\/store\/v1\/cart is a plain, unparameterized\n         * GET request. Many caching layers (page cache plugins - WP Rocket,\n         * LiteSpeed Cache, W3 Total Cache - CDNs like Cloudflare, or some hosts'\n         * default \"cache everything\" rules) will cache this response because it\n         * looks like any other cacheable GET.\n         *\n         * For a first-time visitor with no cart cookie yet, that means:\n         *   - the Set-Cookie header that should create THEIR own session may\n         *     never reach them (cached responses typically don't carry a fresh\n         *     Set-Cookie),\n         *   - the Nonce \/ Cart-Token headers our JS reads may belong to a\n         *     cached response rather than this visitor's real session,\n         *   - the final \"verify\" GET can return a stale cached snapshot (e.g.\n         *     an empty cart) even though the add-item call actually succeeded\n         *     against a different session.\n         *\n         * Once a visitor already has a WooCommerce cart cookie (e.g. because\n         * they added something on another product page first), most cache\n         * layers automatically bypass the cache for that request - which is\n         * exactly why \"add elsewhere first, then it works here\" happens.\n         *\n         * Fix applied below:\n         *   1. bust() appends a random\/timestamped query param to every Store\n         *     API URL so a cache can't match it against a previously cached\n         *     response for what looks like the \"same\" URL.\n         *   2. Every fetch() uses cache: 'no-store' plus explicit\n         *     Cache-Control \/ Pragma no-cache request headers, telling any\n         *     cache-aware layer in between not to reuse or store the response.\n         *   3. addToCart() resets cartNonce to null at the start of every\n         *     attempt, forcing a guaranteed-fresh session handshake instead of\n         *     trusting anything captured on page load.\n         *\n         * Longer-term recommendation (outside this file): if your host, CDN,\n         * or cache plugin has a \"exclude these paths from caching\" setting,\n         * add \/wp-json\/wc\/store\/* to it. That removes the risk at the source;\n         * the JS-side fix above is a robust safety net either way.\n         *\n         * This still assumes the file is served from czechpeptide.com itself\n         * (same origin as the shop), since these are relative URLs and rely on\n         * the visitor's cart cookie\/session being sent automatically.\n         *\n         * ============================================================\n         * ROUND 2 - WHY THE CART WAS STILL EMPTY AFTER THE ABOVE FIX\n         * ============================================================\n         * Two concrete bugs remained, and they explain the \"clicks Add to\n         * cart, nothing lands in the cart\" report directly:\n         *\n         * BUG A - WRONG NONCE HEADER NAME.\n         *   The previous version sent the nonce as \"X-WC-Store-API-Nonce\".\n         *   That header name was renamed to plain \"Nonce\" in WooCommerce\n         *   Blocks 7.2.0, which shipped inside WooCommerce 6.4. On any shop\n         *   newer than that, the old name is simply ignored, the write\n         *   request is rejected as \"missing\/invalid nonce\" (401\/403), and the\n         *   code silently drops into the redirect fallback. The current\n         *   WooCommerce Store API docs specify a request header named \"Nonce\".\n         *   FIX: send BOTH \"Nonce\" (current) and \"X-WC-Store-API-Nonce\"\n         *   (legacy) so the call works regardless of the shop's WooCommerce\n         *   version.\n         *\n         * BUG B - CART-TOKEN SESSION SPLIT.\n         *   The previous version sent a \"Cart-Token\" header on the add-item\n         *   and verify calls. Cart-Token identifies a guest cart session\n         *   independently of the normal WooCommerce session cookie. If the\n         *   cookie never got set (cache stripping Set-Cookie, Safari\/Edge\n         *   tracking protection, third-party-cookie blocking), the item was\n         *   written into the token's session while the real \/cart\/ page -\n         *   which reads ONLY the cookie session - loaded a different, empty\n         *   session. The JS then verified against the token session, saw the\n         *   item, and cheerfully showed \"Added to Cart!\". That is exactly the\n         *   \"success message, empty cart\" symptom.\n         *   FIX: never send Cart-Token. Every request now resolves to the\n         *   cookie-backed session - the same session \/cart\/ and checkout read.\n         *\n         * PRIMARY PATH CHANGE: the add now goes through WooCommerce's own\n         * built-in AJAX endpoint \/?wc-ajax=add_to_cart first. This is the\n         * exact endpoint core WooCommerce uses for its shop\/archive \"Add to\n         * cart\" buttons. It needs no nonce, it is not a REST route (so cache\n         * rules targeting \/wp-json\/ don't touch it), and it always writes to\n         * the cookie session. The Store API is kept as an automatic secondary\n         * path, and the classic \/cart\/?add-to-cart= link remains the last\n         * resort, so there are three independent ways for the add to succeed.\n         *\n         * NOTE ON THE CONSOLE WARNINGS IN THE SCREENSHOT: the \"Tracking\n         * Prevention blocked access to storage\" lines for unpkg.com and\n         * cdnjs.cloudflare.com are the browser blocking storage for those\n         * third-party scripts. They are unrelated to this cart bug and are\n         * not fixed (or caused) by anything in this file.\n         *\/\n        let cartNonce = null;\n        let cartToken = null;\n\n        const qtyInput = document.getElementById('qty-input');\n        const priceDisplay = document.getElementById('btn-total-price');\n\n        const bacCheckboxes = document.querySelectorAll('.bac-checkbox');\n\n        const bundleCards = [\n            document.getElementById('bundle-1'),\n            document.getElementById('bundle-2'),\n            document.getElementById('bundle-3')\n        ];\n\n        \/\/ IMAGE ZOOM LOGIC\n        const imageZoomModal = document.getElementById('image-zoom-modal');\n        const zoomedImage = document.getElementById('zoomed-image');\n\n        function openImageModal(src) {\n            zoomedImage.src = src;\n            imageZoomModal.classList.remove('hidden');\n            setTimeout(() => {\n                zoomedImage.classList.remove('scale-95');\n                zoomedImage.classList.add('scale-100');\n            }, 10);\n            document.body.style.overflow = 'hidden';\n        }\n\n        function closeImageModal() {\n            zoomedImage.classList.remove('scale-100');\n            zoomedImage.classList.add('scale-95');\n            setTimeout(() => {\n                imageZoomModal.classList.add('hidden');\n                document.body.style.overflow = '';\n            }, 150);\n        }\n\n        \/*\n         * PRICE LOOKUP\n         * This calls the WooCommerce Store API, which is built into WooCommerce (>= 8.6)\n         * or provided by the WooCommerce Blocks plugin on older versions.\n         * IMPORTANT ASSUMPTION: this file is embedded ON czechpeptide.com itself (same\n         * origin as the shop). I switched the URL to a relative path (\"\/wp-json\/...\")\n         * on purpose: a relative path only works same-origin, and it avoids CORS\n         * problems entirely. If this page is ever hosted somewhere else (a different\n         * domain, or previewed inside an unrelated sandbox), this fetch will fail and\n         * silently fall back to the hardcoded price below - open the browser console\n         * to see the real error if that happens.\n         *\/\n        async function fetchProductData() {\n            try {\n                const response = await fetch(bust('\/wp-json\/wc\/store\/v1\/products\/' + mainProductId), {\n                    cache: 'no-store',\n                    headers: noCacheHeaders()\n                });\n\n                if (!response.ok) {\n                    throw new Error('Store API returned HTTP ' + response.status + ' for product ' + mainProductId);\n                }\n\n                const data = await response.json();\n\n                if (data && data.prices && data.prices.price) {\n                    const minorUnit = data.prices.currency_minor_unit ?? 2;\n                    const fetchedPrice = parseInt(data.prices.price, 10) \/ Math.pow(10, minorUnit);\n                    if (Number.isFinite(fetchedPrice) && fetchedPrice > 0) {\n                        basePrice = fetchedPrice;\n                    }\n                } else {\n                    console.warn('Store API response for product', mainProductId, 'had no usable price field:', data);\n                }\n\n                \/\/ Stock Logic\n                const stockDot = document.getElementById('stock-dot');\n                const stockStatus = document.getElementById('stock-status');\n                const addToCartBtn = document.getElementById('add-to-cart-btn');\n\n                if (data.is_in_stock === false) {\n                    stockStatus.innerText = \"Out of stock\";\n                    stockStatus.className = \"text-[10px] sm:text-xs font-bold text-red-600\";\n                    stockDot.className = \"w-1.5 h-1.5 sm:w-2 sm:h-2 rounded-full bg-red-500\";\n                    addToCartBtn.disabled = true;\n                } else {\n                    if (data.add_to_cart && data.add_to_cart.maximum > 0 && data.add_to_cart.maximum <= 10) {\n                        stockStatus.innerText = \"Low in stock\";\n                        stockStatus.className = \"text-[10px] sm:text-xs font-bold text-yellow-600\";\n                        stockDot.className = \"w-1.5 h-1.5 sm:w-2 sm:h-2 rounded-full bg-yellow-500\";\n                    } else {\n                        stockStatus.innerText = \"In stock\";\n                        stockStatus.className = \"text-[10px] sm:text-xs font-bold text-green-600\";\n                        stockDot.className = \"w-1.5 h-1.5 sm:w-2 sm:h-2 rounded-full bg-green-500\";\n                    }\n                    addToCartBtn.disabled = false;\n                }\n\n                calculateAndUpdateUI();\n            } catch (error) {\n                \/\/ Logged clearly on purpose: a silent catch here previously made it look\n                \/\/ like the \"real\" WooCommerce price was loading when it was actually\n                \/\/ always the hardcoded fallback. Check this in DevTools > Console.\n                console.error('Could not fetch live product data for product ' + mainProductId + ', using fallback price. Reason:', error);\n                if (mainProductId === 904) basePrice = 3500;\n                else basePrice = 2032;\n                calculateAndUpdateUI();\n            }\n        }\n\n        async function selectMass(mass) {\n            if (currentMass === mass) return;\n\n            currentMass = mass;\n            const btn5 = document.getElementById('mass-5mg');\n            const btn10 = document.getElementById('mass-10mg');\n\n            const testBtn5 = document.getElementById('test-mass-5mg');\n            const testBtn10 = document.getElementById('test-mass-10mg');\n\n            if (mass === 5) {\n                mainProductId = 100;\n                btn5.className = \"bg-brand text-white px-3 sm:px-3 py-1.5 sm:py-1.5 rounded-full text-[10px] sm:text-xs font-bold shadow-sm transition-transform active:scale-95\";\n                btn10.className = \"bg-white border border-purple-200 text-brand hover:bg-brand-light px-3 sm:px-3 py-1.5 sm:py-1.5 rounded-full text-[10px] sm:text-xs font-bold shadow-sm transition-all active:scale-95\";\n\n                if (testBtn5 && testBtn10) {\n                    testBtn5.className = \"bg-brand-light text-brand border border-brand px-3 sm:px-4 py-1.5 rounded-lg sm:rounded-xl text-[10px] sm:text-xs font-bold transition-colors\";\n                    testBtn10.className = \"bg-white border border-purple-200 text-gray-600 px-3 sm:px-4 py-1.5 rounded-lg sm:rounded-xl text-[10px] sm:text-xs font-bold transition-colors\";\n                }\n            } else {\n                mainProductId = 904;\n                btn10.className = \"bg-brand text-white px-3 sm:px-3 py-1.5 sm:py-1.5 rounded-full text-[10px] sm:text-xs font-bold shadow-sm transition-transform active:scale-95\";\n                btn5.className = \"bg-white border border-purple-200 text-brand hover:bg-brand-light px-3 sm:px-3 py-1.5 sm:py-1.5 rounded-full text-[10px] sm:text-xs font-bold shadow-sm transition-all active:scale-95\";\n\n                if (testBtn5 && testBtn10) {\n                    testBtn10.className = \"bg-brand-light text-brand border border-brand px-3 sm:px-4 py-1.5 rounded-lg sm:rounded-xl text-[10px] sm:text-xs font-bold transition-colors\";\n                    testBtn5.className = \"bg-white border border-purple-200 text-gray-600 px-3 sm:px-4 py-1.5 rounded-lg sm:rounded-xl text-[10px] sm:text-xs font-bold transition-colors\";\n                }\n            }\n\n            await fetchProductData();\n\n            calculateAndUpdateUI();\n        }\n\n        function formatPrice(price) {\n            return price.toLocaleString('cs-CZ');\n        }\n\n        function calculateAndUpdateUI() {\n            let discount = 0;\n            if (currentQuantity === 2) discount = 0.10;\n            else if (currentQuantity >= 3) discount = 0.15;\n\n            let total = Math.round((basePrice * currentQuantity) * (1 - discount));\n\n            if (bacCheckboxes.length > 0 && bacCheckboxes[0].checked) {\n                total += suggestedProductPrice;\n            }\n\n            priceDisplay.innerText = formatPrice(total);\n\n            if(bundleCards[0] && bundleCards[1] && bundleCards[2]) {\n                bundleCards.forEach(card => {\n                    card.classList.remove('border-2', 'border-brand', 'bg-brand-light');\n                    card.classList.add('border', 'border-purple-200', 'bg-white');\n                    const textLabel = card.querySelector('p.font-extrabold');\n                    if (textLabel) {\n                        textLabel.classList.remove('text-brand');\n                        textLabel.classList.add('text-gray-900');\n                    }\n                });\n                let activeIndex = 0;\n                if (currentQuantity === 2) activeIndex = 1;\n                if (currentQuantity >= 3) activeIndex = 2;\n\n                bundleCards[activeIndex].classList.remove('border', 'border-purple-200', 'bg-white');\n                bundleCards[activeIndex].classList.add('border-2', 'border-brand', 'bg-brand-light');\n                const activeText = bundleCards[activeIndex].querySelector('p.font-extrabold');\n                if (activeText) {\n                    activeText.classList.remove('text-gray-900');\n                    activeText.classList.add('text-brand');\n                }\n            }\n        }\n\n        function handleQtyChange(delta) {\n            let newQty = currentQuantity + delta;\n            if (newQty < 1) newQty = 1;\n\n            currentQuantity = newQty;\n            qtyInput.value = currentQuantity;\n            calculateAndUpdateUI();\n        }\n\n        function handleQtyInput() {\n            let val = parseInt(qtyInput.value);\n            if (isNaN(val) || val < 1) { val = 1; qtyInput.value = 1; }\n            currentQuantity = val;\n            calculateAndUpdateUI();\n        }\n\n        function toggleSuggestedProduct(event) {\n            const isChecked = event.target.checked;\n            bacCheckboxes.forEach(cb => cb.checked = isChecked);\n            calculateAndUpdateUI();\n        }\n\n        function selectBundle(vialsThreshold) {\n            if (vialsThreshold === 1) currentQuantity = 1;\n            else if (vialsThreshold === 2) currentQuantity = 2;\n            else if (vialsThreshold === 3) {\n                if (currentQuantity < 3) currentQuantity = 3;\n            }\n            qtyInput.value = currentQuantity;\n            calculateAndUpdateUI();\n        }\n\n        function switchTab(tabId) {\n            document.querySelectorAll('.tab-btn').forEach(btn => {\n                btn.classList.remove('border-brand', 'text-brand');\n                btn.classList.add('border-transparent', 'text-gray-500');\n            });\n            document.querySelectorAll('.tab-content').forEach(content => {\n                content.classList.remove('active');\n            });\n            const activeBtn = document.getElementById(`tab-${tabId}`);\n            const activeContent = document.getElementById(`content-${tabId}`);\n            if(activeBtn && activeContent) {\n                activeBtn.classList.remove('border-transparent', 'text-gray-500');\n                activeBtn.classList.add('border-brand', 'text-brand');\n                activeContent.classList.add('active');\n            }\n        }\n\n        function toggleAccordion(id) {\n            const content = document.getElementById('content-' + id);\n            const icon = document.getElementById('icon-' + id);\n\n            if (content.classList.contains('hidden')) {\n                content.classList.remove('hidden');\n                icon.style.transform = 'rotate(180deg)';\n            } else {\n                content.classList.add('hidden');\n                icon.style.transform = 'rotate(0deg)';\n            }\n        }\n\n        const modal = document.getElementById('cart-modal');\n        const modalContent = document.getElementById('cart-modal-content');\n\n        \/\/ Helper: append a cache-busting param so CDNs\/page caches can't\n        \/\/ return a previously-cached response for what looks like an\n        \/\/ identical GET URL. This is the core fix for the \"empty cart on\n        \/\/ first visit\" bug described above.\n        function bust(url) {\n            const sep = url.includes('?') ? '&' : '?';\n            return url + sep + '_ts=' + Date.now() + '_' + Math.random().toString(36).slice(2);\n        }\n\n        \/\/ Helper: headers that tell any well-behaved cache\/proxy in the\n        \/\/ chain not to store or reuse this response. (Belt-and-suspenders\n        \/\/ alongside `cache: 'no-store'` - some proxies only honor the\n        \/\/ header, not the fetch option.)\n        function noCacheHeaders(extra = {}) {\n            return {\n                'Accept': 'application\/json',\n                'Cache-Control': 'no-cache, no-store, must-revalidate',\n                'Pragma': 'no-cache',\n                ...extra\n            };\n        }\n\n        \/*\n         * ADD TO CART\n         * The original code POSTed a FormData body to the site's homepage with\n         * mode: 'no-cors'. Two things made that unreliable:\n         *  1. In 'no-cors' mode the browser gives you an opaque response, so the\n         *     code could never actually tell whether WooCommerce accepted the\n         *     item - it always showed \"Added to Cart!\" even on failure.\n         *  2. Posting to \"\/\" isn't a documented WooCommerce cart entry point, so\n         *     behavior there depends on the theme\/page builder and isn't guaranteed.\n         *\n         * This version uses WooCommerce's own Store API (the same API the block-based\n         * Cart\/Checkout blocks use), which is designed for exactly this and lets us\n         * read a real success\/failure response:\n         *   GET  \/wp-json\/wc\/store\/v1\/cart         -> gives a Nonce + (for guests) a Cart-Token\n         *   POST \/wp-json\/wc\/store\/v1\/cart\/add-item -> adds {id, quantity}\n         *\n         * Every call below is cache-busted (see bust()\/noCacheHeaders() above) and\n         * uses cache: 'no-store', specifically to fix the incognito\/new-visitor\n         * \"cart shows empty\" bug documented at the top of this script block.\n         *\n         * ASSUMPTION I'm making: this file is served from czechpeptide.com itself, so\n         * these relative URLs are same-origin and the visitor's cart cookie\/session is\n         * sent automatically. If this ever runs on a different domain than the shop,\n         * this will fail (cross-site requests can't share the cart session), and you'd\n         * need the shop to explicitly enable CORS with credentials for your origin.\n         *\n         * As a safety net, if the Store API call fails for any reason, this falls back\n         * to WooCommerce's classic add-to-cart link\n         * (\"\/?add-to-cart=ID&quantity=N\"), which has worked on essentially every\n         * WooCommerce install for years, so the customer can still complete the action\n         * instead of hitting a dead end.\n         *\/\n        async function ensureCartSession(forceRefresh) {\n            if (cartNonce && !forceRefresh) return;\n            const res = await fetch(bust('\/wp-json\/wc\/store\/v1\/cart'), {\n                method: 'GET',\n                credentials: 'same-origin',\n                cache: 'no-store',\n                headers: noCacheHeaders()\n            });\n            if (!res.ok) {\n                throw new Error('Could not start a cart session (HTTP ' + res.status + ')');\n            }\n            cartNonce = res.headers.get('Nonce') || res.headers.get('X-WC-Store-API-Nonce');\n            const token = res.headers.get('Cart-Token');\n            if (token) cartToken = token;\n            if (!cartNonce) {\n                \/\/ Some proxies\/CDNs strip custom response headers. If that happens the\n                \/\/ Store API add-item call below will 403 and we fall back automatically.\n                console.warn('No Store API nonce header received - either a proxy is stripping response headers, or a cache is still serving a stale response for this URL. Add \/wp-json\/wc\/store\/* to your cache exclusion list.');\n            }\n        }\n\n        \/*\n         * PRIMARY ADD PATH: WooCommerce's built-in AJAX endpoint.\n         * ------------------------------------------------------\n         * \/?wc-ajax=add_to_cart is the same endpoint core WooCommerce uses for the\n         * \"Add to cart\" buttons on shop\/category pages. Why it is the most reliable\n         * option here:\n         *   - no nonce required, so the nonce-header-name mismatch that broke the\n         *     Store API path cannot break this one,\n         *   - it is NOT under \/wp-json\/, so cache rules aimed at the REST API do not\n         *     apply to it,\n         *   - it writes to the normal cookie-backed WooCommerce session, which is\n         *     precisely the session the \/cart\/ page and checkout read. No token\/cookie\n         *     session split is possible.\n         * WooCommerce replies with JSON: {fragments, cart_hash} on success, or\n         * {error: true, product_url: \"...\"} when it refuses the item.\n         *\/\n        async function wcAjaxAddItem(id, quantity) {\n            const body = new URLSearchParams();\n            body.append('product_id', String(id));\n            body.append('quantity', String(quantity));\n\n            const res = await fetch(bust('\/?wc-ajax=add_to_cart'), {\n                method: 'POST',\n                credentials: 'same-origin',\n                cache: 'no-store',\n                headers: noCacheHeaders({\n                    'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8',\n                    'X-Requested-With': 'XMLHttpRequest'\n                }),\n                body: body.toString()\n            });\n\n            if (!res.ok) {\n                throw new Error('wc-ajax add_to_cart failed (HTTP ' + res.status + ') for product ' + id);\n            }\n\n            const raw = await res.text();\n            let data = null;\n            try { data = JSON.parse(raw); } catch (e) { data = null; }\n\n            if (data && data.error) {\n                throw new Error('WooCommerce refused product ' + id + ' (out of stock, or purchase not allowed).');\n            }\n\n            return data;\n        }\n\n        async function storeApiAddItem(id, quantity) {\n            await ensureCartSession(false);\n\n            const buildHeaders = () => {\n                const headers = noCacheHeaders({ 'Content-Type': 'application\/json' });\n                \/\/ FIX APPLIED HERE: the header WooCommerce actually reads is named\n                \/\/ \"Nonce\". \"X-WC-Store-API-Nonce\" is the pre-WooCommerce-6.4 legacy\n                \/\/ name. Sending both means the request is accepted regardless of which\n                \/\/ WooCommerce version the shop is on. Sending only the legacy name (as\n                \/\/ before) makes modern WooCommerce reject every write.\n                if (cartNonce) {\n                    headers['Nonce'] = cartNonce;\n                    headers['X-WC-Store-API-Nonce'] = cartNonce;\n                }\n                \/\/ FIX APPLIED HERE: Cart-Token is deliberately NOT sent any more.\n                \/\/ Sending it can route the add into a token-identified guest session\n                \/\/ that the cookie-based \/cart\/ page cannot see - the exact cause of\n                \/\/ \"success message, empty cart\". Relying on the cookie keeps the JS,\n                \/\/ the cart page, and checkout all pointed at one single session.\n                return headers;\n            };\n\n            let res = await fetch(bust('\/wp-json\/wc\/store\/v1\/cart\/add-item'), {\n                method: 'POST',\n                credentials: 'same-origin',\n                cache: 'no-store',\n                headers: buildHeaders(),\n                body: JSON.stringify({ id, quantity })\n            });\n\n            \/\/ A stale\/expired nonce is a common transient failure - refresh once and retry.\n            if (res.status === 403 || res.status === 401) {\n                await ensureCartSession(true);\n                res = await fetch(bust('\/wp-json\/wc\/store\/v1\/cart\/add-item'), {\n                    method: 'POST',\n                    credentials: 'same-origin',\n                    cache: 'no-store',\n                    headers: buildHeaders(),\n                    body: JSON.stringify({ id, quantity })\n                });\n            }\n\n            if (!res.ok) {\n                const errBody = await res.json().catch(() => null);\n                throw new Error((errBody && errBody.message) || ('Add to cart failed (HTTP ' + res.status + ')'));\n            }\n\n            \/\/ Refresh the nonce from the write response; WooCommerce returns a new one\n            \/\/ on every reply and the old one may no longer validate.\n            const freshNonce = res.headers.get('Nonce') || res.headers.get('X-WC-Store-API-Nonce');\n            if (freshNonce) cartNonce = freshNonce;\n\n            return res.json();\n        }\n\n        \/\/ Try the nonce-free wc-ajax endpoint first; only if that path is unavailable\n        \/\/ (endpoint disabled, plugin conflict, 404) fall through to the Store API for\n        \/\/ this same item. Doing the fallback PER ITEM means a partial failure can never\n        \/\/ add the same product twice.\n        async function addItemToCart(id, quantity) {\n            try {\n                return await wcAjaxAddItem(id, quantity);\n            } catch (ajaxError) {\n                console.warn('wc-ajax add_to_cart path failed for product ' + id + ', trying Store API instead:', ajaxError);\n                return await storeApiAddItem(id, quantity);\n            }\n        }\n\n        \/\/ Verify against the COOKIE session only - no Cart-Token header. This is the\n        \/\/ session \/cart\/ and checkout actually read, so if this call reports items the\n        \/\/ customer will really see them on the cart page.\n        async function readCartItemCount() {\n            const res = await fetch(bust('\/wp-json\/wc\/store\/v1\/cart'), {\n                method: 'GET',\n                credentials: 'same-origin',\n                cache: 'no-store',\n                headers: noCacheHeaders()\n            });\n            if (!res.ok) {\n                throw new Error('Could not read the cart back (HTTP ' + res.status + ')');\n            }\n            const cartData = await res.json();\n            return Array.isArray(cartData.items) ? cartData.items.length : 0;\n        }\n\n        function classicAddToCartFallback(id, quantity) {\n            \/\/ FIX APPLIED HERE: Redirecting strictly to \/cart\/ bypasses WooCommerce caching\n            window.location.href = '\/cart\/?add-to-cart=' + encodeURIComponent(id) + '&quantity=' + encodeURIComponent(quantity);\n        }\n\n        async function addToCart() {\n            const btn = document.getElementById('add-to-cart-btn');\n            const btnContent = document.getElementById('btn-text');\n            const originalContent = btnContent.innerHTML;\n\n            btnContent.innerText = \"Adding...\";\n            btn.disabled = true;\n\n            \/\/ Always start this attempt from a guaranteed-fresh session handshake\n            \/\/ rather than trusting a nonce that may have been captured from a\n            \/\/ cached response on page load. Cheap insurance against the bug.\n            cartNonce = null;\n            \/\/ And drop any Cart-Token so nothing can accidentally pin this request to\n            \/\/ a guest session the cart page cannot see (see BUG B at the top).\n            cartToken = null;\n\n            try {\n                await addItemToCart(mainProductId, currentQuantity);\n                if (bacCheckboxes.length > 0 && bacCheckboxes[0].checked) {\n                    await addItemToCart(bacWaterId, 1);\n                }\n\n                \/\/ Verify the cart actually reflects the add before telling the user it\n                \/\/ worked. This call is cache-busted too, otherwise it can itself return\n                \/\/ a stale cached \"empty cart\" snapshot even after a real, successful add.\n                const itemCount = await readCartItemCount();\n                if (itemCount === 0) {\n                    throw new Error('Cart reports 0 items after add - likely a session\/cookie mismatch or a cache serving a stale response.');\n                }\n\n                document.getElementById('modal-qty-text').innerText = currentQuantity + 'x';\n                modal.classList.remove('hidden');\n                setTimeout(() => {\n                    modalContent.classList.remove('scale-95');\n                    modalContent.classList.add('scale-100');\n                }, 10);\n\n                btnContent.innerHTML = originalContent;\n                btn.disabled = false;\n\n            } catch (error) {\n                console.error(\"Add-to-cart verification failed, falling back to classic add-to-cart link:\", error);\n                classicAddToCartFallback(mainProductId, currentQuantity);\n            }\n        }\n\n        function closeModal() {\n            modalContent.classList.remove('scale-100');\n            modalContent.classList.add('scale-95');\n            setTimeout(() => { modal.classList.add('hidden'); }, 150);\n        }\n\n        function goToCart() {\n            window.location.href = '\/cart\/';\n        }\n\n        fetchProductData();\n\n        calculateAndUpdateUI();\n    <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>BPC-157 \/ TB500 &#8211; Product Page Peptide appearance Lyophilized form Solution not bundled Bacteriostatic water Frequently Bought Together Bacteriostatic Water [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-927","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"Wikii","author_link":"https:\/\/czechpeptide.com\/cz\/author\/wikii\/"},"rttpg_comment":0,"rttpg_category":null,"rttpg_excerpt":"BPC-157 \/ TB500 &#8211; Product Page Peptide appearance Lyophilized form Solution not bundled Bacteriostatic water Frequently Bought Together Bacteriostatic Water [&hellip;]","_links":{"self":[{"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/pages\/927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/comments?post=927"}],"version-history":[{"count":29,"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/pages\/927\/revisions"}],"predecessor-version":[{"id":1200,"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/pages\/927\/revisions\/1200"}],"wp:attachment":[{"href":"https:\/\/czechpeptide.com\/cz\/wp-json\/wp\/v2\/media?parent=927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}