{"id":12,"date":"2025-11-13T18:42:50","date_gmt":"2025-11-13T18:42:50","guid":{"rendered":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/?page_id=12"},"modified":"2025-11-13T19:06:43","modified_gmt":"2025-11-13T19:06:43","slug":"levantar-reporte","status":"publish","type":"page","link":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/levantar-reporte\/","title":{"rendered":"Levantar Reporte"},"content":{"rendered":"        <form id=\"frc-form\" class=\"frc-form\" enctype=\"multipart\/form-data\" novalidate>\r\n\r\n            <!-- Departamento -->\r\n            <div class=\"frc-row\">\r\n                <label>Departamento*\r\n                    <select name=\"departamento\" id=\"departamento\" required>\r\n                        <option value=\"\">Selecciona\u2026<\/option>\r\n                                                    <option value=\"89\">Alcoholes<\/option>\r\n                                                    <option value=\"94\">Alumbrado P\u00fablico<\/option>\r\n                                                    <option value=\"196\">Atenci\u00f3n a Servidor P\u00fablico<\/option>\r\n                                                    <option value=\"123\">Espect\u00e1culos<\/option>\r\n                                                    <option value=\"97\">Obras P\u00fablicas<\/option>\r\n                                                    <option value=\"114\">Parques, Jardines y Panteones<\/option>\r\n                                                    <option value=\"132\">Protecci\u00f3n Civil<\/option>\r\n                                                    <option value=\"127\">Recolecci\u00f3n y Limpia<\/option>\r\n                                                    <option value=\"118\">Sanidad<\/option>\r\n                                                    <option value=\"125\">Seguridad P\u00fablica<\/option>\r\n                                                    <option value=\"109\">SIAPASF<\/option>\r\n                                            <\/select>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <!-- Tipo de denuncia -->\r\n            <div class=\"frc-row\">\r\n                <label>Tipo de denuncia*\r\n                    <select name=\"tipo_denuncia\" id=\"tipo_denuncia\" required disabled>\r\n                        <option value=\"\">Selecciona un departamento primero\u2026<\/option>\r\n                    <\/select>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <!-- Campos para Servidor P\u00fablico (ocultos por defecto) -->\r\n            <div class=\"frc-row\" id=\"frc-campo-dependencia\" style=\"display:none;\">\r\n                <label>Dependencia o \u00e1rea del servidor*\r\n                    <select name=\"dependencia\" id=\"dependencia\">\r\n                        <option value=\"\">Selecciona\u2026<\/option>\r\n                        <option value=\"Registro Civil\">Registro Civil<\/option>\r\n                        <option value=\"Seguridad P\u00fablica\">Seguridad P\u00fablica<\/option>\r\n                        <option value=\"Tr\u00e1nsito Municipal\">Tr\u00e1nsito Municipal<\/option>\r\n                        <option value=\"Obras P\u00fablicas\">Obras P\u00fablicas<\/option>\r\n                        <option value=\"Desarrollo Urbano\">Desarrollo Urbano<\/option>\r\n                        <option value=\"Tesorer\u00eda\">Tesorer\u00eda<\/option>\r\n                        <option value=\"DIF\">DIF<\/option>\r\n                        <option value=\"SIAPASF\">SIAPASF<\/option>\r\n                        <option value=\"Alumbrado P\u00fablico\">Alumbrado P\u00fablico<\/option>\r\n                        <option value=\"Parques y Jardines\">Parques y Jardines<\/option>\r\n                        <option value=\"Recolecci\u00f3n y Limpia\">Recolecci\u00f3n y Limpia<\/option>\r\n                        <option value=\"Protecci\u00f3n Civil\">Protecci\u00f3n Civil<\/option>\r\n                        <option value=\"Desarrollo Econ\u00f3mico\">Desarrollo Econ\u00f3mico<\/option>\r\n                        <option value=\"Secretar\u00eda de Gobierno\">Secretar\u00eda de Gobierno<\/option>\r\n                        <option value=\"Secretar\u00eda Particular\">Secretar\u00eda Particular<\/option>\r\n                        <option value=\"Comunicaci\u00f3n Social\">Comunicaci\u00f3n Social<\/option>\r\n                        <option value=\"Contralor\u00eda\">Contralor\u00eda<\/option>\r\n                        <option value=\"Otra\">Otra<\/option>\r\n                    <\/select>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <div class=\"frc-row\" id=\"frc-campo-persona\" style=\"display:none;\">\r\n                <label>Persona o Unidad Reportada*\r\n                    <input type=\"text\" name=\"persona_reportada\" placeholder=\"Nombre del servidor p\u00fablico o unidad\">\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <!-- Direcci\u00f3n (se oculta para servidor p\u00fablico) -->\r\n            <div class=\"frc-row\" id=\"frc-campo-calle\">\r\n                <label>Calle* <input type=\"text\" name=\"calle\" required><\/label>\r\n                <label>N\u00famero* <input type=\"text\" name=\"numero\" required><\/label>\r\n            <\/div>\r\n\r\n            <div class=\"frc-row\" id=\"frc-campo-colonia\">\r\n                <label>Colonia*\r\n                    <select name=\"colonia\" required>\r\n                        <option value=\"\">Selecciona\u2026<\/option>\r\n                                                    <option value=\"187\">18 DE JULIO<\/option>\r\n                                                    <option value=\"142\">ALIANZA CIUDADANA<\/option>\r\n                                                    <option value=\"3\">AMERICAS<\/option>\r\n                                                    <option value=\"4\">AMPLIACION AZTECA<\/option>\r\n                                                    <option value=\"143\">AMPLIACI\u00d3N NUEVA ALIANZA<\/option>\r\n                                                    <option value=\"137\">AMPLIACI\u00d3N PLAN DE AYALA<\/option>\r\n                                                    <option value=\"5\">ARBOLEDAS<\/option>\r\n                                                    <option value=\"169\">ARTE MEXICANO<\/option>\r\n                                                    <option value=\"192\">ARTESANOS<\/option>\r\n                                                    <option value=\"6\">AV. GARCIA SALINAS<\/option>\r\n                                                    <option value=\"7\">AV. HIDALGO<\/option>\r\n                                                    <option value=\"138\">AZTECA<\/option>\r\n                                                    <option value=\"8\">BAJIO DE FRESNILLO<\/option>\r\n                                                    <option value=\"189\">BAJ\u00cdO DE FRESNILLO I<\/option>\r\n                                                    <option value=\"190\">BAJ\u00cdO DE FRESNILLO II<\/option>\r\n                                                    <option value=\"9\">BARRIO ALTO<\/option>\r\n                                                    <option value=\"10\">BELENA<\/option>\r\n                                                    <option value=\"145\">BELLAVISTA<\/option>\r\n                                                    <option value=\"11\">BENITO JUAREZ<\/option>\r\n                                                    <option value=\"179\">BUENOS AIRES<\/option>\r\n                                                    <option value=\"12\">CARRETERA A LA ESTACION<\/option>\r\n                                                    <option value=\"13\">CENTRO<\/option>\r\n                                                    <option value=\"14\">COL. LAS AMERICAS<\/option>\r\n                                                    <option value=\"136\">COLINAS DEL REAL<\/option>\r\n                                                    <option value=\"176\">COLINAS DEL R\u00cdO<\/option>\r\n                                                    <option value=\"15\">COLMEXICO<\/option>\r\n                                                    <option value=\"168\">DEL BOSQUE<\/option>\r\n                                                    <option value=\"184\">DEL FRESNO<\/option>\r\n                                                    <option value=\"182\">DEL PARQUE<\/option>\r\n                                                    <option value=\"16\">DEL SOL<\/option>\r\n                                                    <option value=\"17\">DEL VALLE<\/option>\r\n                                                    <option value=\"181\">DR. RICARDO MONREAL<\/option>\r\n                                                    <option value=\"162\">ECOL\u00d3GICA<\/option>\r\n                                                    <option value=\"18\">EJIDAL<\/option>\r\n                                                    <option value=\"195\">EJIDAL 3<\/option>\r\n                                                    <option value=\"188\">EJIDAL 4<\/option>\r\n                                                    <option value=\"19\">EJIDAL CUATRO<\/option>\r\n                                                    <option value=\"154\">EL FRESNO<\/option>\r\n                                                    <option value=\"160\">EL MINERAL<\/option>\r\n                                                    <option value=\"152\">EL PARA\u00cdSO<\/option>\r\n                                                    <option value=\"159\">EL VERGEL<\/option>\r\n                                                    <option value=\"20\">ELECTRICISTAS<\/option>\r\n                                                    <option value=\"21\">EMILIANO ZAPATA<\/option>\r\n                                                    <option value=\"22\">ESPARZA<\/option>\r\n                                                    <option value=\"23\">EUROPA<\/option>\r\n                                                    <option value=\"140\">FALDA DEL CERRO DE LA JOYA<\/option>\r\n                                                    <option value=\"24\">FELIPE ANGELES<\/option>\r\n                                                    <option value=\"157\">FELIPE MONREAL<\/option>\r\n                                                    <option value=\"25\">FOVISSSTE<\/option>\r\n                                                    <option value=\"27\">FRACC. ARTE MEXICANO<\/option>\r\n                                                    <option value=\"28\">FRACC. JARDINES DE LAS FLORES<\/option>\r\n                                                    <option value=\"29\">FRACC. LOMAS DE LA FORTUNA<\/option>\r\n                                                    <option value=\"30\">FRACC. LOS OLIVOS<\/option>\r\n                                                    <option value=\"31\">FRACC. REAL DEL FRESNO<\/option>\r\n                                                    <option value=\"32\">FRACC. SAN FELIPE<\/option>\r\n                                                    <option value=\"185\">FRANCISCO GOYTIA<\/option>\r\n                                                    <option value=\"141\">FRANCISCO I. MADERO<\/option>\r\n                                                    <option value=\"26\">FRANCISCO VILLA<\/option>\r\n                                                    <option value=\"156\">GENERAL JESUS GONZ\u00c1LEZ ORTEGA<\/option>\r\n                                                    <option value=\"33\">GONZALEZ ORTEGA<\/option>\r\n                                                    <option value=\"34\">HACIENDAS<\/option>\r\n                                                    <option value=\"35\">HUERTAS DE ABAJO<\/option>\r\n                                                    <option value=\"36\">IMPRESIONISTAS<\/option>\r\n                                                    <option value=\"37\">INDECO<\/option>\r\n                                                    <option value=\"38\">INDUSTRIAL<\/option>\r\n                                                    <option value=\"177\">INSURGENTES<\/option>\r\n                                                    <option value=\"155\">JARDINES DE LAS FLORES<\/option>\r\n                                                    <option value=\"161\">JES\u00daS GONZ\u00c1LEZ ORTEGA<\/option>\r\n                                                    <option value=\"151\">JOS\u00c9 ANTONIO CASAS TORRES<\/option>\r\n                                                    <option value=\"186\">JOS\u00c9 MAR\u00cdA V\u00c1ZQUEZ<\/option>\r\n                                                    <option value=\"39\">LA FE<\/option>\r\n                                                    <option value=\"40\">LA FORTUNA<\/option>\r\n                                                    <option value=\"41\">LA JOYA<\/option>\r\n                                                    <option value=\"180\">LA PAZ<\/option>\r\n                                                    <option value=\"183\">LA SALLE<\/option>\r\n                                                    <option value=\"42\">LAGUNILLA<\/option>\r\n                                                    <option value=\"43\">LAS AMERICAS<\/option>\r\n                                                    <option value=\"149\">LAS ARBOLEDAS<\/option>\r\n                                                    <option value=\"44\">LAS AVES<\/option>\r\n                                                    <option value=\"45\">LAS FLORES<\/option>\r\n                                                    <option value=\"46\">LAS HACIENDAS<\/option>\r\n                                                    <option value=\"47\">LAS HUERTAS<\/option>\r\n                                                    <option value=\"175\">LAS POLVAREDAS<\/option>\r\n                                                    <option value=\"193\">LAS TORCAZAS<\/option>\r\n                                                    <option value=\"139\">L\u00c1ZARO C\u00c1RDENAS<\/option>\r\n                                                    <option value=\"164\">LEGALIDAD<\/option>\r\n                                                    <option value=\"171\">LIC. ABEL DAVILA GARCIA<\/option>\r\n                                                    <option value=\"48\">LIENZO CHARRO<\/option>\r\n                                                    <option value=\"49\">LINDA VISTA<\/option>\r\n                                                    <option value=\"50\">LOMAS DE LA FORTUNA<\/option>\r\n                                                    <option value=\"51\">LOMAS DE PLATEROS<\/option>\r\n                                                    <option value=\"52\">LOMAS DEL MINERAL<\/option>\r\n                                                    <option value=\"150\">LOS BALCONES<\/option>\r\n                                                    <option value=\"191\">LOS MAGUEYES<\/option>\r\n                                                    <option value=\"172\">LOS OLIVOS<\/option>\r\n                                                    <option value=\"158\">LOS PALMARES<\/option>\r\n                                                    <option value=\"144\">LOS PRADOS<\/option>\r\n                                                    <option value=\"163\">LOS TANQUES<\/option>\r\n                                                    <option value=\"53\">LUIS DONALDO COLOSIO<\/option>\r\n                                                    <option value=\"174\">MAGISTERIAL<\/option>\r\n                                                    <option value=\"54\">MANUEL M. PONCE<\/option>\r\n                                                    <option value=\"55\">MARAVILLAS<\/option>\r\n                                                    <option value=\"56\">MESOAMERICA<\/option>\r\n                                                    <option value=\"57\">MEXICO<\/option>\r\n                                                    <option value=\"58\">MIGUEL HIDALGO<\/option>\r\n                                                    <option value=\"59\">MINERA<\/option>\r\n                                                    <option value=\"60\">MURALISTAS<\/option>\r\n                                                    <option value=\"146\">NAPOLE\u00d3N GOMEZ SADA<\/option>\r\n                                                    <option value=\"61\">NUEVA ESPERANZA<\/option>\r\n                                                    <option value=\"62\">OBRERA<\/option>\r\n                                                    <option value=\"63\">PARQUE<\/option>\r\n                                                    <option value=\"148\">PARQUE INDUSTRIAL<\/option>\r\n                                                    <option value=\"64\">PASEO DEL MINERAL<\/option>\r\n                                                    <option value=\"65\">PATRIA Y LIBERTAD<\/option>\r\n                                                    <option value=\"66\">PERIODISTAS<\/option>\r\n                                                    <option value=\"67\">PETROLEOS MEXICANOS<\/option>\r\n                                                    <option value=\"68\">PLAN DE AYALA<\/option>\r\n                                                    <option value=\"69\">PLUTARCO ELIAS CALLES<\/option>\r\n                                                    <option value=\"70\">POLVADERAS<\/option>\r\n                                                    <option value=\"71\">PROGRESO<\/option>\r\n                                                    <option value=\"167\">PROVIDENCIA<\/option>\r\n                                                    <option value=\"178\">QUINTA DEL COBRE<\/option>\r\n                                                    <option value=\"72\">RAMON AMARO<\/option>\r\n                                                    <option value=\"147\">RAM\u00d3N L\u00d3PEZ VELARDE<\/option>\r\n                                                    <option value=\"73\">REAL DE FRESNILLO<\/option>\r\n                                                    <option value=\"74\">REAL DE MINAS<\/option>\r\n                                                    <option value=\"75\">REFUGIO DE SANTA ROSA<\/option>\r\n                                                    <option value=\"76\">RICARDO MONREAL<\/option>\r\n                                                    <option value=\"77\">SALIDA A DURANGO<\/option>\r\n                                                    <option value=\"78\">SALIDA A LA ESTACION<\/option>\r\n                                                    <option value=\"79\">SALIDA A ZACATECAS<\/option>\r\n                                                    <option value=\"170\">SAN CARLOS<\/option>\r\n                                                    <option value=\"80\">SAN ISIDRO DE CABRALES<\/option>\r\n                                                    <option value=\"81\">SAN JOAQUIN<\/option>\r\n                                                    <option value=\"166\">SAN PEDRO<\/option>\r\n                                                    <option value=\"153\">SAT\u00c9LITE<\/option>\r\n                                                    <option value=\"82\">SECTOR LAGUNILLA<\/option>\r\n                                                    <option value=\"83\">SECTOR POPULAR<\/option>\r\n                                                    <option value=\"84\">SOLIDARIDAD<\/option>\r\n                                                    <option value=\"85\">TECNOLOGICA<\/option>\r\n                                                    <option value=\"194\">UNIVERSIDAD<\/option>\r\n                                                    <option value=\"86\">VENUSTIANO CARRANZA<\/option>\r\n                                                    <option value=\"87\">VERGEL<\/option>\r\n                                                    <option value=\"173\">VICTORIA II<\/option>\r\n                                                    <option value=\"165\">VILLA JARD\u00cdN<\/option>\r\n                                                    <option value=\"88\">VILLAS DE PLATEROS<\/option>\r\n                                            <\/select>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <div class=\"frc-row\" id=\"frc-campo-entre-calles\">\r\n                <label>Entre calles*\r\n                    <input type=\"text\" name=\"entre_calles\" required placeholder=\"Ej. entre Morelos y Ju\u00e1rez\">\r\n                    <small style=\"display:block;color:#666;font-size:0.85em;margin-top:4px\">Escribe entre qu\u00e9 2 calles est\u00e1 ubicado. Esto ayuda a ubicar el reporte con precisi\u00f3n.<\/small>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <div class=\"frc-row\" id=\"frc-campo-referencia\">\r\n                <label>Referencia*\r\n                    <input type=\"text\" name=\"referencia\" id=\"frc-input-referencia\" required placeholder=\"Ej. frente a una tienda o cerca de una escuela\">\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <!-- Mapa con pin arrastrable: el ciudadano marca el punto EXACTO del problema -->\r\n            <div class=\"frc-row\" id=\"frc-campo-mapa\">\r\n                <label style=\"display:block;margin-bottom:8px;font-size:1.05em\">\r\n                    \ud83d\udccd <strong>Marca el lugar EXACTO donde est\u00e1 el problema*<\/strong>\r\n                <\/label>\r\n                <div class=\"frc-mapa-instrucciones\">\r\n                    <strong>\ud83d\udc49 Toca el lugar exacto del problema en el mapa<\/strong>\r\n                    <ol style=\"margin:6px 0 0 0;padding-left:20px;line-height:1.5\">\r\n                        <li>Acerca el mapa (pellizca con dos dedos)<\/li>\r\n                        <li>Toca el punto exacto <strong>donde est\u00e1 el problema<\/strong><\/li>\r\n                        <li>Aparece un pin rojo \u2014 la <strong>PUNTA<\/strong> del pin (parte de abajo) es el lugar exacto<\/li>\r\n                    <\/ol>\r\n                <\/div>\r\n                <div style=\"position:relative;width:100%\">\r\n                    <div id=\"frcMapPin\"><\/div>\r\n                <\/div>\r\n                <input type=\"hidden\" name=\"_frc_lat\" id=\"frcLatInput\">\r\n                <input type=\"hidden\" name=\"_frc_lng\" id=\"frcLngInput\">\r\n                <div id=\"frcMapMsg\" style=\"margin-top:10px;font-size:1em;min-height:1.5em;font-weight:600;text-align:center;padding:8px;border-radius:4px;background:#fff3cd\">\r\n                    <span style=\"color:#856404\">\u26a0\ufe0f Toca el lugar exacto del problema en el mapa<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            <style>\r\n                \/* El campo del mapa ocupa TODO el ancho (no respeta grid de 2 columnas) *\/\r\n                #frc-campo-mapa {\r\n                    grid-column: 1 \/ -1 !important;\r\n                    display: block !important;\r\n                    width: 100% !important;\r\n                    max-width: 100% !important;\r\n                    box-sizing: border-box !important;\r\n                    overflow: hidden;\r\n                }\r\n                #frc-campo-mapa,\r\n                #frc-campo-mapa * { box-sizing: border-box !important; max-width: 100%; word-wrap: break-word; overflow-wrap: break-word; }\r\n\r\n                #frc-campo-mapa #frcMapPin {\r\n                    width: 100% !important;\r\n                    max-width: 100% !important;\r\n                    height: 420px;\r\n                    border: 2px solid #1e3a5f;\r\n                    border-radius: 8px;\r\n                    background: #eef;\r\n                    touch-action: none;\r\n                }\r\n                \/* Cuadro de instrucciones \u2014 usa clase espec\u00edfica para no chocar con tema *\/\r\n                .frc-mapa-instrucciones {\r\n                    background: #fff3cd;\r\n                    border-left: 4px solid #ffc107;\r\n                    padding: 12px 14px;\r\n                    border-radius: 4px;\r\n                    margin-bottom: 10px;\r\n                    font-size: 0.95em;\r\n                    line-height: 1.45;\r\n                    color: #333;\r\n                }\r\n                .frc-mapa-instrucciones strong { color: #856404; font-size: 1.05em; display:block; margin-bottom: 4px; }\r\n                .frc-mapa-instrucciones ol { color: #555; font-size: 0.95em; }\r\n                .frc-mapa-instrucciones ol li { margin-bottom: 2px; }\r\n\r\n                \/* M\u00f3vil: instrucciones m\u00e1s compactas *\/\r\n                @media (max-width: 768px) {\r\n                    #frcMapPin { height: 400px !important; }\r\n                    .frc-mapa-instrucciones { padding: 10px 12px !important; font-size: 0.88em !important; }\r\n                    .frc-mapa-instrucciones ol { padding-left: 18px !important; }\r\n                    #frcMapMsg { font-size: 0.92em !important; padding: 10px !important; }\r\n                }\r\n                @media (max-width: 420px) {\r\n                    #frcMapPin { height: 360px !important; }\r\n                    .frc-mapa-instrucciones { padding: 8px 10px !important; font-size: 0.83em !important; }\r\n                    .frc-mapa-instrucciones strong { font-size: 1em !important; }\r\n                    #frc-campo-mapa label { font-size: 0.95em !important; }\r\n                }\r\n\r\n                \/* NOTA: el bot\u00f3n de pantalla completa fue REMOVIDO porque confund\u00eda al\r\n                   ciudadano. *\/\r\n\r\n                \/* Etiquetas de nombres de calle del catastro municipal (pegadas a cada calle) *\/\r\n                .frc-calle-label {\r\n                    background: rgba(255,255,255,0.92);\r\n                    border: none !important;\r\n                    box-shadow: 0 1px 2px rgba(0,0,0,0.25);\r\n                    padding: 1px 5px;\r\n                    font-size: 10.5px;\r\n                    font-weight: 600;\r\n                    color: #1e3a8a;\r\n                    border-radius: 2px;\r\n                    white-space: nowrap;\r\n                }\r\n                .frc-calle-label::before { display: none !important; }\r\n            <\/style>\r\n\r\n            <!-- Datos del ciudadano -->\r\n            <div class=\"frc-row\">\r\n                <label id=\"frc-label-nombre\">Nombre* <input type=\"text\" name=\"nombre\" required><\/label>\r\n\r\n                <!-- \u2705 Pattern v\u00e1lido (guion al final o escapado) -->\r\n                <label>Tel\u00e9fono*\r\n                    <input\r\n                        type=\"tel\"\r\n                        name=\"telefono\"\r\n                        required\r\n                        inputmode=\"tel\"\r\n                        autocomplete=\"tel\"\r\n                        placeholder=\"Ej. 4931234567\"\r\n                        pattern=\"^[0-9\\\\s()+-]{7,15}$\"\r\n                        title=\"Ingresa un tel\u00e9fono v\u00e1lido (solo n\u00fameros, espacios, +, -, par\u00e9ntesis).\"\r\n                    >\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <!-- Descripci\u00f3n -->\r\n            <div class=\"frc-row\">\r\n                <label>Descripci\u00f3n del problema\r\n                    <textarea name=\"descripcion\" rows=\"4\" placeholder=\"Describe detalladamente el problema\u2026\"><\/textarea>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <!-- Evidencias -->\r\n            <div class=\"frc-row\">\r\n                <label id=\"frc-label-archivos\">Im\u00e1genes*\r\n                    <input type=\"file\" name=\"archivos[]\" id=\"frc-archivos\" accept=\"image\/*\" multiple required>\r\n                <\/label>\r\n            <\/div>\r\n\r\n            <div class=\"frc-row\">\r\n                <button type=\"submit\" class=\"frc-btn\" id=\"frc-submit-btn\">Enviar reporte<\/button>\r\n            <\/div>\r\n\r\n            <div id=\"frc-msg\" class=\"frc-msg\" style=\"margin-top:10px;\"><\/div>\r\n        <\/form>\r\n\r\n        <!-- Libreria para convertir HEIC (iPhone) a JPG en el navegador -->\r\n        <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/heic2any@0.0.4\/dist\/heic2any.min.js\"><\/script>\r\n\r\n        <script>\r\n        (function(){\r\n          const form = document.getElementById('frc-form');\r\n          if(!form) return;\r\n\r\n          \/\/ \u2705 Evita doble binding (cache \/ blocks \/ re-render)\r\n          if(form.dataset.frcBound === \"1\") return;\r\n          form.dataset.frcBound = \"1\";\r\n\r\n          const selDepto = form.querySelector('#departamento');\r\n          const selTipo  = form.querySelector('#tipo_denuncia');\r\n          const msgBox   = form.querySelector('#frc-msg');\r\n          const btn      = form.querySelector('#frc-submit-btn');\r\n\r\n          let submitting = false;\r\n\r\n          async function fetchTiposREST(deptoId){\r\n            const url = \"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/fresnillo\/v1\/tipos?depto=\" + encodeURIComponent(deptoId);\r\n            const res = await fetch(url, { headers: { 'Accept': 'application\/json' } });\r\n            if(!res.ok) throw new Error('REST ' + res.status);\r\n            return res.json();\r\n          }\r\n\r\n          async function loadTipos(deptoId){\r\n            if(!deptoId){\r\n              selTipo.innerHTML = '<option value=\"\">Selecciona un departamento primero\u2026<\/option>';\r\n              selTipo.disabled = true;\r\n              return;\r\n            }\r\n            selTipo.disabled = true;\r\n            selTipo.innerHTML = '<option>Cargando\u2026<\/option>';\r\n\r\n            try{\r\n              const data = await fetchTiposREST(deptoId);\r\n              if(Array.isArray(data) && data.length){\r\n                selTipo.innerHTML =\r\n                  '<option value=\"\">Selecciona\u2026<\/option>' +\r\n                  data.map(t => `<option value=\"${t.id}\">${t.name}<\/option>`).join('');\r\n                selTipo.disabled = false;\r\n              } else {\r\n                selTipo.innerHTML = '<option value=\"\">No hay tipos configurados para este departamento<\/option>';\r\n              }\r\n            }catch(e){\r\n              selTipo.innerHTML = '<option value=\"\">No se pudo cargar (verifica cat\u00e1logo y ruta REST)<\/option>';\r\n              selTipo.disabled = true;\r\n            }\r\n          }\r\n\r\n          \/\/ ID del departamento \"Atenci\u00f3n a Servidor P\u00fablico\"\r\n          const DEPTO_SERVIDOR = '196';\r\n\r\n          function toggleServidorPublico(deptoId) {\r\n            const esServidor = (deptoId === DEPTO_SERVIDOR);\r\n            \/\/ Campos de ubicaci\u00f3n\r\n            document.getElementById('frc-campo-calle').style.display = esServidor ? 'none' : '';\r\n            document.getElementById('frc-campo-colonia').style.display = esServidor ? 'none' : '';\r\n            document.getElementById('frc-campo-entre-calles').style.display = esServidor ? 'none' : '';\r\n            document.getElementById('frc-campo-referencia').style.display = esServidor ? 'none' : '';\r\n            \/\/ Mapa: solo se muestra si NO es servidor p\u00fablico\r\n            var elMapa = document.getElementById('frc-campo-mapa');\r\n            if (elMapa) {\r\n                elMapa.style.display = esServidor ? 'none' : '';\r\n                \/\/ Cuando se muestra, invalidar tama\u00f1o del mapa para que Leaflet renderice bien\r\n                if (!esServidor && window._frcMapPin) {\r\n                    setTimeout(function(){ window._frcMapPin.invalidateSize(); }, 100);\r\n                }\r\n            }\r\n            \/\/ Campos de servidor p\u00fablico\r\n            document.getElementById('frc-campo-dependencia').style.display = esServidor ? '' : 'none';\r\n            document.getElementById('frc-campo-persona').style.display = esServidor ? '' : 'none';\r\n            \/\/ Required toggles\r\n            form.querySelector('[name=\"calle\"]').required = !esServidor;\r\n            form.querySelector('[name=\"numero\"]').required = !esServidor;\r\n            form.querySelector('[name=\"colonia\"]').required = !esServidor;\r\n            form.querySelector('[name=\"entre_calles\"]').required = !esServidor;\r\n            form.querySelector('[name=\"referencia\"]').required = !esServidor;\r\n            form.querySelector('[name=\"dependencia\"]').required = esServidor;\r\n            form.querySelector('[name=\"persona_reportada\"]').required = esServidor;\r\n            \/\/ Archivos opcionales para servidor p\u00fablico\r\n            var archivos = document.getElementById('frc-archivos');\r\n            archivos.required = !esServidor;\r\n            document.getElementById('frc-label-archivos').innerHTML = esServidor\r\n              ? 'Evidencia (opcional)<input type=\"file\" name=\"archivos[]\" id=\"frc-archivos\" accept=\"image\/*\" multiple>'\r\n              : 'Im\u00e1genes*<input type=\"file\" name=\"archivos[]\" id=\"frc-archivos\" accept=\"image\/*\" multiple required>';\r\n            \/\/ Label nombre\r\n            document.getElementById('frc-label-nombre').innerHTML = esServidor\r\n              ? 'Nombre del afectado* <input type=\"text\" name=\"nombre\" required>'\r\n              : 'Nombre* <input type=\"text\" name=\"nombre\" required>';\r\n          }\r\n\r\n          selDepto.addEventListener('change', () => {\r\n            toggleServidorPublico(selDepto.value);\r\n            loadTipos(selDepto.value);\r\n          });\r\n\r\n          \/\/ ============================================================\r\n          \/\/ PRESELECCI\u00d3N POR QUERY PARAM (agregado 2026-05-27)\r\n          \/\/ Permite linkear directo: ?depto=196  o  ?depto=servidor-publico\r\n          \/\/ - Si NO viene el param, todo funciona igual que siempre\r\n          \/\/ - Si viene \"&lock=1\", se oculta el dropdown para que no lo cambien\r\n          \/\/ - No toca BD, no toca otros sistemas, solo frontend\r\n          \/\/ ============================================================\r\n          (function presetDeptoFromURL(){\r\n            try {\r\n              var params = new URLSearchParams(window.location.search);\r\n              var deptoParam = params.get('depto');\r\n              if (!deptoParam) return;\r\n              var targetValue = null;\r\n              \/\/ Alias amigables (slug) \u2192 siempre apuntan a Atenci\u00f3n a Servidor P\u00fablico\r\n              if (deptoParam === 'servidor-publico' || deptoParam === 'atencion-a-servidor-publico') {\r\n                targetValue = DEPTO_SERVIDOR;\r\n              } else if (\/^\\d+$\/.test(deptoParam)) {\r\n                \/\/ Solo aceptamos IDs que existan como opci\u00f3n del select (evita inyecci\u00f3n de IDs raros)\r\n                var opt = selDepto.querySelector('option[value=\"' + deptoParam + '\"]');\r\n                if (opt) targetValue = deptoParam;\r\n              }\r\n              if (!targetValue) return;\r\n              selDepto.value = targetValue;\r\n              toggleServidorPublico(targetValue);\r\n              loadTipos(targetValue);\r\n              \/\/ Bloquear el dropdown si se pidi\u00f3 ?lock=1\r\n              if (params.get('lock') === '1') {\r\n                selDepto.setAttribute('disabled', 'disabled');\r\n                \/\/ Mantener el valor al enviar (un select disabled no env\u00eda valor)\r\n                var hidden = document.createElement('input');\r\n                hidden.type = 'hidden';\r\n                hidden.name = 'departamento';\r\n                hidden.value = targetValue;\r\n                selDepto.parentNode.appendChild(hidden);\r\n              }\r\n            } catch(e) {\r\n              \/\/ Si algo sale mal, dejamos el formulario tal cual; nunca rompemos la UX original.\r\n              if (window.console) console.warn('presetDeptoFromURL:', e);\r\n            }\r\n          })();\r\n\r\n          form.addEventListener('submit', async (e) => {\r\n            e.preventDefault();\r\n\r\n            \/\/ \u2705 Evita doble submit\r\n            if(submitting) return;\r\n\r\n            \/\/ Validaci\u00f3n: el ciudadano DEBE haber marcado el pin (excepto servidor p\u00fablico)\r\n            const esServidorActivo = (selDepto.value === DEPTO_SERVIDOR);\r\n            if (!esServidorActivo) {\r\n                const _lat = document.getElementById('frcLatInput').value;\r\n                const _lng = document.getElementById('frcLngInput').value;\r\n                if (!_lat || !_lng) {\r\n                    msgBox.innerHTML = '<span style=\"color:red\">\u26a0\ufe0f Por favor marca el lugar EXACTO en el mapa (arrastra el pin) antes de enviar el reporte.<\/span>';\r\n                    \/\/ Scroll al mapa para que lo vea\r\n                    const elMap = document.getElementById('frcMapPin');\r\n                    if (elMap) elMap.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n                    return;\r\n                }\r\n            }\r\n\r\n            submitting = true;\r\n\r\n            msgBox.innerHTML = 'Enviando\u2026';\r\n            if(btn){ btn.disabled = true; btn.style.opacity = \"0.75\"; }\r\n\r\n            \/\/ \u2705 Convertir HEIC (iPhone) a JPG ANTES de enviar\r\n            \/\/ Si la conversion falla, se sube el archivo original (sin romper nada)\r\n            try {\r\n              const archivosInput = document.getElementById('frc-archivos');\r\n              if (archivosInput && archivosInput.files.length > 0 && typeof heic2any !== 'undefined') {\r\n                const archivosNuevos = [];\r\n                for (let i = 0; i < archivosInput.files.length; i++) {\r\n                  let f = archivosInput.files[i];\r\n                  const esHeic = \/\\.(heic|heif)$\/i.test(f.name) || \/heic|heif\/i.test(f.type);\r\n                  if (esHeic) {\r\n                    try {\r\n                      msgBox.innerHTML = 'Procesando imagen ' + (i+1) + ' (formato iPhone)\u2026';\r\n                      const blob = await heic2any({ blob: f, toType: 'image\/jpeg', quality: 0.85 });\r\n                      const nuevoNombre = f.name.replace(\/\\.(heic|heif)$\/i, '.jpg');\r\n                      f = new File([blob], nuevoNombre, { type: 'image\/jpeg' });\r\n                    } catch(err) {\r\n                      console.warn('No se pudo convertir HEIC, se subira original:', err);\r\n                    }\r\n                  }\r\n                  archivosNuevos.push(f);\r\n                }\r\n                try {\r\n                  const dt = new DataTransfer();\r\n                  archivosNuevos.forEach(f => dt.items.add(f));\r\n                  archivosInput.files = dt.files;\r\n                } catch(_) { \/* navegadores muy viejos: sigue con archivos originales *\/ }\r\n              }\r\n            } catch(err) {\r\n              console.warn('Conversion HEIC fallo, continua con archivos originales:', err);\r\n            }\r\n            msgBox.innerHTML = 'Enviando\u2026';\r\n\r\n            const fd = new FormData(form);\r\n            fd.append('action', 'frc_submit');\r\n            fd.append('nonce', \"91bb69e870\");\r\n\r\n            try{\r\n              const res = await fetch(\"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-admin\/admin-ajax.php\", {\r\n                method: 'POST',\r\n                body: fd,\r\n                headers: { 'Accept': 'application\/json' },\r\n                credentials: 'same-origin'\r\n              });\r\n\r\n              const raw = await res.text();\r\n              let data = null;\r\n              try { data = JSON.parse(raw); } catch(_) {}\r\n\r\n              if(!data){\r\n                \/\/ \u2705 No hacemos alert: lo mostramos en pantalla y log en consola\r\n                msgBox.innerHTML = '<span style=\"color:red\">Respuesta inesperada del servidor. Revisa la consola (Network).<\/span>';\r\n                console.error('Respuesta no-JSON:', raw);\r\n                return;\r\n              }\r\n\r\n              if(data.success){\r\n                msgBox.innerHTML =\r\n                  '<span style=\"color:green\">Reporte enviado correctamente. Tu folio es: <strong>'+data.data.folio+'<\/strong><\/span>';\r\n\r\n                form.reset();\r\n                selTipo.innerHTML = '<option value=\"\">Selecciona un departamento primero\u2026<\/option>';\r\n                selTipo.disabled = true;\r\n              } else {\r\n                const m = (data && data.data && data.data.message) ? data.data.message : 'Error al enviar.';\r\n                msgBox.innerHTML = '<span style=\"color:red\">'+m+'<\/span>';\r\n              }\r\n\r\n            }catch(err){\r\n              \/\/ \u2705 Sin alert. Solo UI.\r\n              msgBox.innerHTML = '<span style=\"color:red\">No se pudo completar el env\u00edo. Intenta de nuevo.<\/span>';\r\n              console.error(err);\r\n            }finally{\r\n              submitting = false;\r\n              if(btn){ btn.disabled = false; btn.style.opacity = \"1\"; }\r\n            }\r\n          });\r\n        })();\r\n\r\n        \/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n        \/\/ MAPA con PIN ARRASTRABLE \u2014 el ciudadano marca el lugar exacto\r\n        \/\/ del problema, as\u00ed las coords no dependen del geocoder.\r\n        \/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n        (function frcInitMapaPin(){\r\n            function init(){\r\n                if (typeof L === 'undefined' || typeof L.map !== 'function') {\r\n                    setTimeout(init, 200);\r\n                    return;\r\n                }\r\n                const cont = document.getElementById('frcMapPin');\r\n                if (!cont || cont.dataset.inited === '1') return;\r\n                cont.dataset.inited = '1';\r\n\r\n                const FRESNILLO_CENTRO = [23.171, -102.871];\r\n                const FRESNILLO_BBOX = { lat_min: 23.10, lat_max: 23.25, lng_min: -102.95, lng_max: -102.80 };\r\n\r\n                const map = L.map('frcMapPin', {\r\n                    maxBounds: [[23.10, -102.95], [23.25, -102.80]],\r\n                    maxBoundsViscosity: 0.7,\r\n                    minZoom: 12\r\n                }).setView(FRESNILLO_CENTRO, 14);\r\n\r\n                \/\/ 2 vistas con nombres simples: Mapa (default) o Sat\u00e9lite (imagen real).\r\n                \/\/ En AMBAS se siguen viendo los nombres de calles del catastro encima.\r\n                const capaMapa = L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/voyager\/{z}\/{x}\/{y}{r}.png', {\r\n                    attribution: '&copy; OpenStreetMap, &copy; CARTO',\r\n                    maxZoom: 20, subdomains: 'abcd'\r\n                });\r\n                \/\/ maxNativeZoom 18 = Esri solo tiene imagen real hasta zoom 18 en Fresnillo.\r\n                \/\/ A zoom > 18, Leaflet escala el tile 18 en lugar de mostrar \"Map data not yet available\".\r\n                const capaSatelite = L.tileLayer('https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}', {\r\n                    attribution: 'Imagen &copy; Esri',\r\n                    maxZoom: 20,\r\n                    maxNativeZoom: 18\r\n                });\r\n                capaMapa.addTo(map);\r\n                L.control.layers(\r\n                    { 'Mapa': capaMapa, 'Sat\u00e9lite': capaSatelite },\r\n                    null,\r\n                    { position: 'topright', collapsed: false }\r\n                ).addTo(map);\r\n\r\n                \/\/ OVERLAY catastro municipal con texto SIGUIENDO la curva de cada calle\r\n                \/\/ (estilo Google Maps), usando plugin Leaflet.TextPath.\r\n                \/\/ Las l\u00edneas son INVISIBLES (weight 0). El texto va sobre el path.\r\n                const FRC_VIALIDADES_URL = 'https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-content\/plugins\/frc-fase1\/data\/vialidades_fresnillo.geojson';\r\n                let capaVialidades = null;\r\n                let dataVialidades = null;\r\n                const VACIO_NOM = \/^\\s*(ninguno|ninguna|sin\\s*nombre|s\\\/?n|no\\s*identif)\\s*$\/i;\r\n\r\n                function cargarVialidades() {\r\n                    if (!FRC_VIALIDADES_URL) return;\r\n                    fetch(FRC_VIALIDADES_URL)\r\n                        .then(r => r.ok ? r.json() : Promise.reject('HTTP ' + r.status))\r\n                        .then(data => {\r\n                            dataVialidades = data;\r\n                            renderizarVialidades();\r\n                            map.on('zoomend moveend', renderizarVialidades);\r\n                        })\r\n                        .catch(e => console.warn('Vialidades catastro no cargaron:', e));\r\n                }\r\n\r\n                function renderizarVialidades() {\r\n                    if (!dataVialidades) return;\r\n                    const zoom = map.getZoom();\r\n                    if (capaVialidades) { map.removeLayer(capaVialidades); capaVialidades = null; }\r\n                    if (zoom < 16) return;\r\n                    const bounds = map.getBounds();\r\n                    \/\/ Filtrar features dentro del viewport con nombre real.\r\n                    \/\/ Si la l\u00ednea va de derecha a izquierda, INVERTIR coords para que el texto\r\n                    \/\/ del SVG textPath salga al derecho (no espejado).\r\n                    const filtradas = [];\r\n                    for (const f of dataVialidades.features) {\r\n                        const nom = (f.properties.nombre || '').trim();\r\n                        if (!nom || VACIO_NOM.test(nom)) continue;\r\n                        const c = f.geometry.coordinates;\r\n                        if (!c || c.length < 2) continue;\r\n                        if (!c.some(p => bounds.contains([p[1], p[0]]))) continue;\r\n                        const dx = c[c.length - 1][0] - c[0][0];\r\n                        const coords = dx < 0 ? [...c].reverse() : c;\r\n                        filtradas.push({\r\n                            type: 'Feature',\r\n                            properties: f.properties,\r\n                            geometry: { type: 'LineString', coordinates: coords }\r\n                        });\r\n                    }\r\n                    capaVialidades = L.geoJSON({ type: 'FeatureCollection', features: filtradas }, {\r\n                        style: { weight: 0, opacity: 0 },\r\n                        onEachFeature: (f, layer) => {\r\n                            const nom = (f.properties.nombre || '').trim();\r\n                            if (typeof layer.setText === 'function') {\r\n                                layer.setText(nom, {\r\n                                    repeat: false,\r\n                                    center: true,\r\n                                    offset: 3,\r\n                                    attributes: {\r\n                                        'font-size': '12',\r\n                                        'font-weight': '700',\r\n                                        'fill': '#1a1a1a',\r\n                                        'stroke': '#ffffff',\r\n                                        'stroke-width': '4',\r\n                                        'paint-order': 'stroke',\r\n                                        'font-family': 'Arial, sans-serif'\r\n                                    }\r\n                                });\r\n                            }\r\n                        }\r\n                    }).addTo(map);\r\n                }\r\n\r\n                \/\/ Cargar plugin Leaflet.TextPath si no est\u00e1 cargado, luego cargar vialidades\r\n                if (typeof L.Polyline.prototype.setText === 'function') {\r\n                    cargarVialidades();\r\n                } else {\r\n                    const sc = document.createElement('script');\r\n                    sc.src = 'https:\/\/unpkg.com\/leaflet-textpath@1.2.3\/leaflet.textpath.js';\r\n                    sc.onload = cargarVialidades;\r\n                    document.head.appendChild(sc);\r\n                }\r\n\r\n                \/\/ Pin tipo Google Maps usando L.icon con SVG en data URI (m\u00e1s confiable).\r\n                \/\/ La PUNTA inferior triangular es el punto exacto del problema.\r\n                const svgPin =\r\n                    '<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"40\" height=\"56\" viewBox=\"0 0 40 56\">' +\r\n                        '<defs>' +\r\n                            '<filter id=\"sh\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">' +\r\n                                '<feDropShadow dx=\"0\" dy=\"2\" stdDeviation=\"2\" flood-opacity=\"0.5\"\/>' +\r\n                            '<\/filter>' +\r\n                        '<\/defs>' +\r\n                        '<g filter=\"url(%23sh)\">' +\r\n                            '<path d=\"M20 2C11 2 4 9 4 18c0 12 16 32 16 32s16-20 16-32C36 9 29 2 20 2z\" fill=\"%23dc3545\" stroke=\"%23ffffff\" stroke-width=\"2.5\"\/>' +\r\n                            '<circle cx=\"20\" cy=\"18\" r=\"7\" fill=\"%23ffffff\"\/>' +\r\n                            '<circle cx=\"20\" cy=\"18\" r=\"3.5\" fill=\"%23dc3545\"\/>' +\r\n                        '<\/g>' +\r\n                        '<ellipse cx=\"20\" cy=\"53\" rx=\"5\" ry=\"1.5\" fill=\"rgba(0,0,0,0.25)\"\/>' +\r\n                    '<\/svg>';\r\n                const pinIcon = L.icon({\r\n                    iconUrl: 'data:image\/svg+xml;utf8,' + svgPin,\r\n                    iconSize: [40, 56],\r\n                    iconAnchor: [20, 52], \/\/ la PUNTA del pin es el punto exacto\r\n                    popupAnchor: [0, -50]\r\n                });\r\n                \/\/ NO crear el pin al inicio \u2014 el ciudadano DEBE tocar el mapa para colocarlo.\r\n                \/\/ Esto evita que env\u00eden el form pensando que el pin (en el centro de Fresnillo)\r\n                \/\/ estaba marcando su problema.\r\n                let marker = null;\r\n                window._frcMapPin = map;\r\n\r\n                function dentroDeFresnillo(lat, lng){\r\n                    return lat >= FRESNILLO_BBOX.lat_min && lat <= FRESNILLO_BBOX.lat_max\r\n                        && lng >= FRESNILLO_BBOX.lng_min && lng <= FRESNILLO_BBOX.lng_max;\r\n                }\r\n\r\n                function setCoord(lat, lng){\r\n                    const msg = document.getElementById('frcMapMsg');\r\n                    const inputLat = document.getElementById('frcLatInput');\r\n                    const inputLng = document.getElementById('frcLngInput');\r\n                    if (!dentroDeFresnillo(lat, lng)) {\r\n                        msg.style.background = '#f8d7da';\r\n                        msg.innerHTML = '<span style=\"color:#721c24\">\u26a0\ufe0f El punto est\u00e1 fuera de Fresnillo. Acerca el mapa y toca un lugar dentro del municipio.<\/span>';\r\n                        inputLat.value = ''; inputLng.value = '';\r\n                        return;\r\n                    }\r\n                    inputLat.value = lat.toFixed(7);\r\n                    inputLng.value = lng.toFixed(7);\r\n                    msg.style.background = '#d1e7dd';\r\n                    msg.innerHTML = '<span style=\"color:#0f5132\">\u2705 Lugar marcado correctamente. Si te equivocaste, toca otra vez.<\/span>';\r\n                }\r\n\r\n                function colocarPin(lat, lng){\r\n                    if (!marker) {\r\n                        \/\/ Primera vez: crear el pin en el lugar donde toc\u00f3 el ciudadano\r\n                        marker = L.marker([lat, lng], {\r\n                            draggable: true,\r\n                            icon: pinIcon,\r\n                            autoPan: true,\r\n                            autoPanPadding: [50, 50]\r\n                        }).addTo(map);\r\n                        window._frcMapMarker = marker;\r\n                        marker.on('dragend', function(e){\r\n                            const ll = e.target.getLatLng();\r\n                            setCoord(ll.lat, ll.lng);\r\n                        });\r\n                    } else {\r\n                        marker.setLatLng([lat, lng]);\r\n                    }\r\n                    setCoord(lat, lng);\r\n                }\r\n                map.on('click', function(e){\r\n                    colocarPin(e.latlng.lat, e.latlng.lng);\r\n                });\r\n\r\n                setTimeout(function(){ map.invalidateSize(); }, 300);\r\n\r\n                \/\/ Bot\u00f3n pantalla completa REMOVIDO: confund\u00eda al ciudadano (no hab\u00eda forma clara\r\n                \/\/ de salir). El mapa queda en su tama\u00f1o normal definido en CSS.\r\n            }\r\n            if (document.readyState === 'loading') {\r\n                document.addEventListener('DOMContentLoaded', init);\r\n            } else {\r\n                init();\r\n            }\r\n        })();\r\n        <\/script>\r\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":2,"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":16,"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/pages\/12\/revisions\/16"}],"wp:attachment":[{"href":"https:\/\/www.fresnillo.gob.mx\/Atencion-Ciudadana\/wp-json\/wp\/v2\/media?parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}