{"id":6446,"date":"2026-06-19T23:50:23","date_gmt":"2026-06-19T14:50:23","guid":{"rendered":"https:\/\/sns.ginernet.net\/?page_id=6446"},"modified":"2026-06-20T00:15:28","modified_gmt":"2026-06-19T15:15:28","slug":"japopedia-3","status":"publish","type":"page","link":"https:\/\/sns.ginernet.net\/en\/japopedia-3\/","title":{"rendered":"JapopedIA"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"6446\" class=\"elementor elementor-6446\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-6eaa703d e-con-full e-flex e-con e-parent\" data-id=\"6eaa703d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-667496ba e-con-full e-flex e-con e-child\" data-id=\"667496ba\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3fd8919 elementor-widget elementor-widget-spacer\" data-id=\"3fd8919\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1732b012 elementor-invisible elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading\" data-id=\"1732b012\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;}\" data-widget_type=\"theme-post-title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">JapopedIA<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb6d3c5 elementor-widget elementor-widget-spacer\" data-id=\"fb6d3c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-001d969 elementor-widget elementor-widget-text-editor\" data-id=\"001d969\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"font-claude-response-body break-words whitespace-normal\">Jap\u00f3n es uno de los mercados m\u00e1s exigentes y sofisticados del mundo, con un marco regulatorio complejo para cualquier empresa que quiera exportar o vender sus productos all\u00ed.<\/p><p class=\"font-claude-response-body break-words whitespace-normal\">The <strong>Asistente JapopedIA<\/strong> ofrece orientaci\u00f3n regulatoria preliminar para exportar e importar entre Espa\u00f1a\/Europa y Jap\u00f3n: aranceles, documentaci\u00f3n, autoridades competentes y el EU-Japan EPA, sector por sector.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-d5776c7 e-con-full e-flex e-con e-child\" data-id=\"d5776c7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;background_motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;background_motion_fx_scale_effect&quot;:&quot;yes&quot;,&quot;background_motion_fx_scale_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;background_motion_fx_scale_direction&quot;:&quot;out-in&quot;,&quot;background_motion_fx_scale_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:20,&quot;end&quot;:80}},&quot;background_motion_fx_devices&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b80189 elementor-widget elementor-widget-shortcode\" data-id=\"9b80189\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Lato:wght@400;700;900&display=swap\" rel=\"stylesheet\">\n\n    <div id=\"jap-wrap\">\n\n        <div id=\"jap-container\">\n\n            <div id=\"jap-header\">\n                <span id=\"jap-title\">Conversaci\u00f3n<\/span>\n                <button id=\"jap-clear\">Nueva consulta<\/button>\n            <\/div>\n\n            <div id=\"jap-messages\">\n                <div class=\"jap-msg jap-bot\">\n                    <div class=\"jap-bubble\">\n                        Bienvenido al <strong>Asistente JapopedIA<\/strong>.<br><br>\n                        Soy tu asistente para consultas regulatorias sobre exportaci\u00f3n e importaci\u00f3n entre Espa\u00f1a\/Europa y Jap\u00f3n.<br><br>\n                        Puedo orientarte sobre aranceles, documentaci\u00f3n, autoridades competentes, el EU-Japan EPA y requisitos espec\u00edficos por sector.<br><br>\n                        <strong>\u00bfSobre qu\u00e9 producto o sector quieres consultar?<\/strong>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div id=\"jap-input-area\">\n                <textarea\n                    id=\"jap-input\"\n                    placeholder=\"Escribe tu consulta... (ej: Quiero exportar aceite de oliva a Jap\u00f3n)\"\n                    rows=\"2\"\n                ><\/textarea>\n                <button id=\"jap-send\">Enviar<\/button>\n            <\/div>\n\n        <\/div>\n\n        <div id=\"jap-footer\">\n            Orientaci\u00f3n preliminar \u00b7 No constituye asesoramiento legal \u00b7\n            <a href=\"https:\/\/www.mhlw.go.jp\" target=\"_blank\">MHLW<\/a> \u00b7\n            <a href=\"https:\/\/www.customs.go.jp\" target=\"_blank\">Japan Customs<\/a>\n        <\/div>\n\n    <\/div>\n\n    <style>\n    #jap-wrap {\n        --rojo:    #BC002D;\n        --rojo-dk: #9a0025;\n        --crema:   #FEFCFB;\n        --texto:   #2C2C2C;\n        --acento:  #E69F00;\n        --verde:   #006442;\n        --rosa:    #FFB7C5;\n        --borde:   #EAEAEA;\n        --gris:    #FAFAFA;\n        --font:    'Lato', -apple-system, sans-serif;\n    }\n\n    #jap-wrap {\n        max-width: 900px;\n        margin: 0 auto;\n        padding: 40px 24px 60px;\n        font-family: var(--font);\n        color: var(--texto);\n    }\n\n    \/* \u2500\u2500 Contenedor del chat: limpio, sin sombra pesada \u2500\u2500 *\/\n    #jap-container {\n        border: 1px solid var(--borde);\n        border-radius: 6px;\n        overflow: hidden;\n        background: #fff;\n    }\n\n    \/* \u2500\u2500 Cabecera discreta \u2500\u2500 *\/\n    #jap-header {\n        padding: 14px 22px;\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        border-bottom: 1px solid var(--borde);\n    }\n    #jap-title {\n        font-size: 12px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 0.08em;\n        color: #999;\n    }\n    #jap-clear {\n        background: none;\n        border: none;\n        color: var(--rojo);\n        font-family: var(--font);\n        font-size: 12px;\n        font-weight: 700;\n        cursor: pointer;\n        padding: 0;\n        text-decoration: underline;\n        text-decoration-color: transparent;\n        transition: text-decoration-color 0.15s;\n    }\n    #jap-clear:hover { text-decoration-color: var(--rojo); }\n\n    \/* \u2500\u2500 Mensajes \u2500\u2500 *\/\n    #jap-messages {\n        height: 580px;\n        overflow-y: auto;\n        padding: 28px 24px;\n        background: #fff;\n        display: flex;\n        flex-direction: column;\n        gap: 20px;\n    }\n\n    .jap-msg { display: flex; flex-direction: column; }\n    .jap-msg.jap-user { align-items: flex-end; }\n    .jap-msg.jap-bot  { align-items: flex-start; width: 100%; }\n\n    .jap-bubble {\n        border-radius: 8px;\n        font-size: 14.5px;\n        line-height: 1.75;\n        padding: 13px 17px;\n    }\n    .jap-user .jap-bubble {\n        background: #F5F5F5;\n        color: var(--texto);\n        max-width: 75%;\n        border: 1px solid var(--borde);\n    }\n    .jap-bot .jap-bubble {\n        background: #fff;\n        width: 100%;\n        padding: 0;\n    }\n    .jap-typing .jap-bubble {\n        color: #aaa;\n        font-style: italic;\n        padding: 13px 17px;\n    }\n\n    \/* \u2500\u2500 Badges meta \u2500\u2500 *\/\n    .jap-meta {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 7px;\n        margin-bottom: 18px;\n        padding-bottom: 16px;\n        border-bottom: 1px solid var(--borde);\n    }\n    .jap-badge {\n        display: inline-flex;\n        align-items: center;\n        padding: 4px 11px;\n        border-radius: 4px;\n        font-size: 11px;\n        font-weight: 700;\n        font-family: var(--font);\n        letter-spacing: 0.03em;\n        text-transform: uppercase;\n    }\n    .b-cat   { background: #F4F4F4; color: #555; }\n    .b-bajo  { background: #EBFBEE; color: #2f9e44; }\n    .b-medio { background: #FFF6E5; color: #b8720a; }\n    .b-alto  { background: #FFEEEE; color: #c92a2a; }\n    .b-crit  { background: #1a1a1a; color: #fff; }\n    .b-ca    { background: #EBFBEE; color: #2f9e44; }\n    .b-cm    { background: #FFF6E5; color: #b8720a; }\n    .b-cb    { background: #FFEEEE; color: #c92a2a; }\n    .b-ci    { background: #F1F1F1; color: #999; }\n\n    \/* \u2500\u2500 Secciones: sin caja gris pesada, con regla fina lateral \u2500\u2500 *\/\n    .jap-sec {\n        margin: 16px 0;\n        padding-left: 14px;\n        border-left: 2px solid var(--borde);\n    }\n    .jap-sec-head {\n        font-family: var(--font);\n        font-size: 11px;\n        font-weight: 800;\n        text-transform: uppercase;\n        letter-spacing: 0.07em;\n        color: #999;\n        margin-bottom: 8px;\n    }\n    .jap-sec-body {\n        font-family: var(--font);\n        font-size: 14.5px;\n        line-height: 1.8;\n        color: var(--texto);\n    }\n    .jap-sec-body ul { margin: 4px 0 10px; padding-left: 18px; }\n    .jap-sec-body li { margin: 3px 0; line-height: 1.6; }\n    .jap-sec-body strong { color: #111; font-weight: 700; }\n    .jap-sec-body a {\n        color: var(--rojo);\n        text-decoration: none;\n        border-bottom: 1px solid rgba(188,0,45,0.3);\n    }\n    .jap-sec-body a:hover { border-bottom-color: var(--rojo); }\n    .jap-sec-body table {\n        width: 100%;\n        border-collapse: collapse;\n        font-size: 13px;\n        margin: 10px 0;\n    }\n    .jap-sec-body th {\n        background: var(--gris);\n        padding: 8px 11px;\n        text-align: left;\n        font-weight: 700;\n        border-bottom: 2px solid var(--borde);\n        font-size: 11px;\n        text-transform: uppercase;\n        letter-spacing: 0.03em;\n        color: #777;\n    }\n    .jap-sec-body td {\n        padding: 8px 11px;\n        border-bottom: 1px solid var(--borde);\n        vertical-align: top;\n    }\n    .jap-sec-body blockquote {\n        margin: 10px 0;\n        padding: 10px 14px;\n        background: #FFF8EC;\n        border-left: 2px solid var(--acento);\n        font-size: 13px;\n        color: #6b5a3a;\n    }\n    .jap-sec-body .jap-actor {\n        font-family: var(--font);\n        font-size: 11px;\n        font-weight: 800;\n        color: var(--rojo);\n        margin: 14px 0 6px;\n        text-transform: uppercase;\n        letter-spacing: 0.05em;\n    }\n    .jap-sec-body .jap-actor:first-child { margin-top: 0; }\n\n    .jap-sec.s-resumen     { border-left-color: #1a1a1a; }\n    .jap-sec.s-autoridades { border-left-color: #3b5bdb; }\n    .jap-sec.s-documentos  { border-left-color: #2f9e44; }\n    .jap-sec.s-restricc    { border-left-color: var(--acento); }\n    .jap-sec.s-epa         { border-left-color: var(--verde); }\n    .jap-sec.s-pregunta    { border-left-color: var(--rojo); }\n    .jap-sec.s-fuentes     { border-left-color: #bbb; }\n\n    \/* Nota de limitaci\u00f3n *\/\n    .jap-limit {\n        margin-top: 18px;\n        padding-top: 14px;\n        border-top: 1px solid var(--borde);\n        font-size: 12px;\n        color: #aaa;\n        line-height: 1.6;\n    }\n\n    \/* \u2500\u2500 Input \u2500\u2500 *\/\n    #jap-input-area {\n        display: flex;\n        gap: 10px;\n        padding: 16px 22px;\n        background: #fff;\n        border-top: 1px solid var(--borde);\n        align-items: flex-end;\n    }\n    #jap-input {\n        flex: 1;\n        border: 1px solid var(--borde);\n        border-radius: 5px;\n        padding: 11px 14px;\n        font-size: 14px;\n        resize: none;\n        font-family: var(--font);\n        line-height: 1.5;\n        color: var(--texto);\n        background: var(--gris);\n        transition: border-color 0.15s;\n    }\n    #jap-input:focus {\n        outline: none;\n        border-color: var(--rojo);\n        background: #fff;\n    }\n    #jap-send {\n        background: var(--rojo);\n        color: #fff;\n        border: none;\n        padding: 11px 22px;\n        border-radius: 5px;\n        cursor: pointer;\n        font-size: 14px;\n        font-weight: 700;\n        font-family: var(--font);\n        white-space: nowrap;\n        transition: background 0.15s;\n    }\n    #jap-send:hover    { background: var(--rojo-dk); }\n    #jap-send:disabled { background: #ddd; cursor: not-allowed; }\n\n    \/* \u2500\u2500 Footer \u2500\u2500 *\/\n    #jap-footer {\n        text-align: center;\n        padding: 18px 0 0;\n        font-size: 11px;\n        color: #bbb;\n        font-family: var(--font);\n    }\n    #jap-footer a { color: #999; text-decoration: none; }\n    #jap-footer a:hover { color: var(--rojo); }\n    <\/style>\n\n    <script>\n    (function() {\n        const BACKEND = 'https:\/\/japopedia-assistant-backend-production.up.railway.app';\n        let history = [];\n\n        const msgs  = document.getElementById('jap-messages');\n        const input = document.getElementById('jap-input');\n        const send  = document.getElementById('jap-send');\n        const clear = document.getElementById('jap-clear');\n\n        function esc(t) {\n            return t.replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');\n        }\n\n        function md(text) {\n            if (!text) return '';\n\n            const tables = {};\n            let ti = 0;\n            text = text.replace(\/\\x02TABLE\\x03([\\s\\S]*?)\\x02ENDTABLE\\x03\/g, (_, t) => {\n                const key = `TABKEY${ti++}`;\n                tables[key] = t;\n                return key;\n            });\n\n            text = text.replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');\n\n            Object.keys(tables).forEach(k => {\n                text = text.replace(k, tables[k]);\n            });\n\n            text = text.replace(\/^(\ud83d\udce4|\ud83d\udce5|\ud83d\ude9a) (.+?):$\/gm,'\\x04ACTOR\\x04$1 $2\\x04\/ACTOR\\x04');\n\n            text = text.replace(\/\\*\\*(.*?)\\*\\*\/g,'<strong>$1<\/strong>');\n            text = text.replace(\/\\*(.*?)\\*\/g,'<em>$1<\/em>');\n            text = text.replace(\/\\[([^\\]]+)\\]\\((https?:\\\/\\\/[^\\)]+)\\)\/g,'<a href=\"$2\" target=\"_blank\">$1<\/a>');\n            text = text.replace(\/^#{1,3} (.+)$\/gm,'<strong>$1<\/strong>');\n            text = text.replace(\/^&gt; (.+)$\/gm,'<blockquote>$1<\/blockquote>');\n\n            const lines = text.split('\\n');\n            let out = [];\n            let inList = false;\n            for (let line of lines) {\n                const isListItem = \/^[\u2705\ud83d\udccc\ud83d\udca1\u26a0\ufe0f\ud83d\udd17\u2022\\-] \/.test(line.trim());\n                if (isListItem) {\n                    if (!inList) { out.push('<ul>'); inList = true; }\n                    out.push('<li>' + line.trim().replace(\/^[\u2705\ud83d\udccc\ud83d\udca1\u26a0\ufe0f\ud83d\udd17\u2022\\-] \/, '') + '<\/li>');\n                } else {\n                    if (inList) { out.push('<\/ul>'); inList = false; }\n                    out.push(line);\n                }\n            }\n            if (inList) out.push('<\/ul>');\n            text = out.join('\\n');\n\n            text = text.replace(\/\\x04ACTOR\\x04(.+?)\\x04\\\/ACTOR\\x04\/g, '<div class=\"jap-actor\">$1<\/div>');\n\n            text = text.replace(\/\\n{2,}\/g, '<br><br>');\n            text = text.replace(\/\\n(?!<)\/g, '<br>');\n            text = text.replace(\/(<br>\\s*){1,}<ul>\/g, '<ul>');\n            text = text.replace(\/<\\\/ul>(\\s*<br>\\s*){1,}\/g, '<\/ul><br><br>');\n            text = text.replace(\/(<br>\\s*){1,}<div class=\"jap-actor\">\/g, '<div class=\"jap-actor\">');\n            text = text.replace(\/<\\\/div>(\\s*<br>\\s*){1,}\/g, '<\/div>');\n\n            return text;\n        }\n\n        function mdTables(text) {\n            return text.replace(\/(\\|.+\\|\\n\\|[-| :]+\\|\\n(?:\\|.+\\|\\n?)+)\/g, function(match) {\n                const rows = match.trim().split('\\n');\n                const heads = rows[0].split('|').filter(c => c.trim());\n                let html = '<table><thead><tr>';\n                heads.forEach(h => html += `<th>${h.trim()}<\/th>`);\n                html += '<\/tr><\/thead><tbody>';\n                rows.slice(2).forEach(row => {\n                    const cells = row.split('|').filter(c => c.trim());\n                    if (!cells.length) return;\n                    html += '<tr>';\n                    cells.forEach(c => {\n                        let cell = c.trim();\n                        cell = cell.replace(\/\\*\\*(.*?)\\*\\*\/g,'<strong>$1<\/strong>');\n                        cell = cell.replace(\/\\[([^\\]]+)\\]\\((https?:\\\/\\\/[^\\)]+)\\)\/g,'<a href=\"$2\" target=\"_blank\">$1<\/a>');\n                        cell = cell.replace(\/(^|[\\s,])((https?:\\\/\\\/)[^\\s<,]+)\/g,'$1<a href=\"$2\" target=\"_blank\">$2<\/a>');\n                        html += `<td>${cell}<\/td>`;\n                    });\n                    html += '<\/tr>';\n                });\n                html += '<\/tbody><\/table>';\n                return `\\x02TABLE\\x03${html}\\x02ENDTABLE\\x03`;\n            });\n        }\n\n        function badgeRiesgo(n) {\n            n = n.toUpperCase().trim().replace(\/[*_]\/g,'');\n            const map = {\n                'BAJO':    ['b-bajo',  'Riesgo BAJO'],\n                'MEDIO':   ['b-medio', 'Riesgo MEDIO'],\n                'ALTO':    ['b-alto',  'Riesgo ALTO'],\n                'CR\u00cdTICO': ['b-crit',  'Riesgo CR\u00cdTICO'],\n                'CRITICO': ['b-crit',  'Riesgo CR\u00cdTICO'],\n            };\n            const [cls, label] = map[n] || ['b-medio', n];\n            return `<span class=\"jap-badge ${cls}\">${label}<\/span>`;\n        }\n        function badgeConf(n) {\n            n = n.toUpperCase().trim().replace(\/[*_]\/g,'');\n            const map = {\n                'ALTO':         ['b-ca', 'Confianza ALTA'],\n                'MEDIO':        ['b-cm', 'Confianza MEDIA'],\n                'BAJO':         ['b-cb', 'Confianza BAJA'],\n                'INSUFICIENTE': ['b-ci', 'Info insuficiente'],\n            };\n            const [cls, label] = map[n] || ['b-cm', n];\n            return `<span class=\"jap-badge ${cls}\">${label}<\/span>`;\n        }\n\n        function sec(css, label, content) {\n            return `<div class=\"jap-sec ${css}\">\n                <div class=\"jap-sec-head\">${label}<\/div>\n                <div class=\"jap-sec-body\">${md(content)}<\/div>\n            <\/div>`;\n        }\n\n        function parse(raw) {\n            raw = mdTables(raw);\n\n            const get = (re) => { const m = raw.match(re); return m ? m[1].trim() : null; };\n\n            const cat   = get(\/\\*\\*\ud83d\udccb Clasificaci[o\u00f3]n:\\*\\*\\s*(.+)\/i);\n            const riesg = get(\/\\*\\*\u26a0\ufe0f Nivel de riesgo:\\*\\*\\s*(.+)\/i);\n            const conf  = get(\/\\*\\*\ud83c\udfaf Nivel de confianza:\\*\\*\\s*(.+)\/i);\n\n            const secs = [\n                { re: \/\\*\\*Resumen ejecutivo\\*\\*\\n([\\s\\S]+?)(?=\\n\\*\\*|\\n---)\/i,                         css: 's-resumen',     label: 'Resumen ejecutivo' },\n                { re: \/\\*\\*Autoridades japonesas relevantes\\*\\*\\n([\\s\\S]+?)(?=\\n\\*\\*|\\n---)\/i,           css: 's-autoridades', label: 'Autoridades japonesas' },\n                { re: \/\\*\\*Documentos y comprobaciones probables\\*\\*\\n([\\s\\S]+?)(?=\\n\\*\\*|\\n---)\/i,      css: 's-documentos',  label: 'Documentos probables' },\n                { re: \/\\*\\*Restricciones, permisos o licencias posibles\\*\\*\\n([\\s\\S]+?)(?=\\n\\*\\*|\\n---)\/i, css: 's-restricc', label: 'Restricciones y licencias' },\n                { re: \/\\*\\*Consideraciones EU-Japan EPA[^*]*\\*\\*\\n([\\s\\S]+?)(?=\\n\\*\\*|\\n---)\/i,          css: 's-epa',         label: 'EU-Japan EPA \/ Aranceles' },\n                { re: \/\\*\\*Para refinar esta orientaci[o\u00f3]n[^*]*\\*\\*\\n([\\s\\S]+?)(?=\\n\\*\\*|\\n---)\/i,      css: 's-pregunta',    label: 'Para afinar la respuesta' },\n                { re: \/\\*\\*Fuentes oficiales[^*]*\\*\\*\\n([\\s\\S]+?)(?=\\n---|\\n\\*\u26a0\ufe0f|$)\/i,                  css: 's-fuentes',     label: 'Fuentes oficiales' },\n            ];\n\n            let html = '';\n\n            let meta = '<div class=\"jap-meta\">';\n            if (cat)   meta += `<span class=\"jap-badge b-cat\">${cat}<\/span>`;\n            if (riesg) meta += badgeRiesgo(riesg);\n            if (conf)  meta += badgeConf(conf);\n            meta += '<\/div>';\n\n            let found = false;\n            secs.forEach(s => {\n                const m = raw.match(s.re);\n                if (m) { html += sec(s.css, s.label, m[1].trim()); found = true; }\n            });\n\n            if (!found) {\n                return `<div class=\"jap-sec-body\">${md(raw)}<\/div>`;\n            }\n\n            const lim = raw.match(\/\\n\\*\u26a0\ufe0f([^*]+)\\*\\s*$\/) || raw.match(\/\\n\\*\u26a0\ufe0f([^*]+)\\*\/);\n            const limHtml = lim ? `<div class=\"jap-limit\">${lim[1].trim()}<\/div>` : '';\n\n            return meta + html + limHtml;\n        }\n\n        function addMsg(role, text) {\n            const wrap = document.createElement('div');\n            wrap.className = `jap-msg jap-${role}`;\n            const bubble = document.createElement('div');\n            bubble.className = 'jap-bubble';\n            bubble.innerHTML = (role === 'bot') ? parse(text) : esc(text);\n            wrap.appendChild(bubble);\n            msgs.appendChild(wrap);\n            msgs.scrollTop = msgs.scrollHeight;\n        }\n\n        function addTyping() {\n            const d = document.createElement('div');\n            d.className = 'jap-msg jap-bot jap-typing';\n            d.id = 'jap-typing';\n            d.innerHTML = '<div class=\"jap-bubble\">Analizando tu consulta...<\/div>';\n            msgs.appendChild(d);\n            msgs.scrollTop = msgs.scrollHeight;\n        }\n        function removeTyping() {\n            const t = document.getElementById('jap-typing');\n            if (t) t.remove();\n        }\n\n        async function sendMsg() {\n            const text = input.value.trim();\n            if (!text) return;\n            addMsg('user', text);\n            history.push({ role: 'user', content: text });\n            input.value = '';\n            send.disabled = true;\n            addTyping();\n            try {\n                const res  = await fetch(`${BACKEND}\/chat`, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json' },\n                    body: JSON.stringify({ messages: history })\n                });\n                const data = await res.json();\n                removeTyping();\n                if (data.reply) {\n                    history.push({ role: 'assistant', content: data.reply });\n                    addMsg('bot', data.reply);\n                } else {\n                    addMsg('bot', 'Ha ocurrido un error. Por favor, int\u00e9ntalo de nuevo.');\n                }\n            } catch(e) {\n                removeTyping();\n                addMsg('bot', 'No se pudo conectar con el servidor. Por favor, int\u00e9ntalo de nuevo.');\n            }\n            send.disabled = false;\n            input.focus();\n        }\n\n        send.addEventListener('click', sendMsg);\n        input.addEventListener('keydown', e => {\n            if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMsg(); }\n        });\n        clear.addEventListener('click', () => {\n            history = [];\n            msgs.innerHTML = '';\n            addMsg('bot', 'Nueva consulta iniciada. \u00bfSobre qu\u00e9 producto o sector quieres consultar?');\n        });\n    })();\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Jap\u00f3n es uno de los mercados m\u00e1s exigentes y sofisticados del mundo, con un marco regulatorio complejo para cualquier empresa que quiera exportar o vender sus productos all\u00ed. El Asistente JapopedIA ofrece orientaci\u00f3n regulatoria preliminar para exportar e importar entre Espa\u00f1a\/Europa y Jap\u00f3n: aranceles, documentaci\u00f3n, autoridades competentes y el EU-Japan EPA, sector por sector.<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6446","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/pages\/6446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/comments?post=6446"}],"version-history":[{"count":10,"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/pages\/6446\/revisions"}],"predecessor-version":[{"id":6467,"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/pages\/6446\/revisions\/6467"}],"wp:attachment":[{"href":"https:\/\/sns.ginernet.net\/en\/wp-json\/wp\/v2\/media?parent=6446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}