{"id":2917,"date":"2025-08-10T22:03:24","date_gmt":"2025-08-10T22:03:24","guid":{"rendered":"https:\/\/maranieto.com\/?page_id=2917"},"modified":"2026-10-18T14:09:24","modified_gmt":"2026-10-18T14:09:24","slug":"tabulador-de-costor","status":"publish","type":"page","link":"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/","title":{"rendered":"Tabulador de costos"},"content":{"rendered":"\n<!-- ============================================================\n     MARA NIETO \u00b7 COTIZADOR DE VIOL\u00cdN PARA EVENTOS\n     Dise\u00f1o responsivo \u00b7 WordPress\n============================================================ -->\n\n<style>\n#mn-cotizador{\n    --rosa:#FF1E73;\n    --rosa-suave:#FFF9FB;\n    --rosa-linea:#F8DCE7;\n    --texto:#373236;\n    --gris:#716A6E;\n    --gris-claro:#F7F5F6;\n    --blanco:#FFFFFF;\n    --borde:#E7E0E4;\n\n    width:100%;\n    margin:0;\n    color:var(--texto);\n    font-family:Arial,Helvetica,sans-serif;\n    line-height:1.65;\n}\n\n#mn-cotizador,\n#mn-cotizador *{\n    box-sizing:border-box;\n}\n\n#mn-cotizador .mn-wrap{\n    width:min(860px,calc(100% - 30px));\n    margin:0 auto;\n}\n\n#mn-cotizador .mn-card{\n    overflow:hidden;\n    background:#fff;\n    border:1px solid var(--borde);\n    border-radius:20px;\n    box-shadow:0 18px 45px rgba(55,50,54,.08);\n}\n\n#mn-cotizador .mn-head{\n    padding:34px 34px 30px;\n    background:var(--rosa-suave);\n    border-bottom:1px solid var(--rosa-linea);\n    text-align:center;\n}\n\n#mn-cotizador .mn-kicker{\n    margin-bottom:8px;\n    color:var(--rosa);\n    font-size:10px;\n    font-weight:700;\n    letter-spacing:.14em;\n    text-transform:uppercase;\n}\n\n#mn-cotizador .mn-title{\n    margin:0 0 12px !important;\n    color:var(--texto) !important;\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:clamp(28px,4vw,40px) !important;\n    line-height:1.15 !important;\n    font-weight:400 !important;\n}\n\n#mn-cotizador .mn-intro{\n    max-width:640px;\n    margin:0 auto;\n    color:var(--gris);\n    font-size:13px;\n    line-height:1.8;\n}\n\n#mn-cotizador .mn-body{\n    padding:30px 34px 34px;\n}\n\n#mn-cotizador .mn-service-note{\n    margin-bottom:28px;\n    padding:16px 18px;\n    border-radius:14px;\n    background:#fff;\n    border:1px solid var(--rosa-linea);\n}\n\n#mn-cotizador .mn-service-note strong{\n    display:block;\n    margin-bottom:4px;\n    color:var(--texto);\n    font-size:13px;\n}\n\n#mn-cotizador .mn-service-note span{\n    display:block;\n    color:var(--gris);\n    font-size:11px;\n    line-height:1.65;\n}\n\n#mn-cotizador .mn-section{\n    margin-bottom:28px;\n}\n\n#mn-cotizador .mn-section:last-child{\n    margin-bottom:0;\n}\n\n#mn-cotizador .mn-section-title{\n    margin:0 0 13px;\n    color:var(--texto);\n    font-size:13px;\n    font-weight:700;\n}\n\n#mn-cotizador .mn-grid{\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:16px;\n}\n\n#mn-cotizador .mn-field-full{\n    grid-column:1 \/ -1;\n}\n\n#mn-cotizador label{\n    display:block;\n    margin-bottom:6px;\n    color:var(--texto);\n    font-size:11px;\n    font-weight:700;\n}\n\n#mn-cotizador input,\n#mn-cotizador select,\n#mn-cotizador button{\n    font-family:Arial,Helvetica,sans-serif;\n}\n\n#mn-cotizador input,\n#mn-cotizador select{\n    width:100%;\n    min-height:44px;\n    padding:11px 12px;\n    border:1px solid #DCD5D9;\n    border-radius:9px;\n    background:#fff;\n    color:var(--texto);\n    font-size:12px;\n    outline:none;\n}\n\n#mn-cotizador input:focus,\n#mn-cotizador select:focus{\n    border-color:var(--rosa);\n    box-shadow:0 0 0 3px rgba(255,30,115,.07);\n}\n\n#mn-cotizador .mn-help{\n    display:block;\n    margin-top:5px;\n    color:var(--gris);\n    font-size:9px;\n    line-height:1.5;\n}\n\n#mn-cotizador .mn-inline{\n    display:flex;\n    gap:9px;\n}\n\n#mn-cotizador .mn-inline input{\n    flex:1;\n}\n\n#mn-cotizador .mn-btn{\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    min-height:44px;\n    padding:10px 18px;\n    border:0;\n    border-radius:999px;\n    cursor:pointer;\n    font-size:11px;\n    font-weight:700;\n    transition:.2s ease;\n}\n\n#mn-cotizador .mn-btn-primary{\n    background:var(--rosa);\n    color:#fff;\n}\n\n#mn-cotizador .mn-btn-primary:hover{\n    transform:translateY(-1px);\n    box-shadow:0 8px 20px rgba(255,30,115,.18);\n}\n\n#mn-cotizador .mn-btn-light{\n    background:#fff;\n    color:var(--rosa);\n    border:1px solid var(--rosa-linea);\n}\n\n#mn-cotizador .mn-btn-light:hover{\n    border-color:var(--rosa);\n}\n\n#mn-cotizador .mn-btn-block{\n    width:100%;\n}\n\n#mn-cotizador .mn-resultados{\n    margin-top:10px;\n}\n\n#mn-cotizador .mn-result-item{\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n    gap:12px;\n    margin-top:8px;\n    padding:10px 12px;\n    border:1px solid var(--borde);\n    border-radius:10px;\n    background:#fff;\n    color:var(--gris);\n    font-size:10px;\n    line-height:1.5;\n}\n\n#mn-cotizador .mn-result-item button{\n    flex:0 0 auto;\n}\n\n#mn-cotizador .mn-selected{\n    display:none;\n    margin-top:10px;\n    padding:12px 14px;\n    border-radius:10px;\n    background:#F4FAF6;\n    border:1px solid #D9ECDE;\n    color:#326442;\n    font-size:10px;\n    line-height:1.6;\n}\n\n#mn-cotizador .mn-switch-row{\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n    gap:15px;\n    min-height:52px;\n    padding:12px 14px;\n    border:1px solid var(--borde);\n    border-radius:11px;\n    background:#fff;\n}\n\n#mn-cotizador .mn-switch-copy strong{\n    display:block;\n    color:var(--texto);\n    font-size:11px;\n}\n\n#mn-cotizador .mn-switch-copy span{\n    display:block;\n    margin-top:2px;\n    color:var(--gris);\n    font-size:9px;\n}\n\n#mn-cotizador .mn-switch{\n    position:relative;\n    width:42px;\n    height:24px;\n    flex:0 0 42px;\n}\n\n#mn-cotizador .mn-switch input{\n    opacity:0;\n    width:0;\n    height:0;\n}\n\n#mn-cotizador .mn-slider{\n    position:absolute;\n    inset:0;\n    border-radius:999px;\n    background:#D8D3D6;\n    cursor:pointer;\n    transition:.2s;\n}\n\n#mn-cotizador .mn-slider:before{\n    content:\"\";\n    position:absolute;\n    width:18px;\n    height:18px;\n    left:3px;\n    top:3px;\n    border-radius:50%;\n    background:#fff;\n    box-shadow:0 2px 6px rgba(0,0,0,.15);\n    transition:.2s;\n}\n\n#mn-cotizador .mn-switch input:checked + .mn-slider{\n    background:var(--rosa);\n}\n\n#mn-cotizador .mn-switch input:checked + .mn-slider:before{\n    transform:translateX(18px);\n}\n\n#mn-cotizador .mn-output{\n    display:none;\n    margin-top:28px;\n    padding:22px;\n    border-radius:16px;\n    background:var(--gris-claro);\n    border:1px solid var(--borde);\n}\n\n#mn-cotizador .mn-output-label{\n    color:var(--rosa);\n    font-size:9px;\n    font-weight:700;\n    letter-spacing:.13em;\n    text-transform:uppercase;\n}\n\n#mn-cotizador .mn-output-title{\n    margin:5px 0 14px;\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:22px;\n    line-height:1.25;\n}\n\n#mn-cotizador .mn-summary{\n    display:grid;\n    gap:7px;\n    margin-bottom:16px;\n}\n\n#mn-cotizador .mn-summary-row{\n    display:flex;\n    justify-content:space-between;\n    gap:14px;\n    color:var(--gris);\n    font-size:10px;\n}\n\n#mn-cotizador .mn-summary-row strong{\n    color:var(--texto);\n    text-align:right;\n}\n\n#mn-cotizador .mn-breakdown{\n    margin-top:14px;\n    padding-top:14px;\n    border-top:1px solid #E2DCE0;\n}\n\n#mn-cotizador .mn-line{\n    display:flex;\n    justify-content:space-between;\n    gap:12px;\n    padding:5px 0;\n    color:var(--gris);\n    font-size:9px;\n}\n\n#mn-cotizador .mn-line strong{\n    color:var(--texto);\n}\n\n#mn-cotizador .mn-total-box{\n    margin-top:14px;\n    padding-top:14px;\n    border-top:1px solid #E2DCE0;\n    text-align:center;\n}\n\n#mn-cotizador .mn-total-label{\n    color:var(--gris);\n    font-size:9px;\n    text-transform:uppercase;\n    letter-spacing:.1em;\n}\n\n#mn-cotizador .mn-total{\n    margin-top:3px;\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:34px;\n    line-height:1.15;\n}\n\n#mn-cotizador .mn-tax-note{\n    margin-top:5px;\n    color:var(--gris);\n    font-size:9px;\n}\n\n#mn-cotizador .mn-note{\n    margin-top:14px;\n    color:var(--gris);\n    font-size:9px;\n    line-height:1.6;\n    text-align:center;\n}\n\n#mn-cotizador .mn-actions{\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:9px;\n    margin-top:14px;\n}\n\n#mn-cotizador .mn-whatsapp{\n    margin-top:30px;\n    padding:22px 20px;\n    border-radius:16px;\n    background:var(--rosa-suave);\n    border:1px solid var(--rosa-linea);\n    text-align:center;\n}\n\n#mn-cotizador .mn-whatsapp strong{\n    display:block;\n    margin-bottom:5px;\n    color:var(--texto);\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:20px;\n    font-weight:400;\n}\n\n#mn-cotizador .mn-whatsapp p{\n    max-width:520px;\n    margin:0 auto 14px;\n    color:var(--gris);\n    font-size:10px;\n    line-height:1.6;\n}\n\n#mn-cotizador .mn-whatsapp .mn-btn{\n    width:auto;\n    min-width:220px;\n}\n\n@media(max-width:650px){\n    #mn-cotizador .mn-actions{\n        grid-template-columns:1fr;\n    }\n\n    #mn-cotizador .mn-whatsapp .mn-btn{\n        width:100%;\n    }\n}\n\n@media(max-width:650px){\n\n    #mn-cotizador .mn-head,\n    #mn-cotizador .mn-body{\n        padding-left:18px;\n        padding-right:18px;\n    }\n\n    #mn-cotizador .mn-grid{\n        grid-template-columns:1fr;\n    }\n\n    #mn-cotizador .mn-field-full{\n        grid-column:auto;\n    }\n\n    #mn-cotizador .mn-inline{\n        flex-direction:column;\n    }\n\n    #mn-cotizador .mn-result-item{\n        align-items:flex-start;\n        flex-direction:column;\n    }\n\n    #mn-cotizador .mn-result-item button{\n        width:100%;\n    }\n}\n<\/style>\n\n<div id=\"mn-cotizador\">\n    <div class=\"mn-wrap\">\n        <div class=\"mn-card\">\n\n            <div class=\"mn-head\">\n                <div class=\"mn-kicker\">Mara Nieto \u00b7 Viol\u00edn para eventos<\/div>\n\n                <h2 class=\"mn-title\">\n                    Calcula el costo aproximado de tu evento\n                <\/h2>\n\n                <p class=\"mn-intro\">\n                    Selecciona la ubicaci\u00f3n y algunos datos de tu evento.\n                    El c\u00e1lculo se realiza para servicio de viol\u00edn en vivo con pistas.\n                <\/p>\n            <\/div>\n\n\n            <div class=\"mn-body\">\n\n                <div class=\"mn-service-note\">\n                    <strong>Viol\u00edn en vivo con pistas<\/strong>\n                    <span>\n                        Servicio de una hora con repertorio preparado.\n                        Si eliges equipo de audio, se incluye sonorizaci\u00f3n para hasta 150 personas\n                        y micr\u00f3fono inal\u00e1mbrico.\n                    <\/span>\n                <\/div>\n\n\n                <!-- UBICACI\u00d3N -->\n                <section class=\"mn-section\">\n\n                    <div class=\"mn-section-title\">\n                        \u00bfD\u00f3nde ser\u00e1 tu evento?\n                    <\/div>\n\n                    <label for=\"mn-municipio\">\n                        Escribe el municipio o alcald\u00eda\n                    <\/label>\n\n                    <div class=\"mn-inline\">\n                        <input\n                            id=\"mn-municipio\"\n                            type=\"text\"\n                            placeholder=\"Ej. Naucalpan, Ecatepec, Coyoac\u00e1n...\">\n\n                        <button\n                            type=\"button\"\n                            class=\"mn-btn mn-btn-light\"\n                            id=\"mn-buscar\">\n                            Buscar\n                        <\/button>\n                    <\/div>\n\n                    <span class=\"mn-help\">\n                        La distancia se calcula de forma aproximada desde Mundo E, Tlalnepantla.\n                    <\/span>\n\n                    <div\n                        id=\"mn-resultados\"\n                        class=\"mn-resultados\">\n                    <\/div>\n\n                    <div\n                        id=\"mn-seleccion\"\n                        class=\"mn-selected\">\n                    <\/div>\n\n                <\/section>\n\n\n                <!-- DATOS DEL EVENTO -->\n                <section class=\"mn-section\">\n\n                    <div class=\"mn-section-title\">\n                        Datos del evento\n                    <\/div>\n\n                    <div class=\"mn-grid\">\n\n                        <div class=\"mn-field\">\n                            <label for=\"mn-tipo\">\n                                Tipo de evento\n                            <\/label>\n\n                            <select id=\"mn-tipo\">\n                                <option value=\"Boda\">Boda<\/option>\n                                <option value=\"Ceremonia religiosa\">Ceremonia religiosa<\/option>\n                                <option value=\"Ceremonia civil\">Ceremonia civil<\/option>\n                                <option value=\"XV a\u00f1os\">XV a\u00f1os<\/option>\n                                <option value=\"Pedida de mano\">Pedida de mano<\/option>\n                                <option value=\"Graduaci\u00f3n\">Graduaci\u00f3n<\/option>\n                                <option value=\"Cena\">Cena<\/option>\n                                <option value=\"Evento corporativo\">Evento corporativo<\/option>\n                                <option value=\"Evento acad\u00e9mico\">Evento acad\u00e9mico<\/option>\n                                <option value=\"Otro\">Otro<\/option>\n                            <\/select>\n                        <\/div>\n\n\n                        <div class=\"mn-field\">\n                            <label for=\"mn-horas\">\n                                Horas adicionales\n                            <\/label>\n\n                            <input\n                                id=\"mn-horas\"\n                                type=\"number\"\n                                min=\"0\"\n                                step=\"1\"\n                                value=\"0\">\n\n                            <span class=\"mn-help\">\n                                La primera hora ya est\u00e1 incluida.\n                            <\/span>\n                        <\/div>\n\n\n                        <div class=\"mn-field\" id=\"mn-personas-wrap\">\n                            <label for=\"mn-personas\">\n                                N\u00famero aproximado de invitados\n                            <\/label>\n\n                            <input\n                                id=\"mn-personas\"\n                                type=\"number\"\n                                min=\"1\"\n                                step=\"1\"\n                                value=\"100\">\n                        <\/div>\n\n\n                        <div class=\"mn-field\">\n                            <label for=\"mn-canciones\">\n                                Canciones nuevas fuera de mi repertorio\n                            <\/label>\n\n                            <input\n                                id=\"mn-canciones\"\n                                type=\"number\"\n                                min=\"0\"\n                                step=\"1\"\n                                value=\"0\">\n                        <\/div>\n\n                    <\/div>\n\n\n                    <div class=\"mn-grid\" style=\"margin-top:16px;\">\n\n                        <div class=\"mn-switch-row\">\n                            <div class=\"mn-switch-copy\">\n                                <strong>Equipo de audio<\/strong>\n                                <span>Hasta 150 personas + micr\u00f3fono inal\u00e1mbrico.<\/span>\n                            <\/div>\n\n                            <label class=\"mn-switch\">\n                                <input\n                                    type=\"checkbox\"\n                                    id=\"mn-audio\"\n                                    checked>\n                                <span class=\"mn-slider\"><\/span>\n                            <\/label>\n                        <\/div>\n\n\n                        <div class=\"mn-switch-row\">\n                            <div class=\"mn-switch-copy\">\n                                <strong>Requiere factura<\/strong>\n                                <span>Agrega IVA 16% al subtotal.<\/span>\n                            <\/div>\n\n                            <label class=\"mn-switch\">\n                                <input\n                                    type=\"checkbox\"\n                                    id=\"mn-factura\">\n                                <span class=\"mn-slider\"><\/span>\n                            <\/label>\n                        <\/div>\n\n                    <\/div>\n\n                <\/section>\n\n\n                <button\n                    type=\"button\"\n                    class=\"mn-btn mn-btn-primary mn-btn-block\"\n                    id=\"mn-calcular\"\n                    disabled>\n                    Calcular costo\n                <\/button>\n\n\n                <!-- RESULTADO -->\n                <div\n                    id=\"mn-output\"\n                    class=\"mn-output\">\n\n                    <div class=\"mn-output-label\">\n                        Costo aproximado\n                    <\/div>\n\n                    <div class=\"mn-output-title\">\n                        Viol\u00edn en vivo con pistas\n                    <\/div>\n\n                    <div\n                        id=\"mn-resumen\"\n                        class=\"mn-summary\">\n                    <\/div>\n\n                    <div\n                        id=\"mn-desglose\"\n                        class=\"mn-breakdown\">\n                    <\/div>\n\n                    <div class=\"mn-total-box\">\n                        <div\n                            id=\"mn-total-label\"\n                            class=\"mn-total-label\">\n                            Total aproximado\n                        <\/div>\n\n                        <div\n                            id=\"mn-total\"\n                            class=\"mn-total\">\n                        <\/div>\n\n                        <div\n                            id=\"mn-tax-note\"\n                            class=\"mn-tax-note\">\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"mn-actions\">\n                        <button\n                            type=\"button\"\n                            class=\"mn-btn mn-btn-light mn-btn-block\"\n                            id=\"mn-copiar\">\n                            Copiar resumen\n                        <\/button>\n\n                        <button\n                            type=\"button\"\n                            class=\"mn-btn mn-btn-primary mn-btn-block\"\n                            id=\"mn-pdf\">\n                            Descargar cotizaci\u00f3n en PDF\n                        <\/button>\n                    <\/div>\n\n                    <div\n                        id=\"mn-copy-status\"\n                        class=\"mn-note\">\n                    <\/div>\n\n                    <div class=\"mn-note\">\n                        Este c\u00e1lculo es aproximado y est\u00e1 sujeto a disponibilidad.\n                        La cotizaci\u00f3n final se confirma directamente contigo.\n                    <\/div>\n\n                <\/div>\n\n                <div class=\"mn-whatsapp\">\n                    <strong>\u00bfQuieres confirmar disponibilidad?<\/strong>\n                    <p>\n                        Si ya tienes los datos de tu evento, escr\u00edbeme directamente\n                        por WhatsApp y con gusto revisamos los detalles.\n                    <\/p>\n\n                    <a\n                        href=\"https:\/\/wa.me\/message\/4MWZBE6D42RAM1\"\n                        target=\"_blank\"\n                        rel=\"noopener\"\n                        class=\"mn-btn mn-btn-primary\">\n                        Contactarme por WhatsApp\n                    <\/a>\n                <\/div>\n\n            <\/div>\n\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<script>\n(function(){\n\n    const CONFIG = {\n\n        baseConAudio:3000,\n        baseSinAudio:2000,\n\n        horaAdicional:1000,\n        cancionNueva:500,\n\n        audioPersonasIncluidas:150,\n        audioBloquePersonas:100,\n        audioCostoBloqueExtra:1000,\n\n        kmIncluidos:15,\n        bloqueKm:5,\n        costoBloqueKm:250,\n\n        iva:0.16,\n\n        origen:{\n            nombre:'Mundo E, Tlalnepantla',\n            lat:19.528902,\n            lng:-99.222542\n        }\n    };\n\n\n    let resultadosBusqueda = [];\n    let ubicacionSeleccionada = null;\n    let ultimaCotizacion = null;\n\n\n    const $ = (id) => document.getElementById(id);\n\n\n    function dinero(valor){\n\n        return new Intl.NumberFormat(\n            'es-MX',\n            {\n                style:'currency',\n                currency:'MXN',\n                maximumFractionDigits:0\n            }\n        ).format(valor || 0);\n    }\n\n\n    function escapar(texto){\n\n        return String(texto ?? '')\n            .replace(\/&\/g,'&amp;')\n            .replace(\/<\/g,'&lt;')\n            .replace(\/>\/g,'&gt;')\n            .replace(\/\"\/g,'&quot;')\n            .replace(\/'\/g,'&#039;');\n    }\n\n\n    function distancia(lat1,lng1,lat2,lng2){\n\n        const R = 6371;\n\n        const dLat =\n            (lat2-lat1) *\n            Math.PI \/\n            180;\n\n        const dLng =\n            (lng2-lng1) *\n            Math.PI \/\n            180;\n\n        const a =\n            Math.sin(dLat\/2) *\n            Math.sin(dLat\/2) +\n            Math.cos(lat1*Math.PI\/180) *\n            Math.cos(lat2*Math.PI\/180) *\n            Math.sin(dLng\/2) *\n            Math.sin(dLng\/2);\n\n        const c =\n            2 *\n            Math.atan2(\n                Math.sqrt(a),\n                Math.sqrt(1-a)\n            );\n\n        return R*c;\n    }\n\n\n    async function buscar(){\n\n        const q =\n            $('mn-municipio')\n            .value\n            .trim();\n\n        const contenedor =\n            $('mn-resultados');\n\n        const boton =\n            $('mn-buscar');\n\n        contenedor.innerHTML = '';\n\n        ubicacionSeleccionada = null;\n\n        $('mn-seleccion').style.display =\n            'none';\n\n        $('mn-calcular').disabled =\n            true;\n\n        $('mn-output').style.display =\n            'none';\n\n\n        if(!q){\n\n            contenedor.innerHTML =\n                '<div class=\"mn-note\">Escribe un municipio o alcald\u00eda para buscar.<\/div>';\n\n            return;\n        }\n\n\n        boton.disabled = true;\n        boton.textContent = 'Buscando...';\n\n\n        try{\n\n            const url =\n                'https:\/\/nominatim.openstreetmap.org\/search' +\n                '?format=json' +\n                '&addressdetails=1' +\n                '&limit=5' +\n                '&countrycodes=mx' +\n                '&accept-language=es' +\n                '&q=' +\n                encodeURIComponent(q);\n\n\n            const response =\n                await fetch(url);\n\n\n            if(!response.ok){\n\n                throw new Error(\n                    'No fue posible buscar la ubicaci\u00f3n.'\n                );\n            }\n\n\n            resultadosBusqueda =\n                await response.json();\n\n\n            if(!resultadosBusqueda.length){\n\n                contenedor.innerHTML =\n                    '<div class=\"mn-note\">No encontr\u00e9 coincidencias. Intenta con otro nombre.<\/div>';\n\n                return;\n            }\n\n\n            resultadosBusqueda.forEach(\n                (item,index) => {\n\n                    const fila =\n                        document.createElement('div');\n\n                    fila.className =\n                        'mn-result-item';\n\n\n                    const texto =\n                        document.createElement('div');\n\n                    texto.textContent =\n                        item.display_name;\n\n\n                    const elegir =\n                        document.createElement('button');\n\n                    elegir.type =\n                        'button';\n\n                    elegir.className =\n                        'mn-btn mn-btn-light';\n\n                    elegir.textContent =\n                        'Seleccionar';\n\n\n                    elegir.addEventListener(\n                        'click',\n                        function(){\n\n                            seleccionar(index);\n                        }\n                    );\n\n\n                    fila.appendChild(texto);\n                    fila.appendChild(elegir);\n\n                    contenedor.appendChild(fila);\n                }\n            );\n\n\n        }catch(error){\n\n            console.error(error);\n\n            contenedor.innerHTML =\n                '<div class=\"mn-note\">Ocurri\u00f3 un error al buscar. Intenta nuevamente.<\/div>';\n\n\n        }finally{\n\n            boton.disabled = false;\n            boton.textContent = 'Buscar';\n        }\n    }\n\n\n    function seleccionar(index){\n\n        const item =\n            resultadosBusqueda[index];\n\n        if(!item){\n            return;\n        }\n\n\n        const lat =\n            parseFloat(item.lat);\n\n        const lng =\n            parseFloat(item.lon);\n\n\n        const km =\n            distancia(\n                CONFIG.origen.lat,\n                CONFIG.origen.lng,\n                lat,\n                lng\n            );\n\n\n        ubicacionSeleccionada = {\n\n            nombre:item.display_name,\n            lat,\n            lng,\n            km\n        };\n\n\n        $('mn-resultados').innerHTML =\n            '';\n\n\n        const seleccion =\n            $('mn-seleccion');\n\n\n        seleccion.innerHTML =\n            '<strong>Ubicaci\u00f3n seleccionada:<\/strong><br>' +\n            escapar(item.display_name) +\n            '<br><strong>Distancia aproximada:<\/strong> ' +\n            km.toFixed(1) +\n            ' km';\n\n\n        seleccion.style.display =\n            'block';\n\n\n        $('mn-calcular').disabled =\n            false;\n    }\n\n\n    function toggleAudio(){\n\n        const audio =\n            $('mn-audio').checked;\n\n        $('mn-personas-wrap').style.display =\n            audio\n                ? 'block'\n                : 'none';\n    }\n\n\n    function calcular(){\n\n        if(!ubicacionSeleccionada){\n\n            alert(\n                'Selecciona primero el municipio o alcald\u00eda del evento.'\n            );\n\n            return;\n        }\n\n\n        const audio =\n            $('mn-audio').checked;\n\n        const factura =\n            $('mn-factura').checked;\n\n        const personas =\n            Math.max(\n                1,\n                parseInt(\n                    $('mn-personas').value,\n                    10\n                ) || 1\n            );\n\n        const horas =\n            Math.max(\n                0,\n                parseInt(\n                    $('mn-horas').value,\n                    10\n                ) || 0\n            );\n\n        const canciones =\n            Math.max(\n                0,\n                parseInt(\n                    $('mn-canciones').value,\n                    10\n                ) || 0\n            );\n\n\n        let subtotal = 0;\n\n        const detalle = [];\n\n\n        \/* SERVICIO BASE *\/\n\n        const base =\n            audio\n                ? CONFIG.baseConAudio\n                : CONFIG.baseSinAudio;\n\n\n        subtotal += base;\n\n\n        detalle.push({\n            texto:\n                audio\n                    ? 'Servicio base con audio'\n                    : 'Servicio base sin audio',\n            valor:base\n        });\n\n\n        \/* AUDIO *\/\n\n        if(\n            audio &&\n            personas >\n            CONFIG.audioPersonasIncluidas\n        ){\n\n            const bloques =\n                Math.ceil(\n                    (\n                        personas -\n                        CONFIG.audioPersonasIncluidas\n                    ) \/\n                    CONFIG.audioBloquePersonas\n                );\n\n\n            const extraAudio =\n                bloques *\n                CONFIG.audioCostoBloqueExtra;\n\n\n            subtotal += extraAudio;\n\n\n            detalle.push({\n                texto:\n                    `Refuerzo de audio por ${personas} invitados`,\n                valor:extraAudio\n            });\n        }\n\n\n        \/* TRASLADO *\/\n\n        const km =\n            ubicacionSeleccionada.km;\n\n\n        if(\n            km >\n            CONFIG.kmIncluidos\n        ){\n\n            const extraKm =\n                km -\n                CONFIG.kmIncluidos;\n\n\n            const bloques =\n                Math.ceil(\n                    extraKm \/\n                    CONFIG.bloqueKm\n                );\n\n\n            const viaticos =\n                bloques *\n                CONFIG.costoBloqueKm;\n\n\n            subtotal += viaticos;\n\n\n            detalle.push({\n                texto:\n                    `Vi\u00e1ticos (${km.toFixed(1)} km)`,\n                valor:viaticos\n            });\n\n        }else{\n\n            detalle.push({\n                texto:\n                    'Vi\u00e1ticos dentro del rango incluido',\n                valor:0\n            });\n        }\n\n\n        \/* HORAS EXTRA *\/\n\n        if(horas > 0){\n\n            const costoHoras =\n                horas *\n                CONFIG.horaAdicional;\n\n\n            subtotal += costoHoras;\n\n\n            detalle.push({\n                texto:\n                    `Horas adicionales (${horas})`,\n                valor:costoHoras\n            });\n        }\n\n\n        \/* CANCIONES NUEVAS *\/\n\n        if(canciones > 0){\n\n            const costoCanciones =\n                canciones *\n                CONFIG.cancionNueva;\n\n\n            subtotal += costoCanciones;\n\n\n            detalle.push({\n                texto:\n                    `Canciones nuevas (${canciones})`,\n                valor:costoCanciones\n            });\n        }\n\n\n        const iva =\n            factura\n                ? subtotal *\n                  CONFIG.iva\n                : 0;\n\n\n        const total =\n            subtotal +\n            iva;\n\n\n        ultimaCotizacion = {\n            subtotal,\n            iva,\n            total,\n            detalle,\n            audio,\n            factura,\n            personas,\n            horas,\n            canciones,\n            tipo:$('mn-tipo').value,\n            lugar:ubicacionSeleccionada.nombre,\n            distanciaKm:ubicacionSeleccionada.km\n        };\n\n        mostrarResultado(\n            subtotal,\n            iva,\n            total,\n            detalle\n        );\n    }\n\n\n    function mostrarResultado(\n        subtotal,\n        iva,\n        total,\n        detalle\n    ){\n\n        const audio =\n            $('mn-audio').checked;\n\n        const factura =\n            $('mn-factura').checked;\n\n        const personas =\n            Math.max(\n                1,\n                parseInt(\n                    $('mn-personas').value,\n                    10\n                ) || 1\n            );\n\n        const horas =\n            Math.max(\n                0,\n                parseInt(\n                    $('mn-horas').value,\n                    10\n                ) || 0\n            );\n\n\n        const tipo =\n            $('mn-tipo').value;\n\n\n        const resumen = [\n\n            [\n                'Evento',\n                tipo\n            ],\n\n            [\n                'Duraci\u00f3n',\n                horas > 0\n                    ? `${1 + horas} horas`\n                    : '1 hora'\n            ],\n\n            [\n                'Ubicaci\u00f3n',\n                ubicacionSeleccionada\n                    .nombre\n                    .split(',')\n                    .slice(0,3)\n                    .join(',')\n                    .trim()\n            ]\n        ];\n\n\n        if(audio){\n\n            resumen.push([\n                'Audio',\n                `Incluido hasta 150 personas + micr\u00f3fono inal\u00e1mbrico`\n            ]);\n\n            resumen.push([\n                'Invitados',\n                String(personas)\n            ]);\n\n        }else{\n\n            resumen.push([\n                'Audio',\n                'No incluido'\n            ]);\n        }\n\n\n        $('mn-resumen').innerHTML =\n            resumen.map(\n                item => `\n                    <div class=\"mn-summary-row\">\n                        <span>${escapar(item[0])}<\/span>\n                        <strong>${escapar(item[1])}<\/strong>\n                    <\/div>\n                `\n            ).join('');\n\n\n        $('mn-desglose').innerHTML =\n            detalle.map(\n                item => `\n                    <div class=\"mn-line\">\n                        <span>${escapar(item.texto)}<\/span>\n                        <strong>${dinero(item.valor)}<\/strong>\n                    <\/div>\n                `\n            ).join('');\n\n\n        $('mn-total').textContent =\n            dinero(total);\n\n\n        $('mn-total-label').textContent =\n            factura\n                ? 'Total con IVA'\n                : 'Total aproximado';\n\n\n        $('mn-tax-note').textContent =\n            factura\n                ? `Subtotal ${dinero(subtotal)} + IVA 16% ${dinero(iva)}`\n                : 'En caso de requerir factura, se deber\u00e1 agregar el IVA correspondiente.';\n\n\n        $('mn-output').style.display =\n            'block';\n\n\n        $('mn-output').scrollIntoView({\n            behavior:'smooth',\n            block:'start'\n        });\n    }\n\n\n    async function copiarResumen(){\n\n        if(\n            $('mn-output').style.display !==\n            'block'\n        ){\n            return;\n        }\n\n\n        const tipo =\n            $('mn-tipo').value;\n\n        const horas =\n            Math.max(\n                0,\n                parseInt(\n                    $('mn-horas').value,\n                    10\n                ) || 0\n            );\n\n        const audio =\n            $('mn-audio').checked;\n\n        const total =\n            $('mn-total').textContent;\n\n\n        const lugar =\n            ubicacionSeleccionada\n                .nombre\n                .split(',')\n                .slice(0,3)\n                .join(',')\n                .trim();\n\n\n        let texto =\n`COTIZACI\u00d3N \u00b7 MARA NIETO\n\nViol\u00edn en vivo con pistas\n${tipo}\n${horas > 0 ? 1 + horas + ' horas de servicio' : '1 hora de servicio'}\nLugar: ${lugar}\n${audio ? 'Incluye equipo de audio para hasta 150 personas y micr\u00f3fono inal\u00e1mbrico.' : 'Servicio sin equipo de audio.'}\n\nTOTAL APROXIMADO: ${total}`;\n\n\n        try{\n\n            await navigator.clipboard.writeText(\n                texto\n            );\n\n\n            $('mn-copy-status').textContent =\n                'Resumen copiado. Ya puedes pegarlo en WhatsApp o correo.';\n\n\n        }catch(error){\n\n            console.error(error);\n\n            $('mn-copy-status').textContent =\n                'No fue posible copiar autom\u00e1ticamente.';\n        }\n    }\n\n\n\n    function generarPDF(){\n\n        if(!ultimaCotizacion){\n            return;\n        }\n\n        const q = ultimaCotizacion;\n\n        const lugar =\n            q.lugar\n                .split(',')\n                .slice(0,3)\n                .join(',')\n                .trim();\n\n        const duracion =\n            q.horas > 0\n                ? `${1 + q.horas} horas`\n                : '1 hora';\n\n        const logo =\n            'https:\/\/drive.google.com\/thumbnail?id=1W3Q_XH68hXThINq8cjei9TtcR8SU-_PD&sz=w500';\n\n        const desglose =\n            q.detalle.map(\n                item => `\n                    <div class=\"line\">\n                        <span>${escapar(item.texto)}<\/span>\n                        <strong>${dinero(item.valor)}<\/strong>\n                    <\/div>\n                `\n            ).join('');\n\n        const facturaHTML =\n            q.factura\n                ? `\n                    <div class=\"line total-sub\">\n                        <span>Subtotal<\/span>\n                        <strong>${dinero(q.subtotal)}<\/strong>\n                    <\/div>\n                    <div class=\"line total-sub\">\n                        <span>IVA 16%<\/span>\n                        <strong>${dinero(q.iva)}<\/strong>\n                    <\/div>\n                `\n                : '';\n\n        const notaFactura =\n            q.factura\n                ? ''\n                : `\n                    <p>\n                        En caso de requerir factura, a los precios indicados\n                        se deber\u00e1 agregar el IVA correspondiente.\n                    <\/p>\n                `;\n\n        const ventana = window.open('', '_blank');\n\n        if(!ventana){\n            alert('Tu navegador bloque\u00f3 la ventana para generar el PDF. Permite ventanas emergentes e int\u00e9ntalo nuevamente.');\n            return;\n        }\n\n        ventana.document.open();\n\n        ventana.document.write(`\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Cotizaci\u00f3n Mara Nieto<\/title>\n\n<style>\n@page{\n    size:A4;\n    margin:15mm;\n}\n\n*{\n    box-sizing:border-box;\n}\n\nbody{\n    margin:0;\n    background:#f5f5f5;\n    color:#373236;\n    font-family:Arial,Helvetica,sans-serif;\n}\n\n.page{\n    width:100%;\n    max-width:760px;\n    margin:20px auto;\n    padding:38px 42px;\n    background:#fff;\n    border:1px solid #eee;\n}\n\n.header{\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n    gap:25px;\n    padding-bottom:22px;\n    border-bottom:2px solid #FF1E73;\n}\n\n.logo{\n    width:95px;\n    max-height:95px;\n    object-fit:contain;\n}\n\n.brand{\n    text-align:right;\n}\n\n.brand-name{\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:28px;\n    line-height:1.15;\n}\n\n.brand-sub{\n    margin-top:5px;\n    color:#716A6E;\n    font-size:11px;\n}\n\n.kicker{\n    margin-top:28px;\n    color:#FF1E73;\n    font-size:10px;\n    font-weight:700;\n    letter-spacing:.14em;\n    text-transform:uppercase;\n}\n\nh1{\n    margin:6px 0 8px;\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:31px;\n    font-weight:400;\n}\n\n.service{\n    margin-bottom:26px;\n    color:#716A6E;\n    font-size:12px;\n}\n\n.info{\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:10px 24px;\n    padding:18px 0;\n    border-top:1px solid #eee;\n    border-bottom:1px solid #eee;\n}\n\n.info-item{\n    font-size:11px;\n    line-height:1.5;\n}\n\n.info-item span{\n    display:block;\n    color:#716A6E;\n    font-size:9px;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n}\n\n.section{\n    margin-top:24px;\n}\n\n.section-title{\n    margin-bottom:8px;\n    font-size:11px;\n    font-weight:700;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n}\n\n.line{\n    display:flex;\n    justify-content:space-between;\n    gap:18px;\n    padding:7px 0;\n    border-bottom:1px solid #f1edf0;\n    color:#716A6E;\n    font-size:11px;\n}\n\n.line strong{\n    color:#373236;\n}\n\n.total-sub{\n    border:0;\n}\n\n.total{\n    margin-top:16px;\n    padding:18px 20px;\n    border-radius:12px;\n    background:#FFF9FB;\n    border:1px solid #F8DCE7;\n    text-align:right;\n}\n\n.total span{\n    display:block;\n    color:#716A6E;\n    font-size:9px;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n}\n\n.total strong{\n    display:block;\n    margin-top:2px;\n    color:#373236;\n    font-family:Georgia,\"Times New Roman\",serif;\n    font-size:31px;\n    font-weight:400;\n}\n\n.conditions{\n    margin-top:26px;\n    padding-top:18px;\n    border-top:1px solid #eee;\n    color:#716A6E;\n    font-size:10px;\n    line-height:1.65;\n}\n\n.conditions p{\n    margin:0 0 8px;\n}\n\n.footer{\n    margin-top:28px;\n    padding-top:15px;\n    border-top:1px solid #eee;\n    text-align:center;\n    color:#716A6E;\n    font-size:9px;\n}\n\n.print-actions{\n    margin:18px auto 30px;\n    max-width:760px;\n    text-align:center;\n}\n\n.print-btn{\n    border:0;\n    border-radius:999px;\n    background:#FF1E73;\n    color:#fff;\n    padding:12px 24px;\n    font-size:12px;\n    font-weight:700;\n    cursor:pointer;\n}\n\n@media print{\n    body{\n        background:#fff;\n    }\n\n    .page{\n        margin:0;\n        padding:0;\n        border:0;\n        max-width:none;\n    }\n\n    .print-actions{\n        display:none;\n    }\n}\n<\/style>\n<\/head>\n\n<body>\n\n<div class=\"page\">\n\n    <div class=\"header\">\n        <img decoding=\"async\"\n            class=\"logo\"\n            src=\"${logo}\"\n            alt=\"Mara Nieto\">\n\n        <div class=\"brand\">\n            <div class=\"brand-name\">Mara Nieto<\/div>\n            <div class=\"brand-sub\">Viol\u00edn para eventos \u00b7 maranieto.com<\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"kicker\">Cotizaci\u00f3n<\/div>\n\n    <h1>Viol\u00edn en vivo con pistas<\/h1>\n\n    <div class=\"service\">\n        Propuesta de servicio para ${escapar(q.tipo)}\n    <\/div>\n\n    <div class=\"info\">\n        <div class=\"info-item\">\n            <span>Tipo de evento<\/span>\n            ${escapar(q.tipo)}\n        <\/div>\n\n        <div class=\"info-item\">\n            <span>Duraci\u00f3n<\/span>\n            ${escapar(duracion)}\n        <\/div>\n\n        <div class=\"info-item\">\n            <span>Ubicaci\u00f3n<\/span>\n            ${escapar(lugar)}\n        <\/div>\n\n        <div class=\"info-item\">\n            <span>Distancia aproximada<\/span>\n            ${q.distanciaKm.toFixed(1)} km desde Mundo E\n        <\/div>\n\n        <div class=\"info-item\">\n            <span>Equipo de audio<\/span>\n            ${q.audio\n                ? 'Hasta 150 personas + micr\u00f3fono inal\u00e1mbrico'\n                : 'No incluido'}\n        <\/div>\n\n        <div class=\"info-item\">\n            <span>Invitados<\/span>\n            ${q.audio ? escapar(String(q.personas)) : '\u2014'}\n        <\/div>\n    <\/div>\n\n    <div class=\"section\">\n        <div class=\"section-title\">Desglose<\/div>\n        ${desglose}\n        ${facturaHTML}\n    <\/div>\n\n    <div class=\"total\">\n        <span>${q.factura ? 'Total con IVA' : 'Total'}<\/span>\n        <strong>${dinero(q.total)}<\/strong>\n    <\/div>\n\n    <div class=\"conditions\">\n\n        ${notaFactura}\n\n        <p>\n            El servicio con audio incluye equipo para eventos de hasta\n            150 personas y micr\u00f3fono inal\u00e1mbrico.\n        <\/p>\n\n        <p>\n            Para reservar la fecha se solicita un anticipo del 50%\n            mediante dep\u00f3sito o transferencia bancaria.\n            El 50% restante deber\u00e1 liquidarse el d\u00eda del evento.\n        <\/p>\n\n        <p>\n            La disponibilidad de la fecha se confirma directamente\n            con Mara Nieto.\n        <\/p>\n\n    <\/div>\n\n    <div class=\"footer\">\n        Mara Nieto \u00b7 Viol\u00edn para eventos \u00b7 maranieto.com\n    <\/div>\n\n<\/div>\n\n<div class=\"print-actions\">\n    <button\n        class=\"print-btn\"\n        onclick=\"window.print()\">\n        Guardar como PDF\n    <\/button>\n<\/div>\n\n<script>\nwindow.addEventListener('load',function(){\n    setTimeout(function(){\n        window.print();\n    },500);\n});\n<\\\/script>\n\n<\/body>\n<\/html>\n        `);\n\n        ventana.document.close();\n    }\n\n\n    $('mn-buscar').addEventListener(\n        'click',\n        buscar\n    );\n\n\n    $('mn-municipio').addEventListener(\n        'keydown',\n        function(e){\n\n            if(e.key === 'Enter'){\n\n                e.preventDefault();\n\n                buscar();\n            }\n        }\n    );\n\n\n    $('mn-audio').addEventListener(\n        'change',\n        toggleAudio\n    );\n\n\n    $('mn-calcular').addEventListener(\n        'click',\n        calcular\n    );\n\n\n    $('mn-copiar').addEventListener(\n        'click',\n        copiarResumen\n    );\n\n\n    $('mn-pdf').addEventListener(\n        'click',\n        generarPDF\n    );\n\n\n    toggleAudio();\n\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mara Nieto \u00b7 Viol\u00edn para eventos Calcula el costo aproximado de tu evento Selecciona la ubicaci\u00f3n y algunos datos de tu evento. El c\u00e1lculo se realiza para servicio de viol\u00edn en vivo con pistas. Viol\u00edn &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"spay_email":"","footnotes":""},"class_list":["post-2917","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tabulador de costos - Mara Nieto<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tabulador de costos - Mara Nieto\" \/>\n<meta property=\"og:description\" content=\"Mara Nieto \u00b7 Viol\u00edn para eventos Calcula el costo aproximado de tu evento Selecciona la ubicaci\u00f3n y algunos datos de tu evento. El c\u00e1lculo se realiza para servicio de viol\u00edn en vivo con pistas. Viol\u00edn &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/\" \/>\n<meta property=\"og:site_name\" content=\"Mara Nieto\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-18T14:09:24+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/maranieto.com\/#website\",\"url\":\"https:\/\/maranieto.com\/\",\"name\":\"Mara Nieto\",\"description\":\"Educaci\\u00f3n, m\\u00fasica &amp; tecnolog\\u00eda\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/maranieto.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/#webpage\",\"url\":\"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/\",\"name\":\"Tabulador de costos - Mara Nieto\",\"isPartOf\":{\"@id\":\"https:\/\/maranieto.com\/#website\"},\"datePublished\":\"2025-08-10T22:03:24+00:00\",\"dateModified\":\"2026-10-18T14:09:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\/\/maranieto.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tabulador de costos\"}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tabulador de costos - Mara Nieto","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_MX","og_type":"article","og_title":"Tabulador de costos - Mara Nieto","og_description":"Mara Nieto \u00b7 Viol\u00edn para eventos Calcula el costo aproximado de tu evento Selecciona la ubicaci\u00f3n y algunos datos de tu evento. El c\u00e1lculo se realiza para servicio de viol\u00edn en vivo con pistas. Viol\u00edn &hellip;","og_url":"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/","og_site_name":"Mara Nieto","article_modified_time":"2026-10-18T14:09:24+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/maranieto.com\/#website","url":"https:\/\/maranieto.com\/","name":"Mara Nieto","description":"Educaci\u00f3n, m\u00fasica &amp; tecnolog\u00eda","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maranieto.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/#webpage","url":"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/","name":"Tabulador de costos - Mara Nieto","isPartOf":{"@id":"https:\/\/maranieto.com\/#website"},"datePublished":"2025-08-10T22:03:24+00:00","dateModified":"2026-10-18T14:09:24+00:00","breadcrumb":{"@id":"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/maranieto.com\/index.php\/tabulador-de-costor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/maranieto.com\/"},{"@type":"ListItem","position":2,"name":"Tabulador de costos"}]}]}},"_links":{"self":[{"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/pages\/2917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/comments?post=2917"}],"version-history":[{"count":17,"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/pages\/2917\/revisions"}],"predecessor-version":[{"id":3713,"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/pages\/2917\/revisions\/3713"}],"wp:attachment":[{"href":"https:\/\/maranieto.com\/index.php\/wp-json\/wp\/v2\/media?parent=2917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}