{"id":4702,"date":"2025-07-09T17:03:22","date_gmt":"2025-07-09T17:03:22","guid":{"rendered":"https:\/\/ruwark.com\/?p=4702"},"modified":"2025-07-09T17:03:22","modified_gmt":"2025-07-09T17:03:22","slug":"calculadora-tupa-2025-intervenciones-arqueologicas","status":"publish","type":"post","link":"https:\/\/ruwark.com\/blog\/calculadora-tupa-2025-intervenciones-arqueologicas\/","title":{"rendered":"CALCULADORA TUPA 2025 INTERVENCIONES ARQUEOLOGICAS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"4702\" class=\"elementor elementor-4702\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6794c04 e-flex e-con-boxed e-con e-parent\" data-id=\"6794c04\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7b2ff07 elementor-widget elementor-widget-html\" data-id=\"7b2ff07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Gu\u00eda y Calculadora Interactiva TUPA - Ministerio de Cultura<\/title>\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n    <style>\r\n        body {\r\n            font-family: 'Inter', sans-serif;\r\n            background-color: #f4f7f9;\r\n        }\r\n        .custom-select {\r\n            background-image: url(\"data:image\/svg+xml,%3csvg xmlns='http:\/\/www.w3.org\/2000\/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%236b7280'%3e%3cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5' \/%3e%3c\/svg%3e\");\r\n            background-position: right 0.7rem center;\r\n            background-repeat: no-repeat;\r\n            background-size: 1.25em 1.25em;\r\n            padding-right: 2.5rem;\r\n            -webkit-appearance: none;\r\n            -moz-appearance: none;\r\n            appearance: none;\r\n        }\r\n        .accordion-content {\r\n            max-height: 0;\r\n            overflow: hidden;\r\n            transition: max-height 0.3s ease-in-out;\r\n        }\r\n        .accordion-button.open + .accordion-content {\r\n            max-height: 1500px; \/* Aumentado para contenido largo *\/\r\n        }\r\n        .accordion-button .arrow {\r\n            transition: transform 0.3s ease-in-out;\r\n        }\r\n        .accordion-button.open .arrow {\r\n            transform: rotate(180deg);\r\n        }\r\n        .result-card {\r\n            transition: all 0.3s ease-in-out;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body class=\"text-gray-800\">\r\n\r\n    <div class=\"container mx-auto p-4 sm:p-6 lg:p-8\">\r\n        <div class=\"w-full max-w-4xl mx-auto bg-white rounded-2xl shadow-2xl overflow-hidden\">\r\n            <header class=\"bg-[#14203C] p-6 text-white text-center shadow-lg\">\r\n                <h1 class=\"text-2xl sm:text-3xl font-bold\">TUPA del Ministerio de Cultura 2025<\/h1>\r\n                <p class=\"text-sm text-gray-300 mt-2\">Herramienta de consulta y c\u00e1lculo de tr\u00e1mites<\/p>\r\n            <\/header>\r\n\r\n            <main class=\"p-4 sm:p-6 md:p-8 space-y-8\">\r\n                <section id=\"step1\" class=\"bg-gray-50 p-4 sm:p-6 rounded-xl border border-gray-200\">\r\n                    <h2 class=\"text-lg sm:text-xl font-semibold text-gray-900 mb-4 flex items-center\">\r\n                        <span class=\"bg-[#FC4908] text-white rounded-full h-8 w-8 flex items-center justify-center font-bold mr-3\">1<\/span>\r\n                        Identifique su Tr\u00e1mite\r\n                    <\/h2>\r\n                    \r\n                    <div>\r\n                        <label for=\"search-input\" class=\"block text-sm font-medium text-gray-700 mb-2\">Opci\u00f3n A: B\u00fasqueda por palabra clave<\/label>\r\n                        <div class=\"relative\">\r\n                            <div class=\"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3\">\r\n                                <svg class=\"h-5 w-5 text-gray-400\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n                                    <path fill-rule=\"evenodd\" d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" clip-rule=\"evenodd\" \/>\r\n                                <\/svg>\r\n                            <\/div>\r\n                            <input type=\"search\" id=\"search-input\" placeholder=\"Busque por c\u00f3digo o palabra (ej: 'CIRAS', 'espect\u00e1culo')\" class=\"w-full p-3 border border-gray-300 rounded-lg shadow-sm focus:ring-2 focus:ring-[#FC4908] focus:border-[#FC4908] transition\" style=\"padding-left: 2.5rem;\">\r\n                        <\/div>\r\n                        <div id=\"search-results\" class=\"relative z-50\"><\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"my-6 flex items-center\">\r\n                        <div class=\"flex-grow border-t border-gray-300\"><\/div>\r\n                        <span class=\"flex-shrink mx-4 text-gray-500 text-sm\">O<\/span>\r\n                        <div class=\"flex-grow border-t border-gray-300\"><\/div>\r\n                    <\/div>\r\n\r\n                    <div>\r\n                        <label class=\"block text-sm font-medium text-gray-700 mb-2\">Opci\u00f3n B: Selecci\u00f3n por categor\u00eda<\/label>\r\n                        <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\r\n                            <div>\r\n                                <label for=\"category-select\" class=\"sr-only\">Categor\u00eda<\/label>\r\n                                <select id=\"category-select\" class=\"custom-select w-full p-3 border border-gray-300 rounded-lg shadow-sm focus:ring-2 focus:ring-[#FC4908] focus:border-[#FC4908] transition\">\r\n                                    <option value=\"\">-- Seleccione una categor\u00eda --<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                            <div>\r\n                                <label for=\"procedure-select\" class=\"sr-only\">Procedimiento<\/label>\r\n                                <select id=\"procedure-select\" class=\"custom-select w-full p-3 border border-gray-300 rounded-lg shadow-sm focus:ring-2 focus:ring-[#FC4908] focus:border-[#FC4908] transition\" disabled>\r\n                                    <option value=\"\">-- Seleccione un procedimiento --<\/option>\r\n                                <\/select>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/section>\r\n                \r\n                <div id=\"procedure-content\" class=\"space-y-8\"><\/div>\r\n\r\n            <\/main>\r\n\r\n            <footer class=\"bg-gray-100 p-4 text-center border-t\">\r\n                <p class=\"text-xs text-gray-600\">\r\n                    Herramienta de estimaci\u00f3n basada en el TUPA del Ministerio de Cultura (R.M. N\u00b0 097-2025-MC). Verifique la informaci\u00f3n con la entidad antes de realizar cualquier pago.\r\n                <\/p>\r\n            <\/footer>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n    \/\/ --- FASE 1: ARQUITECTURA DE DATOS (tupa_database.json) ---\r\n    const TUPA_DATABASE = [\r\n        { \"id\": \"P01OACGD\", \"nombre_corto\": \"Acceso a la Informaci\u00f3n P\u00fablica\", \"nombre_completo\": \"Acceso a la Informaci\u00f3n P\u00fablica creada u obtenida por la entidad...\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"descripcion_detallada\": \"Procedimiento a trav\u00e9s del cual toda persona puede solicitar y recibir informaci\u00f3n que cualquier entidad de la Administraci\u00f3n P\u00fablica posea. No es necesario exponer razones para la solicitud.\", \"requisitos\": [{ \"orden\": 1, \"descripcion\": \"Formulario de Solicitud de Acceso a la Informaci\u00f3n P\u00fablica (gratuito) debidamente llenado.\" }, { \"orden\": 2, \"descripcion\": \"En caso de requerir copias, presentar el comprobante de pago por el costo de reproducci\u00f3n.\" }], \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"CONDICIONAL_MULTIPLE\", \"items_de_costo\": [{ \"id_costo\": \"P01OACGD_01\", \"concepto\": \"Copia simple A4\", \"monto\": 0.10, \"tipo_unidad\": \"por unidad\" }, { \"id_costo\": \"P01OACGD_02\", \"concepto\": \"Copia simple A3\", \"monto\": 0.40, \"tipo_unidad\": \"por unidad\" }] }, \"plazo_atencion\": { \"cantidad\": 10, \"unidad_tiempo\": \"d\u00edas h\u00e1biles\", \"texto_completo\": \"10 d\u00edas h\u00e1biles\" }, \"silencio_administrativo\": { \"tipo\": \"Negativo\", \"consecuencia\": \"Si vencido el plazo la entidad no responde, se considera que la solicitud ha sido denegada.\" }, \"base_legal\": [{ \"tipo_norma\": \"Decreto Supremo\", \"numero_norma\": \"N\u00b0 021-2019-JUS\" }] },\r\n        { \"id\": \"P01DGIA\", \"nombre_corto\": \"Calificaci\u00f3n de Espect\u00e1culo Cultural\", \"nombre_completo\": \"Calificaci\u00f3n de Espect\u00e1culo P\u00fablico Cultural no Deportivo\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"P01DGIA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 312.20 }] } },\r\n        { \"id\": \"P02DGIA\", \"nombre_corto\": \"Calificaci\u00f3n de Espect\u00e1culo de Folclor Internacional\", \"nombre_completo\": \"Calificaci\u00f3n de Espect\u00e1culo P\u00fablico Cultural no Deportivo para Folclor Internacional\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"P02DGIA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 344.00 }] } },\r\n        { \"id\": \"P03DGIA\", \"nombre_corto\": \"Inafectaci\u00f3n de IGV para Instituciones Culturales\", \"nombre_completo\": \"Autorizaci\u00f3n de inafectaci\u00f3n del IGV a favor de instituciones culturales\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"P03DGIA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 993.10 }] } },\r\n        { \"id\": \"P04DGIA\", \"nombre_corto\": \"Reconocimiento como Asociaci\u00f3n Cultural\", \"nombre_completo\": \"Reconocimiento como Asociaci\u00f3n Cultural\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"P04DGIA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 132.80 }] } },\r\n        { \"id\": \"P01DGPA\", \"nombre_corto\": \"Autorizaci\u00f3n de PMAR\", \"nombre_completo\": \"Autorizaci\u00f3n para la ejecuci\u00f3n de un Plan de Monitoreo Arqueol\u00f3gico - PMAR\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"P01DGPA_01\", \"concepto\": \"Sin infraestructura preexistente\", \"monto\": 907.30 }, { \"id_costo\": \"P01DGPA_02\", \"concepto\": \"Con infraestructura preexistente\", \"monto\": 1158.60 }, { \"id_costo\": \"P01DGPA_03\", \"concepto\": \"Medio subacu\u00e1tico\", \"monto\": 1040.90 }, { \"id_costo\": \"P01DGPA_04\", \"concepto\": \"Bien inmueble PCH\", \"monto\": 838.20 }, { \"id_costo\": \"P01DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P01DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P02DGPA\", \"nombre_corto\": \"Expedici\u00f3n de CIRAS\", \"nombre_completo\": \"Expedici\u00f3n del Certificado de Inexistencia de Restos Arqueol\u00f3gicos en Superficie - CIRAS\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"POR_TRAMOS\", \"items_de_costo\": [{ \"id_costo\": \"P02DGPA_01\", \"concepto\": \"\u00c1rea 0-10 ha\", \"monto\": 1308.50, \"tramo_inicio\": 0, \"tramo_fin\": 10 }, { \"id_costo\": \"P02DGPA_02\", \"concepto\": \"\u00c1rea 10-30 ha\", \"monto\": 1397.80, \"tramo_inicio\": 10.01, \"tramo_fin\": 30 }, { \"id_costo\": \"P02DGPA_03\", \"concepto\": \"Longitud 0-10 km\", \"monto\": 1427.70, \"tramo_inicio\": 0, \"tramo_fin\": 10 }, { \"id_costo\": \"P02DGPA_04\", \"concepto\": \"Longitud >10-20 km\", \"monto\": 1718.10, \"tramo_inicio\": 10.01, \"tramo_fin\": 20 }, { \"id_costo\": \"P02DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P02DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P03DGPA\", \"nombre_corto\": \"Autorizaci\u00f3n de PIA\", \"nombre_completo\": \"Autorizaci\u00f3n para la ejecuci\u00f3n de un Proyecto de Investigaci\u00f3n Arqueol\u00f3gica - PIA\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"P03DGPA_01\", \"concepto\": \"Componente investigaci\u00f3n\", \"monto\": 437.50 }, { \"id_costo\": \"P03DGPA_02\", \"concepto\": \"Componente conservaci\u00f3n\", \"monto\": 675.50 }, { \"id_costo\": \"P03DGPA_03\", \"concepto\": \"Componente puesta en valor\", \"monto\": 1955.40 }, { \"id_costo\": \"P03DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P03DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P03DGPA_T3\", \"concepto\": \"Traslado interdepartamental terrestre + vi\u00e1tico\", \"monto\": 480.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P03DGPA_T4\", \"concepto\": \"Traslado a\u00e9reo + vi\u00e1tico\", \"monto\": 911.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P04DGPA\", \"nombre_corto\": \"Autorizaci\u00f3n de PRIA\", \"nombre_completo\": \"Autorizaci\u00f3n para la ejecuci\u00f3n de un Programa de Investigaci\u00f3n Arqueol\u00f3gica - PRIA\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"P04DGPA_01\", \"concepto\": \"Investigaci\u00f3n\", \"monto\": 1847.50 }, { \"id_costo\": \"P04DGPA_02\", \"concepto\": \"Conservaci\u00f3n\", \"monto\": 1906.60 }, { \"id_costo\": \"P04DGPA_03\", \"concepto\": \"Puesta en valor\", \"monto\": 1969.60 }, { \"id_costo\": \"P04DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P04DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P04DGPA_T3\", \"concepto\": \"Traslado interdepartamental terrestre + vi\u00e1tico\", \"monto\": 480.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P04DGPA_T4\", \"concepto\": \"Traslado a\u00e9reo + vi\u00e1tico\", \"monto\": 911.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P05DGPA\", \"nombre_corto\": \"Autorizaci\u00f3n de PAE\", \"nombre_completo\": \"Autorizaci\u00f3n para la ejecuci\u00f3n de un Proyecto Arqueol\u00f3gico de Emergencia - PAE\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"P05DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 889.40 }, { \"id_costo\": \"P05DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P05DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P05DGPA_T3\", \"concepto\": \"Traslado interdepartamental terrestre + vi\u00e1tico\", \"monto\": 480.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P05DGPA_T4\", \"concepto\": \"Traslado a\u00e9reo + vi\u00e1tico\", \"monto\": 911.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P06DGPA\", \"nombre_corto\": \"Autorizaci\u00f3n de PEA\", \"nombre_completo\": \"Autorizaci\u00f3n para la ejecuci\u00f3n de un Proyecto de Evaluaci\u00f3n Arqueol\u00f3gica - PEA\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"P06DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 2044.50 }, { \"id_costo\": \"P06DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P06DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P06DGPA_T3\", \"concepto\": \"Traslado interdepartamental terrestre + vi\u00e1tico\", \"monto\": 480.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P06DGPA_T4\", \"concepto\": \"Traslado a\u00e9reo + vi\u00e1tico\", \"monto\": 911.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P07DGPA\", \"nombre_corto\": \"Autorizaci\u00f3n de PRA\", \"nombre_completo\": \"Autorizaci\u00f3n para la ejecuci\u00f3n de un Proyecto de Rescate Arqueol\u00f3gico - PRA\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"P07DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 2068.40 }, { \"id_costo\": \"P07DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P07DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P07DGPA_T3\", \"concepto\": \"Traslado interdepartamental terrestre + vi\u00e1tico\", \"monto\": 480.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"P07DGPA_T4\", \"concepto\": \"Traslado a\u00e9reo + vi\u00e1tico\", \"monto\": 911.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"P08DGPA\", \"nombre_corto\": \"Ampliaci\u00f3n de vigencia\", \"nombre_completo\": \"Ampliaci\u00f3n de la vigencia de la autorizaci\u00f3n de las intervenciones arqueol\u00f3gicas\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"P08DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 489.70 }] } },\r\n        { \"id\": \"P09DGPA\", \"nombre_corto\": \"Renovaci\u00f3n de vigencia\", \"nombre_completo\": \"Renovaci\u00f3n de la vigencia de la autorizaci\u00f3n de las intervenciones arqueol\u00f3gicas\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"P09DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 558.90 }] } },\r\n        { \"id\": \"P10DGPA\", \"nombre_corto\": \"Monitoreo simplificado (Reconstrucci\u00f3n)\", \"nombre_completo\": \"Procedimiento simplificado de monitoreo arqueol\u00f3gico para la Reconstrucci\u00f3n con Cambios\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": true, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [] } },\r\n        { \"id\": \"P11DGPA\", \"nombre_corto\": \"Exportaci\u00f3n de muestras arqueol\u00f3gicas\", \"nombre_completo\": \"Autorizaci\u00f3n para la exportaci\u00f3n de muestras arqueol\u00f3gicas con fines de investigaci\u00f3n cient\u00edfica\", \"tipo_tramite\": \"Procedimiento Administrativo\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"POR_ITEM\", \"items_de_costo\": [{ \"id_costo\": \"P11DGPA_BASE\", \"concepto\": \"Derecho de tramitaci\u00f3n (hasta 22 muestras)\", \"monto\": 422.40, \"tramo_inicio\": 1, \"tramo_fin\": 22 }, { \"id_costo\": \"P11DGPA_ADD\", \"concepto\": \"Por cada muestra adicional\", \"monto\": 4.40, \"tipo_unidad\": \"por muestra arqueol\u00f3gica adicional\", \"condicion_aplicable\": \"Aplica a partir de la muestra n\u00famero 23\" }] } },\r\n        { \"id\": \"S01DGDP\", \"nombre_corto\": \"Certificado de bien no perteneciente al PCN\", \"nombre_completo\": \"Emisi\u00f3n de certificado de bien mueble no perteneciente al Patrimonio Cultural de la Naci\u00f3n con fines de exportaci\u00f3n\", \"tipo_tramite\": \"Servicio Prestado en Exclusividad\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"POR_ITEM\", \"items_de_costo\": [{ \"id_costo\": \"S01DGDP_BASE\", \"concepto\": \"Derecho de tramitaci\u00f3n (hasta 4 bienes)\", \"monto\": 50.60, \"tramo_inicio\": 1, \"tramo_fin\": 4 }, { \"id_costo\": \"S01DGDP_ADD\", \"concepto\": \"Por cada bien mueble adicional\", \"monto\": 4.00, \"tipo_unidad\": \"por bien mueble adicional\", \"condicion_aplicable\": \"Aplica a partir del bien n\u00famero 5\" }] } },\r\n        { \"id\": \"S02DGDP\", \"nombre_corto\": \"Devoluci\u00f3n de bien no perteneciente al PCN\", \"nombre_completo\": \"Devoluci\u00f3n de bien mueble no perteneciente al Patrimonio Cultural de la Naci\u00f3n\", \"tipo_tramite\": \"Servicio Prestado en Exclusividad\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": true, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [] } },\r\n        { \"id\": \"S01DGPA\", \"nombre_corto\": \"B\u00fasqueda de antecedentes catastrales\", \"nombre_completo\": \"B\u00fasqueda de antecedentes catastrales arqueol\u00f3gicos\", \"tipo_tramite\": \"Servicio Prestado en Exclusividad\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"S01DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 329.20 }] } },\r\n        { \"id\": \"S02DGPA\", \"nombre_corto\": \"Supervisi\u00f3n t\u00e9cnica de campo\", \"nombre_completo\": \"Supervisi\u00f3n t\u00e9cnica de campo a solicitud de parte\", \"tipo_tramite\": \"Servicio Prestado en Exclusividad\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"COMPUESTO\", \"items_de_costo\": [{ \"id_costo\": \"S02DGPA_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 299.10 }, { \"id_costo\": \"S02DGPA_T1\", \"concepto\": \"Traslado local\", \"monto\": 36.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"S02DGPA_T2\", \"concepto\": \"Traslado interprovincial\", \"monto\": 90.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"S02DGPA_T3\", \"concepto\": \"Traslado interdepartamental terrestre + vi\u00e1tico\", \"monto\": 480.00, \"tipo_unidad\": \"traslado\" }, { \"id_costo\": \"S02DGPA_T4\", \"concepto\": \"Traslado a\u00e9reo + vi\u00e1tico\", \"monto\": 911.00, \"tipo_unidad\": \"traslado\" }] } },\r\n        { \"id\": \"S02DGPC\", \"nombre_corto\": \"Certificado de condici\u00f3n cultural\", \"nombre_completo\": \"Emisi\u00f3n del certificado de condici\u00f3n cultural de Bienes Inmuebles integrantes del Patrimonio Cultural de la Naci\u00f3n\", \"tipo_tramite\": \"Servicio Prestado en Exclusividad\", \"costos\": { \"moneda\": \"S\/\", \"es_gratuito\": false, \"logica_calculo\": \"FIJO\", \"items_de_costo\": [{ \"id_costo\": \"S02DGPC_01\", \"concepto\": \"Derecho de tramitaci\u00f3n\", \"monto\": 135.10 }] } }\r\n    ];\r\n\r\n    \/\/ --- DOM REFERENCES ---\r\n    const searchInput = document.getElementById('search-input');\r\n    const searchResultsContainer = document.getElementById('search-results');\r\n    const categorySelect = document.getElementById('category-select');\r\n    const procedureSelect = document.getElementById('procedure-select');\r\n    const procedureContentContainer = document.getElementById('procedure-content');\r\n    \r\n    \/\/ --- APP LOGIC ---\r\n\r\n    const debounce = (func, delay) => {\r\n        let timeoutId;\r\n        return (...args) => {\r\n            clearTimeout(timeoutId);\r\n            timeoutId = setTimeout(() => {\r\n                func.apply(this, args);\r\n            }, delay);\r\n        };\r\n    };\r\n\r\n    const handleSearch = debounce((event) => {\r\n        const query = event.target.value.toLowerCase().trim();\r\n        searchResultsContainer.innerHTML = '';\r\n        if (query.length < 2) return;\r\n\r\n        const results = TUPA_DATABASE.filter(proc => \r\n            proc.id.toLowerCase().includes(query) || \r\n            proc.nombre_corto.toLowerCase().includes(query) ||\r\n            (proc.nombre_completo && proc.nombre_completo.toLowerCase().includes(query))\r\n        );\r\n\r\n        if (results.length > 0) {\r\n            const list = document.createElement('ul');\r\n            list.className = 'absolute w-full bg-white border border-gray-200 rounded-lg mt-1 shadow-lg max-h-[60vh] overflow-y-auto z-10';\r\n            results.forEach(proc => {\r\n                const item = document.createElement('li');\r\n                item.innerHTML = `<button type=\"button\" class=\"w-full text-left p-3 hover:bg-gray-100\">\r\n                                        <p class=\"font-semibold text-gray-800\">${proc.id} - ${proc.nombre_corto}<\/p>\r\n                                        <p class=\"text-xs text-gray-500\">${proc.tipo_tramite}<\/p>\r\n                                    <\/button>`;\r\n                item.querySelector('button').addEventListener('click', () => {\r\n                    displayProcedure(proc.id);\r\n                    resetDropdowns();\r\n                    searchResultsContainer.innerHTML = '';\r\n                    searchInput.value = `${proc.id} - ${proc.nombre_corto}`;\r\n                });\r\n                list.appendChild(item);\r\n            });\r\n            searchResultsContainer.appendChild(list);\r\n        } else {\r\n            searchResultsContainer.innerHTML = '<div class=\"absolute w-full\"><p class=\"p-3 text-sm text-gray-500 bg-white border border-gray-200 rounded-lg shadow-lg\">No se encontraron resultados.<\/p><\/div>';\r\n        }\r\n    }, 300);\r\n    \r\n    function displayProcedure(procedureId) {\r\n        const procedure = TUPA_DATABASE.find(p => p.id === procedureId);\r\n        if (!procedure) return;\r\n\r\n        let detailsHtml = `\r\n            <section id=\"step2\" class=\"bg-white p-4 sm:p-6 rounded-xl border border-gray-200 shadow-sm\">\r\n                <h2 class=\"text-lg sm:text-xl font-semibold text-gray-900 mb-2 flex items-center\">\r\n                    <span class=\"bg-[#FC4908] text-white rounded-full h-8 w-8 flex items-center justify-center font-bold mr-3\">2<\/span>\r\n                    Informaci\u00f3n del Tr\u00e1mite\r\n                <\/h2>\r\n                <h3 class=\"text-lg sm:text-xl font-bold text-[#14203C]\">${procedure.nombre_completo || procedure.nombre_corto}<\/h3>\r\n                <p class=\"text-gray-600 mt-2 mb-4 text-sm sm:text-base\">${procedure.descripcion_detallada || ''}<\/p>\r\n                 <div class=\"space-y-2\">\r\n                     ${createAccordionItem('requisitos', 'Requisitos Principales', createList(procedure.requisitos?.map(r => r.descripcion)))}\r\n                     ${createAccordionItem('baselegal', 'Base Legal', createList(procedure.base_legal?.map(b => `${b.tipo_norma} ${b.numero_norma}`), 'No especificada'))}\r\n                 <\/div>\r\n            <\/section>\r\n        `;\r\n\r\n        let calculatorHtml = `\r\n            <section id=\"step3\" class=\"bg-gray-50 p-4 sm:p-6 rounded-xl border border-gray-200\">\r\n                <h2 class=\"text-lg sm:text-xl font-semibold text-gray-900 mb-4 flex items-center\">\r\n                    <span class=\"bg-[#FC4908] text-white rounded-full h-8 w-8 flex items-center justify-center font-bold mr-3\">3<\/span>\r\n                    Calcule el Costo\r\n                <\/h2>\r\n                <div id=\"calculator-options\" class=\"space-y-4\"><\/div>\r\n                <div id=\"calculator-results\" class=\"pt-6 border-t border-gray-200 mt-6 space-y-4\">\r\n                    <h3 class=\"text-md sm:text-lg font-semibold text-gray-800\">Desglose del Pago<\/h3>\r\n                    <div class=\"bg-white p-5 rounded-lg space-y-3 border\">\r\n                        \r\n                        <div class=\"grid grid-cols-2 items-center gap-x-4\">\r\n                            <span class=\"text-gray-700 text-sm sm:text-base justify-self-start\">Derecho de Tramitaci\u00f3n:<\/span>\r\n                            <span id=\"base-cost\" class=\"font-semibold text-base sm:text-lg text-[#FC4908] whitespace-nowrap justify-self-end\">S\/ 0.00<\/span>\r\n                        <\/div>\r\n\r\n                        <div id=\"additional-cost-breakdown\" class=\"grid grid-cols-2 items-center gap-x-4 hidden\">\r\n                            <span class=\"text-gray-700 text-sm sm:text-base justify-self-start\">Costos Adicionales:<\/span>\r\n                            <span id=\"additional-cost\" class=\"font-semibold text-base sm:text-lg text-[#FC4908] whitespace-nowrap justify-self-end\">S\/ 0.00<\/span>\r\n                        <\/div>\r\n\r\n                        <div id=\"mobility-cost-breakdown\" class=\"grid grid-cols-2 items-center gap-x-4 hidden\">\r\n                            <span class=\"text-gray-700 text-sm sm:text-base justify-self-start\">Gastos de Traslado:<\/span>\r\n                            <span id=\"mobility-cost\" class=\"font-semibold text-base sm:text-lg text-[#FC4908] whitespace-nowrap justify-self-end\">S\/ 0.00<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <div class=\"bg-[#14203C] text-white p-5 rounded-lg grid grid-cols-2 items-center gap-x-4 result-card\">\r\n                         <span class=\"text-base sm:text-lg font-bold\">TOTAL A PAGAR:<\/span>\r\n                         <span id=\"total-cost\" class=\"text-xl sm:text-2xl font-bold whitespace-nowrap justify-self-end\">S\/ 0.00<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/section>\r\n        `;\r\n        \r\n        procedureContentContainer.innerHTML = detailsHtml + calculatorHtml;\r\n        renderCalculatorUI(procedure);\r\n        addAccordionListeners();\r\n    }\r\n\r\n    function renderCalculatorUI(procedure) {\r\n        const optionsContainer = document.getElementById('calculator-options');\r\n        if (!optionsContainer) return;\r\n        \r\n        let html = '';\r\n        const { costos } = procedure;\r\n\r\n        if (costos.es_gratuito) {\r\n            html = '<p class=\"text-center font-semibold text-green-600 bg-green-100 p-4 rounded-lg\">Este tr\u00e1mite es gratuito.<\/p>';\r\n        } else {\r\n            switch (costos.logica_calculo) {\r\n                case 'FIJO':\r\n                    break;\r\n                case 'CONDICIONAL_MULTIPLE':\r\n                case 'POR_TRAMOS':\r\n                case 'COMPUESTO':\r\n                    const baseItems = costos.items_de_costo.filter(item => item.tipo_unidad !== 'traslado');\r\n                    if (baseItems.length > 1) {\r\n                        html += createRadioGroup('base_cost_option', 'Seleccione una opci\u00f3n de costo base:', baseItems);\r\n                    }\r\n                    break;\r\n                case 'POR_ITEM':\r\n                    const baseItem = costos.items_de_costo.find(item => item.id_costo.includes('BASE'));\r\n                    const addItem = costos.items_de_costo.find(item => item.id_costo.includes('ADD'));\r\n                    if (baseItem && addItem) {\r\n                        const unitLabel = addItem.tipo_unidad.replace('por ', '').replace(' adicional', '');\r\n                        html += createNumberInput('item_quantity', `Cantidad de ${unitLabel}s:`, baseItem.tramo_inicio || 1);\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            const mobilityItems = costos.items_de_costo.filter(item => item.tipo_unidad === 'traslado');\r\n            if (mobilityItems.length > 0) {\r\n                html += '<div class=\"pt-4 border-t border-gray-200 mt-4\">';\r\n                html += createCheckboxGroup('mobility_option', 'Agregue gastos de traslado (opcional):', mobilityItems);\r\n                html += '<\/div>';\r\n            }\r\n        }\r\n\r\n        optionsContainer.innerHTML = html;\r\n        \r\n        optionsContainer.querySelectorAll('input').forEach(input => {\r\n            input.addEventListener('input', () => calculateTotal(procedure.id));\r\n            input.addEventListener('change', () => calculateTotal(procedure.id));\r\n        });\r\n        calculateTotal(procedure.id);\r\n    }\r\n    \r\n    function calculateTotal(procedureId) {\r\n        const procedure = TUPA_DATABASE.find(p => p.id === procedureId);\r\n        if (!procedure) return;\r\n\r\n        const { costos } = procedure;\r\n        let baseCost = 0;\r\n        let mobilityCost = 0;\r\n        let additionalCost = 0;\r\n\r\n        if (!costos.es_gratuito) {\r\n            switch (costos.logica_calculo) {\r\n                case 'FIJO':\r\n                    baseCost = costos.items_de_costo[0]?.monto || 0;\r\n                    break;\r\n                case 'CONDICIONAL_MULTIPLE':\r\n                case 'POR_TRAMOS':\r\n                case 'COMPUESTO':\r\n                    const baseOption = document.querySelector('input[name=\"base_cost_option\"]:checked');\r\n                    if (baseOption) {\r\n                        baseCost = parseFloat(baseOption.value);\r\n                    } else if (costos.items_de_costo.filter(i => i.tipo_unidad !== 'traslado').length === 1) {\r\n                        baseCost = costos.items_de_costo.find(i => i.tipo_unidad !== 'traslado').monto;\r\n                    }\r\n                    break;\r\n                case 'POR_ITEM':\r\n                    const baseItem = costos.items_de_costo.find(item => item.id_costo.includes('BASE'));\r\n                    const addItem = costos.items_de_costo.find(item => item.id_costo.includes('ADD'));\r\n                    const quantityInput = document.getElementById('item_quantity');\r\n                    const quantity = parseInt(quantityInput?.value || 0);\r\n                    \r\n                    if (baseItem && addItem && quantity > 0) {\r\n                        baseCost = baseItem.monto;\r\n                        if (quantity > baseItem.tramo_fin) {\r\n                            additionalCost = (quantity - baseItem.tramo_fin) * addItem.monto;\r\n                        }\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            const mobilityOptions = document.querySelectorAll('input[name=\"mobility_option\"]:checked');\r\n            mobilityOptions.forEach(opt => {\r\n                mobilityCost += parseFloat(opt.value);\r\n            });\r\n        }\r\n        \r\n        document.getElementById('base-cost').textContent = `S\/ ${baseCost.toFixed(2)}`;\r\n        \r\n        const mobilityBreakdown = document.getElementById('mobility-cost-breakdown');\r\n        if (mobilityCost > 0) {\r\n            document.getElementById('mobility-cost').textContent = `S\/ ${mobilityCost.toFixed(2)}`;\r\n            mobilityBreakdown.classList.remove('hidden');\r\n        } else {\r\n            mobilityBreakdown.classList.add('hidden');\r\n        }\r\n\r\n        const additionalBreakdown = document.getElementById('additional-cost-breakdown');\r\n        if (additionalCost > 0) {\r\n            document.getElementById('additional-cost').textContent = `S\/ ${additionalCost.toFixed(2)}`;\r\n            additionalBreakdown.classList.remove('hidden');\r\n        } else {\r\n            additionalBreakdown.classList.add('hidden');\r\n        }\r\n\r\n        document.getElementById('total-cost').textContent = `S\/ ${(baseCost + mobilityCost + additionalCost).toFixed(2)}`;\r\n    }\r\n\r\n    function populateCategoriesAndProcedures() {\r\n        const categories = {\r\n            'Procedimientos Administrativos': {\r\n                'Transparencia y Acceso a la Informaci\u00f3n': TUPA_DATABASE.filter(p => p.id.startsWith('P') && p.id.includes('OACGD')),\r\n                'Industrias Culturales y Artes': TUPA_DATABASE.filter(p => p.id.startsWith('P') && p.id.includes('DGIA')),\r\n                'Patrimonio Arqueol\u00f3gico': TUPA_DATABASE.filter(p => p.id.startsWith('P') && p.id.includes('DGPA')),\r\n            },\r\n            'Servicios Prestados en Exclusividad': {\r\n                'Defensa del Patrimonio': TUPA_DATABASE.filter(p => p.id.startsWith('S') && p.id.includes('DGDP')),\r\n                'Servicios de Patrimonio Arqueol\u00f3gico': TUPA_DATABASE.filter(p => p.id.startsWith('S') && p.id.includes('DGPA')),\r\n                'Servicios de Patrimonio Hist\u00f3rico': TUPA_DATABASE.filter(p => p.id.startsWith('S') && p.id.includes('DGPC')),\r\n            }\r\n        };\r\n\r\n        for (const mainCategory in categories) {\r\n            const optgroup = document.createElement('optgroup');\r\n            optgroup.label = mainCategory;\r\n            for (const subCategory in categories[mainCategory]) {\r\n                if (categories[mainCategory][subCategory].length > 0) {\r\n                    const option = document.createElement('option');\r\n                    option.value = subCategory;\r\n                    option.textContent = subCategory;\r\n                    optgroup.appendChild(option);\r\n                }\r\n            }\r\n            categorySelect.appendChild(optgroup);\r\n        }\r\n\r\n        categorySelect.addEventListener('change', (e) => {\r\n            const selectedCategory = e.target.value;\r\n            procedureSelect.innerHTML = '<option value=\"\">-- Seleccione un procedimiento --<\/option>';\r\n            procedureSelect.disabled = true;\r\n            procedureContentContainer.innerHTML = '';\r\n            searchInput.value = '';\r\n\r\n            if (selectedCategory) {\r\n                let procedures = [];\r\n                for (const mainCategory in categories) {\r\n                    if (categories[mainCategory][selectedCategory]) {\r\n                        procedures = categories[mainCategory][selectedCategory];\r\n                        break;\r\n                    }\r\n                }\r\n                \r\n                procedures.forEach(proc => {\r\n                    const option = document.createElement('option');\r\n                    option.value = proc.id;\r\n                    option.textContent = `${proc.id} - ${proc.nombre_corto}`;\r\n                    procedureSelect.appendChild(option);\r\n                });\r\n                procedureSelect.disabled = false;\r\n            }\r\n        });\r\n\r\n        procedureSelect.addEventListener('change', (e) => {\r\n            const procedureId = e.target.value;\r\n            searchInput.value = '';\r\n            searchResultsContainer.innerHTML = '';\r\n            if (procedureId) {\r\n                displayProcedure(procedureId);\r\n            } else {\r\n                procedureContentContainer.innerHTML = '';\r\n            }\r\n        });\r\n    }\r\n\r\n    function resetDropdowns() {\r\n        categorySelect.value = '';\r\n        procedureSelect.innerHTML = '<option value=\"\">-- Seleccione un procedimiento --<\/option>';\r\n        procedureSelect.disabled = true;\r\n    }\r\n\r\n    function createAccordionItem(id, title, content, defaultText = 'No hay informaci\u00f3n disponible.') {\r\n        return `\r\n            <div class=\"border border-gray-200 rounded-lg\">\r\n                <h2>\r\n                    <button type=\"button\" class=\"accordion-button flex items-center justify-between w-full p-4 font-medium text-left text-gray-700 bg-gray-50 hover:bg-gray-100 rounded-lg focus:outline-none\" data-accordion-target=\"${id}\">\r\n                        <span class=\"text-sm sm:text-base\">${title}<\/span>\r\n                        <svg class=\"arrow w-6 h-6 shrink-0 text-gray-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\"><path fill-rule=\"evenodd\" d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\" clip-rule=\"evenodd\"><\/path><\/svg>\r\n                    <\/button>\r\n                <\/h2>\r\n                <div id=\"${id}\" class=\"accordion-content\">\r\n                    <div class=\"p-4 border-t border-gray-200 text-sm\">\r\n                        ${content || `<p class=\"text-gray-500\">${defaultText}<\/p>`}\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n    }\r\n    \r\n    function createList(items, defaultText = 'No especificado.') {\r\n        if (!items || items.length === 0) return `<p class=\"text-gray-500\">${defaultText}<\/p>`;\r\n        let listHtml = '<ul class=\"space-y-2 list-disc list-inside text-gray-600\">';\r\n        items.forEach(item => { listHtml += `<li>${item}<\/li>`; });\r\n        listHtml += '<\/ul>';\r\n        return listHtml;\r\n    }\r\n\r\n    function createRadioGroup(name, groupLabel, options) {\r\n        let html = `<div class=\"space-y-2\"><label class=\"block text-sm sm:text-base font-medium text-gray-700 mb-2\">${groupLabel}<\/label>`;\r\n        options.forEach((opt, index) => {\r\n            html += `\r\n                <div class=\"flex items-center p-3 border rounded-lg bg-white hover:bg-gray-50\">\r\n                    <input type=\"radio\" id=\"${name}-${index}\" name=\"${name}\" value=\"${opt.monto}\" ${index === 0 ? 'checked' : ''} class=\"h-4 w-4 text-[#FC4908] focus:ring-[#FC4908] border-gray-300\">\r\n                    <label for=\"${name}-${index}\" class=\"ml-3 block text-sm text-gray-800\">${opt.concepto}<\/label>\r\n                <\/div>`;\r\n        });\r\n        html += '<\/div>';\r\n        return html;\r\n    }\r\n\r\n    function createCheckboxGroup(name, groupLabel, options) {\r\n        let html = `<div class=\"space-y-2\"><label class=\"block text-sm sm:text-base font-medium text-gray-700 mb-2\">${groupLabel}<\/label>`;\r\n        options.forEach((opt, index) => {\r\n            html += `\r\n                <div class=\"flex items-center p-3 border rounded-lg bg-white hover:bg-gray-50\">\r\n                    <input type=\"checkbox\" id=\"${name}-${index}\" name=\"${name}\" value=\"${opt.monto}\" class=\"h-4 w-4 text-[#FC4908] focus:ring-[#FC4908] border-gray-300 rounded\">\r\n                    <label for=\"${name}-${index}\" class=\"ml-3 block text-sm text-gray-800\">${opt.concepto}<\/label>\r\n                <\/div>`;\r\n        });\r\n        html += '<\/div>';\r\n        return html;\r\n    }\r\n    \r\n    function createNumberInput(id, label, min = 1) {\r\n        return `\r\n            <div>\r\n                <label for=\"${id}\" class=\"block text-sm sm:text-base font-medium text-gray-700\">${label}<\/label>\r\n                <input type=\"number\" id=\"${id}\" name=\"${id}\" min=\"${min}\" value=\"${min}\" class=\"mt-1 w-full p-3 border border-gray-300 rounded-lg shadow-sm focus:ring-2 focus:ring-[#FC4908] focus:border-[#FC4908]\">\r\n            <\/div>\r\n        `;\r\n    }\r\n\r\n    function addAccordionListeners() {\r\n        document.querySelectorAll('.accordion-button').forEach(button => {\r\n            button.addEventListener('click', () => {\r\n                const content = document.getElementById(button.dataset.accordionTarget);\r\n                const isOpen = button.classList.contains('open');\r\n                \r\n                document.querySelectorAll('.accordion-button.open').forEach(openButton => {\r\n                    if(openButton !== button) {\r\n                        openButton.classList.remove('open');\r\n                        const openContent = document.getElementById(openButton.dataset.accordionTarget);\r\n                        openContent.style.maxHeight = null;\r\n                    }\r\n                });\r\n\r\n                button.classList.toggle('open');\r\n                content.style.maxHeight = button.classList.contains('open') ? content.scrollHeight + \"px\" : null;\r\n            });\r\n        });\r\n    }\r\n\r\n    \/\/ --- INITIALIZATION ---\r\n    searchInput.addEventListener('input', (e) => {\r\n        resetDropdowns();\r\n        handleSearch(e);\r\n    });\r\n\r\n    document.body.addEventListener('click', (e) => {\r\n        if (!searchResultsContainer.contains(e.target) && e.target !== searchInput) {\r\n            searchResultsContainer.innerHTML = '';\r\n        }\r\n    });\r\n\r\n    populateCategoriesAndProcedures();\r\n});\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5b93281 e-flex e-con-boxed e-con e-parent\" data-id=\"5b93281\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7d54926 elementor-widget elementor-widget-heading\" data-id=\"7d54926\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">An\u00e1lisis del TUPA y su Marco Regulatorio<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9dcca66 elementor-widget elementor-widget-text-editor\" data-id=\"9dcca66\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"text-gray-700 mb-4 text-justify\">El Texto \u00danico de Procedimientos Administrativos (TUPA), establecido por la Ley N\u00b0 27444, Ley del Procedimiento Administrativo General, es un documento normativo de gesti\u00f3n que compendia y sistematiza todos los procedimientos administrativos y servicios exclusivos que una entidad p\u00fablica brinda a los ciudadanos. Su finalidad es otorgar seguridad jur\u00eddica y transparencia, permitiendo que cualquier persona conozca, de manera clara y unificada, los requisitos, plazos, costos y autoridades competentes para cada tr\u00e1mite.<\/p><p class=\"text-gray-700 mb-6 text-justify\">En el contexto del Ministerio de Cultura, el TUPA adquiere una relevancia cr\u00edtica, ya que regula la interacci\u00f3n entre el desarrollo de proyectos de inversi\u00f3n y la salvaguarda del Patrimonio Cultural de la Naci\u00f3n, un recurso no renovable y fundamental para la identidad del Per\u00fa.<\/p><h3 class=\"text-xl font-semibold text-[#14203C] mb-4 flex items-center\">Intervenciones Arqueol\u00f3gicas: Un Desglose T\u00e9cnico<\/h3><p class=\"text-gray-700 mb-6 text-justify\">Los procedimientos gestionados por la Direcci\u00f3n General de Patrimonio Arqueol\u00f3gico (DGPA) son vitales para la gesti\u00f3n cultural preventiva. A continuaci\u00f3n, se detallan las intervenciones m\u00e1s relevantes:<\/p><div class=\"space-y-6\"><div class=\"flex items-start\"><div class=\"flex-shrink-0 h-10 w-10 flex items-center justify-center bg-[#FC4908] bg-opacity-10 rounded-lg\">\u00a0<\/div><div class=\"ml-4\"><h4 class=\"text-lg font-semibold text-gray-800\">Certificado de Inexistencia de Restos Arqueol\u00f3gicos (CIRAS)<\/h4><p class=\"text-gray-600 mt-1\">Instrumento t\u00e9cnico-legal que certifica, tras una inspecci\u00f3n ocular realizada por un arque\u00f3logo, la ausencia de evidencia arqueol\u00f3gica en la superficie de un terreno. Es un requisito previo indispensable para obtener licencias de construcci\u00f3n en \u00e1reas no declaradas como patrimonio, liberando el predio para el proyecto de inversi\u00f3n.<\/p><\/div><\/div><div class=\"flex items-start\"><div class=\"flex-shrink-0 h-10 w-10 flex items-center justify-center bg-[#FC4908] bg-opacity-10 rounded-lg\">\u00a0<\/div><div class=\"ml-4\"><h4 class=\"text-lg font-semibold text-gray-800\">Plan de Monitoreo Arqueol\u00f3gico (PMAR)<\/h4><p class=\"text-gray-600 mt-1\">Procedimiento de car\u00e1cter preventivo que establece el acompa\u00f1amiento arqueol\u00f3gico continuo durante la fase de remoci\u00f3n de tierras de una obra. Su objetivo es la detecci\u00f3n, registro y gesti\u00f3n de hallazgos fortuitos, asegurando una respuesta inmediata para mitigar cualquier impacto negativo sobre el patrimonio no visible en superficie.<\/p><\/div><\/div><div class=\"flex items-start\"><div class=\"flex-shrink-0 h-10 w-10 flex items-center justify-center bg-[#FC4908] bg-opacity-10 rounded-lg\">\u00a0<\/div><div class=\"ml-4\"><h4 class=\"text-lg font-semibold text-gray-800\">Proyecto de Evaluaci\u00f3n Arqueol\u00f3gica (PEA)<\/h4><p class=\"text-gray-600 mt-1\">Se aplica cuando existen indicios o una presunci\u00f3n fundamentada de la existencia de patrimonio arqueol\u00f3gico en el subsuelo. Consiste en la ejecuci\u00f3n de excavaciones restringidas y controladas (calas o pozos de sondeo) para determinar la naturaleza, extensi\u00f3n, filiaci\u00f3n cultural y potencial cient\u00edfico de los vestigios. El resultado del PEA define si el \u00e1rea debe ser protegida o si puede proceder un rescate.<\/p><\/div><\/div><div class=\"flex items-start\"><div class=\"flex-shrink-0 h-10 w-10 flex items-center justify-center bg-[#FC4908] bg-opacity-10 rounded-lg\">\u00a0<\/div><div class=\"ml-4\"><h4 class=\"text-lg font-semibold text-gray-800\">Proyecto de Rescate Arqueol\u00f3gico (PRA)<\/h4><p class=\"text-gray-600 mt-1\">Es la intervenci\u00f3n m\u00e1s intensiva. Se autoriza cuando una obra de inversi\u00f3n, declarada de necesidad y utilidad p\u00fablica, afectar\u00e1 inevitablemente un sitio arqueol\u00f3gico ya identificado. El PRA permite la excavaci\u00f3n extensiva y la recuperaci\u00f3n completa de la informaci\u00f3n y los bienes culturales del \u00e1rea de impacto, antes de que la obra proceda, asegurando que el conocimiento no se pierda.<\/p><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Gu\u00eda y Calculadora Interactiva TUPA &#8211; Ministerio de Cultura TUPA del Ministerio de Cultura 2025 Herramienta de consulta y c\u00e1lculo de tr\u00e1mites 1 Identifique su Tr\u00e1mite Opci\u00f3n A: B\u00fasqueda por palabra clave O Opci\u00f3n B: Selecci\u00f3n por categor\u00eda Categor\u00eda &#8212; Seleccione una categor\u00eda &#8212; Procedimiento &#8212; Seleccione un procedimiento &#8212; Herramienta de estimaci\u00f3n basada en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4704,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_focus_keyword":"","rank_math_description":"","rank_math_title":"","rank_math_canonical_url":"","footnotes":"","rank_math_seo_score":10},"categories":[30,31],"tags":[],"class_list":["post-4702","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-reglamento-de-intervenciones-arqueologicas","category-ria"],"_links":{"self":[{"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/posts\/4702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/comments?post=4702"}],"version-history":[{"count":0,"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/posts\/4702\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/media\/4704"}],"wp:attachment":[{"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/media?parent=4702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/categories?post=4702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ruwark.com\/blog\/wp-json\/wp\/v2\/tags?post=4702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}