{"id":673,"date":"2024-09-04T01:31:45","date_gmt":"2024-09-04T01:31:45","guid":{"rendered":"https:\/\/mitarjetaenlinea.com\/?page_id=673"},"modified":"2026-07-10T09:31:41","modified_gmt":"2026-07-10T15:31:41","slug":"generador-de-codigos-qr","status":"publish","type":"page","link":"https:\/\/mitarjetaenlinea.com\/en\/generador-de-codigos-qr\/","title":{"rendered":"QR Code Generator"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#c7dee8&#8243; custom_padding=&#8221;24vh||24vh||true|false&#8221; custom_padding_tablet=&#8221;12vh||12vh||true|false&#8221; custom_padding_phone=&#8221;10vh||10vh||true|false&#8221; da_disable_devices=&#8221;off|off|off&#8221; global_colors_info=&#8221;{}&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|desktop&#8221; _builder_version=&#8221;4.27.7&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#FFFFFF&#8221; custom_padding=&#8221;24px|30px|24px|30px|true|true&#8221; custom_padding_tablet=&#8221;&#8221; custom_padding_phone=&#8221;|20px||20px|true|true&#8221; custom_css_main_element=&#8221;align-items: center;&#8221; border_radii=&#8221;on|12px|12px|12px|12px&#8221; box_shadow_style=&#8221;preset1&#8243; box_shadow_color=&#8221;rgba(0,0,0,0.2)&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.7&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;26px&#8221; header_line_height=&#8221;1.3em&#8221; header_font_size_tablet=&#8221;20px&#8221; header_font_size_phone=&#8221;&#8221; header_font_size_last_edited=&#8221;on|desktop&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1>Generar C\u00f3digo QR<\/h1>\n<p>[\/et_pb_text][et_pb_code admin_label=&#8221;HTML FORM QR&#8221; _builder_version=&#8221;4.27.7&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<input type=\"text\" id=\"ov-qr-text\" class=\"ov-input\" placeholder=\"Ingresa link del c\u00f3digo QR\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"ov-whatsapp-inputs\"><!-- [et_pb_line_break_holder] -->    <input type=\"tel\" id=\"ov-whatsapp-number\" placeholder=\"N\u00famero de WhatsApp + prefijo\"><!-- [et_pb_line_break_holder] -->    <input type=\"text\" id=\"ov-whatsapp-message\" placeholder=\"Mensaje\"><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"ov-vcard-inputs\"><!-- [et_pb_line_break_holder] -->    <input type=\"text\" id=\"ov-vcard-name\" placeholder=\"Nombre completo\"><!-- [et_pb_line_break_holder] -->    <input type=\"text\" id=\"ov-vcard-org\" placeholder=\"Organizaci\u00f3n\"><!-- [et_pb_line_break_holder] -->    <input type=\"tel\" id=\"ov-vcard-tel\" placeholder=\"Tel\u00e9fono\"><!-- [et_pb_line_break_holder] -->    <input type=\"email\" id=\"ov-vcard-email\" placeholder=\"Correo electr\u00f3nico\"><!-- [et_pb_line_break_holder] -->    <input type=\"url\" id=\"ov-vcard-url\" placeholder=\"Sitio web\"><!-- [et_pb_line_break_holder] -->    <textarea id=\"ov-vcard-address\" placeholder=\"Direcci\u00f3n\"><\/textarea><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><select id=\"ov-qr-type\" class=\"ov-select\"><!-- [et_pb_line_break_holder] --><option value=\"text\">(Tipo de QR) Texto simple<\/option><!-- [et_pb_line_break_holder] --><option value=\"url\">URL<\/option><!-- [et_pb_line_break_holder] --><option value=\"email\">Correo electr\u00f3nico<\/option><!-- [et_pb_line_break_holder] --><option value=\"tel\">N\u00famero de tel\u00e9fono<\/option><!-- [et_pb_line_break_holder] --><option value=\"whatsapp\">WhatsApp<\/option><!-- [et_pb_line_break_holder] --><option value=\"vcard\">vCard<\/option><!-- [et_pb_line_break_holder] --><\/select><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<style><!-- [et_pb_line_break_holder] -->.ov-customizer-container {<!-- [et_pb_line_break_holder] -->    margin-top: 15px; margin-bottom: 20px; padding: 20px;<!-- [et_pb_line_break_holder] -->    border-radius: 12px; background: #ffffff;<!-- [et_pb_line_break_holder] -->    border: 1px solid #e2e8f0; font-family: system-ui, sans-serif;<!-- [et_pb_line_break_holder] -->    width: 100%; box-sizing: border-box;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-customizer-title { font-size: 16px; font-weight: 600; margin-bottom: 16px; color: #0f172a; }<!-- [et_pb_line_break_holder] -->.ov-customizer-grid {<!-- [et_pb_line_break_holder] -->    display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 16px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-customizer-field { display: flex; flex-direction: column; gap: 8px; }<!-- [et_pb_line_break_holder] -->.ov-customizer-field label { font-size: 13px; font-weight: 600; color: #475569; }<!-- [et_pb_line_break_holder] -->.ov-customizer-select {<!-- [et_pb_line_break_holder] -->    width: 100%; padding: 10px; border-radius: 6px; border: 1px solid #cbd5e1;<!-- [et_pb_line_break_holder] -->    font-size: 13px; cursor: pointer; box-sizing: border-box;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-colors-grid {<!-- [et_pb_line_break_holder] -->    display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 12px; margin-bottom: 16px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-card {<!-- [et_pb_line_break_holder] -->    display: flex; flex-direction: column; align-items: center; gap: 8px;<!-- [et_pb_line_break_holder] -->    background: #f8fafc; padding: 10px; border-radius: 8px; border: 1px solid #e2e8f0;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-card label { font-size: 11px; font-weight: 600; text-align: center; color: #475569;}<!-- [et_pb_line_break_holder] -->.ov-color-input-wrapper {<!-- [et_pb_line_break_holder] -->    position: relative; width: 36px; height: 36px; border-radius: 50%;<!-- [et_pb_line_break_holder] -->    overflow: hidden; border: 2px solid #cbd5e1; cursor: pointer;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-input-wrapper input[type=\"color\"] { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }<!-- [et_pb_line_break_holder] -->.ov-color-card span { font-size: 10px; font-family: monospace; background: #f1f5f9; padding: 3px 6px; border-radius: 4px; }<!-- [et_pb_line_break_holder] -->.ov-color-palette {<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    display: grid;<!-- [et_pb_line_break_holder] -->    grid-template-columns: repeat(8, minmax(22px, 1fr));<!-- [et_pb_line_break_holder] -->    gap: 6px;<!-- [et_pb_line_break_holder] -->    margin-top: 2px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-swatch {<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    aspect-ratio: 1 \/ 1;<!-- [et_pb_line_break_holder] -->    min-height: 24px;<!-- [et_pb_line_break_holder] -->    border: 1px solid #cbd5e1;<!-- [et_pb_line_break_holder] -->    border-radius: 6px;<!-- [et_pb_line_break_holder] -->    cursor: pointer;<!-- [et_pb_line_break_holder] -->    box-shadow: inset 0 0 0 2px rgba(255,255,255,.55);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-swatch:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }<!-- [et_pb_line_break_holder] -->.ov-hex-input {<!-- [et_pb_line_break_holder] -->    width: 92px;<!-- [et_pb_line_break_holder] -->    max-width: 100%;<!-- [et_pb_line_break_holder] -->    border: 1px solid #dbe3ef;<!-- [et_pb_line_break_holder] -->    border-radius: 5px;<!-- [et_pb_line_break_holder] -->    background: #fff;<!-- [et_pb_line_break_holder] -->    color: #0f172a;<!-- [et_pb_line_break_holder] -->    font-size: 10px;<!-- [et_pb_line_break_holder] -->    font-family: monospace;<!-- [et_pb_line_break_holder] -->    text-align: center;<!-- [et_pb_line_break_holder] -->    padding: 5px 6px;<!-- [et_pb_line_break_holder] -->    box-sizing: border-box;<!-- [et_pb_line_break_holder] -->    text-transform: uppercase;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (min-width: 768px) and (max-width: 980px) {<!-- [et_pb_line_break_holder] -->    .ov-customizer-container { padding: 18px; }<!-- [et_pb_line_break_holder] -->    .ov-customizer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }<!-- [et_pb_line_break_holder] -->    .ov-colors-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }<!-- [et_pb_line_break_holder] -->    .ov-color-card { min-width: 0; }<!-- [et_pb_line_break_holder] -->    .ov-color-palette { grid-template-columns: repeat(4, minmax(26px, 1fr)); gap: 7px; }<!-- [et_pb_line_break_holder] -->    .ov-color-swatch { min-height: 30px; }<!-- [et_pb_line_break_holder] -->    .ov-file-drop { padding: 14px; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 767px) {<!-- [et_pb_line_break_holder] -->    .ov-customizer-container { padding: 16px; border-radius: 10px; }<!-- [et_pb_line_break_holder] -->    .ov-customizer-grid { grid-template-columns: 1fr; gap: 14px; }<!-- [et_pb_line_break_holder] -->    .ov-colors-grid { grid-template-columns: 1fr; gap: 12px; }<!-- [et_pb_line_break_holder] -->    .ov-color-card { padding: 12px; min-width: 0; }<!-- [et_pb_line_break_holder] -->    .ov-color-palette { grid-template-columns: repeat(4, minmax(28px, 1fr)); gap: 8px; }<!-- [et_pb_line_break_holder] -->    .ov-color-swatch { min-height: 32px; }<!-- [et_pb_line_break_holder] -->    .ov-color-input-wrapper { width: 46px; height: 46px; }<!-- [et_pb_line_break_holder] -->    .ov-color-input-wrapper input[type=\"color\"] { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }<!-- [et_pb_line_break_holder] -->    .ov-hex-input { width: 100%; font-size: 12px; padding: 7px 6px; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-file-drop {<!-- [et_pb_line_break_holder] -->    border: 2px dashed #cbd5e1; padding: 16px; border-radius: 8px;<!-- [et_pb_line_break_holder] -->    text-align: center; background: #f8fafc; cursor: pointer; position: relative;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-file-drop input[type=\"file\"] { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }<!-- [et_pb_line_break_holder] -->.ov-file-preview { display: none; justify-content: space-between; padding: 8px; background: #f1f5f9; border-radius: 6px; margin-top: 8px; }<!-- [et_pb_line_break_holder] -->.ov-file-preview-remove { background: none; border: none; color: #ef4444; font-weight: bold; cursor: pointer; }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.ov-color-button {<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    height: 100%;<!-- [et_pb_line_break_holder] -->    border: 0;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    cursor: pointer;<!-- [et_pb_line_break_holder] -->    display: block;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-picker-popover {<!-- [et_pb_line_break_holder] -->    position: fixed;<!-- [et_pb_line_break_holder] -->    z-index: 999999;<!-- [et_pb_line_break_holder] -->    width: min(330px, calc(100vw - 24px));<!-- [et_pb_line_break_holder] -->    background: #ffffff;<!-- [et_pb_line_break_holder] -->    border: 1px solid #cbd5e1;<!-- [et_pb_line_break_holder] -->    border-radius: 10px;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 18px 40px rgba(15, 23, 42, .22);<!-- [et_pb_line_break_holder] -->    padding: 12px;<!-- [et_pb_line_break_holder] -->    box-sizing: border-box;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-picker-area {<!-- [et_pb_line_break_holder] -->    position: relative;<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    aspect-ratio: 1.6 \/ 1;<!-- [et_pb_line_break_holder] -->    border-radius: 6px;<!-- [et_pb_line_break_holder] -->    border: 1px solid #94a3b8;<!-- [et_pb_line_break_holder] -->    cursor: crosshair;<!-- [et_pb_line_break_holder] -->    overflow: hidden;<!-- [et_pb_line_break_holder] -->    background-image: linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, transparent);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-picker-target {<!-- [et_pb_line_break_holder] -->    position: absolute;<!-- [et_pb_line_break_holder] -->    width: 14px;<!-- [et_pb_line_break_holder] -->    height: 14px;<!-- [et_pb_line_break_holder] -->    border: 2px solid #fff;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 0 0 1px #0f172a;<!-- [et_pb_line_break_holder] -->    transform: translate(-50%, -50%);<!-- [et_pb_line_break_holder] -->    pointer-events: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-hue-row { display: flex; align-items: center; gap: 10px; margin-top: 10px; }<!-- [et_pb_line_break_holder] -->.ov-color-eyedrop { width: 28px; height: 28px; border: 0; background: transparent; font-size: 18px; cursor: pointer; }<!-- [et_pb_line_break_holder] -->.ov-color-hue {<!-- [et_pb_line_break_holder] -->    flex: 1;<!-- [et_pb_line_break_holder] -->    height: 16px;<!-- [et_pb_line_break_holder] -->    border-radius: 999px;<!-- [et_pb_line_break_holder] -->    appearance: none;<!-- [et_pb_line_break_holder] -->    -webkit-appearance: none;<!-- [et_pb_line_break_holder] -->    background: linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);<!-- [et_pb_line_break_holder] -->    border: 1px solid #cbd5e1;<!-- [et_pb_line_break_holder] -->    cursor: pointer;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-hue::-webkit-slider-thumb {<!-- [et_pb_line_break_holder] -->    -webkit-appearance: none;<!-- [et_pb_line_break_holder] -->    width: 18px;<!-- [et_pb_line_break_holder] -->    height: 18px;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    background: #ffffff;<!-- [et_pb_line_break_holder] -->    border: 2px solid #2563eb;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 1px 4px rgba(15, 23, 42, .35);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-hue::-moz-range-thumb {<!-- [et_pb_line_break_holder] -->    width: 18px;<!-- [et_pb_line_break_holder] -->    height: 18px;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    background: #ffffff;<!-- [et_pb_line_break_holder] -->    border: 2px solid #2563eb;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 1px 4px rgba(15, 23, 42, .35);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-current-dot {<!-- [et_pb_line_break_holder] -->    width: 28px;<!-- [et_pb_line_break_holder] -->    height: 28px;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    border: 2px solid #e2e8f0;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 1px 4px rgba(15, 23, 42, .2);<!-- [et_pb_line_break_holder] -->    flex: 0 0 auto;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-rgb-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 10px; }<!-- [et_pb_line_break_holder] -->.ov-color-rgb-field { display: flex; flex-direction: column; align-items: center; gap: 3px; font-size: 11px; color: #0f172a; }<!-- [et_pb_line_break_holder] -->.ov-color-rgb-field input { width: 100%; border: 1px solid #cbd5e1; border-radius: 5px; padding: 6px; text-align: center; box-sizing: border-box; }<!-- [et_pb_line_break_holder] -->.ov-color-picker-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 12px; }<!-- [et_pb_line_break_holder] -->.ov-color-picker-actions button { border: 0; border-radius: 6px; padding: 8px 11px; font-weight: 700; cursor: pointer; }<!-- [et_pb_line_break_holder] -->.ov-color-picker-cancel { background: #e2e8f0; color: #334155; }<!-- [et_pb_line_break_holder] -->.ov-color-picker-apply { background: #2563eb; color: #fff; }<!-- [et_pb_line_break_holder] -->@media (max-width: 767px) {<!-- [et_pb_line_break_holder] -->    .ov-color-picker-popover {<!-- [et_pb_line_break_holder] -->        left: 12px !important;<!-- [et_pb_line_break_holder] -->        right: 12px !important;<!-- [et_pb_line_break_holder] -->        top: 18vh !important;<!-- [et_pb_line_break_holder] -->        width: auto;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-color-palette { display: none !important; }<!-- [et_pb_line_break_holder] -->.ov-inline-color-picker {<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    display: flex;<!-- [et_pb_line_break_holder] -->    flex-direction: column;<!-- [et_pb_line_break_holder] -->    gap: 8px;<!-- [et_pb_line_break_holder] -->    margin-top: 6px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-inline-color-area {<!-- [et_pb_line_break_holder] -->    position: relative;<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    aspect-ratio: 1.75 \/ 1;<!-- [et_pb_line_break_holder] -->    min-height: 92px;<!-- [et_pb_line_break_holder] -->    border: 1px solid #cbd5e1;<!-- [et_pb_line_break_holder] -->    border-radius: 8px;<!-- [et_pb_line_break_holder] -->    cursor: crosshair;<!-- [et_pb_line_break_holder] -->    overflow: hidden;<!-- [et_pb_line_break_holder] -->    background-image: linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, transparent);<!-- [et_pb_line_break_holder] -->    touch-action: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-inline-color-target {<!-- [et_pb_line_break_holder] -->    position: absolute;<!-- [et_pb_line_break_holder] -->    width: 16px;<!-- [et_pb_line_break_holder] -->    height: 16px;<!-- [et_pb_line_break_holder] -->    border: 2px solid #fff;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 0 0 1px #0f172a, 0 1px 4px rgba(15, 23, 42, .35);<!-- [et_pb_line_break_holder] -->    transform: translate(-50%, -50%);<!-- [et_pb_line_break_holder] -->    pointer-events: none;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-inline-hue {<!-- [et_pb_line_break_holder] -->    width: 100%;<!-- [et_pb_line_break_holder] -->    height: 18px;<!-- [et_pb_line_break_holder] -->    border-radius: 999px;<!-- [et_pb_line_break_holder] -->    appearance: none;<!-- [et_pb_line_break_holder] -->    -webkit-appearance: none;<!-- [et_pb_line_break_holder] -->    background: linear-gradient(to right, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);<!-- [et_pb_line_break_holder] -->    border: 1px solid #cbd5e1;<!-- [et_pb_line_break_holder] -->    cursor: pointer;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-inline-hue::-webkit-slider-thumb {<!-- [et_pb_line_break_holder] -->    -webkit-appearance: none;<!-- [et_pb_line_break_holder] -->    width: 20px;<!-- [et_pb_line_break_holder] -->    height: 20px;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    background: #fff;<!-- [et_pb_line_break_holder] -->    border: 2px solid #2563eb;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 1px 4px rgba(15, 23, 42, .35);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.ov-inline-hue::-moz-range-thumb {<!-- [et_pb_line_break_holder] -->    width: 20px;<!-- [et_pb_line_break_holder] -->    height: 20px;<!-- [et_pb_line_break_holder] -->    border-radius: 50%;<!-- [et_pb_line_break_holder] -->    background: #fff;<!-- [et_pb_line_break_holder] -->    border: 2px solid #2563eb;<!-- [et_pb_line_break_holder] -->    box-shadow: 0 1px 4px rgba(15, 23, 42, .35);<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 767px) {<!-- [et_pb_line_break_holder] -->    .ov-colors-grid { grid-template-columns: 1fr; }<!-- [et_pb_line_break_holder] -->    .ov-inline-color-area { min-height: 160px; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (min-width: 768px) and (max-width: 980px) {<!-- [et_pb_line_break_holder] -->    .ov-colors-grid { grid-template-columns: 1fr 1fr; }<!-- [et_pb_line_break_holder] -->    .ov-inline-color-area { min-height: 130px; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 767px) {<!-- [et_pb_line_break_holder] -->    .ov-button.generar-qr,<!-- [et_pb_line_break_holder] -->    .ov-button.descargar-qr {<!-- [et_pb_line_break_holder] -->        width: min(100%, 260px) !important;<!-- [et_pb_line_break_holder] -->        min-height: 56px;<!-- [et_pb_line_break_holder] -->        margin: 0 auto 12px auto !important;<!-- [et_pb_line_break_holder] -->        display: flex !important;<!-- [et_pb_line_break_holder] -->        align-items: center !important;<!-- [et_pb_line_break_holder] -->        justify-content: center !important;<!-- [et_pb_line_break_holder] -->        text-align: center !important;<!-- [et_pb_line_break_holder] -->        white-space: nowrap;<!-- [et_pb_line_break_holder] -->        box-sizing: border-box;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"ov-customizer-container\"><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"ov-customizer-title\">Personalizaci\u00f3n Avanzada del QR<\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"ov-customizer-grid\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-customizer-field\"><!-- [et_pb_line_break_holder] -->            <label>Estilo de Puntos<\/label><!-- [et_pb_line_break_holder] -->            <select id=\"ov-qr-dots-style\" class=\"ov-customizer-select\"><!-- [et_pb_line_break_holder] --><option value=\"square\">Cuadrado<\/option><!-- [et_pb_line_break_holder] --><option value=\"dots\">Puntos<\/option><!-- [et_pb_line_break_holder] --><option value=\"rounded\">Redondeado<\/option><!-- [et_pb_line_break_holder] --><option value=\"classy\">Elegante<\/option><!-- [et_pb_line_break_holder] -->            <\/select><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-customizer-field\"><!-- [et_pb_line_break_holder] -->            <label>Estilo de Esquinas (Ojos)<\/label><!-- [et_pb_line_break_holder] -->            <select id=\"ov-qr-corners-style\" class=\"ov-customizer-select\"><!-- [et_pb_line_break_holder] --><option value=\"square\">Cuadrado<\/option><!-- [et_pb_line_break_holder] --><option value=\"dot\">Punto<\/option><!-- [et_pb_line_break_holder] --><option value=\"extra-rounded\">Esquina Redondeada<\/option><!-- [et_pb_line_break_holder] -->            <\/select><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"ov-customizer-grid\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-customizer-field\"><!-- [et_pb_line_break_holder] -->            <label>Color Principal (Puntos)<\/label><!-- [et_pb_line_break_holder] -->            <select id=\"ov-color-type\" class=\"ov-customizer-select\" onchange=\"toggleGradientOptions()\"><!-- [et_pb_line_break_holder] --><option value=\"single\">Color S\u00f3lido<\/option><!-- [et_pb_line_break_holder] --><option value=\"gradient-linear\">Gradiente Lineal<\/option><!-- [et_pb_line_break_holder] --><option value=\"gradient-radial\">Gradiente Radial<\/option><!-- [et_pb_line_break_holder] -->            <\/select><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-customizer-field\"><!-- [et_pb_line_break_holder] -->            <label>Color del Fondo<\/label><!-- [et_pb_line_break_holder] -->            <select id=\"ov-bg-color-type\" class=\"ov-customizer-select\" onchange=\"toggleGradientOptions()\"><!-- [et_pb_line_break_holder] --><option value=\"single\">Color S\u00f3lido<\/option><!-- [et_pb_line_break_holder] --><option value=\"gradient-linear\">Gradiente Lineal<\/option><!-- [et_pb_line_break_holder] --><option value=\"gradient-radial\">Gradiente Radial<\/option><!-- [et_pb_line_break_holder] -->            <\/select><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"ov-colors-grid\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-color-card\"><!-- [et_pb_line_break_holder] -->            <label id=\"lbl-fg-start\">Puntos<\/label><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"ov-color-input-wrapper\"><input type=\"color\" id=\"ov-qr-color-foreground\" value=\"#000000\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <span id=\"ov-qr-hex-foreground\">#000000<\/span><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-color-card\" id=\"ov-gradient-end-container\" style=\"display: none;\"><!-- [et_pb_line_break_holder] -->            <label>Puntos (Final)<\/label><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"ov-color-input-wrapper\"><input type=\"color\" id=\"ov-qr-color-gradient\" value=\"#3b82f6\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <span id=\"ov-qr-hex-gradient\">#3B82F6<\/span><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-color-card\"><!-- [et_pb_line_break_holder] -->            <label id=\"lbl-bg-start\">Fondo<\/label><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"ov-color-input-wrapper\"><input type=\"color\" id=\"ov-qr-color-background\" value=\"#ffffff\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <span id=\"ov-qr-hex-background\">#FFFFFF<\/span><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-color-card\" id=\"ov-bg-gradient-end-container\" style=\"display: none;\"><!-- [et_pb_line_break_holder] -->            <label>Fondo (Final)<\/label><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"ov-color-input-wrapper\"><input type=\"color\" id=\"ov-qr-color-bg-gradient\" value=\"#e2e8f0\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <span id=\"ov-qr-hex-bg-gradient\">#E2E8F0<\/span><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-color-card\"><!-- [et_pb_line_break_holder] -->            <label>Ojos (Marcos)<\/label><!-- [et_pb_line_break_holder] -->            <\/p>\n<div class=\"ov-color-input-wrapper\"><input type=\"color\" id=\"ov-qr-color-corners\" value=\"#000000\"><\/div>\n<p><!-- [et_pb_line_break_holder] -->            <span id=\"ov-qr-hex-corners\">#000000<\/span><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"ov-customizer-field\"><!-- [et_pb_line_break_holder] -->        <label>A\u00f1adir Logo Central<\/label><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-file-drop\"><!-- [et_pb_line_break_holder] -->            <span style=\"font-size: 24px;\">\ud83d\udcc1<\/span><!-- [et_pb_line_break_holder] -->            <span style=\"font-size: 12px; margin-top: 5px;\">Seleccionar imagen (JPG\/PNG\/SVG)<\/span><!-- [et_pb_line_break_holder] -->            <input type=\"file\" id=\"ov-qr-logo\" accept=\"image\/*\"><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->        <\/p>\n<div class=\"ov-file-preview\" id=\"ov-logo-preview-container\"><!-- [et_pb_line_break_holder] -->            <span id=\"ov-logo-filename\" style=\"font-size: 11px;\">logo.png<\/span><!-- [et_pb_line_break_holder] -->            <button type=\"button\" class=\"ov-file-preview-remove\" id=\"ov-remove-logo\">Eliminar<\/button><!-- [et_pb_line_break_holder] -->        <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><button onclick=\"generateQR()\" class=\"ov-button generar-qr\">Generar QR<\/button><!-- [et_pb_line_break_holder] --><button onclick=\"downloadQR()\" class=\"ov-button descargar-qr\">Descargar QR<\/button><!-- [et_pb_line_break_holder] --><\/p>\n<div id=\"ov-warning\" class=\"ov-warning\"><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->function toggleGradientOptions() {<!-- [et_pb_line_break_holder] -->    const typeFg = document.getElementById('ov-color-type').value;<!-- [et_pb_line_break_holder] -->    const typeBg = document.getElementById('ov-bg-color-type').value;<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    const fgContainer = document.getElementById('ov-gradient-end-container');<!-- [et_pb_line_break_holder] -->    const bgContainer = document.getElementById('ov-bg-gradient-end-container');<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    const lblFgStart = document.getElementById('lbl-fg-start');<!-- [et_pb_line_break_holder] -->    const lblBgStart = document.getElementById('lbl-bg-start');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Control para los Puntos<!-- [et_pb_line_break_holder] -->    if (typeFg === 'single') {<!-- [et_pb_line_break_holder] -->        fgContainer.style.display = 'none';<!-- [et_pb_line_break_holder] -->        lblFgStart.textContent = 'Puntos'; <!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->        fgContainer.style.display = 'flex';<!-- [et_pb_line_break_holder] -->        lblFgStart.textContent = 'Puntos (Inicio)'; <!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ Control para el Fondo<!-- [et_pb_line_break_holder] -->    if (typeBg === 'single') {<!-- [et_pb_line_break_holder] -->        bgContainer.style.display = 'none';<!-- [et_pb_line_break_holder] -->        lblBgStart.textContent = 'Fondo'; <!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->        bgContainer.style.display = 'flex';<!-- [et_pb_line_break_holder] -->        lblBgStart.textContent = 'Fondo (Inicio)'; <!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][et_pb_code admin_label=&#8221;SCRIPT PARA GENERAR QR&#8221; _builder_version=&#8221;4.27.7&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<script src=\"https:\/\/unpkg.com\/qr-code-styling@1.5.0\/lib\/qr-code-styling.js\"><\/script><!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->let qrCode;<!-- [et_pb_line_break_holder] -->let currentLogoBase64 = '';<!-- [et_pb_line_break_holder] -->let currentLogoFile = null;<!-- [et_pb_line_break_holder] -->let currentQRConfig = {};<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->function setupColorPickers() {<!-- [et_pb_line_break_holder] -->    const ids = [<!-- [et_pb_line_break_holder] -->        {input: 'ov-qr-color-foreground', label: 'ov-qr-hex-foreground'},<!-- [et_pb_line_break_holder] -->        {input: 'ov-qr-color-gradient', label: 'ov-qr-hex-gradient'},<!-- [et_pb_line_break_holder] -->        {input: 'ov-qr-color-background', label: 'ov-qr-hex-background'},<!-- [et_pb_line_break_holder] -->        {input: 'ov-qr-color-bg-gradient', label: 'ov-qr-hex-bg-gradient'},<!-- [et_pb_line_break_holder] -->        {input: 'ov-qr-color-corners', label: 'ov-qr-hex-corners'}<!-- [et_pb_line_break_holder] -->    ];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const normalizeHex = (value) => {<!-- [et_pb_line_break_holder] -->        const cleaned = String(value || '').trim().replace(\/[^0-9a-fA-F]\/g, '').slice(0, 6);<!-- [et_pb_line_break_holder] -->        if (cleaned.length === 3) return '#' + cleaned.split('').map((char) => char + char).join('').toUpperCase();<!-- [et_pb_line_break_holder] -->        if (cleaned.length === 6) return '#' + cleaned.toUpperCase();<!-- [et_pb_line_break_holder] -->        return null;<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    const rgbToHex = (r, g, b) => '#' + [r, g, b].map(v => Math.max(0, Math.min(255, Number(v) || 0)).toString(16).padStart(2, '0')).join('').toUpperCase();<!-- [et_pb_line_break_holder] -->    const hexToRgb = (hex) => {<!-- [et_pb_line_break_holder] -->        const value = normalizeHex(hex) || '#000000';<!-- [et_pb_line_break_holder] -->        return { r: parseInt(value.slice(1, 3), 16), g: parseInt(value.slice(3, 5), 16), b: parseInt(value.slice(5, 7), 16) };<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    const rgbToHsv = (r, g, b) => {<!-- [et_pb_line_break_holder] -->        r \/= 255; g \/= 255; b \/= 255;<!-- [et_pb_line_break_holder] -->        const max = Math.max(r, g, b), min = Math.min(r, g, b), d = max - min;<!-- [et_pb_line_break_holder] -->        let h = 0;<!-- [et_pb_line_break_holder] -->        if (d !== 0) {<!-- [et_pb_line_break_holder] -->            if (max === r) h = ((g - b) \/ d) % 6;<!-- [et_pb_line_break_holder] -->            else if (max === g) h = (b - r) \/ d + 2;<!-- [et_pb_line_break_holder] -->            else h = (r - g) \/ d + 4;<!-- [et_pb_line_break_holder] -->            h = Math.round(h * 60);<!-- [et_pb_line_break_holder] -->            if (h < 0) h += 360;<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->        return { h, s: max === 0 ? 0 : d \/ max, v: max };<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] -->    const hsvToRgb = (h, s, v) => {<!-- [et_pb_line_break_holder] -->        const c = v * s;<!-- [et_pb_line_break_holder] -->        const x = c * (1 - Math.abs((h \/ 60) % 2 - 1));<!-- [et_pb_line_break_holder] -->        const m = v - c;<!-- [et_pb_line_break_holder] -->        let r = 0, g = 0, b = 0;<!-- [et_pb_line_break_holder] -->        if (h < 60) { r = c; g = x; }<!-- [et_pb_line_break_holder] -->        else if (h < 120) { r = x; g = c; }<!-- [et_pb_line_break_holder] -->        else if (h < 180) { g = c; b = x; }<!-- [et_pb_line_break_holder] -->        else if (h < 240) { g = x; b = c; }<!-- [et_pb_line_break_holder] -->        else if (h < 300) { r = x; b = c; }<!-- [et_pb_line_break_holder] -->        else { r = c; b = x; }<!-- [et_pb_line_break_holder] -->        return { r: Math.round((r + m) * 255), g: Math.round((g + m) * 255), b: Math.round((b + m) * 255) };<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    ids.forEach(item => {<!-- [et_pb_line_break_holder] -->        const inputEl = document.getElementById(item.input);<!-- [et_pb_line_break_holder] -->        const labelEl = document.getElementById(item.label);<!-- [et_pb_line_break_holder] -->        const card = inputEl ? inputEl.closest('.ov-color-card') : null;<!-- [et_pb_line_break_holder] -->        const wrapper = inputEl ? inputEl.closest('.ov-color-input-wrapper') : null;<!-- [et_pb_line_break_holder] -->        if (!inputEl || !labelEl || !card || !wrapper) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const colorButton = document.createElement('button');<!-- [et_pb_line_break_holder] -->        colorButton.type = 'button';<!-- [et_pb_line_break_holder] -->        colorButton.className = 'ov-color-button';<!-- [et_pb_line_break_holder] -->        wrapper.appendChild(colorButton);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const hexInput = document.createElement('input');<!-- [et_pb_line_break_holder] -->        hexInput.type = 'text';<!-- [et_pb_line_break_holder] -->        hexInput.className = 'ov-hex-input';<!-- [et_pb_line_break_holder] -->        hexInput.value = inputEl.value.toUpperCase();<!-- [et_pb_line_break_holder] -->        hexInput.setAttribute('inputmode', 'text');<!-- [et_pb_line_break_holder] -->        hexInput.setAttribute('maxlength', '7');<!-- [et_pb_line_break_holder] -->        hexInput.setAttribute('aria-label', 'Color en hexadecimal');<!-- [et_pb_line_break_holder] -->        labelEl.insertAdjacentElement('afterend', hexInput);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const inlinePicker = document.createElement('div');<!-- [et_pb_line_break_holder] -->        inlinePicker.className = 'ov-inline-color-picker';<!-- [et_pb_line_break_holder] -->        inlinePicker.innerHTML = '<\/p>\n<div class=\"ov-inline-color-area\"><span class=\"ov-inline-color-target\"><\/span><\/div>\n<p><input class=\"ov-inline-hue\" type=\"range\" min=\"0\" max=\"359\" aria-label=\"Tono del color\">';<!-- [et_pb_line_break_holder] -->        card.appendChild(inlinePicker);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const area = inlinePicker.querySelector('.ov-inline-color-area');<!-- [et_pb_line_break_holder] -->        const target = inlinePicker.querySelector('.ov-inline-color-target');<!-- [et_pb_line_break_holder] -->        const hue = inlinePicker.querySelector('.ov-inline-hue');<!-- [et_pb_line_break_holder] -->        let hsv = rgbToHsv(...Object.values(hexToRgb(inputEl.value)));<!-- [et_pb_line_break_holder] -->        let syncing = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        const render = (dispatch = true) => {<!-- [et_pb_line_break_holder] -->            const rgb = hsvToRgb(hsv.h, hsv.s, hsv.v);<!-- [et_pb_line_break_holder] -->            const hex = rgbToHex(rgb.r, rgb.g, rgb.b);<!-- [et_pb_line_break_holder] -->            syncing = true;<!-- [et_pb_line_break_holder] -->            inputEl.value = hex;<!-- [et_pb_line_break_holder] -->            labelEl.textContent = hex;<!-- [et_pb_line_break_holder] -->            hexInput.value = hex;<!-- [et_pb_line_break_holder] -->            colorButton.style.backgroundColor = hex;<!-- [et_pb_line_break_holder] -->            area.style.backgroundColor = 'hsl(' + hsv.h + ', 100%, 50%)';<!-- [et_pb_line_break_holder] -->            target.style.left = (hsv.s * 100) + '%';<!-- [et_pb_line_break_holder] -->            target.style.top = ((1 - hsv.v) * 100) + '%';<!-- [et_pb_line_break_holder] -->            hue.value = hsv.h;<!-- [et_pb_line_break_holder] -->            syncing = false;<!-- [et_pb_line_break_holder] -->            if (dispatch) inputEl.dispatchEvent(new Event('input', { bubbles: true }));<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] -->        const setColor = (value, dispatch = true) => {<!-- [et_pb_line_break_holder] -->            const hex = normalizeHex(value);<!-- [et_pb_line_break_holder] -->            if (!hex) return;<!-- [et_pb_line_break_holder] -->            const rgb = hexToRgb(hex);<!-- [et_pb_line_break_holder] -->            hsv = rgbToHsv(rgb.r, rgb.g, rgb.b);<!-- [et_pb_line_break_holder] -->            render(dispatch);<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] -->        const updateFromArea = (event) => {<!-- [et_pb_line_break_holder] -->            const rect = area.getBoundingClientRect();<!-- [et_pb_line_break_holder] -->            const x = Math.max(0, Math.min(rect.width, event.clientX - rect.left));<!-- [et_pb_line_break_holder] -->            const y = Math.max(0, Math.min(rect.height, event.clientY - rect.top));<!-- [et_pb_line_break_holder] -->            hsv.s = x \/ rect.width;<!-- [et_pb_line_break_holder] -->            hsv.v = 1 - (y \/ rect.height);<!-- [et_pb_line_break_holder] -->            render(true);<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->        area.addEventListener('pointerdown', (event) => {<!-- [et_pb_line_break_holder] -->            updateFromArea(event);<!-- [et_pb_line_break_holder] -->            area.setPointerCapture(event.pointerId);<!-- [et_pb_line_break_holder] -->            const move = (moveEvent) => updateFromArea(moveEvent);<!-- [et_pb_line_break_holder] -->            const up = () => {<!-- [et_pb_line_break_holder] -->                area.removeEventListener('pointermove', move);<!-- [et_pb_line_break_holder] -->                area.removeEventListener('pointerup', up);<!-- [et_pb_line_break_holder] -->                area.removeEventListener('pointercancel', up);<!-- [et_pb_line_break_holder] -->            };<!-- [et_pb_line_break_holder] -->            area.addEventListener('pointermove', move);<!-- [et_pb_line_break_holder] -->            area.addEventListener('pointerup', up);<!-- [et_pb_line_break_holder] -->            area.addEventListener('pointercancel', up);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        hue.addEventListener('input', () => { hsv.h = Number(hue.value); render(true); });<!-- [et_pb_line_break_holder] -->        hexInput.addEventListener('change', () => setColor(hexInput.value, true));<!-- [et_pb_line_break_holder] -->        hexInput.addEventListener('blur', () => setColor(hexInput.value, true));<!-- [et_pb_line_break_holder] -->        inputEl.addEventListener('input', (event) => { if (!syncing) setColor(event.target.value, false); });<!-- [et_pb_line_break_holder] -->        colorButton.addEventListener('click', () => area.focus && area.focus());<!-- [et_pb_line_break_holder] -->        render(false);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function getQRPreviewSize() {<!-- [et_pb_line_break_holder] -->    const viewport = window.innerWidth || document.documentElement.clientWidth || 1024;<!-- [et_pb_line_break_holder] -->    if (viewport <= 767) return Math.min(320, Math.max(240, viewport - 96));<!-- [et_pb_line_break_holder] -->    if (viewport <= 980) return Math.min(520, Math.max(340, viewport - 128));<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const qrcodeContainer = document.getElementById('ov-qrcode');<!-- [et_pb_line_break_holder] -->    const column = qrcodeContainer ? (qrcodeContainer.closest('.et_pb_column') || qrcodeContainer.parentElement) : null;<!-- [et_pb_line_break_holder] -->    const columnWidth = column ? column.getBoundingClientRect().width : 0;<!-- [et_pb_line_break_holder] -->    const availableWidth = columnWidth > 260 ? columnWidth - 32 : viewport * 0.38;<!-- [et_pb_line_break_holder] -->    return Math.round(Math.min(620, Math.max(420, availableWidth)));<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function applyQRPreviewSize() {<!-- [et_pb_line_break_holder] -->    const qrcodeContainer = document.getElementById('ov-qrcode');<!-- [et_pb_line_break_holder] -->    if (!qrcodeContainer) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const size = getQRPreviewSize();<!-- [et_pb_line_break_holder] -->    qrcodeContainer.style.setProperty('--ov-qr-preview-size', size + 'px');<!-- [et_pb_line_break_holder] -->    qrcodeContainer.style.width = (size + 32) + 'px';<!-- [et_pb_line_break_holder] -->    qrcodeContainer.style.maxWidth = '100%';<!-- [et_pb_line_break_holder] -->    qrcodeContainer.style.minHeight = size + 'px';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const renderedQr = qrcodeContainer.querySelector('svg, canvas');<!-- [et_pb_line_break_holder] -->    if (renderedQr) {<!-- [et_pb_line_break_holder] -->        renderedQr.style.setProperty('width', size + 'px', 'important');<!-- [et_pb_line_break_holder] -->        renderedQr.style.setProperty('height', size + 'px', 'important');<!-- [et_pb_line_break_holder] -->        renderedQr.style.setProperty('max-width', '100%', 'important');<!-- [et_pb_line_break_holder] -->        renderedQr.style.setProperty('display', 'block', 'important');<!-- [et_pb_line_break_holder] -->        if (renderedQr.tagName && renderedQr.tagName.toLowerCase() === 'svg') {<!-- [et_pb_line_break_holder] -->            renderedQr.setAttribute('width', size);<!-- [et_pb_line_break_holder] -->            renderedQr.setAttribute('height', size);<!-- [et_pb_line_break_holder] -->            renderedQr.setAttribute('viewBox', '0 0 ' + currentQRConfig.width + ' ' + currentQRConfig.height);<!-- [et_pb_line_break_holder] -->            renderedQr.setAttribute('preserveAspectRatio', 'xMidYMid meet');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->function setupLogoUpload() {<!-- [et_pb_line_break_holder] -->    const logoInput = document.getElementById('ov-qr-logo');<!-- [et_pb_line_break_holder] -->    const container = document.getElementById('ov-logo-preview-container');<!-- [et_pb_line_break_holder] -->    const filenameSpan = document.getElementById('ov-logo-filename');<!-- [et_pb_line_break_holder] -->    const removeBtn = document.getElementById('ov-remove-logo');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (logoInput) {<!-- [et_pb_line_break_holder] -->        logoInput.addEventListener('change', (e) => {<!-- [et_pb_line_break_holder] -->            const file = e.target.files[0];<!-- [et_pb_line_break_holder] -->            if (!file) return;<!-- [et_pb_line_break_holder] -->            currentLogoFile = file;<!-- [et_pb_line_break_holder] -->            currentLogoBase64 = '';<!-- [et_pb_line_break_holder] -->            filenameSpan.textContent = file.name;<!-- [et_pb_line_break_holder] -->            container.style.display = 'flex';<!-- [et_pb_line_break_holder] -->            const reader = new FileReader();<!-- [et_pb_line_break_holder] -->            reader.onload = (event) => { currentLogoBase64 = event.target.result; };<!-- [et_pb_line_break_holder] -->            reader.readAsDataURL(file);<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (removeBtn) {<!-- [et_pb_line_break_holder] -->        removeBtn.addEventListener('click', () => {<!-- [et_pb_line_break_holder] -->            if(logoInput) logoInput.value = ''; <!-- [et_pb_line_break_holder] -->            currentLogoFile = null;<!-- [et_pb_line_break_holder] -->            currentLogoBase64 = ''; <!-- [et_pb_line_break_holder] -->            container.style.display = 'none';<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->window.addEventListener('load', () => {<!-- [et_pb_line_break_holder] -->    setupColorPickers();<!-- [et_pb_line_break_holder] -->    setupLogoUpload();<!-- [et_pb_line_break_holder] -->    applyQRPreviewSize();<!-- [et_pb_line_break_holder] -->    window.addEventListener('resize', applyQRPreviewSize);<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->    const qrTypeSelect = document.getElementById('ov-qr-type');<!-- [et_pb_line_break_holder] -->    if (qrTypeSelect) {<!-- [et_pb_line_break_holder] -->        qrTypeSelect.addEventListener('change', function() {<!-- [et_pb_line_break_holder] -->            const whatsappInputs = document.querySelector('.ov-whatsapp-inputs');<!-- [et_pb_line_break_holder] -->            const vcardInputs = document.querySelector('.ov-vcard-inputs');<!-- [et_pb_line_break_holder] -->            const normalInput = document.getElementById('ov-qr-text');<!-- [et_pb_line_break_holder] -->            <!-- [et_pb_line_break_holder] -->            if (whatsappInputs) whatsappInputs.style.display = (this.value === 'whatsapp') ? 'block' : 'none';<!-- [et_pb_line_break_holder] -->            if (vcardInputs) vcardInputs.style.display = (this.value === 'vcard') ? 'block' : 'none';<!-- [et_pb_line_break_holder] -->            if (normalInput) normalInput.style.display = (this.value !== 'whatsapp' && this.value !== 'vcard') ? 'block' : 'none';<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->function showWarning(message) {<!-- [et_pb_line_break_holder] -->    const warningElement = document.getElementById('ov-warning');<!-- [et_pb_line_break_holder] -->    if (warningElement) {<!-- [et_pb_line_break_holder] -->        warningElement.textContent = message;<!-- [et_pb_line_break_holder] -->        setTimeout(() => { warningElement.textContent = ''; }, 3000);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function generateVCard() {<!-- [et_pb_line_break_holder] -->    var name = document.getElementById('ov-vcard-name') ? document.getElementById('ov-vcard-name').value.trim() : '';<!-- [et_pb_line_break_holder] -->    var org = document.getElementById('ov-vcard-org') ? document.getElementById('ov-vcard-org').value.trim() : '';<!-- [et_pb_line_break_holder] -->    var tel = document.getElementById('ov-vcard-tel') ? document.getElementById('ov-vcard-tel').value.trim() : '';<!-- [et_pb_line_break_holder] -->    var email = document.getElementById('ov-vcard-email') ? document.getElementById('ov-vcard-email').value.trim() : '';<!-- [et_pb_line_break_holder] -->    var url = document.getElementById('ov-vcard-url') ? document.getElementById('ov-vcard-url').value.trim() : '';<!-- [et_pb_line_break_holder] -->    var address = document.getElementById('ov-vcard-address') ? document.getElementById('ov-vcard-address').value.trim() : '';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (!name) return false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var vcard = \"BEGIN:VCARD\\nVERSION:3.0\\n\";<!-- [et_pb_line_break_holder] -->    vcard += \"FN:\" + name + \"\\n\";<!-- [et_pb_line_break_holder] -->    if (org) vcard += \"ORG:\" + org + \"\\n\";<!-- [et_pb_line_break_holder] -->    if (tel) vcard += \"TEL:\" + tel + \"\\n\";<!-- [et_pb_line_break_holder] -->    if (email) vcard += \"EMAIL:\" + email + \"\\n\";<!-- [et_pb_line_break_holder] -->    if (url) vcard += \"URL:\" + url + \"\\n\";<!-- [et_pb_line_break_holder] -->    if (address) vcard += \"ADR:;;\" + address + \";;;;\\n\";<!-- [et_pb_line_break_holder] -->    vcard += \"END:VCARD\";<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    return vcard;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->function readLogoAsBase64(file) {<!-- [et_pb_line_break_holder] -->    return new Promise((resolve, reject) => {<!-- [et_pb_line_break_holder] -->        const reader = new FileReader();<!-- [et_pb_line_break_holder] -->        reader.onload = async (event) => {<!-- [et_pb_line_break_holder] -->            try {<!-- [et_pb_line_break_holder] -->                resolve(await normalizeLogoDataUrl(event.target.result));<!-- [et_pb_line_break_holder] -->            } catch (error) {<!-- [et_pb_line_break_holder] -->                resolve(event.target.result);<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] -->        reader.onerror = reject;<!-- [et_pb_line_break_holder] -->        reader.readAsDataURL(file);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->function normalizeLogoDataUrl(dataUrl) {<!-- [et_pb_line_break_holder] -->    return new Promise((resolve, reject) => {<!-- [et_pb_line_break_holder] -->        const img = new Image();<!-- [et_pb_line_break_holder] -->        img.onload = () => {<!-- [et_pb_line_break_holder] -->            const sourceCanvas = document.createElement('canvas');<!-- [et_pb_line_break_holder] -->            const sourceCtx = sourceCanvas.getContext('2d');<!-- [et_pb_line_break_holder] -->            sourceCanvas.width = img.naturalWidth || img.width;<!-- [et_pb_line_break_holder] -->            sourceCanvas.height = img.naturalHeight || img.height;<!-- [et_pb_line_break_holder] -->            sourceCtx.drawImage(img, 0, 0);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            let bounds = null;<!-- [et_pb_line_break_holder] -->            try {<!-- [et_pb_line_break_holder] -->                const pixels = sourceCtx.getImageData(0, 0, sourceCanvas.width, sourceCanvas.height).data;<!-- [et_pb_line_break_holder] -->                let minX = sourceCanvas.width;<!-- [et_pb_line_break_holder] -->                let minY = sourceCanvas.height;<!-- [et_pb_line_break_holder] -->                let maxX = 0;<!-- [et_pb_line_break_holder] -->                let maxY = 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                for (let y = 0; y < sourceCanvas.height; y++) {<!-- [et_pb_line_break_holder] -->                    for (let x = 0; x < sourceCanvas.width; x++) {<!-- [et_pb_line_break_holder] -->                        const alpha = pixels[((y * sourceCanvas.width + x) * 4) + 3];<!-- [et_pb_line_break_holder] -->                        if (alpha > 10) {<!-- [et_pb_line_break_holder] -->                            if (x < minX) minX = x;<!-- [et_pb_line_break_holder] -->                            if (y < minY) minY = y;<!-- [et_pb_line_break_holder] -->                            if (x > maxX) maxX = x;<!-- [et_pb_line_break_holder] -->                            if (y > maxY) maxY = y;<!-- [et_pb_line_break_holder] -->                        }<!-- [et_pb_line_break_holder] -->                    }<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->                if (maxX >= minX && maxY >= minY) {<!-- [et_pb_line_break_holder] -->                    bounds = { x: minX, y: minY, width: maxX - minX + 1, height: maxY - minY + 1 };<!-- [et_pb_line_break_holder] -->                }<!-- [et_pb_line_break_holder] -->            } catch (error) {<!-- [et_pb_line_break_holder] -->                bounds = null;<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            if (!bounds) {<!-- [et_pb_line_break_holder] -->                bounds = { x: 0, y: 0, width: sourceCanvas.width, height: sourceCanvas.height };<!-- [et_pb_line_break_holder] -->            }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const outputSize = 512;<!-- [et_pb_line_break_holder] -->            const padding = 56;<!-- [et_pb_line_break_holder] -->            const drawableSize = outputSize - (padding * 2);<!-- [et_pb_line_break_holder] -->            const scale = Math.min(drawableSize \/ bounds.width, drawableSize \/ bounds.height);<!-- [et_pb_line_break_holder] -->            const drawWidth = bounds.width * scale;<!-- [et_pb_line_break_holder] -->            const drawHeight = bounds.height * scale;<!-- [et_pb_line_break_holder] -->            const drawX = (outputSize - drawWidth) \/ 2;<!-- [et_pb_line_break_holder] -->            const drawY = (outputSize - drawHeight) \/ 2;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->            const outputCanvas = document.createElement('canvas');<!-- [et_pb_line_break_holder] -->            const outputCtx = outputCanvas.getContext('2d');<!-- [et_pb_line_break_holder] -->            outputCanvas.width = outputSize;<!-- [et_pb_line_break_holder] -->            outputCanvas.height = outputSize;<!-- [et_pb_line_break_holder] -->            outputCtx.clearRect(0, 0, outputSize, outputSize);<!-- [et_pb_line_break_holder] -->            outputCtx.drawImage(sourceCanvas, bounds.x, bounds.y, bounds.width, bounds.height, drawX, drawY, drawWidth, drawHeight);<!-- [et_pb_line_break_holder] -->            resolve(outputCanvas.toDataURL('image\/png'));<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] -->        img.onerror = reject;<!-- [et_pb_line_break_holder] -->        img.src = dataUrl;<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->async function generateQR() {<!-- [et_pb_line_break_holder] -->    var type = document.getElementById(\"ov-qr-type\") ? document.getElementById(\"ov-qr-type\").value : 'text';<!-- [et_pb_line_break_holder] -->    var text = '';<!-- [et_pb_line_break_holder] -->    var qrcodeContainer = document.getElementById(\"ov-qrcode\");<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->    if (!qrcodeContainer) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    if (type === 'whatsapp') {<!-- [et_pb_line_break_holder] -->        var number = document.getElementById(\"ov-whatsapp-number\") ? document.getElementById(\"ov-whatsapp-number\").value.trim() : '';<!-- [et_pb_line_break_holder] -->        var message = document.getElementById(\"ov-whatsapp-message\") ? document.getElementById(\"ov-whatsapp-message\").value.trim() : '';<!-- [et_pb_line_break_holder] -->        if (!number) return showWarning('Por favor, ingresa un n\u00famero de WhatsApp.');<!-- [et_pb_line_break_holder] -->        text = `https:\/\/wa.me\/${number}?text=${encodeURIComponent(message)}`;<!-- [et_pb_line_break_holder] -->    } else if (type === 'vcard') {<!-- [et_pb_line_break_holder] -->        text = generateVCard();<!-- [et_pb_line_break_holder] -->        if (!text) return showWarning('Por favor, completa al menos el nombre en la vCard.');<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->        text = document.getElementById(\"ov-qr-text\") ? document.getElementById(\"ov-qr-text\").value.trim() : '';<!-- [et_pb_line_break_holder] -->        if (text === '') return showWarning('Por favor, ingresa un texto o enlace antes de generar el QR.');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->    if (currentLogoFile && !currentLogoBase64) {<!-- [et_pb_line_break_holder] -->        try {<!-- [et_pb_line_break_holder] -->            currentLogoBase64 = await readLogoAsBase64(currentLogoFile);<!-- [et_pb_line_break_holder] -->        } catch (error) {<!-- [et_pb_line_break_holder] -->            return showWarning('No se pudo cargar el logo. Intenta seleccionar la imagen otra vez.');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    var finalText = text;<!-- [et_pb_line_break_holder] -->    switch(type) {<!-- [et_pb_line_break_holder] -->        case \"url\": if (!text.startsWith(\"http\")) finalText = \"https:\/\/\" + text; break;<!-- [et_pb_line_break_holder] -->        case \"email\": finalText = \"mailto:\" + text; break;<!-- [et_pb_line_break_holder] -->        case \"tel\": finalText = \"tel:\" + text; break;<!-- [et_pb_line_break_holder] -->        case \"sms\": finalText = \"sms:\" + text; break;<!-- [et_pb_line_break_holder] -->        case \"wifi\": finalText = \"WIFI:T:WPA;S:\" + text + \";P:;;\"; break;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->    const colorDark = document.getElementById('ov-qr-color-foreground') ? document.getElementById('ov-qr-color-foreground').value : '#000000';<!-- [et_pb_line_break_holder] -->    const colorGradientEnd = document.getElementById('ov-qr-color-gradient') ? document.getElementById('ov-qr-color-gradient').value : '#000000';<!-- [et_pb_line_break_holder] -->    const colorType = document.getElementById('ov-color-type') ? document.getElementById('ov-color-type').value : 'single';<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    const colorLight = document.getElementById('ov-qr-color-background') ? document.getElementById('ov-qr-color-background').value : '#ffffff';<!-- [et_pb_line_break_holder] -->    const colorBgGradientEnd = document.getElementById('ov-qr-color-bg-gradient') ? document.getElementById('ov-qr-color-bg-gradient').value : '#ffffff';<!-- [et_pb_line_break_holder] -->    const bgType = document.getElementById('ov-bg-color-type') ? document.getElementById('ov-bg-color-type').value : 'single';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    const colorCorners = document.getElementById('ov-qr-color-corners') ? document.getElementById('ov-qr-color-corners').value : '#000000';<!-- [et_pb_line_break_holder] -->    const dotStyle = document.getElementById('ov-qr-dots-style') ? document.getElementById('ov-qr-dots-style').value : 'square';<!-- [et_pb_line_break_holder] -->    const cornerStyle = document.getElementById('ov-qr-corners-style') ? document.getElementById('ov-qr-corners-style').value : 'square';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let dotsOptionsConfig = { type: dotStyle };<!-- [et_pb_line_break_holder] -->    if (colorType === 'single') {<!-- [et_pb_line_break_holder] -->        dotsOptionsConfig.color = colorDark;<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->        dotsOptionsConfig.gradient = {<!-- [et_pb_line_break_holder] -->            type: colorType === 'gradient-linear' ? 'linear' : 'radial',<!-- [et_pb_line_break_holder] -->            rotation: 0.785398,<!-- [et_pb_line_break_holder] -->            colorStops: [{ offset: 0, color: colorDark }, { offset: 1, color: colorGradientEnd }]<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    let backgroundOptionsConfig = {};<!-- [et_pb_line_break_holder] -->    if (bgType === 'single') {<!-- [et_pb_line_break_holder] -->        backgroundOptionsConfig.color = colorLight;<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->        backgroundOptionsConfig.gradient = {<!-- [et_pb_line_break_holder] -->            type: bgType === 'gradient-linear' ? 'linear' : 'radial',<!-- [et_pb_line_break_holder] -->            rotation: 0.785398,<!-- [et_pb_line_break_holder] -->            colorStops: [{ offset: 0, color: colorLight }, { offset: 1, color: colorBgGradientEnd }]<!-- [et_pb_line_break_holder] -->        };<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    currentQRConfig = {<!-- [et_pb_line_break_holder] -->        width: 560,<!-- [et_pb_line_break_holder] -->        height: 560,<!-- [et_pb_line_break_holder] -->        type: \"svg\",<!-- [et_pb_line_break_holder] -->        qrOptions: { errorCorrectionLevel: \"H\" }, <!-- [et_pb_line_break_holder] -->        data: finalText,<!-- [et_pb_line_break_holder] -->        image: currentLogoBase64 || \"\",<!-- [et_pb_line_break_holder] -->        margin: 24,<!-- [et_pb_line_break_holder] -->        dotsOptions: dotsOptionsConfig,<!-- [et_pb_line_break_holder] -->        backgroundOptions: backgroundOptionsConfig,<!-- [et_pb_line_break_holder] -->        cornersSquareOptions: { color: colorCorners, type: cornerStyle },<!-- [et_pb_line_break_holder] -->        cornersDotOptions: { color: colorCorners, type: cornerStyle === \"square\" ? \"square\" : \"dot\" },<!-- [et_pb_line_break_holder] -->        imageOptions: { crossOrigin: \"anonymous\", margin: 10, imageSize: 0.22, hideBackgroundDots: true }<!-- [et_pb_line_break_holder] -->    };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    qrCode = new QRCodeStyling(currentQRConfig);<!-- [et_pb_line_break_holder] -->    qrcodeContainer.innerHTML = '';<!-- [et_pb_line_break_holder] -->    qrCode.append(qrcodeContainer);<!-- [et_pb_line_break_holder] -->    applyQRPreviewSize();<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] -->function downloadQR() {<!-- [et_pb_line_break_holder] -->    if (!qrCode || Object.keys(currentQRConfig).length === 0) {<!-- [et_pb_line_break_holder] -->        return showWarning('Por favor, genera un c\u00f3digo QR antes de intentar descargarlo.');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    let downloadConfig = Object.assign({}, currentQRConfig);<!-- [et_pb_line_break_holder] -->    downloadConfig.width = 1024;<!-- [et_pb_line_break_holder] -->    downloadConfig.height = 1024;<!-- [et_pb_line_break_holder] -->    <!-- [et_pb_line_break_holder] -->    let tempQrCode = new QRCodeStyling(downloadConfig);<!-- [et_pb_line_break_holder] -->    tempQrCode.download({ name: \"qr-personalizado\", extension: \"png\" });<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code admin_label=&#8221;HTML IMAGE QR&#8221; _builder_version=&#8221;4.27.7&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<style><!-- [et_pb_line_break_holder] -->#ov-qrcode {<!-- [et_pb_line_break_holder] -->    --ov-qr-preview-size: 560px;<!-- [et_pb_line_break_holder] -->    width: 620px !important;<!-- [et_pb_line_break_holder] -->    max-width: 100%;<!-- [et_pb_line_break_holder] -->    min-height: var(--ov-qr-preview-size);<!-- [et_pb_line_break_holder] -->    margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->    padding: 16px;<!-- [et_pb_line_break_holder] -->    box-sizing: border-box;<!-- [et_pb_line_break_holder] -->    display: flex !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->    align-items: center !important;<!-- [et_pb_line_break_holder] -->    background: transparent;<!-- [et_pb_line_break_holder] -->    overflow: visible !important;<!-- [et_pb_line_break_holder] -->    position: relative;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->#ov-qrcode svg,<!-- [et_pb_line_break_holder] -->#ov-qrcode canvas {<!-- [et_pb_line_break_holder] -->    width: var(--ov-qr-preview-size) !important;<!-- [et_pb_line_break_holder] -->    height: var(--ov-qr-preview-size) !important;<!-- [et_pb_line_break_holder] -->    max-width: 100% !important;<!-- [et_pb_line_break_holder] -->    max-height: none !important;<!-- [et_pb_line_break_holder] -->    display: block !important;<!-- [et_pb_line_break_holder] -->    margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->    overflow: visible !important;<!-- [et_pb_line_break_holder] -->    flex: 0 0 auto;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->#ov-qrcode:empty::before,<!-- [et_pb_line_break_holder] -->#ov-qrcode .qr-watermark {<!-- [et_pb_line_break_holder] -->    content: \"\";<!-- [et_pb_line_break_holder] -->    width: var(--ov-qr-preview-size);<!-- [et_pb_line_break_holder] -->    height: var(--ov-qr-preview-size);<!-- [et_pb_line_break_holder] -->    max-width: 100%;<!-- [et_pb_line_break_holder] -->    display: block;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->@media (min-width: 768px) and (max-width: 980px) {<!-- [et_pb_line_break_holder] -->    #ov-qrcode {<!-- [et_pb_line_break_holder] -->        --ov-qr-preview-size: min(520px, calc(100vw - 96px));<!-- [et_pb_line_break_holder] -->        width: min(560px, calc(100vw - 64px)) !important;<!-- [et_pb_line_break_holder] -->        min-height: var(--ov-qr-preview-size);<!-- [et_pb_line_break_holder] -->        margin: 20px auto 0 !important;<!-- [et_pb_line_break_holder] -->        padding: 12px;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->@media (max-width: 767px) {<!-- [et_pb_line_break_holder] -->    #ov-qrcode {<!-- [et_pb_line_break_holder] -->        --ov-qr-preview-size: min(320px, calc(100vw - 96px));<!-- [et_pb_line_break_holder] -->        width: min(340px, calc(100vw - 64px)) !important;<!-- [et_pb_line_break_holder] -->        min-height: var(--ov-qr-preview-size);<!-- [et_pb_line_break_holder] -->        margin: 18px auto 0 !important;<!-- [et_pb_line_break_holder] -->        padding: 6px;<!-- [et_pb_line_break_holder] -->        overflow: visible !important;<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/p>\n<div id=\"ov-qrcode\"><!-- [et_pb_line_break_holder] -->  <\/p>\n<div class=\"qr-watermark\"><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Generate QR Code<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-673","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/pages\/673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/comments?post=673"}],"version-history":[{"count":35,"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/pages\/673\/revisions"}],"predecessor-version":[{"id":107231,"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/pages\/673\/revisions\/107231"}],"wp:attachment":[{"href":"https:\/\/mitarjetaenlinea.com\/en\/wp-json\/wp\/v2\/media?parent=673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}