{"id":355,"date":"2025-07-11T16:44:43","date_gmt":"2025-07-11T16:44:43","guid":{"rendered":"http:\/\/localhost\/wordpress\/?page_id=355"},"modified":"2025-11-26T17:38:21","modified_gmt":"2025-11-26T17:38:21","slug":"normatividad","status":"publish","type":"page","link":"https:\/\/sspm.corregidora.gob.mx\/sspm\/?page_id=355","title":{"rendered":"Normatividad"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"355\" class=\"elementor elementor-355\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-124ef5e9 e-con-full e-flex e-con e-parent\" data-id=\"124ef5e9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7101b492 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"7101b492\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n    .contact-container {\r\n        background-color: #132960;\r\n        padding: 10px 10px;\r\n        border-radius: 12px;\r\n        margin: 20px 0;\r\n    }\r\n    \r\n    .contact-row {\r\n        display: flex;\r\n        justify-content: center;\r\n        gap: 30px;\r\n        flex-wrap: wrap;\r\n        align-items: center;\r\n    }\r\n    \r\n    .contact-item {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 10px;\r\n    }\r\n    \r\n    .contact-icon {\r\n        font-size: 1.8rem;\r\n        color: #ffffff;\r\n    }\r\n    \r\n    .contact-text {\r\n        color: #ffffff;\r\n        margin: 0;\r\n        font-size: 1rem;\r\n        line-height: 1.2;\r\n    }\r\n    \r\n    \/* Estilo espec\u00edfico para el enlace del correo *\/\r\n    .contact-text a {\r\n        color: #ffffff !important; \/* Blanco s\u00f3lido *\/\r\n        text-decoration: none;\r\n        font-weight: 500; \/* Opcional: negrita para mayor visibilidad *\/\r\n    }\r\n    \r\n    .contact-text a:hover {\r\n        opacity: 0.8;\r\n    }\r\n\r\n    @media (max-width: 576px) {\r\n        .contact-row {\r\n            gap: 15px;\r\n        }\r\n        \r\n        .contact-icon {\r\n            font-size: 1.5rem;\r\n        }\r\n        \r\n        .contact-text {\r\n            font-size: 0.9rem;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap-icons@1.11.3\/font\/bootstrap-icons.min.css\">\r\n\r\n<div class=\"contact-container\">\r\n    <div class=\"contact-row\">\r\n        <!-- Tel\u00e9fono -->\r\n        <div class=\"contact-item\">\r\n            <i class=\"bi bi-telephone contact-icon\"><\/i>\r\n            <div class=\"contact-text\">\r\n                <p>442 256 5500<\/p>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Correo -->\r\n        <div class=\"contact-item\">\r\n            <i class=\"bi bi-envelope contact-icon\"><\/i>\r\n            <div class=\"contact-text\">\r\n                <a href=\"mailto:seguridadpublica@corregidora.gob.mx\">\r\n                    seguridadpublica@corregidora.gob.mx\r\n                <\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3eab186 e-flex e-con-boxed e-con e-parent\" data-id=\"3eab186\" 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-a4eeec1 elementor-widget elementor-widget-html\" data-id=\"a4eeec1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- === WIDGET: Normatividad SSPM Corregidora 2025 (solo manifest.json) === -->\r\n<div data-norma=\"sspm-2025\" style=\"max-width:1080px;margin:0 auto;font-family:Inter,Arial,sans-serif;color:#111827;\">\r\n\r\n  <!-- Encabezado -->\r\n  <div style=\"display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;text-align:center;\">\r\n    <div style=\"height:44px;width:44px;border-radius:12px;background:linear-gradient(135deg,#48318c,#2860eb);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;\">N<\/div>\r\n    <div>\r\n      <h2 style=\"margin:0;font-size:clamp(1.4rem,1.1rem+1.8vw,2.25rem);\">Normatividad<\/h2>\r\n      <div style=\"color:#6b7280;font-size:.9rem;\">Estatal \u2022 Federal \u2022 Municipal<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Controles -->\r\n  <div class=\"controls\" style=\"display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:20px;\">\r\n    <input class=\"nw-search\" placeholder=\"Buscar documento\u2026\" \r\n           style=\"width:min(620px,92%);border:1px solid rgba(17,24,39,.12);border-radius:12px;\r\n                  padding:14px 16px 14px 42px;\r\n                  background:white url('data:image\/svg+xml;utf8,<svg xmlns=%22http:\/\/www.w3.org\/2000\/svg%22 width=%2218%22 height=%2218%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22gray%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22><circle cx=%2211%22 cy=%2211%22 r=%228%22\/><path d=%22M21 21l-4.3-4.3%22\/><\/svg>') no-repeat 14px center;font-size:1rem;\"\/>\r\n    <div class=\"nw-filters\" style=\"display:flex;gap:8px;flex-wrap:wrap;justify-content:center;\">\r\n      <button type=\"button\" class=\"nw-pill\" data-cat=\"Todas\">Todas<\/button>\r\n      <button type=\"button\" class=\"nw-pill\" data-cat=\"Estatal\">Estatal<\/button>\r\n      <button type=\"button\" class=\"nw-pill\" data-cat=\"Federal\">Federal<\/button>\r\n      <button type=\"button\" class=\"nw-pill\" data-cat=\"Municipal\">Municipal<\/button>\r\n    <\/div>\r\n    <div style=\"color:#6b7280;font-size:.9rem;text-align:center;\">Mostrando <span class=\"nw-count\">0<\/span> documentos<\/div>\r\n  <\/div>\r\n\r\n  <!-- Listado -->\r\n  <div class=\"nw-list-view\" style=\"margin-top:16px;\">\r\n    <div class=\"nw-file-list\" style=\"display:grid;grid-template-columns:1fr;gap:12px;\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- Visor PDF -->\r\n  <div class=\"nw-viewer\" style=\"display:none;margin-top:16px;\">\r\n    <div style=\"display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between;margin-bottom:10px;\">\r\n      <div class=\"nw-doc-title\" style=\"font-weight:700;color:#0f143c;\">Documento<\/div>\r\n      <div style=\"display:flex;gap:8px;align-items:center;\">\r\n        <a class=\"nw-open\" href=\"#\" target=\"_blank\" rel=\"noopener\" style=\"color:#48318c;font-weight:600;text-decoration:none;\">Abrir en pesta\u00f1a nueva<\/a>\r\n        <button type=\"button\" class=\"nw-back\">\u2190 Volver al listado<\/button>\r\n      <\/div>\r\n    <\/div>\r\n    <div style=\"height:70vh;border:1px solid rgba(10,10,10,.08);border-radius:12px;overflow:hidden;\">\r\n      <iframe class=\"nw-pdf\" src=\"\" style=\"width:100%;height:100%;border:0;\" loading=\"lazy\" referrerpolicy=\"no-referrer\"><\/iframe>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div style=\"text-align:center;color:#6b7280;font-size:.85rem;margin-top:20px;\">\r\n    Secretar\u00eda de Seguridad P\u00fablica Municipal de Corregidora - 2025\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n[data-norma=\"sspm-2025\"] .nw-pill{\r\n  color:#111827; line-height:1; padding:10px 14px; border-radius:999px; background:#fff;\r\n  border:1px solid rgba(17,24,39,.12); cursor:pointer; font-weight:600; font-size:.9rem; transition:all .15s ease;\r\n}\r\n[data-norma=\"sspm-2025\"] .nw-pill:hover{ transform:translateY(-1px); box-shadow:0 6px 16px rgba(0,0,0,.06); }\r\n[data-norma=\"sspm-2025\"] .nw-pill.active{ background:linear-gradient(135deg,#48318c,#2860eb); color:#fff; border-color:transparent; }\r\n\r\n[data-norma=\"sspm-2025\"] .nw-file{\r\n  position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px;\r\n  padding:14px 16px 14px 18px; border-radius:14px; border:1px solid rgba(0,0,0,.06); background:rgba(255,255,255,.98);\r\n  overflow:hidden; text-decoration:none; color:inherit;\r\n}\r\n[data-norma=\"sspm-2025\"] .nw-file::before{\r\n  content:\"\"; position:absolute; left:0; top:0; bottom:0; width:8px;\r\n  background:linear-gradient(180deg,#2860eb,#48318c 60%,#0f143c);\r\n  border-top-left-radius:12px; border-bottom-left-radius:12px;\r\n}\r\n[data-norma=\"sspm-2025\"] .nw-file:hover{ transform:translateY(-1px); box-shadow:0 8px 22px rgba(0,0,0,.06); }\r\n[data-norma=\"sspm-2025\"] .nw-badge{ font-size:.7rem; border-radius:999px; padding:.12rem .5rem; border:1px solid rgba(0,0,0,.08); }\r\n[data-norma=\"sspm-2025\"] .nw-meta{ font-size:.85rem; color:#6b7280; }\r\n[data-norma=\"sspm-2025\"] .truncate{ display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\r\n\r\n\/* Bot\u00f3n Volver *\/\r\n[data-norma=\"sspm-2025\"] .nw-back{\r\n  color:#111827 !important; font-weight:700;\r\n  background:#fff; border:1px solid #d1d5db; border-radius:12px; padding:10px 14px; cursor:pointer;\r\n}\r\n[data-norma=\"sspm-2025\"] .nw-back:hover{ border-color:#48318c; }\r\n\r\n\/* Avisos *\/\r\n[data-norma=\"sspm-2025\"] .nw-alert{\r\n  margin-top:14px; padding:12px 14px; border-radius:12px;\r\n  border:1px solid #fde68a; background:#fffbeb; color:#92400e; font-size:.9rem;\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  const ROOT = document.querySelector('[data-norma=\"sspm-2025\"]'); if(!ROOT) return;\r\n\r\n  \/* ===== CONFIG ===== *\/\r\n  const BASE = \"https:\/\/sspm.corregidora.gob.mx\/sspm\/normatividad2025\/docs\"; \/\/ <- con \/docs\r\n  const USE_CATEGORY_FOLDERS = true;   \/\/ Estatal \/ Federal \/ Municipal\r\n  const MANIFEST_URL = `${BASE}\/manifest.json`;\r\n\r\n  \/* ===== HELPERS ===== *\/\r\n  const $  = (s) => ROOT.querySelector(s);\r\n  const $$ = (s) => ROOT.querySelectorAll(s);\r\n  const enc = (s) => encodeURIComponent(s);\r\n  const buildUrl = (cat, filename) => USE_CATEGORY_FOLDERS ? `${BASE}\/${enc(cat)}\/${enc(filename)}` : `${BASE}\/${enc(filename)}`;\r\n  const ext = (n) => { const e=(n.split('.').pop()||'').toLowerCase(); const k={pdf:'PDF',doc:'DOC',docx:'DOCX',xls:'XLS',xlsx:'XLSX',ppt:'PPT',pptx:'PPTX'}; return k[e]||e.toUpperCase(); };\r\n  const fmt = (b) => { if(!b) return '\u2014'; const k=1024,s=['B','KB','MB','GB']; const i=Math.floor(Math.log(b)\/Math.log(k)); return (b\/Math.pow(k,i)).toFixed(2)+' '+s[i]; };\r\n\r\n  const list     = $('.nw-file-list');\r\n  const search   = $('.nw-search');\r\n  const pills    = $$('.nw-pill');\r\n  const count    = $('.nw-count');\r\n  const listView = $('.nw-list-view');\r\n  const viewer   = $('.nw-viewer');\r\n  const pdf      = $('.nw-pdf');\r\n  const docTitle = $('.nw-doc-title');\r\n  const openLink = $('.nw-open');\r\n  const backBtn  = $('.nw-back');\r\n\r\n  const state = { q:'', cat:'Todas', all: [] };\r\n\r\n  const tile = (f) => `\r\n    <a href=\"#\" class=\"nw-file\" data-cat=\"${f.cat}\" data-name=\"${f.name}\">\r\n      <div class=\"min-w-0\">\r\n        <div class=\"truncate\" style=\"font-weight:600\">${f.name}<\/div>\r\n        <div class=\"nw-meta\">${f.cat} \u00b7 <span class=\"nw-badge\">${ext(f.name)}<\/span><\/div>\r\n      <\/div>\r\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" style=\"opacity:.6\">\r\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14 3h7v7M21 3l-7 7M5 12h7m-7 5h7\"\/>\r\n      <\/svg>\r\n    <\/a>`;\r\n\r\n  function render(){\r\n    const q = state.q.toLowerCase();\r\n    const byCat = state.cat === 'Todas' ? state.all : state.all.filter(f => f.cat === state.cat);\r\n    const files = q ? byCat.filter(f => f.name.toLowerCase().includes(q)) : byCat;\r\n    list.innerHTML = files.map(tile).join('') || '<div class=\"nw-alert\">No hay resultados.<\/div>';\r\n    count.textContent = files.length;\r\n    list.querySelectorAll('.nw-file').forEach(a => a.addEventListener('click', (ev)=>{\r\n      ev.preventDefault();\r\n      const name = a.getAttribute('data-name');\r\n      const cat  = a.getAttribute('data-cat');\r\n      openViewer(cat, name);\r\n    }));\r\n  }\r\n\r\n  function openViewer(cat, name){\r\n    const url = buildUrl(cat, name);\r\n    docTitle.textContent = name;\r\n    openLink.href = url;\r\n    pdf.src = url;\r\n    listView.style.display = 'none';\r\n    viewer.style.display = '';\r\n  }\r\n\r\n  backBtn.addEventListener('click', ()=>{\r\n    pdf.src = '';\r\n    viewer.style.display = 'none';\r\n    listView.style.display = '';\r\n  });\r\n\r\n  pills.forEach(p => p.addEventListener('click', ()=>{\r\n    pills.forEach(x => x.classList.remove('active'));\r\n    p.classList.add('active');\r\n    state.cat = p.getAttribute('data-cat');\r\n    render();\r\n  }));\r\n  ROOT.querySelector('.nw-pill[data-cat=\"Todas\"]').classList.add('active');\r\n\r\n  search.addEventListener('input', ()=>{ state.q = search.value; render(); });\r\n\r\n  \/\/ ====== Carga de manifest.json ======\r\n  const toFlat = (man) => (man.categories||[]).flatMap(c => (c.files||[]).map(f => ({ name:f.name, cat:c.name })));\r\n\r\n  async function loadManifest(){\r\n    try{\r\n      const r = await fetch(MANIFEST_URL, {credentials:'omit'});\r\n      if(!r.ok) throw new Error('No se pudo leer manifest.json');\r\n      const man = await r.json();\r\n      return toFlat(man);\r\n    }catch(e){\r\n      list.innerHTML = `<div class=\"nw-alert\">No se pudo cargar <strong>manifest.json<\/strong> desde <code>${MANIFEST_URL}<\/code>. Verifica la ruta y los permisos.<\/div>`;\r\n      return [];\r\n    }\r\n  }\r\n\r\n  (async function init(){\r\n    state.all = await loadManifest();\r\n    count.textContent = state.all.length;\r\n    render();\r\n  })();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>442 256 5500 seguridadpublica@corregidora.gob.mx N Normatividad Estatal \u2022 Federal \u2022 Municipal<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-355","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=\/wp\/v2\/pages\/355","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=355"}],"version-history":[{"count":73,"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=\/wp\/v2\/pages\/355\/revisions"}],"predecessor-version":[{"id":2308,"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=\/wp\/v2\/pages\/355\/revisions\/2308"}],"wp:attachment":[{"href":"https:\/\/sspm.corregidora.gob.mx\/sspm\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=355"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}