{"id":449,"date":"2025-08-14T09:37:10","date_gmt":"2025-08-14T14:37:10","guid":{"rendered":"http:\/\/10.190.55.6\/?page_id=449"},"modified":"2026-03-17T11:09:18","modified_gmt":"2026-03-17T16:09:18","slug":"arancel-oficial","status":"publish","type":"page","link":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/","title":{"rendered":"Arancel Oficial"},"content":{"rendered":"    <div class=\"wp-block-bplugins-custom-html\" id='bPluginsCustomHtml-1'>\n     <style>\n  \/* ====== T\u00edtulo con l\u00ednea inferior ====== *\/\n  .custom-underline \n  {\n    display: inline-block;\n    position: relative;\n    padding-bottom: 3px;\n  }\n  .custom-underline::after \n  {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    right: -5px;\n    bottom: 0;\n    height: 3px;\n    background-color: #fcaa52;\n  }\n  \/* ====== Blockquote personalizado ====== *\/\n  .custom-blockquote \n  {\n    position: relative;\n    background-color: #f8f9fa;\n    border-left: 4px solid #dee2e6;\n    transition: border-color 0.3s ease, transform 0.3s ease;\n    padding: 2rem 2rem 1.5rem 3rem; \/* espacio interior *\/\n  }\n  .custom-blockquote:hover \n  {\n    transform: scale(1.01);\n    border-left-color: #fcaa52 !important;\n    cursor: pointer;\n  }\n  .custom-blockquote::before \n  {\n    content: \"\\201C\";\n    font-size: 5rem;\n    color: #adb5bd;\n    position: absolute;\n    left: 0.5rem;\n    top: -0.5rem;\n    font-family: Georgia, serif;\n    transition: color 0.3s ease;\n  }\n  .custom-blockquote:hover::before \n  {\n    color: #fcaa52;\n  }\n  .blockquote-header \n  {\n    font-size: 1.25rem;\n    text-align: justify;\n    font-weight: 500;\n    color: #212529;\n    padding: 0 35px;\n  }\n  \/* ====== Cards ====== *\/\n  .card \n  {\n    border: none;\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n    transition: transform 0.3s ease;\n  }\n  .card:hover \n  {\n    transform: translateY(-5px);\n  }\n  .card-img-top \n  {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-body p \n  {\n    color: #003875;\n  }\n  \/* ====== Accordion (para Bootstrap 4.7) ====== *\/\n  .accordion .card \n  {\n    margin-bottom: 10px;\n    border: 1px solid #dee2e6;\n  }\n  .accordion .card-header \n  {\n    background-color: #fff;\n    padding: 0;\n  }\n  .accordion .btn-link \n  {\n    display: block;\n    width: 100%;\n    text-align: left;\n    color: #003875;\n    font-weight: 600;\n    text-decoration: none;\n    padding: 15px 20px;\n    transition: all 0.3s ease;\n  }\n  .accordion .btn-link:hover,\n  .accordion .btn-link:focus \n  {\n    background-color: #fcaa52;\n    color: #fff;\n    text-decoration: none;\n  }\n  .accordion .btn-link.collapsed \n  {\n    background-color: #f8f9fa;\n    color: #003875;\n  }\n  \/* ESTILO PARA EL BOT\u00d3N DEL ACORDE\u00d3N CUANDO EST\u00c1 ABIERTO *\/\n  .accordion .btn-link:not(.collapsed) \n  {\n      background-color: #fcaa52; \/* Fondo NARANJA *\/\n      color: #fff;               \/* Texto BLANCO *\/\n      font-weight: bold;         \/* Negrita *\/\n  }\n  .accordion .card-body img \n  {\n    width: 100%;\n    max-width: 850px;\n    height: auto;\n    display: block;\n    margin: 0 auto;\n  }\n  \/* ========================================================= *\/\n  \/* ====== ESTILOS FINALES PARA EL \u00cdTEM DE LISTA (.edicto-item-final) ====== *\/\n  \/* ========================================================= *\/\n  .archivos-list .edicto-item-final \n  {\n    background: #ffffff;\n    border-radius: 8px; \n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08); \n    margin-bottom: 12px;\n    border-left: 5px solid #6c757d; \n    transition: all 0.3s ease;\n    cursor: default; \n  }\n  \/* Estilo del enlace (a) dentro del li *\/\n  .archivos-list .edicto-item-final a \n  {\n    text-decoration: none !important;\n  }\n  .archivos-list .edicto-item-final:hover \n  {\n    transform: translateY(-2px);\n    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);\n    border-left-color: #fcaa52; \/* NARANJA en hover *\/\n  }\n  \/* T\u00edtulos (Etiquetas - item-title): FUERZA DE NEGRITA CORREGIDA *\/\n  .archivos-list .edicto-item-final .fw-bolder \n  {\n    font-weight: 900 !important; \/* Valor alto para asegurar el bold *\/\n    color: #343a40 !important;\n    transition: color 0.3s;\n  }\n  \/* Icono Principal (item-icon-base): Inicialmente GRIS (Color de transici\u00f3n) *\/\n  .archivos-list .edicto-item-final .item-icon-base \n  {\n    color: #6c757d !important;\n    transition: color 0.3s;\n  }\n  \/* Eliminamos estilos de fondo para el icono (Bloque 1) *\/\n  .archivos-list .edicto-item-final .item-col-left div:first-child \n  {\n    background: none !important; \/* Elimina bg-light *\/\n    box-shadow: none !important; \/* Elimina shadow-sm *\/\n    padding: 0 !important; \/* Ajusta el padding si es necesario *\/\n  }\n  \/* --- CAMBIOS EN HOVER --- *\/\n  .archivos-list .edicto-item-final:hover .item-title \n  {\n    color: #003875 !important; \/* Color oscuro para el t\u00edtulo en hover *\/\n  }\n  \/* El icono principal cambia a NARANJA *\/\n  .archivos-list .edicto-item-final:hover .item-icon-base \n  {\n    color: #fcaa52 !important; \n  }\n  \/* --- TAMA\u00d1OS (Unificaci\u00f3n) --- *\/\n  .archivos-list .edicto-item-final .small \n  {\n    font-size: 0.9rem !important;\n  }\n  .archivos-list .edicto-item-final .flex-grow-1 div \n  {\n    font-size: 1rem !important; \/* Base para las l\u00edneas de contenido *\/\n  }\n  .archivos-list .edicto-item-final .text-danger.fw-bolder \n  {\n    font-weight: 900 !important;\n  }\n  .entry-content a \n  {\n    box-shadow: 0 0 0 0 currentColor;\n  }\n  .edicto-activo i { color: #28a745; }    \/* verde *\/\n  .edicto-expirado i { color: #dc3545; }  \/* rojo *\/\n  .edicto-inactivo i { color: #6c757d; }  \/* gris *\/\n  \/* Opcional: fondo suave seg\u00fan estado *\/\n  .edicto-activo { background-color: #e6f4ea; }\n  .edicto-expirado { background-color: #fde2e2; }\n  .edicto-inactivo { background-color: #f0f0f0; }\n  .pagination {display: inline-flex !important;}\/* Correcci\u00f3n al Paginador\n  \/* Aumentar la fuente mientras se usa la paginaci\u00f3n peque\u00f1a *\/\n  .pagination-sm .page-link \n  {\n    font-size: 1rem; \/* Tama\u00f1o de fuente est\u00e1ndar *\/\n    padding-top: 0.75rem; \n    padding-bottom: 0.2rem; \n    padding-left: 0.5rem; \n    padding-right: 0.5rem;\n    line-height: 1.5; \n  }\n  .entry-content a \n  {\n    color: #000 !important;\n  }\n  \/* ----------------------------------------------------- *\/\n  \/* --- CSS para el Efecto \"Lightning Flash\" Ajustado --- *\/\n  \/* ----------------------------------------------------- *\/\n  \/* Estilos Comunes de Bot\u00f3n *\/\n  .modern-lightning-neutral \n  {\n        \/* Ajustes de tipograf\u00eda y padding *\/\n            font-size: 15px; \n            padding: 0.8rem 2rem; \n            \n            \/* Colores Base Solicitados *\/\n            background-color: #f2f2f2; \/* Color Base: Gris claro *\/\n            color: #212529; \/* Color de Texto Base: Negro Bootstrap *\/\n            \n            \/* Configuraci\u00f3n de animaci\u00f3n y hover *\/\n            position: relative;\n            overflow: hidden; \n            z-index: 1;\n            transition: all 0.5s ease;\n            border: none;\n            line-height: 1.5; \/* Asegura buen espaciado *\/\n        }\n  \/* Efecto Hover Solicitado *\/\n  .modern-lightning-neutral:hover \n  {\n            background-color: #fcaa52; \/* Hover Color: Naranja\/\u00c1mbar *\/\n            color: #000000; \/* Hover Texto: Blanco *\/\n            \n            \/* Efecto de elevaci\u00f3n moderna *\/\n            transform: translateY(-4px); \n            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);\n        }\n  \/* Pseudo-elemento que crea el Destello (Flash) *\/\n  .modern-lightning-neutral::before \n  {\n    content: '';\n    position: absolute;\n    top: 0;\n    left: -100%; \n    width: 30px; \n    height: 100%;\n    \/* Destello blanco brillante *\/\n    background: rgba(255, 255, 255, 0.6); \n    transform: skewX(-20deg); \n    transition: none; \n    z-index: 2;\n  }\n  \/* Animaci\u00f3n de Deslizamiento del Destello *\/\n  @keyframes lightning-flash \n  {\n    0% \n    {\n      left: -100%;\n    }\n    10% \n    {\n      left: 110%; \/* El destello cruza el bot\u00f3n *\/\n    }\n    100% \n    {\n      left: 110%; \/* El destello permanece fuera de vista la mayor parte del tiempo *\/\n    }\n  }\n  \/* Aplicaci\u00f3n de Animaci\u00f3n (Ambos botones usan la misma animaci\u00f3n) *\/\n  .modern-lightning-neutral::before \n  {\n    animation: lightning-flash 5s infinite;\n  }\n  \/* Retraso de animaci\u00f3n para el segundo bot\u00f3n (opcional, para que no destellen a la vez) *\/\n  .col-12.text-center > .modern-lightning-neutral:nth-child(2)::before \n  {\n    animation-delay: 2.5s; \n  }\n  @media (max-width: 767.98px) \n  {\n    \/* El LI pasa a ser una columna (ya est\u00e1 as\u00ed por flex-column) *\/\n    .archivos-list .edicto-item-final \n    {\n      padding: 1rem !important; \/* Menos padding en m\u00f3vil *\/\n    }\n    \/* 1. Contenedor del Icono\/Fecha (item-col-left): Centrado Horizontal *\/\n    \/* El d-flex flex-column text-center asegura que el icono y la fecha queden centrados *\/\n    .archivos-list .edicto-item-final .item-col-left \n    {\n      width: 100% !important; \/* Ocupa todo el ancho superior *\/\n      min-width: unset !important;\n      \/* El mb-2 sigue aplicando y deja espacio con el contenido de abajo *\/\n    }\n    \/* 2. Contenedor del Contenido (item-col-center): Alineaci\u00f3n Izquierda *\/\n    \/* Este es el cambio m\u00e1s importante: forzar la alineaci\u00f3n a la izquierda *\/\n    .archivos-list .edicto-item-final .item-col-center \n    {\n      text-align: left !important; \/* Alinea todo el texto a la izquierda en m\u00f3vil *\/\n      width: 100%;\n    }\n    \/* Aseguramos que todas las l\u00edneas de contenido se vean correctamente *\/\n    .archivos-list .edicto-item-final .item-col-center > div \n    {\n      display: block; \/* Asegura que cada l\u00ednea (descripci\u00f3n, c\u00f3digo) ocupe su propio espacio *\/\n      width: 100%;\n      margin-bottom: 0.25rem !important; \/* Espacio extra entre l\u00edneas *\/\n    }\n    \/* Ajuste para el texto NO DISP. en m\u00f3vil *\/\n    .archivos-list .edicto-item-final .text-danger.fw-bolder \n    {\n      text-align: left !important; \/* Asegura que el NO DISP. quede alineado con el texto *\/\n    }\n    \/* Eliminamos el margen entre bloques *\/\n    .archivos-list .edicto-item-final .me-md-4 \n    {\n      margin-right: 0 !important;\n      margin-left: 0 !important;\n    }\n    .pagination-sm .page-item \n    {\n      margin: 0 1px; \/* Reduce el espacio entre los botones *\/\n    }\n    .pagination-sm .page-link \n    {\n      font-size: 0.8rem; \/* Fuente m\u00e1s peque\u00f1a para que quepa todo *\/\n      padding: 0.1rem 0.3rem; \/* Padding a\u00fan m\u00e1s peque\u00f1o *\/\n      min-width: 25px; \/* Establece un ancho m\u00ednimo para los botones *\/\n      height: 30px; \/* Establece una altura fija si es necesario *\/\n      display: flex; \/* Para centrar el contenido (icono\/n\u00famero) *\/\n      align-items: center;\n      justify-content: center;\n      width: 30px;\n      padding-top: 0.25rem;\n    }\n    \/* Ocultar botones de \"Primero\" y \"\u00daltimo\" en pantallas muy peque\u00f1as *\/\n    .pagination-sm .page-item:first-child, \/* Bot\u00f3n \"Primero\" *\/\n    .pagination-sm .page-item:last-child { \/* Bot\u00f3n \"\u00daltimo\" *\/\n        display: none; \n    }\n    \/* Ajustar los iconos dentro de los botones *\/\n    .pagination-sm .page-link i \n    {\n        font-size: 0.8rem; \/* Reduce el tama\u00f1o de los iconos si es necesario *\/\n    }\n    .accordion .btn-link \n    {\n      font-size: 10px;\n    }\n  }\n<\/style>\n\n<div class=\"container-fluid\">\n  <div class=\"row mb-4\">\n    <div class=\"col-lg-12 text-center\">\n      <h3 class=\"font-weight-bold custom-underline\">\n        Arancel Aduanero<br> \n        <span id=\"arancel-enmienda-dinamico\" class=\"text-secondary fw-normal ms-2 small\">Cargando Versi\u00f3n&#8230;<\/span>\n      <\/h3>\n    <\/div>\n    <div class=\"col-lg-12\">\n      <blockquote class=\"blockquote custom-blockquote p-4 rounded position-relative\"\n        style=\"background: #f8f9fa; border-left: 5px solid #6c757d; box-shadow: 0 4px 12px rgba(0,0,0,0.08);\">\n        <div style=\"position:absolute; top:1rem; left:1rem; font-size:2rem; color:#6c757d;\">\n          <i class=\"fa-solid fa-quote-left\"><\/i>\n        <\/div>\n        <h2 class=\"blockquote-header h5 text-justify mb-2 ps-5\" \n            style=\"line-height:1.6; color:#212529; font-weight:500;\">\n          El Arancel Aduanero, basado en el Sistema Armonizado de Designaci\u00f3n y Codificaci\u00f3n de Mercanc\u00edas (SA), es la nomenclatura utilizada en pr\u00e1cticamente todo el mundo para transar los productos en el comercio exterior, lo que le permite a todos los actores involucrados en la cadena log\u00edstica trabajar con mayor claridad \n        <\/h2>\n        <footer class=\"blockquote-footer mt-2 ps-5 text-muted\" style=\"font-size:0.85em;\">\n          Departamento de Gesti\u00f3n Tecnica &#8211; Autoridad Nacional de Aduanas\n        <\/footer>\n      <\/blockquote>\n    <\/div>\n    <div class=\"col-lg-12 text-center mt-4\">\n      <div id=\"myaccordionid\" class=\"accordion\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\njQuery(document).ready(function($)\n{\n    \/\/ --- 1. Variables y Funciones de Utilidad ---\n    const ITEMS_PER_PAGE = 5;\n    let allSortedItems = {};\n    let categoriesCache = {};\n\n    \/**\n     * Parsea una cadena de fecha \"d\/m\/y\" o \"YYYY\" a un objeto Date en UTC.\n     * Prioriza el formato d\/m\/y si es v\u00e1lido.\n     *\/\n    const parseDate = (dateString) =>\n    {\n        if (!dateString || dateString === \"@\")\n        {\n            return new Date(0); \/\/ Epoch, la fecha m\u00e1s antigua\n        }\n\n        \/\/ 1. INTENTO DE PARSEO: Formato d\/m\/y (Ej: 01\/10\/2025)\n        if (dateString.length === 10 && dateString.includes('\/'))\n        {\n            const [d, m, y] = dateString.split('\/').map(Number);\n            \/\/ Verifica si los componentes son n\u00fameros v\u00e1lidos\n            if (!isNaN(d) && !isNaN(m) && !isNaN(y) && y >= 1900) {\n                return new Date(Date.UTC(y, m - 1, d));\n            }\n        }\n        \n        \/\/ 2. INTENTO DE PARSEO: Formato YYYY (Ej: 2025)\n        if (dateString.length === 4 && !isNaN(Number(dateString)))\n        {\n            const y = Number(dateString);\n            if (y >= 1900) {\n                 \/\/ Usamos el 31 de diciembre de ese a\u00f1o para ordenar correctamente\n                return new Date(Date.UTC(y, 11, 31)); \n            }\n        }\n\n        \/\/ Si nada funcion\u00f3, devuelve la fecha m\u00e1s antigua\n        return new Date(0); \n    };\n\n    \/**\n     * Extrae el texto de la Enmienda (ej. \"VII Enmienda\") de un t\u00edtulo.\n     *\/\n    const extractEnmienda = (title) => \n    {\n        \/\/ 1. Busca un patr\u00f3n de Enmienda (ej. \"VII Enmienda\")\n        const regex = \/([IVXLCDM]+\\sEnmienda)\/i;\n        const match = title.match(regex);\n        \n        if (match && match[1]) {\n            return match[1]; \n        }\n        \n        \/\/ 2. Patr\u00f3n de respaldo: Busca el a\u00f1o de actualizaci\u00f3n (ej. \"Actualizado al 2025\")\n        const yearMatch = title.match(\/Actualizado al (\\d{4})\/);\n        \n        if (yearMatch && yearMatch[1]) {\n            return `Actualizado al ${yearMatch[1]}`;\n        }\n        \n        \/\/ 3. Patr\u00f3n de respaldo: Busca el a\u00f1o solo (ej. \"2025\")\n        const simpleYearMatch = title.match(\/(\\d{4})\/);\n        if (simpleYearMatch && simpleYearMatch[1]) {\n            return `Versi\u00f3n ${simpleYearMatch[1]}`;\n        }\n\n        return \"Versi\u00f3n Vigente\"; \/\/ Valor por defecto\n    };\n\n    \/\/ --- 2. Funci\u00f3n de Renderizado y Paginaci\u00f3n ---\n    const renderPage = (catKey, catName, catIndex, page = 1) =>\n    {\n        const sortedItems = allSortedItems[catKey];\n        if (!sortedItems) return;\n        const totalItems = sortedItems.length;\n        const totalPages = Math.ceil(totalItems \/ ITEMS_PER_PAGE);\n        const start = (page - 1) * ITEMS_PER_PAGE;\n        const end = start + ITEMS_PER_PAGE;\n        const itemsToRender = sortedItems.slice(start, end);\n\n        const $listContainer = $(`#list-container-${catKey}`);\n        const $paginationContainer = $(`#pagination-container-${catKey}`);\n\n        let listHTML = `<ul class=\"list-group archivos-list\">`;\n        itemsToRender.forEach(item =>\n        {\n            const tituloEdicto = item.desc_producto || item.title;\n            const fechaEdicto = item.date || 'N\/A';\n\n            \/\/ Determinar validez del enlace y URL\n            const linkEsValido = !item.link || item.link === \"#\" || item.link.includes('@');\n            const linkURL = linkEsValido ? 'javascript:void(0);' : item.link;\n            const liClasses = 'list-group-item d-flex flex-column flex-md-row align-items-md-center p-3 edicto-item-final cursor-pointer';\n\n            let linkLine = '';\n            if (item.link && item.link.includes('@'))\n            {\n                linkLine = '';\n            }\n            else if (item.link === '#')\n            {\n                linkLine = `\n                <div class=\"mb-0 small text-wrap\">\n                    <span class=\"fw-bolder me-1 item-title\">Enlace:<\/span>\n                    <span class=\"text-danger fw-bolder item-value\">No Disponible<\/span>\n                <\/div>`;\n            }\n            else\n            {\n                linkLine = `\n                <div class=\"mb-0 small text-wrap mt-1\">\n                    <span class=\"fw-bolder me-1 item-title\">Enlace:<\/span>\n                    <span class=\"text-success fw-bolder item-value\">Disponible<\/span>\n                <\/div>`;\n            }\n\n            listHTML += `\n            <li class=\"${liClasses}\">\n                <a href=\"${linkURL}\" \n                    target=\"${linkEsValido ? '_self' : '_blank'}\" \n                    data-file-link=\"${linkEsValido ? '' : item.link}\"\n                    data-file-title=\"${tituloEdicto}\"\n                    class=\"w-100 d-flex flex-column flex-md-row align-items-md-center text-decoration-none text-dark\">\n                    <div class=\"d-flex flex-column flex-shrink-0 text-center mb-2 mb-md-0 me-md-4 item-col-left\" style=\"min-width: 90px; width: 90px;\">\n                        <div class=\"p-2 d-flex justify-content-center align-items-center mb-0\">\n                            <i class=\"fa-solid fa-download fa-2x item-icon-base\"><\/i>\n                        <\/div>\n                        <small class=\"fw-bold text-muted\" style=\"font-size:0.85rem;\">${fechaEdicto}<\/small>\n                    <\/div>\n                    <div class=\"flex-grow-1 text-center text-md-left item-col-center\">\n                        <div class=\"mb-0 small\">\n                            <span class=\"fw-bolder me-1 item-title\">Detalle:<\/span>\n                            <span class=\"text-dark fw-normal item-value\">${tituloEdicto}<\/span>\n                        <\/div>\n                        ${linkLine}\n                    <\/div>\n                <\/a>\n            <\/li>`;\n        });\n        listHTML += `<\/ul>`;\n        $listContainer.html(listHTML);\n\n        \/\/ --- Paginaci\u00f3n ---\n        let paginationHTML = '';\n        if (totalPages > 1)\n        {\n            let startPage = Math.max(1, page - 2);\n            let endPage = Math.min(totalPages, page + 2);\n\n            if (endPage - startPage < 4)\n            {\n                if (startPage === 1) endPage = Math.min(totalPages, 5);\n                if (endPage === totalPages) startPage = Math.max(1, totalPages - 4);\n            }\n            startPage = Math.max(1, startPage);\n\n            paginationHTML += `\n            <div class=\"mt-3\" style=\"display: flex; justify-content: center;\">\n                <nav aria-label=\"Paginaci\u00f3n para ${catName}\">\n                    <ul class=\"pagination justify-content-center pagination-controls pagination-sm\" data-cat=\"${catKey}\" data-cat-index=\"${catIndex}\">`;\n\n            \/\/ Primero (First)\n            paginationHTML += `\n                        <li class=\"page-item ${page === 1 ? 'disabled' : ''}\">\n                            <a class=\"page-link\" href=\"#\" data-page=\"1\" title=\"Primero\" aria-label=\"Primero\">\n                                <i class=\"fa-solid fa-angles-left\"><\/i>\n                            <\/a>\n                        <\/li>`;\n\n            \/\/ Anterior (Previous)\n            paginationHTML += `\n                        <li class=\"page-item ${page === 1 ? 'disabled' : ''}\">\n                            <a class=\"page-link\" href=\"#\" data-page=\"${page - 1}\" title=\"Anterior\" aria-label=\"Anterior\">\n                                <i class=\"fa-solid fa-angle-left\"><\/i>\n                            <\/a>\n                        <\/li>`;\n\n            \/\/ Botones de n\u00famero\n            for (let i = startPage; i <= endPage; i++)\n            {\n                paginationHTML += `\n                        <li class=\"page-item ${i === page ? 'active' : ''}\">\n                            <a class=\"page-link\" href=\"#\" data-page=\"${i}\">${i}<\/a>\n                        <\/li>`;\n            }\n\n            \/\/ Siguiente (Next)\n            paginationHTML += `\n                        <li class=\"page-item ${page === totalPages ? 'disabled' : ''}\">\n                            <a class=\"page-link\" href=\"#\" data-page=\"${page + 1}\" title=\"Siguiente\" aria-label=\"Siguiente\">\n                                <i class=\"fa-solid fa-angle-right\"><\/i>\n                            <\/a>\n                        <\/li>`;\n\n            \/\/ \u00daltimo (Last)\n            paginationHTML += `\n                        <li class=\"page-item ${page === totalPages ? 'disabled' : ''}\">\n                            <a class=\"page-link\" href=\"#\" data-page=\"${totalPages}\" title=\"\u00daltimo\" aria-label=\"\u00daltimo\">\n                                <i class=\"fa-solid fa-angles-right\"><\/i>\n                            <\/a>\n                        <\/li>`;\n            paginationHTML += `\n                    <\/ul>\n                <\/nav>\n            <\/div>`;\n        }\n        $paginationContainer.html(paginationHTML);\n    };\n\n    \/\/ --- 3. IIFE AS\u00cdNCRONA (Carga de Datos y Construcci\u00f3n del Acorde\u00f3n) ---\n    (async function()\n    {\n        const myaccordionid = document.getElementById('myaccordionid');\n        const dominio = '\/';\n        let nuevo = {};\n        let historico = {};\n        const ts = new Date().getTime();\n\n        try\n        {\n            \/\/ Carga del JSON\n            const jsonFilePath = `${dominio}wp-content\/uploads\/arancel_oficial.json?ts=${ts}`;\n            const nuevoRes = await fetch(jsonFilePath);\n            if (!nuevoRes.ok)\n            {\n                console.error(`ERROR HTTP: La solicitud fall\u00f3 con estado ${nuevoRes.status}`);\n                throw new Error(`HTTP error! status: ${nuevoRes.status}`);\n            }\n            const jsonText = await nuevoRes.text();\n            nuevo = JSON.parse(jsonText);\n        }\n        catch(err)\n        {\n            console.error('\u274c FALLO CR\u00cdTICO en la carga\/parseo del JSON:', err);\n            nuevo = {};\n        }\n\n        if (Object.keys(nuevo).length === 0 && Object.keys(historico).length === 0)\n        {\n            if (myaccordionid) {\n                myaccordionid.innerHTML = '<p class=\"text-danger text-center mt-3\">Sistema en mantenimiento. Por favor, intente m\u00e1s tarde.<\/p>';\n            }\n            return;\n        }\n\n        \/\/ Procesar y ordenar los \u00edtems por fecha\n        Object.keys(nuevo).forEach((catKey) =>\n        {\n            const catName = nuevo[catKey]?.Name;\n            if (!catName) return;\n\n            const items =\n            [\n                ...(nuevo[catKey]?.Items || []),\n                ...(historico[catKey]?.Items || [])\n            ]\n            .filter(i => i.status === 1);\n\n            if (items.length > 0)\n            {\n                \/\/ Ordenamiento ahora es correcto porque parseDate maneja d\/m\/y y YYYY\n                const sortedItems = items.map(item => ({\n                    ...item,\n                    dateObj: parseDate(item.date)\n                })).sort((a, b) => b.dateObj - a.dateObj);\n                allSortedItems[catKey] = sortedItems;\n                categoriesCache[catKey] = catName;\n            }\n        });\n\n        \/\/ \ud83d\udca1 BLOQUE A\u00d1ADIDO: INYECCI\u00d3N DIN\u00c1MICA DEL T\u00cdTULO DE LA ENMIENDA\n        \/\/ Esto toma el \u00edtem m\u00e1s reciente gracias al nuevo ordenamiento.\n        \/\/ ----------------------------------------------------\n        const cat1Key = 'cat1'; \n        const $tituloSpan = $('#arancel-enmienda-dinamico');\n\n        if (allSortedItems[cat1Key] && allSortedItems[cat1Key].length > 0 && $tituloSpan.length)\n        {\n            const ultimoArancel = allSortedItems[cat1Key][0];\n            const tituloCompleto = ultimoArancel.title;\n            \n            \/\/ Usar la funci\u00f3n para obtener solo el texto relevante\n            const enmiendaText = extractEnmienda(tituloCompleto); \n            \n            \/\/ Reemplazar el texto del span\n            $tituloSpan.text(enmiendaText);\n        } else if ($tituloSpan.length) {\n            \/\/ Si no se encuentran datos de cat1, limpiar o poner por defecto\n            $tituloSpan.text(\"Versi\u00f3n no cargada\");\n        }\n        \/\/ ----------------------------------------------------\n\n        if (myaccordionid.querySelector('.spinner-border'))\n        {\n            myaccordionid.innerHTML = '';\n        }\n\n        \/\/ Construir el HTML del Acorde\u00f3n\n        Object.keys(allSortedItems).forEach((catKey, catIndex) =>\n        {\n            const catItems = allSortedItems[catKey];\n            const catName = categoriesCache[catKey];\n            const collapseId = 'collapse' + catIndex;\n            const contador = catItems.length;\n            const isFirst = catIndex === 0;\n\n            \/\/ \ud83d\udca1 Define el icono inicial: down (abierto) o right (cerrado)\n            const initialIconClass = isFirst ? 'fa-chevron-down' : 'fa-chevron-right'; \n\n            let html = `\n            <div class=\"card mb-2 border-0 shadow-sm\">\n                <div class=\"card-header bg-light\" id=\"heading${catIndex}\">\n                    <h5 class=\"mb-0\">\n                        <button class=\"btn btn-link w-100 d-flex justify-content-between align-items-center text-left text-dark ${isFirst ? '' : 'collapsed'}\"\n                            data-toggle=\"collapse\"\n                            data-target=\"#${collapseId}\"\n                            aria-expanded=\"${isFirst ? 'true' : 'false'}\"\n                            aria-controls=\"${collapseId}\">\n                            <span><i class=\"fa-solid fa-folder-open me-2 text-primary\"><\/i> ${catName} (${contador})<\/span>\n                            <i class=\"fa-solid ${initialIconClass} transition-icon icon-collapse-state\"><\/i> \n                        <\/button>\n                    <\/h5>\n                <\/div>\n                <div id=\"${collapseId}\" class=\"collapse ${isFirst ? 'show' : ''}\" aria-labelledby=\"heading${catIndex}\" data-parent=\"#myaccordionid\">\n                    <div class=\"card-body p-2\">\n                        <div id=\"list-container-${catKey}\"><\/div>\n                        <div id=\"pagination-container-${catKey}\"><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>`;\n            myaccordionid.insertAdjacentHTML('beforeend', html);\n            renderPage(catKey, catName, catIndex, 1);\n        });\n\n        \/\/ --- 4. L\u00f3gica de Eventos ---\n\n        \/\/ Rotar\/Cambiar icono del acorde\u00f3n al colapsar\/abrir\n        $('#myaccordionid').on('hide.bs.collapse show.bs.collapse', function(e)\n        {\n            const $button = $(e.target).prev('.card-header').find('.btn-link');\n            const $icon = $button.find('.icon-collapse-state');\n            const isShown = e.type === 'show';\n\n            \/\/ Cambia la clase del icono: down (abierto) o right (cerrado)\n            if (isShown) {\n                 $icon.removeClass('fa-chevron-right').addClass('fa-chevron-down');\n            } else {\n                 $icon.removeClass('fa-chevron-down').addClass('fa-chevron-right');\n            }\n        });\n\n        \/\/ Evento de clic en los enlaces de paginaci\u00f3n\n        $('#myaccordionid').on('click', '.pagination-controls a.page-link', function(e)\n        {\n            e.preventDefault();\n            const $link = $(this);\n            const $paginationNav = $link.closest('.pagination-controls');\n            const catKey = $paginationNav.data('cat');\n            const catIndex = $paginationNav.data('cat-index');\n            const catName = categoriesCache[catKey];\n            let page = parseInt($link.data('page'));\n\n            if ($link.parent().hasClass('disabled')) return;\n\n            const totalItems = allSortedItems[catKey].length;\n            const totalPages = Math.ceil(totalItems \/ ITEMS_PER_PAGE);\n\n            if (page < 1) page = 1;\n            if (page > totalPages) page = totalPages;\n\n            if (!isNaN(page))\n            {\n                renderPage(catKey, catName, catIndex, page);\n                \/\/ Desplazamiento al encabezado del acorde\u00f3n padre\n                const $accordionHeader = $(`#heading${catIndex}`);\n                if ($accordionHeader.length)\n                {\n                    $('html, body').animate({\n                        scrollTop: $accordionHeader.offset().top - 100\n                    }, 300);\n                }\n            }\n        });\n\n        \/\/ Manejador de Eventos para SweetAlert (Confirmaci\u00f3n de Descarga)\n        $('#myaccordionid').on('click', '.archivos-list a', function(e) {\n            const $link = $(this);\n            const fileURL = $link.data('file-link');\n            const fileTitle = $link.data('file-title');\n\n            \/\/ Solo procede si hay un data-file-link v\u00e1lido\n            if (fileURL) {\n                e.preventDefault(); \/\/ Detener la navegaci\u00f3n del link\n\n                Swal.fire({\n                    title: 'Arancel Aduanero Vigente',\n                    html: `\u00bfDesea Descargar el archivo \"${fileTitle}\"?`,\n                    icon: 'question',\n                    showCancelButton: true,\n                    confirmButtonColor: '#3085d6',\n                    cancelButtonColor: '#d33',\n                    confirmButtonText: '<i class=\"fa-solid fa-download me-1\"><\/i> S\u00ed, Descargar',\n                    cancelButtonText: 'Cancelar',\n                    reverseButtons: true\n                }).then((result) => {\n                    if (result.isConfirmed) {\n                        \/\/ Abrir el enlace en una nueva pesta\u00f1a\n                        window.open(fileURL, '_blank');\n\n                        \/\/ Notificaci\u00f3n de inicio de descarga\n                        Swal.fire({\n                            title: 'Descarga Iniciada',\n                            text: `El archivo \"${fileTitle}\" se abrir\u00e1 en una nueva pesta\u00f1a.`,\n                            icon: 'success',\n                            timer: 2000,\n                            showConfirmButton: false\n                        });\n                    }\n                });\n            }\n        });\n    })();\n});\n<\/script>\n    <\/div>\n    ","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-449","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arancel Oficial - Autoridad Nacional de Aduanas<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arancel Oficial - Autoridad Nacional de Aduanas\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/\" \/>\n<meta property=\"og:site_name\" content=\"Autoridad Nacional de Aduanas\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/aduanas.panama\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T16:09:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.ana.gob.pa\/wp-content\/uploads\/2025\/07\/logo2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"175\" \/>\n\t<meta property=\"og:image:height\" content=\"76\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@aduanaspanama\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/index.php\\\/arancel-oficial\\\/\",\"url\":\"https:\\\/\\\/www.ana.gob.pa\\\/index.php\\\/arancel-oficial\\\/\",\"name\":\"Arancel Oficial - Autoridad Nacional de Aduanas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/#website\"},\"datePublished\":\"2025-08-14T14:37:10+00:00\",\"dateModified\":\"2026-03-17T16:09:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/index.php\\\/arancel-oficial\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ana.gob.pa\\\/index.php\\\/arancel-oficial\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/index.php\\\/arancel-oficial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.ana.gob.pa\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arancel Oficial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/#website\",\"url\":\"https:\\\/\\\/www.ana.gob.pa\\\/\",\"name\":\"Autoridad Nacional de Aduanas\",\"description\":\"Autoridad Nacional de Aduanas\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/#organization\"},\"alternateName\":\"Autoridad Nacional de Aduanas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ana.gob.pa\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/#organization\",\"name\":\"Autoridad Nacional de Aduanas\",\"alternateName\":\"Autoridad Nacional de Aduanas\",\"url\":\"https:\\\/\\\/www.ana.gob.pa\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.ana.gob.pa\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-de-aduanas-y-gobierno.png\",\"contentUrl\":\"https:\\\/\\\/www.ana.gob.pa\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-de-aduanas-y-gobierno.png\",\"width\":2860,\"height\":423,\"caption\":\"Autoridad Nacional de Aduanas\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ana.gob.pa\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/aduanas.panama\\\/\",\"https:\\\/\\\/x.com\\\/aduanaspanama\",\"https:\\\/\\\/www.instagram.com\\\/aduanaspanama\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arancel Oficial - Autoridad Nacional de Aduanas","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/","og_locale":"es_ES","og_type":"article","og_title":"Arancel Oficial - Autoridad Nacional de Aduanas","og_url":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/","og_site_name":"Autoridad Nacional de Aduanas","article_publisher":"https:\/\/www.facebook.com\/aduanas.panama\/","article_modified_time":"2026-03-17T16:09:18+00:00","og_image":[{"width":175,"height":76,"url":"https:\/\/www.ana.gob.pa\/wp-content\/uploads\/2025\/07\/logo2.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@aduanaspanama","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/","url":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/","name":"Arancel Oficial - Autoridad Nacional de Aduanas","isPartOf":{"@id":"https:\/\/www.ana.gob.pa\/#website"},"datePublished":"2025-08-14T14:37:10+00:00","dateModified":"2026-03-17T16:09:18+00:00","breadcrumb":{"@id":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.ana.gob.pa\/index.php\/arancel-oficial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.ana.gob.pa\/"},{"@type":"ListItem","position":2,"name":"Arancel Oficial"}]},{"@type":"WebSite","@id":"https:\/\/www.ana.gob.pa\/#website","url":"https:\/\/www.ana.gob.pa\/","name":"Autoridad Nacional de Aduanas","description":"Autoridad Nacional de Aduanas","publisher":{"@id":"https:\/\/www.ana.gob.pa\/#organization"},"alternateName":"Autoridad Nacional de Aduanas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ana.gob.pa\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.ana.gob.pa\/#organization","name":"Autoridad Nacional de Aduanas","alternateName":"Autoridad Nacional de Aduanas","url":"https:\/\/www.ana.gob.pa\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.ana.gob.pa\/#\/schema\/logo\/image\/","url":"https:\/\/www.ana.gob.pa\/wp-content\/uploads\/2025\/07\/logo-de-aduanas-y-gobierno.png","contentUrl":"https:\/\/www.ana.gob.pa\/wp-content\/uploads\/2025\/07\/logo-de-aduanas-y-gobierno.png","width":2860,"height":423,"caption":"Autoridad Nacional de Aduanas"},"image":{"@id":"https:\/\/www.ana.gob.pa\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/aduanas.panama\/","https:\/\/x.com\/aduanaspanama","https:\/\/www.instagram.com\/aduanaspanama"]}]}},"_links":{"self":[{"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/pages\/449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/comments?post=449"}],"version-history":[{"count":72,"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/pages\/449\/revisions"}],"predecessor-version":[{"id":7255,"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/pages\/449\/revisions\/7255"}],"wp:attachment":[{"href":"https:\/\/www.ana.gob.pa\/index.php\/wp-json\/wp\/v2\/media?parent=449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}