{"id":458,"date":"2026-06-03T21:20:56","date_gmt":"2026-06-03T21:20:56","guid":{"rendered":"https:\/\/sysopdemo.com\/pepticell\/?page_id=458"},"modified":"2026-06-30T17:51:20","modified_gmt":"2026-06-30T17:51:20","slug":"calculadora","status":"publish","type":"page","link":"https:\/\/pepticell.mx\/en\/calculadora\/","title":{"rendered":"Calculadora"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"458\" class=\"elementor elementor-458\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e604570 e-flex e-con-boxed e-con e-parent\" data-id=\"e604570\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/pepticell.mx\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/banner1-1-1.mp4&quot;,&quot;background_play_on_mobile&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-background-video-container\">\n\t\t\t\t\t\t\t<video class=\"elementor-background-video-hosted\" role=\"presentation\" autoplay muted playsinline loop><\/video>\n\t\t\t\t\t<\/div>\t\t<div class=\"elementor-element elementor-element-8d38361 elementor-widget elementor-widget-shortcode\" data-id=\"8d38361\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!DOCTYPE html>\n<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Calculadora de Reconstituci\u00f3n - EXOMA<\/title>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n    <style>\n        body { background-color: #0b0f19; color: #f3f4f6; font-family: system-ui, -apple-system, sans-serif; }\n        .card-gradient { background: linear-gradient(135deg, #111827 0%, #1f2937 100%); }\n        \n        .tick-mark {\n            position: absolute;\n            bottom: 0;\n            width: 2px;\n            background-color: #4b5563;\n            height: 10px;\n            transform: translateX(-50%);\n        }\n        .tick-mark.major {\n            height: 20px;\n            background-color: #9ca3af;\n        }\n    <\/style>\n<\/head>\n<body class=\"p-4 md:p-8 flex flex-col justify-center items-center min-h-screen gap-6\">\n\n    <div class=\"text-center space-y-2 max-w-2xl mx-auto mt-4\">\n        <span class=\"inline-block text-[11px] font-bold tracking-widest text-white bg-blue-500\/10 px-3 py-1 rounded-full border border-blue-500\/20\">\n            Herramienta Gratuita\n        <\/span>\n        <h1 class=\"text-3xl md:text-4xl font-black tracking-tight text-white mt-1\">\n            Calculadora de <span class=\"text-blue-500\">Reconstituci\u00f3n<\/span>\n        <\/h1>\n        <p class=\"text-sm md:text-base text-gray-400 font-medium\">\n            Calcula la reconstituci\u00f3n exacta de p\u00e9ptidos para investigaci\u00f3n\n        <\/p>\n    <\/div>\n\n    <div class=\"w-full max-w-5xl card-gradient rounded-2xl shadow-2xl border border-gray-800 overflow-hidden\">\n        \n        <div class=\"px-6 pt-5\">\n            <div class=\"flex items-center gap-2 p-3 rounded-lg bg-blue-500\/5 border border-blue-500\/20 text-sm text-gray-400\">\n                <svg class=\"h-4 w-4 text-blue-400 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><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\"\/><\/svg>\n                <span>Herramienta de c\u00e1lculo exclusivamente para reconstituci\u00f3n de compuestos de investigaci\u00f3n. No apta para uso cl\u00ednico ni diagn\u00f3stico.<\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"bg-blue-500\/5 border-b border-gray-800 p-6 md:p-8 flex justify-between items-start gap-4\">\n            <div class=\"flex flex-col gap-1.5\">\n                <div class=\"flex items-center gap-3\">\n                    <svg class=\"h-6 w-6 text-blue-400 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                        <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\"\/>\n                    <\/svg>\n                    <h3 class=\"text-xl md:text-2xl font-bold tracking-tight text-white\">Calculadora de Reconstituci\u00f3n<\/h3>\n                <\/div>\n                <p class=\"text-sm md:text-base text-gray-400 font-medium\">\n                    Calcula el volumen exacto a extraer seg\u00fan el instrumento y la cantidad objetivo\n                <\/p>\n            <\/div>\n            \n            <div class=\"flex items-center gap-2 shrink-0 mt-0.5\">\n                <button onclick=\"resetCalculator()\" class=\"p-2 rounded-xl bg-gray-800 hover:bg-gray-700 text-gray-300 transition cursor-pointer\" title=\"Reiniciar\">\n                    <svg class=\"h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 1121.253 8H18\"\/><\/svg>\n                <\/button>\n                <button onclick=\"copyToClipboard()\" class=\"p-2 rounded-xl bg-gray-800 hover:bg-gray-700 text-gray-300 transition cursor-pointer\" title=\"Copiar Configuraci\u00f3n\">\n                    <svg class=\"h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m-5 7h3m-3 4h3m-6-4h.01M9 16h.01\"\/><\/svg>\n                <\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"p-6 md:p-8 space-y-6\">\n            \n            <div>\n                <label class=\"block text-base font-medium text-gray-300 mb-2\">Seleccionar p\u00e9ptido<\/label>\n                <select id=\"peptideSelector\" onchange=\"loadPeptidePreset()\" class=\"w-full bg-gray-900 border border-gray-700 rounded-xl p-3 text-white focus:outline-none focus:border-blue-500\">\n                    <option value=\"\">Buscar y seleccionar producto...<\/option>\n                                            <option value=\"Tirzepatida\" \n                                data-unit=\"mg\" \n                                data-default=\"5\" \n                                data-frequency=\"Semanal\"\n                                data-price=\"1899\">\n                            Tirzepatida (mg) \u2014 $1,899 MXN\n                        <\/option>\n                                            <option value=\"Retatrutida\" \n                                data-unit=\"mg\" \n                                data-default=\"4\" \n                                data-frequency=\"Semanal\"\n                                data-price=\"2199\">\n                            Retatrutida (mg) \u2014 $2,199 MXN\n                        <\/option>\n                                            <option value=\"BPC-157\" \n                                data-unit=\"mcg\" \n                                data-default=\"500\" \n                                data-frequency=\"Diario (1-2 dosis)\"\n                                data-price=\"1150\">\n                            BPC-157 (mcg) \u2014 $1,150 MXN\n                        <\/option>\n                                            <option value=\"TB-500\" \n                                data-unit=\"mg\" \n                                data-default=\"2.5\" \n                                data-frequency=\"2x\/semana\"\n                                data-price=\"1250\">\n                            TB-500 (mg) \u2014 $1,250 MXN\n                        <\/option>\n                                            <option value=\"CJC-1295\" \n                                data-unit=\"mg\" \n                                data-default=\"1\" \n                                data-frequency=\"1-2x por semana\"\n                                data-price=\"990\">\n                            CJC-1295 (mg) \u2014 $990 MXN\n                        <\/option>\n                                            <option value=\"Ipamorelin\" \n                                data-unit=\"mcg\" \n                                data-default=\"200\" \n                                data-frequency=\"2-3x diario\"\n                                data-price=\"950\">\n                            Ipamorelin (mcg) \u2014 $950 MXN\n                        <\/option>\n                                            <option value=\"Tesamorelin\" \n                                data-unit=\"mg\" \n                                data-default=\"2\" \n                                data-frequency=\"Diario\"\n                                data-price=\"2450\">\n                            Tesamorelin (mg) \u2014 $2,450 MXN\n                        <\/option>\n                                            <option value=\"GHRP-6\" \n                                data-unit=\"mcg\" \n                                data-default=\"150\" \n                                data-frequency=\"2-3x diario\"\n                                data-price=\"890\">\n                            GHRP-6 (mcg) \u2014 $890 MXN\n                        <\/option>\n                                            <option value=\"IGF-1 LR3\" \n                                data-unit=\"mcg\" \n                                data-default=\"50\" \n                                data-frequency=\"Diario\"\n                                data-price=\"1650\">\n                            IGF-1 LR3 (mcg) \u2014 $1,650 MXN\n                        <\/option>\n                                    <\/select>\n            <\/div>\n\n            <div class=\"grid md:grid-cols-2 gap-8\">\n                \n                <div class=\"space-y-6\">\n                    <div>\n                        <label class=\"block text-base font-medium text-gray-300 mb-2\">Instrumento de Medici\u00f3n<\/label>\n                        <div class=\"grid grid-cols-3 gap-3\" id=\"syringeGrid\">\n                            <button type=\"button\" onclick=\"selectSyringe(30, this)\" class=\"syringe-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-3 text-center transition cursor-pointer\">\n                                <div class=\"text-sm font-bold text-white\">0.3 mL<\/div>\n                                <div class=\"text-xs text-gray-400 mt-0.5\">30 U<\/div>\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectSyringe(50, this)\" class=\"syringe-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-3 text-center transition cursor-pointer\">\n                                <div class=\"text-sm font-bold text-white\">0.5 mL<\/div>\n                                <div class=\"text-xs text-gray-400 mt-0.5\">50 U<\/div>\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectSyringe(100, this)\" class=\"syringe-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl p-3 text-center transition cursor-pointer\">\n                                <div class=\"text-sm font-bold text-blue-400\">1.0 mL<\/div>\n                                <div class=\"text-xs text-blue-300 mt-0.5\">100 U<\/div>\n                            <\/button>\n                        <\/div>\n                        <input type=\"hidden\" id=\"syringeType\" value=\"100\">\n                    <\/div>\n\n                    <div>\n                        <label class=\"block text-base font-medium text-gray-300 mb-2\">Frecuencia del Protocolo<\/label>\n                        <select id=\"protocolFrequency\" onchange=\"calculate()\" class=\"w-full bg-gray-900 border border-gray-700 rounded-xl p-3 text-white focus:outline-none focus:border-blue-500\">\n                                                            <option value=\"1x\/dia\" data-doses-per-week=\"7\">\n                                    1\u00d7 diario                                <\/option>\n                                                            <option value=\"2x\/dia\" data-doses-per-week=\"14\">\n                                    2\u00d7 diario                                <\/option>\n                                                            <option value=\"3x\/dia\" data-doses-per-week=\"21\">\n                                    3\u00d7 diario                                <\/option>\n                                                            <option value=\"eod\" data-doses-per-week=\"3.5\">\n                                    Cada 2 d\u00edas (EOD)                                <\/option>\n                                                            <option value=\"3x\/semana\" data-doses-per-week=\"3\">\n                                    3\u00d7 por semana                                <\/option>\n                                                            <option value=\"2x\/semana\" data-doses-per-week=\"2\">\n                                    2\u00d7 por semana                                <\/option>\n                                                            <option value=\"1x\/semana\" data-doses-per-week=\"1\">\n                                    1\u00d7 por semana                                <\/option>\n                                                            <option value=\"5x\/semana\" data-doses-per-week=\"5\">\n                                    5\u00d7 por semana                                <\/option>\n                                                    <\/select>\n                    <\/div>\n                <\/div>\n\n                <div class=\"space-y-6\">\n                    <div>\n                        <label class=\"block text-base font-medium text-gray-300 mb-2\">Cantidad del Vial<\/label>\n                        <div class=\"grid grid-cols-4 gap-2\" id=\"vialGrid\">\n                            <button type=\"button\" onclick=\"selectVialValue(5, this)\" class=\"vial-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-blue-400\">\n                                5 mg\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectVialValue(10, this)\" class=\"vial-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\">\n                                10 mg\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectVialValue(15, this)\" class=\"vial-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\">\n                                15 mg\n                            <\/button>\n                            <div onclick=\"activateCustomVial(this)\" class=\"vial-btn border border-gray-700 bg-gray-900\/50 rounded-xl px-2 py-1 flex items-center justify-center transition cursor-pointer\">\n                                <input type=\"number\" id=\"vialCustomInput\" placeholder=\"Otro\" oninput=\"updateCustomVialValue(this.value)\" class=\"w-full text-center bg-transparent border-0 text-sm font-bold text-white focus:outline-none placeholder-gray-500 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\">\n                            <\/div>\n                        <\/div>\n                        <input type=\"hidden\" id=\"vialMg\" value=\"5\">\n                    <\/div>\n\n                    <div>\n                        <label class=\"block text-base font-medium text-gray-300 mb-2\">Agua Bacteriost\u00e1tica<\/label>\n                        <div class=\"grid grid-cols-5 gap-2\" id=\"waterGrid\">\n                            <button type=\"button\" onclick=\"selectWaterValue(1, this)\" class=\"water-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\">\n                                1 ml\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectWaterValue(2, this)\" class=\"water-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-blue-400\">\n                                2 ml\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectWaterValue(3, this)\" class=\"water-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\">\n                                3 ml\n                            <\/button>\n                            <button type=\"button\" onclick=\"selectWaterValue(5, this)\" class=\"water-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\">\n                                5 ml\n                            <\/button>\n                            <div onclick=\"activateCustomWater(this)\" class=\"water-btn border border-gray-700 bg-gray-900\/50 rounded-xl px-1.5 py-1 flex items-center justify-center transition cursor-pointer\">\n                                <input type=\"number\" id=\"waterCustomInput\" placeholder=\"Otro\" step=\"0.1\" oninput=\"updateCustomWaterValue(this.value)\" class=\"w-full text-center bg-transparent border-0 text-sm font-bold text-white focus:outline-none placeholder-gray-500 [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\">\n                            <\/div>\n                        <\/div>\n                        <input type=\"hidden\" id=\"waterMl\" value=\"2\">\n                    <\/div>\n\n                    <div>\n                        <label class=\"block text-base font-medium text-gray-300 mb-2\">Cantidad Objetivo<\/label>\n                        <input type=\"number\" id=\"desiredDose\" placeholder=\"250 (por defecto, o ingrese un valor)\" oninput=\"calculate()\" class=\"w-full bg-gray-900 border border-gray-700 rounded-xl p-3 text-sm text-white focus:outline-none focus:border-blue-500\">\n                    <\/div>\n                <\/div>\n\n            <\/div>\n\n            <div class=\"border border-gray-800 rounded-xl overflow-hidden bg-gray-900\/20 mt-6\">\n                <button type=\"button\" onclick=\"toggleFullCycle()\" class=\"w-full flex justify-between items-center p-4 text-sm font-medium text-gray-300 hover:bg-gray-800\/40 transition cursor-pointer\">\n                    <span class=\"flex items-center gap-2 text-white font-semibold\">\n                        <svg class=\"h-4 w-4 text-blue-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4\"\/>\n                        <\/svg>\n                        Calcular ciclo completo\n                    <\/span>\n                    <svg id=\"cycleChevron\" class=\"h-4 w-4 transition-transform duration-200\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"\/>\n                    <\/svg>\n                <\/button>\n                \n                <div id=\"fullCyclePanel\" class=\"hidden p-4 border-t border-gray-800\/60 bg-gray-950\/20 space-y-4\">\n                    <div class=\"flex items-center justify-between text-sm\">\n                        <span class=\"font-medium text-gray-400\">Duraci\u00f3n del ciclo<\/span>\n                        <span id=\"cycleWeeksLabel\" class=\"font-bold text-blue-400\">4 semanas<\/span>\n                    <\/div>\n                    \n                    <div class=\"flex gap-2\" id=\"cycleWeeksGrid\">\n                        <button type=\"button\" onclick=\"selectCycleWeeks(4, this)\" class=\"cycle-btn flex-1 py-2 rounded-lg text-sm font-semibold transition-all bg-blue-600 text-white cursor-pointer\">4s<\/button>\n                        <button type=\"button\" onclick=\"selectCycleWeeks(8, this)\" class=\"cycle-btn flex-1 py-2 rounded-lg text-sm font-semibold transition-all bg-gray-800 hover:bg-gray-700 text-gray-300 cursor-pointer\">8s<\/button>\n                        <button type=\"button\" onclick=\"selectCycleWeeks(12, this)\" class=\"cycle-btn flex-1 py-2 rounded-lg text-sm font-semibold transition-all bg-gray-800 hover:bg-gray-700 text-gray-300 cursor-pointer\">12s<\/button>\n                        <button type=\"button\" onclick=\"selectCycleWeeks(16, this)\" class=\"cycle-btn flex-1 py-2 rounded-lg text-sm font-semibold transition-all bg-gray-800 hover:bg-gray-700 text-gray-300 cursor-pointer\">16s<\/button>\n                    <\/div>\n                    <input type=\"hidden\" id=\"cycleWeeks\" value=\"4\">\n\n                    <div class=\"grid grid-cols-3 gap-3 pt-2\">\n                        <div class=\"p-3 rounded-lg bg-gray-900\/60 border border-gray-800 text-center\">\n                            <p class=\"text-[11px] text-gray-400\">Al\u00edcuotas totales<\/p>\n                            <p id=\"cycleTotalDoses\" class=\"text-lg font-bold text-white mt-0.5\">\u2014<\/p>\n                        <\/div>\n                        <div class=\"p-3 rounded-lg bg-gray-900\/60 border border-gray-800 text-center\">\n                            <p class=\"text-[11px] text-gray-400\">Viales necesarios<\/p>\n                            <p id=\"cycleVialsNeeded\" class=\"text-lg font-bold text-blue-400 mt-0.5\">\u2014<\/p>\n                        <\/div>\n                        <div class=\"p-3 rounded-lg bg-gray-900\/60 border border-gray-800 text-center\">\n                            <p class=\"text-[11px] text-gray-400\">Costo total<\/p>\n                            <p id=\"cycleTotalCost\" class=\"text-lg font-bold text-blue-400 mt-0.5\">$0<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"bg-gray-900\/50 border border-gray-800 rounded-2xl p-6 md:p-8 space-y-6\">\n                <div class=\"text-center py-2\">\n                    <p class=\"text-lg tracking-wide text-gray-400 font-medium\" id=\"dynamicTargetLabel\">\n                        Para una cantidad de <span class=\"text-white font-extrabold text-2xl\">250<\/span> <span class=\"text-white font-extrabold text-2xl\">mcg<\/span>\n                    <\/p>\n                    \n                    <div class=\"flex flex-wrap items-center justify-center gap-x-3 gap-y-1 mt-4\">\n                        <span class=\"text-xl md:text-2xl font-bold text-gray-300 tracking-tight\">Volumen a extraer:<\/span>\n                        <h2 class=\"text-5xl md:text-6xl font-black text-blue-400 tracking-tight\" id=\"resultUnits\">10.0<\/h2>\n                        <span class=\"text-xl md:text-2xl font-bold text-gray-300 tracking-tight\">unidades de jeringa<\/span>\n                    <\/div>\n                <\/div>\n\n                <div class=\"space-y-2 bg-gray-950\/80 p-5 border border-gray-800 rounded-xl\">\n                    <div class=\"flex justify-between text-[10px] font-bold tracking-wider text-gray-400 uppercase\">\n                        <span>Visualizaci\u00f3n de Jeringa<\/span>\n                        <span id=\"syringeCapacityText\" class=\"text-blue-400\">100 U<\/span>\n                    <\/div>\n                    \n                    <div class=\"relative h-12 bg-gray-900 border-t border-b border-gray-700 flex items-end overflow-visible mt-4 mb-6 px-1\">\n                        <div id=\"syringeFill\" class=\"absolute left-0 top-0 bottom-0 bg-blue-500\/20 border-r-2 border-blue-400 transition-all duration-300\" style=\"width: 10%;\"><\/div>\n                        <div id=\"rulerTicks\" class=\"absolute inset-0 w-full h-full\"><\/div>\n                    <\/div>\n\n                    <div id=\"rulerLabels\" class=\"flex justify-between text-[11px] text-gray-400 font-mono px-0.5\"><\/div>\n                <\/div>\n\n                <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4 border-t border-gray-800\/60 pt-6 text-center\">\n                    <div class=\"bg-gray-950\/40 p-3 rounded-xl border border-gray-800\/60\">\n                        <span class=\"text-gray-400 block text-xs font-medium\">Concentraci\u00f3n<\/span>\n                        <strong class=\"text-white text-lg font-bold mt-1 block\" id=\"concentrationLabel\">2,500<\/strong>\n                        <span class=\"text-[11px] text-gray-500\">mcg\/mL<\/span>\n                    <\/div>\n                    <div class=\"bg-gray-950\/40 p-3 rounded-xl border border-gray-800\/60\">\n                        <span class=\"text-gray-400 block text-xs font-medium\">Volumen<\/span>\n                        <strong class=\"text-white text-lg font-bold mt-1 block\" id=\"doseVolumeLabel\">0.100<\/strong>\n                        <span class=\"text-[11px] text-gray-500\">ml<\/span>\n                    <\/div>\n                    <div class=\"bg-gray-950\/40 p-3 rounded-xl border border-gray-800\/60\">\n                        <span class=\"text-gray-400 block text-xs font-medium\">Al\u00edcuotas por Vial<\/span>\n                        <strong class=\"text-blue-400 text-lg font-bold mt-1 block\" id=\"vialDosesLabel\">20<\/strong>\n                        <span class=\"text-[11px] text-gray-500\">al\u00edcuotas<\/span>\n                    <\/div>\n                    <div class=\"bg-gray-950\/40 p-3 rounded-xl border border-blue-900\/30 bg-blue-500\/5\">\n                        <span class=\"text-gray-400 block text-xs font-medium\">Duraci\u00f3n<\/span>\n                        <strong class=\"text-blue-400 text-lg font-bold mt-1 block\" id=\"durationLabel\">20<\/strong>\n                        <span class=\"text-[11px] text-gray-500\" id=\"durationSubtext\">d\u00edas<\/span>\n                    <\/div>\n                <\/div>\n\n                <div class=\"border border-gray-800\/80 rounded-xl overflow-hidden bg-gray-950\/30 mt-4\">\n                    <button type=\"button\" onclick=\"toggleAdvancedInfo()\" class=\"w-full flex justify-between items-center p-4 text-sm font-medium text-gray-300 hover:bg-gray-800\/40 transition cursor-pointer\">\n                        <span class=\"flex items-center gap-2 text-white font-semibold\">\n                            <svg class=\"h-4 w-4 text-blue-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                                <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\/>\n                            <\/svg>\n                            Informaci\u00f3n Avanzada\n                        <\/span>\n                        <svg id=\"advancedChevron\" class=\"h-4 w-4 transition-transform duration-200\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"\/>\n                        <\/svg>\n                    <\/button>\n                    \n                    <div id=\"advancedInfoPanel\" class=\"hidden p-4 border-t border-gray-800\/60 bg-gray-950\/50\">\n                        <div class=\"grid grid-cols-3 gap-4 text-center\">\n                            <div class=\"p-3 rounded-lg bg-gray-900\/60 border border-gray-800\">\n                                <p class=\"text-[11px] text-gray-400 font-medium\">Unidades\/mL<\/p>\n                                <p id=\"advUnitsPerMl\" class=\"text-lg font-bold text-white mt-0.5\">\u2014<\/p>\n                            <\/div>\n                            <div class=\"p-3 rounded-lg bg-gray-900\/60 border border-gray-800\">\n                                <p class=\"text-[11px] text-gray-400 font-medium\">mcg por Unidad<\/p>\n                                <p id=\"advMcgPerUnit\" class=\"text-lg font-bold text-blue-400 mt-0.5\">\u2014<\/p>\n                            <\/div>\n                            <div class=\"p-3 rounded-lg bg-gray-900\/60 border border-gray-800\">\n                                <p class=\"text-[11px] text-gray-400 font-medium\">mg por Vial<\/p>\n                                <p id=\"advMgPerVial\" class=\"text-lg font-bold text-white mt-0.5\">\u2014<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n            <\/div>\n\n            <div class=\"border border-gray-800 rounded-xl overflow-hidden bg-gray-900\/20 mt-6\">\n                <button type=\"button\" onclick=\"toggleReconstitutionGuide()\" class=\"w-full flex justify-between items-center p-4 text-sm font-medium text-gray-300 hover:bg-gray-800\/40 transition cursor-pointer\">\n                    <span class=\"flex items-center gap-2 text-white font-semibold\">\n                        <svg class=\"h-5 w-5 text-blue-400 shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <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\"\/>\n                        <\/svg>\n                        Gu\u00eda de Reconstituci\u00f3n Paso a Paso\n                    <\/span>\n                    <svg id=\"guideChevron\" class=\"h-4 w-4 transition-transform duration-200\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\"\/>\n                    <\/svg>\n                <\/button>\n                \n                <div id=\"reconstitutionGuidePanel\" class=\"hidden p-4 border-t border-gray-800\/60 bg-gray-950\/20\">\n                    <div class=\"bg-gray-950\/40 border border-gray-800\/60 rounded-xl divide-y divide-gray-800\/60 flex flex-col text-sm text-gray-300\">\n                        <div class=\"flex gap-4 items-start p-4\">\n                            <div class=\"w-8 h-8 rounded-full bg-blue-500\/20 flex items-center justify-center text-blue-400 font-bold shrink-0 text-sm\">1<\/div>\n                            <div>\n                                <p class=\"font-bold text-white text-base\">Preparar materiales<\/p>\n                                <p class=\"text-gray-400 mt-1 leading-relaxed\">Limpie el \u00e1rea de trabajo. Tenga listo el vial, agua bacteriost\u00e1tica y jeringa est\u00e9ril.<\/p>\n                            <\/div>\n                        <\/div>\n                        <div class=\"flex gap-4 items-start p-4\">\n                            <div class=\"w-8 h-8 rounded-full bg-blue-500\/20 flex items-center justify-center text-blue-400 font-bold shrink-0 text-sm\">2<\/div>\n                            <div>\n                                <p class=\"font-bold text-white text-base\">Extraer el solvente<\/p>\n                                <p class=\"text-gray-400 mt-1 leading-relaxed\">Utilice una jeringa est\u00e9ril para extraer <span id=\"instructionWater\" class=\"text-blue-400 font-semibold\">2ml<\/span> de agua bacteriost\u00e1tica.<\/p>\n                            <\/div>\n                        <\/div>\n                        <div class=\"flex gap-4 items-start p-4\">\n                            <div class=\"w-8 h-8 rounded-full bg-blue-500\/20 flex items-center justify-center text-blue-400 font-bold shrink-0 text-sm\">3<\/div>\n                            <div>\n                                <p class=\"font-bold text-white text-base\">A\u00f1adir lentamente<\/p>\n                                <p class=\"text-gray-400 mt-1 leading-relaxed\">Transfiera el agua al vial LENTAMENTE por la pared interior, nunca directo al liofilizado.<\/p>\n                            <\/div>\n                        <\/div>\n                        <div class=\"flex gap-4 items-start p-4\">\n                            <div class=\"w-8 h-8 rounded-full bg-blue-500\/20 flex items-center justify-center text-blue-400 font-bold shrink-0 text-sm\">4<\/div>\n                            <div>\n                                <p class=\"font-bold text-white text-base\">Mezclar suavemente<\/p>\n                                <p class=\"text-gray-400 mt-1 leading-relaxed\">Gire el vial con suavidad. NUNCA agite. Deje reposar hasta disoluci\u00f3n completa.<\/p>\n                            <\/div>\n                        <\/div>\n                        <div class=\"flex gap-4 items-start p-4\">\n                            <div class=\"w-8 h-8 rounded-full bg-blue-500\/20 flex items-center justify-center text-blue-400 font-bold shrink-0 text-sm\">5<\/div>\n                            <div>\n                                <p class=\"font-bold text-white text-base\">Almacenar correctamente<\/p>\n                                <p class=\"text-gray-400 mt-1 leading-relaxed\">Conserve el vial reconstituido en refrigeraci\u00f3n (2-8\u00b0C). Utilizar dentro de 28 d\u00edas.<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n    <script>\n        function toggleFullCycle() {\n            const panel = document.getElementById('fullCyclePanel');\n            const chevron = document.getElementById('cycleChevron');\n            panel.classList.toggle('hidden');\n            chevron.classList.toggle('rotate-180');\n        }\n\n        function toggleAdvancedInfo() {\n            const panel = document.getElementById('advancedInfoPanel');\n            const chevron = document.getElementById('advancedChevron');\n            panel.classList.toggle('hidden');\n            chevron.classList.toggle('rotate-180');\n        }\n\n        function toggleReconstitutionGuide() {\n            const panel = document.getElementById('reconstitutionGuidePanel');\n            const chevron = document.getElementById('guideChevron');\n            panel.classList.toggle('hidden');\n            chevron.classList.toggle('rotate-180');\n        }\n\n        function selectCycleWeeks(weeks, buttonElement) {\n            document.getElementById('cycleWeeks').value = weeks;\n            document.getElementById('cycleWeeksLabel').innerText = weeks + \" semanas\";\n            \n            const buttons = document.querySelectorAll('#cycleWeeksGrid .cycle-btn');\n            buttons.forEach(btn => {\n                btn.className = \"cycle-btn flex-1 py-2 rounded-lg text-sm font-semibold transition-all bg-gray-800 hover:bg-gray-700 text-gray-300 cursor-pointer\";\n            });\n            buttonElement.className = \"cycle-btn flex-1 py-2 rounded-lg text-sm font-semibold transition-all bg-blue-600 text-white cursor-pointer\";\n            \n            calculate();\n        }\n\n        \/\/ CORRECCI\u00d3N: Los textos est\u00e1ticos de volumen permanecen inalterados al cambiar de pesta\u00f1a\n        function selectSyringe(units, buttonElement) {\n            document.getElementById('syringeType').value = units;\n            \n            const buttons = document.querySelectorAll('.syringe-btn');\n            buttons.forEach(btn => {\n                \/\/ Restablecer estilos base sin reescribir los textos mL originales\n                btn.className = \"syringe-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-3 text-center transition cursor-pointer\";\n                btn.children[0].className = \"text-sm font-bold text-white\";\n                btn.children[1].className = \"text-xs text-gray-400 mt-0.5\";\n            });\n\n            \/\/ Aplicar estilos destacados \u00fanicamente al bot\u00f3n clicado\n            buttonElement.className = \"syringe-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl p-3 text-center transition cursor-pointer\";\n            buttonElement.children[0].className = \"text-sm font-bold text-blue-400\";\n            buttonElement.children[1].className = \"text-xs text-blue-300 mt-0.5\";\n\n            calculate();\n        }\n\n        function selectVialValue(value, buttonElement) {\n            document.getElementById('vialMg').value = value;\n            document.getElementById('vialCustomInput').value = \"\";\n            \n            const elements = document.querySelectorAll('#vialGrid .vial-btn');\n            elements.forEach(el => {\n                el.className = \"vial-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\";\n            });\n            \n            if(buttonElement) {\n                buttonElement.className = \"vial-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-blue-400\";\n            }\n            calculate();\n        }\n\n        function activateCustomVial(containerElement) {\n            const elements = document.querySelectorAll('#vialGrid .vial-btn');\n            elements.forEach(el => { el.className = \"vial-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\"; });\n            \n            containerElement.className = \"vial-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl px-2 py-1 flex items-center justify-center transition cursor-pointer\";\n            const input = document.getElementById('vialCustomInput');\n            input.focus();\n            updateCustomVialValue(input.value);\n        }\n\n        function updateCustomVialValue(val) {\n            const numericVal = parseFloat(val) || 0;\n            document.getElementById('vialMg').value = numericVal;\n            calculate();\n        }\n\n        function selectWaterValue(value, buttonElement) {\n            document.getElementById('waterMl').value = value;\n            document.getElementById('waterCustomInput').value = \"\";\n            \n            const elements = document.querySelectorAll('#waterGrid .water-btn');\n            elements.forEach(el => {\n                el.className = \"water-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\";\n            });\n            \n            if(buttonElement) {\n                buttonElement.className = \"water-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-blue-400\";\n            }\n            calculate();\n        }\n\n        function activateCustomWater(containerElement) {\n            const elements = document.querySelectorAll('#waterGrid .water-btn');\n            elements.forEach(el => { el.className = \"water-btn border border-gray-700 bg-gray-900\/50 hover:bg-gray-800 rounded-xl p-2.5 text-center transition cursor-pointer text-sm font-bold text-white\"; });\n            \n            containerElement.className = \"water-btn border-2 border-blue-500 bg-blue-500\/10 rounded-xl px-1.5 py-1 flex items-center justify-center transition cursor-pointer\";\n            const input = document.getElementById('waterCustomInput');\n            input.focus();\n            updateCustomWaterValue(input.value);\n        }\n\n        function updateCustomWaterValue(val) {\n            const numericVal = parseFloat(val) || 0;\n            document.getElementById('waterMl').value = numericVal;\n            calculate();\n        }\n\n        function mapFrequencyValue(frequencyStr) {\n            const lower = frequencyStr.toLowerCase();\n            if (lower.includes(\"semanal\") && !lower.includes(\"2x\") && !lower.includes(\"3x\")) return \"1x\/semana\";\n            if (lower.includes(\"2x\/semana\") || lower.includes(\"2x por semana\") || lower.includes(\"1-2x por semana\")) return \"2x\/semana\";\n            if (lower.includes(\"3x\/semana\") || lower.includes(\"3x por semana\")) return \"3x\/semana\";\n            if (lower.includes(\"5x\/semana\") || lower.includes(\"5 dias\")) return \"5x\/semana\";\n            if (lower.includes(\"cada 2\") || lower.includes(\"eod\")) return \"eod\";\n            if (lower.includes(\"2-3x diario\") || lower.includes(\"2x diario\")) return \"2x\/dia\";\n            if (lower.includes(\"3x diario\")) return \"3x\/dia\";\n            return \"1x\/dia\";\n        }\n\n        function loadPeptidePreset() {\n            const selector = document.getElementById('peptideSelector');\n            const selectedOption = selector.options[selector.selectedIndex];\n            \n            if (selectedOption.value !== \"\") {\n                const unit = selectedOption.getAttribute('data-unit');\n                let defaultValue = parseFloat(selectedOption.getAttribute('data-default'));\n                if (unit === \"mg\") { defaultValue = defaultValue * 1000; }\n                document.getElementById('desiredDose').value = defaultValue;\n\n                const rawFreq = selectedOption.getAttribute('data-frequency');\n                if (rawFreq) {\n                    document.getElementById('protocolFrequency').value = mapFrequencyValue(rawFreq);\n                }\n            }\n            calculate();\n        }\n\n        function renderSyringeRuler(maxUnits) {\n            const ticksContainer = document.getElementById('rulerTicks');\n            const labelsContainer = document.getElementById('rulerLabels');\n            \n            ticksContainer.innerHTML = '';\n            labelsContainer.innerHTML = '';\n\n            let step = 10;\n            if (maxUnits == 30 || maxUnits == 50) step = 5;\n\n            for (let i = 0; i <= maxUnits; i++) {\n                const percentage = (i \/ maxUnits) * 100;\n                const isMajor = (i % step === 0);\n                \n                if (isMajor || i % 1 === 0) {\n                    const mark = document.createElement('div');\n                    mark.className = `tick-mark ${isMajor ? 'major' : ''}`;\n                    mark.style.left = `${percentage}%`;\n                    ticksContainer.appendChild(mark);\n                }\n            }\n\n            for (let i = 0; i <= maxUnits; i += step) {\n                const label = document.createElement('span');\n                label.innerText = i;\n                labelsContainer.appendChild(label);\n            }\n            \n            document.getElementById('syringeCapacityText').innerText = maxUnits + \" U\";\n        }\n\n        function calculate() {\n            const vialMg = parseFloat(document.getElementById('vialMg').value) || 0;\n            const waterMl = parseFloat(document.getElementById('waterMl').value) || 0;\n            \n            const rawInput = document.getElementById('desiredDose').value;\n            const desiredDoseMcg = rawInput === \"\" ? 250 : (parseFloat(rawInput) || 0);\n\n            const formattedWater = Number.isInteger(waterMl) ? waterMl : waterMl.toFixed(1);\n            document.getElementById('instructionWater').innerText = waterMl > 0 ? `${formattedWater}ml` : \"0ml\";\n\n            document.getElementById('dynamicTargetLabel').innerHTML = \n                `Para una cantidad de <span class=\"text-white font-extrabold text-2xl\">${desiredDoseMcg.toLocaleString()}<\/span> <span class=\"text-white font-extrabold text-2xl\">mcg<\/span>`;\n\n            const syringeUnitsCap = parseFloat(document.getElementById('syringeType').value);\n            renderSyringeRuler(syringeUnitsCap);\n\n            const totalMcgInVial = vialMg * 1000; \n            const concentrationPerMl = waterMl > 0 ? totalMcgInVial \/ waterMl : 0; \n            \n            let syringeUnitsResult = 0;\n            let doseVolumeMl = 0;\n            if (concentrationPerMl > 0) {\n                doseVolumeMl = desiredDoseMcg \/ concentrationPerMl;\n                \/\/ En jeringas est\u00e1ndar U-100, 1 ml siempre equivale a 100 unidades de jeringa fijas.\n                syringeUnitsResult = doseVolumeMl * 100; \n            }\n\n            const totalDoses = desiredDoseMcg > 0 ? Math.floor(totalMcgInVial \/ desiredDoseMcg) : 0;\n\n            const freqSelector = document.getElementById('protocolFrequency');\n            const selectedFreqOption = freqSelector.options[freqSelector.selectedIndex];\n            const dosesPerWeek = parseFloat(selectedFreqOption.getAttribute('data-doses-per-week')) || 7;\n            \n            let totalDaysDuration = 0;\n            if (totalDoses > 0 && dosesPerWeek > 0) {\n                totalDaysDuration = Math.floor((totalDoses * 7) \/ dosesPerWeek);\n            }\n\n            const dynamicUnits = isFinite(syringeUnitsResult) && syringeUnitsResult > 0 ? syringeUnitsResult.toFixed(1) : \"0.0\";\n            document.getElementById('resultUnits').innerText = dynamicUnits;\n            \n            document.getElementById('concentrationLabel').innerText = concentrationPerMl.toLocaleString(undefined, {maximumFractionDigits: 0});\n            document.getElementById('doseVolumeLabel').innerText = doseVolumeMl.toFixed(3);\n            document.getElementById('vialDosesLabel').innerText = totalDoses;\n            document.getElementById('durationLabel').innerText = totalDoses > 0 ? totalDaysDuration : \"\u2014\";\n            document.getElementById('durationSubtext').innerText = `d\u00edas (${selectedFreqOption.text.trim()})`;\n\n            let fillPercentage = (parseFloat(dynamicUnits) \/ syringeUnitsCap) * 100;\n            if (fillPercentage > 100) fillPercentage = 100;\n            if (fillPercentage < 0 || isNaN(fillPercentage)) fillPercentage = 0;\n\n            document.getElementById('syringeFill').style.width = `${fillPercentage}%`;\n\n            const cycleWeeks = parseInt(document.getElementById('cycleWeeks').value) || 4;\n            const totalDosesInCycle = dosesPerWeek * cycleWeeks;\n            \n            document.getElementById('cycleTotalDoses').innerText = totalDosesInCycle > 0 ? Math.ceil(totalDosesInCycle) : \"\u2014\";\n            \n            let vialsNeeded = 0;\n            if (totalDoses > 0 && totalDosesInCycle > 0) {\n                vialsNeeded = Math.ceil(totalDosesInCycle \/ totalDoses);\n            }\n            document.getElementById('cycleVialsNeeded').innerText = vialsNeeded > 0 ? vialsNeeded : \"\u2014\";\n\n            const peptideSelector = document.getElementById('peptideSelector');\n            const selectedPeptide = peptideSelector.options[peptideSelector.selectedIndex];\n            const pricePerVial = selectedPeptide ? parseFloat(selectedPeptide.getAttribute('data-price')) : 0;\n\n            if (vialsNeeded > 0 && pricePerVial > 0) {\n                const totalCost = vialsNeeded * pricePerVial;\n                document.getElementById('cycleTotalCost').innerText = \"$\" + totalCost.toLocaleString('es-MX') + \" MXN\";\n            } else {\n                document.getElementById('cycleTotalCost').innerText = \"$0\";\n            }\n\n            \/\/ Unidades\/mL cambia din\u00e1micamente seg\u00fan la capacidad del instrumento seleccionado\n            document.getElementById('advUnitsPerMl').innerText = syringeUnitsCap + \" UI\/mL\";\n            \n            if (concentrationPerMl > 0) {\n                const mcgPerUnit = concentrationPerMl \/ 100;\n                document.getElementById('advMcgPerUnit').innerText = mcgPerUnit.toFixed(2) + \" mcg\/UI\";\n            } else {\n                document.getElementById('advMcgPerUnit').innerText = \"0.00 mcg\/UI\";\n            }\n\n            document.getElementById('advMgPerVial').innerText = vialMg + \" mg\";\n        }\n\n        function getSummaryText() {\n            const selector = document.getElementById('peptideSelector');\n            const peptideName = selector.value || \"Manual \/ Personalizado\";\n            const vialMg = document.getElementById('vialMg').value;\n            const waterMl = document.getElementById('waterMl').value;\n            const rawInput = document.getElementById('desiredDose').value;\n            const dose = rawInput === \"\" ? 250 : rawInput;\n            const units = document.getElementById('resultUnits').innerText;\n            const freqSelector = document.getElementById('protocolFrequency');\n            const frequencyLabel = freqSelector.options[freqSelector.selectedIndex].text.trim();\n\n            return `Calculadora de Reconstituci\u00f3n - EXOMA\\n` +\n                   `\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n` +\n                   `\u2022 Compuesto: ${peptideName}\\n` +\n                   `\u2022 Cantidad del Vial: ${vialMg} mg\\n` +\n                   `\u2022 Agua Bacteriost\u00e1tica: ${waterMl} mL\\n` +\n                   `\u2022 Cantidad Objetivo: ${dose} mcg\\n` +\n                   `\u2022 Frecuencia: ${frequencyLabel}\\n` +\n                   `\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n` +\n                   `\u2022 Volumen a extraer: ${units} unidades de jeringa`;\n        }\n\n        function copyToClipboard() {\n            const text = getSummaryText();\n            navigator.clipboard.writeText(text);\n            alert(\"\u00a1Configuraci\u00f3n copiada al portapapeles con \u00e9xito!\");\n        }\n\n        function resetCalculator() {\n            document.getElementById('peptideSelector').value = \"\";\n            document.getElementById('desiredDose').value = \"\"; \n            document.getElementById('protocolFrequency').value = \"1x\/dia\";\n            document.getElementById('cycleWeeks').value = \"4\";\n            \n            const firstCycleBtn = document.querySelectorAll('#cycleWeeksGrid .cycle-btn')[0];\n            if(firstCycleBtn) selectCycleWeeks(4, firstCycleBtn);\n            \n            const vialGrid = document.getElementById('vialGrid');\n            selectVialValue(5, vialGrid.children[0]);\n            \n            const waterGrid = document.getElementById('waterGrid');\n            selectWaterValue(2, waterGrid.children[1]);\n            \n            const grid = document.getElementById('syringeGrid');\n            selectSyringe(100, grid.children[2]);\n        }\n\n        calculate();\n    <\/script>\n<\/body>\n<\/html><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","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":"disabled","footer-sml-layout":"","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-458","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/pepticell.mx\/en\/calculadora\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Pepticell -\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Calculadora - Pepticell\" \/>\n\t\t<meta property=\"og:description\" content=\"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/pepticell.mx\/en\/calculadora\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-06-03T21:20:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-06-30T17:51:20+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Calculadora - Pepticell\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/pepticell.mx\\\/en\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#listItem\",\"name\":\"Calculadora\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#listItem\",\"position\":2,\"name\":\"Calculadora\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/#organization\",\"name\":\"Pepticell\",\"url\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/\",\"telephone\":\"+525531282002\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/pepticell.mx\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/LOGO-PEPTICELl-1.png\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#organizationLogo\",\"width\":1000,\"height\":1000},\"image\":{\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#webpage\",\"url\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/\",\"name\":\"Calculadora - Pepticell\",\"description\":\"Calcula la reconstituci\\u00f3n de p\\u00e9ptidos con precisi\\u00f3n. Obt\\u00e9n el volumen, concentraci\\u00f3n y dosificaci\\u00f3n para compuestos de investigaci\\u00f3n de forma r\\u00e1pida.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/calculadora\\\/#breadcrumblist\"},\"datePublished\":\"2026-06-03T21:20:56+00:00\",\"dateModified\":\"2026-06-30T17:51:20+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/\",\"name\":\"Pepticell\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/pepticell.mx\\\/en\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Calculadora - Pepticell","description":"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.","canonical_url":"https:\/\/pepticell.mx\/en\/calculadora\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/pepticell.mx\/en\/calculadora\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/pepticell.mx\/en#listItem","position":1,"name":"Home","item":"https:\/\/pepticell.mx\/en","nextItem":{"@type":"ListItem","@id":"https:\/\/pepticell.mx\/en\/calculadora\/#listItem","name":"Calculadora"}},{"@type":"ListItem","@id":"https:\/\/pepticell.mx\/en\/calculadora\/#listItem","position":2,"name":"Calculadora","previousItem":{"@type":"ListItem","@id":"https:\/\/pepticell.mx\/en#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/pepticell.mx\/en\/#organization","name":"Pepticell","url":"https:\/\/pepticell.mx\/en\/","telephone":"+525531282002","logo":{"@type":"ImageObject","url":"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png","@id":"https:\/\/pepticell.mx\/en\/calculadora\/#organizationLogo","width":1000,"height":1000},"image":{"@id":"https:\/\/pepticell.mx\/en\/calculadora\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/pepticell.mx\/en\/calculadora\/#webpage","url":"https:\/\/pepticell.mx\/en\/calculadora\/","name":"Calculadora - Pepticell","description":"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/pepticell.mx\/en\/#website"},"breadcrumb":{"@id":"https:\/\/pepticell.mx\/en\/calculadora\/#breadcrumblist"},"datePublished":"2026-06-03T21:20:56+00:00","dateModified":"2026-06-30T17:51:20+00:00"},{"@type":"WebSite","@id":"https:\/\/pepticell.mx\/en\/#website","url":"https:\/\/pepticell.mx\/en\/","name":"Pepticell","inLanguage":"en-US","publisher":{"@id":"https:\/\/pepticell.mx\/en\/#organization"}}]},"og:locale":"en_US","og:site_name":"Pepticell -","og:type":"article","og:title":"Calculadora - Pepticell","og:description":"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.","og:url":"https:\/\/pepticell.mx\/en\/calculadora\/","og:image":"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png","og:image:secure_url":"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png","og:image:width":1000,"og:image:height":1000,"article:published_time":"2026-06-03T21:20:56+00:00","article:modified_time":"2026-06-30T17:51:20+00:00","twitter:card":"summary_large_image","twitter:title":"Calculadora - Pepticell","twitter:description":"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.","twitter:image":"https:\/\/pepticell.mx\/wp-content\/uploads\/2026\/06\/LOGO-PEPTICELl-1.png"},"aioseo_meta_data":{"post_id":"458","title":null,"description":"Calcula la reconstituci\u00f3n de p\u00e9ptidos con precisi\u00f3n. Obt\u00e9n el volumen, concentraci\u00f3n y dosificaci\u00f3n para compuestos de investigaci\u00f3n de forma r\u00e1pida.","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-06-30 17:40:15","updated":"2026-06-30 20:15:11"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/pepticell.mx\/en\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tCalculadora\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/pepticell.mx\/en"},{"label":"Calculadora","link":"https:\/\/pepticell.mx\/en\/calculadora\/"}],"_links":{"self":[{"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/pages\/458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/comments?post=458"}],"version-history":[{"count":55,"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/pages\/458\/revisions"}],"predecessor-version":[{"id":876,"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/pages\/458\/revisions\/876"}],"wp:attachment":[{"href":"https:\/\/pepticell.mx\/en\/wp-json\/wp\/v2\/media?parent=458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}